This is patch24 to PennMUSH 1.7.7. After applying this patch, you will have version 1.7.7p24 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.7-patch24 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: Minor Changes: * The puppet flag can now apply to rooms. Suggested by Philip Mak. * @tel/inside allows priv'd players to teleport into another player's inventory (instead of to their location). Suggested by Philip Mak. Fixes: * Startups from a created minimal.db did not properly initialize the objdata htab, so subsequent use of that htab (e.g. adding players to channels) would crash. Report by [LdW]. * Help fixes by BladedThoth@M*U*S*H and Philip Mak. * Attempting to clear a branch attribute when it has leaves now gives a better message. Also better message for inability to write an attribute due to tree issues. Patch by Luke@M*U*S*H. * Bug in @debugforwardlist fixed by Luke@M*U*S*H. Prereq: 1.7.7p23 *** 1_7_7.693/Patchlevel Fri, 10 Oct 2003 07:58:26 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.25 600) --- 1_7_7.705(w)/Patchlevel Sun, 19 Oct 2003 10:38:31 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.26 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.7p23 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.7p24 *** 1_7_7.693/CHANGES.177 Fri, 10 Oct 2003 07:58:26 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.200 600) --- 1_7_7.705(w)/CHANGES.177 Mon, 20 Oct 2003 21:28:57 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.208 600) *************** *** 7,16 **** [TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian) [TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek) [SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos) ! [LdW] is Luuk de Waard, a PennMUSH developer (aka Halatir) [RLM] is Ralph Melton, a former PennMUSH developer [NJG] is Nick Gammon, the Win32 porter - [EEH] is Ervin Hearn III, a Win32 porter (aka Noltar) [DW] is Dan Williams, the MacOS porter [2.2] refers to code which originated with the TinyMUSH 2.2 developers [3] refers to code by (or inspired by) TinyMUSH 3.0 --- 7,16 ---- [TN] is Thorvald Natvig, a PennMUSH developer (aka Trivian) [TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek) [SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos) ! [EEH] is Ervin Hearn III, a PennMUSH developer (aka Noltar) ! [LdW] is Luuk de Waard, a former PennMUSH developer (aka Halatir) [RLM] is Ralph Melton, a former PennMUSH developer [NJG] is Nick Gammon, the Win32 porter [DW] is Dan Williams, the MacOS porter [2.2] refers to code which originated with the TinyMUSH 2.2 developers [3] refers to code by (or inspired by) TinyMUSH 3.0 *************** *** 18,23 **** --- 18,40 ---- ========================================================================== + Version 1.7.7 patchlevel 24 October 19, 2003 + + Minor Changes: + * The puppet flag can now apply to rooms. Suggested by Philip Mak. + * @tel/inside allows priv'd players to teleport into another player's + inventory (instead of to their location). Suggested by Philip Mak. + Fixes: + * Startups from a created minimal.db did not properly initialize + the objdata htab, so subsequent use of that htab (e.g. adding + players to channels) would crash. Report by [LdW]. + * Help fixes by BladedThoth@M*U*S*H and Philip Mak. + * Attempting to clear a branch attribute when it has leaves now + gives a better message. Also better message for inability to + write an attribute due to tree issues. Patch by Luke@M*U*S*H. + * Bug in @debugforwardlist fixed by Luke@M*U*S*H. + + Version 1.7.7 patchlevel 23 October 10, 2003 Major Changes: *** 1_7_7.693/game/txt/hlp/penntop.hlp Mon, 15 Sep 2003 11:42:02 -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.4 600) --- 1_7_7.705(w)/game/txt/hlp/penntop.hlp Sat, 11 Oct 2003 12:40:19 -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.5 600) *************** *** 377,386 **** See also: MONEY, money(), score & CREDITS Maintainer: Javelin ! Developers: Talek [TAP], Trivian [TN], Halatir [LdW], Raevnos [SW] Porters: Nick Gammon [NJG] (win32), Dan Williams [DW] (MacOS), ! Sylvia (OS/2), Ervin Hearn III [EEH] (win32) ! Former devteam: Rhyanna [RLM] The original TinyMUSH 1.0 code was written by Lawrence Foard, and was based upon James Aspnes' TinyMUD server. Since then, the code has been --- 377,386 ---- See also: MONEY, money(), score & CREDITS Maintainer: Javelin ! Developers: Talek [TAP], Raevnos [SW], Ervin Hearn III [EEH] Porters: Nick Gammon [NJG] (win32), Dan Williams [DW] (MacOS), ! Sylvia (OS/2) ! Former developers: Rhyanna [RLM], Trivian [TN], Halatir [LdW] The original TinyMUSH 1.0 code was written by Lawrence Foard, and was based upon James Aspnes' TinyMUD server. Since then, the code has been *** 1_7_7.693/game/txt/hlp/pennfunc.hlp Tue, 07 Oct 2003 00:14:21 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.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.9.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.17 600) --- 1_7_7.705(w)/game/txt/hlp/pennfunc.hlp Sun, 19 Oct 2003 09:56:32 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.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.9.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.19 600) *************** *** 458,467 **** Does a bitwise AND of all its arguments, returning the result (A number with only the bits set in every argument set in it). & BASECONV() ! baseconv(, , ) ! Converts a number from one base to another. The bases can be between ! 2 (Binary) and 36. & BEEP() beep([]) --- 458,467 ---- Does a bitwise AND of all its arguments, returning the result (A number with only the bits set in every argument set in it). & BASECONV() ! baseconv(, , ) ! Converts , which is in base into base . ! The bases can be between 2 (binary) and 36. & BEEP() beep([]) *************** *** 3416,3426 **** See HELP CTU() for more on the angle type. & TEL() ! tel(,[,]) This function will teleport to , exactly as @tel =. is an optional boolean that, ! if true, makes the function act like @tel/silent. See also: @tel & TERMINFO() --- 3416,3428 ---- See HELP CTU() for more on the angle type. & TEL() ! tel(,[,[,]]) This function will teleport to , exactly as @tel =. is an optional boolean that, ! if true, makes the function act like @tel/silent. ! is an optional boolean that, if true, makes the function act like ! @tel/inside (some value for must also be specified). See also: @tel & TERMINFO() *** 1_7_7.693/game/txt/hlp/pennflag.hlp Mon, 01 Sep 2003 23:41:11 -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.8 600) --- 1_7_7.705(w)/game/txt/hlp/pennflag.hlp Sun, 19 Oct 2003 10:24:59 -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.9 600) *************** *** 585,591 **** Flag: STICKY (all types) If a thing or player is STICKY, it goes home when dropped (See HOMES). ! It also goes home when an object carrying it teleports or goes home. If a room is STICKY, its drop-to is delayed until the last person leaves (See DROP-TOs). This flag is meaningless for exits. & SUSPECT --- 585,592 ---- Flag: STICKY (all types) If a thing or player is STICKY, it goes home when dropped (See HOMES). ! It also goes home when an object carrying it teleports or goes home, ! unless the object controls it. If a room is STICKY, its drop-to is delayed until the last person leaves (See DROP-TOs). This flag is meaningless for exits. & SUSPECT *** 1_7_7.693/game/txt/hlp/penncmd.hlp Thu, 18 Sep 2003 09:04:44 -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.3 600) --- 1_7_7.705(w)/game/txt/hlp/penncmd.hlp Sun, 19 Oct 2003 09:55:44 -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.4 600) *************** *** 2970,2976 **** > thing says, "Not Puppet!" See also: switch wildcards, @select, switch() & @teleport ! @teleport[/silent] [=] . Teleports to . must be a thing; if you do not supply a thing, the object is assumed to be yourself. The destination --- 2970,2976 ---- > thing says, "Not Puppet!" See also: switch wildcards, @select, switch() & @teleport ! @teleport[/silent][/inside] [=] . Teleports to . must be a thing; if you do not supply a thing, the object is assumed to be yourself. The destination *************** *** 2978,2985 **** 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. Wizards can teleport things into ! players' inventories. Teleportation from a room can be stopped by setting the NO_TEL flag. Royalty and Wizards can _always_ teleport to any location, regardless --- 2978,2988 ---- 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 ! to the location of the target, unless the /inside switch is used, ! in which case they are sent to the inventory of the target. Teleportation from a room can be stopped by setting the NO_TEL flag. Royalty and Wizards can _always_ teleport to any location, regardless *** 1_7_7.693/src/SWITCHES Thu, 18 Sep 2003 09:04:44 -0500 dunemush (pennmush/b/22_SWITCHES 1.12.1.3.1.8 600) --- 1_7_7.705(w)/src/SWITCHES Tue, 21 Oct 2003 12:49:51 -0500 dunemush (pennmush/b/22_SWITCHES 1.12.1.3.1.9 600) *************** *** 56,61 **** --- 56,62 ---- HIDE IGNORE ILIST + INSIDE INVENTORY IPRINT JOIN *** 1_7_7.693/src/wiz.c Thu, 02 Oct 2003 16:27:38 -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.4 660) --- 1_7_7.705(w)/src/wiz.c Tue, 21 Oct 2003 12:49:47 -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.6 660) *************** *** 325,333 **** * \param arg1 the object to teleport (or location if no object given) * \param arg2 the location to teleport to. * \param silent if 1, don't trigger teleport messagse. */ void ! do_teleport(dbref player, const char *arg1, const char *arg2, int silent) { dbref victim; dbref destination; --- 325,335 ---- * \param arg1 the object to teleport (or location if no object given) * \param arg2 the location to teleport to. * \param silent if 1, don't trigger teleport messagse. + * \param inside if 1, always @tel to inventory, even of a player */ void ! do_teleport(dbref player, const char *arg1, const char *arg2, int silent, ! int inside) { dbref victim; dbref destination; *************** *** 433,440 **** } loc = Location(victim); ! /* if royal or wiz and destination is player, tel to location */ ! if (IsPlayer(destination) && Tel_Anywhere(player) && IsPlayer(victim)) { if (!silent && loc != Location(destination)) did_it(victim, victim, NULL, NULL, "OXTPORT", NULL, NULL, loc); safe_tel(victim, Location(destination), silent); --- 435,445 ---- } loc = Location(victim); ! /* if royal or wiz and destination is player, tel to location unless ! * using @tel/inside ! */ ! if (IsPlayer(destination) && Tel_Anywhere(player) && IsPlayer(victim) ! && !inside) { if (!silent && loc != Location(destination)) did_it(victim, victim, NULL, NULL, "OXTPORT", NULL, NULL, loc); safe_tel(victim, Location(destination), silent); *** 1_7_7.693/src/switchinc.c Thu, 18 Sep 2003 09:04:44 -0500 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.5.1.4.1.1.1.1.1.1.1.7.1.1.1.1 660) --- 1_7_7.705(w)/src/switchinc.c Tue, 21 Oct 2003 12:49:56 -0500 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.5.1.4.1.1.1.1.1.1.1.7.1.1.1.2 660) *************** *** 58,63 **** --- 58,64 ---- {"HIDE", SWITCH_HIDE}, {"IGNORE", SWITCH_IGNORE}, {"ILIST", SWITCH_ILIST}, + {"INSIDE", SWITCH_INSIDE}, {"INVENTORY", SWITCH_INVENTORY}, {"IPRINT", SWITCH_IPRINT}, {"JOIN", SWITCH_JOIN}, *** 1_7_7.693/src/fundb.c Sat, 13 Sep 2003 11:08:23 -0500 dunemush (pennmush/c/17_fundb.c 1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.7.1.3.1.3.1.3.1.2.1.2.1.3.2.1.2.1.2.1.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.3.1.1.2.2.2.1.1.1.1.1.1.22 660) --- 1_7_7.705(w)/src/fundb.c Tue, 21 Oct 2003 12:49:45 -0500 dunemush (pennmush/c/17_fundb.c 1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.7.1.3.1.3.1.3.1.2.1.2.1.3.2.1.2.1.2.1.1.1.1.4.1.1.1.1.1.1.1.1.1.1.1.3.1.1.2.2.2.1.1.1.1.1.1.23 660) *************** *** 1700,1712 **** FUNCTION(fun_tel) { int silent = 0; if (!command_check_byname(executor, "@tel") || fun->flags & FN_NOSIDEFX) { safe_str(T(e_perm), buff, bp); return; } ! if (nargs == 3) silent = parse_boolean(args[2]); ! do_teleport(executor, args[0], args[1], silent); } --- 1700,1715 ---- FUNCTION(fun_tel) { int silent = 0; + int inside = 0; if (!command_check_byname(executor, "@tel") || fun->flags & FN_NOSIDEFX) { safe_str(T(e_perm), buff, bp); return; } ! if (nargs > 2) silent = parse_boolean(args[2]); ! if (nargs > 3) ! silent = parse_boolean(args[3]); ! do_teleport(executor, args[0], args[1], silent, inside); } *** 1_7_7.693/src/function.c Tue, 07 Oct 2003 00:14:21 -0500 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.2.1.1.1.7.1.22.1.4 660) --- 1_7_7.705(w)/src/function.c Tue, 21 Oct 2003 12:49:45 -0500 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.2.1.1.1.7.1.22.1.5 660) *************** *** 476,482 **** {"SWITCHALL", fun_switch, 3, INT_MAX, FN_NOPARSE}, {"T", fun_t, 1, 1, FN_REG}, {"TABLE", fun_table, 1, 5, FN_REG}, ! {"TEL", fun_tel, 2, 3, FN_REG}, {"TERMINFO", fun_terminfo, 1, 1, FN_REG}, {"TEXTFILE", fun_textfile, 2, 2, FN_REG}, {"TIME", fun_time, 0, 1, FN_REG}, --- 476,482 ---- {"SWITCHALL", fun_switch, 3, INT_MAX, FN_NOPARSE}, {"T", fun_t, 1, 1, FN_REG}, {"TABLE", fun_table, 1, 5, FN_REG}, ! {"TEL", fun_tel, 2, 4, FN_REG}, {"TERMINFO", fun_terminfo, 1, 1, FN_REG}, {"TEXTFILE", fun_textfile, 2, 2, FN_REG}, {"TIME", fun_time, 0, 1, FN_REG}, *** 1_7_7.693/src/flags.c Thu, 02 Oct 2003 16:27:38 -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.3 660) --- 1_7_7.705(w)/src/flags.c Tue, 21 Oct 2003 12:49:45 -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.6 660) *************** *** 670,675 **** --- 670,677 ---- add_flag("ORPHAN", 'i', NOTYPE, F_ANY, F_ANY); if ((f = match_flag("TERSE"))) f->type |= TYPE_THING; + if ((f = match_flag("PUPPET"))) + f->type |= TYPE_ROOM; if ((f = match_flag("NOSPOOF"))) { f->type = NOTYPE; f->letter = '"'; *************** *** 1288,1301 **** hide_player(thing, 0); /* notify the area if something stops listening, but only if it wasn't listening before */ ! if (IsThing(thing) && ! GoodObject(Location(thing)) && (hear || listener) && !Hearer(thing) && !Listener(thing)) { tp = tbuf1; safe_format(tbuf1, &tp, T("%s is no longer listening."), Name(thing)); *tp = '\0'; ! notify_except(Contents(Location(thing)), NOTHING, tbuf1, ! NA_INTER_PRESENCE); notify_except(Contents(thing), NOTHING, tbuf1, 0); } if (IsRoom(thing) && is_flag(f, "MONITOR") && !hear && !Listener(thing)) { --- 1290,1303 ---- hide_player(thing, 0); /* notify the area if something stops listening, but only if it wasn't listening before */ ! if (!IsPlayer(thing) && (hear || listener) && !Hearer(thing) && !Listener(thing)) { tp = tbuf1; safe_format(tbuf1, &tp, T("%s is no longer listening."), Name(thing)); *tp = '\0'; ! if (GoodObject(Location(thing))) ! notify_except(Contents(Location(thing)), NOTHING, tbuf1, ! NA_INTER_PRESENCE); notify_except(Contents(thing), NOTHING, tbuf1, 0); } if (IsRoom(thing) && is_flag(f, "MONITOR") && !hear && !Listener(thing)) { *************** *** 1352,1364 **** if (is_flag(f, "DARK") && IsPlayer(thing)) hide_player(thing, 1); /* notify area if something starts listening */ ! if (IsThing(thing) && GoodObject(Location(thing)) && (is_flag(f, "PUPPET") || is_flag(f, "MONITOR")) && !hear && !listener) { tp = tbuf1; safe_format(tbuf1, &tp, T("%s is now listening."), Name(thing)); *tp = '\0'; ! notify_except(Contents(Location(thing)), NOTHING, tbuf1, ! NA_INTER_PRESENCE); notify_except(Contents(thing), NOTHING, tbuf1, 0); } if (IsRoom(thing) && is_flag(f, "MONITOR") && !hear && !listener) { --- 1354,1367 ---- if (is_flag(f, "DARK") && IsPlayer(thing)) hide_player(thing, 1); /* notify area if something starts listening */ ! if (!IsPlayer(thing) && (is_flag(f, "PUPPET") || is_flag(f, "MONITOR")) && !hear && !listener) { tp = tbuf1; safe_format(tbuf1, &tp, T("%s is now listening."), Name(thing)); *tp = '\0'; ! if (GoodObject(Location(thing))) ! notify_except(Contents(Location(thing)), NOTHING, tbuf1, ! NA_INTER_PRESENCE); notify_except(Contents(thing), NOTHING, tbuf1, 0); } if (IsRoom(thing) && is_flag(f, "MONITOR") && !hear && !listener) { *** 1_7_7.693/src/db.c Wed, 03 Sep 2003 22:31:51 -0500 dunemush (pennmush/c/25_db.c 1.26.1.1.1.1.1.6.1.1.1.6 660) --- 1_7_7.705(w)/src/db.c Tue, 21 Oct 2003 12:49:45 -0500 dunemush (pennmush/c/25_db.c 1.26.1.1.1.1.1.6.1.1.1.7 660) *************** *** 1304,1309 **** --- 1304,1311 ---- god = new_object(); /* #1 */ master_room = new_object(); /* #2 */ + init_objdata_htab(DB_INITIAL_SIZE); + set_name(start_room, "Room Zero"); Type(start_room) = TYPE_ROOM; Flags(start_room) = string_to_bits("FLAG", "LINK_OK"); *** 1_7_7.693/src/create.c Mon, 18 Aug 2003 20:59:29 -0500 dunemush (pennmush/c/27_create.c 1.27.1.3.1.1.1.1.1.1.1.2.1.1.1.1.1.23 660) --- 1_7_7.705(w)/src/create.c Tue, 21 Oct 2003 12:49:45 -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) *************** *** 407,413 **** * and Z_TEL checking */ char roomstr[MAX_COMMAND_LEN]; sprintf(roomstr, "#%d", room); ! do_teleport(player, "me", roomstr, 0); /* if flag, move the player */ } return room; } --- 407,413 ---- * and Z_TEL checking */ char roomstr[MAX_COMMAND_LEN]; sprintf(roomstr, "#%d", room); ! do_teleport(player, "me", roomstr, 0, 0); /* if flag, move the player */ } return room; } *** 1_7_7.693/src/command.c Thu, 18 Sep 2003 09:04:44 -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.22 660) --- 1_7_7.705(w)/src/command.c Tue, 21 Oct 2003 12:49:44 -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.23 660) *************** *** 246,252 **** {"@SQUOTA", NULL, cmd_squota, CMD_T_ANY | CMD_T_EQSPLIT, 0, 0}, #endif ! {"@TELEPORT", "SILENT", cmd_teleport, CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_NOGAGGED, 0, 0}, {"@TRIGGER", NULL, cmd_trigger, CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_RS_ARGS | CMD_T_NOGAGGED, 0, 0}, --- 246,252 ---- {"@SQUOTA", NULL, cmd_squota, CMD_T_ANY | CMD_T_EQSPLIT, 0, 0}, #endif ! {"@TELEPORT", "SILENT INSIDE", cmd_teleport, CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_NOGAGGED, 0, 0}, {"@TRIGGER", NULL, cmd_trigger, CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_RS_ARGS | CMD_T_NOGAGGED, 0, 0}, *** 1_7_7.693/src/cmds.c Tue, 23 Sep 2003 20:11:09 -0500 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.2.1.2.2.3.1.1.1.2.1.1.1.3.1.8.1.1.2.2.2.20.1.3.1.2 660) --- 1_7_7.705(w)/src/cmds.c Tue, 21 Oct 2003 12:49:44 -0500 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.2.1.2.2.3.1.1.1.2.1.1.1.3.1.8.1.1.2.2.2.20.1.3.1.4 660) *************** *** 817,823 **** if (rhs_present && !*arg_right) notify(player, T("You can't teleport to nothing!")); else ! do_teleport(player, arg_left, arg_right, (SW_ISSET(sw, SWITCH_SILENT))); } COMMAND (cmd_trigger) { --- 817,824 ---- if (rhs_present && !*arg_right) notify(player, T("You can't teleport to nothing!")); else ! do_teleport(player, arg_left, arg_right, (SW_ISSET(sw, SWITCH_SILENT)), ! (SW_ISSET(sw, SWITCH_INSIDE))); } COMMAND (cmd_trigger) { *** 1_7_7.693/src/attrib.c Mon, 29 Sep 2003 16:37:45 -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.36 660) --- 1_7_7.705(w)/src/attrib.c Tue, 21 Oct 2003 12:49:44 -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.38 660) *************** *** 393,398 **** --- 393,401 ---- * \param thing object to clear attribute from. * \param atr name of attribute to remove. * \param player enactor attempting to remove attribute. + * \retval 0 no attribute found to reset + * \retval AE_SAFE attribute is safe + * \retval AE_ERROR other failure */ int atr_clr(dbref thing, char const *atr, dbref player) *************** *** 413,425 **** if (!ptr) return 0; if (!Can_Write_Attr(player, thing, ptr)) ! return -1; len = strlen(AL_NAME(ptr)); sub = atr_sub_branch(ptr); if (!we_are_wiping && sub) ! return -1; if (!IsPlayer(thing) && !(AL_FLAGS(ptr) & AF_NODUMP)) ModTime(thing) = mudtime; --- 416,430 ---- if (!ptr) return 0; + if (ptr && (AL_FLAGS(ptr) & AF_SAFE)) + return AE_SAFE; if (!Can_Write_Attr(player, thing, ptr)) ! return AE_ERROR; len = strlen(AL_NAME(ptr)); sub = atr_sub_branch(ptr); if (!we_are_wiping && sub) ! return AE_ERROR; if (!IsPlayer(thing) && !(AL_FLAGS(ptr) & AF_NODUMP)) ModTime(thing) = mudtime; *************** *** 1169,1177 **** notify(player, T("That's not a very good name for an attribute.")); return 0; } else if (res == AE_ERROR) { ! if (*missing_name) ! notify_format(player, T("You must set %s first."), missing_name); ! else notify(player, T("That attribute cannot be changed by you.")); return 0; } else if (!res) { --- 1174,1191 ---- notify(player, T("That's not a very good name for an attribute.")); return 0; } else if (res == AE_ERROR) { ! if (*missing_name) { ! if (s ! #ifndef EMPTY_ATTRS ! && *s ! #endif ! ) ! notify_format(player, T("You must set %s first."), missing_name); ! else ! notify_format(player, ! T("%s is a branch attribute; remove its children first."), ! missing_name); ! } else notify(player, T("That attribute cannot be changed by you.")); return 0; } else if (!res) { *************** *** 1523,1530 **** break; atr = AL_NEXT(atr); } ! if (!atr || ! (!God(player) && ((AL_FLAGS(atr) & AF_INTERNAL) || (safe && (AL_FLAGS(atr) & AF_SAFE)) || !(Wizard(player) || --- 1537,1545 ---- break; atr = AL_NEXT(atr); } ! if (!atr) ! return 0; ! if ((!God(player) && ((AL_FLAGS(atr) & AF_INTERNAL) || (safe && (AL_FLAGS(atr) & AF_SAFE)) || !(Wizard(player) || *** 1_7_7.693/hdrs/version.h Fri, 10 Oct 2003 07:58:26 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.27 660) --- 1_7_7.705(w)/hdrs/version.h Tue, 21 Oct 2003 12:49:50 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.28 660) *************** *** 1,3 **** ! #define VERSION "PennMUSH version 1.7.7 patchlevel 23 [10/10/2003]" ! #define SHORTVN "PennMUSH 1.7.7p23" ! #define NUMVERSION 001007007023 --- 1,3 ---- ! #define VERSION "PennMUSH version 1.7.7 patchlevel 24 [10/19/2003]" ! #define SHORTVN "PennMUSH 1.7.7p24" ! #define NUMVERSION 001007007024 *** 1_7_7.693/hdrs/game.h Mon, 01 Sep 2003 23:41:11 -0500 dunemush (pennmush/d/12_game.h 1.28.1.2.1.1.1.1.1.1.1.7.1.9 660) --- 1_7_7.705(w)/hdrs/game.h Tue, 21 Oct 2003 12:49:47 -0500 dunemush (pennmush/d/12_game.h 1.28.1.2.1.1.1.1.1.1.1.7.1.10 660) *************** *** 153,159 **** extern void do_allquota(dbref player, const char *arg1, int quiet); #endif extern void do_teleport ! (dbref player, const char *arg1, const char *arg2, int silent); extern void do_force(dbref player, const char *what, char *command); extern void do_stats(dbref player, const char *name); extern void do_newpassword --- 153,159 ---- extern void do_allquota(dbref player, const char *arg1, int quiet); #endif extern void do_teleport ! (dbref player, const char *arg1, const char *arg2, int silent, int inside); extern void do_force(dbref player, const char *what, char *command); extern void do_stats(dbref player, const char *name); extern void do_newpassword *** 1_7_7.693/hdrs/dbdefs.h Mon, 25 Aug 2003 13:01:10 -0500 dunemush (pennmush/d/18_dbdefs.h 1.1.1.1.1.1.1.1.1.1.1.2.2.2.1.1.1.1.1.1.2.1.1.22 660) --- 1_7_7.705(w)/hdrs/dbdefs.h Tue, 21 Oct 2003 12:49:47 -0500 dunemush (pennmush/d/18_dbdefs.h 1.1.1.1.1.1.1.1.1.1.1.2.2.2.1.1.1.1.1.1.2.1.1.22.1.1 660) *************** *** 102,108 **** /******* Thing toggles */ #define DestOk(x) (IS(x, TYPE_THING, "DESTROY_OK")) - #define Puppet(x) (IS(x, TYPE_THING, "PUPPET")) #define NoLeave(x) (IS(x, TYPE_THING, "NOLEAVE")) #define ThingListen(x) (IS(x, TYPE_THING, "MONITOR")) #define ThingInhearit(x) \ --- 102,107 ---- *************** *** 148,153 **** --- 147,153 ---- #define NoWarn(x) (has_flag_by_name(x, "NOWARN", NOTYPE)) #define Opaque(x) (has_flag_by_name(x, "OPAQUE", NOTYPE)) #define Orphan(x) (has_flag_by_name(x, "ORPHAN", NOTYPE)) + #define Puppet(x) (has_flag_by_name(x, "PUPPET", TYPE_THING|TYPE_ROOM)) #define Quiet(x) (has_flag_by_name(x, "QUIET", NOTYPE)) #define Safe(x) (has_flag_by_name(x, "SAFE", NOTYPE)) #define Sticky(x) (has_flag_by_name(x, "STICKY", NOTYPE)) *** 1_7_7.693/hdrs/switches.h Thu, 18 Sep 2003 09:04:44 -0500 dunemush (pennmush/d/21_switches.h 1.2.1.6.2.7.1.6 660) --- 1_7_7.705(w)/hdrs/switches.h Tue, 21 Oct 2003 12:49:56 -0500 dunemush (pennmush/d/21_switches.h 1.2.1.6.2.7.1.7 660) *************** *** 57,140 **** #define SWITCH_HIDE 56 #define SWITCH_IGNORE 57 #define SWITCH_ILIST 58 ! #define SWITCH_INVENTORY 59 ! #define SWITCH_IPRINT 60 ! #define SWITCH_JOIN 61 ! #define SWITCH_LETTER 62 ! #define SWITCH_LIST 63 ! #define SWITCH_LOWERCASE 64 ! #define SWITCH_ME 65 ! #define SWITCH_MEMBERS 66 ! #define SWITCH_MOD 67 ! #define SWITCH_MORTAL 68 ! #define SWITCH_MOTD 69 ! #define SWITCH_MUTE 70 ! #define SWITCH_NAME 71 ! #define SWITCH_NO 72 ! #define SWITCH_NOEVAL 73 ! #define SWITCH_NOFLAGCOPY 74 ! #define SWITCH_NOISY 75 ! #define SWITCH_NOSIG 76 ! #define SWITCH_NOSPACE 77 ! #define SWITCH_NOTIFY 78 ! #define SWITCH_NUKE 79 ! #define SWITCH_OFF 80 ! #define SWITCH_ON 81 ! #define SWITCH_OUTSIDE 82 ! #define SWITCH_OVERRIDE 83 ! #define SWITCH_PAGING 84 ! #define SWITCH_PANIC 85 ! #define SWITCH_PARANOID 86 ! #define SWITCH_PLAYERS 87 ! #define SWITCH_PORT 88 ! #define SWITCH_PRESERVE 89 ! #define SWITCH_PRINT 90 ! #define SWITCH_PRIVS 91 ! #define SWITCH_PURGE 92 ! #define SWITCH_QUICK 93 ! #define SWITCH_QUIET 94 ! #define SWITCH_READ 95 ! #define SWITCH_REBOOT 96 ! #define SWITCH_RECALL 97 ! #define SWITCH_REGIONS 98 ! #define SWITCH_REGISTER 99 ! #define SWITCH_REMOVE 100 ! #define SWITCH_RENAME 101 ! #define SWITCH_RESTORE 102 ! #define SWITCH_RESTRICT 103 ! #define SWITCH_RETROACTIVE 104 ! #define SWITCH_ROOM 105 ! #define SWITCH_ROOMS 106 ! #define SWITCH_SEE 107 ! #define SWITCH_SEEFLAG 108 ! #define SWITCH_SELF 109 ! #define SWITCH_SEND 110 ! #define SWITCH_SET 111 ! #define SWITCH_SILENT 112 ! #define SWITCH_SKIPDEFAULTS 113 ! #define SWITCH_SPEAK 114 ! #define SWITCH_STATS 115 ! #define SWITCH_SUMMARY 116 ! #define SWITCH_TABLES 117 ! #define SWITCH_TAG 118 ! #define SWITCH_TELEPORT 119 ! #define SWITCH_TF 120 ! #define SWITCH_THINGS 121 ! #define SWITCH_TITLE 122 ! #define SWITCH_TRACE 123 ! #define SWITCH_UNCLEAR 124 ! #define SWITCH_UNFOLDER 125 ! #define SWITCH_UNGAG 126 ! #define SWITCH_UNHIDE 127 ! #define SWITCH_UNMUTE 128 ! #define SWITCH_UNTAG 129 ! #define SWITCH_UNTIL 130 ! #define SWITCH_URGENT 131 ! #define SWITCH_USEFLAG 132 ! #define SWITCH_WHAT 133 ! #define SWITCH_WHO 134 ! #define SWITCH_WIPE 135 ! #define SWITCH_WIZ 136 ! #define SWITCH_WIZARD 137 ! #define SWITCH_YES 138 ! #define SWITCH_ZONE 139 --- 57,141 ---- #define SWITCH_HIDE 56 #define SWITCH_IGNORE 57 #define SWITCH_ILIST 58 ! #define SWITCH_INSIDE 59 ! #define SWITCH_INVENTORY 60 ! #define SWITCH_IPRINT 61 ! #define SWITCH_JOIN 62 ! #define SWITCH_LETTER 63 ! #define SWITCH_LIST 64 ! #define SWITCH_LOWERCASE 65 ! #define SWITCH_ME 66 ! #define SWITCH_MEMBERS 67 ! #define SWITCH_MOD 68 ! #define SWITCH_MORTAL 69 ! #define SWITCH_MOTD 70 ! #define SWITCH_MUTE 71 ! #define SWITCH_NAME 72 ! #define SWITCH_NO 73 ! #define SWITCH_NOEVAL 74 ! #define SWITCH_NOFLAGCOPY 75 ! #define SWITCH_NOISY 76 ! #define SWITCH_NOSIG 77 ! #define SWITCH_NOSPACE 78 ! #define SWITCH_NOTIFY 79 ! #define SWITCH_NUKE 80 ! #define SWITCH_OFF 81 ! #define SWITCH_ON 82 ! #define SWITCH_OUTSIDE 83 ! #define SWITCH_OVERRIDE 84 ! #define SWITCH_PAGING 85 ! #define SWITCH_PANIC 86 ! #define SWITCH_PARANOID 87 ! #define SWITCH_PLAYERS 88 ! #define SWITCH_PORT 89 ! #define SWITCH_PRESERVE 90 ! #define SWITCH_PRINT 91 ! #define SWITCH_PRIVS 92 ! #define SWITCH_PURGE 93 ! #define SWITCH_QUICK 94 ! #define SWITCH_QUIET 95 ! #define SWITCH_READ 96 ! #define SWITCH_REBOOT 97 ! #define SWITCH_RECALL 98 ! #define SWITCH_REGIONS 99 ! #define SWITCH_REGISTER 100 ! #define SWITCH_REMOVE 101 ! #define SWITCH_RENAME 102 ! #define SWITCH_RESTORE 103 ! #define SWITCH_RESTRICT 104 ! #define SWITCH_RETROACTIVE 105 ! #define SWITCH_ROOM 106 ! #define SWITCH_ROOMS 107 ! #define SWITCH_SEE 108 ! #define SWITCH_SEEFLAG 109 ! #define SWITCH_SELF 110 ! #define SWITCH_SEND 111 ! #define SWITCH_SET 112 ! #define SWITCH_SILENT 113 ! #define SWITCH_SKIPDEFAULTS 114 ! #define SWITCH_SPEAK 115 ! #define SWITCH_STATS 116 ! #define SWITCH_SUMMARY 117 ! #define SWITCH_TABLES 118 ! #define SWITCH_TAG 119 ! #define SWITCH_TELEPORT 120 ! #define SWITCH_TF 121 ! #define SWITCH_THINGS 122 ! #define SWITCH_TITLE 123 ! #define SWITCH_TRACE 124 ! #define SWITCH_UNCLEAR 125 ! #define SWITCH_UNFOLDER 126 ! #define SWITCH_UNGAG 127 ! #define SWITCH_UNHIDE 128 ! #define SWITCH_UNMUTE 129 ! #define SWITCH_UNTAG 130 ! #define SWITCH_UNTIL 131 ! #define SWITCH_URGENT 132 ! #define SWITCH_USEFLAG 133 ! #define SWITCH_WHAT 134 ! #define SWITCH_WHO 135 ! #define SWITCH_WIPE 136 ! #define SWITCH_WIZ 137 ! #define SWITCH_WIZARD 138 ! #define SWITCH_YES 139 ! #define SWITCH_ZONE 140 *** 1_7_7.693/game/txt/hlp/pennvOLD.hlp Wed, 01 Oct 2003 21:42:14 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1.1.1.1.4 660) --- 1_7_7.705(w)/game/txt/hlp/pennvOLD.hlp Tue, 21 Oct 2003 12:49:51 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1.1.1.1.6 660) *************** *** 4418,4424 **** type 'help p'. For example, 'help 1.7.2p3' 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ! 19, 20, 21, 22, 23 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, --- 4418,4424 ---- type 'help p'. For example, 'help 1.7.2p3' 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, ! 19, 20, 21, 22, 23, 24 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *** 1_7_7.693/game/txt/hlp/pennv177.hlp Fri, 10 Oct 2003 07:58:26 -0500 dunemush (pennmush/g/34_pennv177.h 1.169 660) --- 1_7_7.705(w)/game/txt/hlp/pennv177.hlp Tue, 21 Oct 2003 12:49:51 -0500 dunemush (pennmush/g/34_pennv177.h 1.176 660) *************** *** 1,4 **** ! & 1.7.7p23 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions --- 1,4 ---- ! & 1.7.7p24 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions *************** *** 11,16 **** --- 11,34 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. + Version 1.7.7 patchlevel 24 October 19, 2003 + + Minor Changes: + * The puppet flag can now apply to rooms. Suggested by Philip Mak. + * @tel/inside allows priv'd players to teleport into another player's + inventory (instead of to their location). Suggested by Philip Mak. + Fixes: + * Startups from a created minimal.db did not properly initialize + the objdata htab, so subsequent use of that htab (e.g. adding + players to channels) would crash. Report by [LdW]. + * Help fixes by BladedThoth@M*U*S*H and Philip Mak. + * Attempting to clear a branch attribute when it has leaves now + gives a better message. Also better message for inability to + write an attribute due to tree issues. Patch by Luke@M*U*S*H. + * Bug in @debugforwardlist fixed by Luke@M*U*S*H. + + + & 1.7.7p23 Version 1.7.7 patchlevel 23 October 10, 2003 Major Changes: *** 1_7_7.693/src/notify.c Sat, 20 Sep 2003 12:59:32 -0500 dunemush (pennmush/g/35_notify.c 1.32 660) --- 1_7_7.705(w)/src/notify.c Tue, 21 Oct 2003 12:49:46 -0500 dunemush (pennmush/g/35_notify.c 1.33 660) *************** *** 1011,1016 **** --- 1011,1019 ---- nsflags |= NA_NOSPOOF; if (Paranoid(thing)) nsflags |= NA_PARANOID; + } else { + safe_str(msg, tbuf1, &bp); + *bp = 0; } while ((curr = split_token(&fwdstr, ' ')) != NULL) {