# evennia.contrib.full_systems.evscaperoom.state

States represent the sequence of states the room goes through.

This module includes the BaseState class and the StateHandler for managing states on the room.

The state handler operates on an Evscaperoom and changes its state from one to another.

A given state is given as a module in states/ package. The state is identified by its module name.

class `evennia.contrib.full_systems.evscaperoom.state.``StateHandler`(room)

  Bases: `object`

  This sits on the room and is used to progress through the states.

  `__init__`(room)

    Initialize self. See help(type(self)) for accurate signature.

  `load_state`(statename)

    Load state without initializing it

  `init_state`()

    Initialize a new state

  `next_state`(next_state=None)

    Check if the current state is finished. This should be called whenever the players do actions that may affect the state of the room.

    Parameters

      next_state (str, optional) – If given, override the next_state given by the current state’s check() method with this - this allows for branching paths (but the current state must still first agree that the check passes).

    Returns

      state_changed (bool) – True if the state changed, False otherwise.

class `evennia.contrib.full_systems.evscaperoom.state.``BaseState`(handler, room)

  Bases: `object`

  Base object holding all callables for a state. This is here to allow easy overriding for child states.

  `next_state` = 'unset'
  `hints` = []
  `__init__`(handler, room)

    Initializer.

    Parameters

      - room (EvscapeRoom) – The room tied to this state.

      - handler (StateHandler) – Back-reference to the handler storing this state.

  `get_hint`()

    Get a hint for how to solve this state.

  `msg`(message, target=None, borders=False, cinematic=False)

    Display messsage to everyone in room, or given target.

  `cinematic`(message, target=None)

    Display a ‘cinematic’ sequence - centered, with borders.

  `create_object`(typeclass=None, key='testobj', location=None, **kwargs)

    This is a convenience-wrapper for quickly building EvscapeRoom objects.

    Keyword Arguments

      - typeclass (str) – This can take just the class-name in the evscaperoom’s objects.py module. Otherwise, a full path or the actual class is needed (for custom state objects, just give the class directly).

      - key (str) – Name of object.

      - location (Object) – If not given, this will be the current room.

      - kwargs (any) – Will be passed into create_object.

    Returns

      new_obj (Object) – The newly created object, if any.

  `get_object`(key)

    Find a named non-character object for this state in this room.

    Parameters

      key (str) – Object to search for.

    Returns

      obj (Object) – Object in the room.

  `init`()

    Initializes the state (usually by modifying the room in some way)

  `clean`()

    Any cleanup operations after the state ends.

  `next`(next_state=None)

    Get the next state after this one.

    Parameters

      next_state (str, optional) – This allows the calling code to redirect to a different state than the ‘default’ one (creating branching paths in the game). Override this method to customize (by default the input will always override default set on the class)

    Returns

      state_name (str or None) –

      Name of next state to switch to. None

        to remain in this state. By default we check the room for the “finished” flag be set.

  `character_enters`(character)

    Called when character enters the room in this state.

  `character_leaves`(character)

    Called when character is whisked away (usually because of quitting). This method cannot influence the move itself; it happens just before room.character_cleanup()