Optimized the great horde upkeep calculations a bit...

...and made it handle advancing units immediately.
This commit is contained in:
Lari Nieminen 2008-11-22 17:28:51 +00:00
parent 9e19ed9e90
commit 620584c1ea

View File

@ -69,63 +69,6 @@
#enddef
#define GOT_THE_GREAT_HORDE SIDES
[event]
name=side turn
first_time_only=no
{VARIABLE great_horde_sides {SIDES}}
[if]
[variable]
name=great_horde_sides
contains=$side_number
[/variable]
[then]
[store_unit]
[filter]
side={SIDES}
[not]
canrecruit=yes
[/not]
[not]
[filter_wml]
[modifications]
[trait]
id=loyal
[/trait]
[/modifications]
[/filter_wml]
[filter_wml]
[variables]
great_horde_upkeep_mod_applied=yes
[/variables]
[/filter_wml]
[/not]
[/filter]
kill=yes
variable=great_horde_units
[/store_unit]
{FOREACH great_horde_units i}
{VARIABLE great_horde_units[$i].upkeep $great_horde_units[$i].level}
{VARIABLE_OP great_horde_units[$i].upkeep add -1}
{VARIABLE great_horde_units[$i].variables.great_horde_upkeep_mod_applied yes}
[unstore_unit]
variable=great_horde_units[$i]
[/unstore_unit]
{NEXT i}
{CLEAR_VARIABLE great_horde_units}
[/then]
[/if]
[/event]
[event]
name=prerecruit
first_time_only=no
@ -159,7 +102,9 @@
[/trait]
[/modifications]
[/filter_wml]
[/not]
[not]
[filter_wml]
[variables]
great_horde_upkeep_mod_applied=yes
@ -177,4 +122,97 @@
find_vacant=no
[/unstore_unit]
[/event]
[event]
name=post_advance
first_time_only=no
[filter]
side={SIDES}
[not]
[filter_wml]
[modifications]
[trait]
id=loyal
[/trait]
[/modifications]
[/filter_wml]
[/not]
[/filter]
{VARIABLE unit.upkeep $unit.level}
{VARIABLE_OP unit.upkeep add -1}
{VARIABLE unit.variables.great_horde_upkeep_mod_applied yes}
[unstore_unit]
variable=unit
find_vacant=no
[/unstore_unit]
[/event]
#enddef
# This is commented out because it seems to incur a little delay at turn start
# yet it's not actually used (the player or allies don't get any units spawned
# for them in the final scenarios). Belongs to the above macro.
#ifdef __UNUSED
[event]
name=side turn
first_time_only=no
{VARIABLE great_horde_sides {SIDES}}
[if]
[variable]
name=great_horde_sides
contains=$side_number
[/variable]
[then]
[store_unit]
[filter]
side={SIDES}
x,y=1-99,1-99
[not]
canrecruit=yes
[/not]
[not]
[filter_wml]
[modifications]
[trait]
id=loyal
[/trait]
[/modifications]
[/filter_wml]
[/not]
[not]
[filter_wml]
[variables]
great_horde_upkeep_mod_applied=yes
[/variables]
[/filter_wml]
[/not]
[/filter]
kill=yes
variable=great_horde_units
[/store_unit]
{FOREACH great_horde_units i}
{VARIABLE great_horde_units[$i].upkeep $great_horde_units[$i].level}
{VARIABLE_OP great_horde_units[$i].upkeep add -1}
{VARIABLE great_horde_units[$i].variables.great_horde_upkeep_mod_applied yes}
[unstore_unit]
variable=great_horde_units[$i]
[/unstore_unit]
{NEXT i}
{CLEAR_VARIABLE great_horde_units}
[/then]
[/if]
[/event]
#endif