static ping(s)
{
object ob;
int privacy_room;
if (spell_points < 3)
{
write("You are low on power.\n");
return 1;
}
if (!s)
{
write("Ping whom?\n");
return 1;
}
if (level < LEVEL_WIZARD)
spell_points -= 3;
it = lower_case(s);
ob = find_living(it);
if (!ob)
{
write("No player with that name.\n");
return 1;
}
if (!catch(privacy_room = environment(ob)->query_prop(PPRIVATE)))
if (privacy_room)
{
write("No player with that name.\n");
ob->catch_ping();
return (1);
}
if (!(ob->catch_ping()))
{
write("Can't ping "+s+".\n");
return 1;
}
write("You ping "+capitalize(s)+".\n");
return (1);
}
catch_ping()
{
string n, pinger;
pinger = this_player();
previous_object()->set_pinger(pinger);
if (!pinger)
return 0;
n = pinger->query_real_name();
if (!n)
return pinger=0;
tell_object(this_object(), capitalize(n)+" pings you." + sprintf("%c", 7) + "\n");
return 1;
}
static pong()
{
string n, pinger;
if (pinger = previous_object()->query_pinger())
n = pinger->query_real_name();
if (!(pinger && n))
{
pinger = 0;
write("No one has pinged you.\n");
return 1;
}
tell_object(pinger, capitalize(name) + " pongs back.\n");
pinger = 0;
write("You pong back to " + capitalize(n) + ".\n");
return (1);
}