[
(set_fixed_point_multiplier, 1000),
(try_for_agents, ":agent_no"),
(agent_is_non_player, ":agent_no"),
(agent_is_alive, ":agent_no"),
(agent_is_human, ":agent_no"),
(neg|agent_slot_eq, ":agent_no", 1003, 1),
(agent_get_horse, ":horse_no", ":agent_no"),
(try_begin),
(neg|agent_slot_eq, ":agent_no", slot_agent_is_running_away, 1),
(gt, ":horse_no", -1),
(agent_get_team, ":team_no", ":agent_no"),
(gt, ":team_no", -1),
(agent_get_division, ":class_no", ":agent_no"),
(gt, ":class_no", -1),
(agent_get_combat_state, ":combat_state", ":agent_no"),
(team_get_weapon_usage_order, ":weapon_usage_order", ":team_no", ":class_no"),
(team_get_hold_fire_order, ":hold_fire", ":team_no", ":class_no"),
(agent_get_ammo, ":ammo", ":agent_no", 0),
(assign, ":thrown_ammo", 0),
(assign, ":ranged_weapon", -1),
(assign, ":ranged_weapon_tipe", -1),
(try_begin),
(try_for_range, ":item", 0, 4),
(agent_get_item_slot, ":item_weapon", ":agent_no", ":item"),
(gt, ":item_weapon", 0),
(item_get_type, ":item_weapon_tipe", ":item_weapon"),
(try_begin),
(eq, ":item_weapon_tipe", itp_type_thrown),
(agent_get_ammo_for_slot, ":ammo_for_slot", ":agent_no", ":item"),
(val_add, ":thrown_ammo", ":ammo_for_slot"),
(try_end),
(try_begin),
(eq, ":ranged_weapon", -1),
(this_or_next|eq, ":item_weapon_tipe", itp_type_bow),
(this_or_next|eq, ":item_weapon_tipe", itp_type_thrown),
(this_or_next|eq, ":item_weapon_tipe", itp_type_pistol),
(eq, ":item_weapon_tipe", itp_type_musket),
(assign, ":ranged_weapon", ":item_weapon"),
(assign, ":ranged_weapon_tipe", ":item_weapon_tipe"),
(try_end),
(try_end),
(try_end),
(gt, ":ranged_weapon_tipe", -1),
(neg|item_has_property, ":ranged_weapon", itp_cant_reload_on_horseback),
(assign, ":have_arrow", 1),
(try_begin),
(store_sub, ":arrow", ":ammo", ":thrown_ammo"),
(eq, ":arrow", 0),
(agent_set_speed_limit, ":agent_no", 1000),
(assign, ":have_arrow", 0),
(try_end),
(eq, ":have_arrow", 1),
(gt, ":ammo", 0),
(agent_set_slot, ":agent_no", 1003, 2),
(neg|eq, ":hold_fire", aordr_hold_your_fire),
(neg|eq, ":weapon_usage_order", wordr_use_melee_weapons),
(agent_get_wielded_item, ":weapon_hold", ":agent_no", 0),
(gt, ":weapon_hold", 0),
(item_get_type, ":weapon_type", ":weapon_hold"),
(try_begin),
(agent_ai_get_look_target, ":look_target", ":agent_no"),
(gt, ":look_target", -1),
(agent_is_human, ":look_target"),
(agent_is_alive, ":look_target"),
(agent_get_team, ":look_target_team", ":look_target"),
(gt, ":look_target_team", -1),
(neg|teams_are_enemies, ":team_no", ":look_target_team"),
(agent_set_look_target_agent, ":agent_no", -1),
(agent_force_rethink, ":agent_no"),
(try_end),
(assign, ":speed_limit", 1000),
(agent_get_position, pos50, ":agent_no"),
(position_move_z, pos50, 250, 1),
(assign, ":distance_closest", 100000),#1000m
(assign, ":enemies_closest", -1),
(team_get_movement_order, ":movement_order", ":team_no", ":class_no"),
(eq, ":movement_order", 2),
(try_for_agents, ":enemies"),
(agent_is_alive, ":enemies"),
(agent_is_human, ":enemies"),
(agent_get_position, pos36, ":enemies"),
(agent_get_team, ":enemies_team", ":enemies"),
(gt, ":enemies_team", -1),
(teams_are_enemies, ":team_no", ":enemies_team"),
(get_distance_between_positions, ":distance", pos50, pos36),
(try_begin),
(agent_slot_eq, ":enemies", slot_agent_is_running_away, 1),
(val_add, ":distance", 10000),
(try_end),
(assign, ":distance_cavalry", 0),
(try_begin),
(agent_get_horse, ":enemies_horse", ":enemies"),
(gt, ":enemies_horse", -1),
(store_div, ":distance_cavalry", ":distance", 3),
(val_mul, ":distance_cavalry", 2),
(val_min, ":distance_cavalry", 2000),
(val_sub, ":distance", ":distance_cavalry"),
(assign, ":distance_1", ":distance_cavalry"),
(try_end),
(neg|ge, ":distance", ":distance_closest"),
(assign, ":distance_closest", ":distance"),
(assign, ":enemies_closest", ":enemies"),
(try_end),
(neg|eq, ":enemies_closest", -1),
(agent_get_position, pos51, ":enemies_closest"),
(try_begin),
(agent_get_horse, ":enemies_closest_horse", ":enemies_closest"),
(gt, ":enemies_closest_horse", -1),
(store_add, ":distance_true", ":distance_1", ":distance_closest"),
(position_move_z, pos51, 250, 1),
(else_try),
(assign, ":distance_true", ":distance_closest"),
(position_move_z, pos51, 140, 1),
(try_end),
(try_begin),
(agent_slot_eq, ":enemies_closest", slot_agent_is_running_away, 1),
(val_sub, ":distance_true", 10000),
(else_try),
(gt,":distance_true",300),
(agent_set_wielded_item, ":agent_no", ":ranged_weapon"),
(try_end),
(try_begin),
(this_or_next|eq, ":weapon_type", itp_type_bow),
(this_or_next|eq, ":weapon_type", itp_type_pistol),
(eq, ":weapon_type", itp_type_musket),
(agent_get_attack_action, ":attack_action", ":agent_no"),
(position_has_line_of_sight_to_position, pos50, pos51),
(agent_set_look_target_agent, ":agent_no", ":enemies_closest"),
(try_begin),
(eq, ":attack_action", 1),
(try_begin),
(eq, ":movement_order", 2),
(agent_get_speed, pos31, ":agent_no"),
(position_get_y,":speed_y",pos31),
(try_begin),
(gt, ":distance_closest", 700),
(lt, ":distance_closest", 6000),
(store_div, ":speed_limit", ":speed_y",300),
(store_sub, ":speed_limit_distance", ":distance_closest", 2500),
(val_div, ":speed_limit_distance", 20),
(val_max, ":speed_limit", ":speed_limit_distance"),
(val_max, ":speed_limit", 1),
(try_end),
(try_end),
(eq, ":weapon_type", itp_type_bow),
(lt, ":distance_true", 4000),
(agent_set_attack_action, ":agent_no", 3, 0),
(else_try),
(eq, ":weapon_type", itp_type_bow),
(lt, ":distance_true", 4000),
(neq, ":combat_state", 8),
(agent_set_attack_action, ":agent_no", 3, 1),
(try_end),
(try_end),
(agent_set_speed_limit, ":agent_no", ":speed_limit"),
(try_begin),
(agent_is_non_player, ":agent_no"),
(neg|eq, ":ranged_weapon_tipe", itp_type_thrown),
(gt, ":enemies_closest", -1),
(try_begin),
(eq, ":movement_order", 2),
(this_or_next|agent_slot_eq, ":enemies_closest", slot_agent_is_running_away, 1),
(lt, ":distance_closest", 10000),
(try_begin),
(get_scene_boundaries, pos2, pos3),
(position_get_x, ":tip_left_x", pos2),
(position_get_y, ":tip_left_y", pos2),
(position_get_x, ":right_down_x", pos3),
(position_get_y, ":right_down_y", pos3),
(position_get_x, ":agent_no_poi_x", pos50),
(position_get_y, ":agent_no_poi_y", pos50),
(position_copy_origin, pos52, pos2),
(store_sub, ":left_x", ":agent_no_poi_x", ":tip_left_x"),
(store_sub, ":up_y", ":agent_no_poi_y", ":tip_left_y"),
(store_sub, ":right_x", ":right_down_x", ":agent_no_poi_x"),
(store_sub, ":down_y", ":right_down_y", ":agent_no_poi_y"),
(val_abs, ":left_x"),
(val_abs, ":up_y"),
(val_abs, ":right_x"),
(val_abs, ":down_y"),
(store_sub, ":map_middle_x", ":right_down_x", ":tip_left_x"),
(store_sub, ":map_middle_y", ":right_down_y", ":tip_left_y"),
(val_div, ":map_middle_x", 20),
(val_div, ":map_middle_y", 20),
(position_move_x, pos52, ":map_middle_x", 1),
(position_move_y, pos52, ":map_middle_y", 1),
(get_distance_between_positions,":distance_middle", pos52, pos50),
(position_transform_position_to_local, pos52, pos50, pos52),
(position_transform_position_to_local, pos4, pos50, pos51),
(position_get_x, ":map_middle_x", pos52),
(position_get_y, ":map_middle_y", pos52),
(position_get_x, ":enemies_x", pos4),
(position_get_y, ":enemies_y", pos4),
(assign, ":effect", 0),
(try_begin),
(neg|gt, ":distance_closest", 1000),
(store_sub,":effect", ":distance_closest", 1500),
(val_mul,":effect", 60),
(val_max, ":effect", -80000),
(assign, ":effect", -80000),
(else_try),
(gt, ":distance_closest", 2500),
(store_sub,":effect", ":distance_closest", 0),
(val_mul, ":effect", 5),
(val_clamp, ":effect", 35000, 90000),
(try_begin),
(gt,":enemies_closest_horse",-1),
(val_sub,":effect",20000),
(try_end),
(try_end),
(assign, ":distance_to_boundary", 30000),
(val_min, ":distance_to_boundary", ":left_x"),
(val_min, ":distance_to_boundary", ":up_y"),
(val_min, ":distance_to_boundary", ":right_x"),
(val_min, ":distance_to_boundary", ":down_y"),
(try_begin),
(lt, ":distance_to_boundary", 30000),
(lt, ":distance_closest", 1500),
(agent_slot_eq, ":enemies_closest", slot_agent_is_running_away, 0),
(agent_force_rethink, ":agent_no"),
(val_mul, ":map_middle_x", 100),
(val_mul, ":map_middle_y", 100),
(val_mul, ":enemies_x", 100),
(val_mul, ":enemies_y", 100),
(store_div,":cos_middle",":map_middle_x",":distance_middle"),
(store_div,":sin_middle",":map_middle_y",":distance_middle"),
(store_div,":cos_enemies",":enemies_x",":distance_true"),
(store_div,":sin_enemies",":enemies_y",":distance_true"),
(store_acos, ":angle_cos", ":cos_middle"),
(store_asin, ":angle_sin", ":sin_middle"),
(store_acos, ":angle_cos_enemies", ":cos_enemies"),
(store_asin, ":angle_sin_enemies", ":sin_enemies"),
(try_begin),
(lt, ":angle_sin", 0),
(val_mul,":angle_cos", -1),
(val_add,":angle_cos", 360000),
(try_end),
(try_begin),
(lt, ":angle_sin_enemies", 0),
(val_mul,":angle_cos_enemies", -1),
(val_add,":angle_cos_enemies", 360000),
(try_end),
(store_sub, ":k2", ":angle_cos", ":angle_cos_enemies"),
(val_sub, ":k2", 270000),
(val_sub, ":k2", ":effect"),
(store_add, ":effect", ":k2", ":effect"),
(try_begin),
(lt, ":angle_cos", ":angle_cos_enemies"),
(val_add, ":effect", 360000),
(try_end),
(val_clamp,":effect",-210000, 15000),
(agent_set_attack_action, ":agent_no", 3, 1),
(try_end),
(store_cos, ":cos", ":effect"),
(store_sin, ":sin", ":effect"),
(store_mul, ":k_x1", ":cos", ":enemies_y",),
(store_mul, ":k_x2", ":sin", ":enemies_x",),
(store_mul, ":k_y1", ":sin", ":enemies_y",),
(store_mul, ":k_y2", ":cos", ":enemies_x",),
(store_add, ":move_x",":k_x1", ":k_x2"),
(store_sub, ":move_y",":k_y1", ":k_y2"),
(position_move_x, pos50, ":move_x", 0),
(position_move_y, pos50, ":move_y", 0),
(try_end),
(agent_set_scripted_destination, ":agent_no", pos50, 1),
(else_try),
(agent_clear_scripted_mode, ":agent_no"),
(agent_force_rethink, ":agent_no"),
(try_end),
(try_end),
(else_try),
(try_begin),
(agent_slot_eq, ":agent_no", 1003, 0),
(agent_set_slot, ":agent_no", 1003, 1),
(else_try),
(agent_slot_eq, ":agent_no", 1003, 2),
(this_or_next|eq, ":ammo", 0),
(this_or_next|neg|gt, ":horse_no", 0),
(this_or_next|eq, ":hold_fire", aordr_hold_your_fire),
(eq, ":weapon_usage_order", wordr_use_melee_weapons),
(agent_force_rethink, ":agent_no"),
(agent_clear_scripted_mode, ":agent_no"),
(agent_set_speed_limit, ":agent_no", 1000),
(agent_set_slot, ":agent_no", 1003, 3),
(try_end),
(try_end),
(try_end),
]