|| Main Site! | News | Players | Races | Colors | Play it already ||
1.8.4p4
Jump to navigation
Jump to search
Version 1.8.4 patchlevel 4 -- May 05, 2011
Major changes:
- Q-registers are no longer limited to single characters. setq(name,joe) and r(name) or %q<name>! Limited by max_named_qregs.
- Ident lookup and associated config options have been removed. Between lack of people running ident servers, NAT, and issues in the code, it rarely got results.
Hardcode:
- global_eval_context has been removed. The BQUE, EVAL_CONTEXT and PE_Info structs have been removed, replaced with MQUE and NEW_PE_INFO. Shouldn't affect players, but will affect hardcode hacks. See HACKING.184 for more info.
- Q-registers are now kept in a PE_REGS stack. See HACKING.184 for more information. This will be used for other registers.
- Regexp information ($1, $<foo>) are now kept in the PE_REGS stack.
- Faster regexps in many cases when there is no markup.
- Switch, iter, and env (%0-%9) information are now kept in PE_REGS stack. switch, iter, @switch and @dol are no longer limited, but new queue entries only keep the last 50 @switch/@dols.
- Renamed some variables in COMMAND() definitions for consistency/clarity. See HACKING.184 for more info.
- Assorted Windows fixes.
- Clean up code using vsnprintf() to remove #ifdefs.
- String trees are now fully reference counted with no undeletable entries.
Minor changes:
- Because switch() and @switch now store capture data, it can change the nesting of $0-$9/$<foo> in rare cases. [GM]
- All @o* messages are now heard by rooms even when they're empty. Makes room @listens and similar things work right. Suggested by Padraic. [MG]
- @zemit and zemit() will now show the executor the message, if he's in a a room on the right zone. Suggested by Paige. [MG]
Locks:
- objid locks are now turned into =-locks by the lock parser. The clearing of references to deleted objects makes objid locks extraneous.
- Internal changes to validation of 'name^string' locks to use perfect hash tables to validate the name.
- Locks worth better with escaped special characters.
Commands:
- @switch and @switch/regexp set $0-$9 for glob or pattern captures.
- @notify/setq can alter Q-registers of a semaphore queue entry before dequeueing it.
- 'teach' now takes a /list switch, which lets it run an action list instead of a single command.
- @force, @switch and @hook/override now all take an /inline switch, which can be further modified with /clearregs, /localize and /nobreak to run their actionlists without queueing (replaces /inplace). @include also takes those three switches. See the help for more info.
- @retry, which causes a queue entry to restart from the beginning. Useful for coding loops without the queue delay.
Substitutions:
- $<name> for accessing regexp substitutions can now have evaluation inside the <>s: $<%qa>.
- %q<foo> can access named Q-registers. %q<%qa> can work as a q-register dereference.
- New %= substitution, which evaluates to the dbref/attribute currently being evaluated. Useful for coding things which loop.
Attributes:
- Branch attributes now show the 'branch' attribute flag in lflags().
- no_inherit and no_clone weren't propagated down attribute trees as stated in the help, but now are.
- The debug and no_debug attribute flags now affect attributes which are queued (via $-commands, @trigger, etc) as well as ufun()'d.
Functions:
- switch() sets $0-$9 for glob captures.
- setq(), regmatch(), strmatch() and sql() accept q-register names of more than one character.
- unsetq() now accepts patterns of q-register names.
- listq() lists q-registers available to r(), optionally limited to those matching a pattern.
- elock() now only requires that you can see the lock you're trying to test.
- Changes to scan(): Returned value now always returns the object which would run the $-command (even if it's actually set on a parent). scan() can also take a 3rd argument, to limit which objects are checked.
Fixes:
- isword(ansi(r,foo)) would return 0. isword now removes markup before checking. Ditto for isdbref, isnum, isint, isobjid.
- round() would sometimes return a number with a decimal point but no digits after it, like "5.".
- sortby() and foreach() now use call_ufun in the hardcode, fixing a number of minor bugs.
- rand(-X, -Y) where -X > -Y was broken.
- Fix a couple of minor memory leaks.
- Possible crashbug in switch(), @switch, iter() and @dolist fixed.
- Fix crash when reading a database with an invalid lock key.
- Some fixes to the test suite.
- Help fixes.
- warn_interval set to 0 would cause the MUSH to hang.
- It was sometimes possible for a player to view config options he shouldn't have.
- Possible crashbug in @name.
- Object matching (a la locate()) with an exit as the looker didn't work correctly.
- Panic database dumps weren't always loading correctly.
- A missing mail or chat database caused failures in mush startup.
- Various fixes to update-cnf.pl.
- Setting or clearing the MONITOR flag on rooms caused duplicate messages.
- @mapsql/notify would sometimes run the "@notify me" before the triggered attributes.
- Combined channels would generate duplicate connection/disconnection messages to players connected multiple times.