Exemplo n.º 1
0
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}) );
Exemplo n.º 2
0
// 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;