From a348e55646529642d551c1dce23212c049c1ba5d Mon Sep 17 00:00:00 2001 From: Bartek Waresiak Date: Wed, 18 Mar 2009 02:41:15 +0000 Subject: [PATCH] file update --- data/ai/formula/patrol.fai | 61 +++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/data/ai/formula/patrol.fai b/data/ai/formula/patrol.fai index 5276786c8d1..4acfaee4d18 100644 --- a/data/ai/formula/patrol.fai +++ b/data/ai/formula/patrol.fai @@ -1,40 +1,73 @@ fai 'patrol.fai' -def patrol_move(me) +def closest_unit(ai*, me) + choose( + enemy_units, 'unit', + -distance_between(me.loc, unit.loc) + ); + +def step_move(me) + if( unit_at( desired_path[0] ), + if( desired_path.size > 1, + move_partial( + me.loc, + desired_path[1] + ), + end + ), + move_partial( + me.loc, + desired_path[0] + ) + ) + +where desired_path = shortest_path( me.loc, me.vars.next_step ); + +def move_ahead(ai*, me) + if( enemy_units, + if( distance_between( closest_unit(ai, me).loc, me.loc ) > me.movement_left-1, + move_partial( + me.loc, + me.vars.next_step + ), + + step_move(me) + + ), + move_partial( + me.loc, + me.vars.next_step + ) + ); + +def patrol_move(ai*, me) if( me.vars.next_step = me.loc, set_unit_var('next_step', me.vars.waypoints[ me.vars.next_step ], me.loc ), - move_partial( - me.loc, - shortest_path( me.loc, me.vars.next_step )[0] - ) + + move_ahead(ai,me) ); if( me.movement_left = 0, end, if(attack, attack, - patrol_move(me) + patrol_move(self, me) ) ) where attack = if( path_to, if(path_to.size <= me.vars.guard_radius, - attack( me.loc, path_to.last, closest_unit.loc ), + attack( me.loc, path_to.last, closest_unit(self, me).loc ), 0 ), 0 ) -where path_to = if( closest_unit, - shortest_path( me.loc, closest_unit.loc ), +where path_to = if( enemy_units, + shortest_path( me.loc, closest_unit(self, me).loc ), [] ) - -where closest_unit = choose( - enemy_units, 'unit', - -distance_between(me.vars.next_step, unit.loc) - ) faiend \ No newline at end of file