moss-n-puddles/typeclasses/exits.py
Howard Abrams 0850301c65 We can knock on a door.
And a number of bugs squashed.
2025-02-11 21:09:23 -08:00

42 lines
1.3 KiB
Python

"""
Exits
Exits are connectors between Rooms. An exit always has a destination property
set and has a single command defined on itself with the same name as its key,
for allowing Characters to traverse the exit to its destination.
"""
from evennia.objects.objects import DefaultExit
from .objects import ObjectParent
from commands.take import CmdSetKnock
class Exit(ObjectParent, DefaultExit):
"""
Exits are connectors between rooms. Exits are normal Objects except
they defines the `destination` property and overrides some hooks
and methods to represent the exits.
See mygame/typeclasses/objects.py for a list of
properties and methods available on all Objects child classes like this.
"""
def at_traverse(self, traveler, destination):
pre_check = traveler.at_pre_move(destination)
if pre_check:
if self.db.traverse_msg:
traveler.msg(f"\n{self.db.traverse_msg}\n\n")
return super().at_traverse(traveler, destination)
else:
return False
class KnockableExit(Exit):
def at_object_creation(self):
self.cmdset.add_default(CmdSetKnock)
def do_knock(self, knocker):
knocker.msg("You knock.")
self.location.msg_contents(f"{knocker.name} knocks on {self.key}.",
exclude=knocker)