Destructive Changes - KonradHeinser/EBSGFramework GitHub Wiki
Things listed on this page are alterations to basic xml stuff that will be triggered by a new version of Rimworld, but are too numerous to list in the updates page. When these changes are direct replacements for something, they will always have the same default function as before unless explicitly stated otherwise.
When going through other pages in this wiki, some of the code may be different than your existing code, but those changes aren't listed here. In those cases, I was able to make my changes in a way that shouldn't have any impact going forward, and updating those portions of your code is recommended, but optional.
Ability Validator has merged many of its effects into ranges. This means that instead of using a min tag and a max tag, they are merged into singular ranges with an xml change that would look something like this:
<min>A</min>
<max>B</max>
<range>A~B</range>
The new ranges and the tags they replace:
- bodySize : minBodySize and maxBodySize
- targetLightLevel : minTargetLightLevel and maxTargetLightLevel
- casterLightLevel : minCasterLightLevel and maxCasterLightLevel
- progressThroughDay : minPartOfDay and maxPartOfDay
- rainRate : minimumRainRate and maximumRainRate
- snowRate : minimumSnowRate and maximumSnowRate
The success chance stuff for Create Linked Hediffs will have a minor change to them. Instead of all the success chance stuff sitting directly in the comp, they will be in a special item in the comp labelled successChance. For example, the example on that page changed its comp like so:
<comps>
<li Class="EBSGFramework.CompProperties_CreateLinkedHediff">
<hediffOnCaster>DevilsBargain_Might</hediffOnCaster>
<hediffOnTarget>DevilsBargain_MightBuff</hediffOnTarget>
<baseSuccessChance>0.75</baseSuccessChance>
<casterStatChance>SocialImpact</casterStatChance>
<targetStatChance>SocialImpact</targetStatChance>
<successMessage>BargainAccepted</successMessage>
<failureMessage>BargainRejected</failureMessage>
</li>
</comps>
<comps>
<li Class="EBSGFramework.CompProperties_CreateLinkedHediff">
<hediffOnCaster>DevilsBargain_Might</hediffOnCaster>
<hediffOnTarget>DevilsBargain_MightBuff</hediffOnTarget>
<successChance>
<baseSuccessChance>0.75</baseSuccessChance>
<casterStatChance>SocialImpact</casterStatChance>
<targetStatChance>SocialImpact</targetStatChance>
<successMessage>The bargain was accepted</successMessage>
<failureMessage>The bargain was rejected</failureMessage>
</successChance>
</li>
</comps>
The old multiply/divide setup has also changed to make it easier to use a wider variety of stats. casterStatDivides changed into casterStatEffect, and targetStatMultiplies changed into targetStatEffect. Instead of a True False situation, it now uses the following options: Multiply, Divide, OneMinusMultiply, and OneMinusDivide. The OneMinus options mean 1 - Stat Value, and the effects default to the same thing the original booleans would have done.
Blast Attacks, Burst Attacks, and the Various Explosion Hediff Comps now use the explosion tag instead of having all their options directly within the comp to make it easier for me to fix and occasionally expand them in the future. One side effect of this change is that Blast abilities will now default to excluding the caster instead of nobody. As a side note, all explosions in this framework handle explosion exclusions differently, as discussed below the abilities section. This only applies for the 1.6 version
Blast Before:
<li Class="EBSGFramework.CompProperties_EBSGBlast">
<radius>10</radius>
<damageDef>Burn</damageDef>
<injureSelf>false</injureSelf>
<explosionSound>Foam_Impact</explosionSound>
<postExplosionThing>SHG_BloodMist</postExplosionThing>
<postExplosionThingChance>100</postExplosionThingChance>
<damageAmount>40</damageAmount>
</li>
Blast After:
<li Class="EBSGFramework.CompProperties_EBSGBlast">
<explosion>
<radius>10</radius>
<damageDef>Burn</damageDef>
<exclusions>Self</exclusions>
<explosionSound>Foam_Impact</explosionSound>
<postExplosionThing>SHG_BloodMist</postExplosionThing>
<postExplosionThingChance>100</postExplosionThingChance>
<damageAmount>40</damageAmount>
</explosion>
</li>
Most explosions in the framework will switch from using a bool system to get exclusions to using an enumerable system. To update yours, delete injureSelf, injureAllies, and injureNonHostiles, and replace them with exclusions. The options for exclusions is None, Self, Allies, and NonHostiles:
- Blast Attacks : Default (Self)
- Burst Attacks : Default (Self)
- DRG Burst and Blast : Default (Self / None)
- Orbital Strike Ability Comp
- Various Explosion Hediff Comps : Default (Self)
<exclusions>NonHostiles</exclusions>
All explosions in this framework gained a couple options for changing how gases from explosions are generated:
- gasRadiusOverride : The maximum radius that the gas can be generated in, if one is set. This is still constrained by whatever the game views as the limit for the explosion in general
- postExplosionGasAmount : Default (255) : The amount of gas generated in each cell, with 255 completely filling it
Explosion gases have been tweaked to use values that directly translate to Rimworld's gases to make it more receptive to changes:
- None : Remove the tag from the comp. This is now the default for all comps in this framework
- Smoke : BlindSmoke
- Tox : ToxGas
- Rot : RotStink
- Deadlife : DeadlifeDust
Customizable Bloodclotting switches its min/max approach to a singular range. Not available in the 1.5 version because I forgot to include it:
- tendQuality takes the place of minTendQuality and maxTendQuality
Dynamic Resource Genes that use the conditions on resource drain/regeneration have their light level merged into a singular range and the time period changed into a single range, similar to the ability validator's change mentioned above:
<min>A</min>
<max>B</max>
<range>A~B</range>
The new ranges and the tags they replace:
- lightLevel : minLightLevel and maxLightLevel
- progressThroughDay : startTime and endTime
Genetic Romance Chance is replacing its current clunky bool system with an enum system. In both cases, the options are Higher, and Lower. The other notable difference is that the higher/lower check will now compare the current value with the default instead of 1, so stats like PawnBeauty should be less confused by these settings than before
- carrierReq replaces onlyWhileLoweredCarrier and onlyWhileRaisedCarrier
- otherReq replaces onlyWhileLoweredOther and onlyWhileRaisedOther
For example, the example on that page went from this:
<modExtensions>
<li Class="EBSGFramework.GRCExtension">
<carrierStat>PsychicSensitivity</carrierStat>
<otherStat>PsychicSensitivity</otherStat>
<onlyWhileLoweredOther>True</onlyWhileLoweredOther>
</li>
</modExtensions>
to this:
<modExtensions>
<li Class="EBSGFramework.GRCExtension">
<carrierStat>PsychicSensitivity</carrierStat>
<otherStat>PsychicSensitivity</otherStat>
<otherReq>Lower</otherReq>
</li>
</modExtensions>
Hediffs at Age replaces the minAge and maxAge with a singular validAges. For example, a 0 min 40 max becomes 0~40 in validAges
<validAges>0~40</validAges>
Various Conditional Stat Affecters related to the map have been updated to use ranges instead of the previous min/max separated tags. More specifically:
-
Light : minLightLevel and maxLightLevel become lightLevel
-
Rain and Snow : minimumRainRate and maximumRainRate become rainRate, while minimumSnowRate and maximumSnowRate become snowRate
-
Temperature : minTemp and maxTemp become temp
-
Time : minPartOfDay and maxPartOfDay become progressThroughDay
- minSeverity and maxSeverity merge into a singular range called validSeverity
DRG Regeneration : Only applies for 1.6
- minResource and maxResource merge into validResourceLevels
- minSeverity and maxSeverity merge into validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minHemogen and maxHemogen merge into a singular range called validHemogen
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
- minSeverity and maxSeverity merge into a singular range called validSeverity
Various Explosion Hediff Comps
- minSeverity and maxSeverity merge into a singular range called validSeverities
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- checkedGenes become relatedGenes which acts the same
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- checkedGenes become relatedGenes which acts the same
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- relatedGene becomes relatedGenes, which is a list of genes instead of the old singular gene system
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- relatedGene becomes relatedGenes, which is a list of genes instead of the old singular gene system
Gene in Colony Mood Toggle Precept
- EBSGFramework.EBSGExtension becomes EBSGFramework.EBSGThoughtExtension
- relatedGene becomes relatedGenes, which is a list of genes instead of the old singular gene system
Related to the precept updates, the Revered Meme Example has also been updated for those who rely on a more robust example