How to port your A24 mod to A25

This lists (most) of the template-changing commits, and how to fix them. And also some other breaking changes.

Other notes

  • The gamesetup has been partly reworked - mods that rework it majorly should expect needing to update.
  • UnitAI has been seriously cleaned, the actions are performed using their respective components now.
  • The ProductionQueue code has been cleaned a bit.
  • The way mirages are handled has changed. If you want a component to be miraged, add the respective component to cmpFogging and add the correct functions to the component (see r25089).
  • GarrisonHolder has been seriously cleaned.
  • The Attacking-helper has been renamed to AttackHelper.

r24953

In UnitAI, the NaturalBehaviour of animals was deprecated in favour of more options for Stances. As a consequense of significant changes in UnitAI for animals (they can behave more like other units now), animals now need vision range to attack and chase.

r24960

In Garrisonable, a Size now needs to be specified.

r24963

In ResourceSupply, there is now an option for timers, hence Amount is changed to Max (with a possibility for Initial). One can use find . -type f | xargs sed -i 's/Amount>/Max>/g' to fix their templates.

r24989

Treasures now have their rewards in a seperate component. So instead of:

  <ResourceSupply>
    <Max>300</Max>
    <Type>treasure.stone</Type>
  </ResourceSupply>

one should now write:

  <Treasure>
    <Resources>
      <stone>300</stone>
    </Resources>
    <CollectTime>1000</CollectTime>
  </Treasure>

(yes, this means one can reward multiple resources with one treasure). Also the people gathering those treasures don't need a rate in their ResourceGatherer component anymore, but they have a seperate component as well :)

    <Rates>
      <treasure>1</treasure>
    </Rates>
  <TreasureCollecter>
    <MaxDistance>2</MaxDistance>
  </TreasureCollecter>

Notice here that rate was previously unused for treasures and there is no such entry now.

r25053

The elephant_stables was renamed to elephant_stable. Some templates need to be moved around, but e.g. maps and referencing templates can be fixed using: find . -type f | xargs sed -i 's/elephant_stables/elephant_stable/g'

r25088

DisabledTemplates, DisabledTechnologies, StartingTechnologies have been removed from map script settings. Instead, you should use triggers to mimic this behaviour. See the commit for examples.

r25089

The functions to mirage are now stored in their respective components, meaning mods that introduce a component (and want it miraged) should add the functions there. Also, mods modifying components need to include the mirage functions there from unmodded 0 A.D.

r25123

Turret points -- a.k.a. visible garrison points -- are now internally fully seperated from a garrison holder. This means that e.g. walls do not need the GarrisonHolder component anymore. This also means that the aura for entities on walls is now a different type: turretedUnits instead of garrisonedUnits (the latter only affects entities which are inside the holder). Entities which you'd like to be able to be turreted need a new component now <Turretable/> in their templates.

r25174

The 'Builder' class is used for entities that can build structure, instead of assuming the 'Worker' class implies it.

r25233

With the use of the same schema for all attack types, Slaughter attack now needs an repeat time.

r25373

Calling trigger actions now expect 'On[triggerName]' like RegisterTrigger. This changes nothing for maps, but component mods may need updating.

Last modified 2 days ago Last modified on May 4, 2021, 11:47:51 AM
Note: See TracWiki for help on using the wiki.