changeset 16:e5e4eb7b9443

Add sleep_behavior
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Thu, 15 Mar 2012 09:06:48 +0100
parents 9bd38901e351
children e768ce31a8d3
files jelly/mobs.py
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/jelly/mobs.py	Thu Mar 15 08:59:42 2012 +0100
+++ b/jelly/mobs.py	Thu Mar 15 09:06:48 2012 +0100
@@ -19,9 +19,16 @@
 }
 
 
+def sleep_behavior(mob, level):
+    if mob.status.get('asleep', True):
+        return True
+    return False
+
+
 def attack_behavior(mob, level):
     if dist(level.pc.pos, mob.pos) <= 1:
         level.attack(mob, pos2dir(mob.pos, level.pc.pos), level.pc)
+        mob.status['asleep'] = False
         return True
     return False
 
@@ -49,8 +56,8 @@
 
 
 def slow_behavior(mob, level):
-    mob.wait = not getattr(mob, 'wait', False)
-    if mob.wait:
+    mob.status['wait'] = not mob.status.get('wait', False)
+    if mob.status['wait']:
         return True
     return False
 
@@ -79,6 +86,7 @@
     def __init__(self, (x, y)):
         self.pos = x, y
         self.hp = self.max_hp
+        self.status = {}
 
     def make_sprite(self, tiles):
         sprite = self.Sprite(tiles, self.pos, self.animation)
@@ -92,6 +100,7 @@
 
     def hit(self, level, attacker):
         self.hp -= 1
+        self.status['asleep'] = False
         if self.hp <= 0:
             level.kill(self)
         return True
@@ -108,7 +117,7 @@
     name = 'purple jelly'
     color = 1
     animation = [46, 46, 47, 47, 47, 47]
-    behaviors = [attack_behavior, wander_behavior]
+    behaviors = [attack_behavior, sleep_behavior, wander_behavior]
 
 
 class RedJelly(Mob):