/
lib/banish/
lib/d/
lib/doc/
lib/doc/domains/
lib/doc/efun/
lib/doc/examples/
lib/doc/examples/armour/
lib/doc/examples/contain/
lib/doc/examples/food/
lib/doc/examples/magic/
lib/doc/examples/monster/
lib/doc/examples/room/
lib/doc/examples/weapons/
lib/function/
lib/include/
lib/include/fn_specs/
lib/include/skills/
lib/info/
lib/inherit/base/
lib/log/
lib/manuals/312/
lib/news/
lib/obj/party/
lib/objects/components/
lib/open/
lib/open/library/
lib/open/party/
lib/players/
lib/players/zilanthius/
lib/room/
lib/room/city/arena/
lib/room/city/creator/
lib/room/city/garden/monst/
lib/room/city/obj/
lib/room/city/shop/
lib/room/death/
lib/room/registry/
lib/secure/
lib/secure/UDP_CMD_DIR/
lib/skills/
lib/skills/fighter/
lib/skills/thief/
lib/usr/
lib/usr/creators/
lib/usr/players/
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);
}