This repository has been archived by the owner on Jan 13, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES.185
764 lines (712 loc) · 40.1 KB
/
CHANGES.185
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
This is the most current changes file for PennMUSH. Please look it
over; each version contains new things which might significantly
affect the function of your server. Changes are reported in reverse
chronological order (most recent first)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also
responsible for most unattributed changes.
[GM] is Greg Millam, a PennMUSH developer (aka Walker)
[MG] is Mike Griffiths, a PennMUSH developer (aka Talvo)
[3] refers to code by (or inspired by) TinyMUSH 3.0
[MUX] refers to code by (or inspired by) TinyMUX 2.x
[Rhost] refers to code by (or inspired by) RhostMUSH
==========================================================================
Version 1.8.5 patchlevel 7 Mar 16, 2015
Fixes:
* Bytes received by connections weren't being properly recorded for
things like SESSION and recv().
* Fix some highly unlikely crash bugs/memory leaks in atr_tab.c [MG]
* @attribute/delete now deletes all aliases for the deleted attr, too. [MG]
* Help fixes. [MG]
* SOCKSET didn't always send the corret lineendings. [MG]
* unsetq() and @include/clearregs were unpredictable, and hopefully now
function more reliably. Reported by spork, Mercutio and others. [MG]
* Remove compile warning when info_slave isn't used. [MG]
* %X now always returns the capitalized version of %x, even when the returned
value contains ANSI. [MG]
* Fixed a few niggly bugs in @include, registers() and similar things
making too many or too few registers available at the wrong time. From a
report by Paige. [MG]
* lit(%) returned %) instead of %. Reported by Ashen-Shugar. [MG]
* PCRE's jit engine causes crashes when passed certain malicious regular
expressions. Disable it for all public-facing uses of REs. Reported by
Ashen-Shugar. [SW]
* align() would sometimes show extra column separators when columns were
merged. [MG]
* @lock/interact was wrongly checked when paging a player with an @pageformat
set. Reported by Odin. [MG]
* Channels you had both @chan/gagged and @chan/combined would still show
connect messages. Reported by Paige. [MG]
* Fix a memory leak in @dolist/inline when used with @break. From a report by
spork. [MG]
* @chan/decompile <hidden channel> by a mortal didn't give an error message.
Reported by Paige. [MG]
* It was impossible to remove a thing from a channel which had been
restricted so only players could join. Reported by Paige. [MG]
* Players with an @pageformat which eval'd to an empty string wouldn't know
they were being paged. Reported by Ashen-Shugar. [MG]
* Fix crash in named q-registers. Reported by Qon@M*U*S*H. [DC]
* Enabling the log_commands config option while a LOG`CMD event was set would
cause endless queueing, until the event handler was halted as a runaway
object. Reported by spork. [MG]
* Fix a potential overflow problem in the code that computes queue load
averages for @ps. [SW]
* @motd/down and @motd/full are actually shown now. [MG]
* Properly negotiate telnet with clients who spit out telnet codes instantly
upon connection like MUSHclient. Reported by Mercutio and AND. [MG]
* Improved configure support for NetBSD. [SW]
* Fix a compile error on non-Windows, non-BSD, non-Linux OSes. [SW]
Hardcode:
* Improvements to networking code; robustness on errors and portability. [SW]
Functions:
* Added two new column modifiers to wrap(), x and X, to allow truncation of
fields instead of wrapping. Suggested by Qon, spork and others. [MG]
Minor changes:
* @attribute/delete now displays the info for an attribute, as per @attrib
<attr>, prior to deleting it. [MG]
* The *div*() and *mod*() math functions now take an unlimited number of
args, instead of exactly 2 args. Suggested by Mercutio, patch by Luke.
* A SUSPECT player changing their name to the same thing doesn't trigger
an alert. Suggested by 0x0045. [SW]
* valid(attrvalue, <value>, <name>) checks if &<name> obj=<value> is valid.
For @attrib/enum and /limit. [MG]
* Added @flag/decompile and @attribute/decompile, to decompile each table
to copy to another game. Suggested by spork. [MG]
* Newly set player passwords are salted to be more resistant to cracking via
rainbow tables by somebody with a copy of the database. You still shouldn't
be re-using a password for anything important, of course. Existing
passwords aren't automatically updated. [SW]
* Added /clearregs to @trigger. Suggested by Volund. [MG]
* @motd with no args now acts like @motd/list, instead of clearing the MotD.
Use @motd/clear to clear the current one. Suggested by Bodin. [MG]
* @command can now be used by non-players. From a gripe of Kitai's. [MG]
* Update some configure macros to the latest versions. [SW]
Version 1.8.5 patchlevel 6 Jul 29, 2014
Hardcode:
* Removed an old debugging variable to reduce memory usage. Suggested by
spork. [MG]
* ssl_slave now gets passed its settings via a pipe, instead of on the
command line. [SW]
* Rewritten the telnet handler, to make it more manageable/modifiable,
instead of it being a huge bunch of nested switch()es. [MG]
* Update the SFMT random number generator to 1.4.1. [SW]
* Built in and persistant uses of regular expressions are JIT compiled if the
host's PCRE version supports it, for faster matching.
* Better support for BSD systems.
Functions:
* valid() can now test for valid channel names. Suggested by Volund. [MG]
* valid() now takes an optional <target> argument for some categories,
to see if <string> is a valid name for <target>. [MG]
* tan(90,d) now reports an error instead of a really big number. Suggested by
Peppel. [SW]
* More math functions report errors. [SW]
* Added reglmatch[all][i]() functions, regexp versions of match[all](). [MG]
* isdaylight() now accepts time and timezone arguments. [SW]
* convtime() takes timezones besides just UTC. [SW]
* foreach() is now ansi-aware. Reported by Ashen-Shugar. [MG]
Minor changes:
* @channel/gag no longer persists across a full @shutdown. Suggested by
Trinsec. [MG]
* 'give' now gives more informative error messages when you try and give
pennies to someone who has the maximum, or take pennies from someone who
is broke. [MG]
* The message shown when you need to run 'make update' is now slightly
clearer about what to do and why. By Rince.
* Removed some 20 year old Sun OS workaround code. Suggested by Fraibert.
* Slightly less confusing error message for @chan/buffer suggested by Sketch.
* 'HELP ENTRIES' is generated on the fly, and shows the total number of
pages. Suggested by [MG] and Trinsec. [SW]
* @success/@osuccess/@asuccess now get the old location of the moving object
in %0. Suggested by Riorgan. [SW]
* @mail/review with no args now lists all mail you've sent to everyone.
Suggested by Paige. [MG]
* @mail/review now shows the recipient in the message list, instead of the
sender. This is slightly more useful, since the person using the command
is always the sender. [MG]
* @mail/status now lets you twiddle the 'urgent' status of messages. From a
suggestion by Paige. [MG]
* You can now always see a channel if you've been joined to it and can speak
on it, even if you don't pass its @clock/see. Suggested by Rince. [MG]
* 'page foo=' now produces an error, instead of paging nothing. Suggested by
Paige. [MG]
* 'make localized' now ignores charset when building translation files, which
stops it throwing errors unnecessarily. [MG]
* Use a more robust configure check for timezone data files. [SW]
* Added a /spoof switch to @mapsql, to spoof the enactor a la @trigger/spoof.
Suggested by Mercutio. [MG]
* Improved error reporting when info_slave or ssl_slave exits unexpectedly. [SW]
* hasflag(<player>, connected) now returns 1 if the caller can see that the
player is online, instead of always returning 0 for mortal callers. Most
recently suggested by Odin@M*U*S*H. [MG]
Fixes:
* Windows compile fixes by ChaosMageX.
* Fix a crash when expanding the flagset size. Reported by spork. [DC]
* @attribute/access incorrectly cleared an @attribute/limit on the same
attr. Reported by Ton Kyrion. [MG]
* Help/translation fixes by spork, Riorgan and others. [MG]
* The 'give', 'take' and 'empty' commands displayed the wrong object names
when mogrifiers were used. Reported by Riorgan. [MG]
* Fix crash in ssl_slave when a connection drops in the middle of hostname
lookup.
* Crashbug in SQL fixed. Reported by Mercutio. [MG]
* @mapsql/colnames cleared q-registers in the first (colnames) action list
queued. Reported by Mercutio. [MG]
* @channel/join would give an 'ambiguous' error, even if you couldn't see the
other potentially-matching channels. Reported by Mercutio. [MG]
* Penn negotiated charset as iso-8859-1 (latin1) even if the MUSH was
running using a different charset. Reported by Tyler. [MG]
* Better support for mixing IPv4 and IPv6 connections. FreeBSD and NetBSD
should not need the --disable-ipv6 option to configure any more. [SW]
* Fixed an obscure buffer-overwrite bug in the channel system. Reported by
Volund@M*U*S*H/Roll@Multiverse Crisis MUSH. [MG]
Version 1.8.5 patchlevel 5 Nov 20, 2013
Commands:
* Added @moniker, to allow colored names. See 'help monikers' for more.
Requested by Mikoto Misaka. Idea from [MUX]. [MG]
* After a year of deprecation, @emit/room has been removed as an alias for
@lemit. [MG]
* @chan/list now takes /on and /off switches, to filter the channels shown,
and a /quiet switch to give a less verbose output. From a suggestion by
Fraibert. [MG]
* @trigger now takes a /spoof switch, which preserves the enactor. [MG]
* New @hook/extend, which allows adding new functionality to built-in
commands via softcode, while preserving the original command. [MG] [Rhost]
Major changes:
* Regexp $-commands can now used name captures. They can be accessed via
r(<name>, args). Suggested by Mercutio. [MG]
Hardcode:
* A number of changes have been made to accomodate monikers. Notably, a lot
of calls to the Name() macro now use the AName() macro. See the
HACKING.185 file for more info. [MG]
* wild_match_case_r(), regexp_match_case_r(), pe_regs_set_rx_context()
and pe_regs_set_rx_context_ansi() now take an extra argument, a PE_REGS*
flag to determine how matching subpatterns are stored in pe_regs. [MG]
* add_flag_generic() now returns an enum, and takes an additional final
pointer arg, where the new flag will be stored. add_flag() and add_power()
pass this pointer as NULL. [MG]
* Improve heuristics used for resizing the flagcache hash table. [DC]
* Update hashing functions used by various hash table implementations. [DC]
Fixes:
* Commands which take multiple right-hand-side arguments could only have
8191-length arguments, instead of the usual 8192. Reported by Jules. [MG]
* It was possible to return non-printable characters from an SQL database,
which could cause undefined weirdness. Reported by spork. [MG]
* Many things which listed attributes from a parent, like lattrp() or
examine/parent, didn't respect no_inherit fully. [MG]
* Minor crashbug in @boot fixed. Reported by thomaswdyoung. [MG]
* @grep now ignores ansi when looking for a value. Suggested by Mouvar. [MG]
* colors() now complains when the color is 'n', 'd' or 'D', since they
have no actual color value. Reported by spork. [MG]
* Buffer overflow bug in ansi() fixed. Reported by tsen. [MG]
* Flag corruption issue due to incorrect flagset refcounts fixed. [DC]
* When a player was nuked, any @mail they had filed into another folder
would be retained, and visible to a new player created later with the
same dbref. Reported by Valkyrie. [MG]
* Crashbug in @message. Reported by Yuriko. [MG]
* linsert(,1,foo) now returns "foo", like it always used to, instead of
returning an empty list. [MG]
* SSL connections which had not yet logged into a player weren't always
fully cleaned up. Patch by Fraibert.
* channels() could include an extra delimiter in some cases. Reported by
Mouvar. [MG]
* Translations weren't working in the chat system. Reported by Riorgan. [MG]
Minor changes:
* strreplace() now works harder to keep existing ANSI intact, when you
replace an un-ansi'd string into an ansi'd one. [MG]
* colors(...,xterm256) can now return colors 0 to 15, to avoid confusion
when converting xterm -> hex -> xterm. Reported by Trinsec. [MG]
* New substitution, %k, returns the enactor's monikered name. [MUX] [MG]
* Help fixes and tweaks. [MG]
* PennMUSH can now read MUX-style passwords, to make moving dbs from MUX
to Penn less painful. Requested by Muse. [MG]
* Commands are no longer queued for HALTed non-players. (Since they'd be
dropped from the queue anyway, rather than being run, it saves us jumping
through a series of hoops for no good reason.) From a report by Muse and
Ashen-Shugar. [MG]
* The connect-screen WHO now shows moniker'd (ansi'd) names, if so
configured. Requested by Trinsec. [MG]
* @mapsql and mapsql()'s attributes now receives named arguments. That is,
'@mapsql me/foo=SELECT bar FROM table' receives the value of the 'bar'
field as both %1 and [r(bar,args)]. [MG]
* Wizards can now give players names with spaces, even when the
player_name_spaces option is off. Suggested by Paige. [MG]
* Removed the last traces of the 'events' help-style command. Noone ever
uses it, and we removed the helpfiles for it ages ago when the Event
System was added, anyway. [MG]
* Updated the README for adding help-style commands, with clearer examples.
Requested by AnnePearn. [MG]
* Per-player mail limits can be set with @mailquota, to override the
mail_limit @config option selectively. Suggested by Ricochet. [MG]
* Attempting to create a character (at the login screen or via @pcreate)
is now specific about whether the name is already in use or invalid,
rather than leaving you guessing. [MG]
* Likewise, when failing to connect, the login screen tells you whether
there is no such player, or whether the password is wrong. [MG]
* beep() now returns out of range, instead of permission denied, when given
an arg which is not between 1 and 5. [MG]
* When an evaluation @search hits the CPU limit, it will now tell you which
object it failed on, to make it easier for you to continue with a partial
search. [MG]
* Players are now warned when setting an unanchored regexp $-command, as
this is often an oversight which is problematic to track down later. [MG]
* More effort now goes into checking whether an attribute contains a valid
$-command when it's set, to avoid doing so unnecessarily during command
matching; the latter happens a lot more often. [MG]
Functions:
* delete(), replace() and insert() have been renamed to strdelete(),
lreplace() and linsert(), respectively, for clarity and conformity. The
original names remain as aliases. [MG]
* moniker(<object>) returns an object's monikered name. [MUX] [MG]
* mapsql() only stored 10 columns, instead of the advertised 30. Reported
by Mercutio. [MG]
* fn() now takes an <obj>/ prefix to its first arg, to evaluate the built-in
function as <obj>. Useful when overriding side-effect functions. [MG]
* r() now takes two arguments, allowing it to return the stack (%0-%9),
itext() and stext() values, as well as q-registers(). [MG]
* Mortals can now use playermem() and objmem() on their own objects.
Suggested by Paige. [MG]
* ljust() and rjust() now take an optional <trunc?> arg which, if true,
causes strings already longer than <len> to be truncated. Suggested by
many people over the years, most recently Rince and Quasar. [MG]
Version 1.8.5 patchlevel 4 Mar 17, 2013
Major changes:
* The player_name_len @config option is now the maximum length of a player
name, instead of the maximum length+1, because doing it that way was
rather silly. You may wish to lower yours by 1 now to compensate.
Suggested by Mercutio. [MG]
* Having unescaped commas in the final arg of a function call is now
deprecated, and will eventually become illegal. Any existing code which
does this will spam you with a warning until you change it. [MG]
* The stack (%0-%9) can now hold up to 30 arguments, with the additional 20
available through v(10) to v(29). $-commands, @functions and many built-in
commands and functions (such as ufun(), @mapsql, etc) now make use of
these args. [MG] [MUX] [Rhost]
Commands:
* @dolist now accepts /inline and related switches, like @switch does.
Suggested by Reaver. [MG]
* @teleport/list teleports a list of objects to a single destination.
Suggested by Nyssa, [MUX]. [MG]
* @sockset and SOCKSET can now show/set PROMPT_NEWLINES. [MG]
* @halt now takes a /noeval switch, and will always strip curly braces when
run /noeval. [MG]
* Added @mail/cstats, which shows the mail stats you see on connection.
Patch by spork.
* Added a new switch for @command/add, /rsnoparse, which stops the rightside
arguments (after the '=') from being evaluated. Also clarified the help
to show that /noparse only affects leftside args. Suggested by spork. [MG]
* WHO, DOING and SESSION now take wildcard patterns for names, as well as
a prefix. [MG]
* New option for @sockset/SOCKSET, 'stripaccents', to strip accents for a
single connection as per the NOACCENTS flag. [MG]
Functions:
* lpids()' second argument has been altered slightly, to allow you to list
the pids for one specific object only. Suggested by spork. [MG]
* The "player" field in pidinfo() has been renamed to "executor", for
clarity. "player" still works for backwards compatability. From a request
by tsen. [MG]
* stringsecs() can now handle the additional time periods that etime() can
return (years, weeks). [MG]
* colors(..., name) is much more efficient. [SW]
* alias(object,) clears object's @alias. Suggested by spork. [MG]
* v(<integer>) is no longer the same as get(me/<integer>). Instead, it
always the <integer>th stack entry. [MG] [Rhost] [MUX]
* It's now documented that replace() can alter multiple words at once.
Reported by Jules. [MG]
* Some terminfo() information can now be retrieved by mortals on other
players' connections. Suggested by spork. [MG]
* Added a new option to colors() to include ansi underline, invert and
flash from the input in the output. [MG]
* locate() takes a new flag, 's', which will only return objects
controlled by the looker. Suggested by spork. [MG]
* @@() now takes a huge number of arguments, instead of ignoring commas in
the final arg, to stop it giving the 'unescaped comma' warning. Requested
by everyone. [MG]
* terminfo() now tells you whether a connection is having accents stripped,
either via NOACCENTS or @sockset. [MG]
Minor changes:
* ansi() now accepts a space-separated list of color codes, with later
groups overriding earlier ones. Allows you to specify basic ANSI codes
after XTERM color codes. Suggested by spork, [Rhost]. [MG]
* Compiler warning fixed by ChaosMageX.
* Help fixes by many, including spork, Wiggles and Bodin. [MG]
* The tables mapping color names and RGB values are now generated by a
script in utils/. [SW]
* Converting from named colors to the nearest xterm or ansi equivalent is
much more efficient. [SW]
* Converting from extended colors to ansi colors is smarter. Based on
work by Padraic. [SW]
* Email registration no longer pretends to work with really!old!addresses.
[SW].
* Better error reporting in logs and event hooks on failed email
registration. Suggested by Padriac. [SW]
* @decompile <exit> now reports the exit's source room. Suggested by
telandra2. [MG]
* You now only need to control an object to change its zone, or to use it
as a zone. Previously, ownership was required. Suggested by Cheetah. [MG]
* The hardcode now always ANSIs a string (such as an object name or help
topic), even if the enactor isn't set ANSI. Fixes puppets, etc. [MG]
* When clients negotiate charset via telnet, US-ASCII and ASCII are now
presented as options. If the client picks one of them, that connection
will have accents stripped (as per the NOACCENTS flag). [MG]
* New attribute flag, quiet, suppresses the usual confirmation message
when an attribute's value or flags are changed. Suggested by Trinsec,
bribed by qa'toq. [MG]
Fixes:
* %c contained the evaluated input (the same as %u), instead of the
unevaluated input. Reported by Ingwaz. [MG]
* repeat() could write partial ANSI tags, causing buffer overflows. From a
report by Ashen-Shugar. [MG]
* dbcks didn't reset corrupt exit's source room. Patch by Padriac.
* lmath(and,) returned 1 instead of 0. Reported by Padriac. [SW].
* Mixing old-style ansi colors and xterm colors was broken. [MG]
* Players who couldn't see xterm colors would sometimes get a highlighted
foreground color by mistake. [MG]
* colors(<old-style-ansi>, hex) and colors(*, 16color) were broken.
Reported by Kimiko. [MG]
* ANSI highlight would sometimes bleed when xterm colors were downgraded to
the basic 16-color ANSI palette. Reported by Kimiko. [MG]
* @entrances didn't correctly report the source of an exit. Reported by
spork. [MG]
* Fix a crashbug in @command/delete. [MG]
* Fix database corruption on @flag/add [SW]
* Attempting to @mail someone without permission failed silently. Reported
by Kimiko. [MG]
* Players connecting dark with 'cd' were hidden even if they shouldn't have
been. Patch by thomaswdyoung.
* Fixed a bug in colors(*,16color) with no ansi. [MG]
Hardcode:
* The Builder() macro, which is unused in Penn but exists for backwards
compatability, used command_check_byname(), which spammed people who
could not build with "Permission denied." errors. It is now spam-free.
By spork.
Version 1.8.5 patchlevel 3 Aug 23, 2012
Fixes:
* Fix a crash bug in new color code. Discovered by ChaosMageX, fixed by
Intrevis and [SW].
Functions:
* name() with no arguments is now an error. It should always have been, but
previously returned nothing for backwards compatability. If you still have
code that relies on that behaviour, you are extremely lazy and should be
ashamed of yourself. [MG]
Version 1.8.5 patchlevel 2 Aug 18, 2012
Hardcode:
* render_string has been modified to work with multiple output formatters,
so it can display the appropriate color syntax for the client. [GM]
* Tweak the networking code to try to reduce output latency/queue size. [SW]
Major changes:
* 256 Color support. Using 24 bit internally for representation and
downscaling to the client's possible output values. Use
SOCKSET colorstyle=xterm256 to see 256 color support, with
ansi(+colorname/+colorname,...) or ansi(#hexcode/#hexcode) for
extended color support, or @set me=xterm256. [GM] [MG]
* New SOCKSET socket command for changing socket options. Replaces the
@sockset command added in p1 for mortals, and can be used at the
login screen. Suggested by Sketch. [MG]
* @sockset is now @sockset <desc>[=<opt>,<value>[,...]], to query current
options or set options for any descriptor. [MG]
* The old @doing command has now been removed, and replaced with the normal
standard-attribute command (@doing <object>[=<message>]). [MG]
Commands:
* look now takes an /opaque switch, which hides contents listings. Suggested
by Wiggles. [MG]
* @break and @assert now take a /queued switch, which causes the new <action
list> to be queued instead of run immediately, and an /inline switch which
gives default behaviour. For Rhost compatability. [MG]
* Two completely separate, but equally stupid, bugs made @nsprompt show
nospoof info just like @prompt. [MG]
* @open, open(), @dig, dig() accept specific garbage dbrefs to use
for the exits they make. [SW]
Functions:
* colors() returns a list of all known color names known by PennMUSH, and
info about a particular color. [GM]
* valid() has two new categories, for validating color names and color code
sequences for ansi(). [MG]
* etime() formats elapsed times using the same rules as in WHO. [SW]
Minor changes:
* The meaning of the COLOR flag has been restored. ANSI flag once again
means only highlight is supported, while COLOR means all ANSI 8 colors
(8*2 including highlight), flash, invert, etc are supported. [GM]
* Charset negotiation didn't work on MSVC, and now forces iso-8859-1 when
compiled that way instead. Reported by Daniel Powell. [MG]
* @config/set and @config/save now log to the wizard_log. Suggested by
Israphel. [MG]
* The ICLOC attribute, which was set on newly created players but never used
in any way, is no longer set. Suggested by Paige. [MG]
* @destroy'ing, @undestroy'ing, and the actual destruction of players is
now logged. Suggested by Padraic. [MG]
* Translation fixes by Stoko.
* round(4.5,0) behaved differently on Penn than it did on MUX, and
inconsistantly with rounding to more places on Penn. [SW]
* The 'On for' and 'Idle' time fields in WHO are smarter and won't overflow
their space. Suggested by Ari and Paige. [SW]
* Add a few new test cases. Requested by Sketch. [MG]
* It's now possible to clear/reset a prompt with @prompt <player>. [MG]
* New Pick_Dbref @power for specifying specific garbage dbrefs to use in
@create and friends. [SW]
Fixes:
* Reordered some checks in tz.c to compile on more distributions. Problem
reported by Zen@M*U*SH. [MG]
* Setting an exit Transparent didn't cause its destination's desc to get
shown as it should have. [MG]
* It became impossible in p1 to give a delimiter to wrap() without also
specifying a first line width. wrap(%0,%1,,%2) will now use the
normal <width> arg for first line width, the same as wrap(%0,%1) does.
Reported by Kitai. [MG]
* Free PCRE-allocated memory with pcre_free() instead of free(). Reported
by ChaosMageX@M*U*S*H. [DC]
* Fix some potential memory leaks in timezone file reading code. [SW]
* Off-by-one error in the helpfile index code. [MG]
* Improve docmentation of ip_addr config option. [SW]
* Fix an edge case in ansi_string_replace that could cause an overflow.
Reported by Ton Kyrion@M*U*S*H. [DC]
* Fix a memory leak in LOGOUT. [SW]
Version 1.8.5 patchlevel 1 May 15, 2012
Hardcode:
* The local_data_clone() function now receives an additional argument,
which specifies whether @clone/preserve was used. You'll need to either
update the definition of local_data_clone in src/local.c from the one in
src/local.dst or, if you've made no changes to src/local.c, just remove
src/local.c and it'll be rebuilt automatically. [MG]
* The orator variable (defined in game.c), for tracking the last object
which made sound, has been deprecated, and may soon be removed; don't use
it. Just pass the correct dbrefs to the notify*() functions if something
talks. [MG]
* Several of the notify_*() family of functions, and the do_*emit()
functions now take an extra arg, for properly tracking both the executor
and the speaker when spoofing (@pemit/spoof, etc). [MG]
Deprecation:
* @emit/room and @doing/header have been deprecated. Use @lemit and @poll,
respectively, instead. [MG]
Major changes:
* Built-in attributes are now stored in the database. This means that
@attribute no longer needs to be in an @startup, as it will persist
across reboots and shutdowns. The attribute_alias option in .cnf
files is now deprecated as a result. [MG]
* The database now uses a new versioning scheme (alongside the old
one, for backwards compatability), using incrementing integers
instead of bitwise flags. Ideas by [GM] and Covenent. [MG]
Minor changes:
* Logged messages now have events in the LOG tree. Suggested by
Padraic. [SW]
* Objects belonging to destroyed players now get chowned to a
configurable player (probate_judge in mush.cnf) instead of
God. [SW]
* Commands involving movement now check the enactor is a
player/thing, instead of just relying on the command's
restriction. [MG]
* @switch, switch(), @[in]filter and attribute @locks (foo:bar) now
do lte/gte wildcard matches on <=foo and >=foo patterns. Inspired
by Wiggles. [MG]
* New channel mogrifier, MOGRIFY`NOBUFFER, can be used to exclude
certain @chats from the channel's recall buffer. Suggested by
Wiggles. [MG]
* Nospoof players now see the nospoof header on @cemits, making
@nscemit actually have some use. Report by rimnar@M*U*S*H. [MG]
* The login screen WHO can now be overridden using the who_file
config option, which can be set as the path to a textfile or an
obj/attr, like connect_file et al. From suggestions by Paige,
Trelane and Mercutio. [MG]
* Talek's chunk attribute storage system, which pages attribute
contents to and from disk as needed, is now optional by popular
request. Controlled via options.h [SW]
* New lock, @lock/dropin, controls who can drop objects into that
location. [SW]
* @ps now shows a running average of the number of queue entries
executed per second. [SW]
* Try to discriminate between ssl_slave and other sources of
connections to the local unix socket. [SW]
* Repeating the PUEBOCLIENT socket command now causes PennMUSH to
re-send the 'start parsing HTML' codes, for when Pueblo-enabled
clients hiccough and show raw HTML. [MG]
* The DESTINATION attribute for variable exits now receives the exit
name/alias typed by the player as %0 when moving, to allow different
destinations based on the exit alias used to move. It also has access
to %c, %u, and other %-subs available when moving, Suggested by
Javelin and [GM]. [MG]
* Translation updates and messages fixes by Stoko.
* Help fixes by Todd@M*U*S*H, Steve Varley, Wiggles and others. [MG]
* @message now takes a /silent and /noisy switch, the same as @pemit, with
the default controlled by the silent_pemit @config option. message()
is now silent, like pemit(). Suggested by Padraic. [MG]
* The MUSH can now negotiate its character set with clients. There's still
only one charset available, but now the client can know exactly what it's
receiving. Suggested by Sketch. [MG] Make sure your MUSH is running in the
right charset; see http://tinyurl.com/penn-charset for more information.
* Additional test suite tests for setunion/setdiff/setinter() by Sketch.
Fixes:
* When regexp matching an ansi'd string, named captures weren't set
at all. For non-ansi'd strings, non-named (numeric) captures were
sometimes overwritten with the values of named captures. Reported
by Sketch. [MG]
* The configure script incorrectly reported that ssl_slave was
unavailable when told to disable it via
--disable-ssl_slave. Reported by Cheetah. [MG]
* Sound from an AUDIBLE wagon object used to propagate into other
wagon objects in the same location with an @listen of *. It now
does so again. Reported by Xeero and Padraic. [MG]
* Sound will now also propagate through two @listens, instead of just
one, as it used to. Reported by Mac@M*U*S*H. [MG]
* Loading a reboot db is more robust. Inspired by Padraic. [SW]
* scan() couldn't be used by rooms. Reported by Padraic. [MG]
* Possible crashbug in the queue triggered by events reported by
Rince@Wing Commander: New Horizon. [MG]
* @list attribute would show duplicates for aliases. [MG]
* insert(,foo,-1) no longer appends an extra delimiter. [MG]
* @function/clone didn't work correctly, and could potentially cause
a crash. [MG]
* @clone didn't respect Many_Attribs. [MG]
* Making a connection to a ssl port on a game not using ssl_slave
could hang the mush. Reported by Minion. [SW]
* @cemit and friends would notify you twice if you cemited to a channel
you weren't on. Reported by spork. [MG]
* regrep() could try to read uninitialized memory. [SW]
* Fix a possible DOS from a local attacker. [SW]
* Fix a couple of possible memory leaks. [MG]
* ordinal(12) now returns twelfth, not twelveth. Patch by Minion.
* trunc() now ignores ANSI. Reported by Sketch. [MG]
* Evaluation @locks didn't receive %0-%9 args, even when they should.
Reported by Zen@M*U*S*H. [MG]
* @message/spoof now tracks both the object using @message and the object
being spoofed, allowing for more accurate priv checks when evaluating
the format messages. Reported by Mercutio. [MG]
* When spoofing (@pemit/spoof, etc), any errors for failed locks or bad
object names incorrectly went to the object being spoofed, not the object
doing the spoofing. [MG]
* @lemit incorrectly ignored an = and anything after it in its arg. [MG]
* wrap(%0,strlen(%0)) would incorrectly wrap the string onto two lines.
Reported by Padraic. [MG]
Commands:
* @edit/regexp[/all][/nocase], command version of regedit[all][i]().
Suggested by Minion. [MG]
* The @sql command no longer uses UNIMPLEMENTED_COMMAND when SQL
support is not compiled into the MUSH. Instead, it just reports
that no SQL db is available, like @mapsql does. [MG]
* @slave, for restarting the info_slave and ssl_slave daemons from
within the game. [SW]
* @sockset <option>=<value>, for setting options on your descriptor.
Functions:
* version() now reports svn revision/date where available. Patch by
Padraic.
* ldelete(), replace(), elements() and extract() now accept negative
position arguments, to count backwards from the end of the list,
similar to insert(). Suggested by Minion. [MG]
* replace() now takes an optional output separator. [MG]
* regmatch() now returns an error for invalid regexps, whether you're
storing subpattern matches or not. Reported by Sketch. [MG]
* time(), timefmt() and convsecs() can use symbolic timezones
(US/Pacific, EST, etc.) if the host server has a time zone database
installed. [SW]
* playermem() and objmem() are smarter about calculating space being
used by atributes [SW]
* rnum() has been deprecated in favor of locate(). [SW]
* step() no longer pads the final call with empty arguments, allowing you
to use %+ or registers() to differentiate empty and missing args. [MG]
* e() and exp() are now the same function internally, with e(), exp() and
exp(1) all being equivilent. Suggested by Ari. [MG]
* When wrap() hyphenates a word, the hyphen will now share the ANSI of the
first character of the newline. [MG]
Version 1.8.5 patchlevel 0 Feb 12, 2012
Major changes:
* The PCRE library is now required to build Penn, instead of falling
back to an old, buggy version formerly bundled with the MUSH. [SW]
Daniko assisted greatly with Windows changes and documentation.
* The OpenSSL library is now required to build Penn. Again, Daniko has
provided instructions for installing on Windows. [SW]
* A new command prefix, "}", enables debug for a single execution of the
command - }think foo, }+who, etc. See 'help }' for more info. Suggested
by Wiggles and [GM]. [MG]
Minor changes:
* Added a new event, OBJECT`FLAG, triggered when a flag/power with the
"event" restriction is set or cleared. Suggested by [SW]. [MG]
* Expanded help on lock types and @powers. [MG]
* @startups are now processed in db order (#0, #1, etc) on reboot instead
of giving priority to player objects. [MG]
* @startups (and local_startup() in local.c) are now triggered slightly
later, ensuring that the db is fully loaded, and that the connected player
list is loaded on @shutdown/reboot. Suggested by Padraic. [MG]
* Switch names that are defined but not used by any commands are
warned about on startup, and several unused ones have been removed
from the master list. [SW]
* Tweak utils/mkcmds.pl for the above change and to remove references
to generating the obsolete patches.h. [SW]
* Tweak the parameters of the skip list used to store memcheck counts
to save some memory. [SW]
* Bring the scheme scripts in utils up to date with current versions
of chicken scheme (The implementation of the language they're
written for.) [SW]
* The test harness code strips trailing whitespace before attempting to match
against expected results, making it easier to use bounded regexps. [SW]
* @destination (for variable exits) is now a standard attribute, and has
a helpfile. [MG]
* Sound is now propagated through audible variable exits, and exits @linked
to 'home'. Suggested by Mercutio. [SW]
* The internal QUEUE attribute is no longer used to track the number
of action lists an object has queued; the objdata system is used
instead. [SW]
* isobjid() now requires a full object id (with :ctime), and will return 0
for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still
matches both dbrefs and objids. Suggested by Covenent. [MG]
* @entrances and entrances() now use the same internal routines as @search,
and have similar (and saner) privs. From a suggestion by Sketch. [MG]
* Connection messages that are evaluated from an attribute instead of
read from a file get the dbref of the connected player as %1, as
long as they're ones shown post-connection (motd_file, etc.) [SW]
* Passwords are, thanks to OpenSSL digest routines, now stored in a
less error prone, more secure, flexible and extendable
format. Existing player passwords will be upgraded automatically on
login. [SW]
* New script in utils/ for manipulating player passwords in an offline
database. Useful if you forget God's password. [SW]
* The my_vsnprintf function in the hardcode has been renamed to
mush_vsnprintf to avoid a conflict with MySQL. Reported by Balerion @
Blood of Dragons. [MG]
* The enactor (%#) for the PLAYER`DISCONNECT event is now more useful,
instead of always being set to the dbref of the player disconnecting (%0).
Suggested by Padraic. [MG]
* The SOCKET`LOGINFAIL event now gets passed the name that was entered as
%5 when no matching player is found. Suggested by Daniel Powell. [MG]
Commands:
* Added @mail/review for reading mail you've sent, and @mail/retract for
deleting unread mail that you sent. Idea from MUX. Patch by Minion.
* @hook/list now shows error messages if you don't have permission to use
it, or if a command has no hooks, instead of failing silently. Suggested
by Padraic. [MG]
* Wizards can now @pcreate players with restricted names, as well as being
able to rename existing players to forbidden names. Suggested by Nymeria @
Blood of Dragons. [MG]
Functions:
* Functions that take a sort type argument now accept 'mtime' for
sorting based on object's modification time. Patch by Minion.
* New registers() function, like listq() but returns all kinds of registers
(q-registers, %0-%9 args, iter/switch context, regexp captures). Also
takes an output separator arg. Suggested by Wiggles. [MG]
* digest(list) returns all message digest algorithms the server supports. [SW]
* sha0() has been deprecated in favor of digest(). [SW]
Fixes:
* lit() didn't properly handle '\'s. Reported by Wiggles. [MG]
* listq() incorrectly returned all registers (including %0-%9, %i0, etc),
not just %q-registers. Reported by Wiggles. [MG]
* The mud_url code didn't always work correctly in Firefox because http
headers weren't sent. [MG]
* %0 and %1 arguments weren't properly passed through verb attributes after
a change in p8. Reported by Padraic. [MG]
* Fix really stupid copy-and-paste error in magic sorts on strings with
ANSI, which broke setinter() and friends. Reported by Minion. [MG]
* Help fixes by Wiggles, Mouvar and others. [MG]
* Memory leak in ldelete() fixed. [MG]
* Fix a crashbug reported by Minion. [MG]
* Sorting functions now ignore ANSI when sorting a string as a number
or dbref. From report by Mouvar. [MG]
* strreplace() was broken for overly long length arguments. Reported
by Ashen-Shugar. [SW]
* Compile errors on Windows with OpenSSL. Reported by Daniko.
* @uptime could report negative times for the first dump, purge, etc after
a game was started. Reported by Cooee. [MG]
* override/inplace hooks from .cnf files didn't work correctly. [MG]
* The portmsg announcer daemon was broken. Reported by Minion. [SW]
* A change in p8 broke the sending of the Pueblo hello string in some cases.
Reported by Mercutio. [MG]
* Fix crash bug in @sitelock/remove [SW]
* ssl_slave would drop connections if it couldn't resolve a valid hostname
for the connecting IP address. [SW]
* Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value
of the previous matching capture. From a report by Sketch. [MG]