All pastes #440100 Raw Edit

Something

public text v1 · immutable
·published 2007-04-14 19:51 UTC
rendered paste body
#define ADD_RETROACTIVELY_MODIFIED_ATTACK FILTER
[store_unit]
[filter]
{FILTER}
[/filter]
variable=ARMA_units
[/store_unit]

{FOREACH ARMA_units ARMA_i}
	{VARIABLE_OP ARMA_x to_variable ARMA_units[$ARMA_i].x}
	{VARIABLE_OP ARMA_y to_variable ARMA_units[$ARMA_i].y}

	[object]
	silent=yes
	[filter]
	x=$ARMA_x
	y=$ARMA_y
	[/filter]
	[effect]
	apply_to=new_attack
#enddef
#define /ADD_RETROACTIVELY_MODIFIED_ATTACK
	[/effect]
	[/object]

	[store_unit]
	[filter]
	x=$ARMA_x
	y=$ARMA_y
	[/filter]
	variable=ARMA_unit
	[/store_unit]

	{VARIABLE ARMA_attack_swapped false}

	{FOREACH ARMA_unit.modifications.object ARMA_j}
		{VARIABLE_OP ARMA_object to_variable ARMA_unit.modifications.object[$ARMA_j]}
		{FOREACH ARMA_object.effect ARMA_k}
			{VARIABLE_OP ARMA_effect to_variable ARMA_object.effect[$ARMA_k]}

			[if]
			[variable]
			name=ARMA_effect.apply_to
			equals=attack
			[/variable]
			[variable]
			name=ARMA_attack_swapped
			equals=false
			[/variable]
				[then]
				#swap the newly added attack with the first attack-modifying effect.
				{VARIABLE_OP ARMA_unit.modifications.object[$ARMA_j].effect[$ARMA_k] to_variable ARMA_unit.modifications.object[$ARMA_unit.modifications.object.length].effect[0]}
				{VARIABLE_OP ARMA_unit.modifications.object[$ARMA_unit.modifications.object.length].effect[0] to_variable ARMA_effect}
				{VARIABLE ARMA_attack_swapped true}
				[/then]
			[/if]

		{NEXT ARMA_k}
	{NEXT ARMA_j}

	[unstore_unit]
	variable=ARMA_unit
	[/unstore_unit]
{NEXT ARMA_i}
#enddef