Updated HTML docs

This commit is contained in:
Evennia docbuilder action 2022-10-29 15:12:43 +00:00
parent 72d1e51495
commit 1d3843edb2
65 changed files with 548 additions and 588 deletions

View file

@ -245,7 +245,7 @@
<span class="c1"># check if this Character already exists. Note that we are only</span>
<span class="c1"># searching the base character typeclass here, not any child</span>
<span class="c1"># classes.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|rA character named &#39;|w</span><span class="si">%s</span><span class="s2">|r&#39; already exists.|n&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|rA character named &#39;|w</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">|r&#39; already exists.|n&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># create the character</span>
@ -266,12 +266,10 @@
<span class="k">elif</span> <span class="ow">not</span> <span class="n">new_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">:</span>
<span class="n">new_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;This is a character.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Created new character </span><span class="si">%s</span><span class="s2">. Use |wic </span><span class="si">%s</span><span class="s2">|n to enter the game as this character.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Created new character </span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">. Use |wic </span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n to enter the game as this character.&quot;</span>
<span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Character Created: </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">new_character</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Character Created: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -324,10 +322,9 @@
<span class="n">pc</span> <span class="k">for</span> <span class="n">pc</span> <span class="ow">in</span> <span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="k">if</span> <span class="n">pc</span> <span class="o">!=</span> <span class="n">delobj</span>
<span class="p">]</span>
<span class="n">delobj</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Character &#39;</span><span class="si">%s</span><span class="s2">&#39; was permanently deleted.&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Character &#39;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&#39; was permanently deleted.&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Character Deleted: </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Character Deleted: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Deletion was aborted.&quot;</span><span class="p">)</span>
@ -448,14 +445,12 @@
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">new_character</span><span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">new_character</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Puppet Success: (Caller: </span><span class="si">%s</span><span class="s2">, Target: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="n">new_character</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Puppet Success: (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, Target: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|rYou cannot become |C</span><span class="si">%s</span><span class="s2">|n: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">new_character</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">exc</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|rYou cannot become |C</span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Puppet Failed: </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, Target: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">exc</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="n">new_character</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Puppet Failed: %s (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, Target: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -508,7 +503,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">playable</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">))</span>
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|rCould not unpuppet from |c</span><span class="si">%s</span><span class="s2">|n: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">old_char</span><span class="p">,</span> <span class="n">exc</span><span class="p">))</span></div></div>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|rCould not unpuppet from |c</span><span class="si">{</span><span class="n">old_char</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdSessions"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdSessions">[docs]</a><span class="k">class</span> <span class="nc">CmdSessions</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -545,7 +540,7 @@
<span class="n">char</span> <span class="ow">and</span> <span class="nb">str</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;None&quot;</span><span class="p">,</span>
<span class="n">char</span> <span class="ow">and</span> <span class="nb">str</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">location</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;N/A&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|wYour current session(s):|n</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">table</span><span class="p">)</span></div></div>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|wYour current session(s):|n</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdWho"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdWho">[docs]</a><span class="k">class</span> <span class="nc">CmdWho</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -716,7 +711,7 @@
<span class="p">)</span>
<span class="n">row</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">saved</span><span class="p">,</span> <span class="n">changed</span><span class="p">))</span>
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="o">*</span><span class="n">row</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|wClient settings (</span><span class="si">%s</span><span class="s2">):|n</span><span class="se">\n</span><span class="si">%s</span><span class="s2">|n&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span><span class="p">,</span> <span class="n">table</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|wClient settings (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span><span class="si">}</span><span class="s2">):|n</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">|n&quot;</span><span class="p">)</span>
<span class="k">return</span>
@ -731,7 +726,7 @@
<span class="k">try</span><span class="p">:</span>
<span class="n">codecs_lookup</span><span class="p">(</span><span class="n">new_encoding</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">LookupError</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;The encoding &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; is invalid. &quot;</span> <span class="o">%</span> <span class="n">new_encoding</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The encoding &#39;|w</span><span class="si">{</span><span class="n">new_encoding</span><span class="si">}</span><span class="s2">|n&#39; is invalid. &quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">val</span>
<span class="k">def</span> <span class="nf">validate_size</span><span class="p">(</span><span class="n">new_size</span><span class="p">):</span>
@ -746,16 +741,13 @@
<span class="n">old_val</span> <span class="o">=</span> <span class="n">flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="n">new_val</span> <span class="o">=</span> <span class="n">validator</span><span class="p">(</span><span class="n">new_val</span><span class="p">)</span>
<span class="k">if</span> <span class="n">old_val</span> <span class="o">==</span> <span class="n">new_val</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Option |w</span><span class="si">%s</span><span class="s2">|n was kept as &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">old_val</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|n was kept as &#39;|w</span><span class="si">{</span><span class="n">old_val</span><span class="si">}</span><span class="s2">|n&#39;.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">flags</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_val</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Option |w</span><span class="si">%s</span><span class="s2">|n was changed from &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; to &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39;.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">old_val</span><span class="p">,</span> <span class="n">new_val</span><span class="p">)</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|n was changed from &#39;|w</span><span class="si">{</span><span class="n">old_val</span><span class="si">}</span><span class="s2">|n&#39; to &#39;|w</span><span class="si">{</span><span class="n">new_val</span><span class="si">}</span><span class="s2">|n&#39;.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="p">{</span><span class="n">new_name</span><span class="p">:</span> <span class="n">new_val</span><span class="p">}</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|rCould not set option |w</span><span class="si">%s</span><span class="s2">|r:|n </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">err</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|rCould not set option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|r:|n </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="n">validators</span> <span class="o">=</span> <span class="p">{</span>
@ -795,12 +787,12 @@
<span class="n">saved_options</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">optiondict</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;_saved_protocol_flags&quot;</span><span class="p">,</span> <span class="n">saved_options</span><span class="p">)</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">optiondict</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|gSaved option </span><span class="si">%s</span><span class="s2">.|n&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|gSaved option </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">.|n&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;clear&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="c1"># clear this save</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">optiondict</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;_saved_protocol_flags&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|gCleared saved </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|gCleared saved </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">update_flags</span><span class="p">(</span><span class="o">**</span><span class="n">optiondict</span><span class="p">)</span></div></div>
@ -843,10 +835,7 @@
<span class="n">account</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">newpass</span><span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Password changed.&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Password Changed: </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="p">)</span></div></div>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Password Changed: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdQuit"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdQuit">[docs]</a><span class="k">class</span> <span class="nc">CmdQuit</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -1073,27 +1062,27 @@
<span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;unquell&quot;</span><span class="p">,</span> <span class="s2">&quot;unquell&quot;</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;_quell&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Already using normal Account permissions </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">permstr</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Already using normal Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">&quot;_quell&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account permissions </span><span class="si">%s</span><span class="s2"> restored.&quot;</span> <span class="o">%</span> <span class="n">permstr</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2"> restored.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;_quell&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Already quelling Account </span><span class="si">%s</span><span class="s2"> permissions.&quot;</span> <span class="o">%</span> <span class="n">permstr</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Already quelling Account </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2"> permissions.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;_quell&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
<span class="n">puppet</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">puppet</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="k">else</span> <span class="kc">None</span>
<span class="k">if</span> <span class="n">puppet</span><span class="p">:</span>
<span class="n">cpermstr</span> <span class="o">=</span> <span class="s2">&quot;(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">puppet</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
<span class="n">cpermstr</span> <span class="o">=</span> <span class="s2">&quot;Quelling to current puppet&#39;s permissions </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">cpermstr</span>
<span class="n">cpermstr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Quelling to current puppet&#39;s permissions </span><span class="si">{</span><span class="n">cpermstr</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="n">cpermstr</span> <span class="o">+=</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">(Note: If this is higher than Account permissions </span><span class="si">%s</span><span class="s2">,&quot;</span>
<span class="s2">&quot; the lowest of the two will be used.)&quot;</span> <span class="o">%</span> <span class="n">permstr</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">(Note: If this is higher than Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">,&quot;</span>
<span class="s2">&quot; the lowest of the two will be used.)&quot;</span>
<span class="p">)</span>
<span class="n">cpermstr</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Use unquell to return to normal permission usage.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">cpermstr</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Quelling Account permissions</span><span class="si">%s</span><span class="s2">. Use unquell to get them back.&quot;</span> <span class="o">%</span> <span class="n">permstr</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Quelling Account permissions</span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">. Use unquell to get them back.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_recache_locks</span><span class="p">(</span><span class="n">account</span><span class="p">)</span></div></div>
@ -1134,7 +1123,7 @@
<span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
<span class="k">return</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Style </span><span class="si">%s</span><span class="s2"> set to </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span> <span class="n">result</span><span class="p">))</span></div></div>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Style </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2"> set to </span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div></div>
</pre></div>
</div>

View file

