def find_player(self): dist_sq = gobj.distance_sq(self.player.pos, self.pos) if self.type == 3: Enemy.CHASE_DISTANCE_SQ = 700**2 if dist_sq < Enemy.CHASE_DISTANCE_SQ: if self.landon: self.fire() dir = gobj.direction(self.player.pos, self.pos) if dir == True: self.fl = 'w' else: self.fl = 'h'
def find_nearest_enemy(self): e = (sys.maxsize, None) max_attack_range = 160000 for enemy in gfw.world.objects_at(gfw.layer.enemy): d = gobj.distance_sq(self.pos, (enemy.x, enemy.y)) if e[0] > d and self.pos[0] < enemy.x: e = (d, enemy) if e[1] is not None and e[0] < max_attack_range: return e[1] else: return None
def find_player(self): dist_sq = gobj.distance_sq(self.player.pos, self.pos) if dist_sq < Zombie.CHASE_DISTANCE_SQ: if self.patrol_order >= 0: self.patrol_order = -1 self.action = 'Attack' return BehaviorTree.SUCCESS else: if self.action == 'Attack': self.action = 'Idle' self.time = 0 else: self.action = 'Walk' return BehaviorTree.FAIL