diff -BbuprN -x '*.o' suntzu/src/act.comm.c suntzu-ken/src/act.comm.c --- suntzu/src/act.comm.c 2003-11-30 14:47:24.000000000 -0600 +++ suntzu-ken/src/act.comm.c 2003-12-28 09:06:00.000000000 -0600 @@ -523,9 +523,9 @@ ACMD(do_gen_comm) }; /* to keep pets, etc from being ordered to shout */ - if (!ch->desc) + if (!ch->desc && !MOB_FLAGGED(ch, MOB_USECHANNELS)) return; - + if (!IS_NPC(ch)) { /* NPCs who can use channels have no restrictions */ if (PLR_FLAGGED(ch, PLR_NOSHOUT)) { send_to_char(ch, "%s", com_msgs[subcmd][0]); return; @@ -536,7 +536,8 @@ ACMD(do_gen_comm) } /* level_can_shout defined in config.c */ if (GET_LEVEL(ch) < CONFIG_LEVEL_CAN_SHOUT) { - send_to_char(ch, "You must be at least level %d before you can %s.\r\n", CONFIG_LEVEL_CAN_SHOUT, com_msgs[subcmd][1]); + send_to_char(ch, "You must be at least level %d before you can %s.\r\n", + CONFIG_LEVEL_CAN_SHOUT, com_msgs[subcmd][1]); return; } /* make sure the char is on the channel */ @@ -544,12 +545,14 @@ ACMD(do_gen_comm) send_to_char(ch, "%s", com_msgs[subcmd][2]); return; } + } /* skip leading spaces */ skip_spaces(&argument); /* make sure that there is something there to say! */ if (!*argument) { - send_to_char(ch, "Yes, %s, fine, %s we must, but WHAT???\r\n", com_msgs[subcmd][1], com_msgs[subcmd][1]); + send_to_char(ch, "Yes, %s, fine, %s we must, but WHAT???\r\n", + com_msgs[subcmd][1], com_msgs[subcmd][1]); return; } if (subcmd == SCMD_HOLLER) { @@ -563,10 +566,12 @@ ACMD(do_gen_comm) strlcpy(color_on, com_msgs[subcmd][3], sizeof(color_on)); /* first, set up strings to be given to the communicator */ - if (PRF_FLAGGED(ch, PRF_NOREPEAT)) + if (IS_NPC(ch) || PRF_FLAGGED(ch, PRF_NOREPEAT)) send_to_char(ch, "%s", CONFIG_OK); else - send_to_char(ch, "%sYou %s, '%s'%s", COLOR_LEV(ch) >= C_CMP ? color_on : "", com_msgs[subcmd][1], argument, CCNRM(ch, C_CMP)); + send_to_char(ch, "%sYou %s, '%s'%s", + COLOR_LEV(ch) >= C_CMP ? color_on : "", + com_msgs[subcmd][1], argument, CCNRM(ch, C_CMP)); snprintf(buf1, sizeof(buf1), "$n %ss, '%s'", com_msgs[subcmd][1], argument); diff -BbuprN -x '*.o' suntzu/src/constants.c suntzu-ken/src/constants.c --- suntzu/src/constants.c 2003-11-29 19:36:43.000000000 -0600 +++ suntzu-ken/src/constants.c 2003-12-28 08:56:13.000000000 -0600 @@ -219,8 +219,8 @@ const char *action_bits[] = { "NO_BASH", "NO_BLIND", "NO_KILL", - "DEAD", /* You should never see this. */ - "SPARE1", + "DEAD (do not set)", /* You should never see this. */ + "USECHANNELS", "SPARE2", "SPARE3", "SPARE4", diff -BbuprN -x '*.o' suntzu/src/oasis.h suntzu-ken/src/oasis.h --- suntzu/src/oasis.h 2003-11-26 15:18:42.000000000 -0600 +++ suntzu-ken/src/oasis.h 2003-12-28 08:56:23.000000000 -0600 @@ -34,7 +34,7 @@ #define NUM_ROOM_FLAGS 18 #define NUM_ROOM_SECTORS 10 -#define NUM_MOB_FLAGS 19 +#define NUM_MOB_FLAGS 21 #define NUM_AFF_FLAGS 28 #define NUM_ATTACK_TYPES 15 diff -BbuprN -x '*.o' suntzu/src/structs.h suntzu-ken/src/structs.h --- suntzu/src/structs.h 2003-11-30 18:41:53.000000000 -0600 +++ suntzu-ken/src/structs.h 2003-12-28 08:46:47.000000000 -0600 @@ -225,7 +225,7 @@ #define MOB_NOKILL 18 /* Mob can't be killed */ #define MOB_NOTDEADYET 19 /* (R) Mob being extracted. */ -#define MOB_SPARE1 20 /* (R) Mob being extracted. */ +#define MOB_USECHANNELS 20 /* Mob can use channels and gossip. */ #define MOB_SPARE2 21 /* (R) Mob being extracted. */ #define MOB_SPARE3 22 /* (R) Mob being extracted. */ #define MOB_SPARE4 23 /* (R) Mob being extracted. */