Gene Integration - Grim-/Talented GitHub Wiki
The Gene_BasicResource
class provides a foundation for genes that manage a resource value. It extends RimWorld's Gene_Resource
and implements IGeneResourceDrain
.
Key features:
- Custom resource maximum based on stats
- Configurable regeneration
- Resource consumption tracking
- Support for hemogen mechanics
<Talented.BasicResourceGeneDef>
<defName>MyResourceGene</defName>
<label>Resource Gene</label>
<description>A gene with resource mechanics.</description>
<geneClass>MyMod.Gene_CustomResource</geneClass>
<!-- Resource Configuration -->
<maxStat>MaxResourceStat</maxStat>
<regenStat>ResourceRegenAmount</regenStat>
<regenSpeedStat>ResourceRegenSpeed</regenSpeedStat>
<regenTicks>1250</regenTicks>
<costMult>ResourceCostMultiplier</costMult>
<!-- Visual Settings -->
<resourceName>MyResource</resourceName>
<barColor>(3, 3, 138)</barColor>
<resourceGizmoThresholds>
<li>0.25</li>
<li>0.5</li>
<li>0.75</li>
</resourceGizmoThresholds>
</Talented.BasicResourceGeneDef>
The Gene_TalentBase
class extends Gene_BasicResource
to add talent tree functionality. It manages:
- Experience and leveling
- Talent points
- Active and passive skill trees
- Event-based experience gain
<Talented.TalentedGeneDef>
<defName>MyTalentGene</defName>
<label>Talent Gene</label>
<description>A gene with talent tree mechanics.</description>
<geneClass>MyMod.Gene_CustomTalent</geneClass>
<!-- Tree Configuration -->
<MainTreeDef>Active_CustomTree</MainTreeDef>
<SecondaryTreeDef>Passive_CustomTree</SecondaryTreeDef>
<!-- Experience System -->
<experienceFormula>Basic_LinearXP</experienceFormula>
<experienceGainSettings>
<experienceTypes>
<!-- Combat XP -->
<li Class="Talented.DamageExperienceTypeDef">
<baseXP>10</baseXP>
<damageFactor>0.1</damageFactor>
</li>
<!-- Skill XP -->
<li Class="Talented.SkillExperienceTypeDef">
<SkillDef>Shooting</SkillDef>
<baseXP>2</baseXP>
</li>
<!-- Job XP -->
<li Class="Talented.JobExperienceTypeDef">
<SkillDef>HaulToCell</SkillDef>
<baseXP>1</baseXP>
</li>
<!-- Verb XP -->
<li Class="Talented.VerbExperienceTypeDef">
<VerbClassName>Verb_BeatFire</VerbClassName>
<baseXP>1</baseXP>
</li>
</experienceTypes>
</experienceGainSettings>
<!-- Resource Settings (inherited from BasicResourceGeneDef) -->
<maxStat>MaxResourceStat</maxStat>
<regenStat>ResourceRegenAmount</regenStat>
<barColor>(3, 3, 138)</barColor>
<resourceGizmoThresholds>
<li>0.25</li>
<li>0.5</li>
<li>0.75</li>
</resourceGizmoThresholds>
<!-- UI Configuration -->
<TabLabel>Talents</TabLabel>
</Talented.TalentedGeneDef>
- Resource value tracking
- Stat-based maximum value
- Configurable regeneration
- Resource consumption with multipliers
- Built-in gizmos for resource management
- Hemogen system compatibility
- Experience and leveling system (up to level 300)
- Talent point management
- Dual tree system (active and passive)
- Event-driven experience gain
- Debug commands for testing
- Save/load functionality
Gene_Resource (RimWorld Base)
└── Gene_BasicResource
└── Gene_TalentBase
-
Basic Resource Gene
- Override
PostAdd()
for initialization - Use
Consume()
andRestore()
for resource management - Implement custom stat calculations as needed
- Handle gizmo creation through
GetGizmos()
- Override
-
Talent Tree Gene
- Override
InitializeTrees()
for custom tree setup - Implement
OnExperienceGained()
andOnLevelGained()
- Use
GainExperience()
for XP rewards - Handle tree opening through
OpenPassiveTree()
andOpenActiveTree()
- Override
-
Save Data
- Both classes implement
ExposeData()
for save compatibility - Resource values, experience, levels, and tree states are saved
- Both classes implement