Mercurial > nagslang
diff nagslang/enemies.py @ 361:534eac55a178
ChargingEnemy spits acid
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Fri, 06 Sep 2013 20:10:46 +0200 |
parents | 911547a1c378 |
children | 3dd08e18580f |
line wrap: on
line diff
--- a/nagslang/enemies.py Fri Sep 06 20:06:25 2013 +0200 +++ b/nagslang/enemies.py Fri Sep 06 20:10:46 2013 +0200 @@ -5,8 +5,8 @@ from nagslang import render from nagslang.constants import (COLLISION_TYPE_ENEMY, COLLISION_TYPE_FURNITURE, - ZORDER_MID) -from nagslang.events import EnemyDeathEvent + ACID_SPEED, ACID_DAMAGE, ZORDER_MID) +from nagslang.events import EnemyDeathEvent, FireEvent from nagslang.game_object import GameObject, SingleShapePhysicser, make_body from nagslang.mutators import FLIP_H from nagslang.resources import resources @@ -179,10 +179,12 @@ health = 42 enemy_damage = 20 impulse_factor = 300 + reload_time = 0.2 def __init__(self, space, world, position, attack_range=100): super(ChargingAlien, self).__init__(space, world, position) self._range = attack_range + self._last_fired = 0 def make_physics(self, space, position): body = make_body(100, pymunk.inf, position, 0.8) @@ -213,7 +215,13 @@ self.is_moving = False return self.is_moving = True - self.set_direction(target.x - pos.x, target.y - pos.y) + dx = target.x - pos.x + dy = target.y - pos.y + self.set_direction(dx, dy) + if self.lifetime - self._last_fired >= self.reload_time: + FireEvent.post(pos, vec_with_length((dx, dy), ACID_SPEED), + ACID_DAMAGE, COLLISION_TYPE_ENEMY) + self._last_fired = self.lifetime super(ChargingAlien, self).update(dt) @classmethod