diff --git a/commands/misc.py b/commands/misc.py index 90bcd1d..0dad4d2 100755 --- a/commands/misc.py +++ b/commands/misc.py @@ -98,12 +98,26 @@ class CmdLight(Command): return burnables = lighter.search(item, location=lighter, quiet=True) + in_room = lighter.search(item, quiet=True) + if burnables and len(burnables) > 0: to_burn = burnables[0] if to_burn.has_method("do_light"): to_burn.do_light(self.caller) else: lighter.msg(f"The {burnables[0].key} isn't flammable.") + + # What a weird exception is this ... + elif in_room and len(in_room) > 0: + to_light = in_room[0] + if to_light.is_typeclass("typeclasses.pets.Fire"): + if to_light.db.hunger_level == 0: + to_light.feed(lighter, 100) + else: + lighter.msg(f"The fire has been started. Perhaps you should |gfeed|n it some wood?") + else: + lighter.msg(f"The {to_light.key} isn't flammable.") + else: lighter.msg(f"Can't find {item}.") diff --git a/typeclasses/things.py b/typeclasses/things.py index 5e766d5..d8b513f 100755 --- a/typeclasses/things.py +++ b/typeclasses/things.py @@ -248,7 +248,7 @@ class Dice(Object): "." + prepend) -class Pipe(LightSource): +class Pipe(Object): """ Simple abstraction for lighting and smoking actions. @@ -260,11 +260,27 @@ class Pipe(LightSource): """ def at_object_creation(self): self.cmdset.add_default(CmdSetSmoke) + self.db.is_giving_light = False + + def _burnout(self): + self.db.is_giving_light = False + # Do we want to announce that the pipe is out? + # self.location.msg("Your pipeweed is out.") + self.location.location.check_light_state() def do_light(self, lighter): + self.db.is_giving_light = True + msg = choices(self.db.light_msg or f"$You() $conj(pack) and $conj(light) $pron(your) {self.name}.") lighter.announce_action(msg) - self.db.is_giving_light = True + + try: + self.location.location.check_light_state() + except AttributeError: + pass + finally: + self.deferred = delay(60 * 3, self._burnout) + def do_smoke(self, smoker): msg = choices(self.db.smoke_msg or f"$You() << $conj(lean) back and ^ >> << $conj(puff) ^ $conj(smoke) >> $pron(your) {self.name}.")