# HG changeset patch # User Stefano Rivera # Date 1378419442 -7200 # Node ID ce11e1cae0edd91642af190790e2ac3a3332a50c # Parent 83477a7642b4d000d0eca0ac65ed5c0695e0f9ad Enemies now die diff -r 83477a7642b4 -r ce11e1cae0ed nagslang/enemies.py --- a/nagslang/enemies.py Fri Sep 06 00:16:32 2013 +0200 +++ b/nagslang/enemies.py Fri Sep 06 00:17:22 2013 +0200 @@ -25,6 +25,7 @@ def __init__(self, space, world, position): self._setup_physics(space, position) self._setup_renderer() + self.health = 42 super(Enemy, self).__init__( self._physicser, self.renderer) @@ -47,6 +48,13 @@ def requires(cls): return [("name", "string"), ("position", "coordinates")] + def lose_health(self, amount): + self.health -= amount + if self.health < 0: + self.world.kills += 1 + self.physicser.remove_from_space() + self.remove = True + class PatrollingAlien(Enemy): is_moving = True # Always walking. @@ -130,6 +138,9 @@ def collide_with_protagonist(self, protagonist): protagonist.lose_health(15) + def hit(self, weapon): + self.lose_health(weapon.damage) + @classmethod def requires(cls): return [("name", "string"), ("position", "coordinates"), diff -r 83477a7642b4 -r ce11e1cae0ed nagslang/events.py --- a/nagslang/events.py Fri Sep 06 00:16:32 2013 +0200 +++ b/nagslang/events.py Fri Sep 06 00:17:22 2013 +0200 @@ -48,6 +48,7 @@ class FireEvent(UserEvent): @classmethod - def post(cls, source, impulse, source_collision_type): + def post(cls, source, impulse, damage, source_collision_type): super(FireEvent, cls).post(source=source, impulse=impulse, + damage=damage, source_collision_type=source_collision_type) diff -r 83477a7642b4 -r ce11e1cae0ed nagslang/game_object.py --- a/nagslang/game_object.py Fri Sep 06 00:16:32 2013 +0200 +++ b/nagslang/game_object.py Fri Sep 06 00:17:22 2013 +0200 @@ -342,12 +342,14 @@ class Bullet(GameObject): - def __init__(self, space, position, impulse, source_collision_type): + def __init__(self, space, position, impulse, damage, + source_collision_type): body = make_body(1, pymunk.inf, position) self.last_position = position self.shape = pymunk.Circle(body, 2) self.shape.sensor = True self.shape.collision_type = COLLISION_TYPE_PROJECTILE + self.damage = damage self.source_collision_type = source_collision_type super(Bullet, self).__init__( SingleShapePhysicser(space, self.shape), diff -r 83477a7642b4 -r ce11e1cae0ed nagslang/protagonist.py --- a/nagslang/protagonist.py Fri Sep 06 00:16:32 2013 +0200 +++ b/nagslang/protagonist.py Fri Sep 06 00:17:22 2013 +0200 @@ -261,7 +261,7 @@ vec = Vec2d.unit() vec.angle = self.angle vec.length = 1000 - FireEvent.post(self.physicser.position, vec, COLLISION_TYPE_PLAYER) + FireEvent.post(self.physicser.position, vec, 10, COLLISION_TYPE_PLAYER) def in_wolf_form(self): return self.form == self.WOLF_FORM diff -r 83477a7642b4 -r ce11e1cae0ed nagslang/screens/area.py --- a/nagslang/screens/area.py Fri Sep 06 00:16:32 2013 +0200 +++ b/nagslang/screens/area.py Fri Sep 06 00:17:22 2013 +0200 @@ -147,7 +147,7 @@ # else we're teleporting within the screen, and just the # position change is enough elif FireEvent.matches(ev): - bullet = Bullet(self.space, ev.source, ev.impulse, + bullet = Bullet(self.space, ev.source, ev.impulse, ev.damage, ev.source_collision_type) self._drawables.add(bullet) self.keys.handle_event(ev)