forked from TinyMUSH/Historical-TinyMUSH
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BETA
1731 lines (1104 loc) · 62.6 KB
/
BETA
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
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Changelog for the Beta Releases
===============================
Where possible, notes in [brackets] indicate when the error was
introduced. Non-specific version numbers indicate the following:
- Penn (Present in PennMUSH and introduced by porting.)
- 2.0 (Introduced in TinyMUSH 2.0.10p6 or earlier.)
- 2.2 (Introduced in TinyMUSH 2.2.5 or earlier.)
- MUX (Introduced in TinyMUX 1.6 or earlier.)
- MUX2 (Present in MUX 2.0 or later and introduced by porting.)
- 3.0 (Introduced in TinyMUSH 3.0 at some point in time.)
- 3.1 (Introduced in TinyMUSH 3.1 at some point in time.)
- 3.2 (Introduced in TinyMUSH 3.2 at some point in time.)
Names after the bug origin version are the first sources for the bug
reports. Where no name is given, the bug was discovered by the
developers. ("RMG" refers to Robby Griffin, aka Alierak; he joined
the development team on 3.0 beta 18 and is not individually credited
after that point.)
Major release history:
TinyMUSH 3.0 beta 1: Initial beta release, 1999/09/27.
TinyMUSH 3.0 gamma: Standard "stable" release, 2000/12/01.
TinyMUSH 3.1 beta 1: Initial beta release, 2002/05/08.
TinyMUSH 3.1 gamma: Standard "stable" release, 2004/06/21.
TinyMUSH 3.2 beta 1: Initial beta release, 2009/02/23.
TinyMUSH 3.2 Gamma: Standard "stable" release, 2011/06/06
=============================================================================
TinyMUSH 3.2 Beta History
=============================================================================
06/06/2011: TinyMUSH 3.2 gamma release
- Fix: A typo in gdbm.h (3.1)
06/01/2010: Beta 3
- Enhancement: New @include command allows the inline inclusion of the
action list from another attribute. Idea from PennMUSH.
- Enhancement: New /optimize switch to @dump does an optimized dump (allows
occasional optimized saves without using the opt_frequency parameter).
- Enhancement: New functions align() and lalign() do newspaper-style
column formatting. Idea from PennMUSH.
- Enhancement: New function benchmark() for benchmarking softcode. Idea
from PennMUSH.
- Enhancement: New function bound() constrains a number between a minimum
and maximum. Idea from RhostMUSH.
- Enhancement: New function diffpos() string-comparison function.
- Enhancement: elements() now supports a slicing syntax, including
negative numbers (N positions from end) and <start>:<end>:<step>
- Enhancement: New function exclude() is an inverse form of elements().
- Enhancement: New function etimefmt(), inspired by PennMUSH, formats a
time interval in seconds, in terms of days, hours, minutes, and seconds.
- Enhancement: New functions for coordinate grids; grid() etc.
- Enhancement: New function ibreak() breaks out of a loop used by iter()
and related functions. Idea from RhostMUSH.
- Enhancement: New function join() joins strings without extraneous
delimiters. Useful for appending and so forth.
- Enhancement: lattr() can take an optional <start> and <count>, allowing
extraction of results too long for a single buffer.
- Enhancement: New functions ltrue() and lfalse() test boolean-true and
boolean-false on lists.
- Enhancement: New function qsub() provides "safe" string substitutions
using local register data.
- Enhancement: New function stripchars() for string-editing.
- Enhancement: New function tokens() processes complex lists.
- Enhancement: Justification indicators on table(). Idea from PennMUSH.
- Enhancement: New function unmatchall() is a reverse matchall(), which
gets the element numbers of list items that don't match a pattern.
- Enhancement: New functions vand(), vor(), vxor() perform boolean logic
between lists.
- Bugfix: baseconv() handles negative numbers. [3.2b1; Penn]
- Bugfix: itext2() is properly accessible. [3.1p6]
- Misc: Updated copyright.
- Bugfix: stpcpy() conflict with string.h's included function (Mac OS X
10.6.5).
-----------------------------------------------------------------------------
03/02/2009: Beta 2
- Enhancement: nofx() function selectively prevents function side-effects.
- Enhancement: sandbox() function combines functionality of objcall(),
ucall(), and nofx() into a general selective-limitation function.
- Enhancement: New config parameter info_text allows you to add arbitrary
fields to INFO output. Idea from Talvo.
- Bugfix: Fixed ucall()-related memory leaks. [3.2b1]
- Bugfix: Fixed a bug in Makefile.in that prevented building more then one
module. [3.2a2]
- Bugfix: Non-hackish way to detect gettimeofday() on MacOS X. [2.0]
- Misc: Updated autoconf to version 2.62.
- Misc: Updated Libtool to version 1.5.26.
- Misc: Updated SHTool to version 2.0.8.
- Misc: Updated gdbm to version 1.8.3.
- Fix: Fixed gdbm tools to work with gdbm 1.8.3.
-----------------------------------------------------------------------------
02/23/2009: TinyMUSH 3.2 beta release
- Feature: All objects have a creation timestamp, accessible via the
creation() function. This requires a database upgrade.
- Feature: PennMUSH-style object IDs (objIDs) are supported, using the
unique combination of dbref and creation time. Almost anything that
can take dbrefs can take an objID. New functions objid() and isobjid().
New substitution %: gives objID of the enactor.
- Enhancement: Queue entries now have a process ID (PID). You can adjust
the wait time of something on the wait queue with @wait/pid, or remove
an individual queue entry with @halt/pid. @ps now shows PID entries,
and information about the queue can be obtained via the ps() function.
New param queue_max_size controls the maximum size of the queue.
- Enhancement: @wait/until allows specifying a particular time in
seconds since the epoch.
- Enhancement: New function ucall() allows selective preservation and
restoration of local registers in a u()-style call.
- Enhancement: New function baseconv() does numeric base conversions.
- Enhancement: New function esc() is a lighter-weight escape()-like
function, intended just for dealing with string substitution.
- Enhancement: New function isalnum() checks if a string is alphanumeric.
- Bugfix: Specifying an overly long wait time no longer causes the
command to execute immediately. [2.0]
- Bugfix: When the wait queue is processed, all expired waits are
executed (rather than only one such command done per second). [2.0]
=============================================================================
TinyMUSH 3.1 Beta History
=============================================================================
06/21/2004: TinyMUSH 3.1 gamma release
- Feature: @pemit/@oemit can take a /move switch, per suggestion by
Mike Whitaker.
- Fix: Fatal bug in structure() fixed; default values should be
optional. [3.0; Traest]
- Fix: Stack items could be set to -1 by pop() or toss(). [3.0; Draci]
- Fix: Evaluating the termination condition in while() or until()
could corrupt the buffer it evaluated in, causing inconsistent
behavior. [3.0; Draci]
- Fix: Better error handling around regular expression matches, fixing
at least one bug where regedit() could use an uninitialized buffer. [Penn]
- Fix: @list memory was counting vattr names twice. [3.1]
- Fix: Fixed a cache memory leak when in standalone mode. [3.1]
- Misc: Added support for Perl-style curly braces in the regedit()
replacement string, i.e. ${1} is the same as $1. The curly braces may
need to be escaped in order to work.
- Misc: Compatibility update for x86_64 cpu types (e.g. opteron).
- Misc: Code cleanup around parser calls, after making sure the parser
always nul-terminates its own output.
- Misc: Miscellaneous minor code cleanup.
-----------------------------------------------------------------------------
08/13/2003: Beta 11
- Fix: @trigger/now switch had no effect. [3.1b7; Draci]
- Fix: Patched gdbm-1.8.0 bugs, based on gdbm-1.8.3:
- gdbm_reorganize (see 'wizhelp opt_frequency') had a small memory leak.
- Too many free blocks in the gdbm database could cause an overflow.
- Fix: Beta 10 cache changes caused some attributes not to be written
out to the gdbm file. [3.1b10]
- Fix: Lookup slave no longer leaves zombie processes; requires rerunning
configure script to look for wait4(). [MUX2; Brazil]
- Misc: If the last line of the logfile is a GDBM panic: write error,
the Startmush script will stop, and direct user to run a Reconstruct first.
-----------------------------------------------------------------------------
07/30/2003: Beta 10
- Fix: The cache now keeps a single freelist. Fixed several bugs. [3.1]
- Fix: Immediate commands that modify the queue are no longer truncated
at the next semicolon, unless the command itself was halted. [3.1a2]
- Fix: @halt checks queue entry ownership more carefully to avoid
referencing Owner(#-1). [MUX]
- Fix: Don't allow tel_anything objects to be teleported by anyone. [3.1a6]
- Fix: If no database is loaded, do not log the name of the player when
setting config permissions. [3.1]
Because this version has cache code changes, games running on this
version should be backed up daily!
-----------------------------------------------------------------------------
04/28/2003: Beta 9
- Feature: Added elockstr(). Idea from Joel Ricketts.
- Fix: Restored missing statement so exits don't get set with the wrong
default flags. [3.1b8; Threnody]
- Fix: Delimiters are passed by reference to avoid a gcc 3.1 bug.
- Fix: The @Ttofail attribute has been corrected to @TOFail. [3.1a8]
- Fix: The MUSH's "dumping" status is cleared more carefully when
a child process exits, making sure it was really a forked dump
process and that it really ended. [MUX; Brazil]
- Fix: Large TRACE output no longer involves the use of freed
memory. [MUX; Brazil]
- Fix: Exits and rooms may not use the "home" command. [2.0]
- Fix: If the Dropto of a room is set to home, it's not really
invalid. [3.1b8]
- Misc: @pemit and related commands/functions avoid duplicate
recipients.
- Misc: If ladd() is given a blank list, it returns 0 instead of
complaining about the number of arguments.
- Misc: Unused lock-related code removed from get(); use lock() to
retrieve locks. [2.0; Brazil]
- Misc: Improved ANSI and delimiter handling in table() and related
functions.
- Misc: Improved ANSI handling in @edit / edit().
- Misc: When logging, garbage isn't out-of-range.
- Misc: Improvements made to lookup-slave buffer overflow protection.
- Misc: Limited lookup-slave child processes to 20 in case of
denial-of-service attack. [MUX; Brazil]
- Misc: Configure always checks for zlib if using MySQL.
- Misc: 'make clean' no longer removes the tinygdbm library.
- Misc: Workaround for broken 'make depend' on MacOS X and possibly
other systems.
-----------------------------------------------------------------------------
12/02/2002: Beta 8
- Feature: speak() now takes a says-string parameter, and obeys the
say_uses_comma conf parameer. Please note that the argument order has
changed, to facilitate the common case of not wanting a total
transformation.
- Feature: If @speechformat has the no_name attribute flag, an empty
result is treated as valid, so all-side-effect results are possible.
- Feature: lpos() can check multiple characters. Based on a suggestion from
Joel Ricketts.
- Feature: Added objcall(), which evalutes the text of an attribute from
another object's perspective, like a combination of u() and objeval().
Idea from Joel Ricketts.
- Feature: Added fcount(), fdepth(), ccount(), cdepth(), for getting
function and command invocation and recursion counters. Based on a
concept from Shadowrun Denver MUSH.
- Feature: A new conf parameter, c_is_command, controls whether %c is
last command (default) or ANSI substitution.
- Feature: @mail supports separate to/cc/bcc lists. Patch from
Simon Bland, plus misc fixes.
- Feature: @doing has a /quiet switch to avoid "Set." messages. Based
on a suggestion from Solace@Evolution.
- Fix: The border() family of functions supports left-indentation (spaces
at the beginning of a line) properly. [3.1; Sally Schreiber]
- Fix: Object stack limits are properly enforced. [3.0; Joel Ricketts]
- Fix: A rare problem with spurious permission denied messages when
setting an attribute has been fixed. [2.0; Joel Ricketts]
- Fix: Running MEMORY_BASED works again. [3.1; Tyr]
- Fix: Since our copy of gdbm includes an important change, we build it
as libtinygdbm.a to avoid linking netmush with an unmodified gdbm, as
sometimes happened on Linux systems.
- Fix: Permission to lock/unlock an attribute should depend on the
victim's CONSTANT flag, not the executor's. [3.0b14]
- Fix: Some integer math results were displayed as "-0".
- Fix: Numeric conf parameters such as sacrifice_factor that are used
in division may not be set to zero.
- Fix: rloc() now works on exits as documented (returns destination).
- Fix: Buffer overflow in SIGTERM handler. [3.0b8]
- Fix: God can't be set GOING or @chowned. [2.0; Brazil]
- Fix: A player being destroyed may lack a Destroyer attribute if
simply set GOING by God. [MUX; Jeff Czyz]
- Fix: Valid hostnames returned by the lookup slave may start with
numbers. [MUX; Brazil]
- Fix: Global registers should be cleared between interactive
commands. [2.0; Brazil]
- Fix: Fatal bug in regedit() fixed. [3.1a4]
- Fix: Infinite loop in regeditall() fixed. [3.1a4]
- Fix: Player names consisting of only whitespace are not allowed.
[3.0; Brazil]
- Fix: Corrected the function that's supposed to avoid random
number generator bias. [3.1b6]
- Fix: children(no such object) should not return all unparented
objects, but children(#-1) should. Similar fixes for inzone and
zwho. [MUX]
- Fix: Extra space no longer appears after columns() output. [MUX]
- Fix: config() can access dbref conf parameters [3.1a8; Eric Kidder],
and dbref conf parameters can be registered by modules. [3.1a8; Tyr]
- Fix: Renamed "mstate" parameters to avoid conflict with the malloc
facility in RedHat 8.0. [2.0; Pete C.]
- Fix: Commands that begin with a single backslash are handled properly
as @emits. [2.0; sTiLe]
- Fix: Spurious CPU limit warnings from a weird clock() on Linux and BSD
have been eliminated. [3.1b1]
- Misc: The global attribute flags no_clone (c) and constant (k) now sohw
up in an examine.
- Misc: Unprivileged exits may destroy themselves, requested by
drdubious.
- Misc: The hide power is also required in order for non-wizard
idlers to be affected by the idle_wiz_dark conf parameter.
[MUX; Dellin@Aftermath]
- Misc: Improved protection against invalid dbrefs in dbref-type
conf parameters.
- Misc: config() can access option conf parameters, of which the
only one is signal_action, readable by God.
- Misc: Logic for 64-bit alignment of the alloc pool_header struct was
wrong, but worked anyway. [3.1a8]
- Misc: The paranoid_allocate conf parameter checks all buffer pools
(previously omitted the player cache pool).
- Misc: Assorted spelling corrections and other minor cleanup.
- Misc: Re-released under the Artistic License.
-----------------------------------------------------------------------------
08/29/2002: Beta 7
- Feature: @verb now takes a no_name switch, which prevents the actor's
name from being prepended to the default o-message.
- Feature: The format and text of a say and pose can be arbitrarily altered,
via the @speechformat attribute and SPEECHMOD flag on the speaker, or the
speaker's location.
- Feature: New conf parameter huh_message lets you change the Huh? message
when a command cannot be matched.
- Fix: A memory leak related to global registers has been fixed. [3.1b6]
- Fix: Wildcard and regexp pattern matching are better at handling worst-case
scenarios. Added new conf parameter wildcard_match_limit. [2.0; Javelin]
- Fix: @listmotd works properly for non-wizards again. [3.1a7; Jaye]
- Misc: check_access() is more efficient. Based on MUX2 algorithm.
- Misc: Assorted bits of code cleanup.
-----------------------------------------------------------------------------
08/14/2002: Beta 6
- Feature: Global registers can now be named arbitrary things, with the
number permitted by an action list limited to the conf parameter
register_limit. setq() can now take multiple name-value pairs.
- Feature: munge() now passes its input delimiter to the u-function
as %1. Idea from PennMUSH.
- Feature: More informative error message when a function is given the wrong
number of arguments. Idea from Philip Mak.
- Feature: Players with the See_Queue power can now @ps other players, not
just @ps/all and themselves.
- Misc: The 'xmatch' attribute flag (added in beta 5) is now called
'rmatch'. Rather than setting the results of the match into x-variables,
the result is set into named global registers. This eliminates the
issues with clobbering variables, needing to use the Now flag, etc.
- Misc: Replaced the random number generator with Mersenne Twister.
Use derived from PennMUSH, which derives it from MUX2.
- Misc: The maximum length of a comsys header is now 64 characters
instead of 32.
- Fix: dbconvert -C crash fixed. [2.0; Jake]
- Fix: Fatal bug in children() fixed. [3.1b4; Pete C.]
- Fix: The Quota power works (this feature originally didn't make it
into 3.0 from MUX, an oversight). [3.0]
- Fix: The ampersand is no longer dropped from unrecognized entities in
html_unescape(). [2.0]
- Fix: A quirk in the truncation of long strings has been fixed. [2.2; Brazil]
- Fix: Exit names are no longer mutilated when ansi() is used to embed
multiple ANSI codes in them. [MUX; Pro]
-----------------------------------------------------------------------------
07/26/2002: Beta 5
- Feature: The new attribute flag 'now' causes a matched $/^-action to
be executed immediately.
- Feature: The new attribute flag 'xmatch' causes wildcard match data
for a $/^-action to be set into x-variables as well as placed on the
stack, i.e. '$hit *{victim} with *{weapon}' to retrieve the victim
and weapon strings via %_<victim> and %_<weapon> is now possible.
Based on an idea from KiliaFae.
- Feature: There are five new search classes -- ueval, uthing, uplayer,
uroom, uexit. They call an obj/attr u-function for evaluation. This
makes it unnecessary to deal with the brackets-escaping issues that
plagued use of search() in conjunction with the eval classes.
- Feature: "Altered reality" realm states like invisibility are supported
through the use of the PRESENCE flag and six new locks (HeardLock,
HearsLock, KnownLock, KnowsLock, MovedLock, and MovesLock). The
module API for did_it() has changed to support this.
- Feature: The new functions hears(), moves(), and knows() check permissions
related to Presence.
- Feature: The new /speech switch to @pemit explicitly marks a @pemit as
speech subject to Presence checks. @oemit now takes two new switches,
/noeval and /speech.
- Feature: The new group() function splits/sorts a list into groups.
- Feature: hasflag() can now detect object types.
- Feature: The new hasflags() function can operate on multiple lists of
flags and types, returning true if all elements in any of the lists
are true.
- Misc: elock(), hasflag(), haspower(), and type() now all return
#-1 NO MATCH when they can't find the object they're checking.
Previously they returned #-1 NOT FOUND; for consistency's sake,
they now behave like everything else.
- Misc: Caution is exercised when a match result could be #-3.
- Misc: The check_paths script (used by other scripts) clarifies which
things are errors and which are warnings.
- Fix: An off-by-one error which could cause crashes and corruption
when saving the database has been fixed. [3.1; Ashen-Shugar]
- Fix: The game/backups directory is now correctly included with the
distribution.
-----------------------------------------------------------------------------
06/27/2002: Beta 4
- Feature: The new no_name attribute flag prevents the actor's name from
being prepended when that attribute is used as an @o-attr (including
with @verb).
- Feature: The new conf parameter say_uses_comma, if enabled, will insert
the grammatically-correct comma into say and @fsay.
- Feature: The new conf parameter say_uses_you, if disabled, will always
show the speaker '<name> says' rather than 'You say'. This is more
convenient for environments where activity is often logged and shared.
- Feature: lpos(), lattr(), lexits(), lcon(), xcon(), children(), lparent(),
and the grep() family now take an output delimiter.
- Feature: Added connrecord(), connected player record (as in WHO).
- Feature: Added @@(), which is like null() except the argument is not
evaluated. Idea from PennMUSH.
- Feature: @conformat and @exitformat get their visible contents/exits
lists passed as %0.
- Feature: Flatfiling now automatically cleans the attribute table.
(Use -q to turn this off.) Removed @dbclean, since this is now unnecessary.
- Feature: Restore script can now handle archives produced by Archive.
- Fix: Minor parts of structure db were not properly cleared at startup:
connected flag, internal 'dirty' flag, and cpu time used. [3.1a8]
- Fix: Prevent infinite loop in cache when cache fills with nothing but
modified attributes (extremely rare, but not impossible). [3.1]
- Fix: Restore script determines database name from archive name by
removing extension, not truncating at second dot. [3.1a9; Scott Schappell]
- Misc: Scripts now use the correct extensions for various compression
formats, and handle the bzip2 compression format.
- Misc: The expanded_who power no longer grants the ability to see
Dark players in WHO. (Previously those with the power could, but
weren't able to get that info via functions.)
- Misc: pos() strips ANSI out of the string to search for, in addition
to the string to search within.
- Misc: @addcommand sanity-checks command names.
- Misc: Minor cleanup.
-----------------------------------------------------------------------------
06/07/2002: Beta 3
- Feature: The new choose() function picks an element from a list on a
weighted-random-choice basis.
- Feature: The new helptext() function retrieves an entry from an indexed
textfile (i.e., help, news, or anything else added via the helpfile or
raw_helpfile conf directives).
- Feature: The new oemit() function provides the equivalent of @oemit.
- Feature: trim() can now take a trim string of arbitrary length.
- Feature: Added cache_put_notify and cache_del_notify modules API hooks.
These hooks are called when data is added, changed, or deleted from the
MUSH cache.
- Fix: Crash bug with entrances() fixed. [3.1b1; Neva]
- Fix: @nameformat, @conformat, and @exitformat now respect the FREE
flag. [3.1b1; Neva]
- Fix: Conf file entries with a dbref, like 'master_room #2', should now
work properly. [3.1a8; H'kar]
- Fix: Update should now work on systems with broken local domain resolution.
[3.1a7; Neva, Christy Schulte]
- Fix: Clearing an attribute updates an object's Last Modified timestamp.
[3.1a6]
- Fix: clock() checking for function CPU time should now work on NetBSD.
[3.1a6]
- Fix: Corrected typo in flag_alias for COMMANDS. [2.2; Felan]
- Fix: Startmush still didn't back up module dbs correctly. [3.1b2]
- Fix: Space between dbref and flags was missing for MARKER9. [3.0; Taran]
- Fix: Failed to link with zlib when needed by mysql. [3.0; Michael Broggy]
- Fix: Database structure initialization for modules is done correctly.
[3.1a6; Taran]
- Misc: FREE flag is respected for @conformat and friends. [3.1b1; Neva]
- Misc: The Hide power or Wizard status is always required to avoid
connection detection. [3.1a7]
- Cosmetic: Shout messages include the grammatically correct comma after
"shouts". [2.0; Neva]
-----------------------------------------------------------------------------
05/19/2002: Beta 2
- Feature: istrue() and isfalse() functions added (basically iter()-style
filterbool() and reverse).
- Feature: speak() function added, for speech-formatting and parsing.
- Feature: If invoked with the -f switch, the Backup script only makes
a flatfile.
- Feature: The Build script accepts options to be passed to the configure
script, enabling simple custom installation.
- Feature: Introduced do_second() module API hook. Useful for modules which
must update regularly.
- Fix: The game/data directory is once again included in the
distribution. [3.1; Neva]
- Fix: Compilation error when no modules were enabled. [3.1; d@vid.org.uk]
- Fix: Potential crash if netmush or dbconvert is invoked without
a slash in the name. [3.1]
- Fix: dbconvert should print usage message instead of crashing if
invoked without a gdbm file. [3.1a9]
- Fix: Numeric hashtable entries could have different struct layout
than string entries, causing hashtable functions not to work. [3.1b1]
- Fix: Objects with dbrefs higher than mudstate.attr_next were not
written to the database. [3.1; Christy Schulte]
- Fix: Backup invoked tar with wrong options. [3.1a10]
- Fix: *player changes broke *dbref, as in num(*#1). [3.1b1]
- Fix: Memory leak in let(). [3.1b1]
- Fix: If a non-null attribute default is available, the server-supplied
default string should never be used. [3.1a2]
- Fix: log_perror() cleared errno before trying to log the error. [2.0]
- Fix: Startmush could remove module databases due to inconsistent
glob handling in some shells. [3.1a9; Christy Schulte]
- Fix: Fixed typo in module call to db_write(). [3.1b1]
- Misc: Avoid scanning the entire help table when asked for a
nonexistent, non-wildcard entry. [2.0]
- Misc: Reduced stack memory usage of functions such as shuffle(),
with a rewrite of helper function list2arr().
- Cosmetic: Shout messages include the grammatically correct comma after
"says". [2.0; Neva]
=============================================================================
TinyMUSH 3.0 Beta History
=============================================================================
9/28/99: Beta 2
- Fix: Compilation problem with MEMORY_BASED defined. [3.0; Roloran]
- Fix: XFREE macro missing argument compiler error. [3.0; Roloran]
- Fix: Fatal error in let(). [3.0a8; RMG]
- Fix: Off-by-one, integer overflow, and bounds-checking issues. Verified
with Purify. [RMG]
- Fix: Cannot set/reset ROBOT flag on players. [MUX]
-----------------------------------------------------------------------------
9/29/99: Beta 3
- Fix: Pueblo support works again. [3.0; GrimJim]
- Fix: Structure names cannot contain periods. [3.0a8; stile]
- Fix: translate() works as documented, and handles backslashes correctly.
[MUX; RMG]
- Fix: pmatch() correctly handles dbrefs. [3.0a11; RMG]
- Fix: Command switch issues fixed for @mail, @malias, @wipe. [2.0; RMG]
- Fix: Side-effect function permissions are checked more thoroughly. [MUX; RMG]
- Fix: Double-free issue in switchall(). [3.0a8; RMG]
- Change: mix() can take up to twelve arguments (rather than ten).
- Cosmetic: Dealt with a compiler warning in flags.c.
- Docs: Updated mailing list subscription info in help.
-----------------------------------------------------------------------------
9/30/99: Beta 4
- Fix: @clone correctly copies all flags. [3.0; RMG]
- Fix: @open requires the invoker to have contents. [2.0; RMG]
- Fix: Parent recursion issues have been prevented in various places.
[2.0; RMG]
- Fix: parse() checks function invocations in a manner identical to iter().
[2.0; Myrrdin]
- Fix: Slaves are reaped with waitpid() so zombies are not created by
@restart (may be Linux-specific problem). [MUX; Myrddin]
- Fix: Signals are unblocked at startup, allowing SIGUSR1 to be invoked
for later instances in restarts. [MUX; RMG]
- Misc: The unused parentable_control_lock parameter has been removed.
- Misc: A variety of compiler warnings related to uninitialized variables,
unused variables, implicit function declarations, etc. have been taken
care of.
-----------------------------------------------------------------------------
10/2/99: Beta 5
- Feature: lstructures() and linstances() functions added.
- Fix: @dbclean has been rewritten, and now works (and is more efficient).
[3.0; Thomas Wouters]
- Fix: Where pow() is used in conjunction with htonl(), it is cast to
unsigned int. This fixes a compilation issue with Linux and gcc -O.
[3.0a5; stile]
- Fix: Some structures are no longer allocated as lbufs, but are explicitly
malloc'd in a type-specific manner. [2.0]
- Fix: Forwardlists are loaded before startups are run. [2.0]
- Fix: @mail/fwd now explicitly checks to see if a mail message is in
progress. [MUX; Morris]
- Fix: INFO now works when used by logged-in players. [3.0a2; RMG]
- Fix: trunc() truncates rather than rounds. [MUX; Keran]
- Fix: Dumping and shutdown check to make sure the game is not already
dumping. [2.0; Geoff Gerrietts]
- Fix: The display of exit destinations for Transparent rooms now handles
"special" exit destinations. [2.2/MUX; RMG]
- Fix: Some oddities with attribute renaming have been taken care of.
[2.0; RMG]
- Fix: The static buffers for Name and PureName are of the appropriate type.
[MUX; RMG]
- Fix: Instance name lengths are restricted to half an sbuf. [3.0a8; RMG]
- Fix: Startmush handles checking if the game is running in a better manner.
[RMG]
- Misc: The GDBM bucket cache size has been reduced to 1 bucket.
-----------------------------------------------------------------------------
10/4/99: Beta 6
- Fix: Money is no longer deducted twice when creating an object. [3.0]
- Fix: Another pow()/htonl() fix. [3.0a5; Markus Stenberg]
- Fix: Various compile-time option #ifdef's cleaned up. [3.0]
- Fix: Removed spurious spaces in columns() when a string is truncated.
[3.0b2; Keran]
- Fix: Cosmetic change to @list textfiles. [3.0a5]
- Misc: chown_anything also lets you @chown to anyone.
- Misc: Doubled the size of the function and user function hash tables.
- Misc: Got rid of the SIDE_EFFECT_FUNCTIONS compile-time option, since
you can simply function_access the side-effect functions to 'disabled'.
-----------------------------------------------------------------------------
10/5/99: Beta 7
- Feature: New conf parameter stripped_flags determines what flags are
stripped when an object is subject to a @chown, @chownall, or @clone.
These commands now take a /nostrip switch, which negates stripping.
For consistency, @clone/inherit no longer preserves IMMORTAL (only
INHERIT).
- Fix: Side-effect function prototypes exist again. [3.0b6; Tina Verras]
- Fix: You can no longer set the cost of non-things in @clone (consistent
with other object-creation commands). [MUX]
- Fix: The value of @clone'd objects is now correctly set. (Previously,
all cloned objects had a value, i.e. Pennies, of zero.) [MUX]
- Misc: All @clone switches except /inventory and /location can be combined.
- Misc: @clone/preserve can be used by anyone, but you must control the
original object's owner.
- Misc: ansi() compacts the ANSI codes, and makes a better attempt against
avoiding bleeding.
-----------------------------------------------------------------------------
10/7/99: Beta 8
- Feature: @cron implemented, providing Unix-style cron scheduling.
@daily has been re-implemented using the @cron facility.
- Feature: Functions that take output delimiters can now take a null
output delimiter, signified by the token '@@'.
- Feature: The examine command has a new switch, /pairs. This shows
paren/bracket/braces-matching in ANSI color. (Based on the engine
from ChaoticMUX's parenmatch() function.)
- Feature: New conf directive raw_helpfile allows the addition of
non-evaluated helpfiles.
- Feature: Added the MUSH Manual to the distribution in helpfile format.
(Thanks to Alierak and sTiLe.)
- Feature: delete(), mid(), left() and right() no longer strip ANSI
characters.
- Fix: SQL queries error out properly when support is not compiled in.
[3.0a13; Blane Dabney]
- Fix: @clone/nostrip can be combined with all other @clone switches.
[3.0b7]
- Fix: The 2.2 database conversion converts the Builder flag to the
Builder power, rather than just discarding the flag. [3.0a4]
- Fix: Comtitles are terminated with ANSI_NORMAL where appropriate.
[MUX; Brazil]
- Fix: sortby() no longer ignores its output delimiter. [2.2]
- Fix: translate() can handle compacted ANSI strings generated by
ansi(). [3.0b7]
- Fix: hastype() can be used on an object, even if you can't examine it,
since you can type() anything. [MUX; stile]
- Misc: Typecast time_t to int when using it in conjunction with printf().
- Did a diff between ChaoticMUX-S3, and TinyMUX 1.6p0. Derived a suite
of bugfixes and some enhancements, as follows:
- Feature: @function/noeval defines a user-defined function whose
arguments are not pre-evaluated.
- Feature: An ANSI underline code, %xu, has been added.
- Feature: log() can take an optional second argument, the base.
- Fix: elock() obeys the pass_locks power. [MUX]
- Fix: Pool headers are 64-bit aligned. [2.0]
- Fix: Calls to site_check() check the return value ANDed against the flag.
[2.0]
- Fix: The overflow buffer for functions is terminated properly. [MUX]
- Fix: Missed some places where see_hidden should apply. [3.0a14]
- Fix: OUTPUTSUFFIX without OUTPUTPREFIX works. [2.0]
- Misc: All calls to abort() log a message. [2.0]
- Misc: mail() and mailfrom() check arg ranges in the standard way. [MUX]
- Misc: ANSI defines are used rather than embedding raw codes. [MUX]
- Misc: No spurious extra args to raw_broadcast() calls. [MUX]
-----------------------------------------------------------------------------
10/8/99: Beta 9
- Feature: @destroy/instant instantly destroys an object, rather than
queueing it for recycling. The new conf option instant_recycle
controls whether or not objects set Destroy_OK (or which have
Destroy_OK owners) get instantly destroyed; it defaults to 'yes'.
- Feature: @list options now shows just boolean parameters, and the
display format is now much neater (and in alphabetical order of
the actual parameter names). A new command, @list params, shows
a variety of other conf options.
- Fix: left() works properly again. [3.0b8; Jeff Hulsey]
- Fix: format_exits conf parameter is recognized again. [3.0]
- Misc: Unused conf parameters eliminated.
-----------------------------------------------------------------------------
10/8/99: Beta 10
- Feature: edit() can now edit ANSI strings. @edit also handles ANSI
in a better manner.
- Fix: Conf parameter unowned_safe is back. (Oops.) [3.0b9; utoxin]
- Fix: Failed movement through a global or zone exit results in
"You can't go that way." rather than no output.
[2.0/2.2; Markleford Friedman]
- Fix: Fixed an obscure bug where, in the match confidence calculation,
the "you can pass this lock" check always succeeded. [MUX]
- Fix: A variety of inappropriate malloc()s have been dealt with,
and XMALLOC/XFREE are now used by the mail code. [2.0/MUX]
- Misc: sql_init()'s shutdown of a SQL socket calls sql_shutdown()
instead of doing just doing it.
- Misc: A variety of compiler warnings have been dealt with.
- Went through the TinyMUSH 2.2 changes log again, looking for code
that was not incorporated. Resulted in the following changes:
- Fix: Never show HTML to non-HTML players. [MUX]
- Fix: A variety of buffer overflow issues have been dealt with. [2.0]
- Fix: Null pointer dereference in con/exit formatting. [2.2]