digdug wrote:
Adding usesXML="true" in the manner below makes the XML of all mods available to all other mods. Only a single instance in a single mod is required.
o.O what ? I don't think that it's supposed to work like that.
I'm happy that it worked for you, but this looks like a case of bleeding code into other mods ?
I've been playing with typGetXML and typCreate for a couple of weeks, and I think I understand why it was necessary.
For example, I could make a mod that used typGetXML to assemble a list of missiles that can be fired by launchers by either checking for the <Missile> element or searching for type="missile". Some missiles aren't fireable because of the lack of type="missile" and will generate an error if added to launcher code; examples include SmartCannon rounds and the Nandao bolt.
If another mod overwrites the NAMI launcher to make it a non-launcher weapon and overwrites Longbows to remove type="missile", what happens if my mod isn't aware of the change because it can't pull up the XML for the overwritten Longbow? It will try to add the Longbow to a missile launcher during runtime based on no-longer-valid vanilla code, generating an error.
If an item's characteristics are available to the game in C but the corresponding XML isn't updated, other errors can creep in if another mod uses typCreate to overwrite those items during the course of the game. From this perspective, it makes sense that if one mod needs typGetXML, the XML of all items must become available.