mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 13:56:30 +01:00
1238 lines
No EOL
111 KiB
HTML
1238 lines
No EOL
111 KiB
HTML
|
||
<!DOCTYPE html>
|
||
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<title>Changelog — Evennia 2.x documentation</title>
|
||
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/language_data.js"></script>
|
||
<link rel="shortcut icon" href="../_static/favicon.ico"/>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="Evennia 1.0 Release Notes" href="Release-Notes-1.0.html" />
|
||
<link rel="prev" title="Setting up PyCharm with Evennia" href="Setting-up-PyCharm.html" />
|
||
</head><body>
|
||
|
||
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<h3>Navigation</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="../genindex.html" title="General Index"
|
||
accesskey="I">index</a></li>
|
||
<li class="right" >
|
||
<a href="../py-modindex.html" title="Python Module Index"
|
||
>modules</a> |</li>
|
||
<li class="right" >
|
||
<a href="Release-Notes-1.0.html" title="Evennia 1.0 Release Notes"
|
||
accesskey="N">next</a> |</li>
|
||
<li class="right" >
|
||
<a href="Setting-up-PyCharm.html" title="Setting up PyCharm with Evennia"
|
||
accesskey="P">previous</a> |</li>
|
||
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> »</li>
|
||
<li class="nav-item nav-item-1"><a href="Coding-Overview.html" accesskey="U">Coding and development help</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href="">Changelog</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="document">
|
||
|
||
<div class="documentwrapper">
|
||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||
<div class="sphinxsidebarwrapper">
|
||
<p class="logo"><a href="../index.html">
|
||
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
|
||
</a></p>
|
||
<div id="searchbox" style="display: none" role="search">
|
||
<h3 id="searchlabel">Quick search</h3>
|
||
<div class="searchformwrapper">
|
||
<form class="search" action="../search.html" method="get">
|
||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<script>$('#searchbox').show(0);</script>
|
||
<h3><a href="../index.html">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">Changelog</a><ul>
|
||
<li><a class="reference internal" href="#evennia-2-0">Evennia 2.0</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-3-0">Evennia 1.3.0</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-2-1">Evennia 1.2.1</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-2-0">Evennia 1.2.0</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-1-1">Evennia 1.1.1</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-1-0">Evennia 1.1.0</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-0-2">Evennia 1.0.2</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-0-1">Evennia 1.0.1</a></li>
|
||
<li><a class="reference internal" href="#evennia-1-0-0">Evennia 1.0.0</a></li>
|
||
<li><a class="reference internal" href="#evennia-0-9-5">Evennia 0.9.5</a></li>
|
||
<li><a class="reference internal" href="#evennia-0-9">Evennia 0.9</a><ul>
|
||
<li><a class="reference internal" href="#distribution">Distribution</a></li>
|
||
<li><a class="reference internal" href="#commands">Commands</a></li>
|
||
<li><a class="reference internal" href="#web">Web</a><ul>
|
||
<li><a class="reference internal" href="#evennia-game-index">Evennia game index</a></li>
|
||
<li><a class="reference internal" href="#new-golden-layout-based-webclient-ui-friarzen">New golden-layout based Webclient UI (@friarzen)</a></li>
|
||
<li><a class="reference internal" href="#web-django-standard-initiative-strikaco">Web/Django standard initiative (@strikaco)</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#prototypes">Prototypes</a></li>
|
||
<li><a class="reference internal" href="#typeclasses">Typeclasses</a></li>
|
||
<li><a class="reference internal" href="#protocols">Protocols</a></li>
|
||
<li><a class="reference internal" href="#server">Server</a></li>
|
||
<li><a class="reference internal" href="#settings">Settings</a></li>
|
||
<li><a class="reference internal" href="#utils">Utils</a></li>
|
||
<li><a class="reference internal" href="#contribs">Contribs</a></li>
|
||
<li><a class="reference internal" href="#translations">Translations</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#evennia-0-8">Evennia 0.8</a><ul>
|
||
<li><a class="reference internal" href="#requirements">Requirements</a></li>
|
||
<li><a class="reference internal" href="#server-portal">Server/Portal</a></li>
|
||
<li><a class="reference internal" href="#prototype-changes">Prototype changes</a></li>
|
||
<li><a class="reference internal" href="#evmenu">EvMenu</a></li>
|
||
<li><a class="reference internal" href="#webclient">Webclient</a></li>
|
||
<li><a class="reference internal" href="#locks">Locks</a></li>
|
||
<li><a class="reference internal" href="#id1">Utils</a></li>
|
||
<li><a class="reference internal" href="#general">General</a></li>
|
||
<li><a class="reference internal" href="#id2">Contribs</a></li>
|
||
<li><a class="reference internal" href="#internationalization">Internationalization</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#overview-changelogs">Overview-Changelogs</a><ul>
|
||
<li><a class="reference internal" href="#sept-2017">Sept 2017:</a></li>
|
||
<li><a class="reference internal" href="#feb-2017">Feb 2017:</a></li>
|
||
<li><a class="reference internal" href="#dec-2016">Dec 2016:</a></li>
|
||
<li><a class="reference internal" href="#may-2016">May 2016:</a></li>
|
||
<li><a class="reference internal" href="#feb-2016">Feb 2016:</a></li>
|
||
<li><a class="reference internal" href="#sept-2015">Sept 2015:</a></li>
|
||
<li><a class="reference internal" href="#feb-2015">Feb 2015:</a></li>
|
||
<li><a class="reference internal" href="#sept-2014">Sept 2014:</a></li>
|
||
<li><a class="reference internal" href="#jan-2014">Jan 2014:</a></li>
|
||
<li><a class="reference internal" href="#nov-2013">Nov 2013:</a></li>
|
||
<li><a class="reference internal" href="#may-2013">May 2013:</a></li>
|
||
<li><a class="reference internal" href="#oct-2012">Oct 2012:</a></li>
|
||
<li><a class="reference internal" href="#march-2012">March 2012:</a></li>
|
||
<li><a class="reference internal" href="#nov-2011">Nov 2011:</a></li>
|
||
<li><a class="reference internal" href="#aug-2011">Aug 2011:</a></li>
|
||
<li><a class="reference internal" href="#may-2011">May 2011:</a></li>
|
||
<li><a class="reference internal" href="#aug-2010">Aug 2010:</a></li>
|
||
<li><a class="reference internal" href="#may-2010">May 2010:</a></li>
|
||
<li><a class="reference internal" href="#april-2010">April 2010:</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#older">Older</a></li>
|
||
</ul>
|
||
|
||
<h4>Previous topic</h4>
|
||
<p class="topless"><a href="Setting-up-PyCharm.html"
|
||
title="previous chapter">Setting up PyCharm with Evennia</a></p>
|
||
<h4>Next topic</h4>
|
||
<p class="topless"><a href="Release-Notes-1.0.html"
|
||
title="next chapter">Evennia 1.0 Release Notes</a></p>
|
||
<div role="note" aria-label="source link">
|
||
<!--h3>This Page</h3-->
|
||
<ul class="this-page-menu">
|
||
<li><a href="../_sources/Coding/Changelog.md.txt"
|
||
rel="nofollow">Show Page Source</a></li>
|
||
</ul>
|
||
</div><h3>Links</h3>
|
||
<ul>
|
||
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
|
||
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
|
||
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
|
||
<li><a href="http://games.evennia.com">Game Index</a> </li>
|
||
<li>
|
||
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
|
||
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
|
||
<a href="https://evennia.blogspot.com/">Blog</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<section class="tex2jax_ignore mathjax_ignore" id="changelog">
|
||
<h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
|
||
<section id="evennia-2-0">
|
||
<h2>Evennia 2.0<a class="headerlink" href="#evennia-2-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>June 10, 2023</p>
|
||
<ul class="simple">
|
||
<li><p><strong>Possible backwards incompatibility</strong>: Updated contrib <code class="docutils literal notranslate"><span class="pre">ExtendedRoom</span></code> now
|
||
supports arbitrary room-states, state-based descriptions, embedded funcparser
|
||
tags, details and random messages. While this feature is made to be as
|
||
backwards-compatible as possible, so many people depend on this contrib class
|
||
that we are updating the major Evennia version to indicate the big changes.</p></li>
|
||
<li><p>New Contrib: <code class="docutils literal notranslate"><span class="pre">Container</span></code> typeclass with new commands for storing and retrieving
|
||
things inside them (InspectorCaracal)</p></li>
|
||
<li><p>Feature: Add <code class="docutils literal notranslate"><span class="pre">TagCategoryProperty</span></code> for setting categories with multiple tags
|
||
as properties directly on objects. Complements <code class="docutils literal notranslate"><span class="pre">TagProperty</span></code>.</p></li>
|
||
<li><p>Feature: Attribute-support for saving/loading <code class="docutils literal notranslate"><span class="pre">deques</span></code> with <code class="docutils literal notranslate"><span class="pre">maxlen=</span></code> set.</p></li>
|
||
<li><p>Feature: Refactor to provide <code class="docutils literal notranslate"><span class="pre">evennia.SESSION_HANDLER</span></code> for easier overloading
|
||
and less risks of circular import problems (Volund)</p></li>
|
||
<li><p>Fix: Allow webclient’s goldenlayout UI (default) to understand <code class="docutils literal notranslate"><span class="pre">msg</span></code>
|
||
<code class="docutils literal notranslate"><span class="pre">cls</span></code> kwarg for customizing the CSS class for every resulting <code class="docutils literal notranslate"><span class="pre">div</span></code> (friarzen)</p></li>
|
||
<li><p>Fix: The <code class="docutils literal notranslate"><span class="pre">AttributeHandler.all()</span></code> now actually accepts <code class="docutils literal notranslate"><span class="pre">category=</span></code> as
|
||
keyword arg, like our docs already claimed it should (Volund)</p></li>
|
||
<li><p>Fix: <code class="docutils literal notranslate"><span class="pre">TickerHandler</span></code> store key updating was refactored, fixing an issue with
|
||
updating intervals (InspectorCaracal)</p></li>
|
||
<li><p>Docs: Removed warning about Python3.11 on Windows; upstream Twistd now
|
||
supports 3.11 on Windows.</p></li>
|
||
<li><p>Docs: New Beginner-Tutorial lessons for NPCs, Base-Combat Twitch-Combat and
|
||
Turnbased-combat (note that the Beginner tutorial is still WIP).</p></li>
|
||
<li><p>Stabilize how to make the major update in the docs.</p></li>
|
||
<li><p>Fix: A lot of other minor bug fixes.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-3-0">
|
||
<h2>Evennia 1.3.0<a class="headerlink" href="#evennia-1-3-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>Apr 29, 2023</p>
|
||
<ul class="simple">
|
||
<li><p>Feature: Better ANSI color fallbacks (InspectorCaracal).</p></li>
|
||
<li><p>Feature: Add support for saving <code class="docutils literal notranslate"><span class="pre">deque</span></code> with <code class="docutils literal notranslate"><span class="pre">maxlen</span></code> to Attributes (before
|
||
<code class="docutils literal notranslate"><span class="pre">maxlen</span></code> was ignored).</p></li>
|
||
<li><p>Fix: The username validator did not display errors correctly in web
|
||
registration form.</p></li>
|
||
<li><p>Fix: Components contrib had issues with inherited typeclasses (ChrisLR)</p></li>
|
||
<li><p>Fix: f-string fix in clothing contrib (aMiss-aWry)</p></li>
|
||
<li><p>Fix: Have <code class="docutils literal notranslate"><span class="pre">EvenniaTestCase</span></code> properly flush idmapper cache (bradleymarques)</p></li>
|
||
<li><p>Tools: More unit tests for scripts (Storsorken)</p></li>
|
||
<li><p>Docs: Made separate doc pages for Exits, Characters and Rooms. Expanded on how
|
||
to change the description of an in-game object with templating.</p></li>
|
||
<li><p>Docs: A multitude of doc issues and typos fixed.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-2-1">
|
||
<h2>Evennia 1.2.1<a class="headerlink" href="#evennia-1-2-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>Feb 26, 2023</p>
|
||
<ul class="simple">
|
||
<li><p>Bug fix: Make sure command parser gives precedence to longer cmd-aliases. So
|
||
if sending <code class="docutils literal notranslate"><span class="pre">smile</span> <span class="pre">at</span></code> and the cmd <code class="docutils literal notranslate"><span class="pre">smile</span></code> has alias <code class="docutils literal notranslate"><span class="pre">smile</span> <span class="pre">at</span></code>, the match is
|
||
ordered so the result is never interpreted as <code class="docutils literal notranslate"><span class="pre">smile</span></code> with an argument <code class="docutils literal notranslate"><span class="pre">at</span></code>.</p></li>
|
||
<li><p>Bug fix: || (escaped color tags) were parsed too early in help entries,
|
||
leading to colors when wanting a | separator</p></li>
|
||
<li><p>Bug fix: Make sure spawned objects get <code class="docutils literal notranslate"><span class="pre">typeclass_path</span></code> pointing to the true
|
||
location rather than alias (in line with <code class="docutils literal notranslate"><span class="pre">create_object</span></code>).</p></li>
|
||
<li><p>Bug fix: Building Menu contrib menu no using Replace over Union mergetype to
|
||
avoid clashing with in-game commands while building</p></li>
|
||
<li><p>Feature: RPSystem contrib <code class="docutils literal notranslate"><span class="pre">sdesc</span></code> command can now view/delete your sdesc.</p></li>
|
||
<li><p>Bug fix: Change so <code class="docutils literal notranslate"><span class="pre">script</span> <span class="pre">obj</span> <span class="pre">=</span> <span class="pre">[scriptname|id]</span></code> is required to manipulate
|
||
scripts on objects; <code class="docutils literal notranslate"><span class="pre">script</span> <span class="pre">scriptname|id</span></code> only works on global scripts.</p></li>
|
||
<li><p>Doc: Add warning about <code class="docutils literal notranslate"><span class="pre">Django-wiki</span></code> (in wiki tutorial) only supporting
|
||
Django <4.0.</p></li>
|
||
<li><p>Doc: Expanded <code class="docutils literal notranslate"><span class="pre">XYZGrid</span></code> docstring to clarify <code class="docutils literal notranslate"><span class="pre">MapLink</span></code> class will not itself
|
||
spawn anything, children must define their prototypes explicitly.</p></li>
|
||
<li><p>Doc: Explained why <code class="docutils literal notranslate"><span class="pre">AttributeProperty.at_get/set</span></code> will not be called if
|
||
accessing the Attribute from the <code class="docutils literal notranslate"><span class="pre">AttributeHandler</span></code> (bypassing the property)</p></li>
|
||
<li><p>Bug fix: Evtable options showed spurious empty lines if set without desc</p></li>
|
||
<li><p>Usage fix: The <code class="docutils literal notranslate"><span class="pre">teleport:</span></code> and <code class="docutils literal notranslate"><span class="pre">teleport_here:</span></code> locks where checked in
|
||
<code class="docutils literal notranslate"><span class="pre">CmdTeleport</span></code>, but not actually set on any entities. These locks are now
|
||
set with defaults on all objects,characters,rooms and exits.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-2-0">
|
||
<h2>Evennia 1.2.0<a class="headerlink" href="#evennia-1-2-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>Feb 25, 2023</p>
|
||
<ul class="simple">
|
||
<li><p>Bug fix: <code class="docutils literal notranslate"><span class="pre">TagHandler.get</span></code> did not consistently cast to string (aMiss-aWry)</p></li>
|
||
<li><p>Bug fix: Channels hard to manage if given in different case (aMiss-aWry)</p></li>
|
||
<li><p>Feature: <code class="docutils literal notranslate"><span class="pre">logger.delete_log</span></code> function for deleting custom logs from inside the
|
||
server (aMiss-aWry)</p></li>
|
||
<li><p>Doc: Nginx setup (InspectorCaracal)</p></li>
|
||
<li><p>Feature: Add <code class="docutils literal notranslate"><span class="pre">fly/dive</span></code> commands to <code class="docutils literal notranslate"><span class="pre">XYZGrid</span></code> contrib to showcase treating its
|
||
Z-axis as a full 3D grid. Also fixed minor bug in <code class="docutils literal notranslate"><span class="pre">XYZGrid</span></code> contrib when using
|
||
a Z axis named using an integer rather than a string.</p></li>
|
||
<li><p>Bug fix: <code class="docutils literal notranslate"><span class="pre">$an()</span></code> inlinefunc didn’t understand to use ‘an’ words starting with a
|
||
capital vowel</p></li>
|
||
<li><p>Bug fix: Another case of the ‘duplicate Discord bot connections’ bug
|
||
(InspectorCaracal)</p></li>
|
||
<li><p>Fix: Make XYZGrid contrib’s MapParserErrors more succinct</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-1-1">
|
||
<h2>Evennia 1.1.1<a class="headerlink" href="#evennia-1-1-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>Jan 15, 2023</p>
|
||
<ul class="simple">
|
||
<li><p>Bug fix: Better handler malformed alias-regex given to nickhandler. A
|
||
regex-relevant character in a channel alias could cause server to not restart.</p></li>
|
||
<li><p>Feature: Add <code class="docutils literal notranslate"><span class="pre">attr</span></code> keyword to <code class="docutils literal notranslate"><span class="pre">create_channel</span></code>. This allows setting
|
||
attributes on channels at creation, also from <code class="docutils literal notranslate"><span class="pre">DEFAULT_CHANNELS</span></code> definitions.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-1-0">
|
||
<h2>Evennia 1.1.0<a class="headerlink" href="#evennia-1-1-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>Jan 7, 2023</p>
|
||
<ul class="simple">
|
||
<li><p>Stop new registrations with <code class="docutils literal notranslate"><span class="pre">settings.NEW_ACCOUNT_REGISTRATION_ENABLED</span></code>
|
||
(inspectorcaracal)</p></li>
|
||
<li><p>Bug fixes.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-0-2">
|
||
<h2>Evennia 1.0.2<a class="headerlink" href="#evennia-1-0-2" title="Permalink to this headline">¶</a></h2>
|
||
<p>Dec 21, 2022</p>
|
||
<ul class="simple">
|
||
<li><p>Bug fix release. Fix more issues with discord bot reconnecting. Some doc
|
||
updates.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-0-1">
|
||
<h2>Evennia 1.0.1<a class="headerlink" href="#evennia-1-0-1" title="Permalink to this headline">¶</a></h2>
|
||
<p>Dec 7, 2022</p>
|
||
<ul class="simple">
|
||
<li><p>Bug fix release. Main issue was reconnect bug for discord bot.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-1-0-0">
|
||
<h2>Evennia 1.0.0<a class="headerlink" href="#evennia-1-0-0" title="Permalink to this headline">¶</a></h2>
|
||
<p>2019-2022</p>
|
||
<p><em>Changed to using <code class="docutils literal notranslate"><span class="pre">main</span></code> branch to follow github standard. Old <code class="docutils literal notranslate"><span class="pre">master</span></code> branch remains
|
||
for now but will not be used anymore, so as to not break installs during transition.</em></p>
|
||
<p>Also changing to using semantic versioning with this version.</p>
|
||
<p>Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.10, 3.11. PostgreSQL 11+.</p>
|
||
<ul class="simple">
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">drop:holds()</span></code> lock default to limit dropping nonsensical things. Access check
|
||
defaults to True for backwards-compatibility in 0.9, will be False in 1.0</p></li>
|
||
<li><p>REST API allows you external access to db objects through HTTP requests (Tehom)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Object.normalize_name</span></code> and <code class="docutils literal notranslate"><span class="pre">.validate_name</span></code> added to (by default) enforce latinify
|
||
on character name and avoid potential exploits using clever Unicode chars (trhr)</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">utils.format_grid</span></code> for easily displaying long lists of items in a block.</p></li>
|
||
<li><p>Using <code class="docutils literal notranslate"><span class="pre">lunr</span></code> search indexing for better <code class="docutils literal notranslate"><span class="pre">help</span></code> matching and suggestions. Also improve
|
||
the main help command’s default listing output.</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">content_types</span></code> indexing to DefaultObject’s ContentsHandler. (volund)</p></li>
|
||
<li><p>Made most of the networking classes such as Protocols and the SessionHandlers
|
||
replaceable via <code class="docutils literal notranslate"><span class="pre">settings.py</span></code> for modding enthusiasts. (volund)</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">initial_setup.py</span></code> file can now be substituted in <code class="docutils literal notranslate"><span class="pre">settings.py</span></code> to customize
|
||
initial game database state. (volund)</p></li>
|
||
<li><p>Added new Traits contrib, converted and expanded from Ainneve project.</p></li>
|
||
<li><p>Added new <code class="docutils literal notranslate"><span class="pre">requirements_extra.txt</span></code> file for easily getting all optional dependencies.</p></li>
|
||
<li><p>Change default multi-match syntax from 1-obj, 2-obj to obj-1, obj-2.</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">object.search</span></code> support ‘stacks=0’ keyword - if <code class="docutils literal notranslate"><span class="pre">>0</span></code>, the method will return
|
||
N identical matches instead of triggering a multi-match error.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">tags.has()</span></code> method for checking if an object has a tag or tags (PR by ChrisLR)</p></li>
|
||
<li><p>Make IP throttle use Django-based cache system for optional persistence (PR by strikaco)</p></li>
|
||
<li><p>Renamed Tutorial classes “Weapon” and “WeaponRack” to “TutorialWeapon” and
|
||
“TutorialWeaponRack” to prevent collisions with classes in mygame</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">crafting</span></code> contrib, adding a full crafting subsystem (Griatch 2020)</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">rplanguage</span></code> contrib now auto-capitalizes sentences and retains ellipsis (…). This
|
||
change means that proper nouns at the start of sentences will not be treated as nouns.</p></li>
|
||
<li><p>Make MuxCommand <code class="docutils literal notranslate"><span class="pre">lhs/rhslist</span></code> always be lists, also if empty (used to be the empty string)</p></li>
|
||
<li><p>Fix typo in UnixCommand contrib, where <code class="docutils literal notranslate"><span class="pre">help</span></code> was given as <code class="docutils literal notranslate"><span class="pre">--hel</span></code>.</p></li>
|
||
<li><p>Latin (la) i18n translation (jamalainm)</p></li>
|
||
<li><p>Made the <code class="docutils literal notranslate"><span class="pre">evennia</span></code> dir possible to use without gamedir for purpose of doc generation.</p></li>
|
||
<li><p>Make Scripts’ timer component independent from script object deletion; can now start/stop
|
||
timer without deleting Script. The <code class="docutils literal notranslate"><span class="pre">.persistent</span></code> flag now only controls if timer survives
|
||
reload - Script has to be removed with <code class="docutils literal notranslate"><span class="pre">.delete()</span></code> like other typeclassed entities.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">utils.repeat</span></code> and <code class="docutils literal notranslate"><span class="pre">utils.unrepeat</span></code> as shortcuts to TickerHandler add/remove, similar
|
||
to how <code class="docutils literal notranslate"><span class="pre">utils.delay</span></code> is a shortcut for TaskHandler add.</p></li>
|
||
<li><p>Refactor the classic <code class="docutils literal notranslate"><span class="pre">red_button</span></code> example to use <code class="docutils literal notranslate"><span class="pre">utils.delay/repeat</span></code> and modern recommended
|
||
code style and paradigms instead of relying on <code class="docutils literal notranslate"><span class="pre">Scripts</span></code> for everything.</p></li>
|
||
<li><p>Expand <code class="docutils literal notranslate"><span class="pre">CommandTest</span></code> with ability to check multiple message-receivers; inspired by PR by
|
||
user davewiththenicehat. Also add new doc string.</p></li>
|
||
<li><p>Add central <code class="docutils literal notranslate"><span class="pre">FuncParser</span></code> as a much more powerful replacement for the old <code class="docutils literal notranslate"><span class="pre">parse_inlinefunc</span></code>
|
||
function.</p></li>
|
||
<li><p>Attribute/NAttribute got a homogenous representation, using intefaces, both
|
||
<code class="docutils literal notranslate"><span class="pre">AttributeHandler</span></code> and <code class="docutils literal notranslate"><span class="pre">NAttributeHandler</span></code> has same api now.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">evennia/utils/verb_conjugation</span></code> for automatic verb conjugation (English only). This
|
||
is useful for implementing actor-stance emoting for sending a string to different targets.</p></li>
|
||
<li><p>New version of Italian translation (rpolve)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">utils.evmenu.ask_yes_no</span></code> is a helper function that makes it easy to ask a yes/no question
|
||
to the user and respond to their input. This complements the existing <code class="docutils literal notranslate"><span class="pre">get_input</span></code> helper.</p></li>
|
||
<li><p>Allow sending messages with <code class="docutils literal notranslate"><span class="pre">page/tell</span></code> without a <code class="docutils literal notranslate"><span class="pre">=</span></code> if target name contains no spaces.</p></li>
|
||
<li><p>New FileHelpStorage system allows adding help entries via external files.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">sethelp</span></code> command now warns if shadowing other help-types when creating a new
|
||
entry.</p></li>
|
||
<li><p>Help command now uses <code class="docutils literal notranslate"><span class="pre">view</span></code> lock to determine if cmd/entry shows in index and
|
||
<code class="docutils literal notranslate"><span class="pre">read</span></code> lock to determine if it can be read. It used to be <code class="docutils literal notranslate"><span class="pre">view</span></code> in the role
|
||
of the latter. Migration swaps these around.</p></li>
|
||
<li><p>In modules given by <code class="docutils literal notranslate"><span class="pre">settings.PROTOTYPE_MODULES</span></code>, spawner will now first look for a global
|
||
list <code class="docutils literal notranslate"><span class="pre">PROTOTYPE_LIST</span></code> of dicts before loading all dicts in the module as prototypes.</p></li>
|
||
<li><p>New Channel-System using the <code class="docutils literal notranslate"><span class="pre">channel</span></code> command and nicks. Removed the <code class="docutils literal notranslate"><span class="pre">ChannelHandler</span></code> and the
|
||
concept of a dynamically created <code class="docutils literal notranslate"><span class="pre">ChannelCmdSet</span></code>.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">Msg.db_receiver_external</span></code> field to allowe external, string-id message-receivers.</p></li>
|
||
<li><p>Renamed <code class="docutils literal notranslate"><span class="pre">app.css</span></code> to <code class="docutils literal notranslate"><span class="pre">website.css</span></code> for consistency. Removed old prosimii-css files.</p></li>
|
||
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">mygame/web/static_overrides</span></code> and -<code class="docutils literal notranslate"><span class="pre">template_overrides</span></code>, reorganize website/admin/client/api
|
||
into a more consistent structure for overriding. Expanded webpage documentation considerably.</p></li>
|
||
<li><p>REST API list-view was shortened (#2401). New CSS/HTML. Add ReDoc for API autodoc page.</p></li>
|
||
<li><p>Update and fix dummyrunner with cleaner code and setup.</p></li>
|
||
<li><p>Made <code class="docutils literal notranslate"><span class="pre">iter_to_str</span></code> format prettier strings, using Oxford comma.</p></li>
|
||
<li><p>Added an MXP anchor tag to also support clickable web links.</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">tasks</span></code> command for managing tasks started with <code class="docutils literal notranslate"><span class="pre">utils.delay</span></code> (PR by davewiththenicehat)</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">help</span></code> index output clickable for webclient/clients with MXP (PR by davewiththenicehat)</p></li>
|
||
<li><p>Custom <code class="docutils literal notranslate"><span class="pre">evennia</span></code> launcher commands (e.g. <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">mycmd</span> <span class="pre">foo</span> <span class="pre">bar</span></code>). Add new commands as callables
|
||
accepting <code class="docutils literal notranslate"><span class="pre">*args</span></code>, as <code class="docutils literal notranslate"><span class="pre">settings.EXTRA_LAUNCHER_COMMANDS</span> <span class="pre">=</span> <span class="pre">{'mycmd':</span> <span class="pre">'path.to.callable',</span> <span class="pre">...}</span></code>.</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">XYZGrid</span></code> contrib, adding x,y,z grid coordinates with in-game map and
|
||
pathfinding. Controlled outside of the game via custom evennia launcher command.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Script.delete</span></code> has new kwarg <code class="docutils literal notranslate"><span class="pre">stop_task=True</span></code>, that can be used to avoid
|
||
infinite recursion when wanting to set up Script to delete-on-stop.</p></li>
|
||
<li><p>Command executions now done on copies to make sure <code class="docutils literal notranslate"><span class="pre">yield</span></code> don’t cause crossovers. Add
|
||
<code class="docutils literal notranslate"><span class="pre">Command.retain_instance</span></code> flag for reusing the same command instance.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">typeclass</span></code> command will now correctly search the correct database-table for the target
|
||
obj (avoids mistakenly assigning an AccountDB-typeclass to a Character etc).</p></li>
|
||
<li><p>Merged <code class="docutils literal notranslate"><span class="pre">script</span></code> and <code class="docutils literal notranslate"><span class="pre">scripts</span></code> commands into one, for both managing global- and
|
||
on-object Scripts. Moved <code class="docutils literal notranslate"><span class="pre">CmdScripts</span></code> and <code class="docutils literal notranslate"><span class="pre">CmdObjects</span></code> to <code class="docutils literal notranslate"><span class="pre">commands/default/building.py</span></code>.</p></li>
|
||
<li><p>Keep GMCP function case if outputfunc starts with capital letter (so <code class="docutils literal notranslate"><span class="pre">cmd_name</span></code> -> <code class="docutils literal notranslate"><span class="pre">Cmd.Name</span></code>
|
||
but <code class="docutils literal notranslate"><span class="pre">Cmd_nAmE</span></code> -> <code class="docutils literal notranslate"><span class="pre">Cmd.nAmE</span></code>). This helps e.g Mudlet’s legacy <code class="docutils literal notranslate"><span class="pre">Client_GUI</span></code> implementation)</p></li>
|
||
<li><p>Prototypes now allow setting <code class="docutils literal notranslate"><span class="pre">prototype_parent</span></code> directly to a prototype-dict.
|
||
This makes it easier when dynamically building in-module prototypes.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">RPSystem</span> <span class="pre">contrib</span></code> was expanded to support case, so /tall becomes ‘tall man’
|
||
while /Tall becomes ‘Tall man’. One can turn this off if wanting the old style.</p></li>
|
||
<li><p>Change <code class="docutils literal notranslate"><span class="pre">EvTable</span></code> fixed-height rebalance algorithm to fill with empty lines at end of
|
||
column instead of inserting rows based on cell-size (could be mistaken for a bug).</p></li>
|
||
<li><p>Split <code class="docutils literal notranslate"><span class="pre">return_appearance</span></code> hook with helper methods and have it use a template
|
||
string in order to make it easier to override.</p></li>
|
||
<li><p>Add validation question to default account creation.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">LOCALECHO</span></code> client option to add server-side echo for clients that does
|
||
not support this (useful for getting a complete log).</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">@lazy_property</span></code> decorator create read/delete-protected properties. This is
|
||
because it’s used for handlers, and e.g. self.locks=[] is a common beginner mistake.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">$pron()</span></code> inlinefunc for pronoun parsing in actor-stance strings using
|
||
<code class="docutils literal notranslate"><span class="pre">msg_contents</span></code>.</p></li>
|
||
<li><p>Update defauklt website to show Telnet/SSL/SSH connect info. Added new
|
||
<code class="docutils literal notranslate"><span class="pre">SERVER_HOSTNAME</span></code> setting for use in the server:port stanza.</p></li>
|
||
<li><p>Changed all <code class="docutils literal notranslate"><span class="pre">at_before/after_*</span></code> hooks to <code class="docutils literal notranslate"><span class="pre">at_pre/post_*</span></code> for consistency
|
||
across Evennia (the old names still work but are deprecated)</p></li>
|
||
<li><p>Change <code class="docutils literal notranslate"><span class="pre">settings.COMMAND_DEFAULT_ARG_REGEX</span></code> default from <code class="docutils literal notranslate"><span class="pre">None</span></code> to a regex meaning that
|
||
a space or <code class="docutils literal notranslate"><span class="pre">/</span></code> must separate the cmdname and args. This better fits common expectations.</p></li>
|
||
<li><p>Add confirmation question to <code class="docutils literal notranslate"><span class="pre">ban</span></code>/<code class="docutils literal notranslate"><span class="pre">unban</span></code> commands.</p></li>
|
||
<li><p>Check new <code class="docutils literal notranslate"><span class="pre">teleport</span></code> and <code class="docutils literal notranslate"><span class="pre">teleport_here</span></code> lock-types in <code class="docutils literal notranslate"><span class="pre">teleport</span></code> command to optionally
|
||
allow to limit teleportation of an object or to a specific destination.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">settings.MXP_ENABLED=True</span></code> and <code class="docutils literal notranslate"><span class="pre">settings.MXP_OUTGOING_ONLY=True</span></code> as sane defaults,
|
||
to avoid known security issues with players entering MXP links.</p></li>
|
||
<li><p>Add browser name to webclient <code class="docutils literal notranslate"><span class="pre">CLIENT_NAME</span></code> in <code class="docutils literal notranslate"><span class="pre">session.protocol_flags</span></code>, e.g.
|
||
<code class="docutils literal notranslate"><span class="pre">"Evennia</span> <span class="pre">webclient</span> <span class="pre">(websocket:firefox)"</span></code> or <code class="docutils literal notranslate"><span class="pre">"evennia</span> <span class="pre">webclient</span> <span class="pre">(ajax:chrome)"</span></code>.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">TagHandler.add/has(tag=...)</span></code> kwarg changed to <code class="docutils literal notranslate"><span class="pre">add/has(key=...)</span></code> for consistency
|
||
with other handlers.</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">DefaultScript.delete</span></code>, <code class="docutils literal notranslate"><span class="pre">DefaultChannel.delete</span></code> and <code class="docutils literal notranslate"><span class="pre">DefaultAccount.delete</span></code> return
|
||
bool True/False if deletion was successful (like <code class="docutils literal notranslate"><span class="pre">DefaultObject.delete</span></code> before them)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">contrib.custom_gametime</span></code> days/weeks/months now always starts from 1 (to match
|
||
the standard calendar form … there is no month 0 every year after all).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">AttributeProperty</span></code>/<code class="docutils literal notranslate"><span class="pre">NAttributeProperty</span></code> to allow managing Attributes/NAttributes
|
||
on typeclasses in the same way as Django fields.</p></li>
|
||
<li><p>Give build/system commands a <code class="docutils literal notranslate"><span class="pre">@name</span></code> to fall back to if the non-@ name is used
|
||
by another command (like <code class="docutils literal notranslate"><span class="pre">open</span></code> and <code class="docutils literal notranslate"><span class="pre">@open</span></code>. If no duplicate, @ is optional.</p></li>
|
||
<li><p>Move legacy channel-management commands (<code class="docutils literal notranslate"><span class="pre">ccreate</span></code>, <code class="docutils literal notranslate"><span class="pre">addcom</span></code> etc) to a contrib
|
||
since their work is now fully handled by the single <code class="docutils literal notranslate"><span class="pre">channel</span></code> command.</p></li>
|
||
<li><p>Expand <code class="docutils literal notranslate"><span class="pre">examine</span></code> command’s code to much more extensible and modular. Show
|
||
attribute categories and value types (when not strings).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">AttributeHandler.remove(key,</span> <span class="pre">return_exception=False,</span> <span class="pre">category=None,</span> <span class="pre">...)</span></code> changed
|
||
to <code class="docutils literal notranslate"><span class="pre">.remove(key,</span> <span class="pre">category=None,</span> <span class="pre">return_exception=False,</span> <span class="pre">...)</span></code> for consistency.</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">command</span> <span class="pre">cooldown</span></code> contrib for making it easier to manage commands using
|
||
dynamic cooldowns between uses (owllex)</p></li>
|
||
<li><p>Restructured <code class="docutils literal notranslate"><span class="pre">contrib/</span></code> folder, placing all contribs as separate packages under
|
||
subfolders. All imports will need to be updated.</p></li>
|
||
<li><p>Made <code class="docutils literal notranslate"><span class="pre">MonitorHandler.add/remove</span></code> support <code class="docutils literal notranslate"><span class="pre">category</span></code> for monitoring Attributes
|
||
with a category (before only key was used, ignoring category entirely).</p></li>
|
||
<li><p>Move <code class="docutils literal notranslate"><span class="pre">create_*</span></code> functions into db managers, leaving <code class="docutils literal notranslate"><span class="pre">utils.create</span></code> only being
|
||
wrapper functions (consistent with <code class="docutils literal notranslate"><span class="pre">utils.search</span></code>). No change of api otherwise.</p></li>
|
||
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">$dbref()</span></code> and <code class="docutils literal notranslate"><span class="pre">$search</span></code> when assigning an Attribute value
|
||
with the <code class="docutils literal notranslate"><span class="pre">set</span></code> command. This allows assigning real objects from in-game.</p></li>
|
||
<li><p>Add ability to examine <code class="docutils literal notranslate"><span class="pre">/script</span></code> and <code class="docutils literal notranslate"><span class="pre">/channel</span></code> entities with <code class="docutils literal notranslate"><span class="pre">examine</span></code> command.</p></li>
|
||
<li><p>Homogenize manager search methods to return querysets and not lists.</p></li>
|
||
<li><p>Restructure unit tests to always honor default settings; make new parents in
|
||
on location for easy use in game dir.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">Lunr</span></code> search engine used by help excludes common words; the settings-list
|
||
<code class="docutils literal notranslate"><span class="pre">LUNR_STOP_WORD_FILTER_EXCEPTIONS</span></code> can be extended to make sure common names are included.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">.deserialize()</span></code> method to <code class="docutils literal notranslate"><span class="pre">_Saver*</span></code> structures to help completely
|
||
decouple structures from database without needing separate import.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">run_in_main_thread</span></code> as a helper for those wanting to code server code
|
||
from a web view.</p></li>
|
||
<li><p>Update <code class="docutils literal notranslate"><span class="pre">evennia.utils.logger</span></code> to use Twisted’s new logging API. No change in Evennia API
|
||
except more standard aliases logger.error/info/exception/debug etc can now be used.</p></li>
|
||
<li><p>Have <code class="docutils literal notranslate"><span class="pre">type/force</span></code> default to <code class="docutils literal notranslate"><span class="pre">update</span></code>-mode rather than <code class="docutils literal notranslate"><span class="pre">reset</span></code>mode and add more verbose
|
||
warning when using reset mode.</p></li>
|
||
<li><p>Attribute storage support defaultdics (Hendher)</p></li>
|
||
<li><p>Add ObjectParent mixin to default game folder template as an easy, ready-made
|
||
way to override features on all ObjectDB-inheriting objects easily.
|
||
source location, mimicking behavior of <code class="docutils literal notranslate"><span class="pre">at_pre_move</span></code> hook - returning False will abort move.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">TagProperty</span></code>, <code class="docutils literal notranslate"><span class="pre">AliasProperty</span></code> and <code class="docutils literal notranslate"><span class="pre">PermissionProperty</span></code> to assign these
|
||
data in a similar way to django fields.</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">at_pre_object_receive(obj,</span> <span class="pre">source_location)</span></code> method on Objects. Called on
|
||
destination, mimicking behavior of <code class="docutils literal notranslate"><span class="pre">at_pre_move</span></code> hook - returning False will abort move.</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">at_pre_object_leave(obj,</span> <span class="pre">destination)</span></code> method on Objects. Called on</p></li>
|
||
<li><p>The db pickle-serializer now checks for methods <code class="docutils literal notranslate"><span class="pre">__serialize_dbobjs__</span></code> and <code class="docutils literal notranslate"><span class="pre">__deserialize_dbobjs__</span></code>
|
||
to allow custom packing/unpacking of nested dbobjs, to allow storing in Attribute.</p></li>
|
||
<li><p>Optimizations to rpsystem contrib performance. Breaking change: <code class="docutils literal notranslate"><span class="pre">.get_sdesc()</span></code> will
|
||
now return <code class="docutils literal notranslate"><span class="pre">None</span></code> instead of <code class="docutils literal notranslate"><span class="pre">.db.desc</span></code> if no sdesc is set; fallback in hook (inspectorCaracal)</p></li>
|
||
<li><p>Reworked text2html parser to avoid problems with stateful color tags (inspectorCaracal)</p></li>
|
||
<li><p>Simplified <code class="docutils literal notranslate"><span class="pre">EvMenu.options_formatter</span></code> hook to use <code class="docutils literal notranslate"><span class="pre">EvColumn</span></code> and f-strings (inspectorcaracal)</p></li>
|
||
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">CODE</span></code>, <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">HEADER</span></code> etc as well as <code class="docutils literal notranslate"><span class="pre">#CODE</span></code>/<code class="docutils literal notranslate"><span class="pre">#HEADER</span></code> in batchcode
|
||
files - this works better with black linting.</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">move_type</span></code> str kwarg to <code class="docutils literal notranslate"><span class="pre">move_to()</span></code> calls, optionally identifying the type of
|
||
move being done (‘teleport’, ‘disembark’, ‘give’ etc). (volund)</p></li>
|
||
<li><p>Made RPSystem contrib msg calls pass <code class="docutils literal notranslate"><span class="pre">pose</span></code> or <code class="docutils literal notranslate"><span class="pre">say</span></code> as msg-<code class="docutils literal notranslate"><span class="pre">type</span></code> for use in
|
||
e.g. webclient pane filtering where desired. (volund)</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">Account.uses_screenreader(session=None)</span></code> as a quick shortcut for
|
||
finding if a user uses a screenreader (and adjust display accordingly).</p></li>
|
||
<li><p>Fixed bug in <code class="docutils literal notranslate"><span class="pre">cmdset.remove()</span></code> where a command could not be deleted by <code class="docutils literal notranslate"><span class="pre">key</span></code>,
|
||
even though doc suggested one could (ChrisLR)</p></li>
|
||
<li><p>New contrib <code class="docutils literal notranslate"><span class="pre">name_generator</span></code> for building random real-world based or fantasy-names
|
||
based on phonetic rules.</p></li>
|
||
<li><p>Enable proper serialization of dict subclasses in Attributes (aogier)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">object.search</span></code> fuzzy-matching now uses <code class="docutils literal notranslate"><span class="pre">icontains</span></code> instead of <code class="docutils literal notranslate"><span class="pre">istartswith</span></code>
|
||
to better match how search works elsewhere (volund)</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">.at_traverse</span></code> hook now receives a <code class="docutils literal notranslate"><span class="pre">exit_obj</span></code> kwarg, linking back to the
|
||
exit triggering the hook (volund)</p></li>
|
||
<li><p>Contrib <code class="docutils literal notranslate"><span class="pre">buffs</span></code> for managing temporary and permanent RPG status buffs effects (tegiminis)</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">at_server_init()</span></code> hook called before all other startup hooks for all
|
||
startup modes. Used for more generic overriding (volund)</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">search</span></code> lock type used to completely hide an object from being found by
|
||
the <code class="docutils literal notranslate"><span class="pre">DefaultObject.search</span></code> (<code class="docutils literal notranslate"><span class="pre">caller.search</span></code>) method. (CloudKeeper)</p></li>
|
||
<li><p>Change setting <code class="docutils literal notranslate"><span class="pre">MULTISESSION_MODE</span></code> to now only control sessions, not how many
|
||
characters can be puppeted simultaneously. New settings now control that.</p></li>
|
||
<li><p>Add new setting <code class="docutils literal notranslate"><span class="pre">AUTO_CREATE_CHARACTER_WITH_ACCOUNT</span></code>, a boolean deciding if
|
||
the new account should also get a matching character (legacy MUD style).</p></li>
|
||
<li><p>Add new setting <code class="docutils literal notranslate"><span class="pre">AUTO_PUPPET_ON_LOGIN</span></code>, boolean deciding if one should
|
||
automatically puppet the last/available character on connection (legacy MUD style)</p></li>
|
||
<li><p>Add new setting <code class="docutils literal notranslate"><span class="pre">MAX_NR_SIMULTANEUS_PUPPETS</span></code> - how many puppets the account
|
||
can run at the same time. Used to limit multi-playing.</p></li>
|
||
<li><p>Make setting <code class="docutils literal notranslate"><span class="pre">MAX_NR_CHARACTERS</span></code> interact better with the new settings above.</p></li>
|
||
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">$search</span></code> funcparser func to search tags and to accept kwargs for more
|
||
powerful searches passed into the regular search functions.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">spawner.spawn</span></code> and linked methods now has a kwarg <code class="docutils literal notranslate"><span class="pre">protfunc_raise_errors</span></code>
|
||
(default True) to disable strict errors on malformed/not-found protfuncs</p></li>
|
||
<li><p>Improve search performance when having many DB-based prototypes via caching.</p></li>
|
||
<li><p>Remove the <code class="docutils literal notranslate"><span class="pre">return_parents</span></code> kwarg of <code class="docutils literal notranslate"><span class="pre">evennia.prototypes.spawner.spawn</span></code> since it
|
||
was inefficient and unused.</p></li>
|
||
<li><p>Made all id fields BigAutoField for all databases. (owllex)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvForm</span></code> refactored. New <code class="docutils literal notranslate"><span class="pre">literals</span></code> mapping, for literal mappings into the
|
||
main template (e.g. for single-character replacements).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvForm</span></code> <code class="docutils literal notranslate"><span class="pre">cells</span></code> kwarg now accepts <code class="docutils literal notranslate"><span class="pre">EvCells</span></code> with custom formatting options
|
||
(mainly for custom align/valign). <code class="docutils literal notranslate"><span class="pre">EvCells</span></code> now makes use of <code class="docutils literal notranslate"><span class="pre">utils.justify</span></code>.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">utils.justify</span></code> now supports <code class="docutils literal notranslate"><span class="pre">align="a"</span></code> (absolute alignments. This keeps
|
||
the given left indent but crops/fills to the width. Used in EvCells.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvTable</span></code> now supports passing <code class="docutils literal notranslate"><span class="pre">EvColumn</span></code>s as a list directly, (<code class="docutils literal notranslate"><span class="pre">EvTable(table=[colA,colB])</span></code>)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">tags=</span></code> search criterion to <code class="docutils literal notranslate"><span class="pre">DefaultObject.search</span></code>.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">AT_EXIT_TRAVERSE</span></code> signal, firing when an exit is traversed.</p></li>
|
||
<li><p>Add integration between Evennia and Discord channels (PR by Inspector Cararacal)</p></li>
|
||
<li><p>Support for using a Godot-powered client with Evennia (PR by ChrisLR)</p></li>
|
||
<li><p>Added German translation (patch by Zhuraj)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-0-9-5">
|
||
<h2>Evennia 0.9.5<a class="headerlink" href="#evennia-0-9-5" title="Permalink to this headline">¶</a></h2>
|
||
<blockquote>
|
||
<div><p>2019-2020
|
||
Released 2020-11-14.
|
||
Transitional release, including new doc system.</p>
|
||
</div></blockquote>
|
||
<p>Backported from develop: Python 3.8, 3.9 support. Django 3.2+ support, Twisted 21+ support.</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">is_typeclass(obj</span> <span class="pre">(Object),</span> <span class="pre">exact</span> <span class="pre">(bool))</span></code> now defaults to exact=False</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">py</span></code> command now reroutes stdout to output results in-game client. <code class="docutils literal notranslate"><span class="pre">py</span></code>
|
||
without arguments starts a full interactive Python console.</p></li>
|
||
<li><p>Webclient default to a single input pane instead of two. Now defaults to no help-popup.</p></li>
|
||
<li><p>Webclient fix of prompt display</p></li>
|
||
<li><p>Webclient multimedia support for relaying images, video and sounds via
|
||
<code class="docutils literal notranslate"><span class="pre">.msg(image=URL)</span></code>, <code class="docutils literal notranslate"><span class="pre">.msg(video=URL)</span></code>
|
||
and <code class="docutils literal notranslate"><span class="pre">.msg(audio=URL)</span></code></p></li>
|
||
<li><p>Add Spanish translation (fermuch)</p></li>
|
||
<li><p>Expand <code class="docutils literal notranslate"><span class="pre">GLOBAL_SCRIPTS</span></code> container to always start scripts and to include all
|
||
global scripts regardless of how they were created.</p></li>
|
||
<li><p>Change settings to always use lists instead of tuples, to make mutable
|
||
settings easier to add to. (#1912)</p></li>
|
||
<li><p>Make new <code class="docutils literal notranslate"><span class="pre">CHANNEL_MUDINFO</span></code> setting for specifying the mudinfo channel</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">CHANNEL_CONNECTINFO</span></code> take full channel definition</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">DEFAULT_CHANNELS</span></code> list auto-create channels missing at reload</p></li>
|
||
<li><p>Webclient <code class="docutils literal notranslate"><span class="pre">ANSI->HTML</span></code> parser updated. Webclient line width changed from 1.6em to 1.1em
|
||
to better make ANSI graphics look the same as for third-party clients</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">AttributeHandler.get(return_list=True)</span></code> will return <code class="docutils literal notranslate"><span class="pre">[]</span></code> if there are no
|
||
Attributes instead of <code class="docutils literal notranslate"><span class="pre">[None]</span></code>.</p></li>
|
||
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">pillow</span></code> requirement (install especially if using imagefield)</p></li>
|
||
<li><p>Add Simplified Korean translation (aceamro)</p></li>
|
||
<li><p>Show warning on <code class="docutils literal notranslate"><span class="pre">start</span> <span class="pre">-l</span></code> if settings contains values unsafe for production.</p></li>
|
||
<li><p>Make code auto-formatted with Black.</p></li>
|
||
<li><p>Make default <code class="docutils literal notranslate"><span class="pre">set</span></code> command able to edit nested structures (PR by Aaron McMillan)</p></li>
|
||
<li><p>Allow running Evennia test suite from core repo with <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">test</span></code>.</p></li>
|
||
<li><p>Return <code class="docutils literal notranslate"><span class="pre">store_key</span></code> from <code class="docutils literal notranslate"><span class="pre">TickerHandler.add</span></code> and add <code class="docutils literal notranslate"><span class="pre">store_key</span></code> as a kwarg to
|
||
the <code class="docutils literal notranslate"><span class="pre">TickerHandler.remove</span></code> method. This makes it easier to manage tickers.</p></li>
|
||
<li><p>EvMore auto-justify now defaults to False since this works better with all types
|
||
of texts (such as tables). New <code class="docutils literal notranslate"><span class="pre">justify</span></code> bool. Old <code class="docutils literal notranslate"><span class="pre">justify_kwargs</span></code> remains
|
||
but is now only used to pass extra kwargs into the justify function.</p></li>
|
||
<li><p>EvMore <code class="docutils literal notranslate"><span class="pre">text</span></code> argument can now also be a list or a queryset. Querysets will be
|
||
sliced to only return the required data per page.</p></li>
|
||
<li><p>Improve performance of <code class="docutils literal notranslate"><span class="pre">find</span></code> and <code class="docutils literal notranslate"><span class="pre">objects</span></code> commands on large data sets (strikaco)</p></li>
|
||
<li><p>New <code class="docutils literal notranslate"><span class="pre">CHANNEL_HANDLER_CLASS</span></code> setting allows for replacing the ChannelHandler entirely.</p></li>
|
||
<li><p>Made <code class="docutils literal notranslate"><span class="pre">py</span></code> interactive mode support regular quit() and more verbose.</p></li>
|
||
<li><p>Made <code class="docutils literal notranslate"><span class="pre">Account.options.get</span></code> accept <code class="docutils literal notranslate"><span class="pre">default=None</span></code> kwarg to mimic other uses of get. Set
|
||
the new <code class="docutils literal notranslate"><span class="pre">raise_exception</span></code> boolean if ranting to raise KeyError on a missing key.</p></li>
|
||
<li><p>Moved behavior of unmodified <code class="docutils literal notranslate"><span class="pre">Command</span></code> and <code class="docutils literal notranslate"><span class="pre">MuxCommand</span></code> <code class="docutils literal notranslate"><span class="pre">.func()</span></code> to new
|
||
<code class="docutils literal notranslate"><span class="pre">.get_command_info()</span></code> method for easier overloading and access. (Volund)</p></li>
|
||
<li><p>Removed unused <code class="docutils literal notranslate"><span class="pre">CYCLE_LOGFILES</span></code> setting. Added <code class="docutils literal notranslate"><span class="pre">SERVER_LOG_DAY_ROTATION</span></code>
|
||
and <code class="docutils literal notranslate"><span class="pre">SERVER_LOG_MAX_SIZE</span></code> (and equivalent for PORTAL) to control log rotation.</p></li>
|
||
<li><p>Addded <code class="docutils literal notranslate"><span class="pre">inside_rec</span></code> lockfunc - if room is locked, the normal <code class="docutils literal notranslate"><span class="pre">inside()</span></code> lockfunc will
|
||
fail e.g. for your inventory objs (since their loc is you), whereas this will pass.</p></li>
|
||
<li><p>RPSystem contrib’s CmdRecog will now list all recogs if no arg is given. Also multiple
|
||
bugfixes.</p></li>
|
||
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">dummy@example.com</span></code> as a default account email when unset, a string is no longer
|
||
required by Django.</p></li>
|
||
<li><p>Fixes to <code class="docutils literal notranslate"><span class="pre">spawn</span></code>, make updating an existing prototype/object work better. Add <code class="docutils literal notranslate"><span class="pre">/raw</span></code> switch
|
||
to <code class="docutils literal notranslate"><span class="pre">spawn</span></code> command to extract the raw prototype dict for manual editing.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">list_to_string</span></code> is now <code class="docutils literal notranslate"><span class="pre">iter_to_string</span></code> (but old name still works as legacy alias). It will
|
||
now accept any input, including generators and single values.</p></li>
|
||
<li><p>EvTable should now correctly handle columns with wider asian-characters in them.</p></li>
|
||
<li><p>Update Twisted requirement to >=2.3.0 to close security vulnerability</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">$random</span></code> inlinefunc, supports minval,maxval arguments that can be ints and floats.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">evennia.utils.inlinefuncs.raw(<str>)</span></code> as a helper to escape inlinefuncs in a string.</p></li>
|
||
<li><p>Make CmdGet/Drop/Give give proper error if <code class="docutils literal notranslate"><span class="pre">obj.move_to</span></code> returns <code class="docutils literal notranslate"><span class="pre">False</span></code>.</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">Object/Room/Exit.create</span></code>’s <code class="docutils literal notranslate"><span class="pre">account</span></code> argument optional. If not given, will set perms
|
||
to that of the object itself (along with normal Admin/Dev permission).</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">INLINEFUNC_STACK_MAXSIZE</span></code> default visible in <code class="docutils literal notranslate"><span class="pre">settings_default.py</span></code>.</p></li>
|
||
<li><p>Change how <code class="docutils literal notranslate"><span class="pre">ic</span></code> finds puppets; non-priveleged users will use <code class="docutils literal notranslate"><span class="pre">_playable_characters</span></code> list as
|
||
candidates, Builders+ will use list, local search and only global search if no match found.</p></li>
|
||
<li><p>Make <code class="docutils literal notranslate"><span class="pre">cmd.at_post_cmd()</span></code> always run after <code class="docutils literal notranslate"><span class="pre">cmd.func()</span></code>, even when the latter uses delays
|
||
with yield.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvMore</span></code> support for db queries and django paginators as well as easier to override for custom
|
||
pagination (e.g. to create EvTables for every page instead of splittine one table)</p></li>
|
||
<li><p>Using <code class="docutils literal notranslate"><span class="pre">EvMore</span> <span class="pre">pagination</span></code>, dramatically improves performance of <code class="docutils literal notranslate"><span class="pre">spawn/list</span></code> and <code class="docutils literal notranslate"><span class="pre">scripts</span></code> listings
|
||
(100x speed increase for displaying 1000+ prototypes/scripts).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvMenu</span></code> now uses the more logically named <code class="docutils literal notranslate"><span class="pre">.ndb._evmenu</span></code> instead of <code class="docutils literal notranslate"><span class="pre">.ndb._menutree</span></code> to store itself.
|
||
Both still work for backward compatibility, but <code class="docutils literal notranslate"><span class="pre">_menutree</span></code> is deprecated.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">EvMenu.msg(txt)</span></code> added as a central place to send text to the user, makes it easier to override.
|
||
Default <code class="docutils literal notranslate"><span class="pre">EvMenu.msg</span></code> sends with OOB type=“menu” for use with OOB and webclient pane-redirects.</p></li>
|
||
<li><p>New EvMenu templating system for quickly building simpler EvMenus without as much code.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">Command.client_height()</span></code> method to match existing <code class="docutils literal notranslate"><span class="pre">.client_width</span></code> (stricako)</p></li>
|
||
<li><p>Include more Web-client info in <code class="docutils literal notranslate"><span class="pre">session.protocol_flags</span></code>.</p></li>
|
||
<li><p>Fixes in multi-match situations - don’t allow finding/listing multimatches for 3-box when
|
||
only two boxes in location.</p></li>
|
||
<li><p>Fix for TaskHandler with proper deferred returns/ability to cancel etc (PR by davewiththenicehat)</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">PermissionHandler.check</span></code> method for straight string perm-checks without needing lockstrings.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">evennia.utils.utils.strip_unsafe_input</span></code> for removing html/newlines/tags from user input. The
|
||
<code class="docutils literal notranslate"><span class="pre">INPUT_CLEANUP_BYPASS_PERMISSIONS</span></code> is a list of perms that bypass this safety stripping.</p></li>
|
||
<li><p>Make default <code class="docutils literal notranslate"><span class="pre">set</span></code> and <code class="docutils literal notranslate"><span class="pre">examine</span></code> commands aware of Attribute categories.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evennia-0-9">
|
||
<h2>Evennia 0.9<a class="headerlink" href="#evennia-0-9" title="Permalink to this headline">¶</a></h2>
|
||
<blockquote>
|
||
<div><p>2018-2019
|
||
Released Oct 2019</p>
|
||
</div></blockquote>
|
||
<section id="distribution">
|
||
<h3>Distribution<a class="headerlink" href="#distribution" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>New requirement: Python 3.7 (py2.7 support removed)</p></li>
|
||
<li><p>Django 2.1</p></li>
|
||
<li><p>Twisted 19.2.1</p></li>
|
||
<li><p>Autobahn websockets (removed old tmwx)</p></li>
|
||
<li><p>Docker image updated</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="commands">
|
||
<h3>Commands<a class="headerlink" href="#commands" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">@</span></code>-prefix from all default commands (prefixes still work, optional)</p></li>
|
||
<li><p>Removed default <code class="docutils literal notranslate"><span class="pre">@delaccount</span></code> command, incorporating as <code class="docutils literal notranslate"><span class="pre">@account/delete</span></code> instead. Added confirmation
|
||
question.</p></li>
|
||
<li><p>Add new <code class="docutils literal notranslate"><span class="pre">@force</span></code> command to have another object perform a command.</p></li>
|
||
<li><p>Add the Portal uptime to the <code class="docutils literal notranslate"><span class="pre">@time</span></code> command.</p></li>
|
||
<li><p>Make the <code class="docutils literal notranslate"><span class="pre">@link</span></code> command first make a local search before a global search.</p></li>
|
||
<li><p>Have the default Unloggedin-look command look for optional <code class="docutils literal notranslate"><span class="pre">connection_screen()</span></code> callable in
|
||
<code class="docutils literal notranslate"><span class="pre">mygame/server/conf/connection_screen.py</span></code>. This allows for more flexible welcome screens
|
||
that are calculated on the fly.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">@py</span></code> command now defaults to escaping html tags in its output when viewing in the webclient.
|
||
Use new <code class="docutils literal notranslate"><span class="pre">/clientraw</span></code> switch to get old behavior (issue #1369).</p></li>
|
||
<li><p>Shorter and more informative, dynamic, listing of on-command vars if not
|
||
setting func() in child command class.</p></li>
|
||
<li><p>New Command helper methods</p>
|
||
<ul>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">.client_width()</span></code> returns client width of the session running the command.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">.styled_table(*args,</span> <span class="pre">**kwargs)</span></code> returns a formatted evtable styled by user’s options</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">.style_header(*args,</span> <span class="pre">**kwargs)</span></code> creates styled header entry</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">.style_separator(*args,</span> <span class="pre">**kwargs)</span></code> ” separator</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">.style_footer(*args,</span> <span class="pre">**kwargs)</span></code> ” footer</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="web">
|
||
<h3>Web<a class="headerlink" href="#web" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Change webclient from old txws version to use more supported/feature-rich Autobahn websocket library</p></li>
|
||
</ul>
|
||
<section id="evennia-game-index">
|
||
<h4>Evennia game index<a class="headerlink" href="#evennia-game-index" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Made Evennia game index client a part of core - now configured from settings file (old configs
|
||
need to be moved)</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">connections</span></code> command starts a wizard that helps you connect your game to the game index.</p></li>
|
||
<li><p>The game index now accepts games with no public telnet/webclient info (for early prototypes).</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="new-golden-layout-based-webclient-ui-friarzen">
|
||
<h4>New golden-layout based Webclient UI (@friarzen)<a class="headerlink" href="#new-golden-layout-based-webclient-ui-friarzen" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Features</p>
|
||
<ul>
|
||
<li><p>Much slicker behavior and more professional look</p></li>
|
||
<li><p>Allows tabbing as well as click and drag of panes in any grid position</p></li>
|
||
<li><p>Renaming tabs, assignments of data tags and output types are simple per-pane menus now</p></li>
|
||
<li><p>Any number of input panes, with separate histories</p></li>
|
||
<li><p>Button UI (disabled in JS by default)</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
<section id="web-django-standard-initiative-strikaco">
|
||
<h4>Web/Django standard initiative (@strikaco)<a class="headerlink" href="#web-django-standard-initiative-strikaco" title="Permalink to this headline">¶</a></h4>
|
||
<ul class="simple">
|
||
<li><p>Features</p>
|
||
<ul>
|
||
<li><p>Adds a series of web-based forms and generic class-based views</p>
|
||
<ul>
|
||
<li><p>Accounts</p>
|
||
<ul>
|
||
<li><p>Register - Enhances registration; allows optional collection of email address</p></li>
|
||
<li><p>Form - Adds a generic Django form for creating Accounts from the web</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Characters</p>
|
||
<ul>
|
||
<li><p>Create - Authenticated users can create new characters from the website (requires associated form)</p></li>
|
||
<li><p>Detail - Authenticated and authorized users can view select details about characters</p></li>
|
||
<li><p>List - Authenticated and authorized users can browse a list of all characters</p></li>
|
||
<li><p>Manage - Authenticated users can edit or delete owned characters from the web</p></li>
|
||
<li><p>Form - Adds a generic Django form for creating characters from the web</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Channels</p>
|
||
<ul>
|
||
<li><p>Detail - Authorized users can view channel logs from the web</p></li>
|
||
<li><p>List - Authorized users can browse a list of all channels</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Help Entries</p>
|
||
<ul>
|
||
<li><p>Detail - Authorized users can view help entries from the web</p></li>
|
||
<li><p>List - Authorized users can browse a list of all help entries from the web</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Navbar changes</p>
|
||
<ul>
|
||
<li><p>Characters - Link to character list</p></li>
|
||
<li><p>Channels - Link to channel list</p></li>
|
||
<li><p>Help - Link to help entry list</p></li>
|
||
<li><p>Puppeting</p>
|
||
<ul>
|
||
<li><p>Users can puppet their own characters within the context of the website</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Dropdown</p>
|
||
<ul>
|
||
<li><p>Link to create characters</p></li>
|
||
<li><p>Link to manage characters</p></li>
|
||
<li><p>Link to quick-select puppets</p></li>
|
||
<li><p>Link to password change workflow</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Functions</p>
|
||
<ul>
|
||
<li><p>Updates Bootstrap to v4 stable</p></li>
|
||
<li><p>Enables use of Django Messages framework to communicate with users in browser</p></li>
|
||
<li><p>Implements webclient/website <code class="docutils literal notranslate"><span class="pre">_shared_login</span></code> functionality as Django middleware</p></li>
|
||
<li><p>‘account’ and ‘puppet’ are added to all request contexts for authenticated users</p></li>
|
||
<li><p>Adds unit tests for all web views</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Cosmetic</p>
|
||
<ul>
|
||
<li><p>Prettifies Django ‘forgot password’ workflow (requires SMTP to actually function)</p></li>
|
||
<li><p>Prettifies Django ‘change password’ workflow</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Bugfixes</p>
|
||
<ul>
|
||
<li><p>Fixes bug on login page where error messages were not being displayed</p></li>
|
||
<li><p>Remove strvalue field from admin; it made no sense to have here, being an optimization field
|
||
for internal use.</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="prototypes">
|
||
<h3>Prototypes<a class="headerlink" href="#prototypes" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.prototypes.save_prototype</span></code> now takes the prototype as a normal
|
||
argument (<code class="docutils literal notranslate"><span class="pre">prototype</span></code>) instead of having to give it as <code class="docutils literal notranslate"><span class="pre">**prototype</span></code>.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.prototypes.search_prototype</span></code> has a new kwarg <code class="docutils literal notranslate"><span class="pre">require_single=False</span></code> that
|
||
raises a KeyError exception if query gave 0 or >1 results.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.prototypes.spawner</span></code> can now spawn by passing a <code class="docutils literal notranslate"><span class="pre">prototype_key</span></code></p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="typeclasses">
|
||
<h3>Typeclasses<a class="headerlink" href="#typeclasses" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Add new methods on all typeclasses, useful specifically for object handling from the website/admin:</p>
|
||
<ul>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">web_get_admin_url()</span></code>: Returns the path to the object detail page in the Admin backend.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">web_get_create_url()</span></code>: Returns the path to the typeclass’ creation page on the website, if implemented.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">web_get_absolute_url()</span></code>: Returns the path to the object’s detail page on the website, if implemented.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">web_get_update_url()</span></code>: Returns the path to the object’s update page on the website, if implemented.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">web_get_delete_url()</span></code>: Returns the path to the object’s delete page on the website, if implemented.</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>All typeclasses have new helper class method <code class="docutils literal notranslate"><span class="pre">create</span></code>, which encompasses useful functionality
|
||
that used to be embedded for example in the respective <code class="docutils literal notranslate"><span class="pre">@create</span></code> or <code class="docutils literal notranslate"><span class="pre">@connect</span></code> commands.</p></li>
|
||
<li><p>DefaultAccount now has new class methods implementing many things that used to be in unloggedin
|
||
commands (these can now be customized on the class instead):</p>
|
||
<ul>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">is_banned()</span></code>: Checks if a given username or IP is banned.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">get_username_validators</span></code>: Return list of validators for username validation (see
|
||
<code class="docutils literal notranslate"><span class="pre">settings.AUTH_USERNAME_VALIDATORS</span></code>)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">authenticate</span></code>: Method to check given username/password.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">normalize_username</span></code>: Normalizes names so (for Unicode environments) users cannot mimic existing usernames by replacing select characters with visually-similar Unicode chars.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">validate_username</span></code>: Mechanism for validating a username based on predefined Django validators.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">validate_password</span></code>: Mechanism for validating a password based on predefined Django validators.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">set_password</span></code>: Apply password to account, using validation checks.</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">AttributeHandler.remove</span></code> and <code class="docutils literal notranslate"><span class="pre">TagHandler.remove</span></code> can now be used to delete by-category. If neither
|
||
key nor category is given, they now work the same as .clear().</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="protocols">
|
||
<h3>Protocols<a class="headerlink" href="#protocols" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Support for <code class="docutils literal notranslate"><span class="pre">Grapevine</span></code> MUD-chat network (“channels” supported)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="server">
|
||
<h3>Server<a class="headerlink" href="#server" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Convert ServerConf model to store its values as a Picklefield (same as
|
||
Attributes) instead of using a custom solution.</p></li>
|
||
<li><p>OOB: Add support for MSDP LIST, REPORT, UNREPORT commands (re-mapped to <code class="docutils literal notranslate"><span class="pre">msdp_list</span></code>,
|
||
<code class="docutils literal notranslate"><span class="pre">msdp_report</span></code>, <code class="docutils literal notranslate"><span class="pre">msdp_unreport</span></code>, inlinefuncs)</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">evennia.ANSIString</span></code> to flat API.</p></li>
|
||
<li><p>Server/Portal log files now cycle to names on the form <code class="docutils literal notranslate"><span class="pre">server_.log_19_03_08_</span></code> instead of <code class="docutils literal notranslate"><span class="pre">server.log___19.3.8</span></code>, retaining
|
||
unix file sorting order.</p></li>
|
||
<li><p>Django signals fire for important events: Puppet/Unpuppet, Object create/rename, Login,
|
||
Logout, Login fail Disconnect, Account create/rename</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="settings">
|
||
<h3>Settings<a class="headerlink" href="#settings" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">GLOBAL_SCRIPTS</span></code> - dict defining typeclasses of global scripts to store on the new
|
||
<code class="docutils literal notranslate"><span class="pre">evennia.GLOBAL_SCRIPTS</span></code> container. These will auto-start when Evennia start and will always
|
||
exist.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">OPTIONS_ACCOUNTS_DEFAULT</span></code> - option dict with option defaults and Option classes</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">OPTION_CLASS_MODULES</span></code> - classes representing an on-Account Option, on special form</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">VALIDATOR_FUNC_MODULES</span></code> - (general) text validator functions, for verifying an input
|
||
is on a specific form.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="utils">
|
||
<h3>Utils<a class="headerlink" href="#utils" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia</span></code> launcher now fully handles all django-admin commands, like running tests in parallel.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.utils.create.account</span></code> now also takes <code class="docutils literal notranslate"><span class="pre">tags</span></code> and <code class="docutils literal notranslate"><span class="pre">attrs</span></code> keywords.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.utils.interactive</span></code> decorator can now allow you to use yield(secs) to pause operation
|
||
in any function, not just in Command.func. Likewise, response = yield(question) will work
|
||
if the decorated function has an argument or kwarg <code class="docutils literal notranslate"><span class="pre">caller</span></code>.</p></li>
|
||
<li><p>Added many more unit tests.</p></li>
|
||
<li><p>Swap argument order of <code class="docutils literal notranslate"><span class="pre">evennia.set_trace</span></code> to <code class="docutils literal notranslate"><span class="pre">set_trace(term_size=(140,</span> <span class="pre">40),</span> <span class="pre">debugger='auto')</span></code>
|
||
since the size is more likely to be changed on the command line.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">utils.to_str(text,</span> <span class="pre">session=None)</span></code> now acts as the old <code class="docutils literal notranslate"><span class="pre">utils.to_unicode</span></code> (which was removed).
|
||
This converts to the str() type (not to a byte-string as in Evennia 0.8), trying different
|
||
encodings. This function will also force-convert any object passed to it into a string (so
|
||
<code class="docutils literal notranslate"><span class="pre">force_string</span></code> flag was removed and assumed always set).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">utils.to_bytes(text,</span> <span class="pre">session=None)</span></code> replaces the old <code class="docutils literal notranslate"><span class="pre">utils.to_str()</span></code> functionality and converts
|
||
str to bytes.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.MONITOR_HANDLER.all</span></code> now takes keyword argument <code class="docutils literal notranslate"><span class="pre">obj</span></code> to only retrieve monitors from that specific
|
||
Object (rather than all monitors in the entire handler).</p></li>
|
||
<li><p>Support adding <code class="docutils literal notranslate"><span class="pre">\f</span></code> in command doc strings to force where EvMore puts page breaks.</p></li>
|
||
<li><p>Validation Functions now added with standard API to homogenize user input validation.</p></li>
|
||
<li><p>Option Classes added to make storing user-options easier and smoother.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.VALIDATOR_CONTAINER</span></code> and <code class="docutils literal notranslate"><span class="pre">evennia.OPTION_CONTAINER</span></code> added to load these.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="contribs">
|
||
<h3>Contribs<a class="headerlink" href="#contribs" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Evscaperoom - a full puzzle engine for making multiplayer escape rooms in Evennia. Used to make
|
||
the entry for the MUD-Coder’s Guild’s 2019 Game Jam with the theme “One Room”, where it ranked #1.</p></li>
|
||
<li><p>Evennia game-index client no longer a contrib - moved into server core and configured with new
|
||
setting <code class="docutils literal notranslate"><span class="pre">GAME_INDEX_ENABLED</span></code>.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">extended_room</span></code> contrib saw some backwards-incompatible refactoring:</p>
|
||
<ul>
|
||
<li><p>All commands now begin with <code class="docutils literal notranslate"><span class="pre">CmdExtendedRoom</span></code>. So before it was <code class="docutils literal notranslate"><span class="pre">CmdExtendedLook</span></code>, now
|
||
it’s <code class="docutils literal notranslate"><span class="pre">CmdExtendedRoomLook</span></code> etc.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">detail</span></code> command was broken out of the <code class="docutils literal notranslate"><span class="pre">desc</span></code> command and is now a new, stand-alone command
|
||
<code class="docutils literal notranslate"><span class="pre">CmdExtendedRoomDetail</span></code>. This was done to make things easier to extend and to mimic how the detail
|
||
command works in the tutorial-world.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">detail</span></code> command now also supports deleting details (like the tutorial-world version).</p></li>
|
||
<li><p>The new <code class="docutils literal notranslate"><span class="pre">ExtendedRoomCmdSet</span></code> includes all the extended-room commands and is now the recommended way
|
||
to install the extended-room contrib.</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Reworked <code class="docutils literal notranslate"><span class="pre">menu_login</span></code> contrib to use latest EvMenu standards. Now also supports guest logins.</p></li>
|
||
<li><p>Mail contrib was refactored to have optional Command classes <code class="docutils literal notranslate"><span class="pre">CmdMail</span></code> for OOC+IC mail (added
|
||
to the CharacterCmdSet and <code class="docutils literal notranslate"><span class="pre">CmdMailCharacter</span></code> for IC-only mailing between chars (added to CharacterCmdSet)</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="translations">
|
||
<h3>Translations<a class="headerlink" href="#translations" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Simplified chinese, courtesy of user MaxAlex.</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
<section id="evennia-0-8">
|
||
<h2>Evennia 0.8<a class="headerlink" href="#evennia-0-8" title="Permalink to this headline">¶</a></h2>
|
||
<blockquote>
|
||
<div><p>2017-2018
|
||
Released Nov 2018</p>
|
||
</div></blockquote>
|
||
<section id="requirements">
|
||
<h3>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Up requirements to Django 1.11.x, Twisted 18 and pillow 5.2.0</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">inflect</span></code> dependency for automatic pluralization of object names.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="server-portal">
|
||
<h3>Server/Portal<a class="headerlink" href="#server-portal" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Removed <code class="docutils literal notranslate"><span class="pre">evennia_runner</span></code>, completely refactor <code class="docutils literal notranslate"><span class="pre">evennia_launcher.py</span></code> (the ‘evennia’ program)
|
||
with different functionality).</p></li>
|
||
<li><p>Both Portal/Server are now stand-alone processes (easy to run as daemon)</p></li>
|
||
<li><p>Made Portal the AMP Server for starting/restarting the Server (the AMP client)</p></li>
|
||
<li><p>Dynamic logging now happens using <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">-l</span></code> rather than by interactive mode.</p></li>
|
||
<li><p>Made AMP secure against erroneous HTTP requests on the wrong port (return error messages).</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">istart</span></code> option will start/switch the Server in foreground (interactive) mode, where it logs
|
||
to terminal and can be stopped with Ctrl-C. Using <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">reload</span></code>, or reloading in-game, will
|
||
return Server to normal daemon operation.</p></li>
|
||
<li><p>For validating passwords, use safe Django password-validation backend instead of custom Evennia one.</p></li>
|
||
<li><p>Alias <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">restart</span></code> to mean the same as <code class="docutils literal notranslate"><span class="pre">evennia</span> <span class="pre">reload</span></code>.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="prototype-changes">
|
||
<h3>Prototype changes<a class="headerlink" href="#prototype-changes" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>New OLC started from <code class="docutils literal notranslate"><span class="pre">olc</span></code> command for loading/saving/manipulating prototypes in a menu.</p></li>
|
||
<li><p>Moved evennia/utils/spawner.py into the new evennia/prototypes/ along with all new
|
||
functionality around prototypes.</p></li>
|
||
<li><p>A new form of prototype - database-stored prototypes, editable from in-game, was added. The old,
|
||
module-created prototypes remain as read-only prototypes.</p></li>
|
||
<li><p>All prototypes must have a key <code class="docutils literal notranslate"><span class="pre">prototype_key</span></code> identifying the prototype in listings. This is
|
||
checked to be server-unique. Prototypes created in a module will use the global variable name they
|
||
are assigned to if no <code class="docutils literal notranslate"><span class="pre">prototype_key</span></code> is given.</p></li>
|
||
<li><p>Prototype field <code class="docutils literal notranslate"><span class="pre">prototype</span></code> was renamed to <code class="docutils literal notranslate"><span class="pre">prototype_parent</span></code> to avoid mixing terms.</p></li>
|
||
<li><p>All prototypes must either have <code class="docutils literal notranslate"><span class="pre">typeclass</span></code> or <code class="docutils literal notranslate"><span class="pre">prototype_parent</span></code> defined. If using
|
||
<code class="docutils literal notranslate"><span class="pre">prototype_parent</span></code>, <code class="docutils literal notranslate"><span class="pre">typeclass</span></code> must be defined somewhere in the inheritance chain. This is a
|
||
change from Evennia 0.7 which allowed ‘mixin’ prototypes without <code class="docutils literal notranslate"><span class="pre">typeclass</span></code>/<code class="docutils literal notranslate"><span class="pre">prototype_key</span></code>. To
|
||
make a mixin now, give it a default typeclass, like <code class="docutils literal notranslate"><span class="pre">evennia.objects.objects.DefaultObject</span></code> and just
|
||
override in the child as needed.</p></li>
|
||
<li><p>Spawning an object using a prototype will automatically assign a new tag to it, named the same as
|
||
the <code class="docutils literal notranslate"><span class="pre">prototype_key</span></code> and with the category <code class="docutils literal notranslate"><span class="pre">from_prototype</span></code>.</p></li>
|
||
<li><p>The spawn command was extended to accept a full prototype on one line.</p></li>
|
||
<li><p>The spawn command got the /save switch to save the defined prototype and its key</p></li>
|
||
<li><p>The command spawn/menu will now start an OLC (OnLine Creation) menu to load/save/edit/spawn prototypes.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="evmenu">
|
||
<h3>EvMenu<a class="headerlink" href="#evmenu" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">EvMenu.helptext_formatter(helptext)</span></code> to allow custom formatting of per-node help.</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">evennia.utils.evmenu.list_node</span></code> decorator for turning an EvMenu node into a multi-page listing.</p></li>
|
||
<li><p>A <code class="docutils literal notranslate"><span class="pre">goto</span></code> option callable returning None (rather than the name of the next node) will now rerun the
|
||
current node instead of failing.</p></li>
|
||
<li><p>Better error handling of in-node syntax errors.</p></li>
|
||
<li><p>Improve dedent of default text/helptext formatter. Right-strip whitespace.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">debug</span></code> option when creating menu - this turns off persistence and makes the <code class="docutils literal notranslate"><span class="pre">menudebug</span></code>
|
||
command available for examining the current menu state.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="webclient">
|
||
<h3>Webclient<a class="headerlink" href="#webclient" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Webclient now uses a plugin system to inject new components from the html file.</p></li>
|
||
<li><p>Split-windows - divide input field into any number of horizontal/vertical panes and
|
||
assign different types of server messages to them.</p></li>
|
||
<li><p>Lots of cleanup and bug fixes.</p></li>
|
||
<li><p>Hot buttons plugin (friarzen) (disabled by default).</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="locks">
|
||
<h3>Locks<a class="headerlink" href="#locks" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>New function <code class="docutils literal notranslate"><span class="pre">evennia.locks.lockhandler.check_lockstring</span></code>. This allows for checking an object
|
||
against an arbitrary lockstring without needing the lock to be stored on an object first.</p></li>
|
||
<li><p>New function <code class="docutils literal notranslate"><span class="pre">evennia.locks.lockhandler.validate_lockstring</span></code> allows for stand-alone validation
|
||
of a lockstring.</p></li>
|
||
<li><p>New function <code class="docutils literal notranslate"><span class="pre">evennia.locks.lockhandler.get_all_lockfuncs</span></code> gives a dict {“name”: lockfunc} for
|
||
all available lock funcs. This is useful for dynamic listings.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id1">
|
||
<h3>Utils<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Added new <code class="docutils literal notranslate"><span class="pre">columnize</span></code> function for easily splitting text into multiple columns. At this point it
|
||
is not working too well with ansi-colored text however.</p></li>
|
||
<li><p>Extend the <code class="docutils literal notranslate"><span class="pre">dedent</span></code> function with a new <code class="docutils literal notranslate"><span class="pre">baseline_index</span></code> kwarg. This allows to force all lines to
|
||
the indentation given by the given line regardless of if other lines were already a 0 indentation.
|
||
This removes a problem with the original <code class="docutils literal notranslate"><span class="pre">textwrap.dedent</span></code> which will only dedent to the least
|
||
indented part of a text.</p></li>
|
||
<li><p>Added <code class="docutils literal notranslate"><span class="pre">exit_cmd</span></code> to EvMore pager, to allow for calling a command (e.g. ‘look’) when leaving the pager.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">get_all_typeclasses</span></code> will return dict <code class="docutils literal notranslate"><span class="pre">{"path":</span> <span class="pre">typeclass,</span> <span class="pre">...}</span></code> for all typeclasses available
|
||
in the system. This is used by the new <code class="docutils literal notranslate"><span class="pre">@typeclass/list</span></code> subcommand (useful for builders etc).</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.utils.dbserialize.deserialize(obj)</span></code> is a new helper function to <em>completely</em> disconnect
|
||
a mutable recovered from an Attribute from the database. This will convert all nested <code class="docutils literal notranslate"><span class="pre">_Saver*</span></code>
|
||
classes to their plain-Python counterparts.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="general">
|
||
<h3>General<a class="headerlink" href="#general" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Start structuring the <code class="docutils literal notranslate"><span class="pre">CHANGELOG</span></code> to list features in more detail.</p></li>
|
||
<li><p>Docker image <code class="docutils literal notranslate"><span class="pre">evennia/evennia:develop</span></code> is now auto-built, tracking the develop branch.</p></li>
|
||
<li><p>Inflection and grouping of multiple objects in default room (an box, three boxes)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">evennia.set_trace()</span></code> is now a shortcut for launching pdb/pudb on a line in the Evennia event loop.</p></li>
|
||
<li><p>Removed the enforcing of <code class="docutils literal notranslate"><span class="pre">MAX_NR_CHARACTERS=1</span></code> for <code class="docutils literal notranslate"><span class="pre">MULTISESSION_MODE</span></code> <code class="docutils literal notranslate"><span class="pre">0</span></code> and <code class="docutils literal notranslate"><span class="pre">1</span></code> by default.</p></li>
|
||
<li><p>Add <code class="docutils literal notranslate"><span class="pre">evennia.utils.logger.log_sec</span></code> for logging security-related messages (marked SS in log).</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="id2">
|
||
<h3>Contribs<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Auditing</span></code> (Johnny): Log and filter server input/output for security purposes</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Build</span> <span class="pre">Menu</span></code> (vincent-lg): New @edit command to edit object properties in a menu.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Field</span> <span class="pre">Fill</span></code> (Tim Ashley Jenkins): Wraps EvMenu for creating submittable forms.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Health</span> <span class="pre">Bar</span></code> (Tim Ashley Jenkins): Easily create colorful bars/meters.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Tree</span> <span class="pre">select</span></code> (Fluttersprite): Wrap EvMenu to create a common type of menu from a string.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Turnbattle</span> <span class="pre">suite</span></code> (Tim Ashley Jenkins)- the old <code class="docutils literal notranslate"><span class="pre">turnbattle.py</span></code> was moved into its own
|
||
<code class="docutils literal notranslate"><span class="pre">turnbattle/</span></code> package and reworked with many different flavors of combat systems:</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">tb_basic</span></code> - The basic turnbattle system, with initiative/turn order attack/defense/damage.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">tb_equip</span></code> - Adds weapon and armor, wielding, accuracy modifiers.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">tb_items</span></code> - Extends <code class="docutils literal notranslate"><span class="pre">tb_equip</span></code> with item use with conditions/status effects.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">tb_magic</span></code> - Extends <code class="docutils literal notranslate"><span class="pre">tb_equip</span></code> with spellcasting.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">tb_range</span></code> - Adds system for abstract positioning and movement.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">extended_room</span></code> contrib saw some backwards-incompatible refactoring:</p>
|
||
<ul>
|
||
<li><p>All commands now begin with <code class="docutils literal notranslate"><span class="pre">CmdExtendedRoom</span></code>. So before it was <code class="docutils literal notranslate"><span class="pre">CmdExtendedLook</span></code>, now
|
||
it’s <code class="docutils literal notranslate"><span class="pre">CmdExtendedRoomLook</span></code> etc.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">detail</span></code> command was broken out of the <code class="docutils literal notranslate"><span class="pre">desc</span></code> command and is now a new, stand-alone command
|
||
<code class="docutils literal notranslate"><span class="pre">CmdExtendedRoomDetail</span></code>. This was done to make things easier to extend and to mimic how the detail
|
||
command works in the tutorial-world.</p></li>
|
||
<li><p>The <code class="docutils literal notranslate"><span class="pre">detail</span></code> command now also supports deleting details (like the tutorial-world version).</p></li>
|
||
<li><p>The new <code class="docutils literal notranslate"><span class="pre">ExtendedRoomCmdSet</span></code> includes all the extended-room commands and is now the recommended way
|
||
to install the extended-room contrib.</p></li>
|
||
</ul>
|
||
</li>
|
||
<li><p>Updates and some cleanup of existing contribs.</p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="internationalization">
|
||
<h3>Internationalization<a class="headerlink" href="#internationalization" title="Permalink to this headline">¶</a></h3>
|
||
<ul class="simple">
|
||
<li><p>Polish translation by user ogotai</p></li>
|
||
</ul>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
<section class="tex2jax_ignore mathjax_ignore" id="overview-changelogs">
|
||
<h1>Overview-Changelogs<a class="headerlink" href="#overview-changelogs" title="Permalink to this headline">¶</a></h1>
|
||
<blockquote>
|
||
<div><p>These are changelogs from a time before we used formal version numbers.</p>
|
||
</div></blockquote>
|
||
<section id="sept-2017">
|
||
<h2>Sept 2017:<a class="headerlink" href="#sept-2017" title="Permalink to this headline">¶</a></h2>
|
||
<p>Release of Evennia 0.7; upgrade to Django 1.11, change ‘Player’ to
|
||
‘Account’, rework the website template and a slew of other updates.
|
||
Info on what changed and how to migrate is found here:
|
||
<a class="reference external" href="https://groups.google.com/forum/#%21msg/evennia/0JYYNGY-NfE/cDFaIwmPBAAJ">https://groups.google.com/forum/#!msg/evennia/0JYYNGY-NfE/cDFaIwmPBAAJ</a></p>
|
||
</section>
|
||
<section id="feb-2017">
|
||
<h2>Feb 2017:<a class="headerlink" href="#feb-2017" title="Permalink to this headline">¶</a></h2>
|
||
<p>New devel branch created, to lead up to Evennia 0.7.</p>
|
||
</section>
|
||
<section id="dec-2016">
|
||
<h2>Dec 2016:<a class="headerlink" href="#dec-2016" title="Permalink to this headline">¶</a></h2>
|
||
<p>Lots of bugfixes and considerable uptick in contributors. Unittest coverage
|
||
and PEP8 adoption and refactoring.</p>
|
||
</section>
|
||
<section id="may-2016">
|
||
<h2>May 2016:<a class="headerlink" href="#may-2016" title="Permalink to this headline">¶</a></h2>
|
||
<p>Evennia 0.6 with completely reworked Out-of-band system, making
|
||
the message path completely flexible and built around input/outputfuncs.
|
||
A completely new webclient, split into the evennia.js library and a
|
||
gui library, making it easier to customize.</p>
|
||
</section>
|
||
<section id="feb-2016">
|
||
<h2>Feb 2016:<a class="headerlink" href="#feb-2016" title="Permalink to this headline">¶</a></h2>
|
||
<p>Added the new EvMenu and EvMore utilities, updated EvEdit and cleaned up
|
||
a lot of the batchcommand functionality. Started work on new Devel branch.</p>
|
||
</section>
|
||
<section id="sept-2015">
|
||
<h2>Sept 2015:<a class="headerlink" href="#sept-2015" title="Permalink to this headline">¶</a></h2>
|
||
<p>Evennia 0.5. Merged devel branch, full library format implemented.</p>
|
||
</section>
|
||
<section id="feb-2015">
|
||
<h2>Feb 2015:<a class="headerlink" href="#feb-2015" title="Permalink to this headline">¶</a></h2>
|
||
<p>Development currently in devel/ branch. Moved typeclasses to use
|
||
django’s proxy functionality. Changed the Evennia folder layout to a
|
||
library format with a stand-alone launcher, in preparation for making
|
||
an ‘evennia’ pypy package and using versioning. The version we will
|
||
merge with will likely be 0.5. There is also work with an expanded
|
||
testing structure and the use of threading for saves. We also now
|
||
use Travis for automatic build checking.</p>
|
||
</section>
|
||
<section id="sept-2014">
|
||
<h2>Sept 2014:<a class="headerlink" href="#sept-2014" title="Permalink to this headline">¶</a></h2>
|
||
<p>Updated to Django 1.7+ which means South dependency was dropped and
|
||
minimum Python version upped to 2.7. MULTISESSION_MODE=3 was added
|
||
and the web customization system was overhauled using the latest
|
||
functionality of django. Otherwise, mostly bug-fixes and
|
||
implementation of various smaller feature requests as we got used
|
||
to github. Many new users have appeared.</p>
|
||
</section>
|
||
<section id="jan-2014">
|
||
<h2>Jan 2014:<a class="headerlink" href="#jan-2014" title="Permalink to this headline">¶</a></h2>
|
||
<p>Moved Evennia project from Google Code to <a class="reference external" href="http://github.com/evennia/evennia">github.com/evennia/evennia</a>.</p>
|
||
</section>
|
||
<section id="nov-2013">
|
||
<h2>Nov 2013:<a class="headerlink" href="#nov-2013" title="Permalink to this headline">¶</a></h2>
|
||
<p>Moved the internal webserver into the Server and added support for
|
||
out-of-band protocols (MSDP initially). This large development push
|
||
also meant fixes and cleanups of the way attributes were handled.
|
||
Tags were added, along with proper handlers for permissions, nicks
|
||
and aliases.</p>
|
||
</section>
|
||
<section id="may-2013">
|
||
<h2>May 2013:<a class="headerlink" href="#may-2013" title="Permalink to this headline">¶</a></h2>
|
||
<p>Made players able to control more than one Character at the same
|
||
time, through the MULTISESSION_MODE=2 addition. This lead to a lot
|
||
of internal changes for the server.</p>
|
||
</section>
|
||
<section id="oct-2012">
|
||
<h2>Oct 2012:<a class="headerlink" href="#oct-2012" title="Permalink to this headline">¶</a></h2>
|
||
<p>Changed Evennia from the Modified Artistic 1.0 license to the more
|
||
standard and permissive BSD license. Lots of updates and bug fixes as
|
||
more people start to use it in new ways. Lots of new caching and
|
||
speed-ups.</p>
|
||
</section>
|
||
<section id="march-2012">
|
||
<h2>March 2012:<a class="headerlink" href="#march-2012" title="Permalink to this headline">¶</a></h2>
|
||
<p>Evennia’s API has changed and simplified slightly in that the
|
||
base-modules where removed from game/gamesrc. Instead admins are
|
||
encouraged to explicitly create new modules under game/gamesrc/ when
|
||
they want to implement their game - gamesrc/ is empty by default
|
||
except for the example folders that contain template files to use for
|
||
this purpose. We also added the <a class="reference external" href="http://ev.py">ev.py</a> file, implementing a new, flat
|
||
API. Work is ongoing to add support for mud-specific telnet
|
||
extensions, notably the MSDP and GMCP out-of-band extensions. On the
|
||
community side, evennia’s dev blog was started and linked on planet
|
||
Mud-dev aggregator.</p>
|
||
</section>
|
||
<section id="nov-2011">
|
||
<h2>Nov 2011:<a class="headerlink" href="#nov-2011" title="Permalink to this headline">¶</a></h2>
|
||
<p>After creating several different proof-of-concept game systems (in
|
||
contrib and privately) as well testing lots of things to make sure the
|
||
implementation is basically sound, we are declaring Evennia out of
|
||
Alpha. This can mean as much or as little as you want, admittedly -
|
||
development is still heavy but the issue list is at an all-time low
|
||
and the server is slowly stabilizing as people try different things
|
||
with it. So Beta it is!</p>
|
||
</section>
|
||
<section id="aug-2011">
|
||
<h2>Aug 2011:<a class="headerlink" href="#aug-2011" title="Permalink to this headline">¶</a></h2>
|
||
<p>Split Evennia into two processes: Portal and Server. After a lot of
|
||
work trying to get in-memory code-reloading to work, it’s clear this
|
||
is not Python’s forte - it’s impossible to catch all exceptions,
|
||
especially in asynchronous code like this. Trying to do so results in
|
||
hackish, flakey and unstable code. With the Portal-Server split, the
|
||
Server can simply be rebooted while players connected to the Portal
|
||
remain connected. The two communicates over twisted’s AMP protocol.</p>
|
||
</section>
|
||
<section id="may-2011">
|
||
<h2>May 2011:<a class="headerlink" href="#may-2011" title="Permalink to this headline">¶</a></h2>
|
||
<p>The new version of Evennia, originally hitting trunk in Aug2010, is
|
||
maturing. All commands from the pre-Aug version, including IRC/IMC2
|
||
support works again. An ajax web-client was added earlier in the year,
|
||
including moving Evennia to be its own webserver (no more need for
|
||
Apache or django-testserver). Contrib-folder added.</p>
|
||
</section>
|
||
<section id="aug-2010">
|
||
<h2>Aug 2010:<a class="headerlink" href="#aug-2010" title="Permalink to this headline">¶</a></h2>
|
||
<p>Evennia-griatch-branch is ready for merging with trunk. This marks a
|
||
rather big change in the inner workings of the server, such as the
|
||
introduction of TypeClasses and Scripts (as compared to the old
|
||
ScriptParents and Events) but should hopefully bring everything
|
||
together into one consistent package as code development continues.</p>
|
||
</section>
|
||
<section id="may-2010">
|
||
<h2>May 2010:<a class="headerlink" href="#may-2010" title="Permalink to this headline">¶</a></h2>
|
||
<p>Evennia is currently being heavily revised and cleaned from
|
||
the years of gradual piecemeal development. It is thus in a very
|
||
‘Alpha’ stage at the moment. This means that old code snippets
|
||
will not be backwards compatabile. Changes touch almost all
|
||
parts of Evennia’s innards, from the way Objects are handled
|
||
to Events, Commands and Permissions.</p>
|
||
</section>
|
||
<section id="april-2010">
|
||
<h2>April 2010:<a class="headerlink" href="#april-2010" title="Permalink to this headline">¶</a></h2>
|
||
<p>Griatch takes over Maintainership of the Evennia project from
|
||
the original creator Greg Taylor.</p>
|
||
</section>
|
||
</section>
|
||
<section class="tex2jax_ignore mathjax_ignore" id="older">
|
||
<h1>Older<a class="headerlink" href="#older" title="Permalink to this headline">¶</a></h1>
|
||
<p>Earlier revisions, with previous maintainer, used SVN on Google Code
|
||
and have no changelogs.</p>
|
||
<p>First commit (Evennia’s birthday) was November 20, 2006.</p>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="related" role="navigation" aria-label="related navigation">
|
||
<h3>Navigation</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="../genindex.html" title="General Index"
|
||
>index</a></li>
|
||
<li class="right" >
|
||
<a href="../py-modindex.html" title="Python Module Index"
|
||
>modules</a> |</li>
|
||
<li class="right" >
|
||
<a href="Release-Notes-1.0.html" title="Evennia 1.0 Release Notes"
|
||
>next</a> |</li>
|
||
<li class="right" >
|
||
<a href="Setting-up-PyCharm.html" title="Setting up PyCharm with Evennia"
|
||
>previous</a> |</li>
|
||
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 2.x</a> »</li>
|
||
<li class="nav-item nav-item-1"><a href="Coding-Overview.html" >Coding and development help</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href="">Changelog</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer" role="contentinfo">
|
||
© Copyright 2023, The Evennia developer community.
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
||
</div>
|
||
</body>
|
||
</html> |