// /std/living/messages.c
// from the Nightmare mudlib
// inheritable code for all the nifty messages of motion
// originally from the TMI distribution mudlib
int peds_gone();
string validate(string str, string *vars) {
string foo;
int x, tmp;
if( !str ) return "";
for(x=0, tmp = sizeof(vars); x<tmp; x++)
if(!(sscanf(str, "%s"+vars[x]+"%*s", foo)))
return "";
return str;
}
string query_min() {
int tmp;
string str;
str = (string)this_object()->getenv("MIN");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N enters.";
tmp = peds_gone();
if(tmp == 1) str = "$N enters with a limp.";
else if(tmp) str = "$N crawls in.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
string query_mout(string dir) {
int tmp;
string str;
str = (string)this_object()->getenv("MOUT");
str = validate( str, ({ "$N", "$D" }) );
if( str == "" ) str = "$N leaves $D.";
tmp = peds_gone();
if(tmp == 1) str = "$N limps $D.";
else if(tmp) str = "$N crawls $D.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
if (dir == "" || dir == 0) return str;
str = substr( str, "$D", dir );
return str;
}
string query_mmin() {
string str;
str = (string)this_object()->getenv("MMIN");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N appears from the shadows.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
string query_mmout() {
string str;
str = (string)this_object()->getenv("MMOUT");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N fades into the shadows.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
string query_mhome() {
string str;
str = (string)this_object()->getenv("MHOME");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N heads home.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
string query_mdest(object obj) {
string str;
str = (string)this_object()->getenv("MDEST");
str = validate( str, ({ "$N", "$O" }) );
if(!str || str == "") str = "$N disintegrates $O";
str = replace_string(str, "$N", (string)this_object()->query_cap_name());
if (obj == 0) return str;
if( obj->query_short() )
str = substr( str, "$O", (string)obj->query_short() );
else
str = substr( str, "$O", "something" );
return str;
}
string query_mclone(object obj) {
string str;
str = (string)this_object()->getenv("MCLONE");
str = validate( str, ({ "$N", "$O" }) );
if( str == "" ) str = "$N gets creative and makes $O.";
str = substr( str, "$N", (string)this_player()->query_cap_name() );
if (obj == 0) return str;
if( obj->query_short() )
str = substr( str, "$O", (string)obj->query_short() );
else str = substr( str, "$O", "something" );
return str;
}
string query_mvis() {
string str;
str = (string)this_object()->getenv("MVIS");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N appears out of the corner of your eye.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
string query_minvis() {
string str;
str = (string)this_object()->getenv("MINVIS");
str = validate( str, ({ "$N" }) );
if( str == "" ) str = "$N seems to dissapear.";
str = substr( str, "$N", (string)this_object()->query_cap_name() );
return str;
}
int peds_gone() {
string blah;
string *peds;
int i, ret, tmp;
peds = (string *)this_object()->query_severed_limbs();
if(!peds) return 0;
for(i=0, tmp = sizeof(peds); i<tmp; i++) {
ret += sscanf(peds[i], "%sfoot%*s", blah);
ret += sscanf(peds[i], "%spaw%*s", blah);
}
return ret;
}