@ -152,12 +152,11 @@
<span class="c1"># Boot by account object</span>
<span class="n">pobj</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">account_search</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">pobj</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account </span><span class="si">%s</span><span class="s2"> was not found.&quot;</span> <span class="o">%</span> <span class="n">args</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Account </span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> was not found.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">pobj</span> <span class="o">=</span> <span class="n">pobj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">pobj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;boot&quot;</span><span class="p">):</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;You don&#39;t have the permission to boot </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pobj</span><span class="o">.</span><span class="n">key</span><span class="p">,)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have the permission to boot </span><span class="si">{</span><span class="n">pobj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># we have a bootable object with a connected user</span>
<span class="n">matches</span> <span class="o">=</span> <span class="n">SESSIONS</span><span class="o">.</span><span class="n">sessions_from_account</span><span class="p">(</span><span class="n">pobj</span><span class="p">)</span>
@ -172,9 +171,9 @@
<span class="n">feedback</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="s2">&quot;quiet&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">feedback</span> <span class="o">=</span> <span class="s2">&quot;You have been disconnected by </span><span class="si">%s</span><span class="s2">.</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">caller</span><span class="o">.</span><span class="n">name</span>
<span class="n">feedback</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;You have been disconnected by </span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="k">if</span> <span class="n">reason</span><span class="p">:</span>
<span class="n">feedback</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reason given: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">reason</span>
<span class="n">feedback</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reason given: </span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">boot_list</span><span class="p">:</span>
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">feedback</span><span class="p">)</span>
@ -182,8 +181,7 @@
<span class="k">if</span> <span class="n">pobj</span> <span class="ow">and</span> <span class="n">boot_list</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Booted: </span><span class="si">%s</span><span class="s2"> (Reason: </span><span class="si">%s</span><span class="s2">, Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">pobj</span><span class="p">,</span> <span class="n">reason</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Booted: </span><span class="si">{</span><span class="n">pobj</span><span class="si">}</span><span class="s2"> (Reason: </span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">, Caller: </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -206,7 +204,7 @@
<span class="n">table</span> <span class="o">=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span><span class="s2">&quot;|wid&quot;</span><span class="p">,</span> <span class="s2">&quot;|wname/ip&quot;</span><span class="p">,</span> <span class="s2">&quot;|wdate&quot;</span><span class="p">,</span> <span class="s2">&quot;|wreason&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">inum</span><span class="p">,</span> <span class="n">ban</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">banlist</span><span class="p">):</span>
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">inum</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span> <span class="n">ban</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">and</span> <span class="n">ban</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="n">ban</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">ban</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">ban</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
<span class="k">return</span> <span class="s2">&quot;|wActive bans:|n</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">table</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;|wActive bans:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">&quot;</span>
<div class="viewcode-block" id="CmdBan"><a class="viewcode-back" href="../../../../api/evennia.commands.default.admin.html#evennia.commands.default.admin.CmdBan">[docs]</a><span class="k">class</span> <span class="nc">CmdBan</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -303,7 +301,7 @@
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_bans&quot;</span><span class="p">,</span> <span class="n">banlist</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">-ban &#39;|w</span><span class="si">{</span><span class="n">ban</span><span class="si">}</span><span class="s2">|n&#39; was added. Use |wunban|n to reinstate.&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Banned </span><span class="si">{typ}</span><span class="s2">: {ban.strip()} (Caller: </span><span class="si">{self.caller}</span><span class="s2">, IP: </span><span class="si">{self.session.address}</span><span class="s2">).&quot;</span>
<span class="sa">f</span><span class="s2">&quot;Banned </span><span class="si">{</span><span class="n">typ</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">ban</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -343,7 +341,7 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">banlist</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;There are no bans to clear.&quot;</span><span class="p">)</span>
<span class="k">elif</span> <span class="ow">not</span> <span class="p">(</span><span class="mi">0</span> <span class="o">&lt;</span> <span class="n">num</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">banlist</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Ban id |w</span><span class="si">%s</span><span class="s2">|x was not found.&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Ban id |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">|n was not found.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># all is ok, ask, then clear ban</span>
<span class="n">ban</span> <span class="o">=</span> <span class="n">banlist</span><span class="p">[</span><span class="n">num</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
@ -358,7 +356,7 @@
<span class="n">ServerConfig</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">conf</span><span class="p">(</span><span class="s2">&quot;server_bans&quot;</span><span class="p">,</span> <span class="n">banlist</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Cleared ban </span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s2">: &#39;</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Unbanned: {value.strip()} (Caller: </span><span class="si">{self.caller}</span><span class="s2">, IP: </span><span class="si">{self.session.address}</span><span class="s2">).&quot;</span>
<span class="sa">f</span><span class="s2">&quot;Unbanned: </span><span class="si">{</span><span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -427,20 +425,20 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span>
<span class="k">if</span> <span class="n">rooms_only</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> is not a room. Ignored.&quot;</span> <span class="o">%</span> <span class="n">objname</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> is not a room. Ignored.&quot;</span><span class="p">)</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="n">accounts_only</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">has_account</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> has no active account. Ignored.&quot;</span> <span class="o">%</span> <span class="n">objname</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> has no active account. Ignored.&quot;</span><span class="p">)</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;tell&quot;</span><span class="p">):</span>
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
<span class="k">if</span> <span class="n">send_to_contents</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">&quot;msg_contents&quot;</span><span class="p">):</span>
<span class="n">obj</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Emitted to </span><span class="si">%s</span><span class="s2"> and contents:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">objname</span><span class="p">,</span> <span class="n">message</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Emitted to </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> and contents:</span><span class="se">\n</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Emitted to </span><span class="si">%s</span><span class="s2">:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">objname</span><span class="p">,</span> <span class="n">message</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Emitted to </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2">:</span><span class="se">\n</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You are not allowed to emit to </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">objname</span><span class="p">)</span></div></div>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You are not allowed to emit to </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdNewPassword"><a class="viewcode-back" href="../../../../api/evennia.commands.default.admin.html#evennia.commands.default.admin.CmdNewPassword">[docs]</a><span class="k">class</span> <span class="nc">CmdNewPassword</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -483,11 +481,11 @@
<span class="n">account</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">newpass</span><span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> - new password set to &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">newpass</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> - new password set to &#39;</span><span class="si">{</span><span class="n">newpass</span><span class="si">}</span><span class="s2">&#39;.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">character</span> <span class="o">!=</span> <span class="n">caller</span><span class="p">:</span>
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> has changed your password to &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">newpass</span><span class="p">))</span>
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> has changed your password to &#39;</span><span class="si">{</span><span class="n">newpass</span><span class="si">}</span><span class="s2">&#39;.&quot;</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Password Changed: </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Password Changed: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span></div></div>
@ -540,7 +538,7 @@
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You are not allowed to examine this object.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Permissions on |w</span><span class="si">%s</span><span class="s2">|n: &quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Permissions on |</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n: &quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;&lt;None&gt;&quot;</span>
<span class="k">else</span><span class="p">:</span>
@ -558,10 +556,8 @@
<span class="c1"># we supplied an argument on the form obj = perm</span>
<span class="n">locktype</span> <span class="o">=</span> <span class="s2">&quot;edit&quot;</span> <span class="k">if</span> <span class="n">accountmode</span> <span class="k">else</span> <span class="s2">&quot;control&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">locktype</span><span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;You are not allowed to edit this </span><span class="si">%s</span><span class="s2">&#39;s permissions.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="s2">&quot;account&quot;</span> <span class="k">if</span> <span class="n">accountmode</span> <span class="k">else</span> <span class="s2">&quot;object&quot;</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">accountstr</span> <span class="o">=</span> <span class="s1">&#39;account&#39;</span> <span class="k">if</span> <span class="n">accountmode</span> <span class="k">else</span> <span class="s1">&#39;object&#39;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You are not allowed to edit this </span><span class="si">{</span><span class="n">accountstr</span><span class="si">}</span><span class="s2">&#39;s permissions.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">caller_result</span> <span class="o">=</span> <span class="p">[]</span>
@ -572,18 +568,17 @@
<span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">perm</span><span class="p">)</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">perm</span><span class="p">):</span>
<span class="n">caller_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permissions </span><span class="si">%s</span><span class="s2"> could not be removed from </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permissions </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2"> could not be removed from </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission </span><span class="si">%s</span><span class="s2"> removed from </span><span class="si">%s</span><span class="s2"> (if they existed).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2"> removed from </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (if they existed).&quot;</span>
<span class="p">)</span>
<span class="n">target_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> revokes the permission(s) </span><span class="si">%s</span><span class="s2"> from you.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">perm</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> revokes the permission(s) </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2"> from you.&quot;</span>
<span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Permissions Deleted: </span><span class="si">%s</span><span class="s2">, </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Permissions Deleted: </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># add a new permission</span>
@ -594,7 +589,7 @@
<span class="c1"># don&#39;t allow to set a permission higher in the hierarchy than</span>
<span class="c1"># the one the caller has (to prevent self-escalation)</span>
<span class="k">if</span> <span class="n">perm</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">PERMISSION_HIERARCHY</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">check_lockstring</span><span class="p">(</span>
<span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;dummy:perm(</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">perm</span>
<span class="n">caller</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;dummy:perm(</span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;You cannot assign a permission higher than the one you have yourself.&quot;</span>
@ -603,21 +598,19 @@
<span class="k">if</span> <span class="n">perm</span> <span class="ow">in</span> <span class="n">permissions</span><span class="p">:</span>
<span class="n">caller_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission &#39;</span><span class="si">%s</span><span class="s2">&#39; is already defined on </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission &#39;</span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">&#39; is already defined on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">perm</span><span class="p">)</span>
<span class="n">plystring</span> <span class="o">=</span> <span class="s2">&quot;the Account&quot;</span> <span class="k">if</span> <span class="n">accountmode</span> <span class="k">else</span> <span class="s2">&quot;the Object/Character&quot;</span>
<span class="n">caller_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission &#39;</span><span class="si">%s</span><span class="s2">&#39; given to </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">perm</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">plystring</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Permission &#39;</span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">&#39; given to </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">plystring</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="n">target_result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> gives you (</span><span class="si">%s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">) the permission &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">plystring</span><span class="p">,</span> <span class="n">perm</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> gives you (</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">plystring</span><span class="si">}</span><span class="s2">) the permission &#39;</span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">&#39;.&quot;</span>
<span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Permissions Added: </span><span class="si">%s</span><span class="s2">, </span><span class="si">%s</span><span class="s2"> (Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">perm</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Permissions Added: </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">caller_result</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
@ -645,7 +638,7 @@
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Usage: wall &lt;message&gt;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">message</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1"> shouts &quot;</span><span class="si">%s</span><span class="s1">&quot;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1"> shouts &quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s1">&quot;&#39;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Announcing to all connected sessions ...&quot;</span><span class="p">)</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">announce_all</span><span class="p">(</span><span class="n">message</span><span class="p">)</span></div></div>
@ -675,10 +668,10 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">targ</span><span class="p">:</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">targ</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">perm_used</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to force them to execute commands.&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to force </span><span class="si">{</span><span class="n">targ</span><span class="si">}</span><span class="s2"> to execute commands.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">targ</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You have forced </span><span class="si">%s</span><span class="s2"> to: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">targ</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">))</span></div></div>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You have forced </span><span class="si">{</span><span class="n">targ</span><span class="si">}</span><span class="s2"> to: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div></div>
</pre></div>
</div>

View file

@ -78,33 +78,36 @@
<span class="sd">Building and world design commands</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">re</span>
<span class="kn">from</span> <span class="nn">django.core.paginator</span> <span class="kn">import</span> <span class="n">Paginator</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Q</span><span class="p">,</span> <span class="n">Min</span><span class="p">,</span> <span class="n">Max</span>
<span class="kn">from</span> <span class="nn">django.core.paginator</span> <span class="kn">import</span> <span class="n">Paginator</span>
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Max</span><span class="p">,</span> <span class="n">Min</span><span class="p">,</span> <span class="n">Q</span>
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">InterruptCommand</span>
<span class="kn">from</span> <span class="nn">evennia.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockException</span>
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">get_and_merge_cmdsets</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">funcparser</span>
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockException</span>
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">menus</span> <span class="k">as</span> <span class="n">olc_menus</span>
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span>
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">spawner</span>
<span class="kn">from</span> <span class="nn">evennia.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">funcparser</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">utils</span>
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">ansi_raw</span>
<span class="kn">from</span> <span class="nn">evennia.utils.dbserialize</span> <span class="kn">import</span> <span class="n">deserialize</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
<span class="n">inherits_from</span><span class="p">,</span>
<span class="n">class_from_module</span><span class="p">,</span>
<span class="n">get_all_typeclasses</span><span class="p">,</span>
<span class="n">variable_from_module</span><span class="p">,</span>
<span class="n">dbref</span><span class="p">,</span>
<span class="n">crop</span><span class="p">,</span>
<span class="n">interactive</span><span class="p">,</span>
<span class="n">list_to_string</span><span class="p">,</span>
<span class="n">display_len</span><span class="p">,</span>
<span class="n">format_grid</span><span class="p">,</span>
<span class="p">)</span>
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="kn">import</span> <span class="n">EvMore</span>
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">spawner</span><span class="p">,</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span><span class="p">,</span> <span class="n">menus</span> <span class="k">as</span> <span class="n">olc_menus</span>
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">ansi_raw</span>
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
<span class="n">class_from_module</span><span class="p">,</span>
<span class="n">crop</span><span class="p">,</span>
<span class="n">dbref</span><span class="p">,</span>
<span class="n">display_len</span><span class="p">,</span>
<span class="n">format_grid</span><span class="p">,</span>
<span class="n">get_all_typeclasses</span><span class="p">,</span>
<span class="n">inherits_from</span><span class="p">,</span>
<span class="n">interactive</span><span class="p">,</span>
<span class="n">list_to_string</span><span class="p">,</span>
<span class="n">variable_from_module</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
@ -297,7 +300,7 @@
<span class="p">)</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No aliases exist for &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No aliases exist for &#39;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">&#39;.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
@ -426,13 +429,11 @@
<span class="n">new_aliases</span><span class="o">=</span><span class="n">to_obj_aliases</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">copiedobj</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Copied </span><span class="si">%s</span><span class="s2"> to &#39;</span><span class="si">%s</span><span class="s2">&#39; (aliases: </span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">from_obj_name</span><span class="p">,</span>
<span class="n">to_obj_name</span><span class="p">,</span>
<span class="n">to_obj_aliases</span><span class="p">,</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Copied </span><span class="si">{</span><span class="n">from_obj_name</span><span class="si">}</span><span class="s2"> to &#39;</span><span class="si">{</span><span class="n">to_obj_name</span><span class="si">}</span><span class="s2">&#39; (aliases: </span><span class="si">{</span><span class="n">to_obj_aliases</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;There was an error copying </span><span class="si">%s</span><span class="s2"> to &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">from_obj_name</span><span class="p">,</span> <span class="n">to_obj_name</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;There was an error copying </span><span class="si">{</span><span class="n">from_obj_name</span><span class="si">}</span><span class="s2"> to &#39;</span><span class="si">{</span><span class="n">to_obj_name</span><span class="si">}</span><span class="s2">&#39;.&quot;</span>
<span class="c1"># we are done, echo to user</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -491,7 +492,7 @@
<span class="sd"> required and verify an object has an attribute.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">has</span><span class="p">(</span><span class="n">attr</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> doesn&#39;t have an attribute </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">attr</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> doesn&#39;t have an attribute </span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">False</span>
<span class="k">return</span> <span class="kc">True</span></div>
@ -555,7 +556,7 @@
<span class="n">to_obj_attrs</span> <span class="o">=</span> <span class="n">to_obj</span><span class="p">[</span><span class="s2">&quot;attrs&quot;</span><span class="p">]</span>
<span class="n">to_obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">to_obj_name</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">to_obj</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Could not find object &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> <span class="o">%</span> <span class="n">to_obj_name</span><span class="p">)</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Could not find object &#39;</span><span class="si">{</span><span class="n">to_obj_name</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">continue</span>
<span class="k">for</span> <span class="n">inum</span><span class="p">,</span> <span class="n">from_attr</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">from_obj_attrs</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
@ -571,13 +572,13 @@
<span class="k">if</span> <span class="n">clear</span> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="n">from_obj</span> <span class="o">==</span> <span class="n">to_obj</span> <span class="ow">and</span> <span class="n">from_attr</span> <span class="o">==</span> <span class="n">to_attr</span><span class="p">):</span>
<span class="n">from_obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">from_attr</span><span class="p">)</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Moved </span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2"> -&gt; </span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">. (value: </span><span class="si">%s</span><span class="s2">)&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">from_obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">from_attr</span><span class="p">,</span> <span class="n">to_obj_name</span><span class="p">,</span> <span class="n">to_attr</span><span class="p">,</span> <span class="nb">repr</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Moved </span><span class="si">{</span><span class="n">from_obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">from_attr</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">to_obj_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">to_attr</span><span class="si">}</span><span class="s2">. (value:&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="nb">repr</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Copied </span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2"> -&gt; </span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2">. (value: </span><span class="si">%s</span><span class="s2">)&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">from_obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">from_attr</span><span class="p">,</span> <span class="n">to_obj_name</span><span class="p">,</span> <span class="n">to_attr</span><span class="p">,</span> <span class="nb">repr</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Copied </span><span class="si">{</span><span class="n">from_obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">from_attr</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">to_obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">to_attr</span><span class="si">}</span><span class="s2">. (value:&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="nb">repr</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result</span><span class="p">))</span></div></div>
@ -691,11 +692,11 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="n">aliases</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;You create a new </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2"> (aliases: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">))</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;You create a new </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (aliases: </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;You create a new </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">.&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;You create a new </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="c1"># set a default desc</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;You see nothing special.&quot;</span>
@ -757,7 +758,7 @@
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to edit the description of </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to edit the description of </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">evmenu_target</span> <span class="o">=</span> <span class="n">obj</span>
@ -797,9 +798,9 @@
<span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">):</span>
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">desc</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;The description was set on </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;The description was set on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to edit the description of </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span></div></div>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to edit the description of </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdDestroy"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdDestroy">[docs]</a><span class="k">class</span> <span class="nc">CmdDestroy</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
@ -847,21 +848,21 @@
<span class="c1"># helper function for deleting a single object</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Object </span><span class="si">%s</span><span class="s2"> was already deleted.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_key</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Object </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">db_key</span><span class="si">}</span><span class="s2"> was already deleted.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">objname</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;delete&quot;</span><span class="p">)):</span>
<span class="k">return</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">You don&#39;t have permission to delete </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">objname</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">You don&#39;t have permission to delete </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span> <span class="ow">and</span> <span class="s2">&quot;override&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="k">return</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Object </span><span class="si">%s</span><span class="s2"> is controlled by an active account. Use /override to delete anyway.&quot;</span>
<span class="o">%</span> <span class="n">objname</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Object </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> is controlled by an active account. Use /override to&quot;</span>
<span class="s2">&quot; delete anyway.&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">dbid</span> <span class="o">==</span> <span class="nb">int</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_HOME</span><span class="o">.</span><span class="n">lstrip</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)):</span>
<span class="k">return</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">You are trying to delete |c</span><span class="si">%s</span><span class="s2">|n, which is set as DEFAULT_HOME. &quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">You are trying to delete |c</span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2">|n, which is set as DEFAULT_HOME. &quot;</span>
<span class="s2">&quot;Re-point settings.DEFAULT_HOME to another &quot;</span>
<span class="s2">&quot;object before continuing.&quot;</span> <span class="o">%</span> <span class="n">objname</span>
<span class="s2">&quot;object before continuing.&quot;</span>
<span class="p">)</span>
<span class="n">had_exits</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">&quot;exits&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">exits</span>
@ -874,15 +875,14 @@
<span class="n">okay</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">okay</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">ERROR: </span><span class="si">%s</span><span class="s2"> not deleted, probably because delete() returned False.&quot;</span>
<span class="o">%</span> <span class="n">objname</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">ERROR: </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> not deleted, probably because delete() returned False.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> was destroyed.&quot;</span> <span class="o">%</span> <span class="n">objname</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> was destroyed.&quot;</span>
<span class="k">if</span> <span class="n">had_exits</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; Exits to and from </span><span class="si">%s</span><span class="s2"> were destroyed as well.&quot;</span> <span class="o">%</span> <span class="n">objname</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; Exits to and from </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> were destroyed as well.&quot;</span>
<span class="k">if</span> <span class="n">had_objs</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; Objects inside </span><span class="si">%s</span><span class="s2"> were moved to their homes.&quot;</span> <span class="o">%</span> <span class="n">objname</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; Objects inside </span><span class="si">{</span><span class="n">objname</span><span class="si">}</span><span class="s2"> were moved to their homes.&quot;</span>
<span class="k">return</span> <span class="n">string</span>
<span class="n">objs</span> <span class="o">=</span> <span class="p">[]</span>
@ -985,7 +985,7 @@
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Usage: dig[/teleport] &lt;roomname&gt;[;alias;alias...]&quot;</span> <span class="s2">&quot;[:parent] [= &lt;exit_there&gt;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Usage: dig[/teleport] &lt;roomname&gt;[;alias;alias...][:parent] [= &lt;exit_there&gt;&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;[;alias;alias..][:parent]] &quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;[, &lt;exit_back_here&gt;[;alias;alias..][:parent]]&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
@ -1012,11 +1012,8 @@
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="n">new_room</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">new_room</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
<span class="n">room_string</span> <span class="o">=</span> <span class="s2">&quot;Created room </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)</span><span class="si">%s</span><span class="s2"> of type </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">new_room</span><span class="p">,</span>
<span class="n">new_room</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span>
<span class="n">alias_string</span><span class="p">,</span>
<span class="n">typeclass</span><span class="p">,</span>
<span class="n">room_string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Created room </span><span class="si">{</span><span class="n">new_room</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">new_room</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias_string</span><span class="si">}</span><span class="s2"> of type </span><span class="si">{</span><span class="n">typeclass</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="c1"># create exit to room</span>
@ -1048,13 +1045,9 @@
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="n">new_to_exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">new_to_exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
<span class="n">exit_to_string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Created Exit from </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)</span><span class="si">%s</span><span class="s2">.&quot;</span>
<span class="n">exit_to_string</span> <span class="o">=</span> <span class="n">exit_to_string</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">new_room</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">new_to_exit</span><span class="p">,</span>
<span class="n">new_to_exit</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span>
<span class="n">alias_string</span><span class="p">,</span>
<span class="n">exit_to_string</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Created Exit from </span><span class="si">{location.name}</span><span class="s2"> to </span><span class="si">{new_room.name}</span><span class="s2">:&quot;</span>
<span class="s2">&quot; </span><span class="si">{new_to_exit}</span><span class="s2">(</span><span class="si">{new_to_exit.dbref}</span><span class="s2">)</span><span class="si">{alias_string}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="c1"># Create exit back from new room</span>
@ -1082,15 +1075,11 @@
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="n">new_back_exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
<span class="n">alias_string</span> <span class="o">=</span> <span class="s2">&quot; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">new_back_exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
<span class="n">exit_back_string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Created Exit back from </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)</span><span class="si">%s</span><span class="s2">.&quot;</span>
<span class="n">exit_back_string</span> <span class="o">=</span> <span class="n">exit_back_string</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">new_room</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">new_back_exit</span><span class="p">,</span>
<span class="n">new_back_exit</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span>
<span class="n">alias_string</span><span class="p">,</span>
<span class="n">exit_back_string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Created Exit back from </span><span class="si">{</span><span class="n">new_room</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">:&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">new_back_exit</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">new_back_exit</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias_string</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s%s%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">room_string</span><span class="p">,</span> <span class="n">exit_to_string</span><span class="p">,</span> <span class="n">exit_back_string</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">room_string</span><span class="si">}{</span><span class="n">exit_to_string</span><span class="si">}{</span><span class="n">exit_back_string</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">new_room</span> <span class="ow">and</span> <span class="s2">&quot;teleport&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">new_room</span><span class="p">,</span> <span class="n">move_type</span><span class="o">=</span><span class="s2">&quot;teleport&quot;</span><span class="p">)</span></div></div>
@ -1188,10 +1177,10 @@
<span class="n">telswitch</span> <span class="o">=</span> <span class="s2">&quot;/teleport&quot;</span>
<span class="n">backstring</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="s2">&quot;oneway&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">backstring</span> <span class="o">=</span> <span class="s2">&quot;, </span><span class="si">%s</span><span class="s2">;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">backname</span><span class="p">,</span> <span class="n">backshort</span><span class="p">)</span>
<span class="n">backstring</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;, </span><span class="si">{</span><span class="n">backname</span><span class="si">}</span><span class="s2">;</span><span class="si">{</span><span class="n">backshort</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="c1"># build the string we will use to call dig</span>
<span class="n">digstring</span> <span class="o">=</span> <span class="s2">&quot;dig</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> = </span><span class="si">%s</span><span class="s2">;</span><span class="si">%s%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">telswitch</span><span class="p">,</span> <span class="n">roomname</span><span class="p">,</span> <span class="n">exitname</span><span class="p">,</span> <span class="n">exitshort</span><span class="p">,</span> <span class="n">backstring</span><span class="p">)</span>
<span class="n">digstring</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;dig</span><span class="si">{</span><span class="n">telswitch</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">roomname</span><span class="si">}</span><span class="s2"> = </span><span class="si">{</span><span class="n">exitname</span><span class="si">}</span><span class="s2">;</span><span class="si">{</span><span class="n">exitshort</span><span class="si">}{</span><span class="n">backstring</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="n">digstring</span><span class="p">)</span></div></div>
@ -1253,14 +1242,16 @@
<span class="k">return</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="n">note</span> <span class="o">=</span> <span class="s2">&quot;Note: </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">) did not have a destination set before. Make sure you linked the right thing.&quot;</span>
<span class="n">note</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;Note: </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">) did not have a destination set before. Make sure you linked the right&quot;</span>
<span class="s2">&quot; thing.&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">note</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;twoway&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">location</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">):</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;To create a two-way link, </span><span class="si">%s</span><span class="s2"> and </span><span class="si">%s</span><span class="s2"> must both have a location&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">obj</span><span class="p">,</span>
<span class="n">target</span><span class="p">,</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;To create a two-way link, </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> and </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2"> must both have a location&quot;</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; (i.e. they cannot be rooms, but should be exits).&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
@ -1269,15 +1260,13 @@
<span class="n">string</span> <span class="o">+=</span> <span class="n">note</span> <span class="o">%</span> <span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">target</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="n">obj</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">location</span>
<span class="n">target</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Link created </span><span class="si">%s</span><span class="s2"> (in </span><span class="si">%s</span><span class="s2">) &lt;-&gt; </span><span class="si">%s</span><span class="s2"> (in </span><span class="si">%s</span><span class="s2">) (two-way).&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">,</span>
<span class="n">target</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">target</span><span class="o">.</span><span class="n">location</span><span class="p">,</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Link created </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (in </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="si">}</span><span class="s2">) &lt;-&gt; </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (in&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">location</span><span class="si">}</span><span class="s2">) (two-way).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">target</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Link created </span><span class="si">%s</span><span class="s2"> -&gt; </span><span class="si">%s</span><span class="s2"> (one way).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Link created </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2"> (one way).&quot;</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># this means that no = was given (otherwise rhs</span>
@ -1285,18 +1274,18 @@
<span class="c1"># the home/destination on object</span>
<span class="n">dest</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span>
<span class="k">if</span> <span class="n">dest</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> is an exit to </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">dest</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> is an exit to </span><span class="si">{</span><span class="n">dest</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> is not an exit. Its home location is </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> is not an exit. Its home location is </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># We gave the command link &#39;obj = &#39; which means we want to</span>
<span class="c1"># clear destination.</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Former exit </span><span class="si">%s</span><span class="s2"> no longer links anywhere.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Former exit </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> no longer links anywhere.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> had no destination to unlink.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> had no destination to unlink.&quot;</span>
<span class="c1"># give feedback</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span></div></div>
@ -1373,7 +1362,7 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">home</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;This object has no home location set!&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&#39;s current home is </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">home</span><span class="p">,</span> <span class="n">home</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2">&#39;s current home is </span><span class="si">{</span><span class="n">home</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">home</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># set a home location</span>
<span class="n">new_home</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@ -1382,15 +1371,12 @@
<span class="n">old_home</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span>
<span class="n">obj</span><span class="o">.</span><span class="n">home</span> <span class="o">=</span> <span class="n">new_home</span>
<span class="k">if</span> <span class="n">old_home</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Home location of </span><span class="si">%s</span><span class="s2"> was changed from </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">) to </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">obj</span><span class="p">,</span>
<span class="n">old_home</span><span class="p">,</span>
<span class="n">old_home</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span>
<span class="n">new_home</span><span class="p">,</span>
<span class="n">new_home</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Home location of </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> was changed from </span><span class="si">{</span><span class="n">old_home</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">old_home</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2"> to&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">new_home</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">new_home</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Home location of </span><span class="si">%s</span><span class="s2"> was set to </span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">new_home</span><span class="p">,</span> <span class="n">new_home</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Home location of </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> was set to </span><span class="si">{</span><span class="n">new_home</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">new_home</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -1419,7 +1405,7 @@
<span class="k">return</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">caller</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">cmdset</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -1463,11 +1449,11 @@
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No name defined!&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have right to edit this account </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have right to edit this account </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">obj</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">newname</span>
<span class="n">obj</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account&#39;s name changed to &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="n">newname</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Account&#39;s name changed to &#39;</span><span class="si">{</span><span class="n">newname</span><span class="si">}</span><span class="s2">&#39;.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># object search, also with *</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">objname</span><span class="p">)</span>
@ -1483,7 +1469,7 @@
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No names or aliases defined!&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have the right to edit </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have the right to edit </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># change the name and set aliases:</span>
<span class="k">if</span> <span class="n">newname</span><span class="p">:</span>
@ -1491,11 +1477,11 @@
<span class="n">astring</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="n">aliases</span><span class="p">:</span>
<span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">]</span>
<span class="n">astring</span> <span class="o">=</span> <span class="s2">&quot; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">))</span>
<span class="n">astring</span> <span class="o">=</span> <span class="s2">&quot; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
<span class="c1"># fix for exits - we need their exit-command to change name too</span>
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">flush_from_cache</span><span class="p">(</span><span class="n">force</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Object&#39;s name changed to &#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">newname</span><span class="p">,</span> <span class="n">astring</span><span class="p">))</span></div></div>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Object&#39;s name changed to &#39;</span><span class="si">{</span><span class="n">newname</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">astring</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span></div></div>
<div class="viewcode-block" id="CmdOpen"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdOpen">[docs]</a><span class="k">class</span> <span class="nc">CmdOpen</span><span class="p">(</span><span class="n">ObjManipCommand</span><span class="p">):</span>
@ -1539,24 +1525,23 @@
<span class="n">exit_obj</span> <span class="o">=</span> <span class="n">exit_obj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">exit_obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
<span class="c1"># we are trying to link a non-exit</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39; already exists and is not an exit!</span><span class="se">\n</span><span class="s2">If you want to convert it &quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">exit_name</span><span class="si">}</span><span class="s2">&#39; already exists and is not an exit!</span><span class="se">\n</span><span class="s2">If you want to convert it &quot;</span>
<span class="s2">&quot;to an exit, you must assign an object to the &#39;destination&#39; property first.&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span> <span class="o">%</span> <span class="n">exit_name</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="c1"># we are re-linking an old exit.</span>
<span class="n">old_destination</span> <span class="o">=</span> <span class="n">exit_obj</span><span class="o">.</span><span class="n">destination</span>
<span class="k">if</span> <span class="n">old_destination</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Exit </span><span class="si">%s</span><span class="s2"> already exists.&quot;</span> <span class="o">%</span> <span class="n">exit_name</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Exit </span><span class="si">{</span><span class="n">exit_name</span><span class="si">}</span><span class="s2"> already exists.&quot;</span>
<span class="k">if</span> <span class="n">old_destination</span><span class="o">.</span><span class="n">id</span> <span class="o">!=</span> <span class="n">destination</span><span class="o">.</span><span class="n">id</span><span class="p">:</span>
<span class="c1"># reroute the old exit.</span>
<span class="n">exit_obj</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">destination</span>
<span class="k">if</span> <span class="n">exit_aliases</span><span class="p">:</span>
<span class="p">[</span><span class="n">exit_obj</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit_aliases</span><span class="p">]</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; Rerouted its old destination &#39;</span><span class="si">%s</span><span class="s2">&#39; to &#39;</span><span class="si">%s</span><span class="s2">&#39; and changed aliases.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">old_destination</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">destination</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot; Rerouted its old destination &#39;</span><span class="si">{</span><span class="n">old_destination</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; to&quot;</span>
<span class="sa">f</span><span class="s2">&quot; &#39;</span><span class="si">{</span><span class="n">destination</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; and changed aliases.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; It already points to the correct place.&quot;</span>
@ -1580,16 +1565,14 @@
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">exit_aliases</span>
<span class="k">else</span> <span class="s2">&quot; (aliases: </span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">exit_aliases</span><span class="p">]))</span>
<span class="k">else</span> <span class="s2">&quot; (aliases: </span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">exit_aliases</span><span class="p">])</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Created new Exit &#39;</span><span class="si">%s</span><span class="s2">&#39; from </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">exit_name</span><span class="p">,</span>
<span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">destination</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">string</span><span class="p">,</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Created new Exit &#39;</span><span class="si">{</span><span class="n">exit_name</span><span class="si">}</span><span class="s2">&#39; from </span><span class="si">{</span><span class="n">location</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> to&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">destination</span><span class="o">.</span><span class="n">name</span><span class="si">}{</span><span class="n">string</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Error: Exit &#39;</span><span class="si">%s</span><span class="s2">&#39; not created.&quot;</span> <span class="o">%</span> <span class="n">exit_name</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Error: Exit &#39;</span><span class="si">{</span><span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; not created.&quot;</span>
<span class="c1"># emit results</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">return</span> <span class="n">exit_obj</span></div>
@ -1672,13 +1655,12 @@
<span class="c1"># treat as string</span>
<span class="n">strobj</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">(</span><span class="n">strobj</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="s1">&#39;|RNote: name &quot;|r</span><span class="si">%s</span><span class="s1">|R&quot; was converted to a string. &#39;</span>
<span class="s2">&quot;Make sure this is acceptable.&quot;</span> <span class="o">%</span> <span class="n">strobj</span>
<span class="sa">f</span><span class="s1">&#39;|RNote: name &quot;|r</span><span class="si">{</span><span class="n">strobj</span><span class="si">}</span><span class="s1">|R&quot; was converted to a string. Make sure this is acceptable.&#39;</span>
<span class="p">)</span>
<span class="n">cmd</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">return</span> <span class="n">strobj</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;|RUnknown error in evaluating Attribute: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;|RUnknown error in evaluating Attribute: </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="k">return</span> <span class="n">string</span>
@ -1929,7 +1911,7 @@
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">buf</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Called when editor saves its buffer.&quot;&quot;&quot;</span>
<span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">buf</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Saved Attribute </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">attr</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Saved Attribute </span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="c1"># check non-strings before activating editor</span>
<span class="k">try</span><span class="p">:</span>
@ -2007,11 +1989,11 @@
<span class="k">if</span> <span class="s2">&quot;edit&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="c1"># edit in the line editor</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">attrs</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;The Line editor can only be applied &quot;</span> <span class="s2">&quot;to one attribute at a time.&quot;</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;The Line editor can only be applied to one attribute at a time.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">attrs</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
@ -2039,7 +2021,7 @@
<span class="k">else</span><span class="p">:</span>
<span class="c1"># deleting the attribute(s)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_attr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">):</span>
@ -2058,7 +2040,7 @@
<span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;control&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to edit </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_attr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">category</span><span class="p">):</span>
@ -2073,7 +2055,7 @@
<span class="ow">or</span> <span class="n">parsed_value</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;edit&quot;</span><span class="p">)</span>
<span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;You don&#39;t have permission to set &quot;</span> <span class="sa">f</span><span class="s2">&quot;object with identifier &#39;</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">&#39;.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;You don&#39;t have permission to set object with identifier &#39;</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">&#39;.&quot;</span>
<span class="p">)</span>
<span class="k">continue</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">parsed_value</span>
@ -2083,7 +2065,8 @@
<span class="c1"># check if anything was done</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;No valid attributes were found. Usage: set obj/attr[:category] = value. Use empty value to clear.&quot;</span>
<span class="s2">&quot;No valid attributes were found. Usage: set obj/attr[:category] = value. Use empty&quot;</span>
<span class="s2">&quot; value to clear.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># send feedback</span>
@ -2242,21 +2225,18 @@
<span class="p">)</span>
<span class="p">)</span>
<span class="k">elif</span> <span class="ow">not</span> <span class="n">matches</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No object or typeclass path found to match &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">oquery</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No object or typeclass path found to match &#39;</span><span class="si">{</span><span class="n">oquery</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># one match found</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Docstring for typeclass &#39;</span><span class="si">{}</span><span class="s2">&#39;:</span><span class="se">\n</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">oquery</span><span class="p">,</span> <span class="n">matches</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Docstring for typeclass &#39;</span><span class="si">{</span><span class="n">oquery</span><span class="si">}</span><span class="s2">&#39;: </span><span class="se">\n</span><span class="si">{</span><span class="n">matches</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="vm">__doc__</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># do the search again to get the error handling in case of multi-match</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">oquery</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">{}</span><span class="s2">&#39;s current typeclass is &#39;</span><span class="si">{}</span><span class="s2">.</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__module__</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span>
<span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39;s current typeclass is&quot;</span>
<span class="sa">f</span><span class="s2">&quot; &#39;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">&#39;&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
@ -2287,14 +2267,13 @@
<span class="n">prototype</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># no match</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No prototype &#39;</span><span class="si">{}</span><span class="s2">&#39; was found.&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No prototype &#39;</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&#39; was found.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">new_typeclass</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">[</span><span class="s2">&quot;typeclass&quot;</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;force&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;show&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;examine&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&#39;s current typeclass is </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39;s current typeclass is &#39;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;swap&quot;</span><span class="p">,</span> <span class="s2">&quot;@swap&quot;</span><span class="p">):</span>
@ -2315,8 +2294,7 @@
<span class="n">is_same</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">is_typeclass</span><span class="p">(</span><span class="n">new_typeclass</span><span class="p">,</span> <span class="n">exact</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">if</span> <span class="n">is_same</span> <span class="ow">and</span> <span class="s2">&quot;force&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> already has the typeclass &#39;</span><span class="si">{</span><span class="n">new_typeclass</span><span class="si">}</span><span class="s2">&#39;. &quot;</span>
<span class="s2">&quot;Use /force to override.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> already has the typeclass &#39;</span><span class="si">{</span><span class="n">new_typeclass</span><span class="si">}</span><span class="s2">&#39;. Use /force to override.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">reset</span> <span class="o">=</span> <span class="s2">&quot;reset&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
@ -2327,11 +2305,10 @@
<span class="k">if</span> <span class="n">reset</span><span class="p">:</span>
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span>
<span class="s2">&quot;|yNote that this will reset the object back to its typeclass&#39; default state, &quot;</span>
<span class="s2">&quot;removing any custom locks/perms/attributes etc that may have been added &quot;</span>
<span class="s2">&quot;by an explicit create_object call. Use `update` or type/force instead in order &quot;</span>
<span class="s2">&quot;to keep such data. &quot;</span>
<span class="s2">&quot;Continue [Y]/N?|n&quot;</span>
<span class="s2">&quot;|yNote that this will reset the object back to its typeclass&#39; default state,&quot;</span>
<span class="s2">&quot; removing any custom locks/perms/attributes etc that may have been added by an&quot;</span>
<span class="s2">&quot; explicit create_object call. Use `update` or type/force instead in order to&quot;</span>
<span class="s2">&quot; keep such data. Continue [Y]/N?|n&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">answer</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;N&quot;</span><span class="p">,</span> <span class="s2">&quot;NO&quot;</span><span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Aborted.&quot;</span><span class="p">)</span>
@ -2343,11 +2320,14 @@
<span class="n">diff</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">prototype_diff_from_object</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">obj</span><span class="p">)</span>
<span class="n">txt</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">format_diff</span><span class="p">(</span><span class="n">diff</span><span class="p">)</span>
<span class="n">prompt</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;Applying prototype &#39;</span><span class="si">%s</span><span class="s2">&#39; over &#39;</span><span class="si">%s</span><span class="s2">&#39; will cause the follow changes:</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">prototype</span><span class="p">[</span><span class="s2">&quot;key&quot;</span><span class="p">],</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">txt</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Applying prototype &#39;</span><span class="si">{</span><span class="n">prototype</span><span class="p">[</span><span class="s1">&#39;key&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#39; over &#39;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; will cause the&quot;</span>
<span class="sa">f</span><span class="s2">&quot; follow changes:</span><span class="se">\n</span><span class="si">{</span><span class="n">txt</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">reset</span><span class="p">:</span>
<span class="n">prompt</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|yWARNING:|n Use the /reset switch to apply the prototype over a blank state.&quot;</span>
<span class="n">prompt</span> <span class="o">+=</span> <span class="p">(</span>
<span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|yWARNING:|n Use the /reset switch to apply the prototype over a blank&quot;</span>
<span class="s2">&quot; state.&quot;</span>
<span class="p">)</span>
<span class="n">prompt</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Are you sure you want to apply these changes [yes]/no?&quot;</span>
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
<span class="k">if</span> <span class="n">answer</span> <span class="ow">and</span> <span class="n">answer</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;no&quot;</span><span class="p">,</span> <span class="s2">&quot;n&quot;</span><span class="p">):</span>
@ -2365,15 +2345,14 @@
<span class="p">)</span>
<span class="n">prototype_success</span> <span class="o">=</span> <span class="n">modified</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">prototype_success</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Prototype </span><span class="si">%s</span><span class="s2"> failed to apply.&quot;</span> <span class="o">%</span> <span class="n">prototype</span><span class="p">[</span><span class="s2">&quot;key&quot;</span><span class="p">])</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Prototype </span><span class="si">{</span><span class="n">prototype</span><span class="p">[</span><span class="s1">&#39;key&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2"> failed to apply.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">is_same</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> updated its existing typeclass (</span><span class="si">%s</span><span class="s2">).</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> updated its existing typeclass (</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2">).</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> changed typeclass from </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">.</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
<span class="n">old_typeclass_path</span><span class="p">,</span>
<span class="n">obj</span><span class="o">.</span><span class="n">typeclass_path</span><span class="p">,</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> changed typeclass from </span><span class="si">{</span><span class="n">old_typeclass_path</span><span class="si">}</span><span class="s2"> to&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">update</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;Only the at_object_creation hook was run (update mode).&quot;</span>
@ -2382,11 +2361,14 @@
<span class="k">if</span> <span class="n">reset</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; All old attributes where deleted before the swap.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; Attributes set before swap were not removed</span><span class="se">\n</span><span class="s2">(use `swap` or `type/reset` to clear all).&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="s2">&quot; Attributes set before swap were not removed</span><span class="se">\n</span><span class="s2">(use `swap` or `type/reset` to&quot;</span>
<span class="s2">&quot; clear all).&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;prototype&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">and</span> <span class="n">prototype_success</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="p">(</span>
<span class="s2">&quot; Prototype &#39;</span><span class="si">%s</span><span class="s2">&#39; was successfully applied over the object type.&quot;</span>
<span class="o">%</span> <span class="n">prototype</span><span class="p">[</span><span class="s2">&quot;key&quot;</span><span class="p">]</span>
<span class="sa">f</span><span class="s2">&quot; Prototype &#39;</span><span class="si">{</span><span class="n">prototype</span><span class="p">[</span><span class="s1">&#39;key&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#39; was successfully applied over the object&quot;</span>
<span class="s2">&quot; type.&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -2435,12 +2417,11 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">attrs</span><span class="p">:</span>
<span class="c1"># wipe everything</span>
<span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Wiped all attributes on </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Wiped all attributes on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">for</span> <span class="n">attrname</span> <span class="ow">in</span> <span class="n">attrs</span><span class="p">:</span>
<span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">attrname</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Wiped attributes </span><span class="si">%s</span><span class="s2"> on </span><span class="si">%s</span><span class="s2">.&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span> <span class="o">%</span> <span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">attrs</span><span class="p">),</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Wiped attributes </span><span class="si">{</span><span class="s1">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">attrs</span><span class="p">)</span><span class="si">}</span><span class="s2"> on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -2486,9 +2467,7 @@
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="s2">&quot;Usage: lock &lt;object&gt;[ = &lt;lockstring&gt;] or lock[/switch] &quot;</span> <span class="s2">&quot;&lt;object&gt;/&lt;access_type&gt;&quot;</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Usage: lock &lt;object&gt;[ = &lt;lockstring&gt;] or lock[/switch] &lt;object&gt;/&lt;access_type&gt;&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">return</span>
@ -2521,7 +2500,7 @@
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">lockdef</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> has no lock of access type &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">access_type</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2"> has no lock of access type &#39;</span><span class="si">{</span><span class="n">access_type</span><span class="si">}</span><span class="s2">&#39;.&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">return</span>
@ -2530,9 +2509,9 @@
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">swi</span> <span class="o">=</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Switch(es) |w</span><span class="si">%s</span><span class="s2">|n can not be used with a &quot;</span>
<span class="sa">f</span><span class="s2">&quot;Switch(es) |w</span><span class="si">{</span><span class="n">swi</span><span class="si">}</span><span class="s2">|n can not be used with a &quot;</span>
<span class="s2">&quot;lock assignment. Use e.g. &quot;</span>
<span class="s2">&quot;|wlock/del objname/locktype|n instead.&quot;</span> <span class="o">%</span> <span class="n">swi</span>
<span class="s2">&quot;|wlock/del objname/locktype|n instead.&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
@ -2560,7 +2539,7 @@
<span class="c1"># update on them unless their cmdsets are rebuilt.</span>
<span class="n">obj</span><span class="o">.</span><span class="n">at_init</span><span class="p">()</span>
<span class="k">if</span> <span class="n">ok</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Added lock &#39;</span><span class="si">%s</span><span class="s2">&#39; to </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">lockdef</span><span class="p">,</span> <span class="n">obj</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Added lock &#39;</span><span class="si">{</span><span class="n">lockdef</span><span class="si">}</span><span class="s2">&#39; to </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># if we get here, we are just viewing all locks on obj</span>
@ -3179,7 +3158,8 @@
<span class="n">low</span><span class="p">,</span> <span class="n">high</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">qs</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">low</span> <span class="ow">and</span> <span class="n">high</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: Min and max ID not returned by aggregation; falling back to queryset slicing.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: Min and max ID not returned by aggregation;&quot;</span>
<span class="s2">&quot; falling back to queryset slicing.&quot;</span>
<span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
@ -3220,7 +3200,7 @@
<span class="n">restrictions</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">restrictions</span> <span class="o">=</span> <span class="s2">&quot;, </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">))</span>
<span class="n">restrictions</span> <span class="o">=</span> <span class="s2">&quot;, </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">)</span>
<span class="k">if</span> <span class="n">is_dbref</span> <span class="ow">or</span> <span class="n">is_account</span><span class="p">:</span>
<span class="k">if</span> <span class="n">is_dbref</span><span class="p">:</span>
@ -3243,14 +3223,12 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> |RNo match found.|n&quot;</span>
<span class="k">elif</span> <span class="ow">not</span> <span class="n">low</span> <span class="o">&lt;=</span> <span class="nb">int</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">high</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> |RNo match found for &#39;</span><span class="si">%s</span><span class="s2">&#39; in #dbref interval.|n&quot;</span> <span class="o">%</span> <span class="n">searchstring</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> |RNo match found for &#39;</span><span class="si">{</span><span class="n">searchstring</span><span class="si">}</span><span class="s2">&#39; in #dbref interval.|n&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|g </span><span class="si">%s</span><span class="s2"> - </span><span class="si">%s</span><span class="s2">|n&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">),</span> <span class="n">result</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|g </span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2">|n&quot;</span>
<span class="k">if</span> <span class="s2">&quot;loc&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_account</span> <span class="ow">and</span> <span class="n">result</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; (|wlocation|n: |g</span><span class="si">{}</span><span class="s2">|n)&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">result</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot; (|wlocation|n: |g</span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">|n)&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># Not an account/dbref search but a wider search; build a queryset.</span>
<span class="c1"># Searches for key and aliases</span>
@ -3535,13 +3513,12 @@
<span class="k">if</span> <span class="n">new_script</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Global Script Created - &quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="sa">f</span><span class="s2">&quot;Global Script Created - </span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">new_script</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="p">)</span>
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="p">[</span><span class="n">new_script</span><span class="p">],</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Global Script |rNOT|n Created |r(see log)|n - &quot;</span> <span class="sa">f</span><span class="s2">&quot;arguments: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="sa">f</span><span class="s2">&quot;Global Script |rNOT|n Created |r(see log)|n - arguments: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="p">)</span>
<span class="k">elif</span> <span class="n">scripts</span> <span class="ow">or</span> <span class="n">obj</span><span class="p">:</span>
@ -3576,9 +3553,7 @@
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)|n&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> - &quot;</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="p">)</span>
<span class="n">msgs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">scripttype</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">verb</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">script_key</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">script_typeclass_path</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">msgs</span><span class="p">))</span>
<span class="k">if</span> <span class="s2">&quot;delete&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="k">if</span> <span class="n">script</span> <span class="ow">and</span> <span class="n">script</span><span class="o">.</span><span class="n">pk</span><span class="p">:</span>
@ -3750,15 +3725,14 @@
<span class="k">if</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">has_account</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Cannot teleport a puppeted object &quot;</span>
<span class="s2">&quot;(</span><span class="si">%s</span><span class="s2">, puppeted by </span><span class="si">%s</span><span class="s2">) to a None-location.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">account</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Cannot teleport a puppeted object (</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">, puppeted by&quot;</span>
<span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">account</span><span class="si">}</span><span class="s2">) to a None-location.&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Teleported </span><span class="si">%s</span><span class="s2"> -&gt; None-location.&quot;</span> <span class="o">%</span> <span class="n">obj_to_teleport</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Teleported </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> -&gt; None-location.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span> <span class="ow">and</span> <span class="s2">&quot;quiet&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> teleported </span><span class="si">%s</span><span class="s2"> into nothingness.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">obj_to_teleport</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2"> teleported </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> into nothingness.&quot;</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span>
<span class="p">)</span>
<span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">return</span>
@ -3786,13 +3760,13 @@
<span class="k">return</span>
<span class="k">if</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span> <span class="ow">and</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">location</span> <span class="o">==</span> <span class="n">destination</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> is already at </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj_to_teleport</span><span class="p">,</span> <span class="n">destination</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> is already at </span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># check any locks</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="s2">&quot;Admin&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">obj_to_teleport</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;teleport&quot;</span><span class="p">)):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> &#39;teleport&#39;-lock blocks you from teleporting &quot;</span> <span class="s2">&quot;it anywhere.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> &#39;teleport&#39;-lock blocks you from teleporting it anywhere.&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
@ -3801,7 +3775,7 @@
<span class="ow">or</span> <span class="n">destination</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">obj_to_teleport</span><span class="p">,</span> <span class="s2">&quot;teleport_here&quot;</span><span class="p">)</span>
<span class="p">):</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2"> &#39;teleport_here&#39;-lock blocks </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> from &quot;</span> <span class="s2">&quot;moving there.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">destination</span><span class="si">}</span><span class="s2"> &#39;teleport_here&#39;-lock blocks </span><span class="si">{</span><span class="n">obj_to_teleport</span><span class="si">}</span><span class="s2"> from moving there.&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
@ -3931,7 +3905,12 @@
<span class="c1"># no search/deletion</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
<span class="c1"># = is found; command args are of the form obj = tag</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># first search locally, then global</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">tag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
@ -3948,7 +3927,12 @@
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># no = found - list tags on object</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># first search locally, then global</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span>
<span class="n">tagtuples</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_key_and_category</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@ -3962,7 +3946,7 @@
<span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="s2">&quot;&#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tags</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">categories</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">ntags</span><span class="p">))),</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;No tags attached to </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;No tags attached to </span><span class="si">{</span><span class="n">obj</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -4118,14 +4102,14 @@
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">expect</span><span class="p">):</span>
<span class="k">if</span> <span class="n">eval_err</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">inp</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">eval_err</span><span class="si">}</span><span class="se">\n</span><span class="s2">|RCritical Python syntax error in argument. Only primitive &quot;</span>
<span class="s2">&quot;Python structures are allowed. </span><span class="se">\n</span><span class="s2">Make sure to use correct &quot;</span>
<span class="s2">&quot;Python syntax. Remember especially to put quotes around all &quot;</span>
<span class="s2">&quot;strings inside lists and dicts.|n For more advanced uses, embed &quot;</span>
<span class="s2">&quot;funcparser callables ($funcs) in the strings.&quot;</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">inp</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">eval_err</span><span class="si">}</span><span class="se">\n</span><span class="s2">|RCritical Python syntax error in argument. Only&quot;</span>
<span class="s2">&quot; primitive Python structures are allowed. </span><span class="se">\n</span><span class="s2">Make sure to use correct&quot;</span>
<span class="s2">&quot; Python syntax. Remember especially to put quotes around all strings&quot;</span>
<span class="s2">&quot; inside lists and dicts.|n For more advanced uses, embed funcparser&quot;</span>
<span class="s2">&quot; callables ($funcs) in the strings.&quot;</span>
<span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Expected </span><span class="si">{}</span><span class="s2">, got </span><span class="si">{}</span><span class="s2">.&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">expect</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">prototype</span><span class="p">))</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Expected </span><span class="si">{</span><span class="n">expect</span><span class="si">}</span><span class="s2">, got </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">prototype</span><span class="p">)</span><span class="si">}</span><span class="s2">.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="k">return</span>
@ -4135,7 +4119,7 @@
<span class="c1"># TODO: Exec support is deprecated. Remove completely for 1.0.</span>
<span class="k">if</span> <span class="s2">&quot;exec&quot;</span> <span class="ow">in</span> <span class="n">prototype</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">check_permstring</span><span class="p">(</span><span class="s2">&quot;Developer&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Spawn aborted: You are not allowed to &quot;</span> <span class="s2">&quot;use the &#39;exec&#39; prototype key.&quot;</span>
<span class="s2">&quot;Spawn aborted: You are not allowed to use the &#39;exec&#39; prototype key.&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
<span class="k">try</span><span class="p">:</span>
@ -4320,7 +4304,8 @@
<span class="c1"># store a prototype to the database store</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;Usage: spawn/save [&lt;key&gt;[;desc[;tag,tag[,...][;lockstring]]]] = &lt;prototype_dict&gt;&quot;</span>
<span class="s2">&quot;Usage: spawn/save [&lt;key&gt;[;desc[;tag,tag[,...][;lockstring]]]] =&quot;</span>
<span class="s2">&quot; &lt;prototype_dict&gt;&quot;</span>
<span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>

