This is patch31 to PennMUSH 1.7.7. After applying this patch, you will have version 1.7.7p31 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.7-patch31 make clean make install If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1', not just 'patch -p1'. Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c, hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically rebuilt on compile. On the off chance they appear not to be, simply rm them and re-run make. Then @shutdown and restart your MUSH. - Alan/Javelin In this patch: Flags: * New HEAVY admin flag, prevents an object from being teleported by a mortal between two containers they own. Admin without this flag can now be teleported. Fixes: * mix() now treats empty lists as empty, instead of containing a single null element. Report by Luke@M*U*S*H. * @power messages no longer reference 'flags'. Report by Nymeria@M*U*S*H. * Crash bug with @clone in new power system fixed. Prereq: 1.7.7p30 *** 1_7_7.966/Patchlevel Thu, 06 May 2004 10:41:14 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.32 600) --- 1_7_7.976(w)/Patchlevel Tue, 11 May 2004 10:53:56 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.33 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.7p30 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.7p31 *** 1_7_7.966/CHANGES.177 Thu, 06 May 2004 10:41:14 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.258.1.14.1.72 600) --- 1_7_7.976(w)/CHANGES.177 Tue, 11 May 2004 10:54:11 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.258.1.14.1.77 600) *************** *** 18,23 **** --- 18,36 ---- ========================================================================== + Version 1.7.7 patchlevel 31 May 11, 2004 + + Flags: + * New HEAVY admin flag, prevents an object from being teleported + by a mortal between two containers they own. Admin without this + flag can now be teleported. + Fixes: + * mix() now treats empty lists as empty, instead of containing a single + null element. Report by Luke@M*U*S*H. + * @power messages no longer reference 'flags'. Report by Nymeria@M*U*S*H. + * Crash bug with @clone in new power system fixed. + + Version 1.7.7 patchlevel 30 May 6, 2004 Major changes: *** 1_7_7.966/game/txt/hlp/penntop.hlp Sat, 01 May 2004 14:15:06 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.1.1.1.1.8.1.5 600) --- 1_7_7.976(w)/game/txt/hlp/penntop.hlp Tue, 11 May 2004 15:59:15 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.1.1.1.1.8.1.6 600) *************** *** 164,169 **** --- 164,170 ---- See also: PARENTS, ORPHAN & ANONYMOUS ATTRIBUTES & LAMBDA + & #LAMBDA In many cases where a function expects a object/attribute pair that refers to an attribute to evaluate, you can use the form *************** *** 1062,1068 **** unkillable Can not be killed can_nspemit Can use @nspemit and nspemit() ! See also: @power & PUPPETS A thing is turned into a puppet by setting the PUPPET flag on it. A puppet object is an extension of its owner and relays everything --- 1063,1069 ---- unkillable Can not be killed can_nspemit Can use @nspemit and nspemit() ! See also: help @power, and especially @power/list & PUPPETS A thing is turned into a puppet by setting the PUPPET flag on it. A puppet object is an extension of its owner and relays everything *** 1_7_7.966/game/txt/hlp/pennflag.hlp Wed, 10 Mar 2004 16:38:11 -0600 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.2.2.13 600) --- 1_7_7.976(w)/game/txt/hlp/pennflag.hlp Tue, 11 May 2004 10:11:37 -0500 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.2.2.14 600) *************** *** 311,316 **** --- 311,324 ---- If a room is set HAVEN, the 'kill' command cannot be used in that room. See also: @haven, kill + & HEAVY + Flag: HEAVY (all types) + + A mortal player can teleport anything between two containers + they own, unless the thing to be teleported is set HEAVY. + This flag can only be set by royalty or wizards. + + See also: @tel & INHERIT & TRUST Flag: TRUST (all types) *** 1_7_7.966/game/txt/hlp/penncmd.hlp Sun, 02 May 2004 17:40:02 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.1.1.1.1.1.1.1.1.24 600) --- 1_7_7.976(w)/game/txt/hlp/penncmd.hlp Tue, 11 May 2004 10:13:52 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.1.1.1.1.1.1.1.1.25 600) *************** *** 3079,3085 **** must be either JUMP_OK or controlled by you, and you must either control or 's current location. Also, the destination, if a room, cannot be teleport-locked against . Mortals cannot ! teleport Royalty or Wizards. If the target room has a drop-to, will go to the drop-to room instead. Privileged players who teleport a player to another player send them --- 3079,3085 ---- must be either JUMP_OK or controlled by you, and you must either control or 's current location. Also, the destination, if a room, cannot be teleport-locked against . Mortals cannot ! teleport HEAVY objects. If the target room has a drop-to, will go to the drop-to room instead. Privileged players who teleport a player to another player send them *** 1_7_7.966/game/txt/hlp/index.hlp Mon, 28 Apr 2003 22:14:16 -0500 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1.2.3 660) --- 1_7_7.976(w)/game/txt/hlp/index.hlp Tue, 11 May 2004 15:59:27 -0500 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1.2.3 660) *************** *** 1,9 **** & Entries -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! " $-commands $-commands2 ! % %! %# ! %n + 1.50p6 1.50p7 1.50p8 1.50p9 1.50p10 1.50p11 1.50p12 1.50p13 1.50p14 1.50pdune1 --- 1,10 ---- & Entries -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! " #lambda $-commands ! $-commands2 % %! ! %# %: %n ! %~ + 1.50p6 1.50p7 1.50p8 1.50p9 1.50p10 1.50p11 1.50p12 1.50p13 1.50p14 1.50pdune1 *************** *** 16,27 **** 1.6.3p2 1.6.3p3 1.6.3p4 1.6.3p5 1.6.3p6 1.6.3p7 1.6.4p0 1.6.4p1 1.6.4p2 - 1.6.5p0 1.6.5p1 1.6.5p2 For more, see Entries-2 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-2 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 1.6.5p3 1.6.5p4 1.6.6p0 1.6.7p0 1.6.7p1 1.6.7p2 1.6.7p3 1.6.7p4 1.6.7p5 --- 17,28 ---- 1.6.3p2 1.6.3p3 1.6.3p4 1.6.3p5 1.6.3p6 1.6.3p7 1.6.4p0 1.6.4p1 1.6.4p2 For more, see Entries-2 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-2 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + 1.6.5p0 1.6.5p1 1.6.5p2 1.6.5p3 1.6.5p4 1.6.6p0 1.6.7p0 1.6.7p1 1.6.7p2 1.6.7p3 1.6.7p4 1.6.7p5 *************** *** 37,48 **** 1.7.1p2 1.7.1p3 1.7.2p0 1.7.2p1 1.7.2p2 1.7.2p3 1.7.2p4 1.7.2p5 1.7.2p6 - 1.7.2p7 1.7.2p8 1.7.2p9 For more, see Entries-3 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-3 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 1.7.2p10 1.7.2p11 1.7.2p12 1.7.2p13 1.7.2p14 1.7.2p15 1.7.2p16 1.7.2p17 1.7.2p18 --- 38,49 ---- 1.7.1p2 1.7.1p3 1.7.2p0 1.7.2p1 1.7.2p2 1.7.2p3 1.7.2p4 1.7.2p5 1.7.2p6 For more, see Entries-3 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-3 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + 1.7.2p7 1.7.2p8 1.7.2p9 1.7.2p10 1.7.2p11 1.7.2p12 1.7.2p13 1.7.2p14 1.7.2p15 1.7.2p16 1.7.2p17 1.7.2p18 *************** *** 58,69 **** 1.7.3p10 1.7.3p11 1.7.3p12 1.7.3p13 1.7.3p14 1.7.4p0 1.7.4p1 1.7.4p2 1.7.4p3 - 1.7.4p4 1.7.4p5 1.7.4p6 For more, see Entries-4 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-4 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 1.7.4p7 1.7.4p8 1.7.4p9 1.7.4p10 1.7.4p11 1.7.4p12 1.7.4p13 1.7.4p14 1.7.4p15 --- 59,70 ---- 1.7.3p10 1.7.3p11 1.7.3p12 1.7.3p13 1.7.3p14 1.7.4p0 1.7.4p1 1.7.4p2 1.7.4p3 For more, see Entries-4 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-4 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + 1.7.4p4 1.7.4p5 1.7.4p6 1.7.4p7 1.7.4p8 1.7.4p9 1.7.4p10 1.7.4p11 1.7.4p12 1.7.4p13 1.7.4p14 1.7.4p15 *************** *** 76,178 **** 1.7.6p0 1.7.6p1 1.7.6p2 1.7.6p3 1.7.6p4 1.7.6p5 1.7.6p6 1.7.6p7 1.7.6p8 ! 1.7.6p9 1.7.7p0 1.7.7p1 ! 1.7.7p2 1.7.7p3 1.7.7p4 ! 1.7.7p5 1.7.7p6 1.7.7p7 ! 1.7.7p8 1.7.7p9 1.7.7p10 For more, see Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! 1.7.7p11 1.7.7p12 1.7.7p13 ! : ; @-attributes ! @-building @-general @-wizard ! @@ @@() @aahear ! @aclone @aconnect @adeath ! @adescribe @adestroy @adisconnect ! @adrop @aefail @aenter ! @afailure @afollow @agive ! @ahear @aidescribe @aleave ! @alfail @alias @allhalt ! @allquota @amhear @amove ! @apayment @areceive @asuccess ! @atport @atrchown @atrlock ! @attribute @aufail @aunfollow ! @ause @away @azenter ! @azleave @boot @break For more, see Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @cemit @channel @channel2 ! @channel3 @channel4 @channel5 ! @charges @chat @chown ! @chownall @chzone @chzone2 ! @chzoneall @clock @clock2 ! @clone @command @comment ! @config @config attribs @config chat ! @config cmds @config cosmetic @config cosmetic2 ! @config costs @config db @config dump ! @config funcs @config limits @config limits2 ! @config log @config net @config parameters ! @config tiny @conformat @cost ! @cpattr @create @dbck ! @death @decompile @decompile2 ! @decompile3 @descformat @describe ! @destroy @destroy2 @dig For more, see Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @dig2 @disable @doing ! @dolist @drain @drop ! @dump @ealias @edit ! @efail @elock @emit ! @enable @enter @entrances ! @eunlock @exitformat @failure ! @filter @filter2 @find ! @firstexit @flag @flag2 ! @follow @force @force2 ! @forwardlist @function @function2 ! @function3 @function4 @gedit ! @give @grep2 @grep ! @halt @haven @hide ! @hook @hook2 @idescformat ! @idescribe @idle @infilter ! @inprefix @kick @lalias For more, see Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @leave @lemit @lfail ! @link @list @listen ! @listen2 @listmotd @lock ! @lock2 @lock3 @lock4 ! @lock5 @lock6 @lock7 ! @lock8 @lock9 @log ! @logwipe @lset @map2 ! @mail @malias @malias2 ! @malias3 @malias4 @malias5 ! @map @motd @move ! @mvattr @name @nameaccent ! @nameformat @newpassword @notify ! @nspemit @nuke @odeath ! @odescribe @odrop @oefail ! @oemit @oenter @ofailure ! @ofollow @ogive @oidescribe For more, see Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @oleave @olfail @omove @opayment @open @oreceive @osuccess @otport @oufail @ounfollow @ouse @oxenter @oxleave @oxmove @oxtport @ozenter @ozleave @parent @password @payment @pcreate --- 77,195 ---- 1.7.6p0 1.7.6p1 1.7.6p2 1.7.6p3 1.7.6p4 1.7.6p5 1.7.6p6 1.7.6p7 1.7.6p8 ! 1.7.6p9 1.7.6p10 1.7.6p11 ! 1.7.6p12 1.7.6p13 1.7.6p14 ! 1.7.6p15 1.7.6p16 1.7.7p0 For more, see Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! 1.7.7p1 1.7.7p2 1.7.7p3 ! 1.7.7p4 1.7.7p5 1.7.7p6 ! 1.7.7p7 1.7.7p8 1.7.7p9 ! 1.7.7p10 1.7.7p11 1.7.7p12 ! 1.7.7p13 1.7.7p14 1.7.7p15 ! 1.7.7p16 1.7.7p17 1.7.7p18 ! 1.7.7p19 1.7.7p20 1.7.7p21 ! 1.7.7p22 1.7.7p23 1.7.7p24 ! 1.7.7p25 1.7.7p26 1.7.7p27 ! 1.7.7p28 1.7.7p29 1.7.7p30 ! 1.7.7p31 : ; ! @-attributes @-building @-general ! @-wizard @@ @@() ! @aahear @aclone @aconnect ! @adeath @adescribe @adestroy ! @adisconnect @adrop @aefail For more, see Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @aenter @afailure @afollow ! @agive @ahear @aidescribe ! @aleave @alfail @alias ! @allhalt @allquota @amhear ! @amove @apayment @areceive ! @asuccess @atport @atrchown ! @atrlock @attribute @aufail ! @aunfollow @ause @away ! @azenter @azleave @boot ! @break @cemit @channel ! @channel2 @channel3 @channel4 ! @channel5 @charges @chat ! @chown @chownall @chzone ! @chzone2 @chzoneall @clock ! @clock2 @clone @command ! @command2 @command3 @comment For more, see Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @config @config attribs @config chat ! @config cmds @config cosmetic @config cosmetic2 ! @config costs @config db @config dump ! @config funcs @config limits @config limits2 ! @config limits3 @config log @config net ! @config parameters @config tiny @conformat ! @cost @cpattr @create ! @dbck @death @decompile ! @decompile2 @decompile3 @descformat ! @describe @destroy @destroy2 ! @dig @dig2 @disable ! @doing @dolist @drain ! @drop @dump @ealias ! @edit @efail @elock ! @emit @enable @enter ! @entrances @eunlock @exitformat For more, see Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @failure @filter @filter2 ! @find @firstexit @flag ! @flag2 @follow @force ! @force2 @forwardlist @function ! @function2 @function3 @function4 ! @gedit @give @grep2 ! @grep @halt @haven ! @hide @hook @hook2 ! @idescformat @idescribe @idle ! @infilter @inprefix @kick ! @lalias @leave @lemit ! @lfail @link @list ! @listen @listen2 @listmotd ! @lock @lock2 @lock3 ! @lock4 @lock5 @lock6 ! @lock7 @lock8 @lock9 For more, see Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + @log @logwipe @lset + @map2 @mail @malias + @malias2 @malias3 @malias4 + @malias5 @map @motd + @move @mvattr @name + @nameaccent @nameformat @newpassword + @notify @nsemit @nslemit + @nsoemit @nspemit @nsremit + @nszemit @nuke @odeath + @odescribe @odrop @oefail + @oemit @oenter @ofailure + @ofollow @ogive @oidescribe @oleave @olfail @omove @opayment @open @oreceive @osuccess @otport @oufail @ounfollow @ouse @oxenter + + For more, see Entries-10 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + & Entries-10 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @oxleave @oxmove @oxtport @ozenter @ozleave @parent @password @payment @pcreate *************** *** 185,199 **** @search @search2 @search3 @select @set @sex @shutdown @sitelock @sitelock2 - - For more, see Entries-10 - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - & Entries-10 - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @sitelock3 @squota @startup @stats @success @sweep @switch @switch2 @teleport @tport @trigger @trigger2 @ufail @ulock @undestroy @unfollow @unlink @unlock @unrecycle @uptime @uptime2 --- 202,216 ---- @search @search2 @search3 @select @set @sex @shutdown @sitelock @sitelock2 @sitelock3 @squota @startup @stats @success @sweep @switch @switch2 @teleport @tport @trigger @trigger2 + + For more, see Entries-11 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + & Entries-11 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @ufail @ulock @undestroy @unfollow @unlink @unlock @unrecycle @uptime @uptime2 *************** *** 204,237 **** @warnings2 @warnings3 @wcheck @whereis @wipe @wizmotd @wizwall @zemit @zenter ! @zleave \ ^ ! abode abs() accent() ! For more, see Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! accent2 accent3 accent4 ! accname() acos() action lists ! action2 add() after() ! ahelp alphamax() alphamin() ! and() andflags() andlflags() ! anews ansi ansi() aposs() art() asin() atan() atan2() atrlock() ! attrcnt() attrib-ownership attribute flags ! attribute functions attribute list attributes ! attributes list attributes2 attributes3 ! attributes4 audible audible2 ! band() beep() before() being killed bitwise functions bnand() - bnot() boolean functions boolean values - boolean2 boolean3 bor() ! For more, see Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- bound() brackets() brief builder bxor() cand() capstr() case() caseall() --- 221,260 ---- @warnings2 @warnings3 @wcheck @whereis @wipe @wizmotd @wizwall @zemit @zenter ! @zleave \ ] ! ^ abode abs() ! accent() accent2 accent3 ! accent4 accname() acos() ! action lists action2 add() ! after() ahelp align() ! For more, see Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! align2 allof() alphamax() ! alphamin() ancestors and() ! andflags() andlflags() anews ! anonymous attributes anonymous2 anonymous3 ! anonymous4 ansi ansi() aposs() art() asin() atan() atan2() atrlock() ! attr trees attr trees2 attr trees3 ! attr trees4 attrcnt() attrib-ownership ! attribute flags attribute functions attribute list ! attribute trees attribute trees2 attribute trees3 ! attribute trees4 attributes attributes list ! attributes2 attributes3 attributes4 ! audible audible2 band() ! baseconv() beep() before() being killed bitwise functions bnand() ! For more, see Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + bnot() boolean functions boolean values + boolean2 boolean3 bor() bound() brackets() brief builder bxor() cand() capstr() case() caseall() *************** *** 241,259 **** channel-list channels() chat checkpass() children() chown_ok chr() clients clock() ! clone() cloudy code ! color commands communication functions ! comp() comsys con() ! config() conn() connected ! contact control controls() ! convsecs() convtime() convutcsecs() ! copyright copyrite cor() ! For more, see Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! cos() costs create() credits ctime() ctitle() ctu() cv cwho() dark dark2 database --- 264,283 ---- channel-list channels() chat checkpass() children() chown_ok chr() clients clock() ! clone() cloudy cmds() ! code color commands ! communication functions comp() comsys ! con() config() conn() ! connected connection functions contact ! For more, see Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! control controls() convsecs() ! convtime() convutcsecs() copyright ! copyrite cor() cos() ! costs cowner() create() credits ctime() ctitle() ctu() cv cwho() dark dark2 database *************** *** 262,414 **** debug2 dec() decrypt() default() delete() desert destroy_ok die() dig() ! dismiss dist2d() dist3d() ! div() doing doing() ! drop drop-tos dynhelp() ! e() edefault() edit() ! element() elements() elist() ! elock() emit() enactor ! encrypt() endtag() enter ! For more, see Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! enter_ok entrances() eq() ! escape() etimefmt() etimefmt2 eval() evaluation order evaluation2 events examine executor exit() exits exits2 exp() extract() failure fdiv() filter() filterbool() ! findable() first() fixed ! flag list flag permissions flags ! flags list flags() flags2 ! flip() floating floor() ! floordiv() fmod() fold() ! fold2 folderstats() follow ! followers() following() foreach() ! foreach2 fullname() function list ! functions functions() functions2 ! For more, see Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! gagged gender get ! get() get_eval() give ! global commands globals go ! going goto grab() ! graball() grep() grepi() ! gt() gte() halt ! hasattr() hasattrp() hasattrpval() ! hasattrval() hasflag() haspower() ! hastype() haven height() here hidden() home ! home() homes html ! html functions html() i18n ! idle idle() idlesecs() ! if() ifelse() ilev() ! iname() inc() index ! index() info information functions ! For more, see Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! inherit inherit2 insert() ! interiors interiors2 internationalization ! inum() inventory isdaylight() isdbref() isint() isnum() isword() itemize() items() iter() iter2 itext() judge jump_ok jury_ok ! kill last & lastlogout last() ! lastip lastsite lattr() ! lcon() lcstr() ldelete() ! leave left() lemit() ! lexits() lflags() license ! light link() link_ok ! linking list functions list() ! listen_parent listening listening2 ! listening3 lists lit() ! ! For more, see Entries-17 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-17 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! ljust() lmath() ln() ! lnum() loc() locale ! localize() locate() locate2 ! lock list lock types lock types2 ! lock() locking locklist ! locks locktypes locktypes2 ! log() logout look ! look2 looping lparent() ! lplayers() lpos() lsearch() ! lsearch2 lsearchr() lstats() ! lt() lte() lvcon() ! lvexits() lvplayers() lwho() ! macros macros2 mail ! mail functions mail() mail-admin ! mail-folders mail-other mail-reading ! mail-sending maildstats() mailfrom() For more, see Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! mailfstats() mailstats() mailstatus() ! mailsubject() mailtime() map() ! master room match() matchall() ! matching math functions max() ! me mean() median() ! member() merge() mid() ! min() mistrust mix() ! mix2 mod() modulo() ! modulus() money money() ! monitor mortal move ! mtime() mudname() mul() ! munge() munge2 munge3 ! mushcode mushcode2 mwho() ! myopic name() nand() ! nattr() nearby() neq() ! new locks newbie newbie2 For more, see Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! newbie3 news next() ! no_command no_leave no_tel ! no_warn noaccents noleave ! non-standard attributes nor() nospoof ! not() nowarn nspemit() ! null() num() obj() ! object parents objeval() objmem() ! oemit() on-vacation opaque ! open() or() ord() ! orflags() orlflags() outputprefix outputsuffix owner() page page2 paranoid parent parent() parents parents2 parents3 parents4 parents5 parse() patchlevels pcreate() ! pemit() pi() player ! For more, see Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! playermem() pmatch() poll() ! ports() pos() pose ! pose2 poss() power() ! powers list powers list2 powers() ! powers2 pueblo pueblo features ! pueblo() puppet puppets ! puppets2 queue quiet ! quit quota() r() ! r-function rand() read regedit() regeditall() regeditalli() regediti() regexp regexp classes regexp classes2 regexp examples regexp syntax --- 286,448 ---- debug2 dec() decrypt() default() delete() desert destroy_ok die() dig() ! digest() dismiss dist2d() ! dist3d() div() doing ! doing() download drop ! drop-tos dynhelp() e() ! For more, see Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! edefault() edit() element() ! elements() elist() elock() ! emit() enactor encrypt() ! endtag() enter enter_ok ! entrances() eq() escape() ! etimefmt() etimefmt2 etimefmt3 eval() evaluation order evaluation2 events examine executor exit() exits exits2 exp() extract() failure fdiv() filter() filterbool() ! findable() first() firstof() ! fixed flag list flag permissions ! flags flags list flags() ! flags2 flip() floating ! floor() floordiv() fmod() ! For more, see Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! fold() fold2 folderstats() ! follow followers() following() ! foreach() foreach2 fraction() ! fullname() function list functions ! functions() functions2 gagged ! gender get get() ! get_eval() give global commands ! globals go going ! goto grab() graball() ! grep() gt() gte() ! halt hasattr() hasattrp() ! hasattrpval() hasattrval() hasflag() ! haspower() hastype() haven ! heavy height() help here hidden() home ! home() homes host() ! For more, see Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! hostname() html html functions ! html() i18n idle ! idle() idlesecs() if() ! ifelse() ilev() iname() ! inc() index index() ! info information functions inherit ! inherit2 insert() interiors ! interiors2 internationalization inum() ! inventory ipaddr() isdaylight() isdbref() isint() isnum() isword() itemize() items() iter() iter2 itext() judge jump_ok jury_ok ! kill lambda last & lastlogout ! last() lastip lastsite ! lattr() lcon() lcstr() For more, see Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! ldelete() leave left() ! lemit() lexits() lflags() ! license light link() ! link_ok linking list functions ! list() listen_parent listening ! listening2 listening3 lists ! lit() ljust() lmath() ! ln() lnum() loc() ! locale localize() locate() ! locate2 lock list lock types ! lock types2 lock() locking ! locklist locks locktypes ! locktypes2 log() logout ! look look2 looping ! lparent() lplayers() lports() ! lpos() lsearch() lsearch2 For more, see Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! lsearchr() lstats() lt() ! lte() lvcon() lvexits() ! lvplayers() lwho() macros ! macros2 mail mail functions ! mail() mail-admin mail-folders ! mail-other mail-reading mail-sending ! maildstats() mailfrom() mailfstats() ! mailstats() mailstatus() mailsubject() ! mailtime() map() master room ! match() matchall() matching ! math functions max() me ! mean() median() member() ! merge() mid() min() ! mistrust mix() mix2 ! mod() modulo() modulus() ! money money() monitor ! ! For more, see Entries-20 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-20 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! mortal move mtime() ! mudname() mul() munge() ! munge2 munge3 mushcode ! mushcode2 mwho() myopic ! name() nand() nattr() ! nearby() neq() new locks ! newbie newbie2 newbie3 ! news next() no_command ! no_leave no_tel no_warn ! noaccents noleave non-standard attributes ! nor() nospoof not() ! nowarn null() num() ! obj() object parents objeval() ! objid() objmem() oemit() ! on-vacation opaque open() ! or() ord() orflags() ! ! For more, see Entries-21 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-21 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! orlflags() orphan outputprefix outputsuffix owner() page page2 paranoid parent parent() parents parents2 parents3 parents4 parents5 parse() patchlevels pcreate() ! pemit() pi() pickrand() ! player playermem() pmatch() ! poll() ports() pos() ! pose pose2 poss() ! power() powers list powers list2 ! powers() powers2 pueblo ! pueblo features pueblo() puppet ! puppets puppets2 queue ! quiet quit quota() ! r() r-function rand() ! For more, see Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! randword() read recv() regedit() regeditall() regeditalli() regediti() regexp regexp classes regexp classes2 regexp examples regexp syntax *************** *** 416,517 **** regexp syntax5 regexp syntax6 regexp syntax7 regexp syntax8 regexps regexps2 registers registers2 regmatch() ! ! For more, see Entries-21 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-21 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! regrab() regraball() regraballi() ! regrabi() regrep() regular expression functions remainder() remit() remove() repeat() replace() rest() restarts() restarttime() restrict restrict2 ! restrict3 reverse() revwords() ! right() rjust() rloc() ! rnum() room room() ! round() royalty rquota ! rules s() s-function ! safe say scan() ! score scramble() screenheight ! screenwidth search() search2 ! secs() secure() semaphores ! semaphores2 semaphores3 semaphores4 ! For more, see Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! semaphores5 semaphores6 semipose session set() setdiff() setinter() setq() setq2 setq3 setr() setting-attributes ! setunion() sex sha1() shared shared players shared players2 shl() shr() shuffle() sign() sin() slay softcode sort() sortby() soundex() soundex2 soundlike() soundslike() space() spellnum() splice() spoofing sqrt() ! squish() stack starttime() ! stats() stddev() step2 ! step() sticky strcat() ! string functions strings strinsert() ! For more, see Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! stripaccents() stripansi() strlen() ! strmatch() sub() subj() ! substitutions substitutions2 substitutions3 ! substitutions4 success suspect ! switch wildcards switch() switch2 ! switchall() switches t() ! table() tag() tagwrap() ! take tan() teach ! tel() tel_ok temple terse textfile() think time functions time() timefmt() timefmt2 timestring() topics ! topics2 translation transparent ! transparent2 trim() trunc() ! trust trust2 type() ! types of objects types2 u() ! For more, see Entries-24 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-24 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! u2 ucstr() udefault() ! ufun() ufun2 uldefault() ! ulocal() ulocal2 unfindable ! unfollow uninspected unregistered ! use user-defined commands user-defined2 ! utctime() utility functions v() ! v-function vadd() val() ! valid() vdim() vdot() ! verbose verbs version() ! visible() visual vmag() ! vmax() vmin() vmul() ! vrml vsub() vunit() ! warnings warnings list warnings list2 ! where() whisper whisper2 ! who width() wildcards ! wipe() with wizard ! ! For more, see Entries-25 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-25 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! wordpos() words() wrap() ! xget() xor() z_tel ! zemit() zfun() zmo ! zmp zmr zone ! zone master objects zone master rooms zone masters ! zone objects zone() zones ! zones2 & &Entries -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- --- 450,554 ---- regexp syntax5 regexp syntax6 regexp syntax7 regexp syntax8 regexps regexps2 registers registers2 regmatch() ! regmatchi() regrab() regraball() ! regraballi() regrabi() regrep() regular expression functions remainder() remit() remove() repeat() replace() rest() restarts() restarttime() restrict restrict2 ! restrict3 reswitch() reswitchall() ! reswitchalli() reswitchi() reverse() ! For more, see Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! revwords() right() rjust() ! rloc() rnum() room ! room() root() round() ! royalty rquota rules ! s() s-function safe ! say scan() score ! scramble() screenheight screenwidth ! search() search2 secs() ! secure() semaphores semaphores2 ! semaphores3 semaphores4 semaphores5 ! semaphores6 semipose sent() session set() setdiff() setinter() setq() setq2 setq3 setr() setting-attributes ! setunion() sex sha0() shared shared players shared players2 + + For more, see Entries-24 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + & Entries-24 + -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- shl() shr() shuffle() sign() sin() slay softcode sort() sortby() soundex() soundex2 soundlike() soundslike() space() spellnum() splice() spoofing sqrt() ! squish() ssl() stack ! starttime() stats() stddev() ! step2 step() sticky ! strcat() string functions strings ! strinsert() stripaccents() stripansi() ! strlen() strmatch() strreplace() ! sub() subj() substitutions ! substitutions2 substitutions3 substitutions4 ! success suspect switch wildcards ! switch() switch2 switchall() ! For more, see Entries-25 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-25 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! switches t() table() ! tag() tagwrap() take ! tan() teach tel() ! tel_ok temple terminfo() terse textfile() think time functions time() timefmt() timefmt2 timestring() topics ! topics2 tr() translation ! transparent transparent2 trim() ! trunc() trust trust2 ! type() types of objects types2 ! u() u2 ucstr() ! udefault() ufun() ufun2 ! uldefault() ulocal() ulocal2 ! unfindable unfollow uninspected ! unregistered use user-defined commands ! ! For more, see Entries-26 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-26 ! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! user-defined2 utctime() utility functions ! v() v-function vadd() ! val() valid() vcross() ! vdim() vdot() verbose ! verbs version() visible() ! visual vmag() vmax() ! vmin() vmul() vrml ! vsub() vunit() warnings ! warnings list warnings list2 where() ! whisper whisper2 who ! width() wildcards wipe() ! with wizard wordpos() ! words() wrap() xget() ! xor() z_tel zemit() ! zfun() zmo zmp ! zmr zone zone master objects ! For more, see Entries-27 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! & Entries-27 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! zone master rooms zone masters zone objects ! zone() zones zones2 & &Entries -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- *** 1_7_7.966/src/wiz.c Thu, 06 May 2004 00:31:00 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2.2.17.1.9.1.13 660) --- 1_7_7.976(w)/src/wiz.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.2.1.1.1.2.2.17.1.9.1.14 660) *************** *** 118,124 **** * \param player the enactor. * \param arg1 name of player whose quota should be set or checked. * \param arg2 amount to set or adjust quota, ignored if checking. ! * \param seq_q if 1, set quota; if 0, check quota. */ void do_quota(dbref player, const char *arg1, const char *arg2, int set_q) --- 118,124 ---- * \param player the enactor. * \param arg1 name of player whose quota should be set or checked. * \param arg2 amount to set or adjust quota, ignored if checking. ! * \param set_q if 1, set quota; if 0, check quota. */ void do_quota(dbref player, const char *arg1, const char *arg2, int set_q) *************** *** 302,310 **** if (controls(player, victim)) return 1; ! /* mortals can't @tel priv'ed players just on basis of location ownership */ ! if (controls(player, loc) && (!Hasprivs(victim) || Owns(player, victim))) return 1; return 0; --- 302,310 ---- if (controls(player, victim)) return 1; ! /* mortals can't @tel HEAVY players just on basis of location ownership */ ! if (controls(player, loc) && (!Heavy(victim) || Owns(player, victim))) return 1; return 0; *** 1_7_7.966/src/warnings.c Wed, 02 Jul 2003 14:19:13 -0500 dunemush (pennmush/b/25_warnings.c 1.21.1.1.1.6 660) --- 1_7_7.976(w)/src/warnings.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/25_warnings.c 1.21.1.1.1.7 660) *************** *** 46,55 **** #define W_LOCK_PROBS 0x100000 /**< Find bad locks */ /* Groups of warnings */ ! #define W_NONE 0 #define W_SERIOUS (W_EXIT_UNLINKED|W_THING_DESC|W_ROOM_DESC|W_PLAYER_DESC|W_LOCK_PROBS) #define W_NORMAL (W_SERIOUS|W_EXIT_ONEWAY|W_EXIT_MULTIPLE|W_EXIT_MSGS) #define W_EXTRA (W_NORMAL|W_THING_MSGS) #define W_ALL (W_EXTRA|W_EXIT_DESC) /** The type that stores the warning bitmask */ --- 46,59 ---- #define W_LOCK_PROBS 0x100000 /**< Find bad locks */ /* Groups of warnings */ ! #define W_NONE 0 /**< No warnings */ ! /** Serious warnings only */ #define W_SERIOUS (W_EXIT_UNLINKED|W_THING_DESC|W_ROOM_DESC|W_PLAYER_DESC|W_LOCK_PROBS) + /** Standard warnings: serious warnings plus others */ #define W_NORMAL (W_SERIOUS|W_EXIT_ONEWAY|W_EXIT_MULTIPLE|W_EXIT_MSGS) + /** Extra warnings: standard warnings plus others */ #define W_EXTRA (W_NORMAL|W_THING_MSGS) + /** All warnings */ #define W_ALL (W_EXTRA|W_EXIT_DESC) /** The type that stores the warning bitmask */ *************** *** 94,99 **** --- 98,109 ---- {NULL, 0} }; + /** Issue a warning about an object. + * \param player player to receive the warning notification. + * \param i object the warning is about. + * \param name name of the warnings. + * \param desc a formatting string for the warning message. + */ void complain(dbref player, dbref i, const char *name, const char *desc, ...) { *** 1_7_7.966/src/utils.c Thu, 06 May 2004 10:27:45 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.18 660) --- 1_7_7.976(w)/src/utils.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.19 660) *************** *** 154,160 **** parse_attrib(player, str, thing, attrib); } ! void free_anon_attrib(ATTR *attrib) { --- 154,162 ---- parse_attrib(player, str, thing, attrib); } ! /** Free the memory allocated for an anonymous attribute. ! * \param attrib pointer to attribute. ! */ void free_anon_attrib(ATTR *attrib) { *************** *** 302,308 **** } ! #define N 624 /* We use the Mersenne Twister PRNG. It's quite good as PRNGS go, * much better than the typical ones provided in system libc's. --- 304,310 ---- } ! #define N 624 /**< PRNG constant */ /* We use the Mersenne Twister PRNG. It's quite good as PRNGS go, * much better than the typical ones provided in system libc's. *************** *** 369,378 **** /* email: matumoto@math.keio.ac.jp */ /* Period parameters */ ! #define M 397 ! #define MATRIX_A 0x9908b0dfUL /* constant vector a */ ! #define UPPER_MASK 0x80000000UL /* most significant w-r bits */ ! #define LOWER_MASK 0x7fffffffUL /* least significant r bits */ static unsigned long mt[N]; /* the array for the state vector */ static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ --- 371,380 ---- /* email: matumoto@math.keio.ac.jp */ /* Period parameters */ ! #define M 397 /**< PRNG constant */ ! #define MATRIX_A 0x9908b0dfUL /**< PRNG constant vector a */ ! #define UPPER_MASK 0x80000000UL /**< PRNG most significant w-r bits */ ! #define LOWER_MASK 0x7fffffffUL /**< PRNG least significant r bits */ static unsigned long mt[N]; /* the array for the state vector */ static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ *** 1_7_7.966/src/timer.c Thu, 06 May 2004 00:31:00 -0500 dunemush (pennmush/b/29_timer.c 1.29.1.7.1.17 660) --- 1_7_7.976(w)/src/timer.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/29_timer.c 1.29.1.7.1.18 660) *************** *** 41,47 **** #include "confmagic.h" ! int on_second = 0; static sig_atomic_t hup_triggered = 0; static sig_atomic_t usr1_triggered = 0; extern char ccom[BUFFER_LEN]; --- 41,47 ---- #include "confmagic.h" ! int on_second = 0; /**< Have we been called at the end of a second? */ static sig_atomic_t hup_triggered = 0; static sig_atomic_t usr1_triggered = 0; extern char ccom[BUFFER_LEN]; *** 1_7_7.966/src/strutil.c Sat, 01 May 2004 13:51:07 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.21.1.2.1.2.1.16 660) --- 1_7_7.976(w)/src/strutil.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.21.1.2.1.2.1.18 660) *************** *** 175,180 **** --- 175,201 ---- return NULL; } + /** Return an initial-cased version of a string in a static buffer. + * \param s string to initial-case. + * \return pointer to a static buffer containing the initial-cased version. + */ + char * + strinitial(const char *s) + { + static char buf1[BUFFER_LEN]; + char *p; + + if (!s || !*s) { + buf1[0] = '\0'; + return buf1; + } + strcpy(buf1, s); + for (p = buf1; *p; p++) + *p = DOWNCASE(*p); + buf1[0] = UPCASE(buf1[0]); + return buf1; + } + /** Return an uppercased version of a string in a static buffer. * \param s string to uppercase. * \return pointer to a static buffer containing the uppercased version. *************** *** 1779,1785 **** /** Return a stringified time in a static buffer * Just like asctime() except without the trailing newlines. ! * \param t the time to format. * \return a pointer to a static buffer with the stringified time. */ char * --- 1800,1806 ---- /** Return a stringified time in a static buffer * Just like asctime() except without the trailing newlines. ! * \param when the time to format. * \return a pointer to a static buffer with the stringified time. */ char * *** 1_7_7.966/src/speech.c Thu, 06 May 2004 00:22:48 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1.1.10.1.2.1.13.2.4.1.1.3.1.1.5.1.1.1.6.1.1.1.3 660) --- 1_7_7.976(w)/src/speech.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1.1.10.1.2.1.13.2.4.1.1.3.1.1.5.1.1.1.6.1.1.1.4 660) *************** *** 1165,1170 **** --- 1165,1171 ---- * \endverbatim * \param player the enactor. * \param tbuf1 the message to emit. + * \param flags bitmask of notification flags. */ void do_emit(dbref player, const char *tbuf1, int flags) *************** *** 1253,1259 **** /** Emit a message to the absolute location of enactor. * \param player the enactor. * \param tbuf1 message to emit. ! * \param silent if 0, give feedback to enactor. */ void do_lemit(dbref player, const char *tbuf1, int flags) --- 1254,1260 ---- /** Emit a message to the absolute location of enactor. * \param player the enactor. * \param tbuf1 message to emit. ! * \param flags bitmask of notification flags. */ void do_lemit(dbref player, const char *tbuf1, int flags) *************** *** 1335,1341 **** * \param player the enactor. * \param arg1 string containing dbref of ZMO. * \param arg2 message to emit. ! * \param nospoof should we honor nospoof? */ void do_zemit(dbref player, const char *arg1, const char *arg2, int flags) --- 1336,1342 ---- * \param player the enactor. * \param arg1 string containing dbref of ZMO. * \param arg2 message to emit. ! * \param flags bitmask of notificati flags. */ void do_zemit(dbref player, const char *arg1, const char *arg2, int flags) *** 1_7_7.966/src/set.c Sat, 01 May 2004 14:18:30 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.1.1.1.1.1.1.1.1.1.1.1.1.30 660) --- 1_7_7.976(w)/src/set.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.1.1.1.1.1.1.1.1.1.1.1.1.31 660) *************** *** 318,324 **** clear_flag_internal(thing, "ROYALTY"); clear_flag_internal(thing, "TRUST"); set_flag_internal(thing, "HALT"); ! Powers(thing) = 0; /* wipe out all powers */ do_halt(thing, "", thing); } else { if ((newowner != player) && Wizard(thing) && !God(player)) { --- 318,325 ---- clear_flag_internal(thing, "ROYALTY"); clear_flag_internal(thing, "TRUST"); set_flag_internal(thing, "HALT"); ! destroy_flag_bitmask(Powers(thing)); ! Powers(thing) = new_flag_bitmask("POWER"); do_halt(thing, "", thing); } else { if ((newowner != player) && Wizard(thing) && !God(player)) { *************** *** 328,334 **** thing); clear_flag_internal(thing, "WIZARD"); } ! if (Powers(thing) || Wizard(thing) || Royalty(thing) || Inherit(thing)) notify_format(player, T ("Warning: @CHOWN/PRESERVE on a object (#%d) with WIZ, ROY, INHERIT, or @power privileges."), --- 329,336 ---- thing); clear_flag_internal(thing, "WIZARD"); } ! if (!null_flagmask("POWER", Powers(thing)) || Wizard(thing) || ! Royalty(thing) || Inherit(thing)) notify_format(player, T ("Warning: @CHOWN/PRESERVE on a object (#%d) with WIZ, ROY, INHERIT, or @power privileges."), *************** *** 437,443 **** clear_flag_internal(thing, "WIZARD"); clear_flag_internal(thing, "ROYALTY"); clear_flag_internal(thing, "TRUST"); ! Powers(thing) = 0; /* wipe out all powers */ } else { if (noisy && (zone != NOTHING)) { if (Hasprivs(thing)) --- 439,446 ---- clear_flag_internal(thing, "WIZARD"); clear_flag_internal(thing, "ROYALTY"); clear_flag_internal(thing, "TRUST"); ! destroy_flag_bitmask(Powers(thing)); ! Powers(thing) = new_flag_bitmask("POWER"); } else { if (noisy && (zone != NOTHING)) { if (Hasprivs(thing)) *** 1_7_7.966/src/predicat.c Sat, 01 May 2004 14:18:30 -0500 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.38.1.7 660) --- 1_7_7.976(w)/src/predicat.c Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.38.1.8 660) *************** *** 685,690 **** --- 685,691 ---- * restrictions on valid characters. Finally, it can't be the same as * an existing player name or alias. * \param name name to check. + * \param player player for permission checks. * \retval 1 name is valid for players. * \retval 0 name is not valid for players. */ *** 1_7_7.966/src/match.c Tue, 27 Apr 2004 14:02:06 -0500 dunemush (pennmush/c/2_match.c 1.24.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.28 660) --- 1_7_7.976(w)/src/match.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/2_match.c 1.24.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.29 660) *************** *** 61,71 **** static int parse_english(const char **name, long *flags); static dbref match_me(const dbref who, const char *name); static dbref match_here(const dbref who, const char *name); #define match_absolute(name) parse_objid(name) static dbref match_player(const dbref matcher, const char *match_name); static dbref choose_thing(const dbref match_who, const int preferred_type, long int flags, dbref thing1, dbref thing2); ! int check_alias(const char *command, const char *list); /* game.c */ /** A wrapper for returning a match, AMBIGUOUS, or NOTHING. --- 61,72 ---- static int parse_english(const char **name, long *flags); static dbref match_me(const dbref who, const char *name); static dbref match_here(const dbref who, const char *name); + /** Convenience alias for parse_objid */ #define match_absolute(name) parse_objid(name) static dbref match_player(const dbref matcher, const char *match_name); static dbref choose_thing(const dbref match_who, const int preferred_type, long int flags, dbref thing1, dbref thing2); ! extern int check_alias(const char *command, const char *list); /* game.c */ /** A wrapper for returning a match, AMBIGUOUS, or NOTHING. *** 1_7_7.966/src/malias.c Sat, 01 May 2004 14:18:30 -0500 dunemush (pennmush/c/3_malias.c 1.36.1.9 660) --- 1_7_7.976(w)/src/malias.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/3_malias.c 1.36.1.11 660) *************** *** 64,72 **** ! int ma_size = 0; ! int ma_top = 0; ! struct mail_alias *malias; /** Privilege table for maliases. */ static PRIV malias_priv_table[] = { --- 64,72 ---- ! int ma_size = 0; /**< Number of maliases */ ! int ma_top = 0; /**< Top of alias array */ ! struct mail_alias *malias; /**< Pointer to linked list of aliases */ /** Privilege table for maliases. */ static PRIV malias_priv_table[] = { *************** *** 119,126 **** * This implements the @malias/create command. * \endverbatim * \param player the enactor. ! * \param arg1 name of malias to create. ! * \param arg2 parameters for creation. */ void do_malias_create(dbref player, char *alias, char *tolist) --- 119,126 ---- * This implements the @malias/create command. * \endverbatim * \param player the enactor. ! * \param alias name of malias to create. ! * \param tolist parameters for creation. */ void do_malias_create(dbref player, char *alias, char *tolist) *** 1_7_7.966/src/log.c Thu, 06 May 2004 00:22:48 -0500 dunemush (pennmush/c/5_log.c 1.10.1.2.2.4.1.1.2.2.1.9 660) --- 1_7_7.976(w)/src/log.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/5_log.c 1.10.1.2.2.4.1.1.2.2.1.11 660) *************** *** 35,41 **** static void start_log(FILE ** fp, const char *filename); static void end_log(const char *filename); ! HASHTAB htab_logfiles; #ifdef macintosh #include "PMInit.h" --- 35,41 ---- static void start_log(FILE ** fp, const char *filename); static void end_log(const char *filename); ! HASHTAB htab_logfiles; /**< Hash table of logfile names and descriptors */ #ifdef macintosh #include "PMInit.h" *** 1_7_7.966/src/lock.c Sat, 01 May 2004 13:41:05 -0500 dunemush (pennmush/c/6_lock.c 1.17.1.13.1.1.1.1.1.15 660) --- 1_7_7.976(w)/src/lock.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/6_lock.c 1.17.1.13.1.1.1.1.1.16 660) *************** *** 76,82 **** const lock_type Control_Lock = "Control"; /**< Name of control lock */ const lock_type Dropto_Lock = "Dropto"; /**< Name of dropto lock */ const lock_type Destroy_Lock = "Destroy"; /**< Name of destroy lock */ ! const lock_type Interact_Lock = "Interact"; /* Define new lock types here. */ /** Table of lock names and permissions */ --- 76,82 ---- const lock_type Control_Lock = "Control"; /**< Name of control lock */ const lock_type Dropto_Lock = "Dropto"; /**< Name of dropto lock */ const lock_type Destroy_Lock = "Destroy"; /**< Name of destroy lock */ ! const lock_type Interact_Lock = "Interact"; /**< Name of interaction lock */ /* Define new lock types here. */ /** Table of lock names and permissions */ *************** *** 132,138 **** {NULL, '\0', 0, 0} }; ! StrTree lock_names; static void free_one_lock_list(lock_list *ll); static lock_type check_lock_type(dbref player, dbref thing, lock_type name); --- 132,138 ---- {NULL, '\0', 0, 0} }; ! StrTree lock_names; /**< String tree of lock names */ static void free_one_lock_list(lock_list *ll); static lock_type check_lock_type(dbref player, dbref thing, lock_type name); *************** *** 862,867 **** --- 862,868 ---- * If it doesn't have a lock at all, set one of '=Zone'. * \param player The object responsible for having the lock checked. * \param zone the object whose lock needs to be checked. + * \param noisy if 1, notify player of automatic locking */ void check_zone_lock(dbref player, dbref zone, int noisy) *** 1_7_7.966/src/game.c Sat, 01 May 2004 13:41:05 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.3.1.7.1.2.2.1.1.7 660) --- 1_7_7.976(w)/src/game.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.3.1.7.1.2.2.1.1.8 660) *************** *** 139,145 **** void do_timestring(char *buff, char **bp, const char *format, unsigned long secs); ! void create_minimal_db(void); /* From db.c */ dbref orator = NOTHING; /**< Last dbref to issue a speech command */ --- 139,145 ---- void do_timestring(char *buff, char **bp, const char *format, unsigned long secs); ! extern void create_minimal_db(void); /* From db.c */ dbref orator = NOTHING; /**< Last dbref to issue a speech command */ *** 1_7_7.966/src/funstr.c Sat, 27 Mar 2004 00:05:47 -0600 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.2.1.1.1.1.1.1.1.1.1.14.1.13 660) --- 1_7_7.976(w)/src/funstr.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.2.1.1.1.1.1.1.1.1.1.14.1.14 660) *************** *** 39,45 **** HASHTAB htab_tag; /**< Hash table of safe html tags */ ! #define MAX_COLS 32 static int wraplen(char *str, int maxlen); static int align_one_line(char *buff, char **bp, int ncols, int cols[MAX_COLS], int calign[MAX_COLS], --- 39,45 ---- HASHTAB htab_tag; /**< Hash table of safe html tags */ ! #define MAX_COLS 32 /**< Maximum number of columns for align() */ static int wraplen(char *str, int maxlen); static int align_one_line(char *buff, char **bp, int ncols, int cols[MAX_COLS], int calign[MAX_COLS], *************** *** 1833,1842 **** #undef initint ! #define AL_LEFT 1 ! #define AL_RIGHT 2 ! #define AL_CENTER 3 ! #define AL_REPEAT 4 static int align_one_line(char *buff, char **bp, int ncols, --- 1833,1842 ---- #undef initint ! #define AL_LEFT 1 /**< Align left */ ! #define AL_RIGHT 2 /**< Align right */ ! #define AL_CENTER 3 /**< Align center */ ! #define AL_REPEAT 4 /**< Repeat column */ static int align_one_line(char *buff, char **bp, int ncols, *** 1_7_7.966/src/funlist.c Sat, 01 May 2004 13:51:07 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.1.1.12.1.14.1.7.1.4 660) --- 1_7_7.976(w)/src/funlist.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.1.1.12.1.14.1.7.1.5 660) *************** *** 2537,2543 **** words = 0; for (n = 0; n < 10; n++) { ! if (n < lists) { wenv[n] = split_token(&lp[n], sep); if (wenv[n]) words++; --- 2537,2543 ---- words = 0; for (n = 0; n < 10; n++) { ! if ((n < lists) && lp[n] && *lp[n]) { wenv[n] = split_token(&lp[n], sep); if (wenv[n]) words++; *************** *** 2558,2564 **** while (1) { words = 0; for (n = 0; n < 10; n++) { ! if (n < lists) { wenv[n] = split_token(&lp[n], sep); if (wenv[n]) words++; --- 2558,2564 ---- while (1) { words = 0; for (n = 0; n < 10; n++) { ! if ((n < lists) && lp[n] && *lp[n]) { wenv[n] = split_token(&lp[n], sep); if (wenv[n]) words++; *** 1_7_7.966/src/flags.c Thu, 06 May 2004 00:31:00 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.3.1.9.1.2.2.1.1.2.1.56.1.12.1.1.1.12 660) --- 1_7_7.976(w)/src/flags.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.3.1.9.1.2.2.1.1.2.1.56.1.12.1.1.1.17 660) *************** *** 68,73 **** --- 68,74 ---- extern PTAB ptab_command; /* Uses flag bitmasks */ + /** Attempt to find a flagspace from its name */ #define Flagspace_Lookup(n,ns) if (!(n = (FLAGSPACE *)hashfind(ns,&htab_flagspaces))) mush_panic("Unable to locate flagspace"); /** This is the old default flag table. We still use it when we have to *************** *** 535,540 **** --- 536,542 ---- * reads the aliases, and then does any additional flag adding that * needs to happen. * \param in file pointer to read from. + * \param ns name of namespace to search. */ void flag_read_all(FILE * in, const char *ns) *************** *** 691,696 **** --- 693,699 ---- add_flag("MISTRUST", 'm', TYPE_THING | TYPE_EXIT | TYPE_ROOM, F_INHERIT, F_INHERIT); add_flag("ORPHAN", 'i', NOTYPE, F_ANY, F_ANY); + add_flag("HEAVY", '\0', NOTYPE, F_ROYAL, F_ANY); if ((f = match_flag("TERSE"))) f->type |= TYPE_THING; if ((f = match_flag("PUPPET"))) *************** *** 840,845 **** --- 843,849 ---- * This function allocates a new flag bitmask of sufficient length * to include the current number of flags, and copies all the flags * from a given bitmask into the new bitmask. + * \param ns name of namespace to search. * \param given a flag bitmask. * \return a newly allocated clone of the given bitmask. */ *************** *** 858,863 **** --- 862,868 ---- /** Copy one flag bitmask into another (already allocated). * This is a convenience function - it's memcpy for flag bitmasks. + * \param ns name of namespace to search. * \param dest destination bitmask for the given data. * \param given a flag bitmask to copy. */ *************** *** 937,942 **** --- 942,948 ---- /** Test a set of bits in one bitmask against all those in another. * This function determines if one bitmask contains (at least) * all of the bits set in another bitmask. + * \param ns name of namespace to search. * \param source the bitmask to test. * \param bitmask the bitmask containing the bits to look for. * \retval 1 all bits in bitmask are set in source. *************** *** 955,960 **** --- 961,967 ---- } /** Test to see if a bitmask is entirely 0 bits. + * \param ns name of namespace to search. * \param source the bitmask to test. * \retval 1 all bits in bitmask are 0. * \retval 0 at least one bit in bitmask is 1. *************** *** 974,979 **** --- 981,987 ---- /** Test a set of bits in one bitmask against any of those in another. * This function determines if one bitmask contains any * of the bits set in another bitmask. + * \param ns name of namespace to search. * \param source the bitmask to test. * \param bitmask the bitmask containing the bits to look for. * \retval 1 at least one bit in bitmask is set in source. *************** *** 993,998 **** --- 1001,1007 ---- /** Produce a space-separated list of flag names, given a bitmask. * This function returns the string representation of a flag bitmask. + * \param ns name of namespace to search. * \param bitmask a flag bitmask. * \param privs dbref for privilege checking for flag visibility. * \param thing object for which bitmask is the flag bitmask. *************** *** 1029,1034 **** --- 1038,1044 ---- /** Convert a flag list string to a bitmask. * Given a space-separated list of flag names, convert them to * a bitmask array (which we malloc) and return it. + * \param ns name of namespace to search. * \param str list of flag names. * \return a newly allocated flag bitmask. */ *************** *** 1261,1266 **** --- 1271,1278 ---- * \param player looker, for permission checking. * \param thing object being decompiled. * \param name name by which object is referred to in the decompile. + * \param ns name of namespace to search. + * \param command name of command used to set the 'flag'. */ void decompile_flags_generic(dbref player, dbref thing, const char *name, *************** *** 1281,1286 **** --- 1293,1299 ---- /** Set or clear flags on an object, without permissions/hear checking. * This function is for server internal use, only, when a flag should * be set or cleared unequivocally. + * \param ns name of namespace to search. * \param thing object on which to set or clear flag. * \param flag name of flag to set or clear. * \param negate if 1, clear the flag, if 0, set the flag. *************** *** 1514,1519 **** --- 1527,1533 ---- * This function is used by orflags and andflags to check to see * if an object has one or all of the flags signified by a list * of flag characters. + * \param ns name of namespace to search. * \param player the object checking, for permissions * \param it the object on which to check for flags. * \param fstr string of flag characters to check for. *************** *** 1611,1616 **** --- 1625,1631 ---- * This function is used by orlflags and andlflags to check to see * if an object has one or all of the flags signified by a list * of flag names. + * \param ns name of namespace to search. * \param player the object checking, for permissions * \param it the object on which to check for flags. * \param fstr string of flag names, space-separated, to check for. *************** *** 1732,1737 **** --- 1747,1753 ---- * call in flaglocal.c if you're writing a hardcoded system patch that * needs to add its own flags. It will not add the same flag twice. * \endverbatim + * \param ns name of namespace to add flag to. * \param name flag name. * \param letter flag character (or ascii 0) * \param type mask of object types to which the flag applies. *************** *** 1786,1791 **** --- 1802,1808 ---- * \verbatim * This function implements @flag . * \endverbatim + * \param ns name of namespace to search. * \param player the enactor. * \param name name of the flag to describe. */ *************** *** 1805,1811 **** if (!f && God(player)) f = match_flag_ns(n, name); if (!f) { ! notify(player, T("No such flag.")); return; } notify_format(player, " Name: %s", f->name); --- 1822,1828 ---- if (!f && God(player)) f = match_flag_ns(n, name); if (!f) { ! notify_format(player, T("No such %s."), strlower(ns)); return; } notify_format(player, " Name: %s", f->name); *************** *** 1825,1830 **** --- 1842,1848 ---- * * If no comma is given, use for both. * \endverbatim + * \param ns name of namespace to search. * \param player the enactor. * \param name name of flag to modify. * \param args_right array of arguments on the right of the equal sign. *************** *** 1843,1853 **** } n = hashfind(ns, &htab_flagspaces); if (!(f = flag_hash_lookup(n, name, NOTYPE))) { ! notify(player, T("No such flag.")); return; } if (!args_right[1] || !*args_right[1]) { ! notify(player, T("How do you want to restrict that flag?")); return; } if (!strcasecmp(args_right[1], "any")) { --- 1861,1872 ---- } n = hashfind(ns, &htab_flagspaces); if (!(f = flag_hash_lookup(n, name, NOTYPE))) { ! notify_format(player, T("No such %s."), strlower(ns)); return; } if (!args_right[1] || !*args_right[1]) { ! notify_format(player, T("How do you want to restrict that %s?"), ! strlower(ns)); return; } if (!strcasecmp(args_right[1], "any")) { *************** *** 1874,1880 **** } f->perms = perms; f->negate_perms = negate_perms; ! notify_format(player, T("Permissions on %s flag set."), f->name); } /** Change the type of a flag. --- 1893,1899 ---- } f->perms = perms; f->negate_perms = negate_perms; ! notify_format(player, T("Permissions on %s %s set."), f->name, strlower(ns)); } /** Change the type of a flag. *************** *** 1905,1915 **** } n = hashfind(ns, &htab_flagspaces); if (!(f = flag_hash_lookup(n, name, NOTYPE))) { ! notify(player, T("No such flag.")); return; } if (!type_string || !*type_string) { ! notify(player, T("What type do you want to make that flag?")); return; } if (!strcasecmp(type_string, "any")) { --- 1924,1935 ---- } n = hashfind(ns, &htab_flagspaces); if (!(f = flag_hash_lookup(n, name, NOTYPE))) { ! notify_format(player, T("No such %s."), strlower(ns)); return; } if (!type_string || !*type_string) { ! notify_format(player, T("What type do you want to make that %s?"), ! strlower(ns)); return; } if (!strcasecmp(type_string, "any")) { *************** *** 1925,1939 **** */ for (it = 0; it < db_top; it++) { if (!(type & Typeof(it)) && has_flag_ns(n, it, f)) { ! notify(player, ! T ! ("Objects of other types already have this flag set. Search for them and remove the flag first.")); return; } } } f->type = type; ! notify_format(player, T("Type of %s flag set."), f->name); } /** Add a new flag --- 1945,1960 ---- */ for (it = 0; it < db_top; it++) { if (!(type & Typeof(it)) && has_flag_ns(n, it, f)) { ! notify_format(player, ! T ! ("Objects of other types already have this %s set. Search for them and remove it first."), ! strlower(ns)); return; } } } f->type = type; ! notify_format(player, T("Type of %s %s set."), f->name, strlower(ns)); } /** Add a new flag *************** *** 1968,1982 **** return; } if (!name || !*name) { ! notify(player, T("You must provide a name for the flag.")); return; } if (strlen(name) == 1) { ! notify(player, T("Flag names must be longer than one character.")); return; } if (strchr(name, ' ')) { ! notify(player, T("Flag names may not contain spaces.")); return; } Flagspace_Lookup(n, ns); --- 1989,2006 ---- return; } if (!name || !*name) { ! notify_format(player, T("You must provide a name for the %s."), ! strlower(ns)); return; } if (strlen(name) == 1) { ! notify_format(player, T("%s names must be longer than one character."), ! strinitial(ns)); return; } if (strchr(name, ' ')) { ! notify_format(player, T("%s names may not contain spaces."), ! strinitial(ns)); return; } Flagspace_Lookup(n, ns); *************** *** 1987,1993 **** } if (args_right[1]) { if (strlen(args_right[1]) > 1) { ! notify(player, T("Flag characters must be single characters.")); return; } letter = *args_right[1]; --- 2011,2018 ---- } if (args_right[1]) { if (strlen(args_right[1]) > 1) { ! notify_format(player, T("%s characters must be single characters."), ! strinitial(ns)); return; } letter = *args_right[1]; *************** *** 2003,2009 **** /* Is this letter already in use for this type? */ if (*args_right[1]) { if ((f = letter_to_flagptr(n, *args_right[1], type))) { ! notify_format(player, T("Letter conflicts with the %s flag."), f->name); return; } } --- 2028,2035 ---- /* Is this letter already in use for this type? */ if (*args_right[1]) { if ((f = letter_to_flagptr(n, *args_right[1], type))) { ! notify_format(player, T("Letter conflicts with the %s %s."), f->name, ! strlower(ns)); return; } } *************** *** 2038,2044 **** if ((f = match_flag_ns(n, name))) do_flag_info(ns, player, name); else ! notify(player, T("Unknown failure adding flag.")); } /** Alias a flag. --- 2064,2070 ---- if ((f = match_flag_ns(n, name))) do_flag_info(ns, player, name); else ! notify_format(player, T("Unknown failure adding %s."), strlower(ns)); } /** Alias a flag. *************** *** 2064,2090 **** return; } if (strlen(alias) == 1) { ! notify(player, T("Flag aliases must be longer than one character.")); return; } if (strchr(alias, ' ')) { ! notify(player, T("Flag aliases may not contain spaces.")); return; } n = hashfind(ns, &htab_flagspaces); f = match_flag_ns(n, alias); if (f) { ! notify_format(player, T("That alias already matches the %s flag."), ! f->name); return; } f = match_flag_ns(n, name); if (!f) { ! notify(player, T("I don't know that flag.")); return; } if (f->perms & F_DISABLED) { ! notify(player, T("That flag is disabled.")); return; } /* Insert the flag in the ptab by the given alias */ --- 2090,2118 ---- return; } if (strlen(alias) == 1) { ! notify_format(player, T("%s aliases must be longer than one character."), ! strinitial(ns)); return; } if (strchr(alias, ' ')) { ! notify_format(player, T("%s aliases may not contain spaces."), ! strinitial(ns)); return; } n = hashfind(ns, &htab_flagspaces); f = match_flag_ns(n, alias); if (f) { ! notify_format(player, T("That alias already matches the %s %s."), ! f->name, strlower(ns)); return; } f = match_flag_ns(n, name); if (!f) { ! notify_format(player, T("I don't know that %s."), strlower(ns)); return; } if (f->perms & F_DISABLED) { ! notify_format(player, T("That %s is disabled."), strlower(ns)); return; } /* Insert the flag in the ptab by the given alias */ *************** *** 2117,2145 **** Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify(player, T("I don't know that flag.")); return; } if (letter && *letter) { FLAG *other; if (strlen(letter) > 1) { ! notify(player, T("Flag characters must be single characters.")); return; } if ((other = letter_to_flagptr(n, *letter, NOTYPE))) { ! notify_format(player, T("Letter conflicts with the %s flag."), ! other->name); return; } f->letter = *letter; ! notify_format(player, T("Letter for flag %s set to '%c'."), ! f->name, *letter); } else { /* Clear a flag */ f->letter = '\0'; ! notify_format(player, T("Letter for flag %s cleared."), f->name); } } --- 2145,2175 ---- Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify_format(player, T("I don't know that %s."), strlower(ns)); return; } if (letter && *letter) { FLAG *other; if (strlen(letter) > 1) { ! notify_format(player, T("%s characters must be single characters."), ! strinitial(ns)); return; } if ((other = letter_to_flagptr(n, *letter, NOTYPE))) { ! notify_format(player, T("Letter conflicts with the %s %s."), ! other->name, strlower(ns)); return; } f->letter = *letter; ! notify_format(player, T("Letter for %s %s set to '%c'."), ! strlower(ns), f->name, *letter); } else { /* Clear a flag */ f->letter = '\0'; ! notify_format(player, T("Letter for %s %s cleared."), strlower(ns), ! f->name); } } *************** *** 2167,2182 **** Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify(player, T("I don't know that flag.")); return; } if (f->perms & F_DISABLED) { ! notify(player, T("That flag is already disabled.")); return; } /* Do it. */ f->perms |= F_DISABLED; ! notify_format(player, T("Flag %s disabled."), f->name); } /** Delete a flag. --- 2197,2212 ---- Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify_format(player, T("I don't know that %s."), strlower(ns)); return; } if (f->perms & F_DISABLED) { ! notify_format(player, T("That %s is already disabled."), strlower(ns)); return; } /* Do it. */ f->perms |= F_DISABLED; ! notify_format(player, T("%s %s disabled."), strinitial(ns), f->name); } /** Delete a flag. *************** *** 2206,2212 **** n = (FLAGSPACE *) hashfind(ns, &htab_flagspaces); f = ptab_find_exact(n->tab, name); if (!f) { ! notify(player, T("I don't know that flag.")); return; } if (f->perms & F_INTERNAL) { --- 2236,2242 ---- n = (FLAGSPACE *) hashfind(ns, &htab_flagspaces); f = ptab_find_exact(n->tab, name); if (!f) { ! notify_format(player, T("I don't know that %s."), strlower(ns)); return; } if (f->perms & F_INTERNAL) { *************** *** 2236,2242 **** n->flags[f->bitpos] = NULL; /* Remove the flag from the ptab */ ptab_delete(n->tab, f->name); ! notify_format(player, T("Flag %s deleted."), f->name); /* Free the flag. */ mush_free((char *) f->name, "flag name"); mush_free(f, "flag"); --- 2266,2272 ---- n->flags[f->bitpos] = NULL; /* Remove the flag from the ptab */ ptab_delete(n->tab, f->name); ! notify_format(player, T("%s %s deleted."), strinitial(ns), f->name); /* Free the flag. */ mush_free((char *) f->name, "flag name"); mush_free(f, "flag"); *************** *** 2263,2278 **** Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify(player, T("I don't know that flag.")); return; } if (!(f->perms & F_DISABLED)) { ! notify(player, T("That flag is not disabled.")); return; } /* Do it. */ f->perms &= ~F_DISABLED; ! notify_format(player, T("Flag %s enabled."), f->name); } --- 2293,2308 ---- Flagspace_Lookup(n, ns); f = match_flag_ns(n, name); if (!f) { ! notify_format(player, T("I don't know that %s."), strlower(ns)); return; } if (!(f->perms & F_DISABLED)) { ! notify_format(player, T("That %s is not disabled."), strlower(ns)); return; } /* Do it. */ f->perms &= ~F_DISABLED; ! notify_format(player, T("%s %s enabled."), strinitial(ns), f->name); } *************** *** 2303,2308 **** --- 2333,2339 ---- /** Return a list of all flags. + * \param ns name of namespace to search. * \param name wildcard to match against flag names, or NULL for all. * \param privs the looker, for permission checking. * \param which a bitmask of 0x1 (flag chars) and 0x2 (flag names). *** 1_7_7.966/src/extchat.c Sun, 02 May 2004 16:46:16 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.2.1.1.2.1.1.2.1.1.1.1.1.1.1.1.1.16.1.12 660) --- 1_7_7.976(w)/src/extchat.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.2.1.1.2.1.1.2.1.1.1.1.1.1.1.1.1.16.1.13 660) *************** *** 3190,3196 **** } ! /* Evaluate a channel lock with %0 set to the channel name. * \param c the channel to test. * \param p the object trying to pass the lock. * \param type the type of channel lock to test. --- 3190,3196 ---- } ! /** Evaluate a channel lock with %0 set to the channel name. * \param c the channel to test. * \param p the object trying to pass the lock. * \param type the type of channel lock to test. *** 1_7_7.966/src/destroy.c Sat, 01 May 2004 14:18:30 -0500 dunemush (pennmush/c/24_destroy.c 1.24.2.2.1.3.1.1.1.1.1.1.1.4.1.1.1.1.1.11 660) --- 1_7_7.976(w)/src/destroy.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/24_destroy.c 1.24.2.2.1.3.1.1.1.1.1.1.1.4.1.1.1.1.1.12 660) *************** *** 720,726 **** Type(thing) = TYPE_GARBAGE; destroy_flag_bitmask(Flags(thing)); Flags(thing) = NULL; ! Powers(thing) = 0; Location(thing) = NOTHING; set_name(thing, "Garbage"); Exits(thing) = NOTHING; --- 720,727 ---- Type(thing) = TYPE_GARBAGE; destroy_flag_bitmask(Flags(thing)); Flags(thing) = NULL; ! destroy_flag_bitmask(Powers(thing)); ! Powers(thing) = NULL; Location(thing) = NOTHING; set_name(thing, "Garbage"); Exits(thing) = NOTHING; *** 1_7_7.966/src/create.c Sun, 19 Oct 2003 09:57:03 -0500 dunemush (pennmush/c/27_create.c 1.27.1.3.1.1.1.1.1.1.1.2.1.1.1.1.1.24 660) --- 1_7_7.976(w)/src/create.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/27_create.c 1.27.1.3.1.1.1.1.1.1.1.2.1.1.1.1.1.25 660) *************** *** 503,514 **** clear_flag_internal(clone, "WIZARD"); clear_flag_internal(clone, "ROYALTY"); Warnings(clone) = 0; /* zap warnings */ ! Powers(clone) = 0; /* zap powers */ ! } else if (Wizard(clone) || ! Royalty(clone) || Warnings(clone) || Powers(clone)) { ! notify(player, ! T ! ("Warning: @CLONE/PRESERVE on an object with WIZ, ROY, @powers, or @warnings.")); } /* We give the clone the same modification time that its * other clone has, but update the creation time */ --- 503,516 ---- clear_flag_internal(clone, "WIZARD"); clear_flag_internal(clone, "ROYALTY"); Warnings(clone) = 0; /* zap warnings */ ! Powers(clone) = new_flag_bitmask("POWER"); /* zap powers */ ! } else { ! Powers(clone) = clone_flag_bitmask("POWER", Powers(thing)); ! if (Wizard(clone) || Royalty(clone) || Warnings(clone) || ! !null_flagmask("POWER", Powers(clone))) ! notify(player, ! T ! ("Warning: @CLONE/PRESERVE on an object with WIZ, ROY, @powers, or @warnings.")); } /* We give the clone the same modification time that its * other clone has, but update the creation time */ *************** *** 626,640 **** clear_flag_internal(clone, "WIZARD"); clear_flag_internal(clone, "ROYALTY"); Warnings(clone) = 0; /* zap warnings */ ! Powers(clone) = 0; /* zap powers */ } else { Warnings(clone) = Warnings(thing); ! Powers(clone) = Powers(thing); } ! if (Wizard(clone) || Royalty(clone) || Warnings(clone) || Powers(clone)) notify(player, T ! ("Warning: @CLONE/PRESERVE on an exit with WIZ, ROY, @Powers, or Warnings.")); notify_format(player, T("Cloned: Exit #%d."), clone); local_data_clone(clone, thing); return clone; --- 628,643 ---- clear_flag_internal(clone, "WIZARD"); clear_flag_internal(clone, "ROYALTY"); Warnings(clone) = 0; /* zap warnings */ ! Powers(clone) = new_flag_bitmask("POWER"); /* zap powers */ } else { Warnings(clone) = Warnings(thing); ! Powers(clone) = clone_flag_bitmask("POWER", Powers(thing)); } ! if (Wizard(clone) || Royalty(clone) || Warnings(clone) || ! !null_flagmask("POWER", Powers(clone))) notify(player, T ! ("Warning: @CLONE/PRESERVE on an exit with WIZ, ROY, @powers, or Warnings.")); notify_format(player, T("Cloned: Exit #%d."), clone); local_data_clone(clone, thing); return clone; *** 1_7_7.966/src/command.c Sat, 01 May 2004 14:18:30 -0500 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1.1.1.1.2.1.1.1.1.1.5.1.2.1.1.1.1.1.2.1.3.1.10.1.1.3.52 660) --- 1_7_7.976(w)/src/command.c Tue, 11 May 2004 16:00:05 -0500 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1.1.1.1.2.1.1.1.1.1.5.1.2.1.1.1.1.1.2.1.3.1.10.1.1.3.54 660) *************** *** 445,451 **** * \param name name of the command. * \param type types of objects that can use the command. * \param flagstr space-separated list of flags sufficient to use command. ! * \param powers mask of powers sufficient to use command. * \param switchstr space-separated list of switches for the command. * \param func function to call when command is executed. * \return pointer to a newly allocated COMMAND_INFO entry or NULL. --- 445,451 ---- * \param name name of the command. * \param type types of objects that can use the command. * \param flagstr space-separated list of flags sufficient to use command. ! * \param powerstr space-separated list of powers sufficient to use command. * \param switchstr space-separated list of switches for the command. * \param func function to call when command is executed. * \return pointer to a newly allocated COMMAND_INFO entry or NULL. *************** *** 801,806 **** --- 801,807 ---- return NULL; } + /** A handy macro to free up the command_parse-allocated variables */ #define command_parse_free_args \ mush_free((Malloc_t) command, "string"); \ mush_free((Malloc_t) swtch, "string"); \ *************** *** 1575,1586 **** check_flags = cmd->flagmask && !null_flagmask("FLAG", cmd->flagmask); check_powers = cmd->powers && !null_flagmask("POWER", cmd->powers); ! if (!((!check_powers && !check_flags) || ! (check_powers && has_any_powers_by_mask(player, cmd->powers)) || ! (check_flags && has_any_flags_by_mask(player, cmd->flagmask)))) { notify(player, T("Permission denied.")); - ok = 0; - } return ok; } --- 1576,1587 ---- check_flags = cmd->flagmask && !null_flagmask("FLAG", cmd->flagmask); check_powers = cmd->powers && !null_flagmask("POWER", cmd->powers); ! if (check_flags) ! ok = !!(has_any_flags_by_mask(player, cmd->flagmask)); ! if (!ok && check_powers) ! ok = !!(has_any_powers_by_mask(player, cmd->powers)); ! if (!ok) notify(player, T("Permission denied.")); return ok; } *** 1_7_7.966/src/bsd.c Thu, 06 May 2004 00:31:00 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.8.2.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.25 660) --- 1_7_7.976(w)/src/bsd.c Tue, 11 May 2004 16:00:04 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.8.2.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.27 660) *************** *** 222,229 **** /* Telnet codes */ #define IAC 255 /**< interpret as command: */ ! #define NOP 241 ! #define AYT 246 #define DONT 254 /**< you are not to use option */ #define DO 253 /**< please, you use option */ #define WONT 252 /**< I won't use option */ --- 222,229 ---- /* Telnet codes */ #define IAC 255 /**< interpret as command: */ ! #define NOP 241 /**< no operation */ ! #define AYT 246 /**< are you there? */ #define DONT 254 /**< you are not to use option */ #define DO 253 /**< please, you use option */ #define WONT 252 /**< I won't use option */ *************** *** 309,315 **** static int sock; #ifdef HAS_OPENSSL static int sslsock = 0; ! SSL *ssl_master_socket = NULL; #endif static int ndescriptors = 0; #ifdef WIN32 --- 309,315 ---- static int sock; #ifdef HAS_OPENSSL static int sslsock = 0; ! SSL *ssl_master_socket = NULL; /**< Master SSL socket for ssl port */ #endif static int ndescriptors = 0; #ifdef WIN32 *************** *** 517,522 **** --- 517,527 ---- void mainthread(int argc, char **argv) #else + /** The main function. + * \param argc number of arguments. + * \param argv vector of arguments. + * \return exit code. + */ int main(int argc, char **argv) #endif /* WIN32 */ *** 1_7_7.966/src/boolexp.c Wed, 05 May 2004 22:47:45 -0500 dunemush (pennmush/c/39_boolexp.c 1.1.1.17.1.1.1.13.1.2.1.18 660) --- 1_7_7.976(w)/src/boolexp.c Tue, 11 May 2004 16:00:04 -0500 dunemush (pennmush/c/39_boolexp.c 1.1.1.17.1.1.1.13.1.2.1.19 660) *************** *** 1798,1805 **** /* Warnings-related stuff here because I don't want to export details of the bytecode outside this file. */ ! #define W_UNLOCKED 0x1 ! #define W_LOCKED 0x2 /** Check to see if a lock is considered possibly unlocked or not. * This is really simple-minded for efficiency. Basically, if it's * --- 1798,1805 ---- /* Warnings-related stuff here because I don't want to export details of the bytecode outside this file. */ ! #define W_UNLOCKED 0x1 /**< Returned if a boolexp is unlocked */ ! #define W_LOCKED 0x2 /**< Returned if a boolexp is locked */ /** Check to see if a lock is considered possibly unlocked or not. * This is really simple-minded for efficiency. Basically, if it's * *** 1_7_7.966/src/attrib.c Sun, 02 May 2004 11:58:26 -0500 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.2.1.1.1.3.1.1.1.1.1.1.3.43.1.3 660) --- 1_7_7.976(w)/src/attrib.c Tue, 11 May 2004 16:00:04 -0500 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.2.1.1.1.3.1.1.1.1.1.1.3.43.1.4 660) *************** *** 171,177 **** /** Convert an attribute flag bitmask into a list of the full * names of the flags. ! * \param flags the attribute flags to display. * \return a pointer to a static buffer with the full names of the flags. */ const char * --- 171,177 ---- /** Convert an attribute flag bitmask into a list of the full * names of the flags. ! * \param mask the bitmask of attribute flags to display. * \return a pointer to a static buffer with the full names of the flags. */ const char * *************** *** 1371,1377 **** * player is NOTHING, then we're doing a generic mortal visibility check. * \param player the player trying to do the read. * \param obj the object targetted for the read (may be a child of a parent!). ! * \param attr the attribute being interrogated. * \retval 0 if the player cannot read the attribute. * \retval 1 if the player can read the attribute. */ --- 1371,1377 ---- * player is NOTHING, then we're doing a generic mortal visibility check. * \param player the player trying to do the read. * \param obj the object targetted for the read (may be a child of a parent!). ! * \param atr the attribute being interrogated. * \retval 0 if the player cannot read the attribute. * \retval 1 if the player can read the attribute. */ *** 1_7_7.966/hdrs/version.h Thu, 06 May 2004 10:41:14 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.34 660) --- 1_7_7.976(w)/hdrs/version.h Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.35 660) *************** *** 1,3 **** ! #define VERSION "PennMUSH version 1.7.7 patchlevel 30 [05/06/2004]" ! #define SHORTVN "PennMUSH 1.7.7p30" ! #define NUMVERSION 001007007030 --- 1,3 ---- ! #define VERSION "PennMUSH version 1.7.7 patchlevel 31 [05/11/2004]" ! #define SHORTVN "PennMUSH 1.7.7p31" ! #define NUMVERSION 001007007031 *** 1_7_7.966/hdrs/shs.h Thu, 26 Feb 2004 14:50:08 -0600 dunemush (pennmush/c/48_shs.h 1.7 660) --- 1_7_7.976(w)/hdrs/shs.h Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/c/48_shs.h 1.9 660) *************** *** 26,32 **** */ typedef struct { LONG digest[5]; /**< message digest */ ! LONG countLo, countHi; /**< 64-bit bit count */ LONG data[16]; /**< SHS data buffer */ BYTE reverse_wanted; /**< true to reverse (little_endian) false to not */ } SHS_INFO; --- 26,33 ---- */ typedef struct { LONG digest[5]; /**< message digest */ ! LONG countLo; /**< 64-bit bit count, low half */ ! LONG countHi; /**< 64-bit bit count, high half */ LONG data[16]; /**< SHS data buffer */ BYTE reverse_wanted; /**< true to reverse (little_endian) false to not */ } SHS_INFO; *** 1_7_7.966/hdrs/externs.h Wed, 05 May 2004 22:48:31 -0500 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1.1.2.1.6.1.3.1.4.3.1.1.1.1.18.1.8.1.1.1.9 660) --- 1_7_7.976(w)/hdrs/externs.h Tue, 11 May 2004 16:00:08 -0500 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1.1.2.1.6.1.3.1.4.3.1.1.1.1.18.1.8.1.1.1.12 660) *************** *** 41,48 **** /* these symbols must be defined by the interface */ extern time_t mudtime; ! #define FOPEN_READ "rb" ! #define FOPEN_WRITE "wb" extern int shutdown_flag; /* if non-zero, interface should shut down */ extern void emergency_shutdown(void); --- 41,48 ---- /* these symbols must be defined by the interface */ extern time_t mudtime; ! #define FOPEN_READ "rb" /**< Arguments to fopen when reading */ ! #define FOPEN_WRITE "wb" /**< Arguments to fopen when writing */ extern int shutdown_flag; /* if non-zero, interface should shut down */ extern void emergency_shutdown(void); *************** *** 97,118 **** char *least_idle_hostname(dbref player); /* The #defs for our notify_anything hacks.. Errr. Functions */ ! #define NA_NORELAY 0x0001 ! #define NA_NOENTER 0x0002 ! #define NA_NOLISTEN 0x0004 /* Implies NORELAY. Sorta. */ ! #define NA_NOPENTER 0x0010 ! #define NA_PONLY 0x0020 ! #define NA_PUPPET 0x0040 /* Ok to puppet */ ! #define NA_PUPPET2 0x0080 /* Message to a player from a puppet */ ! #define NA_MUST_PUPPET 0x0100 /* Ok to puppet even in same room */ ! #define NA_INTER_HEAR 0x0200 /* Message is auditory in nature */ ! #define NA_INTER_SEE 0x0400 /* Message is visual in nature */ ! #define NA_INTER_PRESENCE 0x0800 /* Message is about presence */ ! #define NA_NOSPOOF 0x1000 /* Message comes via a NO_SPOOF object. */ ! #define NA_PARANOID 0x2000 /* Message comes via a PARANOID object. */ ! #define NA_NOPREFIX 0x4000 /* Don't use @prefix when forwarding */ ! #define NA_INTERACTION (NA_INTER_HEAR|NA_INTER_SEE|NA_INTER_PRESENCE) /* Message follows interaction rules */ ! #define NA_SPOOF 0x8000 /* @ns* message, overrides NOSPOOF */ /** A notify_anything lookup function type definition */ typedef dbref (*na_lookup) (dbref, void *); --- 97,118 ---- char *least_idle_hostname(dbref player); /* The #defs for our notify_anything hacks.. Errr. Functions */ ! #define NA_NORELAY 0x0001 /**< Don't relay sound */ ! #define NA_NOENTER 0x0002 /**< No newline at end */ ! #define NA_NOLISTEN 0x0004 /**< Implies NORELAY. Sorta. */ ! #define NA_NOPENTER 0x0010 /