[PENNMUSH-ANNOUNCE] 1.7.4-patch03
dunemush@pennmush.org
dunemush at pennmush.org
Tue, 24 Apr 2001 10:35:20 -0500
This is patch03 to PennMUSH 1.7.4. After applying this patch, you will
have version 1.7.4p3
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
patch -p1 < 1.7.4-patch03
make update
make install
If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1',
not just 'patch -p1'.
Then @shutdown and restart your MUSH.
- Alan/Javelin
In this patch:
Commands:
* unfollow with no args now stops you from following everyone.
dismiss command stops people from followig you.
desert command stops people from following you or leading you.
Idea by Oriens@Alexandria. Names suggested by Noltar@Korongil
Minor changes:
* MONITOR announcements of disconnects distinguish hidden disconnects.
Suggested by Oriens@Alexandria.
* The Uptime field of INFO shows first start time, not last reboot time.
Suggested by Trispis@M*U*S*H.
Fixes:
* Exact matches are now preferred over partial matches, and no longer
result in ambiguity. Report by Steven Viscido.
* Message mentioning INHERIT changed to TRUST by Xyrxwyrth@M*U*S*H.
* Distributed register.txt file is now more descriptive.
Suggested by Xyrxwyrth@M*U*S*H.
* The ctime(), mtime(), restarttime(), and starttime() functions now
return 2-digit days (01 vs. 1). Reported by Matrim@M*U*S*H.
* @malias output uses the alias token more consistently. Suggested by
Kyieren@M*U*S*H.
* hints/solaris_2.sh modified a bit.
* Mac portability fixes
* Options.h clarification suggested by rodregis@M*U*S*H.
* Cosmetic bug in @halt fixed. Report by Trispis@M*U*S*H.
* Fixed a fencepost error in regedit*() that could generate garbage text.
Reported by Vadiv@M*U*S*H
Prereq: 1.7.4p2
*** 1_7_4.72/Patchlevel Fri, 23 Mar 2001 14:12:35 -0600 dunemush (pennmush/5_Patchlevel 1.20 600)
--- 1_7_4.81(w)/Patchlevel Fri, 06 Apr 2001 15:23:53 -0500 dunemush (pennmush/5_Patchlevel 1.21 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p2
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p3
*** 1_7_4.72/CHANGES Thu, 05 Apr 2001 11:06:39 -0500 dunemush (pennmush/8_CHANGES 1.196 600)
--- 1_7_4.81(w)/CHANGES Mon, 23 Apr 2001 18:06:21 -0500 dunemush (pennmush/8_CHANGES 1.204 600)
***************
*** 17,22 ****
--- 17,52 ----
==========================================================================
+ Version 1.7.4 patchlevel 3 April 23, 2001
+
+ Commands:
+ * unfollow with no args now stops you from following everyone.
+ dismiss command stops people from followig you.
+ desert command stops people from following you or leading you.
+ Idea by Oriens@Alexandria. Names suggested by Noltar@Korongil
+ Minor changes:
+ * MONITOR announcements of disconnects distinguish hidden disconnects.
+ Suggested by Oriens@Alexandria.
+ * The Uptime field of INFO shows first start time, not last reboot time.
+ Suggested by Trispis@M*U*S*H.
+ Fixes:
+ * Exact matches are now preferred over partial matches, and no longer
+ result in ambiguity. Report by Steven Viscido.
+ * Message mentioning INHERIT changed to TRUST by Xyrxwyrth@M*U*S*H.
+ * Distributed register.txt file is now more descriptive.
+ Suggested by Xyrxwyrth@M*U*S*H.
+ * The ctime(), mtime(), restarttime(), and starttime() functions now
+ return 2-digit days (01 vs. 1). Reported by Matrim@M*U*S*H.
+ * @malias output uses the alias token more consistently. Suggested by
+ Kyieren@M*U*S*H.
+ * hints/solaris_2.sh modified a bit.
+ * Mac portability fixes
+ * Options.h clarification suggested by rodregis@M*U*S*H.
+ * Cosmetic bug in @halt fixed. Report by Trispis@M*U*S*H.
+ * Fixed a fencepost error in regedit*() that could generate garbage text.
+ Reported by Vadiv@M*U*S*H
+
+
Version 1.7.4 patchlevel 2 March 23, 2001
Major changes:
*** 1_7_4.72/game/txt/hlp/pennvers.hlp Thu, 05 Apr 2001 11:06:39 -0500 dunemush (pennmush/12_pennvers.h 1.145 600)
--- 1_7_4.81(w)/game/txt/hlp/pennvers.hlp Mon, 23 Apr 2001 18:06:29 -0500 dunemush (pennmush/12_pennvers.h 1.153 600)
***************
*** 1,5 ****
& changes
! & 1.7.4p2
This is a list of changes in this patchlevel which are probably of
interest to players. More information about new commands and functions
can probably be gotten via 'help <name of whatever>'. 'help credits'
--- 1,5 ----
& changes
! & 1.7.4p3
This is a list of changes in this patchlevel which are probably of
interest to players. More information about new commands and functions
can probably be gotten via 'help <name of whatever>'. 'help credits'
***************
*** 11,16 ****
--- 11,47 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.4 patchlevel 3 April 23, 2001
+
+ Commands:
+ * unfollow with no args now stops you from following everyone.
+ dismiss command stops people from followig you.
+ desert command stops people from following you or leading you.
+ Idea by Oriens@Alexandria. Names suggested by Noltar@Korongil
+ Minor changes:
+ * MONITOR announcements of disconnects distinguish hidden disconnects.
+ Suggested by Oriens@Alexandria.
+ * The Uptime field of INFO shows first start time, not last reboot time.
+ Suggested by Trispis@M*U*S*H.
+ Fixes:
+ * Exact matches are now preferred over partial matches, and no longer
+ result in ambiguity. Report by Steven Viscido.
+ * Message mentioning INHERIT changed to TRUST by Xyrxwyrth@M*U*S*H.
+ * Distributed register.txt file is now more descriptive.
+ Suggested by Xyrxwyrth@M*U*S*H.
+ * The ctime(), mtime(), restarttime(), and starttime() functions now
+ return 2-digit days (01 vs. 1). Reported by Matrim@M*U*S*H.
+ * @malias output uses the alias token more consistently. Suggested by
+ Kyieren@M*U*S*H.
+ * hints/solaris_2.sh modified a bit.
+ * Mac portability fixes
+ * Options.h clarification suggested by rodregis@M*U*S*H.
+ * Cosmetic bug in @halt fixed. Report by Trispis@M*U*S*H.
+ * Fixed a fencepost error in regedit*() that could generate garbage text.
+ Reported by Vadiv@M*U*S*H
+
+
+ & 1.7.4p2
Version 1.7.4 patchlevel 2 March 23, 2001
Major changes:
***************
*** 4587,4593 ****
is configurable.
& patchlevels
! 1.7.4: 0, 1, 2
1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.2: 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, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
--- 4618,4624 ----
is configurable.
& patchlevels
! 1.7.4: 0, 1, 2, 3
1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.2: 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, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
*** 1_7_4.72/game/txt/hlp/penncmd.hlp Fri, 23 Mar 2001 14:12:35 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.1 600)
--- 1_7_4.81(w)/game/txt/hlp/penncmd.hlp Sat, 07 Apr 2001 13:18:28 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.2 600)
***************
*** 3159,3167 ****
object moves around (except if it @teleports away or goes home), you
will automatically move around with it, so long as you pass all the
locks and enter/leave locks on the exits and things the object moves
! through.
! See also: unfollow, followers(), @follow, @ofollow, @afollow
& get
& take
get <object>
--- 3159,3186 ----
object moves around (except if it @teleports away or goes home), you
will automatically move around with it, so long as you pass all the
locks and enter/leave locks on the exits and things the object moves
! through. This doesn't prevent you from going somewhere else on your
! own.
! See also: unfollow, dismiss, desert, followers(), @follow, @ofollow, @afollow
! & dismiss
! dismiss <object>
! dismiss
!
! The dismiss command stops <object> from following you. If no object
! is given, it stops everyone from following you.
!
! See also: follow, unfollow, desert, followers()
! & desert
! desert <object>
! desert
!
! The desert command stops <object> from following you and stops you
! from following <object>. That is, it's shorthand for 'unfollow <object>'
! and 'dismiss <object>'. If no object is given, it stops everyone from
! following or leading you.
!
! See also: follow, unfollow, dismiss, followers(), following()
& get
& take
get <object>
***************
*** 3421,3433 ****
unfollow
unfollow <object>
! The first form of this command clears off all your followers, if you
! have any. The second form of this command enables you to stop
! following an object which you were formerly following. Note that you
! can also stop following by going off in a different direction before
! the object moves.
! See also: follow, followers(), @follow, @ofollow, @afollow
& use
use <object>
--- 3440,3450 ----
unfollow
unfollow <object>
! This command stops you from following an object that you were formerly
! following. If no object is given, you stop following everyone you
! were following.
! See also: follow, dismiss, desert, followers(), @follow, @ofollow, @afollow
& use
use <object>
*** 1_7_4.72/game/txt/register.txt Sat, 15 Apr 2000 10:56:00 -0500 dunemush (pennmush/24_register.t 1.1 600)
--- 1_7_4.81(w)/game/txt/register.txt Sat, 07 Apr 2001 09:14:52 -0500 dunemush (pennmush/24_register.t 1.1.2.1 600)
***************
*** 1,3 ****
! Should we ever decide to go registration (God forbid) this is what will
! get shown to the hapless user.
--- 1,5 ----
! This message is shown when a user tries to create a player or register
! a player from a site that doesn't allow creation or registration,
! respectively. Alas. You'll probably have to send email to the
! person who runs this MUSH if you want a character.
*** 1_7_4.72/hints/solaris_2.sh Mon, 26 Mar 2001 15:18:14 -0600 dunemush (pennmush/b/4_solaris_2. 1.2 600)
--- 1_7_4.81(w)/hints/solaris_2.sh Sat, 07 Apr 2001 12:39:58 -0500 dunemush (pennmush/b/4_solaris_2. 1.3 600)
***************
*** 1,2 ****
--- 1,4 ----
ccflags="-DNO_SIGCONTEXT"
libs="-lnsl -lsocket -lm -lc -lresolv"
+ i_fcntl="define"
+ has_sigchld="define"
*** 1_7_4.72/src/set.c Fri, 23 Mar 2001 14:12:35 -0600 dunemush (pennmush/b/38_set.c 1.25 660)
--- 1_7_4.81(w)/src/set.c Mon, 23 Apr 2001 18:05:52 -0500 dunemush (pennmush/b/38_set.c 1.26 660)
***************
*** 426,432 ****
if (Hasprivs(thing))
notify(player, T("Warning: @chzoning a privileged player."));
if (Flags(thing) & INHERIT)
! notify(player, T("Warning: @chzoning an INHERIT player."));
}
}
notify(player, T("Zone changed."));
--- 426,432 ----
if (Hasprivs(thing))
notify(player, T("Warning: @chzoning a privileged player."));
if (Flags(thing) & INHERIT)
! notify(player, T("Warning: @chzoning an TRUST player."));
}
}
notify(player, T("Zone changed."));
*** 1_7_4.72/src/move.c Fri, 23 Mar 2001 14:25:48 -0600 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.2 660)
--- 1_7_4.81(w)/src/move.c Mon, 23 Apr 2001 18:05:52 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3 660)
***************
*** 805,811 ****
}
/* unfollow <arg> removes someone from your following list
! * unfollow alone stops everyone from following you.
*/
void
do_unfollow(player, arg)
--- 805,811 ----
}
/* unfollow <arg> removes someone from your following list
! * unfollow alone removes everyone from your following list. (1.7.4p3)
*/
void
do_unfollow(player, arg)
***************
*** 828,836 ****
/* Ok, looks good */
del_follow(leader, player, 1);
} else {
! /* Stop everyone from following me */
clear_followers(player, 1);
! notify(player, T("You stop everyone from following you."));
}
}
--- 828,900 ----
/* Ok, looks good */
del_follow(leader, player, 1);
} else {
! /* Stop following everyone */
! clear_following(player, 1);
! notify(player, T("You stop following anyone."));
! }
! }
!
!
! /* dismiss <arg> removes someone from your followers list
! * dismiss alone removes everyone from your followers list.
! */
! void
! do_dismiss(player, arg)
! dbref player;
! const char *arg;
! {
! dbref follower;
! if (arg && *arg) {
! /* Who do we want to stop leading? */
! follower = match_result(player, arg, NOTYPE, MAT_OBJECTS);
! if (!GoodObject(follower)) {
! notify(player, T("I don't recognize who you want to dismiss."));
! return;
! }
! /* Are we following them? */
! if (!is_following(follower, player)) {
! notify_format(player, T("%s isn't following you."), Name(follower));
! return;
! }
! /* Ok, looks good */
! del_follow(player, follower, 1);
! } else {
! /* Stop leading everyone */
! clear_followers(player, 1);
! notify(player, T("You dismiss all your followers."));
! }
! }
!
! /* desert <arg> removes someone from your followers and following list
! * desert alone removes everyone from both lists
! */
! void
! do_desert(player, arg)
! dbref player;
! const char *arg;
! {
! dbref who;
! if (arg && *arg) {
! /* Who do we want to stop leading? */
! who = match_result(player, arg, NOTYPE, MAT_OBJECTS);
! if (!GoodObject(who)) {
! notify(player, T("I don't recognize who you want to desert."));
! return;
! }
! /* Are we following or leading them? */
! if (!is_following(who, player) && !is_following(player, who)) {
! notify_format(player, T("%s isn't following you, nor vice versa."),
! Name(who));
! return;
! }
! /* Ok, looks good */
! del_follow(player, who, 1);
! del_follow(who, player, 1);
! } else {
! /* Stop leading everyone */
clear_followers(player, 1);
! clear_following(player, 1);
! notify(player, T("You desert everyone you're leading or following."));
}
}
*** 1_7_4.72/src/match.c Mon, 02 Apr 2001 13:43:46 -0500 dunemush (pennmush/c/2_match.c 1.17 660)
--- 1_7_4.81(w)/src/match.c Mon, 23 Apr 2001 18:05:51 -0500 dunemush (pennmush/c/2_match.c 1.20 660)
***************
*** 164,170 ****
const int type;
const long int flags;
{
! dbref match = NOTHING, last_match = NOTHING;
int match_count = 0;
if (flags & MAT_ME) {
match = match_me(who, name);
--- 164,171 ----
const int type;
const long int flags;
{
! dbref match = NOTHING, last_match = NOTHING, exact_match = NOTHING;
! int exact_match_count = 0;
int match_count = 0;
if (flags & MAT_ME) {
match = match_me(who, name);
***************
*** 206,260 ****
/* These return a match if the match is exact, and otherwise
* store last thing matched in last_match and the number of matches
* in match_count. Remote_contents and Neighbor are exclusive.
*/
if (DO_GLOBALS && (flags & MAT_REMOTE_CONTENTS)) {
match =
match_remote_contents(who, name, type, flags, &last_match, &match_count);
}
if (flags & MAT_NEIGHBOR) {
match = match_neighbor(who, name, type, flags, &last_match, &match_count);
}
if (flags & MAT_POSSESSION) {
! match = choose_thing(who, type, flags, match,
! match_possession(who, name, type, flags,
! &last_match, &match_count),
! &match_count);
}
if (flags & MAT_EXIT) {
! match = choose_thing(who, type, flags, match,
! match_exit(who, name, type, flags), &match_count);
}
if (flags & MAT_CONTAINER) {
! match = choose_thing(who, type, flags, match,
! match_container(who, name, type, flags, &last_match,
! &match_count), &match_count);
}
if (flags & MAT_CARRIED_EXIT) {
! match = choose_thing(who, type, flags, match,
! match_exit_internal(who, name, type, flags, who,
! &match_count), &match_count);
}
! if ((flags & MAT_ENGLISH) && (!GoodObject(match))) {
match = match_english(who, name, type, flags);
}
/* Set up the default match_result behavior */
! /* If we already have an exact match, it's in match */
! switch (match_count) {
! case 0:
! if (!GoodObject(match))
match = NOTHING;
! break;
! case 1:
! if (!GoodObject(match))
match = last_match;
! break;
! default:
! if (flags & MAT_LAST)
match = last_match;
else
match = AMBIGUOUS;
- break;
}
/* Handle noisy_match_result */
--- 207,285 ----
/* These return a match if the match is exact, and otherwise
* store last thing matched in last_match and the number of matches
* in match_count. Remote_contents and Neighbor are exclusive.
+ * We need to deal with the possibility of having multiple exact
+ * matches, multiple partial matches, or 1 exact + 1 or more partial
+ * matches.
*/
if (DO_GLOBALS && (flags & MAT_REMOTE_CONTENTS)) {
match =
match_remote_contents(who, name, type, flags, &last_match, &match_count);
+ if (GoodObject(match)) {
+ exact_match_count++;
+ exact_match = match;
+ }
}
if (flags & MAT_NEIGHBOR) {
match = match_neighbor(who, name, type, flags, &last_match, &match_count);
+ if (GoodObject(match)) {
+ exact_match_count++;
+ exact_match = match;
+ }
}
if (flags & MAT_POSSESSION) {
! match = match_possession(who, name, type, flags, &last_match, &match_count);
! if (GoodObject(match)) {
! exact_match_count++;
! exact_match = match;
! }
}
if (flags & MAT_EXIT) {
! match = match_exit(who, name, type, flags);
! if (GoodObject(match)) {
! exact_match_count++;
! exact_match = match;
! }
}
if (flags & MAT_CONTAINER) {
! match = match_container(who, name, type, flags, &last_match, &match_count);
! if (GoodObject(match)) {
! exact_match_count++;
! exact_match = match;
! }
}
if (flags & MAT_CARRIED_EXIT) {
! match = match_exit_internal(who, name, type, flags, who, &match_count);
! if (GoodObject(match)) {
! exact_match_count++;
! exact_match = match;
! }
}
! if ((flags & MAT_ENGLISH) && !GoodObject(last_match)
! && !GoodObject(exact_match)) {
match = match_english(who, name, type, flags);
+ if (GoodObject(match)) {
+ exact_match_count++;
+ exact_match = match;
+ }
}
/* Set up the default match_result behavior */
! if (GoodObject(exact_match)) {
! if (exact_match_count == 1)
! match = exact_match;
! else if (flags & MAT_LAST)
! match = exact_match;
! else
! match = AMBIGUOUS;
! } else {
! if (match_count == 0)
match = NOTHING;
! else if (match_count == 1)
match = last_match;
! else if (flags & MAT_LAST)
match = last_match;
else
match = AMBIGUOUS;
}
/* Handle noisy_match_result */
***************
*** 321,326 ****
--- 346,354 ----
return NOTHING;
}
+ /* This code should return a matched dbref only on an exact match.
+ * Otherwise, it puts the best partial match in last_match
+ */
static dbref
match_list(match_who, match_name, type, flags, first, last_match, match_count)
const dbref match_who;
***************
*** 342,357 ****
DOLIST(first, first) {
if (first == absolute) {
return first;
! } else if (!strcasecmp(Name(first), match_name)) {
! /* if there are multiple exact matches, randomly choose one */
! the_match =
! choose_thing(match_who, type, flags, the_match, first, match_count);
! } else if (GoodObject(alias_match) && (alias_match == first)) {
! the_match =
! choose_thing(match_who, type, flags, the_match, first, match_count);
} else if (string_match(Name(first), match_name)) {
! *last_match = first;
! *match_count += 1;
}
}
return the_match;
--- 370,390 ----
DOLIST(first, first) {
if (first == absolute) {
return first;
! } else if (!strcasecmp(Name(first), match_name) ||
! (GoodObject(alias_match) && (alias_match == first))) {
! if (GoodObject(the_match)) {
! /* if there are multiple exact matches, don't match any but
! * make sure match_count is high enough that we report ambiguity
! */
! *match_count += 2;
! *last_match =
! choose_thing(match_who, type, flags, the_match, first, match_count);
! return NOTHING;
! } else
! the_match = first;
} else if (string_match(Name(first), match_name)) {
! *last_match =
! choose_thing(match_who, type, flags, *last_match, first, match_count);
}
}
return the_match;
***************
*** 612,617 ****
--- 645,652 ----
{
int has1;
int has2;
+ if (match_count)
+ (*match_count)++;
if (thing1 == NOTHING) {
return thing2;
} else if (thing2 == NOTHING) {
*** 1_7_4.72/src/malias.c Fri, 02 Mar 2001 10:50:52 -0600 dunemush (pennmush/c/3_malias.c 1.28 660)
--- 1_7_4.81(w)/src/malias.c Mon, 23 Apr 2001 18:05:51 -0500 dunemush (pennmush/c/3_malias.c 1.29 660)
***************
*** 257,277 ****
((m->nflags & ALIAS_ADMIN) && Hasprivs(player)) ||
((m->nflags & ALIAS_MEMBERS) && ismember(m, player))) {
if (!notified) {
! notify(player, tprintf("%-12s %-35s %s %-15s",
T("Name"), T("Alias Description"), T("Use See"),
T("Owner")));
notified++;
}
- #ifdef macintosh
notify(player,
! tprintf("%-12.12s %-35.35s %s %-15.15s", m->name,
uncompress((unsigned char *) (m->desc)), get_shortprivs(m),
Name(m->owner)));
- #else
- notify(player,
- tprintf("%-12.12s %-35.35s %s %-15.15s", m->name,
- uncompress(m->desc), get_shortprivs(m), Name(m->owner)));
- #endif
}
}
--- 257,271 ----
((m->nflags & ALIAS_ADMIN) && Hasprivs(player)) ||
((m->nflags & ALIAS_MEMBERS) && ismember(m, player))) {
if (!notified) {
! notify(player, tprintf("%-13s %-35s %s %-15s",
T("Name"), T("Alias Description"), T("Use See"),
T("Owner")));
notified++;
}
notify(player,
! tprintf("%c%-12.12s %-35.35s %s %-15.15s", MALIAS_TOKEN, m->name,
uncompress((unsigned char *) (m->desc)), get_shortprivs(m),
Name(m->owner)));
}
}
***************
*** 438,446 ****
m = get_malias(player, alias);
if (!m) {
! notify(player,
! T
! ("MAIL: Not a valid alias. Remember to prefix the alias name with *."));
return;
}
if (!tolist || !*tolist) {
--- 432,441 ----
m = get_malias(player, alias);
if (!m) {
! notify_format(player,
! T
! ("MAIL: Not a valid alias. Remember to prefix the alias name with %c."),
! MALIAS_TOKEN);
return;
}
if (!tolist || !*tolist) {
***************
*** 536,544 ****
for (i = 0; i < ma_top; i++) {
m = &malias[i];
! notify(player, tprintf("#%-4d %-10.10s %-40.40s %-11.11s (%3d)",
! i, m->name, uncompress(m->desc), Name(m->owner),
! m->size));
}
notify(player, T("***** End of Mail Aliases *****"));
--- 531,540 ----
for (i = 0; i < ma_top; i++) {
m = &malias[i];
! notify_format(player, "#%-4d %c%-10.10s %-40.40s %-11.11s (%3d)",
! i, MALIAS_TOKEN, m->name,
! uncompress((unsigned char *) m->desc),
! Name(m->owner), m->size);
}
notify(player, T("***** End of Mail Aliases *****"));
*** 1_7_4.72/src/funmisc.c Sat, 17 Feb 2001 10:56:52 -0600 dunemush (pennmush/c/14_funmisc.c 1.26 660)
--- 1_7_4.81(w)/src/funmisc.c Mon, 23 Apr 2001 18:05:51 -0500 dunemush (pennmush/c/14_funmisc.c 1.27 660)
***************
*** 332,350 ****
/* ARGSUSED */
FUNCTION(fun_starttime)
{
! char tbuf1[BUFFER_LEN];
! strcpy(tbuf1, ctime(&first_start_time));
! tbuf1[strlen(tbuf1) - 1] = '\0';
! safe_str(tbuf1, buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_restarttime)
{
! char tbuf1[BUFFER_LEN];
! strcpy(tbuf1, ctime(&start_time));
! tbuf1[strlen(tbuf1) - 1] = '\0';
! safe_str(tbuf1, buff, bp);
}
/* ARGSUSED */
--- 332,354 ----
/* ARGSUSED */
FUNCTION(fun_starttime)
{
! char *s;
! s = (char *) ctime(&first_start_time);
! s[strlen(s) - 1] = '\0';
! if (s[8] == ' ')
! s[8] = '0';
! safe_str(s, buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_restarttime)
{
! char *s;
! s = (char *) ctime(&start_time);
! s[strlen(s) - 1] = '\0';
! if (s[8] == ' ')
! s[8] = '0';
! safe_str(s, buff, bp);
}
/* ARGSUSED */
*** 1_7_4.72/src/funlist.c Thu, 05 Apr 2001 10:45:56 -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.1 660)
--- 1_7_4.81(w)/src/funlist.c Mon, 23 Apr 2001 18:05:51 -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 660)
***************
*** 2449,2455 ****
continue;
}
r = endsub - 1;
! if (offset > subpatterns)
continue;
pcre_copy_substring(args[0], offsets, subpatterns, offset,
--- 2449,2455 ----
continue;
}
r = endsub - 1;
! if (offset >= subpatterns)
continue;
pcre_copy_substring(args[0], offsets, subpatterns, offset,
***************
*** 2462,2470 ****
/* Make sure we advance at least 1 char */
if (offsets[0] == match_offset)
match_offset++;
! } while (all && (subpatterns =
! pcre_exec(re, study, args[0], len, match_offset,
! 0, offsets, 99)) >= 0);
/* Now copy everything after the matched bit */
--- 2462,2471 ----
/* Make sure we advance at least 1 char */
if (offsets[0] == match_offset)
match_offset++;
! } while (all && match_offset < len && (subpatterns =
! pcre_exec(re, study, args[0], len,
! match_offset, 0, offsets,
! 99)) >= 0);
/* Now copy everything after the matched bit */
*** 1_7_4.72/src/fundb.c Mon, 12 Feb 2001 09:57:12 -0600 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 660)
--- 1_7_4.81(w)/src/fundb.c Mon, 23 Apr 2001 18:05:51 -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 660)
***************
*** 1016,1024 ****
FUNCTION(fun_ctime)
{
dbref it = match_thing(executor, args[0]);
if ((it != NOTHING) && Can_Examine(executor, it)) {
! safe_str(ctime(&CreTime(it)), buff, bp);
! (*bp)--;
return;
}
safe_str("#-1", buff, bp);
--- 1016,1029 ----
FUNCTION(fun_ctime)
{
dbref it = match_thing(executor, args[0]);
+ char *s;
+
if ((it != NOTHING) && Can_Examine(executor, it)) {
! s = (char *) ctime(&CreTime(it));
! s[strlen(s) - 1] = '\0';
! if (s[8] == ' ')
! s[8] = '0';
! safe_str(s, buff, bp);
return;
}
safe_str("#-1", buff, bp);
***************
*** 1028,1036 ****
FUNCTION(fun_mtime)
{
dbref it = match_thing(executor, args[0]);
if ((it != NOTHING) && Can_Examine(executor, it) && !IsPlayer(it)) {
! safe_str(ctime(&ModTime(it)), buff, bp);
! (*bp)--;
return;
}
safe_str("#-1", buff, bp);
--- 1033,1045 ----
FUNCTION(fun_mtime)
{
dbref it = match_thing(executor, args[0]);
+ char *s;
if ((it != NOTHING) && Can_Examine(executor, it) && !IsPlayer(it)) {
! s = (char *) ctime(&ModTime(it));
! s[strlen(s) - 1] = '\0';
! if (s[8] == ' ')
! s[8] = '0';
! safe_str(s, buff, bp);
return;
}
safe_str("#-1", buff, bp);
*** 1_7_4.72/src/extchat.c Mon, 26 Mar 2001 15:33:20 -0600 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.2 660)
--- 1_7_4.81(w)/src/extchat.c Mon, 23 Apr 2001 18:05:50 -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 660)
***************
*** 834,844 ****
}
/* It's on or off now */
/* Determine who is getting added or deleted. If we don't have
! * an argument, we assume it's the player.
*/
! if (!target || !*target)
! victim = player;
! else if ((victim = lookup_player(target)) != NOTHING) ;
else if (Channel_Object(chan))
victim = match_result(player, target, TYPE_THING, MAT_OBJECTS);
else
--- 834,846 ----
}
/* It's on or off now */
/* Determine who is getting added or deleted. If we don't have
! * an argument, we return, because we should've caught those above,
! * and this shouldn't happen.
*/
! if (!target || !*target) {
! notify(player, T("I don't understand what you want to do."));
! return;
! } else if ((victim = lookup_player(target)) != NOTHING) ;
else if (Channel_Object(chan))
victim = match_result(player, target, TYPE_THING, MAT_OBJECTS);
else
***************
*** 882,897 ****
}
}
if (insert_user_by_dbref(victim, chan)) {
! if (victim != player) {
! notify(victim,
! tprintf(T("CHAT: %s joins you to channel <%s>."), Name(player),
! ChanName(chan)));
! notify(player,
! tprintf(T("CHAT: You join %s to channel <%s>."), Name(victim),
! ChanName(chan)));
! } else
! notify(victim,
! tprintf(T("CHAT: You join channel <%s>."), ChanName(chan)));
if (!Channel_Quiet(chan) && !DarkLegal(victim))
channel_broadcast(chan, victim, 1,
T("<%s> %s has joined this channel."), ChanName(chan),
--- 884,895 ----
}
}
if (insert_user_by_dbref(victim, chan)) {
! notify(victim,
! tprintf(T("CHAT: %s joins you to channel <%s>."), Name(player),
! ChanName(chan)));
! notify(player,
! tprintf(T("CHAT: You join %s to channel <%s>."), Name(victim),
! ChanName(chan)));
if (!Channel_Quiet(chan) && !DarkLegal(victim))
channel_broadcast(chan, victim, 1,
T("<%s> %s has joined this channel."), ChanName(chan),
***************
*** 918,933 ****
channel_broadcast(chan, victim, 1,
T("<%s> %s has left this channel."), ChanName(chan),
Name(victim));
! if (victim != player) {
! notify(victim,
! tprintf(T("CHAT: %s removes you from channel <%s>."),
! Name(player), ChanName(chan)));
! notify(player,
! tprintf(T("CHAT: You remove %s from channel <%s>."),
! Name(victim), ChanName(chan)));
! } else
! notify(victim,
! tprintf(T("CHAT: You leave channel <%s>."), ChanName(chan)));
} else {
notify(player, tprintf(T("%s is not on channel <%s>."), Name(victim),
ChanName(chan)));
--- 916,927 ----
channel_broadcast(chan, victim, 1,
T("<%s> %s has left this channel."), ChanName(chan),
Name(victim));
! notify(victim,
! tprintf(T("CHAT: %s removes you from channel <%s>."),
! Name(player), ChanName(chan)));
! notify(player,
! tprintf(T("CHAT: You remove %s from channel <%s>."),
! Name(victim), ChanName(chan)));
} else {
notify(player, tprintf(T("%s is not on channel <%s>."), Name(victim),
ChanName(chan)));
*** 1_7_4.72/src/cque.c Fri, 02 Feb 2001 15:59:46 -0600 dunemush (pennmush/c/28_cque.c 1.34 660)
--- 1_7_4.81(w)/src/cque.c Mon, 23 Apr 2001 18:05:50 -0500 dunemush (pennmush/c/28_cque.c 1.35 660)
***************
*** 1022,1028 ****
notify_format(player, "%s: %s's %s(%s)", T("Halted"),
Name(Owner(victim)), Name(victim), unparse_dbref(victim));
notify_format(Owner(victim),
! "%s: %s%s), by %s", T("Halted"),
Name(victim), unparse_dbref(victim), Name(player));
}
if (*arg2 == '\0')
--- 1022,1028 ----
notify_format(player, "%s: %s's %s(%s)", T("Halted"),
Name(Owner(victim)), Name(victim), unparse_dbref(victim));
notify_format(Owner(victim),
! "%s: %s(%s), by %s", T("Halted"),
Name(victim), unparse_dbref(victim), Name(player));
}
if (*arg2 == '\0')
*** 1_7_4.72/src/command.c Fri, 02 Mar 2001 10:50:52 -0600 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1 660)
--- 1_7_4.81(w)/src/command.c Mon, 23 Apr 2001 18:05:50 -0500 dunemush (pennmush/c/36_command.c 1.56.1.1.1.1.1.1 660)
***************
*** 280,285 ****
--- 280,287 ----
0, 0, 0},
{"BRIEF", NULL, cmd_brief, CMD_T_ANY, 0, 0, 0},
+ {"DESERT", NULL, cmd_desert, CMD_T_PLAYER | CMD_T_THING, 0, 0, 0},
+ {"DISMISS", NULL, cmd_dismiss, CMD_T_PLAYER | CMD_T_THING, 0, 0, 0},
{"DROP", NULL, cmd_drop, CMD_T_PLAYER | CMD_T_THING, 0, 0, 0},
{"EXAMINE", "BRIEF DEBUG MORTAL", cmd_examine, CMD_T_ANY, 0, 0, 0},
{"ENTER", NULL, cmd_enter, CMD_T_ANY, 0, 0, 0},
*** 1_7_4.72/src/cmds.c Sun, 01 Apr 2001 17:37:14 -0500 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.1 660)
--- 1_7_4.81(w)/src/cmds.c Mon, 23 Apr 2001 18:05:50 -0500 dunemush (pennmush/c/37_cmds.c 1.33.1.1.1.2 660)
***************
*** 928,933 ****
--- 928,941 ----
do_enter(player, arg_left, 0);
}
+ COMMAND (cmd_dismiss) {
+ do_dismiss(player, arg_left);
+ }
+
+ COMMAND (cmd_desert) {
+ do_desert(player, arg_left);
+ }
+
COMMAND (cmd_follow) {
do_follow(player, arg_left);
}
*** 1_7_4.72/src/bsd.c Thu, 05 Apr 2001 11:06:39 -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.6 660)
--- 1_7_4.81(w)/src/bsd.c Mon, 23 Apr 2001 18:05:49 -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 660)
***************
*** 4029,4035 ****
}
}
queue_string(call_by, tprintf("Name: %s\r\n", options.mud_name));
! queue_string(call_by, tprintf("Uptime: %s\r", ctime(&start_time)));
queue_string(call_by, tprintf("Connected: %d\r\n", count));
queue_string(call_by, tprintf("Size: %d\r\n", db_top));
queue_string(call_by, tprintf("Version: %s\r\n", SHORTVN));
--- 4029,4035 ----
}
}
queue_string(call_by, tprintf("Name: %s\r\n", options.mud_name));
! queue_string(call_by, tprintf("Uptime: %s\r", ctime(&first_start_time)));
queue_string(call_by, tprintf("Connected: %d\r\n", count));
queue_string(call_by, tprintf("Size: %d\r\n", db_top));
queue_string(call_by, tprintf("Version: %s\r\n", SHORTVN));
***************
*** 4168,4174 ****
--- 4168,4178 ----
if (dt < 0)
dt = 0;
holder = (time_t) dt;
+ #ifdef macintosh
+ delta = localtime(&holder);
+ #else
delta = gmtime(&holder);
+ #endif
if (delta->tm_yday > 0) {
sprintf(buf, "%dd %02d:%02d",
/* sprintf(buf, "%d:%02d:%02d", */
***************
*** 4188,4194 ****
--- 4192,4202 ----
if (dt < 0)
dt = 0;
+ #ifdef macintosh
+ delta = localtime((time_t *) & dt);
+ #else
delta = gmtime((time_t *) & dt);
+ #endif
if (delta->tm_yday > 0) {
sprintf(buf, "%dd", delta->tm_yday);
} else if (delta->tm_hour > 0) {
***************
*** 4360,4366 ****
if (d->connected && (d->player == player))
num++;
if (num < 2) {
-
sprintf(tbuf1, T("%s has disconnected."), Name(player));
if (!Dark(player))
--- 4368,4373 ----
***************
*** 4407,4415 ****
}
Toggles(player) &= ~PLAYER_CONNECT;
(void) atr_add(player, "LASTLOGOUT", p, GOD, NOTHING);
-
- sprintf(tbuf1, Dark(player) ? T("%s has DARK-disconnected.") :
- T("%s has disconnected."), Name(player));
} else {
/* note: when you partially disconnect, ADISCONNECTS are not executed */
sprintf(tbuf1, T("%s has partially disconnected."), Name(player));
--- 4414,4419 ----
***************
*** 4419,4437 ****
/* notify contents */
notify_except(Contents(player), player, tbuf1);
}
- /* now print messages */
- if (Suspect(player))
- flag_broadcast(WIZARD, 0, T("GAME: Suspect %s"), tbuf1);
-
- if (Dark(player)) {
- #ifdef ROYALTY_FLAG
- flag_broadcast(WIZARD | ROYALTY, PLAYER_MONITOR, "%s %s", T("GAME:"),
- tbuf1);
- #else
- flag_broadcast(WIZARD, PLAYER_MONITOR, "%s %s", T("GAME:"), tbuf1);
- #endif
- } else
- flag_broadcast(0, PLAYER_MONITOR, "%s %s", T("GAME:"), tbuf1);
/* tell players on channel that someone's left */
#ifdef CHAT_SYSTEM
--- 4423,4428 ----
***************
*** 4446,4451 ****
--- 4437,4466 ----
}
}
#endif /* CHAT_SYSTEM */
+
+ /* Monitor broadcasts */
+ /* Redundant, but better for translators */
+ if (Dark(player)) {
+ sprintf(tbuf1, (num < 2) ? T("%s has DARK-disconnected.") :
+ T("%s has partially DARK-disconnected."), Name(player));
+ } else if (hidden(player)) {
+ sprintf(tbuf1, (num < 2) ? T("%s has HIDDEN-disconnected.") :
+ T("%s has partially HIDDEN-disconnected."), Name(player));
+ } else {
+ sprintf(tbuf1, (num < 2) ? T("%s has disconnected.") :
+ T("%s has partially disconnected."), Name(player));
+ }
+ if (Suspect(player))
+ flag_broadcast(WIZARD, 0, T("GAME: Suspect %s"), tbuf1);
+ if (Dark(player)) {
+ #ifdef ROYALTY_FLAG
+ flag_broadcast(WIZARD | ROYALTY, PLAYER_MONITOR, "%s %s", T("GAME:"),
+ tbuf1);
+ #else
+ flag_broadcast(WIZARD, PLAYER_MONITOR, "%s %s", T("GAME:"), tbuf1);
+ #endif
+ } else
+ flag_broadcast(0, PLAYER_MONITOR, "%s %s", T("GAME:"), tbuf1);
}
void
*** 1_7_4.72/hdrs/version.h Fri, 23 Mar 2001 14:12:35 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.3 660)
--- 1_7_4.81(w)/hdrs/version.h Mon, 23 Apr 2001 18:06:27 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.6 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.4 patchlevel 2 [03/23/2001]"
! #define SHORTVN "PennMUSH 1.7.4p2"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.4 patchlevel 3 [04/23/2001]"
! #define SHORTVN "PennMUSH 1.7.4p3"