Mercurial > rinkhals
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