A WIP Evennia escape room themed MUD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

52 lines
1.7 KiB

"""
Room
Rooooooms
"""
from evennia import DefaultRoom
from evennia import DefaultObject
from evennia.locks.lockhandler import check_lockstring
from evennia.utils.utils import list_to_string
class Room(DefaultRoom):
def check_perm(self, caller, permission):
return check_lockstring(caller, f"dummy:perm({permission})")
def return_appearance(self, looker, exclude=(), **kwargs):
"""
This is called whenever someone runs the 'look' command.
Args:
looker (Object): Object doing the looking.
**kwargs (dict): Arbitrary, optional arguments for users
overriding the call (unused by default).
"""
output = f"{self.db.desc}"
users, other_objs = [], []
contents = self.contents
if exclude:
contents = list(set(contents) - set(exclude))
for obj in contents:
if obj.id == looker.id:
continue
obj_name = obj.get_numbered_name(1, looker)[0]
if obj.is_connected:
users.append(obj.get_display_name(looker))
if not obj.destination and not obj.has_account and not obj.db.immovable:
other_objs.append(obj_name)
if users:
output += f"\nThese people are here: {list_to_string(users)}"
if other_objs:
output += f"\nYou also see: {list_to_string(other_objs)}"
admin_only_objs = []
if self.check_perm(looker, 'Admin'):
for obj in contents:
if obj.id != looker.id:
admin_only_objs.append(obj.get_display_name(looker))
if admin_only_objs:
output += f"\n\n|xAdmin only: {list_to_string(admin_only_objs)}"
return output