#include <std.h>
#include <daemons.h>
#include <tell.h>
inherit DAEMON;
int cmd_tell(string str) {
string tell_msg, who, target, mud, msg;
object ob;
if (!str || sscanf(str,"%s %s",who,msg) != 2) {
notify_fail("usage: tell <player> <message>\n");
return 0;
}
if(sscanf(lower_case(who),"%s@%s",target,mud) == 2) {
if(!NETWORK_D->mud_exists(mud))
return notify_fail("That mud is not listed with "+mud_name()+".\n");
SERVICES_D->send_gtell(mud, target, msg);
return 1;
}
if(!(ob = find_player(who = lower_case(who))) &&
!(ob = find_living(who = lower_case(who)))) {
notify_fail(capitalize(who)+NOT_HERE+"\n");
return 0;
}
if(ob->query_invis() && creatorp(ob)) {
message("info", sprintf("%s%s", capitalize(who), NOT_HERE),
this_player());
message("tell", sprintf("%s is unaware of telling you: %s",
(string)this_player()->query_cap_name(), msg), ob);
ob->set_property("reply", (string)this_player()->query_name());
return 1;
}
if(ob->query_blocked("tell")) {
write(ob->query_cap_name()+" is currently blocking all tells.");
return 1;
}
if(ob->is_player() && !interactive(ob)) {
notify_fail(ob->query_cap_name()+" is link-dead and cannot hear you.\n");
return 0;
}
message("tell", (string)this_player()->query_cap_name() + " tells you: "+
msg, ob);
ob->set_property("reply", (string)this_player()->query_name());
message("tell", sprintf("You tell %s: %s", (string)ob->query_cap_name(),
msg), this_player());
if(!ob->is_player()) return 1;
if(query_idle(ob) > IDLE_TIME)
write(ob->query_cap_name() +
" is idle, and may not have been paying attention.");
if(in_edit(ob) || in_input(ob))
message("info", (string)ob->query_cap_name()+" is in edit and may "+
"not be in a position to respond.", this_player());
return 1;
}
void help() {
message("help",
"Syntax: <tell [player] [message]>\n"
" <tell [player]@[mud] [message]>\n\n"
"Sends the message to the player named either on this mud if no "
"mud is specified, or to the player named on another mud when "
"another mud is specified. For muds with more than one word in their "
"names, use . (periods) to take place of spaces. Example: tell "
"descartes@realms.of.chaos hi\n\n"
"See also: say, shout, yell, emote", this_player()
);
}
string morse(string msg) {
mapping __Morse;
string tmp;
int x, i;
__Morse = ([ "a" : ".-", "b" : "-...", "c" : "-.-.",
"d" : "-..", "e" : ".", "f" : "..-.", "g" : "--.", "h" : "....", "i" : "..",
"j" : ".---", "k" : "-.-", "l" : ".-..", "m" : "--", "n" : "-.", "o" : "---",
"p" : ".--.", "q" : "--.-", "r" : " .-.", "s" : "...", "t" : "-", "u" : "..-",
"v" : "...-", "w" : ".--", "x" : "-..-", "y" : "-.--", "z" : "--..",
"1" : ".----", "2" : "..---", "3" : "...--", "4" : "....-", "5" : ".....",
"6" : " -....", "7" : "--...", "8" : "---..", "9" : "----.","0" : " -----" ]);
for(tmp = "", x = strlen(msg), i=0; i< x; i++) {
if(__Morse[msg[i..i]]) tmp += __Morse[msg[i..i]]+" ";
else tmp += msg[i..i]+ " ";
}
return tmp;
}