Material Support - Freefolk-Rimworld-Modding/FF-Simple-Ammunition-Remastered-2.0 GitHub Wiki

Alternate Ingredients


This example doesn't need patching if done within the mod, we just use the MayRequire attribute and if we're using the fixedIngredientFilter it needs to be specified in there too.

    <ingredients>
      <li>
        <filter>
          <thingDefs>
            <li>Steel</li>
            <li MayRequire="Argon.VMEu">VMEu_Lead</li>
            <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
            <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
            <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
            <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
          </thingDefs>
        </filter>
        <count>20</count>
      </li>
    </ingredients>
    <fixedIngredientFilter>
      <thingDefs>
        <li>Steel</li>
        <li MayRequire="Argon.VMEu">VMEu_Lead</li>
        <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
        <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
        <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
        <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
      </thingDefs>
    </fixedIngredientFilter>

If adding from an outside mod.

  <Operation Class="PatchOperationAdd">
    <xpath>Defs/ThingDef[defName="Some_Ammo_Def_Recipe"]/ingredients/li/filter/thingDefs[li="Steel"]</xpath>
    <value>
      <li MayRequire="Argon.VMEu">VMEu_Lead</li>
      <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
      <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
      <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
      <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
    </value>
  </Operation>
  <Operation Class="PatchOperationAdd">
    <xpath>Defs/ThingDef[defName="Some_Ammo_Def_Recipe"]/fixedIngredientFilter</xpath>
    <value>
      <li MayRequire="Argon.VMEu">VMEu_Lead</li>
      <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
      <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
      <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
      <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
    </value>
  </Operation>

Patching in ingredient requirements and reducing other ingredient costs manually


This reduces required Steel by 10 and adds Lead in its place. MayRequire is used here since all versions of lead are being patched in together, if they were patched in individually we wouldn't need to use it.

  <Operation Class="PatchOperationReplace">
    <xpath>Defs/ThingDef[defName="Some_Ammo_Def_Recipe"]/ingredients/li[filter/thingDefs/li="Steel"]/count</xpath>
    <value>
      <count>10</count>
    </value>
  </Operation>
  <Operation Class="PatchOperationAdd">
    <xpath>Defs/ThingDef[defName="Some_Ammo_Def_Recipe"]/ingredients</xpath>
    <value>
      <li>
        <filter>
          <thingDefs>
            <li MayRequire="Argon.VMEu">VMEu_Lead</li>
            <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
            <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
            <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
            <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
          </thingDefs>
        </filter>
        <count>10</count>
      </li>
    </value>
  </Operation>
  <Operation Class="PatchOperationAdd">
    <xpath>Defs/ThingDef[defName="Some_Ammo_Def_Recipe"]/fixedIngredientFilter</xpath>
    <value>
      <li MayRequire="Argon.VMEu">VMEu_Lead</li>
      <li MayRequire="Argon.LVMEu">VMEu_Lead</li>
      <li MayRequire="Mlie.CuprosAlloys">CAL_Lead</li>
      <li MayRequire="test.TMaterials.Metals.1.0">carnap_lead</li>
      <li MayRequire="LadyCookie.AestheticMaterials">Lead</li>
    </value>
  </Operation>

Patching in ingredient requirements and reducing other ingredient costs by math with XML Extensions


Todo

⚠️ **GitHub.com Fallback** ⚠️