("battle_tactic_apply_aux",
[
(store_script_param, ":team_no", 1),
(store_script_param, ":battle_tactic", 2),
(store_mission_timer_a, ":mission_time"),
(try_begin),
(eq, ":battle_tactic", btactic_hold),
(copy_position, pos1, pos52),
(call_script, "script_get_closest3_distance_of_enemies_at_pos1", ":team_no", 1),
(assign, ":avg_dist", reg0),
(assign, ":min_dist", reg1),
(try_begin),
(this_or_next|lt, ":min_dist", 1000),
(lt, ":avg_dist", 4000),
(assign, ":battle_tactic", 0),
(team_give_order, ":team_no", grc_everyone, mordr_charge),
(try_end),
(else_try),
(eq, ":battle_tactic", btactic_follow_leader),
(team_get_leader, ":ai_leader", ":team_no"),
(try_begin),
(ge, ":ai_leader", 0),
(agent_is_alive, ":ai_leader"),
(agent_set_speed_limit, ":ai_leader", 9),
(call_script, "script_team_get_average_position_of_enemies", ":team_no"),
(copy_position, pos60, pos0),
(agent_get_position, pos61, ":ai_leader"),
(position_transform_position_to_local, pos62, pos61, pos60), #pos62 = vector to enemy w.r.t leader
(position_normalize_origin, ":distance_to_enemy", pos62),
(convert_from_fixed_point, ":distance_to_enemy"),
(assign, reg17, ":distance_to_enemy"),
(position_get_x, ":dir_x", pos62),
(position_get_y, ":dir_y", pos62),
(val_mul, ":dir_x", 23),
(val_mul, ":dir_y", 23), #move 23 meters
(position_set_x, pos62, ":dir_x"),
(position_set_y, pos62, ":dir_y"),
(position_transform_position_to_parent, pos63, pos61, pos62), #pos63 is 23m away from leader in the direction of the enemy.
(position_set_z_to_ground_level, pos63),
(team_give_order, ":team_no", grc_everyone, mordr_hold),
(team_set_order_position, ":team_no", grc_everyone, pos63),
(agent_get_position, pos1, ":ai_leader"),
(try_begin),
(lt, ":distance_to_enemy", 50),
(ge, ":mission_time", 30),
(assign, ":battle_tactic", 0),
(team_give_order, ":team_no", grc_everyone, mordr_charge),
(agent_set_speed_limit, ":ai_leader", 60),
(try_end),
(else_try),
(assign, ":battle_tactic", 0),
(team_give_order, ":team_no", grc_everyone, mordr_charge),
(try_end),
(try_end),
(try_begin), # charge everyone after a while
(neq, ":battle_tactic", 0),
(ge, ":mission_time", 300),
(assign, ":battle_tactic", 0),
(team_give_order, ":team_no", grc_everyone, mordr_charge),
(team_get_leader, ":ai_leader", ":team_no"),
(agent_set_speed_limit, ":ai_leader", 60),
(try_end),
(assign, reg0, ":battle_tactic"),
]),