diff -ur src/act_comm.c new/act_comm.c --- src/act_comm.c Sat Feb 15 14:23:34 2003 +++ new/act_comm.c Sat Feb 15 14:23:25 2003 @@ -93,6 +93,256 @@ wiznet("$N is contemplating deletion.", ch, NULL, 0, 0, get_trust(ch)); } +bool display_channel(CHAR_DATA * ch, CHAR_DATA * victim, + enum special_flags spec_flag) +{ + if (!ch || !victim) + return FALSE; + + if (IS_SET(victim->comm, COMM_QUIET)) + return FALSE; + + switch (spec_flag) + { + case spec_clan_flag: + if (!is_same_clan(ch, victim)) + return FALSE; + break; + case spec_imm_flag: + if (!IS_IMMORTAL(victim)) + return FALSE; + break; + case spec_public_flag: + return TRUE; + break; + } + + return TRUE; +} + +void channel_social(CHAR_DATA * ch, CHAR_DATA * victim, OBJ_DATA * obj, + flag_t bit, const char *string, const char *type, + enum special_flags spec_flag) +{ + DESCRIPTOR_DATA *d; + + for (d = descriptor_first; d; d = d->next) + { + CHAR_DATA *vch = CH(d); + + if (d->connected != CON_PLAYING) + continue; + + if (vch && (vch != ch) && (vch != victim) + && display_channel(ch, vch, spec_flag) + && (!bit || !IS_SET(vch->comm, bit)) + && !IS_SET(vch->comm, COMM_NOGOCIAL)) + { + char buf[MSL]; + + sprintf(buf, "%s %s", type, string); + perform_act(buf, ch, obj, victim, FALSE, vch); + } + } +} + +void public_ch(CHAR_DATA * ch, const char *argument, + const char *type, flag_t bitname, enum special_flags spec_flag) +{ + char command[MIL + 100]; + DESCRIPTOR_DATA *d; + bool display_wholist = FALSE, fEmote = FALSE; + char arg_left[MSL]; + + if (IS_NULLSTR(argument)) + { + if (!bitname) + chprintln(ch, "What do you want to say?"); + else + { + if (IS_SET(ch->comm, (bitname))) + { + chprintlnf(ch, "%s channel is now ON.{x", type); + REMOVE_BIT(ch->comm, (bitname)); + } + else + { + chprintlnf(ch, "%s channel is now OFF.{x", type); + SET_BIT(ch->comm, (bitname)); + } + } + } + else + { + if (IS_SET(ch->comm, COMM_QUIET)) + { + chprintln(ch, "You must turn off quiet mode first."); + return; + } + if (IS_SET(ch->comm, COMM_NOCHANNELS)) + { + chprintln(ch, "The gods have revoked your channel priviliges."); + return; + } + if (bitname) + REMOVE_BIT(ch->comm, (bitname)); + + strcpy(arg_left, argument); + + argument = one_argument(argument, command); + if (!str_cmp(command, "+")) + { + CHAR_DATA *victim; + char buf[MIL + 200]; + int cmd; + bool found; + char argx[MIL]; + + argument = one_argument(argument, command); + if (IS_NULLSTR(command)) + { + chprintln + (ch, + "{W<Channel> + <social> is used for channel based socials.{x"); + return; + } + found = FALSE; + if (!str_cmp(command, "random")) + cmd = number_range(1, maxSocial - 1); + else + { + for (cmd = 0; cmd < maxSocial; cmd++) + { + if (command[0] == social_table[cmd].name[0] + && !str_prefix(command, social_table[cmd].name)) + { + found = TRUE; + break; + } + } + if (!found) + { + chprintln(ch, "{WWhat kind of social is that?!?!{x"); + return; + } + } + one_argument(argument, argx); + victim = NULL; + if (IS_NULLSTR(argx)) + { + sprintf(buf, "%s %s", type, social_table[cmd].char_no_arg); + act_new(buf, ch, NULL, NULL, TO_CHAR, POS_DEAD); + channel_social(ch, NULL, NULL, bitname, + social_table[cmd].others_no_arg, type, + spec_flag); + } + else if ((victim = get_char_world(ch, argx)) == NULL) + { + chprintln(ch, "They aren't here."); + return; + } + else + { + if (!display_channel(ch, victim, spec_flag)) + { + chprintln(ch, "They can't use that channel."); + return; + } + if (victim == ch) + { + sprintf(buf, "%s %s", type, social_table[cmd].char_auto); + act_new(buf, ch, NULL, NULL, TO_CHAR, POS_DEAD); + channel_social(ch, victim, NULL, bitname, + social_table[cmd].others_auto, type, + spec_flag); + } + else + { + sprintf(buf, "%s %s", type, social_table[cmd].char_found); + act_new(buf, ch, NULL, victim, TO_CHAR, POS_DEAD); + if ((!bitname || !IS_SET(victim->comm, bitname)) + && !IS_SET(victim->comm, COMM_NOGOCIAL) + && display_channel(ch, victim, spec_flag)) + { + sprintf(buf, "%s %s", type, + social_table[cmd].vict_found); + act_new(buf, ch, NULL, victim, TO_VICT, POS_DEAD); + } + channel_social(ch, victim, NULL, bitname, + social_table[cmd].others_found, type, + spec_flag); + } + } + return; + } + else if (!str_cmp(command, "!")) + { + fEmote = TRUE; + + chprintlnf(ch, "%s %s %s{x", type, + IS_NPC(ch) ? ch->short_descr : ch->name, argument); + } + else if (!str_cmp(command, "wholist")) + { + display_wholist = TRUE; + chprintlnf(ch, "{WPlayers on %s{x", type); + chprintln(ch, "{C-------------------{x"); + } + else + { + chprintlnf(ch, "%s You say '%s'{x", type, arg_left); + } + for (d = descriptor_first; d != NULL; d = d->next) + { + CHAR_DATA *victim; + + if (d->connected != CON_PLAYING) + continue; + if ((victim = d->character) == NULL) + continue; + if (victim == ch) + continue; + if ((bitname && IS_SET(victim->comm, (bitname))) + || display_channel(ch, victim, spec_flag) == FALSE) + continue; + + if (!display_wholist) + { + if (fEmote && !IS_SET(victim->comm, COMM_NOGOCIAL)) + { + chprintlnf(victim, "%s %s %s{x", type, + smash_colour(PERS(ch, victim)), argument); + } + else + { + chprintlnf(victim, "%s %s says '%s'{x", type, + smash_colour(PERS(ch, victim)), arg_left); + } + } + else + { + if (victim->invis_level < LEVEL_IMMORTAL + && victim->incog_level < LEVEL_IMMORTAL) + chprintlnf(ch, "{W%s{x", PERS(victim, ch)); + } + } + } +} + +CH_CMD(do_nogocial) +{ + if (IS_SET(ch->comm, COMM_NOGOCIAL)) + { + REMOVE_BIT(ch->comm, COMM_NOGOCIAL); + chprintln(ch, "You no longer see socials/emotes over channels."); + } + else + { + SET_BIT(ch->comm, COMM_NOGOCIAL); + chprintln(ch, "You now see socials/emotes over channels."); + } +} + /* RT code to display channel status */ CH_CMD(do_channels) @@ -165,6 +415,12 @@ else chprintln(ch, "OFF"); + chprint(ch, "gocials "); + if (IS_SET(ch->comm, COMM_NOGOCIAL)) + chprintln(ch, "OFF"); + else + chprintln(ch, "ON"); + if (IS_SET(ch->comm, COMM_AFK)) chprintln(ch, "You are AFK."); @@ -270,425 +526,66 @@ /* RT chat replaced with ROM gossip */ CH_CMD(do_gossip) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOGOSSIP)) - { - chprintln(ch, "Gossip channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOGOSSIP); - } - else - { - chprintln(ch, "Gossip channel is now OFF."); - SET_BIT(ch->comm, COMM_NOGOSSIP); - } - } - else /* gossip message sent, turn gossip on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - - } - - REMOVE_BIT(ch->comm, COMM_NOGOSSIP); - - chprintlnf(ch, - "" CTAG(_GOSSIP1) "You gossip '" CTAG(_GOSSIP2) "%s" - CTAG(_GOSSIP1) "'{x", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; + public_ch(ch, argument, CTAG(_GOSSIP1) "[Gossip]" CTAG(_GOSSIP2), + COMM_NOGOSSIP, spec_public_flag); +} - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOGOSSIP) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_GOSSIP1) "$n gossips '" - CTAG(_GOSSIP2) "$t" CTAG(_GOSSIP1) - "'{x", ch, argument, d->character, - TO_VICT, POS_SLEEPING); - } - } - } +CH_CMD(do_ooc) +{ + public_ch(ch, argument, "{C({WOOC{C){w", COMM_NOOOC, spec_public_flag); } CH_CMD(do_grats) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOGRATS)) - { - chprintln(ch, "Grats channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOGRATS); - } - else - { - chprintln(ch, "Grats channel is now OFF."); - SET_BIT(ch->comm, COMM_NOGRATS); - } - } - else /* grats message sent, turn grats on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - - } - - REMOVE_BIT(ch->comm, COMM_NOGRATS); - - chprintlnf(ch, - "" CTAG(_GRATS1) "You grats '" CTAG(_GRATS2) "%s" - CTAG(_GRATS1) "'{x", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; - - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOGRATS) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_GRATS1) "$n grats '" - CTAG(_GRATS2) "$t" CTAG(_GRATS1) "'{x", - ch, argument, d->character, TO_VICT, POS_SLEEPING); - } - } - } + public_ch(ch, argument, CTAG(_GRATS1) "[Grats]" CTAG(_GRATS2), COMM_NOGRATS, + spec_public_flag); } CH_CMD(do_quote) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOQUOTE)) - { - chprintln(ch, "Quote channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOQUOTE); - } - else - { - chprintln(ch, "Quote channel is now OFF."); - SET_BIT(ch->comm, COMM_NOQUOTE); - } - } - else /* quote message sent, turn quote on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - - } - - REMOVE_BIT(ch->comm, COMM_NOQUOTE); - - chprintlnf(ch, - "" CTAG(_QUOTE1) "You quote '" CTAG(_QUOTE2) "%s" - CTAG(_QUOTE1) "'{x", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; - - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOQUOTE) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_QUOTE1) "$n quotes '" - CTAG(_QUOTE2) "$t" CTAG(_QUOTE1) "'{x", - ch, argument, d->character, TO_VICT, POS_SLEEPING); - } - } - } + public_ch(ch, argument, CTAG(_QUOTE1) "[Quote]" CTAG(_QUOTE2), COMM_NOQUOTE, + spec_public_flag); } /* RT question channel */ CH_CMD(do_question) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOQUESTION)) - { - chprintln(ch, "Q/A channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOQUESTION); - } - else - { - chprintln(ch, "Q/A channel is now OFF."); - SET_BIT(ch->comm, COMM_NOQUESTION); - } - } - else /* question sent, turn Q/A on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - } - - REMOVE_BIT(ch->comm, COMM_NOQUESTION); - - chprintlnf(ch, - "" CTAG(_QA1) "You question '" CTAG(_QA2) "%s" - CTAG(_QA1) "'{x", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; - - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOQUESTION) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_QA1) "$n questions '" - CTAG(_QA2) "$t" CTAG(_QA1) "'{x", ch, - argument, d->character, TO_VICT, POS_SLEEPING); - } - } - } + public_ch(ch, argument, CTAG(_QA1) "[Question]" CTAG(_QA2), COMM_NOQUESTION, + spec_public_flag); } /* RT answer channel - uses same line as questions */ CH_CMD(do_answer) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOQUESTION)) - { - chprintln(ch, "Q/A channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOQUESTION); - } - else - { - chprintln(ch, "Q/A channel is now OFF."); - SET_BIT(ch->comm, COMM_NOQUESTION); - } - } - else /* answer sent, turn Q/A on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - } - - REMOVE_BIT(ch->comm, COMM_NOQUESTION); - - chprintlnf(ch, - "" CTAG(_QA1) "You answer '" CTAG(_QA2) "%s" - CTAG(_QA1) "'{x", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; - - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOQUESTION) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_QA1) "$n answers '" CTAG(_QA2) - "$t" CTAG(_QA1) "'{x", ch, argument, - d->character, TO_VICT, POS_SLEEPING); - } - } - } + public_ch(ch, argument, CTAG(_QA1) "[Answer]" CTAG(_QA2), COMM_NOQUESTION, + spec_public_flag); } /* RT music channel */ CH_CMD(do_music) { - char buf[MAX_STRING_LENGTH]; - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOMUSIC)) - { - chprintln(ch, "Music channel is now ON."); - REMOVE_BIT(ch->comm, COMM_NOMUSIC); - } - else - { - chprintln(ch, "Music channel is now OFF."); - SET_BIT(ch->comm, COMM_NOMUSIC); - } - } - else /* music sent, turn music on if it isn't already */ - { - if (IS_SET(ch->comm, COMM_QUIET)) - { - chprintln(ch, "You must turn off quiet mode first."); - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - } - - REMOVE_BIT(ch->comm, COMM_NOMUSIC); - - chprintlnf(ch, - "" CTAG(_MUSIC1) "You MUSIC" CTAG(_MUSIC2) ": " - CTAG(_MUSIC1) "'" CTAG(_MUSIC3) "%s" CTAG(_MUSIC1) - "'{x", argument); - sprintf(buf, "$n MUSIC: '%s'", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - CHAR_DATA *victim; - - victim = d->original ? d->original : d->character; - - if (d->connected == CON_PLAYING && d->character != ch && - !IS_SET(victim->comm, COMM_NOMUSIC) && - !IS_SET(victim->comm, COMM_QUIET)) - { - act_new("" CTAG(_MUSIC1) "$n MUSIC" - CTAG(_MUSIC2) ": " CTAG(_MUSIC1) "'" - CTAG(_MUSIC3) "$t" CTAG(_MUSIC1) "'{x", - ch, argument, d->character, TO_VICT, POS_SLEEPING); - } - } - } + public_ch(ch, argument, + CTAG(_MUSIC1) "[" CTAG(_MUSIC2) "MUSIC" CTAG(_MUSIC1) "]" + CTAG(_MUSIC3), COMM_NOMUSIC, spec_public_flag); } /* clan channels */ CH_CMD(do_clantalk) { - char buf[MAX_STRING_LENGTH]; - DESCRIPTOR_DATA *d; - if (!is_clan(ch) || clan_table[ch->clan].independent) { chprintln(ch, "You aren't in a clan."); return; } - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOCLAN)) - { - chprintln(ch, "Clan channel is now ON"); - REMOVE_BIT(ch->comm, COMM_NOCLAN); - } - else - { - chprintln(ch, "Clan channel is now OFF"); - SET_BIT(ch->comm, COMM_NOCLAN); - } - return; - } - - if (IS_SET(ch->comm, COMM_NOCHANNELS)) - { - chprintln(ch, "The gods have revoked your channel priviliges."); - return; - } - - REMOVE_BIT(ch->comm, COMM_NOCLAN); - - chprintlnf(ch, "You clan '%s'", argument); - sprintf(buf, "$n clans '%s'", argument); - for (d = descriptor_first; d != NULL; d = d->next) - { - if (d->connected == CON_PLAYING && d->character != ch && - is_same_clan(ch, d->character) && - !IS_SET(d->character->comm, COMM_NOCLAN) && - !IS_SET(d->character->comm, COMM_QUIET)) - { - act_new("$n clans '$t'", ch, argument, d->character, - TO_VICT, POS_DEAD); - } - } - return; + public_ch(ch, argument, "{r[{RClan{r]{Y", COMM_NOCLAN, spec_clan_flag); } CH_CMD(do_immtalk) { - DESCRIPTOR_DATA *d; - - if (argument[0] == '\0') - { - if (IS_SET(ch->comm, COMM_NOWIZ)) - { - chprintln(ch, "Immortal channel is now ON"); - REMOVE_BIT(ch->comm, COMM_NOWIZ); - } - else - { - chprintln(ch, "Immortal channel is now OFF"); - SET_BIT(ch->comm, COMM_NOWIZ); - } - return; - } - - REMOVE_BIT(ch->comm, COMM_NOWIZ); - - act_new("" CTAG(_IMMTALK1) "$n" CTAG(_IMMTALK2) ":" - CTAG(_IMMTALK3) " $t{x", ch, argument, NULL, TO_CHAR, POS_DEAD); - for (d = descriptor_first; d != NULL; d = d->next) - { - if (d->connected == CON_PLAYING && IS_IMMORTAL(d->character) && - !IS_SET(d->character->comm, COMM_NOWIZ)) - { - act_new("" CTAG(_IMMTALK1) "$n" CTAG(_IMMTALK2) ":" - CTAG(_IMMTALK3) " $t{x", ch, argument, - d->character, TO_VICT, POS_DEAD); - } - } - - return; + public_ch(ch, argument, + CTAG(_IMMTALK1) "[" CTAG(_IMMTALK2) "ImmTalk" CTAG(_IMMTALK1) "]" + CTAG(_IMMTALK3), COMM_NOWIZ, spec_imm_flag); } CH_CMD(do_say) @@ -715,13 +612,13 @@ mob->position == mob->pIndexData->default_pos) p_act_trigger(argument, mob, NULL, NULL, ch, NULL, NULL, TRIG_SPEECH); - } - for (obj = mob->first_carrying; obj; obj = obj_next) - { - obj_next = obj->next_content; - if (HAS_TRIGGER_OBJ(obj, TRIG_SPEECH)) - p_act_trigger(argument, NULL, obj, NULL, ch, NULL, NULL, - TRIG_SPEECH); + for (obj = mob->first_carrying; obj; obj = obj_next) + { + obj_next = obj->next_content; + if (HAS_TRIGGER_OBJ(obj, TRIG_SPEECH)) + p_act_trigger(argument, NULL, obj, NULL, ch, NULL, NULL, + TRIG_SPEECH); + } } for (obj = ch->in_room->first_content; obj; obj = obj_next) { diff -ur src/act_wiz.c new/act_wiz.c --- src/act_wiz.c Sat Feb 15 14:23:34 2003 +++ new/act_wiz.c Sat Feb 15 14:23:25 2003 @@ -1477,8 +1477,9 @@ chprintlnf(ch, "Vnum: %ld Format: %s Race: %s Group: %d Sex: %s Room: %ld", IS_NPC(victim) ? victim->pIndexData->vnum : 0, - IS_NPC(victim) ? victim->pIndexData-> - new_format ? "new" : "old" : "pc", race_table[victim->race].name, + IS_NPC(victim) ? victim-> + pIndexData->new_format ? "new" : "old" : "pc", + race_table[victim->race].name, IS_NPC(victim) ? victim->group : 0, sex_table[victim->sex].name, victim->in_room == NULL ? 0 : victim->in_room->vnum); @@ -4081,8 +4082,8 @@ count++; sprintf(buf + strlen(buf), "[%3d %2d] %s@%s\n\r", d->descriptor, d->connected, - d->original ? d->original->name : d->character ? d-> - character->name : "(none)", d->host); + d->original ? d->original->name : d-> + character ? d->character->name : "(none)", d->host); } } if (count == 0) diff -ur src/arena.c new/arena.c --- src/arena.c Sat Feb 15 14:23:34 2003 +++ new/arena.c Sat Feb 15 14:23:25 2003 @@ -79,9 +79,8 @@ chprintlnf (ch, "You have already been challenged, either ACCEPT or DECLINE %s first.", - ch->pcdata->challenger ? ch->pcdata->challenger-> - name : ch->pcdata->challenged ? ch->pcdata->challenged-> - name : "!BUG!"); + ch->pcdata->challenger ? ch->pcdata->challenger->name : ch-> + pcdata->challenged ? ch->pcdata->challenged->name : "!BUG!"); return; } diff -ur src/auction.c new/auction.c --- src/auction.c Sat Feb 15 14:23:34 2003 +++ new/auction.c Sat Feb 15 14:23:25 2003 @@ -237,9 +237,9 @@ reset_auc(auc, TRUE); } else if ((unsigned long) (!IS_OBJ_STAT(auc->item, ITEM_QUEST) - ? auc->high_bidder->gold : auc-> - high_bidder->pcdata->questpoints) < - auc->bid) + ? auc->high_bidder-> + gold : auc->high_bidder->pcdata-> + questpoints) < auc->bid) { announce(auc->high_bidder, INFO_AUCTION, "$n can't cover their stake in the auction, sale stopped."); diff -ur src/clans.c new/clans.c --- src/clans.c Sat Feb 15 14:23:34 2003 +++ new/clans.c Sat Feb 15 14:23:25 2003 @@ -309,8 +309,8 @@ { chprintlnf(ch, "%-12s %-8s %s", victim->name, position_table[victim->position].name, - victim->in_room ? victim->in_room->area-> - name : "Unknown"); + victim->in_room ? victim->in_room-> + area->name : "Unknown"); found = TRUE; } } diff -ur src/comm.c new/comm.c --- src/comm.c Sat Feb 15 14:23:34 2003 +++ new/comm.c Sat Feb 15 14:23:25 2003 @@ -2038,184 +2038,222 @@ return; } -/* quick sex fixer */ -void fix_sex(CHAR_DATA * ch) +char *fname(const char *namelist) { - if (ch->sex < 0 || ch->sex > 2) - ch->sex = IS_NPC(ch) ? 0 : ch->pcdata->true_sex; + static char holder[256]; + char *point; + + for (point = holder; isalpha(*namelist); namelist++, point++) + *point = *namelist; + + *point = '\0'; + + return (holder); } -void act_new(const char *format, CHAR_DATA * ch, const void *arg1, - const void *arg2, flag_t type, int min_pos) +void perform_act(const char *orig, CHAR_DATA * ch, const void *arg1, + const void *arg2, flag_t type, CHAR_DATA * to) { static char *const he_she[] = { "it", "he", "she" }; static char *const him_her[] = { "it", "him", "her" }; static char *const his_her[] = { "its", "his", "her" }; - - char buf[MAX_STRING_LENGTH]; - char fname[MAX_INPUT_LENGTH]; - CHAR_DATA *to; CHAR_DATA *vch = (CHAR_DATA *) arg2; OBJ_DATA *obj1 = (OBJ_DATA *) arg1; OBJ_DATA *obj2 = (OBJ_DATA *) arg2; - const char *str; - const char *i; + const char *str, *i = NULL; char *point; + char buf[MSL]; - /* - * Discard null and zero-length messages. - */ - if (format == NULL || format[0] == '\0') - return; + point = buf; + str = orig; - /* discard null rooms and chars */ - if (ch == NULL || ch->in_room == NULL) - return; - - to = ch->in_room->first_person; - if (IS_SET(type, TO_VICT)) + while (*str != '\0') { - if (vch == NULL) + if (*str != '$') { - bug("Act: null vch with TO_VICT.", 0); - return; - } - - if (vch->in_room == NULL) - return; - - to = vch->in_room->first_person; - } - - for (; to != NULL; to = to->next_in_room) - { - if ((!IS_NPC(to) && to->desc == NULL) || - (IS_NPC(to) && to->desc == NULL - && !HAS_TRIGGER_MOB(to, TRIG_ACT)) || to->position < min_pos) - continue; - - if (IS_SET(type, TO_CHAR) && to != ch) - continue; - if (IS_SET(type, TO_VICT) && (to != vch || to == ch)) - continue; - if (IS_SET(type, TO_ROOM) && to == ch) - continue; - if (IS_SET(type, TO_NOTVICT) && (to == ch || to == vch)) + *point++ = *str++; continue; + } - point = buf; - str = format; - while (*str != '\0') + ++str; + i = "<@@@>"; + if (!arg2 && *str >= 'A' && *str <= 'Z') { - if (*str != '$') - { - *point++ = *str++; - continue; - } - ++str; - - if (arg2 == NULL && *str >= 'A' && *str <= 'Z') + logf("perform_act:missing arg2 for code %d.", *str); + i = " <@@@> "; + } + else + { + switch (*str) { - bug("Act: missing arg2 for code %d.", *str); + default: + logf("perform_act:bad code %c.", *str); i = " <@@@> "; - } - else - { - switch (*str) + break; + + case '$': + i = "$"; + break; + case 't': + if (arg1) { - default: - bug("Act: bad code %d.", *str); - i = " <@@@> "; - break; - /* Thx alex for 't' idea */ - case 't': - if (IS_SET(type, TO_DAMAGE) && !IS_NPC(to) - && !IS_SET(to->act, PLR_AUTODAMAGE)) - i = ""; + if (IS_SET(type, TO_DAMAGE) + && (IS_NPC(to) || !IS_SET(to->act, PLR_AUTODAMAGE))) + i = &str_empty[0]; else - i = (char *) arg1; - break; - case 'T': - i = (char *) arg2; - break; - case 'n': + i = (const char *) arg1; + } + else + log_string("perform_act:bad code $t for 'arg1'"); + break; + case 'T': + if (arg2) + i = (const char *) arg2; + else + log_string("perform_act:bad code $T for 'arg2'"); + break; + case 'n': + if (ch && to) i = PERS(ch, to); - break; - case 'N': + else + log_string("perform_act:bad code $n for 'ch' or 'to'"); + break; + case 'N': + if (vch && to) i = PERS(vch, to); - break; - case 'e': + else + log_string("perform_act:bad code $N for 'ch' or 'to'"); + break; + case 'e': + if (ch) i = he_she[URANGE(0, ch->sex, 2)]; - break; - case 'E': + else + log_string("perform_act:bad code $e for 'ch'"); + break; + case 'E': + if (vch) i = he_she[URANGE(0, vch->sex, 2)]; - break; - case 'm': + else + log_string("perform_act:bad code $E for 'vch'"); + break; + case 'm': + if (ch) i = him_her[URANGE(0, ch->sex, 2)]; - break; - case 'M': + else + log_string("perform_act:bad code $m for 'ch'"); + break; + case 'M': + if (vch) i = him_her[URANGE(0, vch->sex, 2)]; - break; - case 's': + else + log_string("perform_act:bad code $M for 'vch'"); + break; + case 's': + if (ch) i = his_her[URANGE(0, ch->sex, 2)]; - break; - case 'S': + else + log_string("perform_act:bad code $s for 'ch'"); + break; + case 'S': + if (vch) i = his_her[URANGE(0, vch->sex, 2)]; - break; + else + log_string("perform_act:bad code $S for 'vch'"); + break; + case 'g': + if (ch && ch->deity != -1) + i = deity_table[ch->deity].name; + else + log_string("perform_act:bad code $g for 'ch'"); + break; + case 'G': + if (vch && vch->deity != -1) + i = deity_table[vch->deity].name; + else + log_string("perform_act:bad code $G for 'vch'"); + break; + case 'c': + if (ch && ch->clan != -1) + i = clan_table[ch->clan].name; + else + log_string("perform_act:bad code $c for 'ch'"); + break; + case 'C': + if (vch && vch->clan != -1) + i = clan_table[vch->clan].name; + else + log_string("perform_act:bad code $C for 'vch'"); + break; + case 'o': + if (to && obj1) + i = can_see_obj(to, obj1) ? fname(obj1->name) : "something"; + else + log_string("perform_act:bad code $o for 'to' and 'obj1'"); + break; + + case 'O': + if (to && obj2) + i = can_see_obj(to, obj2) ? fname(obj2->name) : "something"; + else + log_string("perform_act:bad code $O for 'to' and 'obj2'"); + break; - case 'p': + case 'p': + if (to && obj1) i = can_see_obj(to, obj1) ? obj1->short_descr : "something"; - break; + else + log_string("perform_act:bad code $p for 'to' and 'obj1'"); + break; - case 'P': + case 'P': + if (to && obj2) i = can_see_obj(to, obj2) ? obj2->short_descr : "something"; - break; - case 'g': - i = ch->deity != -1 ? deity_table[ch->deity].name : "Mota"; - break; - case 'G': - i = - vch->deity != - -1 ? deity_table[vch->deity].name : "Mota"; - break; - case 'd': - if (arg2 == NULL || ((char *) arg2)[0] == '\0') - { - i = "door"; - } - else - { - one_argument((char *) arg2, fname); - i = fname; - } - break; + else + log_string("perform_act:bad code $P for 'to' and 'obj2'"); + break; + + case 'd': + if (arg2 == NULL || ((const char *) arg2)[0] == '\0') + { + i = "door"; } - } + else + { + char name[MIL]; - ++str; - while ((*point = *i) != '\0') - ++point, ++i; + one_argument((const char *) arg2, name); + i = name; + } + break; + } } - *point++ = '\n'; - *point++ = '\r'; - *point = '\0'; - buf[0] = UPPER(buf[0]); - if (to->desc != NULL) - { - if (to->desc->connected == CON_PLAYING) - write_to_buffer(to->desc, buf, point - buf); - } - else if (IS_NPC(to) && MOBtrigger) - p_act_trigger(buf, to, NULL, NULL, ch, arg1, arg2, TRIG_ACT); + ++str; + while ((*point = *i) != '\0') + ++point, ++i; } - if (IS_SET(type, TO_ROOM) || IS_SET(type, TO_NOTVICT)) + + *point++ = '{'; + *point++ = 'x'; + *point++ = '\n'; + *point++ = '\r'; + *point = '\0'; + buf[0] = UPPER(buf[0]); + if (to->desc) + { + if (to->desc->connected == CON_PLAYING) + write_to_buffer(to->desc, buf, point - buf); + } + else if (IS_NPC(to) && MOBtrigger && HAS_TRIGGER_MOB(to, TRIG_ACT)) + p_act_trigger(buf, to, NULL, NULL, ch, arg1, arg2, TRIG_ACT); + + if (ch && ch->in_room && IS_SET(type, TO_ROOM | TO_NOTVICT)) { OBJ_DATA *obj, *obj_next; CHAR_DATA *tch, *tch_next; point = buf; - str = format; + str = orig; while (*str != '\0') { *point++ = *str++; @@ -2245,6 +2283,74 @@ if (HAS_TRIGGER_ROOM(ch->in_room, TRIG_ACT)) p_act_trigger(buf, NULL, NULL, ch->in_room, ch, NULL, NULL, TRIG_ACT); + } + + return; +} + +#define SENDOK(ch, type) ((IS_NPC(ch) || ((ch)->desc && (ch->desc->connected == CON_PLAYING))) \ + && ((ch)->position >= min_pos)) + +void act_new(const char *format, CHAR_DATA * ch, const void *arg1, + const void *arg2, flag_t type, int min_pos) +{ + DESCRIPTOR_DATA *d; + ROOM_INDEX_DATA *room; + CHAR_DATA *to = (CHAR_DATA *) arg2; + + if (!format || !*format) + return; + + if (IS_SET(type, TO_CHAR)) + { + if (ch && SENDOK(ch, type)) + perform_act(format, ch, arg1, arg2, type, ch); + } + + if (IS_SET(type, TO_VICT)) + { + if (to && SENDOK(to, type) && to != ch) + perform_act(format, ch, arg1, arg2, type, to); + } + + if (IS_SET(type, TO_ZONE | TO_ALL)) + { + for (d = descriptor_first; d; d = d->next) + { + CHAR_DATA *vch = CH(d); + + if (vch && SENDOK(vch, type) && (vch != ch) + && + ((IS_SET + (type, TO_ALL) || (vch->in_room + && vch->in_room->area == + ch->in_room->area)))) + perform_act(format, ch, arg1, arg2, type, vch); + } + } + + if (IS_SET(type, TO_ROOM | TO_NOTVICT)) + { + OBJ_DATA *obj1 = (OBJ_DATA *) arg1; + OBJ_DATA *obj2 = (OBJ_DATA *) arg2; + + if (ch && ch->in_room != NULL) + room = ch->in_room; + else if (obj1 && obj1->in_room != NULL) + room = obj1->in_room; + else if (obj2 && obj2->in_room != NULL) + room = obj2->in_room; + else + { + bugf("no valid target '%s'", format); + return; + } + for (to = room->first_person; to; to = to->next_in_room) + { + if (SENDOK(to, type) && (to != ch) + && (IS_SET(type, TO_ROOM) || (to != (CHAR_DATA *) arg2))) + perform_act(format, ch, arg1, arg2, type, to); + } } return; } diff -ur src/db.c new/db.c --- src/db.c Sat Feb 15 14:23:34 2003 +++ new/db.c Sat Feb 15 14:23:25 2003 @@ -156,8 +156,8 @@ * Set time and weather. */ { - log_string("Setting time and weather..."); long lhour, lday, lmonth; + log_string("Setting time and weather..."); lhour = (current_time - 650336715) / (PULSE_TICK / PULSE_PER_SECOND); time_info.hour = lhour % 24; diff -ur src/db2.c new/db2.c --- src/db2.c Sat Feb 15 14:23:34 2003 +++ new/db2.c Sat Feb 15 14:23:25 2003 @@ -442,7 +442,7 @@ pObjIndex->last_extra_descr, next, prev); top_ed++; } - else if (letter == 'O') + else if (pletter == 'O') { PROG_LIST *pOprog; const char *word; diff -ur src/dofun.h new/dofun.h --- src/dofun.h Sat Feb 15 14:23:35 2003 +++ new/dofun.h Sat Feb 15 14:23:26 2003 @@ -313,5 +313,7 @@ COMMAND_FUN (do_slist) COMMAND_FUN (do_worship) COMMAND_FUN (do_dedit) +COMMAND_FUN (do_nogocial) +COMMAND_FUN (do_ooc) // *INDENT-ON* diff -ur src/fight.c new/fight.c --- src/fight.c Sat Feb 15 14:23:34 2003 +++ new/fight.c Sat Feb 15 14:23:25 2003 @@ -3112,9 +3112,8 @@ if ((pexit = was_in->exit[door]) == 0 || pexit->u1.to_room == NULL || IS_SET(pexit->exit_info, EX_CLOSED) || number_range(0, ch->daze) != 0 || (IS_NPC(ch) && - IS_SET(pexit->u1. - to_room->room_flags, - ROOM_NO_MOB))) + IS_SET(pexit->u1.to_room-> + room_flags, ROOM_NO_MOB))) continue; move_char(ch, door, FALSE); diff -ur src/handler.c new/handler.c --- src/handler.c Sat Feb 15 14:23:34 2003 +++ new/handler.c Sat Feb 15 14:23:25 2003 @@ -2464,8 +2464,8 @@ victim->in_room && IS_SET - (victim->in_room-> - room_flags, + (victim-> + in_room->room_flags, ROOM_ARENA))) return TRUE; diff -ur src/magic.c new/magic.c --- src/magic.c Sat Feb 15 14:23:34 2003 +++ new/magic.c Sat Feb 15 14:23:25 2003 @@ -286,8 +286,8 @@ if ((sn = find_spell(ch, arg1)) < 1 || skill_table[sn].spell_fun == spell_null || (!IS_NPC(ch) && (!can_use_skpell(ch, sn) - || ch->pcdata-> - learned[sn] == 0))) + || ch-> + pcdata->learned[sn] == 0))) { chprintln(ch, "You don't know any spells of that name."); return; @@ -2788,9 +2788,7 @@ || IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL) || IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL) || (IS_NPC(victim) && is_gqmob(ch, - victim-> - pIndexData-> - vnum) + victim->pIndexData->vnum) != -1) || (IS_NPC(victim) && IS_QUESTOR(ch) && ch->pcdata->questmob == victim->pIndexData->vnum) diff -ur src/magic2.c new/magic2.c --- src/magic2.c Sat Feb 15 14:23:34 2003 +++ new/magic2.c Sat Feb 15 14:23:25 2003 @@ -64,7 +64,9 @@ || IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL) || IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL) || (IS_NPC(victim) && is_gqmob(ch, - victim->pIndexData->vnum) + victim-> + pIndexData-> + vnum) != -1) || (IS_NPC(victim) && IS_QUESTOR(ch) && ch->pcdata->questmob == victim->pIndexData->vnum) @@ -123,10 +125,17 @@ || IS_SET(to_room->room_flags, ROOM_ARENA) || IS_SET(from_room->room_flags, ROOM_ARENA) || (IS_NPC(victim) && is_gqmob(ch, - victim->pIndexData->vnum) - != -1) - || (IS_NPC(victim) && IS_QUESTOR(ch) - && ch->pcdata->questmob == victim->pIndexData->vnum) + victim-> + pIndexData-> + vnum) != + -1) || (IS_NPC(victim) + && + IS_QUESTOR(ch) + && ch->pcdata-> + questmob == + victim-> + pIndexData-> + vnum) || victim->level >= level + 3 || (!IS_NPC(victim) && victim->level >= LEVEL_HERO) /* NOT trust */ || (IS_NPC(victim) && IS_SET(victim->imm_flags, IMM_SUMMON)) || (IS_NPC(victim) && saves_spell(level, victim, DAM_NONE)) diff -ur src/merc.h new/merc.h --- src/merc.h Sat Feb 15 14:23:35 2003 +++ new/merc.h Sat Feb 15 14:23:26 2003 @@ -467,6 +467,14 @@ #define TO_CHAR BIT_D #define TO_ALL BIT_E #define TO_DAMAGE BIT_F +#define TO_ZONE BIT_G + +enum special_flags +{ + spec_public_flag, + spec_clan_flag, + spec_imm_flag +}; /* * Help table types. @@ -1406,6 +1414,8 @@ #define COMM_NOCHANNELS (BIT_W) #define COMM_SNOOP_PROOF (BIT_Y) #define COMM_AFK (BIT_Z) +#define COMM_NOGOCIAL (BIT_a) +#define COMM_NOOOC (BIT_b) /* WIZnet flags */ #define WIZ_ON (BIT_A) diff -ur src/mob_cmds.c new/mob_cmds.c --- src/mob_cmds.c Sat Feb 15 14:23:34 2003 +++ new/mob_cmds.c Sat Feb 15 14:23:25 2003 @@ -1340,8 +1340,8 @@ || IS_SET(pexit->exit_info, EX_CLOSED) || (IS_NPC(ch) && IS_SET - (pexit->u1. - to_room->room_flags, + (pexit->u1.to_room-> + room_flags, ROOM_NO_MOB))) continue; @@ -1792,8 +1792,8 @@ { if ((vobj = get_obj_here(NULL, - obj->in_room ? obj->in_room : obj-> - carried_by->in_room, arg))) + obj->in_room ? obj->in_room : obj->carried_by-> + in_room, arg))) { extract_obj(vobj); } @@ -2026,8 +2026,8 @@ if ((victim = get_char_room(NULL, - (obj->in_room) ? obj->in_room : obj-> - carried_by->in_room, arg)) == NULL) + (obj->in_room) ? obj->in_room : obj->carried_by-> + in_room, arg)) == NULL) return; interpret(victim, argument); @@ -2119,8 +2119,8 @@ fAll = TRUE; else if ((victim = get_char_room(NULL, - obj->in_room ? obj->in_room : obj-> - carried_by->in_room, target)) == NULL) + obj->in_room ? obj->in_room : obj->carried_by-> + in_room, target)) == NULL) return; if (is_number(min)) @@ -2228,8 +2228,8 @@ if (!IS_NULLSTR(arg)) vch = get_char_room(NULL, - obj->in_room ? obj->in_room : obj-> - carried_by->in_room, arg); + obj->in_room ? obj->in_room : obj->carried_by-> + in_room, arg); argument = one_argument(argument, arg); if (!IS_NULLSTR(arg)) obj1 = @@ -2355,8 +2355,8 @@ } else if ((ch = get_char_room(NULL, - obj->in_room ? obj->in_room : obj-> - carried_by->in_room, target)) == NULL) + obj->in_room ? obj->in_room : obj->carried_by-> + in_room, target)) == NULL) return; if (!str_cmp(arg1, "none")) diff -ur src/mob_prog.c new/mob_prog.c --- src/mob_prog.c Sat Feb 15 14:23:34 2003 +++ new/mob_prog.c Sat Feb 15 14:23:26 2003 @@ -296,8 +296,8 @@ || (iFlag == 2 && IS_NPC(vch)) || (iFlag == 3 && IS_NPC(mob) && IS_NPC(vch) - && mob-> - pIndexData->vnum == + && mob->pIndexData-> + vnum == vch->pIndexData->vnum) || (iFlag == 4 && is_same_group(mob, vch))) && can_see(mob, vch)) @@ -1021,8 +1021,8 @@ else if (lval_obj != NULL && (lval_obj->in_room != NULL || lval_obj->carried_by != NULL)) lval = - lval_obj->in_room ? lval_obj->in_room->vnum : lval_obj-> - carried_by->in_room->vnum; + lval_obj->in_room ? lval_obj->in_room-> + vnum : lval_obj->carried_by->in_room->vnum; break; case CHK_SEX: if (lval_char != NULL) @@ -1331,8 +1331,8 @@ else if (lval_obj != NULL && (lval_obj->in_room != NULL || lval_obj->carried_by != NULL)) lval = - lval_obj->in_room ? lval_obj->in_room->vnum : lval_obj-> - carried_by->in_room->vnum; + lval_obj->in_room ? lval_obj->in_room-> + vnum : lval_obj->carried_by->in_room->vnum; break; case CHK_SEX: if (lval_char != NULL) @@ -1441,8 +1441,8 @@ case 'N': i = (ch != NULL && can_see(mob, - ch)) ? (IS_NPC(ch) ? ch->short_descr : ch-> - name) : someone; + ch)) ? (IS_NPC(ch) ? ch-> + short_descr : ch->name) : someone; break; case 't': i = someone; @@ -1455,8 +1455,8 @@ case 'T': i = (vch != NULL && can_see(mob, - vch)) ? (IS_NPC(vch) ? vch->short_descr : vch-> - name) : someone; + vch)) ? (IS_NPC(vch) ? vch-> + short_descr : vch->name) : someone; break; case 'r': if (rch == NULL) @@ -1473,8 +1473,8 @@ rch = get_random_char(mob, NULL, NULL); i = (rch != NULL && can_see(mob, - rch)) ? (IS_NPC(ch) ? ch->short_descr : ch-> - name) : someone; + rch)) ? (IS_NPC(ch) ? ch-> + short_descr : ch->name) : someone; break; case 'q': i = someone; @@ -1488,10 +1488,10 @@ i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? (IS_NPC(mob->mprog_target) ? + mob-> + mprog_target->short_descr : mob->mprog_target-> - short_descr : mob-> - mprog_target->name) : - someone; + name) : someone; break; case 'j': i = he_she[URANGE(0, mob->sex, 2)]; @@ -1513,9 +1513,7 @@ case 'X': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? he_she[URANGE(0, - mob-> - mprog_target-> - sex, + mob->mprog_target->sex, 2)] : someone; break; @@ -1542,9 +1540,7 @@ case 'Y': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? him_her[URANGE(0, - mob-> - mprog_target-> - sex, + mob->mprog_target->sex, 2)] : someone; break; @@ -1571,9 +1567,7 @@ case 'Z': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? his_her[URANGE(0, - mob-> - mprog_target-> - sex, + mob->mprog_target->sex, 2)] : someones; break; @@ -1739,14 +1733,13 @@ case 'Q': i = (obj && obj->oprog_target != - NULL) ? (IS_NPC(obj->oprog_target) ? obj->oprog_target-> - short_descr : obj->oprog_target->name) : (room - && room-> - rprog_target - != - NULL) - ? (IS_NPC(room->rprog_target) ? room->rprog_target-> - short_descr : room->rprog_target->name) : someone; + NULL) ? (IS_NPC(obj->oprog_target) ? obj-> + oprog_target->short_descr : obj->oprog_target-> + name) : (room + && room->rprog_target != + NULL) ? (IS_NPC(room->rprog_target) ? room-> + rprog_target->short_descr : room-> + rprog_target->name) : someone; break; case 'j': bug("Obj/room received case 'j'", 0); @@ -1764,15 +1757,13 @@ case 'X': i = (obj && obj->oprog_target != NULL) ? he_she[URANGE(0, - obj-> - oprog_target-> - sex, 2)] : (room - && - room-> - rprog_target - != - NULL) - ? he_she[URANGE(0, room->rprog_target->sex, 2)] : someone; + obj->oprog_target->sex, + 2)] : (room + && + room->rprog_target + != + NULL) ? + he_she[URANGE(0, room->rprog_target->sex, 2)] : someone; break; case 'k': bug("received case 'k'.", 0); @@ -1794,15 +1785,13 @@ case 'Y': i = (obj && obj->oprog_target != NULL) ? him_her[URANGE(0, - obj-> - oprog_target-> - sex, 2)] : (room - && - room-> - rprog_target - != - NULL) - ? him_her[URANGE(0, room->rprog_target->sex, 2)] : someone; + obj->oprog_target->sex, + 2)] : (room + && + room->rprog_target + != + NULL) ? + him_her[URANGE(0, room->rprog_target->sex, 2)] : someone; break; case 'l': bug("received case 'l'.", 0); @@ -1824,15 +1813,13 @@ case 'Z': i = (obj && obj->oprog_target != NULL) ? his_her[URANGE(0, - obj-> - oprog_target-> - sex, 2)] : (room - && - room-> - rprog_target - != - NULL) - ? his_her[URANGE(0, room->rprog_target->sex, 2)] : someones; + obj->oprog_target->sex, + 2)] : (room + && + room->rprog_target + != + NULL) ? + his_her[URANGE(0, room->rprog_target->sex, 2)] : someones; break; case 'o': i = something; diff -ur src/nanny.c new/nanny.c --- src/nanny.c Sat Feb 15 14:23:34 2003 +++ new/nanny.c Sat Feb 15 14:23:26 2003 @@ -216,8 +216,8 @@ if (str_cmp (ch->name, - d_old->original ? d_old->original->name : d_old-> - character->name)) + d_old->original ? d_old->original->name : d_old->character-> + name)) continue; close_socket(d_old); diff -ur src/olc_act.c new/olc_act.c --- src/olc_act.c Sat Feb 15 14:23:34 2003 +++ new/olc_act.c Sat Feb 15 14:23:26 2003 @@ -820,8 +820,9 @@ #if 0 /* ROM OLC */ chprintlnf(ch, "Recall: [%5d] %s", pArea->recall, - get_room_index(pArea->recall) ? get_room_index(pArea->recall)-> - name : "none"); + get_room_index(pArea->recall) ? get_room_index(pArea-> + recall)->name : + "none"); #endif /* ROM */ chprintlnf(ch, "File: %s", pArea->file_name); @@ -2067,8 +2068,9 @@ "[v4] Weight Mult [%ld]", obj->value[0], flag_string(container_flags, obj->value[1]), get_obj_index(obj->value[2]) ? get_obj_index(obj->value - [2])->short_descr - : "none", obj->value[2], obj->value[3], obj->value[4]); + [2])-> + short_descr : "none", obj->value[2], obj->value[3], + obj->value[4]); break; case ITEM_DRINK_CON: diff -ur src/proto.h new/proto.h --- src/proto.h Sat Feb 15 14:23:35 2003 +++ new/proto.h Sat Feb 15 14:23:26 2003 @@ -66,6 +66,10 @@ const char *string, ...)) __attribute__ ((format(printf, 4, 5))); bool is_ansi_printed_char args((char c)); +void public_ch args((CHAR_DATA * ch, const char *argument, + const char *type, flag_t bitname, + enum special_flags spec_flag)); + /* act_enter.c */ RID *get_random_room args((CHAR_DATA * ch)); @@ -111,6 +115,9 @@ void act_new args((const char *format, CHAR_DATA * ch, const void *arg1, const void *arg2, flag_t type, int min_pos)); +void perform_act args((const char *orig, CHAR_DATA * ch, const void *arg1, + const void *arg2, flag_t type, CHAR_DATA * to)); + void chprintf args((CHAR_DATA *, char *, ...)) __attribute__ ((format(printf, 2, 3))); void chprintlnf args((CHAR_DATA *, char *, ...)) diff -ur src/save.c new/save.c --- src/save.c Sat Feb 15 14:23:35 2003 +++ new/save.c Sat Feb 15 14:23:26 2003 @@ -270,7 +270,7 @@ fprintf(fp, "Shares %d\n", ch->pcdata->shares); if (ch->deity != -1) - fprintf(fp, "Deity %s\n", deity_table[ch->deity].name); + fprintf(fp, "Deity %s~\n", deity_table[ch->deity].name); if (ON_GQUEST(ch) || (gquest_info.running != GQUEST_OFF && count_gqmobs(ch) == gquest_info.mob_count)) @@ -466,7 +466,7 @@ if (!ch) fprintf(fp, "Where %ld\n", where); if (obj->owner != NULL) - fprintf(fp, "Owner %s\n", obj->owner); + fprintf(fp, "Owner %s~\n", obj->owner); if (!obj->pIndexData->new_format) fprintf(fp, "Oldstyle\n"); if (obj->enchanted) @@ -1564,6 +1564,7 @@ { obj = create_object(get_obj_index(vnum), -1); new_format = TRUE; + fVnum = TRUE; } } diff -ur src/tables.c new/tables.c --- src/tables.c Sat Feb 15 14:23:35 2003 +++ new/tables.c Sat Feb 15 14:23:26 2003 @@ -288,6 +288,8 @@ {"afk", COMM_AFK, TRUE}, {"nocolour", COMM_NOCOLOUR, TRUE}, {"telnet_eor", COMM_TELNET_EOR, TRUE}, + {"nogocial", COMM_NOGOCIAL, TRUE}, + {"noooc", COMM_NOOOC, TRUE}, {NULL, 0, 0} }; diff -ur src/tablesave.c new/tablesave.c --- src/tablesave.c Sat Feb 15 14:23:35 2003 +++ new/tablesave.c Sat Feb 15 14:23:26 2003 @@ -723,8 +723,8 @@ fprintf(fp, "%s\t\t", temp->field); for (i = 0; i < - (temp->argument ? (int) temp-> - argument : *(int *) temp->argument2); i++) + (temp->argument ? (int) temp->argument : *(int *) temp-> + argument2); i++) fprintf(fp, "%d ", pbool[i] == TRUE ? 1 : 0); fprintf(fp, "@\n"); break; diff -ur src/webserver.c new/webserver.c --- src/webserver.c Sat Feb 15 14:23:35 2003 +++ new/webserver.c Sat Feb 15 14:23:26 2003 @@ -1055,8 +1055,8 @@ else if (victim->in_room == victim->fighting->in_room) { strcat(buf, - IS_NPC(victim) ? victim->fighting-> - short_descr : victim->fighting->name); + IS_NPC(victim) ? victim->fighting->short_descr : victim-> + fighting->name); strcat(buf, "."); } else @@ -1549,7 +1549,7 @@ { if (cmd_table[i].level >= LEVEL_IMMORTAL) continue; - + count = 0; for (pHelp = help_first; pHelp; pHelp = pHelp->next) { count++;