Editing Modding Tutorials/XML file structure
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 64: | Line 64: | ||
</Def> | </Def> | ||
</Defs></source><br/> | </Defs></source><br/> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Inheritance= | =Inheritance= | ||
Line 78: | Line 70: | ||
'''Note that after update A15, abstracts have been directly inheritable from the core and from other mods. Redefining the core abstracts is common cause for mod compatibility issues, because any mod loaded after the abstract has been redefined will use the modified version instead of the core. Therefore, when defining abstracts for a mod, it's advisable to try to avoid overwriting the core abstracts and to instead use unique names that are unlikely to be accidentally used by other mods.''' | '''Note that after update A15, abstracts have been directly inheritable from the core and from other mods. Redefining the core abstracts is common cause for mod compatibility issues, because any mod loaded after the abstract has been redefined will use the modified version instead of the core. Therefore, when defining abstracts for a mod, it's advisable to try to avoid overwriting the core abstracts and to instead use unique names that are unlikely to be accidentally used by other mods.''' | ||
+ | |||
+ | Note that you can stop a child inheriting a specific tag's content by specifying ''Inherit="False"'' in the tag, like so: | ||
+ | <source lang="xml"> <weaponTags Inherit="False"> | ||
+ | <li>SniperRifle</li> | ||
+ | </weaponTags></source> | ||
+ | The above example would only have ''SniperRifle'' as a weaponTag, none of the parent's weaponTags. This is particularly useful for lists. | ||
===Basegun ThingDef=== | ===Basegun ThingDef=== | ||
Line 100: | Line 98: | ||
<source lang="xml"><useHitPoints>False</useHitPoints></source><br/> | <source lang="xml"><useHitPoints>False</useHitPoints></source><br/> | ||
− | The next '''<ThingDef>''' in the file is one with the Name type ''BaseGun'' and the ParentName type ''BaseWeapon''. It inherits the contents of | + | The next '''<ThingDef>''' in the file is one with the Name type ''BaseGun'' and the ParentName type ''BaseWeapon''. It inherits the contents of BaseGun and is inherited by everything with '''<ThingDef ParentName="BaseGun">''':<br/> |
<source lang="xml"><ThingDef Name="BaseGun" Abstract="True" ParentName="BaseWeapon"></source><br/><br/> | <source lang="xml"><ThingDef Name="BaseGun" Abstract="True" ParentName="BaseWeapon"></source><br/><br/> | ||
− | It might help to think of each ''<ThingDef Name ="...">'' as a sort of template. BaseWeapon contains the basic information which is true for all weapons: they can be hauled, equipped, selected. BaseGun contains the information which is true for all | + | It might help to think of each ''<ThingDef Name ="...">'' as a sort of template. BaseWeapon contains the basic information which is true for all weapons: they can be hauled, equipped, selected. BaseGun contains the information which is true for all weapons: they're part of the WeaponsRanged category, they can be smelted, they can have art. BaseMakeableGun in turns contains info to make the gun. |
A list representation of how inheritance works in Rimworld's XML might help you out, either early on or to collect your thoughts after reading the above.<br/><br/> | A list representation of how inheritance works in Rimworld's XML might help you out, either early on or to collect your thoughts after reading the above.<br/><br/> | ||
Line 175: | Line 173: | ||
* '''<Defs>''' is the rootnode and this uniformity is enforced. | * '''<Defs>''' is the rootnode and this uniformity is enforced. | ||
* '''<Def>''' has to have a specific name, matching a Type in C#. | * '''<Def>''' has to have a specific name, matching a Type in C#. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Next up= | =Next up= |