Skip to content

Releases: fuzzball-muck/fuzzball

Fuzzball MUCK 7.2.1

13 Apr 00:59
6c985b6
Compare
Choose a tag to compare

This update resolves a segmentation fault that happens with the new password algorithm, when built with some compilers.

Fuzzball MUCK 7.2

27 Mar 19:43
71e343f
Compare
Choose a tag to compare
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

04 May 23:42
14f0f5a
Compare
Choose a tag to compare
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

28 Dec 18:22
d7fd71a
Compare
Choose a tag to compare
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    ...
Read more