comparison 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
comparison
equal deleted inserted replaced
173:b2eed9977e35 174:ff168162974e
28 else: 28 else:
29 self.pos = Position(tile_pos[0], tile_pos[1]) 29 self.pos = Position(tile_pos[0], tile_pos[1])
30 self.equipment = [] 30 self.equipment = []
31 self.abode = None 31 self.abode = None
32 self.facing = 'left' 32 self.facing = 'left'
33 self.lives = 1
34 33
35 def loop(self, tv, _sprite): 34 def loop(self, tv, _sprite):
36 ppos = tv.tile_to_view(self.pos.to_tuple()) 35 ppos = tv.tile_to_view(self.pos.to_tuple())
37 self.rect.x = ppos[0] 36 self.rect.x = ppos[0]
38 self.rect.y = ppos[1] 37 self.rect.y = ppos[1]
90 self.image_right.blit(eq_image_right, (0, 0)) 89 self.image_right.blit(eq_image_right, (0, 0))
91 90
92 def weapons(self): 91 def weapons(self):
93 return [e for e in self.equipment if equipment.is_weapon(e)] 92 return [e for e in self.equipment if equipment.is_weapon(e)]
94 93
94 def armour(self):
95 return [e for e in self.equipment if equipment.is_armour(e)]
96
95 def covers(self, tile_pos): 97 def covers(self, tile_pos):
96 return tile_pos[0] == self.pos.x and tile_pos[1] == self.pos.y 98 return tile_pos[0] == self.pos.x and tile_pos[1] == self.pos.y
97 99
98 def outside(self): 100 def outside(self):
99 return self.abode is None 101 return self.abode is None
102
103 def survive_damage(self):
104 for a in self.armour():
105 if not a.survive_damage():
106 self.unequip(a)
107 return True
108 return False
100 109
101 class Chicken(Animal): 110 class Chicken(Animal):
102 """A chicken""" 111 """A chicken"""
103 112
104 EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE' 113 EQUIPMENT_IMAGE_ATTRIBUTE = 'CHICKEN_IMAGE_FILE'
289 return self.pos 298 return self.pos
290 return self._find_best_path_step(self.closest.pos, gameboard) 299 return self._find_best_path_step(self.closest.pos, gameboard)
291 300
292 def _catch_chicken(self, chicken, gameboard): 301 def _catch_chicken(self, chicken, gameboard):
293 """Catch a chicken""" 302 """Catch a chicken"""
294 chicken.lives -= 1 303 if not chicken.survive_damage():
295 if not chicken.lives > 0:
296 sound.play_sound("kill-chicken.ogg") 304 sound.play_sound("kill-chicken.ogg")
297 gameboard.remove_chicken(chicken) 305 gameboard.remove_chicken(chicken)
298 self.closest = None 306 self.closest = None
299 self.hunting = False 307 self.hunting = False
300 self.last_steps = [] # Forget history here 308 self.last_steps = [] # Forget history here