# HG changeset patch # User Neil Muller # Date 1302447785 -7200 # Node ID 79a9b61e12ffb61fe02e600b3db871039b48713c # Parent 30893ffec6f7f5f32ed81740ee72686dfacc4b9f Magical appearing and disappearing Kaneda diff -r 30893ffec6f7 -r 79a9b61e12ff data/game.json --- 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" }, diff -r 30893ffec6f7 -r 79a9b61e12ff data/sprites/kaneda/kaneda_invisible.png Binary file data/sprites/kaneda/kaneda_invisible.png has changed diff -r 30893ffec6f7 -r 79a9b61e12ff skaapsteker/sprites/npcs.py --- 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'