View file

@ -623,7 +623,7 @@
<span class="k">if</span> <span class="n">message</span><span class="p">:</span>
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span> <span class="n">bypass_mute</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">channel</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="s2">&quot;Channel </span><span class="si">{}</span><span class="s2"> was deleted by </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channel_key</span><span class="p">,</span> <span class="n">caller</span><span class="p">))</span></div>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Channel </span><span class="si">{</span><span class="n">channel_key</span><span class="si">}</span><span class="s2"> was deleted by </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="CmdChannel.set_lock"><a class="viewcode-back" href="../../../../api/evennia.commands.default.comms.html#evennia.commands.default.comms.CmdChannel.set_lock">[docs]</a> <span class="k">def</span> <span class="nf">set_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">channel</span><span class="p">,</span> <span class="n">lockstring</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -1466,9 +1466,9 @@
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Who do you want page?&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">header</span> <span class="o">=</span> <span class="s2">&quot;|wAccount|n |c</span><span class="si">%s</span><span class="s2">|n |wpages:|n&quot;</span> <span class="o">%</span> <span class="n">caller</span><span class="o">.</span><span class="n">key</span>
<span class="n">header</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;|wAccount|n |c</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n |wpages:|n&quot;</span>
<span class="k">if</span> <span class="n">message</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">):</span>
<span class="n">message</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">message</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
<span class="n">message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">message</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">&#39;:&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="c1"># create the persistent message object</span>
<span class="n">create</span><span class="o">.</span><span class="n">create_message</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">receivers</span><span class="o">=</span><span class="n">targets</span><span class="p">)</span>
@ -1544,7 +1544,7 @@
<span class="n">lastpages</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">listing</span><span class="p">)</span>
<span class="k">if</span> <span class="n">lastpages</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;Your latest pages:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">lastpages</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;Your latest pages:</span><span class="se">\n</span><span class="s2"> </span><span class="si">{</span><span class="n">lastpages</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;You haven&#39;t paged anyone yet.&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
@ -1641,7 +1641,7 @@
<span class="k">return</span>
<span class="k">if</span> <span class="s2">&quot;disconnect&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;remove&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;delete&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">botname</span> <span class="o">=</span> <span class="s2">&quot;ircbot-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
<span class="n">botname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;ircbot-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_is_bot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="n">botname</span><span class="p">)</span>
<span class="n">dbref</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">dbref</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">matches</span> <span class="ow">and</span> <span class="n">dbref</span><span class="p">:</span>
@ -1668,7 +1668,7 @@
<span class="n">irc_network</span><span class="p">,</span> <span class="n">irc_port</span><span class="p">,</span> <span class="n">irc_channel</span><span class="p">,</span> <span class="n">irc_botname</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">irc_channel</span> <span class="o">=</span> <span class="s2">&quot;#</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">irc_channel</span>
<span class="n">irc_channel</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;#</span><span class="si">{</span><span class="n">irc_channel</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;IRC bot definition &#39;</span><span class="si">%s</span><span class="s2">&#39; is not valid.&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
@ -1677,7 +1677,7 @@
<span class="n">botclass</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="s2">&quot;:&quot;</span> <span class="ow">in</span> <span class="n">irc_botname</span><span class="p">:</span>
<span class="n">irc_botname</span><span class="p">,</span> <span class="n">botclass</span> <span class="o">=</span> <span class="p">[</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">irc_botname</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]</span>
<span class="n">botname</span> <span class="o">=</span> <span class="s2">&quot;ircbot-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">irc_botname</span>
<span class="n">botname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;ircbot-</span><span class="si">{</span><span class="n">irc_botname</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="c1"># If path given, use custom bot otherwise use default.</span>
<span class="n">botclass</span> <span class="o">=</span> <span class="n">botclass</span> <span class="k">if</span> <span class="n">botclass</span> <span class="k">else</span> <span class="n">bots</span><span class="o">.</span><span class="n">IRCBot</span>
<span class="n">irc_ssl</span> <span class="o">=</span> <span class="s2">&quot;ssl&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
@ -1688,13 +1688,13 @@
<span class="c1"># re-use an existing bot</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">bot</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">bot</span><span class="o">.</span><span class="n">is_bot</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account &#39;</span><span class="si">%s</span><span class="s2">&#39; already exists and is not a bot.&quot;</span> <span class="o">%</span> <span class="n">botname</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Account &#39;</span><span class="si">{</span><span class="n">botname</span><span class="si">}</span><span class="s2">&#39; already exists and is not a bot.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span><span class="n">botname</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">botclass</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|rError, could not create the bot:|n &#39;</span><span class="si">%s</span><span class="s2">&#39;.&quot;</span> <span class="o">%</span> <span class="n">err</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|rError, could not create the bot:|n &#39;</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">&#39;.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">bot</span><span class="o">.</span><span class="n">start</span><span class="p">(</span>
<span class="n">ev_channel</span><span class="o">=</span><span class="n">channel</span><span class="p">,</span>
@ -1757,26 +1757,21 @@
<span class="n">channel</span> <span class="o">=</span> <span class="n">ircbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_channel</span>
<span class="n">network</span> <span class="o">=</span> <span class="n">ircbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_network</span>
<span class="n">port</span> <span class="o">=</span> <span class="n">ircbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_port</span>
<span class="n">chtext</span> <span class="o">=</span> <span class="s2">&quot;IRC bot &#39;</span><span class="si">%s</span><span class="s2">&#39; on channel </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">ircbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_botname</span><span class="p">,</span>
<span class="n">channel</span><span class="p">,</span>
<span class="n">network</span><span class="p">,</span>
<span class="n">port</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">chtext</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;IRC bot &#39;</span><span class="si">{</span><span class="n">ircbot</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_botname</span><span class="si">}</span><span class="s2">&#39; on channel </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">network</span><span class="si">}</span><span class="s2">:</span><span class="si">{</span><span class="n">port</span><span class="si">}</span><span class="s2">)&quot;</span>
<span class="k">if</span> <span class="n">option</span> <span class="o">==</span> <span class="s2">&quot;ping&quot;</span><span class="p">:</span>
<span class="c1"># check connection by sending outself a ping through the server.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Pinging through </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">chtext</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Pinging through </span><span class="si">{</span><span class="n">chtext</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="n">ircbot</span><span class="o">.</span><span class="n">ping</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">option</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;users&quot;</span><span class="p">,</span> <span class="s2">&quot;nicklist&quot;</span><span class="p">,</span> <span class="s2">&quot;who&quot;</span><span class="p">):</span>
<span class="c1"># retrieve user list. The bot must handles the echo since it&#39;s</span>
<span class="c1"># an asynchronous call.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Requesting nicklist from </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">).&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">channel</span><span class="p">,</span> <span class="n">network</span><span class="p">,</span> <span class="n">port</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Requesting nicklist from </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">network</span><span class="si">}</span><span class="s2">:</span><span class="si">{</span><span class="n">port</span><span class="si">}</span><span class="s2">).&quot;</span><span class="p">)</span>
<span class="n">ircbot</span><span class="o">.</span><span class="n">get_nicklist</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span>
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">check_lockstring</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;dummy:perm(ircstatus) or perm(Developer)&quot;</span>
<span class="p">):</span>
<span class="c1"># reboot the client</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Forcing a disconnect + reconnect of </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">chtext</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Forcing a disconnect + reconnect of </span><span class="si">{</span><span class="n">chtext</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="n">ircbot</span><span class="o">.</span><span class="n">reconnect</span><span class="p">()</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You don&#39;t have permission to force-reload the IRC bot.&quot;</span><span class="p">)</span></div></div>
@ -1858,7 +1853,7 @@
<span class="k">return</span>
<span class="k">if</span> <span class="s2">&quot;disconnect&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;remove&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;delete&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">botname</span> <span class="o">=</span> <span class="s2">&quot;rssbot-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
<span class="n">botname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;rssbot-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_is_bot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_key</span><span class="o">=</span><span class="n">botname</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">matches</span><span class="p">:</span>
<span class="c1"># try dbref match</span>
@ -1877,13 +1872,13 @@
<span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
<span class="n">url</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
<span class="n">botname</span> <span class="o">=</span> <span class="s2">&quot;rssbot-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">url</span>
<span class="n">botname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;rssbot-</span><span class="si">{</span><span class="n">url</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">username__iexact</span><span class="o">=</span><span class="n">botname</span><span class="p">)</span>
<span class="k">if</span> <span class="n">bot</span><span class="p">:</span>
<span class="c1"># re-use existing bot</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">bot</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">bot</span><span class="o">.</span><span class="n">is_bot</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account &#39;</span><span class="si">%s</span><span class="s2">&#39; already exists and is not a bot.&quot;</span> <span class="o">%</span> <span class="n">botname</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account &#39;</span><span class="si">{botname}</span><span class="s2">&#39; already exists and is not a bot.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># create a new bot</span>
@ -1951,7 +1946,7 @@
<span class="k">return</span>
<span class="k">if</span> <span class="s2">&quot;disconnect&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;remove&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;delete&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
<span class="n">botname</span> <span class="o">=</span> <span class="s2">&quot;grapevinebot-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
<span class="n">botname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;grapevinebot-</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">matches</span> <span class="o">=</span> <span class="n">AccountDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_is_bot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_key</span><span class="o">=</span><span class="n">botname</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">matches</span><span class="p">:</span>
@ -1978,10 +1973,10 @@
<span class="c1"># re-use existing bot</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">bot</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">bot</span><span class="o">.</span><span class="n">is_bot</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account &#39;</span><span class="si">%s</span><span class="s2">&#39; already exists and is not a bot.&quot;</span> <span class="o">%</span> <span class="n">botname</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Account &#39;</span><span class="si">{</span><span class="n">botname</span><span class="si">}</span><span class="s2">&#39; already exists and is not a bot.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Reusing bot &#39;</span><span class="si">%s</span><span class="s2">&#39; (</span><span class="si">%s</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">botname</span><span class="p">,</span> <span class="n">bot</span><span class="o">.</span><span class="n">dbref</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Reusing bot &#39;</span><span class="si">{</span><span class="n">botname</span><span class="si">}</span><span class="s2">&#39; (</span><span class="si">{</span><span class="n">bot</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># create a new bot</span>
<span class="n">bot</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span><span class="n">botname</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">typeclass</span><span class="o">=</span><span class="n">bots</span><span class="o">.</span><span class="n">GrapevineBot</span><span class="p">)</span>

View file

@ -297,9 +297,7 @@
<span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">old_nickstring</span><span class="p">,</span> <span class="n">old_replstring</span> <span class="o">=</span> <span class="n">oldnick</span><span class="o">.</span><span class="n">value</span>
<span class="n">caller</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">old_nickstring</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">nicktype</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> removed: &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; -&gt; |w</span><span class="si">%s</span><span class="s2">|n.&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">nicktypestr</span><span class="p">,</span> <span class="n">old_nickstring</span><span class="p">,</span> <span class="n">old_replstring</span><span class="p">)</span>
<span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">nicktypestr</span><span class="si">}</span><span class="s2"> removed: &#39;|w</span><span class="si">{</span><span class="n">old_nickstring</span><span class="si">}</span><span class="s2">|n&#39; -&gt; |w</span><span class="si">{</span><span class="n">old_replstring</span><span class="si">}</span><span class="s2">|n.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No matching nicks to remove.&quot;</span><span class="p">)</span>
<span class="k">return</span>
@ -321,12 +319,12 @@
<span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span> <span class="o">=</span> <span class="n">nick</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">nick</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">):</span>
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">{}</span><span class="s2">-nick: &#39;</span><span class="si">{}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">(),</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s2">-nick: &#39;</span><span class="si">{</span><span class="n">nick</span><span class="si">}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{</span><span class="n">repl</span><span class="si">}</span><span class="s2">&#39;&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">strings</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">strings</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{</span><span class="bp">self</span><span class="p">,</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
@ -344,12 +342,12 @@
<span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span> <span class="o">=</span> <span class="n">nick</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">nick</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">):</span>
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">{}</span><span class="s2">-nick: &#39;</span><span class="si">{}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">(),</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s2">-nick: &#39;</span><span class="si">{</span><span class="n">nick</span><span class="si">}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{</span><span class="n">repl</span><span class="si">}</span><span class="s2">&#39;&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">strings</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">strings</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
@ -367,12 +365,12 @@
<span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span> <span class="o">=</span> <span class="n">nick</span><span class="o">.</span><span class="n">value</span>
<span class="k">if</span> <span class="n">nick</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">):</span>
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">{}</span><span class="s2">-nick: &#39;</span><span class="si">{}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">(),</span> <span class="n">nick</span><span class="p">,</span> <span class="n">repl</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s2">-nick: &#39;</span><span class="si">{</span><span class="n">nick</span><span class="si">}</span><span class="s2">&#39; -&gt; &#39;</span><span class="si">{</span><span class="n">repl</span><span class="si">}</span><span class="s2">&#39;&quot;</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">strings</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">strings</span><span class="p">))</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{}</span><span class="s2">&#39;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;No nicks found matching &#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">:</span>
@ -392,7 +390,7 @@
<span class="n">errstring</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">for</span> <span class="n">nicktype</span> <span class="ow">in</span> <span class="n">nicktypes</span><span class="p">:</span>
<span class="n">nicktypestr</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">-nick&quot;</span> <span class="o">%</span> <span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span>
<span class="n">nicktypestr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">nicktype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()</span><span class="si">}</span><span class="s2">-nick&quot;</span>
<span class="n">old_nickstring</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">old_replstring</span> <span class="o">=</span> <span class="kc">None</span>
@ -404,19 +402,11 @@
<span class="n">errstring</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="k">if</span> <span class="n">oldnick</span><span class="p">:</span>
<span class="k">if</span> <span class="n">replstring</span> <span class="o">==</span> <span class="n">old_replstring</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Identical </span><span class="si">%s</span><span class="s2"> already set.&quot;</span> <span class="o">%</span> <span class="n">nicktypestr</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Identical </span><span class="si">{</span><span class="n">nicktypestr</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="si">}</span><span class="s2"> already set.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; updated to map to &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">nicktypestr</span><span class="p">,</span>
<span class="n">old_nickstring</span><span class="p">,</span>
<span class="n">replstring</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">nicktypestr</span><span class="si">}</span><span class="s2"> &#39;|w</span><span class="si">{</span><span class="n">old_nickstring</span><span class="si">}</span><span class="s2">|n&#39; updated to map to &#39;|w</span><span class="si">{</span><span class="n">replstring</span><span class="si">}</span><span class="s2">|n&#39;.&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; mapped to &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">nicktypestr</span><span class="p">,</span>
<span class="n">nickstring</span><span class="p">,</span>
<span class="n">replstring</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">nicktypestr</span><span class="si">}</span><span class="s2"> &#39;|w</span><span class="si">{</span><span class="n">nickstring</span><span class="si">}</span><span class="s2">|n&#39; mapped to &#39;|w</span><span class="si">{</span><span class="n">replstring</span><span class="si">}</span><span class="s2">|n&#39;.&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">nickstring</span><span class="p">,</span> <span class="n">replstring</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="n">nicktype</span><span class="p">)</span>
<span class="k">except</span> <span class="n">NickTemplateInvalid</span><span class="p">:</span>
@ -426,11 +416,7 @@
<span class="k">return</span>
<span class="k">elif</span> <span class="n">old_nickstring</span> <span class="ow">and</span> <span class="n">old_replstring</span><span class="p">:</span>
<span class="c1"># just looking at the nick</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39; maps to &#39;|w</span><span class="si">%s</span><span class="s2">|n&#39;.&quot;</span> <span class="o">%</span> <span class="p">(</span>
<span class="n">nicktypestr</span><span class="p">,</span>
<span class="n">old_nickstring</span><span class="p">,</span>
<span class="n">old_replstring</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">{</span><span class="n">nicktypestr</span><span class="si">}</span><span class="s2"> &#39;|w</span><span class="si">{</span><span class="n">old_nickstring</span><span class="si">}</span><span class="s2">|n&#39; maps to &#39;|w</span><span class="si">{</span><span class="n">old_replstring</span><span class="si">}</span><span class="s2">|n&#39;.&quot;</span>
<span class="n">errstring</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
<span class="n">string</span> <span class="o">=</span> <span class="n">errstring</span> <span class="k">if</span> <span class="n">errstring</span> <span class="k">else</span> <span class="n">string</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_cy</span><span class="p">(</span><span class="n">string</span><span class="p">))</span></div></div>
@ -515,10 +501,8 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;This can&#39;t be picked up.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You pick up </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span>
<span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> picks up </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You pick up </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> picks up </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
<span class="c1"># calling at_get hook method</span>
<span class="n">obj</span><span class="o">.</span><span class="n">at_get</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
@ -551,8 +535,8 @@
<span class="n">obj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
<span class="n">location</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
<span class="n">nofound_string</span><span class="o">=</span><span class="s2">&quot;You aren&#39;t carrying </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
<span class="n">multimatch_string</span><span class="o">=</span><span class="s2">&quot;You carry more than one </span><span class="si">%s</span><span class="s2">:&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
<span class="n">nofound_string</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;You aren&#39;t carrying </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">,</span>
<span class="n">multimatch_string</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;You carry more than one </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">:&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
<span class="k">return</span>
@ -566,7 +550,7 @@
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;This couldn&#39;t be dropped.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You drop </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">,))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> drops </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> drops </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">,</span> <span class="n">exclude</span><span class="o">=</span><span class="n">caller</span><span class="p">)</span>
<span class="c1"># Call the object script&#39;s at_drop() method.</span>
<span class="n">obj</span><span class="o">.</span><span class="n">at_drop</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span></div></div>
@ -597,17 +581,17 @@
<span class="n">to_give</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span>
<span class="n">location</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
<span class="n">nofound_string</span><span class="o">=</span><span class="s2">&quot;You aren&#39;t carrying </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span>
<span class="n">multimatch_string</span><span class="o">=</span><span class="s2">&quot;You carry more than one </span><span class="si">%s</span><span class="s2">:&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span>
<span class="n">nofound_string</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;You aren&#39;t carrying </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">,</span>
<span class="n">multimatch_string</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;You carry more than one </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">:&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">target</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">to_give</span> <span class="ow">and</span> <span class="n">target</span><span class="p">):</span>
<span class="k">return</span>
<span class="k">if</span> <span class="n">target</span> <span class="o">==</span> <span class="n">caller</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You keep </span><span class="si">%s</span><span class="s2"> to yourself.&quot;</span> <span class="o">%</span> <span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You keep </span><span class="si">{</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> to yourself.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">to_give</span><span class="o">.</span><span class="n">location</span> <span class="o">==</span> <span class="n">caller</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You are not holding </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You are not holding </span><span class="si">{</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># calling at_pre_give hook method</span>
@ -617,10 +601,10 @@
<span class="c1"># give object</span>
<span class="n">success</span> <span class="o">=</span> <span class="n">to_give</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">move_type</span><span class="o">=</span><span class="s2">&quot;give&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">success</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;This could not be given.&quot;</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You could not give </span><span class="si">{</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You give </span><span class="si">%s</span><span class="s2"> to </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> gives you </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;You give </span><span class="si">{</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> gives you </span><span class="si">{</span><span class="n">to_give</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="c1"># Call the object script&#39;s at_give() method.</span>
<span class="n">to_give</span><span class="o">.</span><span class="n">at_give</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span></div></div>
@ -778,7 +762,7 @@
<span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;What do you want to do?&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
<span class="n">msg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="p">{</span><span class="s2">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;pose&quot;</span><span class="p">}),</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">)</span></div></div>
@ -813,9 +797,9 @@
<span class="n">pperms</span> <span class="o">=</span> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|wYour access|n:&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Character |c</span><span class="si">%s</span><span class="s2">|n: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">cperms</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Character |c</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">cperms</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">&quot;account&quot;</span><span class="p">):</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Account |c</span><span class="si">%s</span><span class="s2">|n: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">pperms</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Account |c</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">pperms</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
</pre></div>

View file

@ -1038,7 +1038,7 @@
<span class="k">if</span> <span class="s2">&quot;append&quot;</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;merge&quot;</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;extend&quot;</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
<span class="c1"># merge/append operations</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">old_entry</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Could not find topic &#39;</span><span class="si">%s</span><span class="s2">&#39;. You must give an exact name.&quot;</span> <span class="o">%</span> <span class="n">topicstr</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Could not find topic &#39;</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">&#39;. You must give an exact name.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;You must supply text to append/merge.&quot;</span><span class="p">)</span>
@ -1048,16 +1048,16 @@
<span class="k">else</span><span class="p">:</span>
<span class="n">old_entry</span><span class="o">.</span><span class="n">entrytext</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
<span class="n">old_entry</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Entry updated:</span><span class="se">\n</span><span class="si">%s%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">old_entry</span><span class="o">.</span><span class="n">entrytext</span><span class="p">,</span> <span class="n">aliastxt</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Entry updated:</span><span class="se">\n</span><span class="si">{</span><span class="n">old_entry</span><span class="o">.</span><span class="n">entrytext</span><span class="si">}{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="s2">&quot;delete&quot;</span> <span class="ow">in</span> <span class="n">switches</span> <span class="ow">or</span> <span class="s2">&quot;del&quot;</span> <span class="ow">in</span> <span class="n">switches</span><span class="p">:</span>
<span class="c1"># delete the help entry</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">old_entry</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Could not find topic &#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">topicstr</span><span class="p">,</span> <span class="n">aliastxt</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Could not find topic &#39;</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="n">old_entry</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Deleted help entry &#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">topicstr</span><span class="p">,</span> <span class="n">aliastxt</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Deleted help entry &#39;</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="c1"># at this point it means we want to add a new help entry.</span>
@ -1074,7 +1074,7 @@
<span class="n">old_entry</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lockstring</span><span class="p">)</span>
<span class="n">old_entry</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span>
<span class="n">old_entry</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Overwrote the old topic &#39;</span><span class="si">%s</span><span class="s2">&#39;</span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">topicstr</span><span class="p">,</span> <span class="n">aliastxt</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Overwrote the old topic &#39;</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;Topic &#39;</span><span class="si">{</span><span class="n">topicstr</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">aliastxt</span><span class="si">}</span><span class="s2"> already exists. Use /edit to open in editor, or &quot;</span>

View file

@ -292,30 +292,30 @@
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="c1"># a simple test command to show the available properties</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;-&quot;</span> <span class="o">*</span> <span class="mi">50</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|w</span><span class="si">%s</span><span class="s2">|n - Command variables from evennia:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n - Command variables from evennia:</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;-&quot;</span> <span class="o">*</span> <span class="mi">50</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">name of cmd (self.key): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd aliases (self.aliases): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">aliases</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd locks (self.locks): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">locks</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;help category (self.help_category): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">help_category</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;object calling (self.caller): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;object storing cmdset (self.obj): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;command string given (self.cmdstring): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">name of cmd (self.key): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd aliases (self.aliases): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">aliases</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd locks (self.locks): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">locks</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;help category (self.help_category): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">help_category</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;object calling (self.caller): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;object storing cmdset (self.obj): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;command string given (self.cmdstring): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="c1"># show cmdset.key instead of cmdset to shorten output</span>
<span class="n">string</span> <span class="o">+=</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="s2">&quot;current cmdset (self.cmdset): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="n">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;current cmdset (self.cmdset): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s2">&quot;-&quot;</span> <span class="o">*</span> <span class="mi">50</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Variables from MuxCommand baseclass</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;-&quot;</span> <span class="o">*</span> <span class="mi">50</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">raw argument (self.raw): |w</span><span class="si">%s</span><span class="s2">|n </span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">raw</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd args (self.args): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd switches (self.switches): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd options (self.switch_options): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch_options</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;cmd parse left/right using (self.rhs_split): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs_split</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;space-separated arg list (self.arglist): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">arglist</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;lhs, left-hand side of &#39;=&#39; (self.lhs): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;lhs, comma separated (self.lhslist): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;rhs, right-hand side of &#39;=&#39; (self.rhs): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;rhs, comma separated (self.rhslist): |w</span><span class="si">%s</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhslist</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">raw argument (self.raw): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">raw</span><span class="si">}</span><span class="s2">|n </span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd args (self.args): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd switches (self.switches): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd options (self.switch_options): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">switch_options</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;cmd parse left/right using (self.rhs_split): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs_split</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;space-separated arg list (self.arglist): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">arglist</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;lhs, left-hand side of &#39;=&#39; (self.lhs): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;lhs, comma separated (self.lhslist): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;rhs, right-hand side of &#39;=&#39; (self.rhs): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;rhs, comma separated (self.rhslist): |w</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">rhslist</span><span class="si">}</span><span class="s2">|n</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;-&quot;</span> <span class="o">*</span> <span class="mi">50</span>
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div>

View file

@ -149,7 +149,7 @@
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
<span class="n">reason</span> <span class="o">=</span> <span class="s2">&quot;(Reason: </span><span class="si">%s</span><span class="s2">) &quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">rstrip</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">_BROADCAST_SERVER_RESTART_MESSAGES</span><span class="p">:</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">announce_all</span><span class="p">(</span><span class="s2">&quot; Server restart initiated </span><span class="si">%s</span><span class="s2">...&quot;</span> <span class="o">%</span> <span class="n">reason</span><span class="p">)</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">announce_all</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Server restart initiated </span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">...&quot;</span><span class="p">)</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">portal_restart_server</span><span class="p">()</span></div></div>
@ -211,7 +211,7 @@
<span class="n">announcement</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Server is being SHUT DOWN!</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
<span class="n">announcement</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="s2">&quot;Server shutdown by </span><span class="si">%s</span><span class="s2">.&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Server shutdown by </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">announce_all</span><span class="p">(</span><span class="n">announcement</span><span class="p">)</span>
<span class="n">SESSIONS</span><span class="o">.</span><span class="n">portal_shutdown</span><span class="p">()</span></div></div>
@ -558,13 +558,12 @@
<span class="c1"># Boot the account then delete it.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Informing and disconnecting account ...&quot;</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Your account &#39;</span><span class="si">%s</span><span class="s2">&#39; is being *permanently* deleted.</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">username</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Your account &#39;</span><span class="si">{</span><span class="n">username</span><span class="si">}</span><span class="s2">&#39; is being *permanently* deleted.</span><span class="se">\n</span><span class="s2">&quot;</span>
<span class="k">if</span> <span class="n">reason</span><span class="p">:</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot; Reason given:</span><span class="se">\n</span><span class="s2"> &#39;</span><span class="si">%s</span><span class="s2">&#39;&quot;</span> <span class="o">%</span> <span class="n">reason</span>
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
<span class="s2">&quot;Account Deleted: </span><span class="si">%s</span><span class="s2"> (Reason: </span><span class="si">%s</span><span class="s2">, Caller: </span><span class="si">%s</span><span class="s2">, IP: </span><span class="si">%s</span><span class="s2">).&quot;</span>
<span class="o">%</span> <span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="n">reason</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
<span class="sa">f</span><span class="s2">&quot;Account Deleted: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2"> (Reason: </span><span class="si">{</span><span class="n">reason</span><span class="si">}</span><span class="s2">, Caller: </span><span class="si">{</span><span class="n">caller</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">).&quot;</span>
<span class="p">)</span>
<span class="n">account</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;Account </span><span class="si">%s</span><span class="s2"> was successfully deleted.&quot;</span> <span class="o">%</span> <span class="n">username</span><span class="p">)</span>
@ -595,8 +594,8 @@
<span class="n">utils</span><span class="o">.</span><span class="n">datetime_format</span><span class="p">(</span><span class="n">ply</span><span class="o">.</span><span class="n">date_created</span><span class="p">),</span> <span class="n">ply</span><span class="o">.</span><span class="n">dbref</span><span class="p">,</span> <span class="n">ply</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">ply</span><span class="o">.</span><span class="n">path</span>
<span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|wAccount typeclass distribution:|n</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">typetable</span>
<span class="n">string</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|wLast </span><span class="si">%s</span><span class="s2"> Accounts created:|n</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">naccounts</span><span class="p">,</span> <span class="n">nlim</span><span class="p">),</span> <span class="n">latesttable</span><span class="p">)</span>
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|wAccount typeclass distribution:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">typetable</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">|wLast </span><span class="si">{</span><span class="nb">min</span><span class="p">(</span><span class="n">naccounts</span><span class="p">,</span> <span class="n">nlim</span><span class="p">)</span><span class="si">}</span><span class="s2"> Accounts created:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">latesttable</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
@ -686,7 +685,7 @@
<span class="k">if</span> <span class="n">delmode</span><span class="p">:</span>
<span class="n">service</span><span class="o">.</span><span class="n">stopService</span><span class="p">()</span>
<span class="n">service_collection</span><span class="o">.</span><span class="n">removeService</span><span class="p">(</span><span class="n">service</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|gStopped and removed service &#39;</span><span class="si">%s</span><span class="s2">&#39;.|n&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|gStopped and removed service &#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&#39;.|n&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Stopping service &#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&#39;...&quot;</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
@ -697,7 +696,7 @@
<span class="s2">&quot;If there are remaining problems, try reloading &quot;</span>
<span class="s2">&quot;or rebooting the server.&quot;</span>
<span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">&quot;|g... Stopped service &#39;</span><span class="si">%s</span><span class="s2">&#39;.|n&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;|g... Stopped service &#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">&#39;.|n&quot;</span><span class="p">)</span>
<span class="k">return</span>
<span class="k">if</span> <span class="n">switches</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;start&quot;</span><span class="p">:</span>

View file

@ -815,7 +815,7 @@
<span class="sd"> char.location.msg_contents(</span>
<span class="sd"> &quot;{attacker} attacks {defender}.&quot;,</span>
<span class="sd"> mapping={&quot;attacker:player1, &quot;defender&quot;:player2})</span>
<span class="sd"> mapping={&quot;attacker&quot;:player1, &quot;defender&quot;:player2})</span>
<span class="sd"> - player1 will see: &#39;Player1 attacks The Second girl.&#39;</span>
<span class="sd"> - player2 will see: &#39;The First girl attacks Player2&#39;</span>
@ -836,10 +836,14 @@
<span class="n">exclude</span> <span class="o">=</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">exclude</span><span class="p">)</span>
<span class="n">contents</span> <span class="o">=</span> <span class="p">[</span><span class="n">obj</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">contents</span> <span class="k">if</span> <span class="n">obj</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exclude</span><span class="p">]</span>
<span class="c1"># escape existing { in the input to not interfere with mapping</span>
<span class="n">inmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;{&quot;</span><span class="p">,</span> <span class="s2">&quot;{{&quot;</span><span class="p">)</span>
<span class="n">inmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;}&quot;</span><span class="p">,</span> <span class="s2">&quot;}}&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">receiver</span> <span class="ow">in</span> <span class="n">contents</span><span class="p">:</span>
<span class="c1"># actor-stance replacements</span>
<span class="n">inmessage</span> <span class="o">=</span> <span class="n">_MSG_CONTENTS_PARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span>
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">_MSG_CONTENTS_PARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span>
<span class="n">inmessage</span><span class="p">,</span>
<span class="n">raise_errors</span><span class="o">=</span><span class="n">raise_funcparse_errors</span><span class="p">,</span>
<span class="n">return_string</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
@ -849,7 +853,7 @@
<span class="p">)</span>
<span class="c1"># director-stance replacements</span>
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">format_map</span><span class="p">(</span>
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">outmessage</span><span class="o">.</span><span class="n">format_map</span><span class="p">(</span>
<span class="p">{</span>
<span class="n">key</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">looker</span><span class="o">=</span><span class="n">receiver</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">&quot;get_display_name&quot;</span><span class="p">)</span>
@ -1767,8 +1771,7 @@
<span class="sd"> access_type (str): The type of access that was requested.</span>
<span class="sd"> Keyword Args:</span>
<span class="sd"> Not used by default, added for possible expandability in a</span>
<span class="sd"> game.</span>
<span class="sd"> Unused by default, added for possible expandability in a game.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">pass</span></div>

