# HG changeset patch # User Jeremy Thurgood # Date 1302390854 -7200 # Node ID b7f912705adb26391e3d6fdebd0951839582e064 # Parent 366e58e8d057e4120fbd10b2a1c3ee345f28f061 Fishmonger now mongers fish. diff -r 366e58e8d057 -r b7f912705adb data/game.json --- a/data/game.json Sun Apr 10 01:09:37 2011 +0200 +++ b/data/game.json Sun Apr 10 01:14:14 2011 +0200 @@ -19,6 +19,7 @@ "masks_destroyed": false, "fire_started_on_road": false, "cannon_destroyed": false, + "fishmonger_demons_killed": 0, "all_fishmonger_demons_dead": false, "kanedas_agreement_disrupted": false, "final_battle_lost": false, diff -r 366e58e8d057 -r b7f912705adb data/levels/fishmonger_house.json --- a/data/levels/fishmonger_house.json Sun Apr 10 01:09:37 2011 +0200 +++ b/data/levels/fishmonger_house.json Sun Apr 10 01:14:14 2011 +0200 @@ -21,21 +21,21 @@ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ], "enemies": [ - {"type": "PatrollingOni", "pos": [2, 7], "direction": "right" }, - {"type": "PatrollingOni", "pos": [45, 7], "direction": "right" }, - {"type": "PatrollingOni", "pos": [37, 10], "direction": "left" }, - {"type": "FlyingOni", "pos": [8, 2], "direction": "left" }, - {"type": "FlyingOni", "pos": [20, 2], "direction": "right" }, - {"type": "FlyingOni", "pos": [27, 2], "direction": "left" }, - {"type": "FlyingOni", "pos": [39, 2], "direction": "right" }, - {"type": "RedOni", "pos": [6, 5], "direction": "left" }, - {"type": "RedOni", "pos": [5, 9], "direction": "right" }, - {"type": "RedOni", "pos": [14, 3], "direction": "left" }, - {"type": "RedOni", "pos": [15, 7], "direction": "right" }, - {"type": "RedOni", "pos": [33, 3], "direction": "left" }, - {"type": "RedOni", "pos": [32, 7], "direction": "right" }, - {"type": "RedOni", "pos": [41, 5], "direction": "left" }, - {"type": "RedOni", "pos": [42, 9], "direction": "right" } + {"type": "PatrollingOni", "pos": [2, 7], "direction": "right", "fishmonger_count": true }, + {"type": "PatrollingOni", "pos": [45, 7], "direction": "right", "fishmonger_count": true }, + {"type": "PatrollingOni", "pos": [37, 10], "direction": "left", "fishmonger_count": true }, + {"type": "FlyingOni", "pos": [8, 2], "direction": "left", "fishmonger_count": true }, + {"type": "FlyingOni", "pos": [20, 2], "direction": "right", "fishmonger_count": true }, + {"type": "FlyingOni", "pos": [27, 2], "direction": "left", "fishmonger_count": true }, + {"type": "FlyingOni", "pos": [39, 2], "direction": "right", "fishmonger_count": true }, + {"type": "RedOni", "pos": [6, 5], "direction": "left", "fishmonger_count": true }, + {"type": "RedOni", "pos": [5, 9], "direction": "right", "fishmonger_count": true }, + {"type": "RedOni", "pos": [14, 3], "direction": "left", "fishmonger_count": true }, + {"type": "RedOni", "pos": [15, 7], "direction": "right", "fishmonger_count": true }, + {"type": "RedOni", "pos": [33, 3], "direction": "left", "fishmonger_count": true }, + {"type": "RedOni", "pos": [32, 7], "direction": "right", "fishmonger_count": true }, + {"type": "RedOni", "pos": [41, 5], "direction": "left", "fishmonger_count": true }, + {"type": "RedOni", "pos": [42, 9], "direction": "right", "fishmonger_count": true } ], "doorways": { "starting": {"type": "Doorway", "pos": [10, 10], "facing": "right", "leadsto": "market.to_fishmonger_house"} diff -r 366e58e8d057 -r b7f912705adb data/npcs/fishmonger.json --- a/data/npcs/fishmonger.json Sun Apr 10 01:09:37 2011 +0200 +++ b/data/npcs/fishmonger.json Sun Apr 10 01:14:14 2011 +0200 @@ -1,10 +1,12 @@ { "start" : { + "text": "Help! I am beset by demons!", "events" : [ - { "matches" : "world.missions.all_fishmonger_demons_dead", "next": "state.saved" } + { "matches" : "world.missions.fishmonger_demons_killed >= 15", "next": "state.saved" } ] }, "saved" : { + "on_entry": "world.missions.all_fishmonger_demons_dead = True", "text" : "Thank the deities, I am saved! If you ever need some fish, my fox friend, I’m your man.", "auto_next": "state.salmon" }, @@ -13,5 +15,6 @@ "auto_next": "state.happy" }, "happy" : { + "on_entry": "drop_item('salmon')" } } \ No newline at end of file diff -r 366e58e8d057 -r b7f912705adb skaapsteker/levelscene.py --- a/skaapsteker/levelscene.py Sun Apr 10 01:09:37 2011 +0200 +++ b/skaapsteker/levelscene.py Sun Apr 10 01:14:14 2011 +0200 @@ -13,7 +13,7 @@ from . import physics from . import constants from . import data -from .sprites import player +from .sprites import player, base from .widgets.text import Text from .widgets.bubble import DialogueWidget, NotificationWidget @@ -58,6 +58,9 @@ self._tails[tail] = (grey_image, image) for sprite in self._level.sprites: + # XXX: NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO! + if isinstance(sprite, base.Monster): + sprite.world = game_state.world self._world.add(sprite) npcs_and_items = game_state.create_sprites(self._level.name) self._npcs = dict((s.name, s) for s in npcs_and_items if hasattr(s, 'dsm')) diff -r 366e58e8d057 -r b7f912705adb skaapsteker/sprites/base.py --- a/skaapsteker/sprites/base.py Sun Apr 10 01:09:37 2011 +0200 +++ b/skaapsteker/sprites/base.py Sun Apr 10 01:14:14 2011 +0200 @@ -159,6 +159,9 @@ self._done_attack = False self.setup(**opts) + def setup(self, fishmonger_count=False): + self.fishmonger_count = fishmonger_count + def collided_player(self, player): self.start_attack(player) @@ -212,6 +215,8 @@ if self.health <= 0: AddSpriteEvent.post(Skeleton(self.rect.midbottom)) self.kill() + if self.fishmonger_count: + self.world.missions.fishmonger_demons_killed += 1 class PatrollingMonster(Monster): """Monster that collides with horizontal geography""" @@ -276,6 +281,7 @@ def setup(self, name, world, dsm, state, facing=None): self.name = name + self.world = world self.dsm = dialogue.DSM(name, world, dsm, state) self._me = getattr(world.npcs, self.name) self.facing = facing diff -r 366e58e8d057 -r b7f912705adb skaapsteker/sprites/enemies.py --- a/skaapsteker/sprites/enemies.py Sun Apr 10 01:09:37 2011 +0200 +++ b/skaapsteker/sprites/enemies.py Sun Apr 10 01:14:14 2011 +0200 @@ -16,7 +16,8 @@ ('right', lambda x: transform.flip(x, True, False))), } - def setup(self, direction): + def setup(self, direction, **opts): + super(RedOni, self).setup(**opts) self.facing = direction def start_attack(self, player): @@ -43,8 +44,8 @@ patrol_velocity = (0, 200) - def setup(self, direction): - PatrollingOni.setup(self, direction) + def setup(self, **opts): + super(PatrollingOni, self).setup(**opts) self.heading = 'up' def update(self): diff -r 366e58e8d057 -r b7f912705adb skaapsteker/sprites/npcs.py --- a/skaapsteker/sprites/npcs.py Sun Apr 10 01:09:37 2011 +0200 +++ b/skaapsteker/sprites/npcs.py Sun Apr 10 01:14:14 2011 +0200 @@ -96,6 +96,10 @@ ("standing", r"^.*_standing.png$"), ] + def setup(self, **opts): + super(FishMonger, self).setup(**opts) + self.world.missions.fishmonger_demons_killed = 0 + class Maneki(NPC): image_dir = 'sprites/maneki neko'