From 6354f0d85ce38a5450142b2bc775e49f0abfc7b8 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Thu, 3 Dec 2020 06:17:43 +0100 Subject: [PATCH] Add BottleDeposit thing that spawns MusicPlayers for returned Bottles. --- plomrogue/tasks.py | 12 ++++++++++++ plomrogue/things.py | 26 +++++++++++++++++++++++++- rogue_chat.py | 4 +++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/plomrogue/tasks.py b/plomrogue/tasks.py index eca9400..423758d 100644 --- a/plomrogue/tasks.py +++ b/plomrogue/tasks.py @@ -103,8 +103,20 @@ class Task_DROP(Task): def check(self): if not self.thing.carrying: raise PlayError('nothing to drop') + if self.thing.carrying.type_ == 'Bottle' and self.thing.carrying.full: + for t in [t for t in self.thing.game.things + if t.type_ == 'BottleDeposit' + and t.position == self.thing.position]: + raise PlayError('cannot drop full bottle into bottle deposit') def do(self): + if self.thing.carrying.type_ == 'Bottle' and not self.thing.carrying.full: + for t in [t for t in self.thing.game.things + if t.type_ == 'BottleDeposit' + and t.position == self.thing.position]: + t.accept() + self.thing.game.things.remove(self.thing.carrying) + break self.thing.carrying = None diff --git a/plomrogue/things.py b/plomrogue/things.py index 67a3807..30cd2bf 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -158,7 +158,6 @@ class Thing_MusicPlayer(Thing): symbol_hint = 'R' commandable = True portable = True - playlist = [] repeat = True next_song_start = datetime.datetime.now() playlist_index = 0 @@ -167,6 +166,7 @@ class Thing_MusicPlayer(Thing): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.next_song_start = datetime.datetime.now() + self.playlist = [] def proceed(self): if (not self.playing) or len(self.playlist) == 0: @@ -250,6 +250,30 @@ class Thing_MusicPlayer(Thing): +class Thing_BottleDeposit(Thing): + bottle_counter = 0 + symbol_hint = 'O' + + def proceed(self): + if self.bottle_counter >= 3: + self.bottle_counter = 0 + t = self.game.thing_types['MusicPlayer'](self.game, + position=self.position) + self.game.things += [t] + self.sound('BOTTLE DEPOSITOR', + 'here is a gift as a reward for ecological consciousness –' + 'use "command thing" on it to learn more!') + self.game.changed = True + + def accept(self): + self.bottle_counter += 1 + self.sound('BOTTLE DEPOSITOR', + 'thanks for this empty bottle – deposit %s more for a gift!' % + (3 - self.bottle_counter)) + + + + class ThingAnimate(Thing): blocking = True drunk = 0 diff --git a/rogue_chat.py b/rogue_chat.py index cb3080d..4509d33 100755 --- a/rogue_chat.py +++ b/rogue_chat.py @@ -19,7 +19,8 @@ from plomrogue.tasks import (Task_WAIT, Task_MOVE, Task_WRITE, Task_PICK_UP, from plomrogue.things import (Thing_Player, Thing_Item, Thing_ItemSpawner, Thing_SpawnPoint, Thing_SpawnPointSpawner, Thing_Door, Thing_DoorSpawner, Thing_Bottle, - Thing_BottleSpawner, Thing_MusicPlayer) + Thing_BottleSpawner, Thing_BottleDeposit, + Thing_MusicPlayer) from plomrogue.config import config game = Game(config['savefile']) @@ -73,6 +74,7 @@ game.register_thing_type(Thing_Door) game.register_thing_type(Thing_DoorSpawner) game.register_thing_type(Thing_Bottle) game.register_thing_type(Thing_BottleSpawner) +game.register_thing_type(Thing_BottleDeposit) game.register_thing_type(Thing_MusicPlayer) game.read_savefile() game.io.start_loop() -- 2.30.2