62 lines
2.1 KiB
C
62 lines
2.1 KiB
C
/* /lib/messages.c
|
|
* from the Dead Souls Object Library
|
|
* handles special messages such as leaving, coming, saying, etc.
|
|
* created by Descartes of Borg 950428
|
|
*/
|
|
|
|
|
|
#include "include/messages.h"
|
|
|
|
private mapping Messages;
|
|
|
|
static void create(){
|
|
Messages = ([ "come" : "$N enters.", "leave" : "$N leaves $D.",
|
|
"telin" : "$N teleports in.", "telout" : "$N teleports away.",
|
|
"home" : "$N goes home.", "vis" : "$N appears.",
|
|
"invis": "$N disappears.", "clone" : "$N clones $O.",
|
|
"dest" : "$N dests $O." ]);
|
|
}
|
|
|
|
string SetMessage(string msg, string str){
|
|
if(!stringp(msg) || !stringp(str)) error("Bad argument to SetMessage().");
|
|
switch(msg){
|
|
case "come": case "leave": case "telin": case "telout": case "home":
|
|
case "say": case "ask": case "exclaim": case "login": case "logout":
|
|
case "dest": case "clone": case "vis" : case "invis" :
|
|
return (Messages[msg] = str);
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
varargs string GetMessage(string msg, mixed arg){
|
|
string tmp, tmp2;
|
|
|
|
if( !stringp(msg) ) return 0;
|
|
if( !(tmp = Messages[msg]) ) return 0;
|
|
if(!stringp(tmp) || !sizeof(tmp)) return 0;
|
|
switch(msg){
|
|
case "dest": case "clone":
|
|
if(stringp(tmp2 = arg->GetShort()))
|
|
tmp = replace_string(tmp, "$O", tmp2);
|
|
break;
|
|
case "leave":
|
|
if(stringp(arg) && strsrch(arg, "$N") == -1)
|
|
tmp = replace_string(tmp, "$D", arg);
|
|
break;
|
|
//The following case is a bugfix courtesy of Memrosh @ Ascension
|
|
case "come":
|
|
if(stringp(arg)){ tmp = arg;}
|
|
break;
|
|
case "say": case "ask": case "exclaim": return tmp;
|
|
case "login": case "logout":
|
|
tmp = replace_string(tmp, "$M", mud_name());
|
|
break;
|
|
}
|
|
if(strsrch(tmp, "$N") == -1) tmp = "$N "+tmp;
|
|
return capitalize(replace_string(tmp, "$N", this_object()->GetName()));
|
|
}
|
|
|
|
string GetName(){ return 0; }
|
|
|
|
mapping GetMessages(){ return copy(Messages); }
|