Modding:General Best Practices: Difference between revisions

From Caves of Qud Wiki
Jump to navigation Jump to search
m (formatting, punctuation)
(Added a section about random functions.)
Line 25: Line 25:
</objects>
</objects>
</syntaxhighlight>
</syntaxhighlight>
==Random Functions==
{{Main|Modding:Random Functions}}
To avoid conflicts and to keep consistency between seeds, Stat.Random() and Stat.Rnd() should not be called. The ideal is to use [[Modding:Random_Functions#GetSeededRandomGenerator.28string_Seed.29|GetSeededRandomGenerator()]] for your mod's randomness. The next best is calling RandomCosmetic() or Rnd2().

Revision as of 16:57, 24 June 2019

Prefix your object and table names with some unique ID

For instance, alphabeardmods_{id}. This will prevent namespace conflicts with official content and other mods in the future.

<?xml version="1.0" encoding="utf-8"?>
<objects>
  <object Name="ALPHABEARDMODS_CoolNewSword" Load="Merge">
...
  </object> 
</objects>

Only include your content and the minimum changeset via Load="Merge" in tables and object definitions

Don't copy the whole contents of the game xml. You only need to include new content.

For objects and encounter tables, if you're editing an existing item you can use Load="Merge" in it's tag and only specify new items. For example, if I wanted my mod to give chain mail a 2DV:

<?xml version="1.0" encoding="utf-8"?>
<objects>
  <object Name="Chain Mail" Load="Merge">
    <part Name="Armor" DV="2" />
  </object> 
</objects>

Random Functions

Main article: Modding:Random Functions

To avoid conflicts and to keep consistency between seeds, Stat.Random() and Stat.Rnd() should not be called. The ideal is to use GetSeededRandomGenerator() for your mod's randomness. The next best is calling RandomCosmetic() or Rnd2().