Releases: fuzzball-muck/fuzzball
Releases · fuzzball-muck/fuzzball
Fuzzball MUCK 7.2.1
Fuzzball MUCK 7.2
Terminal Size Introspection
---------------------------
The MUCK is now able to query the terminal width and height using the telnet protocol, via MPI. MUF programs of MUCKER level 3 or higher may also define these values. Existing MPI functions for formatting messages now take advantage of this information.
{height} - gets the current descriptor's screen height, with an optional default.
{width} - gets the current descriptor's screen width, with an optional default.
{center} - now uses the detected screen width before defaulting to 78.
{left} - now uses the detected screen width before defaulting to 78.
{right} - now uses the detected screen width before defaulting to 78.
HEIGHT - returns the detected screen height for the given descriptor.
SETHEIGHT - sets the detected screen height for the given descriptor.
SETWIDTH - sets the detected screen width for the given descriptor.
WIDTH - returns the detected screen width for the given descriptor.
Secure Password Hash Storage
----------------------------
Player password hashes now can be stored using OpenSSL algorithms, with a fallback to the previous. Using the previous algorithm is currently a @tune-able option, set to true by default.
legacy_password_hash - use the previous MD5-based storage for password hashes
Determining Object Flags
------------------------
Additional support has been added for checking for the status of single flags.
{flag?} - equivalent to MUF's FLAG?
FLAG? - now recognizes BOUND, HIDE, SETUID, and XPRESS as aliases.
Expanded Functionality
----------------------
Some features have been extended to improve utility.
NEWROOM - now can use a #-1 parent to search the environment for ABODE rooms.
STATS - now allows programs below MUCKER level 3 to view the player's stats.
STATS_ARRAY - now allows programs below MUCKER level 3 to view the player's stats.
@set - now allows Wizards set GUEST to un-GUEST themselves.
MUF errors - now include the program name and dbref when reporting a compile error.
Consistent Logic
----------------
Some pieces of functionality have been made more consistent.
CONTENTS_ARRAY - now returns a partial list for MUCKER level 1, like CONTENTS.
ENTRANCES_ARRAY - now requires MUCKER level 3, like NEXTENTRANCE.
RMATCH - now strips ANSI, like MATCH.
create_fail_mesg - removed, as the player creation process now handles messaging.
Starter Database Fixes
----------------------
Some programs included in starterdb have been adjusted for proper usage.
cmd-lsedit - no longer crashes when referencing a line number before the first.
cmd-page - now has MUCKER level 4 permissions.
cmd-RIDE - now includes the expected action messages.
cmd-watchfor - no longer crashes when reading a stale dbref.
Fuzzball MUCK 7.1
New features
------------
Emails may be sent via the new level 4 SMTP_SEND MUF primitive.
- see the file README_SMTP.md for details.
Docker is now available as a distribution option
- see the file README_DOCKER.md for details.
The message presented on the welcome screen can now be parsed for MPI.
MUF math operations now respect the IEEE standard for INF and NAN by default.
@mpitops and @muftops have been unified into the command @tops.
CON* MUF primitives have evolved into in-server defines.
- note that older "connection ordering" logic may need to be rewritten.
New @tunes
----------
ieee_bounds_handling – use IEEE standard for INF and NAN. Defaults to yes.
smtp_auth_type - SMTP authentication type. Defaults to 3 (login).
smtp_from_email - SMTP "from" email. Defaults to "noreply@yourmuck.com".
smtp_from_name - SMTP "from" name. Defaults to "Your MUCK".
smtp_no_verify_cert - Don't validate server certs for SMTP. Defaults to no.
smtp_password - SMTP password
smtp_port - SMTP port
smtp_server - SMTP server host name
smtp_ssl_type - SMTP SSL type. Defaults to 2 (none).
smtp_user - SMTP username
Removed @tunes
--------------
verbose_clone - @clone is now never verbose.
verbose_examine - examine is now always verbose.
Other changes
-------------
"!WHO” (the command override) is no longer recognized on the welcome screen.
"WHO” no longer has a special function in MUF READs.
Log messages for player creation and connection are now more detailed.
@clone and COPYOBJ now only copy hidden properties in Wizard contexts.
Manual @dumps now report a completion message to the requesting player.
Listener documentation has evolved into the general 'man propqueues'.
Fuzzball MUCK v7.0
New command Description
--------------------------------------------------------------------------------------------------------------------
@linklock Prevents players from linking to the object, if not passed
@ownlock Enables bypassing controller permissions for the object
@readlock Enables bypassing of non-MUF read permissions for the object
@reconfiguressl (W-only) Attempts to reread SSL certificate files and reset SSL options from @tune settings
@register Manages object registrations
help (connect screen) Outputs the file specified by @tune file_connection_help
uptime Displays the amount of time the server has been running
Changed command Description
--------------------------------------------------------------------------------------------------------------------
@clone Can now match by regname
@credits Now outputs the file specified by @tune file_credits
@examine Can now match by dbref
@find No longer lists garbage objects
@list Now includes options to control line number display
@mcpprogram Can now match by regname
@program Can now match by regname
@toad Now removes all flags from the victim and assigns their macros to the recipient
@tune Can now reset sysparms to default, show descriptions, and match by regname
@version Now includes a second line listing compile-time options
New MPI function Description
--------------------------------------------------------------------------------------------------------------------
{descr} Returns the descriptor number that invoked the MPI
{sysparm} Returns the value of the given system parameter for authorized players
{tab} Returns a tab character, regardless of @tune tab_input_replaced_with_space
Changed MPI function Description
--------------------------------------------------------------------------------------------------------------------
{date} Now aborts when the date value cannot be determined
{ltimestr} Can now approximate years and months
{testlock} Now requires its "who" value to be a player or a thing
{time} Now aborts when the time value cannot be determined
New MUF defines / aliases Description
--------------------------------------------------------------------------------------------------------------------
^ Alias for BITXOR
& Alias for BITAND
** Alias for POW
| Alias for BITOR
<< Alias for BITSHIFT
CASE Define for: BEGIN DUP
DBCMP Define for: =
DEFAULT Define for: POP 1 IF
END Define for: BREAK THEN DUP
ENDCASE Define for: POP POP 1 UNTIL
NAME-OK? Define for: "exit" EXT-NAME-OK?
PNAME-OK? Define for: "player" EXT-NAME-OK?
SETOECHO Define for: "_/oecho" SWAP SETPROP
SETPECHO Define for: "_/pecho" SWAP SETPROP
WHEN Define for: IF POP
New MUF directives and tokens Description
--------------------------------------------------------------------------------------------------------------------
$DOCCMD Populates the "_docs" property of the program
__PROG__ Replaced by the dbref of the program in $DOCCMD and $PUBDEF directives
New MUF primitives Signature Description
--------------------------------------------------------------------------------------------------------------------
!= ( ? ? -- b ) Determines if two stack items are not equal
?DUP ( x -- x x | x ) Duplicates the top stack item if it does not resolve to false
-ROT ( x y z -- z x y ) Rotates the top three stack items, in reverse
ARRAY_DEFAULT_PINNING ( b -- ) Sets whether future arrays created in this process will be pinned
ARRAY_FILTER_LOCK ( a l -- a' ) Removes dbrefs from array that do not pass the given lock
ARRAY_NOTIFY_SECURE ( a1 a2 a3 -- ) For dbrefs in a3, notify a2/a1 for secure/nonsecure descriptors
ARRAY_PIN ( a -- a' ) Pins the given array
ARRAY_UNPIN ( a -- a' ) Unpins the given array
CMD ( -- s ) Returns the command the user invoked the program with
DEEP_COPY ( x -- x x ) Duplicates the top stack item, deep copying arrays
DUMP ( -- b ) Requests a database dump and generates an event if successful
ENTRANCES_ARRAY ( d -- a ) Returns a list array that contains objects linked to d
FORCEDBY ( -- d ) Returns the dbref of the most recent object forcing the code to run
FORCEDBY_ARRAY ( -- a ) Returns an array of all objects forcing this code to run
FULLDEPTH ( -- i ) Returns the number of items currently on the stack
MD5HASH ( s -- s' ) Calculates the MD5 hash of the given string
NIP ( x y -- y ) Pops the second item off the stack
TUCK ( x y -- y x y ) Duplicates y and places it under x
NOTIFY_NOLISTEN ( d s -- ) Tells player a message without triggering listener queues
NOTIFY_SECURE ( d s s -- ) Notifies separate strings for secure and nonsecure descriptors
PARSEMPI ( d s s i -- s ) Returns the output of the MPI parser with the given parameters
PARSEMPIBLESSED ( d s s i -- s ) Returns the output of blessed execution of the MPI parser
PNAME_HISTORY ( d -- a ) Returns a dictionary representing the history of d's name changes
POSE-SEPARATOR? ( s -- b ) Determines if the string could be used as a pose without a space
PROP-NAME-OK? ( s -- b ) Determines if the string is an acceptable property name
READ_WANTS_NO_BLANKS ( -- ) Turns off READ_WANTS_BLANKS setting
REGSPLIT ( s s i -- a ) Splits the text by the given regular expression
REGSPLIT_NOEMPTY ( s s i -- a ) Splits the text by the given regex, with no empty pieces returned
SECURE_SYSVARS ( -- ) Resets the variables "me", "loc", "trigger", and "command"
SHALLOW_COPY ( x -- x x ) Duplicates the top stack item, shallow copying arrays
STATS_ARRAY ( d -- a ) Returns an array of the number of objects (by category) owned by d
Changed MUF primitives Description
--------------------------------------------------------------------------------------------------------------------
CHECKARGS Now recognizes dictionary (x) and array (Y/y) types
DEPTH Now returns the number of unlocked items on the stack
INTOSTR Now only works with integers, floats, dbrefs, and variables
MLEVEL Now returns the program's effective MUCKER level if the argument is #-1
SYSPARM_ARRAY Returned dictionary now includes "readmlev", "writemlev", "active" and "default" keys
TOADPLAYER Now exists regardless of compile-time options
New @tune Description Default
--------------------------------------------------------------------------------------------------------------------
autolink_actions Automatically link actions to NIL no
consistent_lock_source Maintain trigger as lock source in TESTLOCK yes
cmd_only_overrides Disable all built-in commands except wizard !overrides no
description_default Default description "You see nothing special."
file_connection_help 'help' before login "data/connect-help.txt"
file_credits Acknowledgements "data/credits.txt"
file_editor_help Editor help "data/edit-help.txt"
file_help 'help' main content "data/help.txt"
file_help_dir 'help' topic directory "data/help"
file_info_dir 'info' topic directory "data/info/"
file_log_cmd_times Command times "logs/cmd-times"
file_log_commands Player commands "logs/commands"
file_log_gripes Player gripes "logs/gripes"
file_log_malloc Memory allocations "logs/malloc"
file_log_muf_errors MUF compile errors and warnings "logs/muf-errors"
file_log_programs Text of changed programs "logs/programs"
file_log_sanfix ...