<h1>Contribs<aclass="headerlink"href="#contribs"title="Permalink to this headline">¶</a></h1>
<asideclass="sidebar">
<pclass="sidebar-title">More contributions</p>
<p>Additional Evennia code snippets and contributions can be found
in the <aclass="reference external"href="https://github.com/evennia/evennia/discussions/categories/community-contribs-snippets">Community Contribs & Snippets</a> forum.</p>
</aside>
<p><em>Contribs</em> are optional code snippets and systems contributed by
the Evennia community. They vary in size and complexity and
may be more specific about game types and styles than ‘core’ Evennia.
<p>Each contrib contains installation instructions for how to integrate it
with your other code. If you want to tweak the code of a contrib, just
copy its entire folder to your game directory and modify/use it from there.</p>
<p>If you want to add a contrib, see <aclass="reference internal"href="Contribs-Guidelines.html"><spanclass="doc std std-doc">the contrib guidelines</span></a>!</p>
<sectionid="index">
<h2>Index<aclass="headerlink"href="#index"title="Permalink to this headline">¶</a></h2>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">awsstorage</span></code><aclass="headerlink"href="#awsstorage"title="Permalink to this headline">¶</a></h3>
<p><em>Contrib by The Right Honourable Reverend (trhr), 2020</em></p>
<p>This plugin migrates the Web-based portion of Evennia, namely images,
javascript, and other items located inside staticfiles into Amazon AWS (S3)
cloud hosting. Great for those serving media with the game.</p>
<p><aclass="reference internal"href="Contrib-AWSStorage.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.base_systems.awsstorage.html#evennia-contrib-base-systems-awsstorage"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="building-menu">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">building_menu</span></code><aclass="headerlink"href="#building-menu"title="Permalink to this headline">¶</a></h3>
<p><em>Contrib by vincent-lg, 2018</em></p>
<p>Building menus are in-game menus, not unlike <codeclass="docutils literal notranslate"><spanclass="pre">EvMenu</span></code> though using a
different approach. Building menus have been specifically designed to edit
information as a builder. Creating a building menu in a command allows
builders quick-editing of a given object, like a room. If you follow the
steps to add the contrib, you will have access to an <codeclass="docutils literal notranslate"><spanclass="pre">edit</span></code> command
that will edit any default object, offering to change its key and description.</p>
<p><aclass="reference internal"href="Contrib-Building-Menu.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.base_systems.building_menu.html#evennia-contrib-base-systems-building-menu"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="color-markups">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">color_markups</span></code><aclass="headerlink"href="#color-markups"title="Permalink to this headline">¶</a></h3>
<p><em>Contrib by Griatch, 2017</em></p>
<p>Additional color markup styles for Evennia (extending or replacing the default
<codeclass="docutils literal notranslate"><spanclass="pre">|r</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">|234</span></code>). Adds support for MUSH-style (<codeclass="docutils literal notranslate"><spanclass="pre">%cr</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">%c123</span></code>) and/or legacy-Evennia
<p><aclass="reference internal"href="Contrib-Color-Markups.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.base_systems.color_markups.html#evennia-contrib-base-systems-color-markups"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="components">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">components</span></code><aclass="headerlink"href="#components"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">custom_gametime</span></code><aclass="headerlink"href="#custom-gametime"title="Permalink to this headline">¶</a></h3>
<p><em>Contrib by vlgeoff, 2017 - based on Griatch’s core original</em></p>
<p>This reimplements the <codeclass="docutils literal notranslate"><spanclass="pre">evennia.utils.gametime</span></code> module but with a <em>custom</em>
calendar (unusual number of days per week/month/year etc) for your game world.
Like the original, it allows for scheduling events to happen at given
in-game times, but now taking this custom calendar into account.</p>
<p><aclass="reference internal"href="Contrib-Custom-Gametime.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.base_systems.custom_gametime.html#evennia-contrib-base-systems-custom-gametime"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">email_login</span></code><aclass="headerlink"href="#email-login"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">godotwebsocket</span></code><aclass="headerlink"href="#godotwebsocket"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">ingame_python</span></code><aclass="headerlink"href="#ingame-python"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">menu_login</span></code><aclass="headerlink"href="#menu-login"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">mux_comms_cmds</span></code><aclass="headerlink"href="#mux-comms-cmds"title="Permalink to this headline">¶</a></h3>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">unixcommand</span></code><aclass="headerlink"href="#unixcommand"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Vincent Le Geoff (vlgeoff), 2017</em></p>
<p>This module contains a command class with an alternate syntax parser implementing
Unix-style command syntax in-game. This means <codeclass="docutils literal notranslate"><spanclass="pre">--options</span></code>, positional arguments
and stuff like <codeclass="docutils literal notranslate"><spanclass="pre">-n</span><spanclass="pre">10</span></code>. It might not the best syntax for the average player
but can be really useful for builders when they need to have a single command do
many things with many options. It uses the <codeclass="docutils literal notranslate"><spanclass="pre">ArgumentParser</span></code> from Python’s standard
library under the hood.</p>
<p><aclass="reference internal"href="Contrib-Unixcommand.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.base_systems.unixcommand.html#evennia-contrib-base-systems-unixcommand"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">evscaperoom</span></code><aclass="headerlink"href="#evscaperoom"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2019</em></p>
<p>A full engine for creating multiplayer escape-rooms in Evennia. Allows players to
spawn and join puzzle rooms that track their state independently. Any number of players
can join to solve a room together. This is the engine created for ‘EvscapeRoom’, which won
the MUD Coders Guild “One Room” Game Jam in April-May, 2019. The contrib has no game
content but contains the utilities and base classes and an empty example room.</p>
<p><aclass="reference internal"href="Contrib-Evscaperoom.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.full_systems.evscaperoom.html#evennia-contrib-full-systems-evscaperoom"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
</section>
<sectionid="game-systems">
<h2>game_systems<aclass="headerlink"href="#game-systems"title="Permalink to this headline">¶</a></h2>
<p><em>In-game gameplay systems like crafting, mail, combat and more.
Each system is meant to be adopted piecemeal and adopted for your game.
This does not include roleplaying-specific systems, those are found in
the <codeclass="docutils literal notranslate"><spanclass="pre">rpg</span></code> category.</em></p>
<liclass="toctree-l1"><aclass="reference internal"href="Contrib-Turnbattle.html">Turn based battle system framework</a></li>
</ul>
</div>
<sectionid="barter">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">barter</span></code><aclass="headerlink"href="#barter"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2012</em></p>
<p>This implements a full barter system - a way for players to safely
trade items between each other in code rather than simple <codeclass="docutils literal notranslate"><spanclass="pre">give/get</span></code>
commands. This increases both safety (at no time will one player have
both goods and payment in-hand) and speed, since agreed goods will
be moved automatically). By just replacing one side with coin objects,
(or a mix of coins and goods), this also works fine for regular money
transactions.</p>
<p><aclass="reference internal"href="Contrib-Barter.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.barter.html#evennia-contrib-game-systems-barter"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="clothing">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">clothing</span></code><aclass="headerlink"href="#clothing"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tim Ashley Jenkins, 2017</em></p>
<p>Provides a typeclass and commands for wearable clothing. These
look of these clothes are appended to the character’s description when worn.</p>
<p><aclass="reference internal"href="Contrib-Clothing.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.clothing.html#evennia-contrib-game-systems-clothing"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">containers</span></code><aclass="headerlink"href="#containers"title="Permalink to this headline">¶</a></h3>
<p><em>Adds the ability to put objects into other container objects by providing a container typeclass and extending certain base commands.</em></p>
</section>
</section>
<sectionid="installation">
<h2>Installation<aclass="headerlink"href="#installation"title="Permalink to this headline">¶</a></h2>
<p><aclass="reference internal"href="Contrib-Containers.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.containers.html#evennia-contrib-game-systems-containers"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">cooldowns</span></code><aclass="headerlink"href="#cooldowns"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by owllex, 2021</em></p>
<p>Cooldowns are used to model rate-limited actions, like how often a
character can perform a given action; until a certain time has passed their
command can not be used again. This contrib provides a simple cooldown
handler that can be attached to any typeclass. A cooldown is a lightweight persistent
asynchronous timer that you can query to see if a certain time has yet passed.</p>
<p><aclass="reference internal"href="Contrib-Cooldowns.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.cooldowns.html#evennia-contrib-game-systems-cooldowns"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="crafting">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">crafting</span></code><aclass="headerlink"href="#crafting"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2020</em></p>
<p>This implements a full crafting system. The principle is that of a ‘recipe’,
where you combine items (tagged as ingredients) create something new. The recipe can also
require certain (non-consumed) tools. An example would be to use the ‘bread recipe’ to
combine ‘flour’, ‘water’ and ‘yeast’ with an ‘oven’ to bake a ‘loaf of bread’.</p>
<p><aclass="reference internal"href="Contrib-Crafting.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.crafting.html#evennia-contrib-game-systems-crafting"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="gendersub">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">gendersub</span></code><aclass="headerlink"href="#gendersub"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2015</em></p>
<p>This is a simple gender-aware Character class for allowing users to
insert custom markers in their text to indicate gender-aware
messaging. It relies on a modified msg() and is meant as an
inspiration and starting point to how to do stuff like this.</p>
<p><aclass="reference internal"href="Contrib-Gendersub.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.gendersub.html#evennia-contrib-game-systems-gendersub"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="mail">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">mail</span></code><aclass="headerlink"href="#mail"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by grungies1138 2016</em></p>
<p>A simple Brandymail style mail system that uses the <codeclass="docutils literal notranslate"><spanclass="pre">Msg</span></code> class from Evennia
Core. It has two Commands for either sending mails between Accounts (out of game)
or between Characters (in-game). The two types of mails can be used together or
on their own.</p>
<p><aclass="reference internal"href="Contrib-Mail.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.mail.html#evennia-contrib-game-systems-mail"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="multidescer">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">multidescer</span></code><aclass="headerlink"href="#multidescer"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2016</em></p>
<p>A “multidescer” is a concept from the MUSH world. It allows for
changing clothes) in more free-form roleplaying systems. This will also
work well together with the <codeclass="docutils literal notranslate"><spanclass="pre">rpsystem</span></code> contrib.</p>
<p><aclass="reference internal"href="Contrib-Multidescer.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.multidescer.html#evennia-contrib-game-systems-multidescer"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="puzzles">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">puzzles</span></code><aclass="headerlink"href="#puzzles"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Henddher 2018</em></p>
<p>Intended for adventure-game style combination puzzles, such as combining fruits
and a blender to create a smoothie. Provides a typeclass and commands for objects
that can be combined (i.e. used together). Unlike the <codeclass="docutils literal notranslate"><spanclass="pre">crafting</span></code> contrib, each
puzzle is built from unique objects rather than using tags and a builder can create
the puzzle entirely from in-game.</p>
<p><aclass="reference internal"href="Contrib-Puzzles.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.puzzles.html#evennia-contrib-game-systems-puzzles"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="turnbattle">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">turnbattle</span></code><aclass="headerlink"href="#turnbattle"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tim Ashley Jenkins, 2017</em></p>
<p>This is a framework for a simple turn-based combat system, similar
to those used in D&D-style tabletop role playing games. It allows
any character to start a fight in a room, at which point initiative
is rolled and a turn order is established. Each participant in combat
has a limited time to decide their action for that turn (30 seconds by
default), and combat progresses through the turn order, looping through
the participants until the fight ends.</p>
<p><aclass="reference internal"href="Contrib-Turnbattle.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.game_systems.turnbattle.html#evennia-contrib-game-systems-turnbattle"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
</section>
<sectionid="grid">
<h2>grid<aclass="headerlink"href="#grid"title="Permalink to this headline">¶</a></h2>
<p><em>Systems related to the game world’s topology and structure. Contribs related
<h3><codeclass="docutils literal notranslate"><spanclass="pre">extended_room</span></code><aclass="headerlink"href="#extended-room"title="Permalink to this headline">¶</a></h3>
<p>This extends the normal <codeclass="docutils literal notranslate"><spanclass="pre">Room</span></code> typeclass to allow its description to change with
time-of-day and/or season as well as any other state (like flooded or dark).
Embedding <codeclass="docutils literal notranslate"><spanclass="pre">$state(burning,</span><spanclass="pre">This</span><spanclass="pre">place</span><spanclass="pre">is</span><spanclass="pre">on</span><spanclass="pre">fire!)</span></code> in the description will
allow for changing the description based on room state. The room also supports
<codeclass="docutils literal notranslate"><spanclass="pre">details</span></code> for the player to look at in the room (without having to create a new
in-game object for each), as well as support for random echoes. The room
comes with a set of alternate commands for <codeclass="docutils literal notranslate"><spanclass="pre">look</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">@desc</span></code>, as well as new
<p><aclass="reference internal"href="Contrib-Extended-Room.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.extended_room.html#evennia-contrib-grid-extended-room"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="ingame-map-display">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">ingame_map_display</span></code><aclass="headerlink"href="#ingame-map-display"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution - helpme 2022</em></p>
<p>This adds an ascii <codeclass="docutils literal notranslate"><spanclass="pre">map</span></code> to a given room which can be viewed with the <codeclass="docutils literal notranslate"><spanclass="pre">map</span></code> command.
You can easily alter it to add special characters, room colors etc. The map shown is
dynamically generated on use, and supports all compass directions and up/down. Other
directions are ignored.</p>
<p><aclass="reference internal"href="Contrib-Ingame-Map-Display.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.ingame_map_display.html#evennia-contrib-grid-ingame-map-display"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="mapbuilder">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">mapbuilder</span></code><aclass="headerlink"href="#mapbuilder"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Cloud_Keeper 2016</em></p>
<p>Build a game map from the drawing of a 2D ASCII map.</p>
<p><aclass="reference internal"href="Contrib-Mapbuilder.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.mapbuilder.html#evennia-contrib-grid-mapbuilder"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="simpledoor">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">simpledoor</span></code><aclass="headerlink"href="#simpledoor"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2016</em></p>
<p>A simple two-way exit that represents a door that can be opened and
closed from both sides. Can easily be expanded to make it lockable,
destroyable etc.</p>
<p><aclass="reference internal"href="Contrib-Simpledoor.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.simpledoor.html#evennia-contrib-grid-simpledoor"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="slow-exit">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">slow_exit</span></code><aclass="headerlink"href="#slow-exit"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2014</em></p>
<p>An example of an Exit-type that delays its traversal. This simulates
slow movement, common in many games. The contrib also
contains two commands, <codeclass="docutils literal notranslate"><spanclass="pre">setspeed</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">stop</span></code> for changing the movement speed
and abort an ongoing traversal, respectively.</p>
<p><aclass="reference internal"href="Contrib-Slow-Exit.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.slow_exit.html#evennia-contrib-grid-slow-exit"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="wilderness">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">wilderness</span></code><aclass="headerlink"href="#wilderness"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by titeuf87, 2017</em></p>
<p>This contrib provides a wilderness map without actually creating a large number
of rooms - as you move, you instead end up back in the same room but its description
changes. This means you can make huge areas with little database use as
long as the rooms are relatively similar (e.g. only the names/descs changing).</p>
<p><aclass="reference internal"href="Contrib-Wilderness.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.wilderness.html#evennia-contrib-grid-wilderness"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="xyzgrid">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">xyzgrid</span></code><aclass="headerlink"href="#xyzgrid"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2021</em></p>
<p>Places Evennia’s game world on an xy (z being different maps) coordinate grid.
Grid is created and maintained externally by drawing and parsing 2D ASCII maps,
including teleports, map transitions and special markers to aid pathfinding.
Supports very fast shortest-route pathfinding on each map. Also includes a
fast view function for seeing only a limited number of steps away from your
current location (useful for displaying the grid as an in-game, updating map).</p>
<p><aclass="reference internal"href="Contrib-XYZGrid.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.grid.xyzgrid.html#evennia-contrib-grid-xyzgrid"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
</section>
<sectionid="rpg">
<h2>rpg<aclass="headerlink"href="#rpg"title="Permalink to this headline">¶</a></h2>
<p><em>Systems specifically related to roleplaying
and rule implementation like character traits, dice rolling and emoting.</em></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">buffs</span></code><aclass="headerlink"href="#buffs"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tegiminis 2022</em></p>
<p>A buff is a timed object, attached to a game entity. It is capable of modifying values, triggering code, or both.
It is a common design pattern in RPGs, particularly action games.</p>
<p><aclass="reference internal"href="Contrib-Buffs.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.buffs.html#evennia-contrib-rpg-buffs"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="character-creator">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">character_creator</span></code><aclass="headerlink"href="#character-creator"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by InspectorCaracal, 2022</em></p>
<p>Commands for managing and initiating an in-game character-creation menu.</p>
<p><aclass="reference internal"href="Contrib-Character-Creator.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.character_creator.html#evennia-contrib-rpg-character-creator"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="dice">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">dice</span></code><aclass="headerlink"href="#dice"title="Permalink to this headline">¶</a></h3>
(like <codeclass="docutils literal notranslate"><spanclass="pre">roll</span><spanclass="pre">2d10</span><spanclass="pre">+</span><spanclass="pre">1</span></code>) as well as conditionals (roll under/over/equal to a target)
and functions for rolling dice in code. Command also supports hidden or secret
rolls for use by a human game master.</p>
<p><aclass="reference internal"href="Contrib-Dice.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.dice.html#evennia-contrib-rpg-dice"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="health-bar">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">health_bar</span></code><aclass="headerlink"href="#health-bar"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tim Ashley Jenkins, 2017</em></p>
<p>The function provided in this module lets you easily display visual
bars or meters as a colorful bar instead of just a number. A “health bar”
is merely the most obvious use for this, but the bar is highly customizable
and can be used for any sort of appropriate data besides player health.</p>
<p><aclass="reference internal"href="Contrib-Health-Bar.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.health_bar.html#evennia-contrib-rpg-health-bar"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">llm</span></code><aclass="headerlink"href="#llm"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2023</em></p>
<p>This adds an LLMClient that allows Evennia to send prompts to a LLM server (Large Language Model, along the lines of ChatGPT). Example uses a local OSS LLM install. Included is an NPC you can chat with using a new <codeclass="docutils literal notranslate"><spanclass="pre">talk</span></code> command. The NPC will respond using the AI responses from the LLM server. All calls are asynchronous, so if the LLM is slow, Evennia is not affected.</p>
<p><aclass="reference internal"href="Contrib-Llm.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.llm.html#evennia-contrib-rpg-llm"><spanclass="std std-ref">Browse the Code</span></a></p>
<h3><codeclass="docutils literal notranslate"><spanclass="pre">rpsystem</span></code><aclass="headerlink"href="#rpsystem"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2015</em></p>
<p>A full roleplaying emote system. Short-descriptions and recognition (only
know people by their looks until you assign a name to them). Room poses. Masks/disguises
(hide your description). Speak directly in emote, with optional language obscuration
(words get garbled if you don’t know the language, you can also have different languages
with different ‘sounding’ garbling). Whispers can be partly overheard from a distance. A
very powerful in-emote reference system, for referencing and differentiate targets
(including objects).</p>
<p><aclass="reference internal"href="Contrib-RPSystem.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.rpsystem.html#evennia-contrib-rpg-rpsystem"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="traits">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">traits</span></code><aclass="headerlink"href="#traits"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2020, based on code by Whitenoise and Ainneve contribs, 2014</em></p>
<p>A <codeclass="docutils literal notranslate"><spanclass="pre">Trait</span></code> represents a modifiable property on (usually) a Character. They can
be used to represent everything from attributes (str, agi etc) to skills
(hunting 10, swords 14 etc) and dynamically changing things like HP, XP etc.
Traits differ from normal Attributes in that they track their changes and limit
themselves to particular value-ranges. One can add/subtract from them easily and
they can even change dynamically at a particular rate (like you being poisoned or
healed).</p>
<p><aclass="reference internal"href="Contrib-Traits.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.rpg.traits.html#evennia-contrib-rpg-traits"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
</section>
<sectionid="tutorials">
<h2>tutorials<aclass="headerlink"href="#tutorials"title="Permalink to this headline">¶</a></h2>
<p><em>Helper resources specifically meant to teach a development concept or
to exemplify an Evennia system. Any extra resources tied to documentation
tutorials are found here. Also the home of the Tutorial-World and Evadventure
<h3><codeclass="docutils literal notranslate"><spanclass="pre">batchprocessor</span></code><aclass="headerlink"href="#batchprocessor"title="Permalink to this headline">¶</a></h3>
<p><em>Contibution by Griatch, 2012</em></p>
<p>Simple examples for the batch-processor. The batch processor is used for generating
in-game content from one or more static files. Files can be stored with version
control and then ‘applied’ to the game to create content.</p>
<p><aclass="reference internal"href="Contrib-Batchprocessor.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.batchprocessor.html#evennia-contrib-tutorials-batchprocessor"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="bodyfunctions">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">bodyfunctions</span></code><aclass="headerlink"href="#bodyfunctions"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2012</em></p>
<p>Example script for testing. This adds a simple timer that has your
character make small verbal observations at irregular intervals.</p>
<p><aclass="reference internal"href="Contrib-Bodyfunctions.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.bodyfunctions.html#evennia-contrib-tutorials-bodyfunctions"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="evadventure">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">evadventure</span></code><aclass="headerlink"href="#evadventure"title="Permalink to this headline">¶</a></h3>
<p><aclass="reference internal"href="Contrib-Evadventure.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.evadventure.html#evennia-contrib-tutorials-evadventure"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="mirror">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">mirror</span></code><aclass="headerlink"href="#mirror"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2017</em></p>
<p>A simple mirror object to experiment with. It will respond to being looked at.</p>
<p><aclass="reference internal"href="Contrib-Mirror.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.mirror.html#evennia-contrib-tutorials-mirror"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="red-button">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">red_button</span></code><aclass="headerlink"href="#red-button"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch, 2011</em></p>
<p>A red button that you can press to have an effect. This is a more advanced example
object with its own functionality and state tracking.</p>
<p><aclass="reference internal"href="Contrib-Red-Button.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.red_button.html#evennia-contrib-tutorials-red-button"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="talking-npc">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">talking_npc</span></code><aclass="headerlink"href="#talking-npc"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2011. Updated by grungies1138, 2016</em></p>
<p>This is an example of a static NPC object capable of holding a simple menu-driven
conversation. Suitable for example as a quest giver or merchant.</p>
<p><aclass="reference internal"href="Contrib-Talking-Npc.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.talking_npc.html#evennia-contrib-tutorials-talking-npc"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="tutorial-world">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">tutorial_world</span></code><aclass="headerlink"href="#tutorial-world"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Griatch 2011, 2015</em></p>
<p>A stand-alone tutorial area for an unmodified Evennia install.
Think of it as a sort of single-player adventure rather than a
full-fledged multi-player game world. The various rooms and objects
are designed to show off features of Evennia, not to be a
very challenging (nor long) gaming experience. As such it’s of course
only skimming the surface of what is possible. Taking this apart
is a great way to start learning the system.</p>
<p><aclass="reference internal"href="Contrib-Tutorial-World.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.tutorials.tutorial_world.html#evennia-contrib-tutorials-tutorial-world"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
</section>
<sectionid="utils">
<h2>utils<aclass="headerlink"href="#utils"title="Permalink to this headline">¶</a></h2>
<p><em>Miscellaneous, tools for manipulating text, security auditing, and more.</em></p>
<liclass="toctree-l1"><aclass="reference internal"href="Contrib-Name-Generator.html">Random Name Generator</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="Contrib-Random-String-Generator.html">Pseudo-random generator and registry</a></li>
<liclass="toctree-l1"><aclass="reference internal"href="Contrib-Tree-Select.html">Easy menu selection tree</a></li>
</ul>
</div>
<sectionid="auditing">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">auditing</span></code><aclass="headerlink"href="#auditing"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Johnny, 2017</em></p>
<p>Utility that taps and intercepts all data sent to/from clients and the
server and passes it to a callback of your choosing. This is intended for
quality assurance, post-incident investigations and debugging.</p>
<p><aclass="reference internal"href="Contrib-Auditing.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.auditing.html#evennia-contrib-utils-auditing"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="fieldfill">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">fieldfill</span></code><aclass="headerlink"href="#fieldfill"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tim Ashley Jenkins, 2018</em></p>
<p>This module contains a function that generates an <codeclass="docutils literal notranslate"><spanclass="pre">EvMenu</span></code> for you - this
menu presents the player with a form of fields that can be filled
out in any order (e.g. for character generation or building). Each field’s value can
be verified, with the function allowing easy checks for text and integer input,
minimum and maximum values / character lengths, or can even be verified by a custom
function. Once the form is submitted, the form’s data is submitted as a dictionary
to any callable of your choice.</p>
<p><aclass="reference internal"href="Contrib-Fieldfill.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.fieldfill.html#evennia-contrib-utils-fieldfill"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="git-integration">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">git_integration</span></code><aclass="headerlink"href="#git-integration"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by helpme (2022)</em></p>
<p>A module to integrate a stripped-down version of git within the game, allowing developers to view their git status, change branches, and pull updated code of both their local mygame repo and Evennia core. After a successful pull or checkout, the git command will reload the game: Manual restarts may be required to to apply certain changes that would impact persistent scripts etc.</p>
<p><aclass="reference internal"href="Contrib-Git-Integration.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.git_integration.html#evennia-contrib-utils-git-integration"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="name-generator">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">name_generator</span></code><aclass="headerlink"href="#name-generator"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by InspectorCaracal (2022)</em></p>
<p>A module for generating random names, both real-world and fantasy. Real-world
names can be generated either as first (personal) names, family (last) names, or
full names (first, optional middles, and last). The name data is from <aclass="reference external"href="https://www.behindthename.com/">Behind the Name</a>
and used under the <aclass="reference external"href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 license</a>.</p>
<p><aclass="reference internal"href="Contrib-Name-Generator.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.name_generator.html#evennia-contrib-utils-name-generator"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="random-string-generator">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">random_string_generator</span></code><aclass="headerlink"href="#random-string-generator"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Vincent Le Goff (vlgeoff), 2017</em></p>
<p>This utility can be used to generate pseudo-random strings of information
with specific criteria. You could, for instance, use it to generate
passwords and so on. The strings generated will be stored and won’t be repeated.</p>
<p><aclass="reference internal"href="Contrib-Random-String-Generator.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.random_string_generator.html#evennia-contrib-utils-random-string-generator"><spanclass="std std-ref">Browse the Code</span></a></p>
</section>
<sectionid="tree-select">
<h3><codeclass="docutils literal notranslate"><spanclass="pre">tree_select</span></code><aclass="headerlink"href="#tree-select"title="Permalink to this headline">¶</a></h3>
<p><em>Contribution by Tim Ashley Jenkins, 2017</em></p>
<p>This utility allows you to create and initialize an entire branching EvMenu
instance from a multi-line string passed to one function.</p>
<p><aclass="reference internal"href="Contrib-Tree-Select.html"><spanclass="doc std std-doc">Read the documentation</span></a> - <aclass="reference internal"href="../api/evennia.contrib.utils.tree_select.html#evennia-contrib-utils-tree-select"><spanclass="std std-ref">Browse the Code</span></a></p>
<hrclass="docutils"/>
<p><small>This document page is auto-generated. Manual changes