#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