View file

@ -166,11 +166,28 @@
<span class="n">PSTATUS</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">18</span><span class="p">)</span> <span class="c1"># ping server or portal status</span>
<span class="n">SRESET</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">19</span><span class="p">)</span> <span class="c1"># shutdown server in reset mode</span>
<span class="c1"># requirements</span>
<span class="n">PYTHON_MIN</span> <span class="o">=</span> <span class="s2">&quot;3.9&quot;</span>
<span class="n">TWISTED_MIN</span> <span class="o">=</span> <span class="s2">&quot;20.3.0&quot;</span>
<span class="n">DJANGO_MIN</span> <span class="o">=</span> <span class="s2">&quot;4.0.2&quot;</span>
<span class="n">DJANGO_LT</span> <span class="o">=</span> <span class="s2">&quot;4.1&quot;</span>
<span class="c1"># live version requirement checks (from VERSION_REQS.txt file)</span>
<span class="n">PYTHON_MIN</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">PYTHON_MAX_TESTED</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">TWISTED_MIN</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">DJANGO_MIN</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">DJANGO_LT</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">EVENNIA_LIB</span><span class="p">,</span> <span class="s2">&quot;VERSION_REQS.txt&quot;</span><span class="p">))</span> <span class="k">as</span> <span class="n">fil</span><span class="p">:</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">fil</span><span class="o">.</span><span class="n">readlines</span><span class="p">():</span>
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">&quot;=&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
<span class="k">continue</span>
<span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">value</span> <span class="o">=</span> <span class="p">(</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
<span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;PYTHON_MIN&quot;</span><span class="p">:</span>
<span class="n">PYTHON_MIN</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">value</span> <span class="k">else</span> <span class="s2">&quot;0&quot;</span>
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;PYTHON_MAX_TESTED&quot;</span><span class="p">:</span>
<span class="n">PYTHON_MAX_TESTED</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">value</span> <span class="k">else</span> <span class="s2">&quot;100&quot;</span>
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;TWISTED_MIN&quot;</span><span class="p">:</span>
<span class="n">TWISTED_MIN</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">value</span> <span class="k">else</span> <span class="s2">&quot;0&quot;</span>
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;DJANGO_MIN&quot;</span><span class="p">:</span>
<span class="n">DJANGO_MIN</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">value</span> <span class="k">else</span> <span class="s2">&quot;0&quot;</span>
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;DJANGO_LT&quot;</span><span class="p">:</span>
<span class="n">DJANGO_LT</span> <span class="o">=</span> <span class="n">value</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">value</span> <span class="k">else</span> <span class="s2">&quot;100&quot;</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">EVENNIA_ROOT</span>
@ -440,6 +457,12 @@
<span class="s2"> </span><span class="si">{python_min}</span><span class="s2"> or higher.</span>
<span class="s2"> &quot;&quot;&quot;</span>
<span class="n">WARNING_PYTHON_MAX_TESTED_VERSION</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> WARNING: Python </span><span class="si">{pversion}</span><span class="s2"> used. Evennia is only tested with Python</span>
<span class="s2"> versions </span><span class="si">{python_min}</span><span class="s2"> to </span><span class="si">{python_max_tested}</span><span class="s2">. If you see unexpected errors, try</span>
<span class="s2"> reinstalling with a tested Python version instead.</span>
<span class="s2"> &quot;&quot;&quot;</span>
<span class="n">ERROR_TWISTED_VERSION</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> ERROR: Twisted </span><span class="si">{tversion}</span><span class="s2"> found. Evennia requires</span>
<span class="s2"> version </span><span class="si">{twisted_min}</span><span class="s2"> or higher.</span>
@ -1338,6 +1361,13 @@
<span class="k">if</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">pversion</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">PYTHON_MIN</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ERROR_PYTHON_VERSION</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pversion</span><span class="o">=</span><span class="n">pversion</span><span class="p">,</span> <span class="n">python_min</span><span class="o">=</span><span class="n">PYTHON_MIN</span><span class="p">))</span>
<span class="n">error</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">pversion</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">LooseVersion</span><span class="p">(</span><span class="n">PYTHON_MAX_TESTED</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span>
<span class="n">WARNING_PYTHON_MAX_TESTED_VERSION</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">pversion</span><span class="o">=</span><span class="n">pversion</span><span class="p">,</span> <span class="n">python_min</span><span class="o">=</span><span class="n">PYTHON_MIN</span><span class="p">,</span> <span class="n">python_max_tested</span><span class="o">=</span><span class="n">PYTHON_MAX_TESTED</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="c1"># Twisted</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span> <span class="nn">twisted</span>

View file

@ -186,7 +186,7 @@
<span class="s2">&quot;examine:perm(Developer);edit:false();delete:false();boot:false();msg:all();puppet:false()&quot;</span>
<span class="p">)</span>
<span class="c1"># we set this low so that quelling is more useful</span>
<span class="n">superuser_character</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;Player&quot;</span><span class="p">)</span>
<span class="n">superuser_character</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;Developer&quot;</span><span class="p">)</span>
<span class="n">superuser_character</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
<span class="n">superuser</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">&quot;_first_login&quot;</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>

