varargs void message_vision(string msg, object me, object you) { string my_gender, your_gender, my_name, your_name; string str1, str2, str3; my_name= me->name(); my_gender = me->query("gender"); str1 = replace_string(msg, "$P", gender_self(my_gender)); str1 = replace_string(str1, "$N", gender_self(my_gender)); str3 = replace_string(msg, "$P", my_name); str3 = replace_string(str3, "$N", my_name); if( you ) { your_name= you->name(); your_gender= you->query("gender"); str2 = replace_string(msg, "$P", gender_pronoun(my_gender)); str2 = replace_string(str2, "$p", gender_self(your_gender)); str2 = replace_string(str2, "$N", my_name); str2 = replace_string(str2, "$n", gender_self(your_gender)); message("vision", str2, you); str1 = replace_string(str1, "$p", gender_pronoun(your_gender)); str1 = replace_string(str1, "$n", your_name); str3 = replace_string(str3, "$p", your_name); str3 = replace_string(str3, "$n", your_name); } message("vision", str1, me); message("vision", str3, environment(me), ({ me, you}) );
// command_hook() of F_COMMAND call this as an alternate command processor. // CHANNEL_D also calls this to get emote message. varargs mixed do_emote(object me, string verb, string arg, int channel_emote, int rumor_emote, int intermud) // intermud portion added by mon. 10/1/97 { string str, my_gender, target_gender, msg_postfix; object target; string if_execute; string user_emote; if( !environment(me) ) return 0; // if ( !mapp(emote) || undefinedp(emote[verb]) ) return 0; if ( !mapp(emote) ) return 0; if(undefinedp(emote[verb])) { if(!channel_emote) return 0; if(verb[0] < 0x80) return 0; if(rumor_emote) user_emote = "某人" + verb + "\n"; else { if(!channel_emote || ! intermud) user_emote = me->name() + "$E_CLR$" + verb + "\n"; else user_emote = "$N" + verb + "\n"; } return user_emote; } // Determine the pattern to be searched and the target. if ( stringp(arg) && arg != "" ) { target = present(arg, environment(me)); if(!objectp(target)) { // If not channel emote, only search target in our environment. if(!channel_emote) return 0; target = find_player(arg); if( !objectp(target) ) return 0; } if( !target->is_character() || !me->visible(target) ) return notify_fail("你要对谁做这个动作?\n"); target_gender = target->query("gender"); if( target==me ) { msg_postfix = "_self"; target = 0; } else msg_postfix = "_target"; } else msg_postfix = ""; //mon 9/15/97. for emote flooding. if(!channel_emote) { if(!"/adm/daemons/tempd"->block_tell(me)) return 1; } my_gender = me->query("gender"); if_execute = ""; if( stringp(str = emote[verb]["myself" + msg_postfix]) ) { if_execute = " "; if(rumor_emote) str = replace_string(str, "$N", "某人"); else str = replace_string(str, "$N", me->name() + "$E_CLR$"); str = replace_string(str, "$P", gender_self(my_gender)); str = replace_string(str, "$S", RANK_D->query_self(me)); str = replace_string(str, "$s", RANK_D->query_self_rude(me)); if( objectp(target) ) { str = replace_string(str, "$C", RANK_D->query_respect(me)); str = replace_string(str, "$c", RANK_D->query_rude(me)); str = replace_string(str, "$R", RANK_D->query_respect(target)); str = replace_string(str, "$r", RANK_D->query_rude(target)); str = replace_string(str, "$n", target->name() + "$E_CLR$"); str = replace_string(str, "$p", gender_pronoun(target_gender)); } if( !channel_emote ) message("emote", E_CLR + replace_string(str, "$E_CLR$", E_CLR) + NOR, me); } if( objectp(target) && stringp(str = emote[verb]["target"]) ) { if_execute = " "; if(rumor_emote) str = replace_string(str, "$N", "某人"); else str = replace_string(str, "$N", me->name() + "$E_CLR$"); str = replace_string(str, "$P", gender_pronoun(my_gender)); str = replace_string(str, "$S", RANK_D->query_self(me)); str = replace_string(str, "$s", RANK_D->query_self_rude(me)); str = replace_string(str, "$C", RANK_D->query_respect(me)); str = replace_string(str, "$c", RANK_D->query_rude(me)); str = replace_string(str, "$R", RANK_D->query_respect(target)); str = replace_string(str, "$r", RANK_D->query_rude(target)); str = replace_string(str, "$n", target->name() + "$E_CLR$"); str = replace_string(str, "$p", gender_self(target_gender)); if( !channel_emote ) message("emote", E_CLR + replace_string(str, "$E_CLR$", E_CLR) + NOR, target); } if( stringp(str = emote[verb]["others"+msg_postfix]) ) { if_execute = " "; if(rumor_emote) str = replace_string(str, "$N", "某人"); else if(!channel_emote || !intermud) str = replace_string(str, "$N", me->name() + "$E_CLR$"); str = replace_string(str, "$P", gender_pronoun(my_gender)); str = replace_string(str, "$S", RANK_D->query_self(me)); str = replace_string(str, "$s", RANK_D->query_self_rude(me)); if( objectp(target) ) { str = replace_string(str, "$C", RANK_D->query_respect(me)); str = replace_string(str, "$c", RANK_D->query_rude(me)); str = replace_string(str, "$R", RANK_D->query_respect(target)); str = replace_string(str, "$r", RANK_D->query_rude(target)); str = replace_string(str, "$n", target->name() + "$E_CLR$"); str = replace_string(str, "$p", gender_pronoun(target_gender)); } if( !channel_emote ) { message("emote", E_CLR + replace_string(str, "$E_CLR$", E_CLR) + NOR, environment(me), ({me, target})); if (environment(me)->query("broadcast")) environment(me)->broadcast(E_CLR + replace_string(str, "$E_CLR$", E_CLR) + NOR); } else return str;