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