Room class and mechanics for the Evscaperoom.

This is a special room class that not only depicts the evscaperoom itself, it also acts as a central store for the room state, score etc. When deleting this, that particular escaperoom challenge should be gone.

class evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom(*args, **kwargs)[source]

Bases: evennia.contrib.full_systems.evscaperoom.objects.EvscaperoomObject, evennia.objects.objects.DefaultRoom

The room to escape from.


Called once, when the room is first created.

property state
log(message, caller=None)[source]

Log to a file specificially for this room.

score(new_score, reason)[source]

We don’t score individually but for everyone in room together. You can only be scored for a given reason once.


Progress is what we set it to be (0-100%)

achievement(caller, achievement, subtext='')[source]

Give the caller a personal achievment. You will only ever get one of the same type

  • caller (Object) – The receiver of the achievement.

  • achievement (str) – The title/name of the achievement.

  • subtext (str, optional) – Eventual subtext/explanation of the achievement.


Get the player characters in the room.


chars (Queryset) – The characters.


Set flag on object


Unset flag on object


Check if flag is set on this object

check_perm(caller, permission)[source]
tag_character(character, tag, category=None)[source]

Tag a given character in this room.

  • character (Character) – Player character to tag.

  • tag (str) – Tag to set.

  • category (str, optional) – Tag-category. If unset, use room’s tagcategory.

tag_all_characters(tag, category=None)[source]

Set a given tag on all players in the room.

  • room (EvscapeRoom) – The room to escape from.

  • tag (str) – The tag to set.

  • category (str, optional) – If unset, will use the room’s tagcategory.


Clean all custom tags/attrs on a character.


Have a character exit the room - return them to the room menu.

at_object_receive(moved_obj, source_location, move_type='move', **kwargs)[source]

Called when an object arrives in the room. This can be used to sum up the situation, set tags etc.

at_object_leave(moved_obj, target_location, move_type='move', **kwargs)[source]

Called when an object leaves the room; if this is a Character we need to clean them up and move them to the menu state.


Delete this room and all items related to it. Only move the players.

return_appearance(looker, **kwargs)[source]

Could be modified per state. We generally don’t worry about the contents of the object by default.

exception DoesNotExist

Bases: evennia.contrib.full_systems.evscaperoom.objects.EvscaperoomObject.DoesNotExist, evennia.objects.objects.DefaultRoom.DoesNotExist

exception MultipleObjectsReturned

Bases: evennia.contrib.full_systems.evscaperoom.objects.EvscaperoomObject.MultipleObjectsReturned, evennia.objects.objects.DefaultRoom.MultipleObjectsReturned

path = 'evennia.contrib.full_systems.evscaperoom.room.EvscapeRoom'
typename = 'EvscapeRoom'