Skip to content

MegaMOO 0.7.1-beta

Pre-release
Pre-release

Choose a tag to compare

@MalifaxLax MalifaxLax released this 04 Aug 02:57
· 183 commits to main since this release

Bug-fix release. Upgrading is a matter of replacing the engine files; mm.db in this archive already contains the fixes, so a world you have already started needs the database changes applied by hand (see below).

Fixed: help was unusable for non-staff characters

Reported on the MOO Talk list. A character without staff auth saw roughly a hundred help entries, and some of them did not work. Three separate causes:

  • Every abbreviation was listed separately. help iterated the resolved-verb table, which is keyed by every legal prefix of every verb name, so a single command appeared as @u, @un, @unhidev, @unhideve, @unhidever, @unhideverb. The listing now keys on the canonical name, which also collapses aliases — @set rather than @set and @val.
  • Engine machinery was listed as commands. Hook verbs invoked internally by name (look_here, on_get, msg, _rt, and similar) appeared alongside real commands. These cannot simply be flagged hidden — that removes them from verb dispatch as well, which breaks look — so help now filters them by name.
  • Six commands were advertised and then refused. help filters on a verb’s auth value, but @set, @val, @title, @unset, @unhideverb and @remprop declared 0 while their code required gm2 or gm3. They were offered to everyone and then answered Do what?, which is also the response for an unrecognised command. Their declared levels now match their guards.

One verb implements all twenty-four movement commands, so collapsing to a canonical name would have shown only n; the listing shows the long forms instead.

Added: MOO compatibility layer

moo/moo_compat.py, injected into every verb namespace:

  • tell(who, ...) — concatenates and sends, so ported player:tell(...) reads as written
  • pass_(...) — calls the same verb on the parent, as MOO’s pass() does (pass is reserved in Python)
  • E_PERM, E_TYPE, E_PROPNF and the rest of the sixteen MOO error values, as first-class values that can be compared with ==, stored, and raised

Verb code cannot import these — the sandbox withholds __import__ — so they arrive in the namespace the same way su and ou do.

Applying the database fixes to an existing world

The help verb lives in the database, so an existing world does not pick these up from the engine. Either start from the mm.db in this archive, or set the six auth levels with @verbauth (@set 3, @val 3, @title 2, @unset 3, @unhideverb 3, @remprop 3) and replace the help verb on #15 with the copy in this release.