diff gamelib/animal.py @ 174:ff168162974e

armour gets damaged
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Thu, 03 Sep 2009 23:11:11 +0000
parents 9ea53eb919cf
children 6854e706dcdf
line wrap: on
line diff
--- a/gamelib/animal.py	Thu Sep 03 23:05:36 2009 +0000
+++ b/gamelib/animal.py	Thu Sep 03 23:11:11 2009 +0000
@@ -30,7 +30,6 @@
         self.equipment = []
         self.abode = None
         self.facing = 'left'
-        self.lives = 1
 
     def loop(self, tv, _sprite):
         ppos = tv.tile_to_view(self.pos.to_tuple())
@@ -92,12 +91,22 @@
     def weapons(self):
         return [e for e in self.equipment if equipment.is_weapon(e)]
 
+    def armour(self):
+        return [e for e in self.equipment if equipment.is_armour(e)]
+
     def covers(self, tile_pos):
         return tile_pos[0] == self.pos.x and tile_pos[1] == self.pos.y
 
     def outside(self):
         return self.abode is None
 
+    def survive_damage(self):
+        for a in self.armour():
+            if not a.survive_damage():
+                self.unequip(a)
+            return True
+        return False
+
 class Chicken(Animal):
     """A chicken"""
 
@@ -291,8 +300,7 @@
 
     def _catch_chicken(self, chicken, gameboard):
         """Catch a chicken"""
-        chicken.lives -= 1
-        if not chicken.lives > 0:
+        if not chicken.survive_damage():
             sound.play_sound("kill-chicken.ogg")
             gameboard.remove_chicken(chicken)
         self.closest = None