search_regiment_uflag_attrib 4, 0, 4096
test_self_at_node 9iftrue ; When at node 9 do a normal distance (100) search ; for units that are not in close combat (UnitFlag1 = 512) ; and send event 58 to callee if found search_regiment_distance_uflag 58, 100, 512else ; When we are not at node 9 still search for enemies at close distance (50) search_regiment_distance_uflag 58, 50, 512 iffalse ; When we are not moving (UnitFlag1 = 16) then continue moving to node 9 test_unit_flag1 16 iftrue move_to_node 9 endif else ; Unit was found, guess event 58 will handle the attack block_movement sleep endif endif
on_event 58 #86
.func 14 clear_ctrl_flag 8 do get_event on_event 4 #44 set_return_func_iftrue 127 end_event 6844 call 122 @0xABC test_more_events while return_from_event_handler
search_and_attack_enemy 4, 0, 4096
on_event 4 #44 set_return_func_iftrue 127 end_event 6844
.func 127 #14 4, -1 send_event_to_stored_unit 20 wait_unit_flag1_clear 16392 play_self 1 #48 #4f ;now the unit start to walk toward the enemy do for 2 set_timer 10 #58 ;#58 => test if the enemy is in range for charging goto_iftrue 129 wait_for_timer test_unit_flag1 16 iftrue restore_ip endif next #49 always .func 129 #59 ; #59 => Charge iftrue play_self 2 #14 19, -1 do sleep #b0 0 test_unit_flag1 16 whilenot endif goto 134.func 134 hold sleep wait_unit_flag1_clear 8 #50 restore_ip
distfunc unittype vision nth dist uflag1 attribs opfind_enemy_uflag_attrib 0 0 0 1 100 arg2 arg3 a2find_enemy_visible 0 0 1 1 100 0 0 a3find_enemy_simple 1 0 0 1 100 0 0 a4find_enemy_simple_visible 1 0 1 1 100 0 0 a5find_enemy_unittype 0 arg2 0 1 100 0 0 a6find_enemy_unittype_2 0 arg2 0 1 100 0 0 a7find_enemy_nth 0 0 0 arg2 100 0 0 a8find_enemy_nth_visible 0 0 1 arg2 100 0 0 a9find_enemy_unittype_nth 0 arg2 0 arg3 100 0 0 aafind_enemy_unittype_nth_2 0 arg2 0 arg3 100 0 0 abfind_enemy_distance_uflag 4 0 0 1 arg2 arg3 0 ac
on_event 19 #14 8, 4 end_event 6844
on_event 4 #44 ; test can fight set_return_func_iftrue 127 end_event 6844
on_event 20 #14 8, 4 end_event 6844
on_event 21 #14 9, 4 end_event 6844
on_event 5 #14 5, -1 iftrue send_event_to_stored_unit 21 endif end_event 6844
on_event 14 #14 18, -1 end_event 6844
on_event 22 #14 17, -1 end_event 6844
on_event 11 #14 7, -1 end_event 6844
on_event 65 test_event_from_target iftrue test_unit_flag2 4 iftrue play_self 22 endif test_unit_flag1 512 iftrue #14 17, -1 else send_event_to_self 25 endif endif end_event 6844
.func 106 reset_call_stack #14 4, -1 wait_unit_flag1_clear 16392 play_self 1 #48 sleep #4f do for 2 set_timer 10 #58 goto_iftrue 129 wait_for_timer test_unit_flag1 16 iftrue restore_ip endif next #49 always
.func 107 reset_call_stack charge play_self 2 #14 19, -1 do sleep #b0 0 test_unit_flag1 16 whilenot goto 134
.func 116 #62 #50 play_self 3 #14 1, -1 #4a send_event_to_self_iftrue 3 sleep_iftrue clear_unit_flag1 17842328 clear_unit_flag2 16 goto 110
.func 127 #14 4, -1 send_event_to_stored_unit 20 wait_unit_flag1_clear 16392 play_self 1 #48 #4f do for 2 set_timer 10 #58 goto_iftrue 129 wait_for_timer test_unit_flag1 16 iftrue restore_ip endif next #49 always
.func 130 #14 6, -1 block_movement do sleep #c6 while do set_timer 20 wait_for_timer always
.func 140 set_event_handler 141 #3c 64, 0 do set_timer 10 wait_for_timer #14 16, -1 always
.func 141 clear_ctrl_flag 8 do get_event on_event 52 #14 15, -1 end_event 6844 @0xABC test_more_events while return_from_event_handler