Mod property alteration and inheritence
Currently, when creating a modified entity you need to declare the entity in full. This is all well and good when creating a completely new entity, such as a new block, a new weapon, a new character or so forth. However, it represents a rolling compatibility issue when it comes to modifying existing entities, and a redundancy when expanding upon existing entities.
Consider, for example, a player wanting to alter the default suit's thruster colour. In addition to making this change, they have to also re-declare all of the animations, gas properties, thruster output, mass and so forth. While this is only a minor issue of redundancy for the current game version, major changes can and do result in this custom file containing invalid information, or missing information. Case in point, the recent 1.186 major patch makes any character mod from earlier patches incompatible, in so much as their jetpack is no longer correctly functional.
Ideally, such a modification should only require the altered property to be declared. To continue with the same example, the modder could simply declare that the MyObjectBuilder_Character of subtype Default_Astronaut has different FlameIdleColor and FlameFullColor properties under Jetpack/ThrustProperties. All other properties, such as movement speeds, gas capacities, mass and so on would remain exactly as they were without the mod loaded, or could even be altered by a different mod. Any new properties would then also be picked up, removing many inter-version compatibility issues.
On the subject of inheritance, it's much the same only for situations where an existing entity is to be duplicated with changes. Taking the same example, a player may not want to replace the default engineer's thruster colour - but they still want to have access to it as a separate suit. Again, normally this would involve copying the entire default suit file and giving it a new name along with the altered property, but this again leads to the same incompatibility as before. Ideally, again, they could simply create a new partial file stating that their new engineer - Default_Astronaut_2 - inherits all the properties of a "parent" - Default_Astronaut - but incorporates the desired changes.
Both of these changes would result in smaller mods (in some cases, much smaller) which partially automatically update themselves as new game versions are released. Things such as improved animations, helmet opening, mounting points, particle and explosion effects, etc, would all be incorporated without end-user intervention.
shared this idea 07/02/18 07:10