changeset 361:534eac55a178

ChargingEnemy spits acid
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 06 Sep 2013 20:10:46 +0200
parents ba7a5159a69b
children d0aeb893967d
files nagslang/constants.py nagslang/enemies.py nagslang/protagonist.py
diffstat 3 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/constants.py	Fri Sep 06 20:06:25 2013 +0200
+++ b/nagslang/constants.py	Fri Sep 06 20:10:46 2013 +0200
@@ -54,6 +54,10 @@
 
 BULLET_DAMAGE = 10
 CLAW_DAMAGE = 5
+ACID_DAMAGE = 7
+
+BULLET_SPEED = 1000
+ACID_SPEED = 300
 
 CMD_TOGGLE_FORM = 'toggle_form'
 CMD_ATTACK = 'attack'
--- 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
--- a/nagslang/protagonist.py	Fri Sep 06 20:06:25 2013 +0200
+++ b/nagslang/protagonist.py	Fri Sep 06 20:10:46 2013 +0200
@@ -7,7 +7,7 @@
 from nagslang.constants import (
     COLLISION_TYPE_PLAYER, ZORDER_MID, WEREWOLF_SOAK_FACTOR,
     PROTAGONIST_HEALTH_MIN_LEVEL, PROTAGONIST_HEALTH_MAX_LEVEL,
-    NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, CLAW_DAMAGE,
+    NON_GAME_OBJECT_COLLIDERS, BULLET_DAMAGE, BULLET_SPEED, CLAW_DAMAGE,
     CMD_TOGGLE_FORM, CMD_ATTACK, CMD_ACTION)
 from nagslang.events import FireEvent, ClawEvent
 from nagslang.game_object import GameObject, Physicser, make_body
@@ -297,7 +297,7 @@
     def shoot(self):
         if not self.has_item('gun'):
             return
-        vec = vec_from_angle(self.angle, 1000)
+        vec = vec_from_angle(self.angle, BULLET_SPEED)
         FireEvent.post(
             self.physicser.position, vec, BULLET_DAMAGE, COLLISION_TYPE_PLAYER)