= 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. See details at r25077, r25096, r25099 and r25101
- 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 `Stance`s. 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 separate component. So instead of:
{{{
300
treasure.stone
}}}
one should now write:
{{{
300
1000
}}}
(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 separate component as well :)
{{{
1
}}}
{{{
2
}}}
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 separated 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 `` 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.