<h1>Weather Tutorial<aclass="headerlink"href="#weather-tutorial"title="Permalink to this headline">¶</a></h1>
<p>This tutorial will have us create a simple weather system for our MUD. The way we want to use this is to have all outdoor rooms echo weather-related messages to the room at regular and semi-random intervals. Things like “Clouds gather above”, “It starts to rain” and so on.</p>
<p>One could imagine every outdoor room in the game having a script running on themselves that fires regularly. For this particular example it is however more efficient to do it another way, namely by using a “ticker-subscription” model. The principle is simple: Instead of having each Object individually track the time, they instead subscribe to be called by a global ticker who handles time keeping. Not only does this centralize and organize much of the code in one place, it also has less computing overhead.</p>
<p>Evennia offers the <aclass="reference internal"href="TickerHandler.html"><spanclass="doc">TickerHandler</span></a> specifically for using the subscription model. We will use it for our weather system.</p>
<p>We will assume you know how to make your own Typeclasses. If not see one of the beginning tutorials. We will create a new WeatherRoom typeclass that is aware of the day-night cycle.</p>
<p>In the <codeclass="docutils literal notranslate"><spanclass="pre">at_object_creation</span></code> method, we simply added ourselves to the TickerHandler and tell it to call <codeclass="docutils literal notranslate"><spanclass="pre">at_weather_update</span></code> every hour (<codeclass="docutils literal notranslate"><spanclass="pre">60*60</span></code> seconds). During testing you might want to play with a shorter time duration.</p>
<p>For this to work we also create a custom hook <codeclass="docutils literal notranslate"><spanclass="pre">at_weather_update(*args,</span><spanclass="pre">**kwargs)</span></code>, which is the call sign required by TickerHandler hooks.</p>
<p>Henceforth the room will inform everyone inside it when the weather changes. This particular example is of course very simplistic - the weather echoes are just randomly chosen and don’t care what weather came before it. Expanding it to be more realistic is a useful exercise.</p>