changeset 587:79a9b61e12ff

Magical appearing and disappearing Kaneda
author Neil Muller <drnlmuller@gmail.com>
date Sun, 10 Apr 2011 17:03:05 +0200
parents 30893ffec6f7
children 491fd518f148
files data/game.json data/sprites/kaneda/kaneda_invisible.png skaapsteker/sprites/npcs.py
diffstat 3 files changed, 27 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/data/game.json	Sun Apr 10 17:02:45 2011 +0200
+++ b/data/game.json	Sun Apr 10 17:03:05 2011 +0200
@@ -165,8 +165,8 @@
         "sasuke": { "type": "Sasuke", "level": "road", "pos": [54, 8], "dsm": "npcs/sasuke.json", "state": "start", "present": true},
         "kaneda2": { "type": "Kaneda", "level": "tea_house", "pos": [6, 10], "dsm": "npcs/kaneda2.json", "state": "start", "facing": "right", "present": true },
         "tetsuo": { "type": "Tetsuo", "level": "tea_house", "pos": [9, 10], "dsm": "npcs/tetsuo.json", "state": "start", "facing": "left" },
-        "kaneda": { "type": "Kaneda", "level": "geisha_room", "pos": [10, 3], "dsm": "npcs/kaneda.json", "state": "start", "facing": "left", "present": false },
-        "kumiko": { "type": "Kumiko", "level": "geisha_room", "pos": [11, 13], "dsm": "npcs/kumiko.json", "state": "start" },
+        "kaneda": { "type": "Kaneda", "level": "geisha_room", "pos": [13, 13], "dsm": "npcs/kaneda.json", "state": "start", "facing": "left", "present": false },
+        "kumiko": { "type": "Kumiko", "level": "geisha_room", "pos": [8, 13], "dsm": "npcs/kumiko.json", "state": "start", "facking": "left" },
         "maneki": { "type": "Maneki", "level": "market", "pos": [35, 6], "dsm": "npcs/maneki.json", "state": "start" },
         "fishmonger": { "type": "FishMonger", "level": "fishmonger_house", "pos": [23, 5], "dsm": "npcs/fishmonger.json", "state": "start" },
         "actor": { "type": "Actor", "level": "theatre", "pos": [12, 9], "dsm": "npcs/actor.json", "state": "start" },
Binary file data/sprites/kaneda/kaneda_invisible.png has changed
--- a/skaapsteker/sprites/npcs.py	Sun Apr 10 17:02:45 2011 +0200
+++ b/skaapsteker/sprites/npcs.py	Sun Apr 10 17:03:05 2011 +0200
@@ -57,15 +57,21 @@
 
     animation_regexes = [
         ("standing", r"^.*_standing.png$"),
+        ("invisible", r"^.*_invisible.png$"),
     ]
 
     facings = {
             'standing' : (('left', None),
                 ('right', lambda x: transform.flip(x, True, False))),
+            'invisible' : (('left', None),
+                ('right', lambda x: transform.flip(x, True, False))),
                 }
 
     def setup(self, name, world, dsm, state, present, facing=None):
         super(Kaneda, self).setup(name, world, dsm, state, facing)
+        if not self._me.present and self._me.level == "geisha_room":
+            self._animation = 'invisible'
+            self._update_image()
 
     def player_action(self, player):
         if not self._me.present:
@@ -73,11 +79,15 @@
         super(Kaneda, self).player_action(player)
 
     def update(self):
-        super(Kaneda, self).update()
-        if not self._me.present and self.alive and self._me.level == "tea_house":
+        if not self._me.present and self.alive() and self._me.level == "tea_house":
             self.remove()
+        if self.world.missions.kumikos_kimono_torn and self.world.missions.fish_in_room and self.world.items.vase.broken and not self._me.present:
+            self._me.present = True
+            self._animation = 'standing'
+            self._update_image()
         elif self.world.missions.kumiko_disgraced and self.alive and self._me.level == 'geisha_room':
             self.remove()
+        super(Kaneda, self).update()
 
 
 class Tetsuo(NPC):
@@ -98,10 +108,17 @@
 class Kumiko(NPC):
     image_dir = 'sprites/geisha'
 
+    wants_updates = True
+
     animation_regexes = [
         ("standing", r"^.*_01.png$"),
     ]
 
+    facings = {
+            'standing' : (('left', None),
+                ('right', lambda x: transform.flip(x, True, False))),
+                }
+
     collides_with = set([PC_LAYER])
 
     def damage(self, damage):
@@ -112,6 +129,12 @@
                     "- you've made a great big tear in my finest silk kimono."
                     "What will the businessman think of a ragged dress like this?")
 
+    def update(self):
+        if self.world.missions.kumikos_kimono_torn and self.world.missions.fish_in_room and self.world.items.vase.broken:
+            self.facing = "right"
+        super(Kumiko, self).update()
+
+
 
 class FishMonger(NPC):
     image_dir = 'sprites/fishmonger'