View file

@ -95,8 +95,6 @@
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">callables_from_module</span><span class="p">,</span> <span class="n">class_from_module</span>
<span class="n">SCRIPTDB</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">_BASE_SCRIPT_TYPECLASS</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="Container"><a class="viewcode-back" href="../../../api/evennia.utils.containers.html#evennia.utils.containers.Container">[docs]</a><span class="k">class</span> <span class="nc">Container</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;</span>
@ -277,27 +275,11 @@
<span class="sd"> initialized.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loaded_data</span><span class="p">:</span>
<span class="c1"># we don&#39;t always load this, it collides with doc generation</span>
<span class="k">global</span> <span class="n">_BASE_SCRIPT_TYPECLASS</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">_BASE_SCRIPT_TYPECLASS</span><span class="p">:</span>
<span class="n">_BASE_SCRIPT_TYPECLASS</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">data</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">loaded_data</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">typeclass</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;typeclass&quot;</span><span class="p">,</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">)</span>
<span class="n">script_typeclass</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">typeclass</span><span class="p">)</span>
<span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">script_typeclass</span><span class="p">,</span> <span class="n">_BASE_SCRIPT_TYPECLASS</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">script_typeclass</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">&quot;GlobalScriptContainer could not start import global script </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">. &quot;</span>
<span class="s2">&quot;It will be removed (skipped).&quot;</span>
<span class="p">)</span>
<span class="c1"># Let&#39;s remove this key/value. We want to let other scripts load.</span>
<span class="bp">self</span><span class="o">.</span><span class="n">loaded_data</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">)</span></div>
<span class="n">typeclass</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;typeclass&quot;</span><span class="p">,</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">typeclass_storage</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">class_from_module</span><span class="p">(</span><span class="n">typeclass</span><span class="p">,</span> <span class="n">fallback</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">)</span></div>
<div class="viewcode-block" id="GlobalScriptContainer.get"><a class="viewcode-back" href="../../../api/evennia.utils.containers.html#evennia.utils.containers.GlobalScriptContainer.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>

View file

@ -100,8 +100,8 @@
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">OrderedDict</span><span class="p">,</span> <span class="n">defaultdict</span>
<span class="kn">from</span> <span class="nn">inspect</span> <span class="kn">import</span> <span class="n">getmembers</span><span class="p">,</span> <span class="n">getmodule</span><span class="p">,</span> <span class="n">getmro</span><span class="p">,</span> <span class="n">ismodule</span><span class="p">,</span> <span class="n">trace</span>
<span class="kn">from</span> <span class="nn">os.path</span> <span class="kn">import</span> <span class="n">join</span> <span class="k">as</span> <span class="n">osjoin</span>
<span class="kn">from</span> <span class="nn">unicodedata</span> <span class="kn">import</span> <span class="n">east_asian_width</span>
<span class="kn">from</span> <span class="nn">string</span> <span class="kn">import</span> <span class="n">punctuation</span>
<span class="kn">from</span> <span class="nn">unicodedata</span> <span class="kn">import</span> <span class="n">east_asian_width</span>
<span class="kn">from</span> <span class="nn">django.apps</span> <span class="kn">import</span> <span class="n">apps</span>
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
@ -480,7 +480,7 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">iterable</span><span class="p">:</span>
<span class="k">return</span> <span class="s2">&quot;&quot;</span>
<span class="n">len_iter</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span>
<span class="k">if</span> <span class="n">addquote</span><span class="p">:</span>
<span class="n">iterable</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;&quot;</span><span class="si">{</span><span class="n">val</span><span class="si">}</span><span class="s1">&quot;&#39;</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
@ -496,7 +496,7 @@
<span class="c1"># also add a leading space if separator is a word</span>
<span class="k">if</span> <span class="n">sep</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">punctuation</span><span class="p">:</span>
<span class="n">sep</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="o">+</span><span class="n">sep</span>
<span class="n">sep</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">sep</span>
<span class="k">if</span> <span class="n">len_iter</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">iterable</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
@ -2363,14 +2363,17 @@
<span class="p">)</span>
<span class="k">for</span> <span class="n">num</span><span class="p">,</span> <span class="n">result</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">matches</span><span class="p">):</span>
<span class="c1"># we need to consider Commands, where .aliases is a list</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">aliases</span><span class="p">,</span> <span class="s2">&quot;all&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="n">result</span><span class="o">.</span><span class="n">aliases</span>
<span class="c1"># remove any pluralization aliases</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">alias</span>
<span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">aliases</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="s2">&quot;category&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">category</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;plural_key&quot;</span><span class="p">,)</span>
<span class="p">]</span>
<span class="c1"># we need to consider that result could be a Command, where .aliases</span>
<span class="c1"># is a list of strings</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">aliases</span><span class="p">,</span> <span class="s2">&quot;all&quot;</span><span class="p">):</span>
<span class="c1"># result is a typeclassed entity where `.aliases` is an AliasHandler.</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_objs</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># remove pluralization aliases</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">aliases</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">category</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;plural_key&quot;</span><span class="p">,)]</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># result is likely a Command, where `.aliases` is a list of strings.</span>
<span class="n">aliases</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">aliases</span>
<span class="n">error</span> <span class="o">+=</span> <span class="n">_MULTIMATCH_TEMPLATE</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">number</span><span class="o">=</span><span class="n">num</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">name</span><span class="o">=</span><span class="n">result</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span>