/*
* social.h
*/
int social_room(player * p, char *str, int try_room, char *msg) {
player *p2;
char *oldstack;
p2 = find_player_global(str);
if (!p2) return 0;
/* add nasty remarks later */
if (p==p2) {
TELLPLAYER(p, " You spoon -- thats YOU!\n");
return 0;
}
oldstack = stack;
if (try_room && p2->location && p->location
&& p2->location == p->location) /* same room */
{
sprintf(stack, "%s | %s", msg, p2->name);
stack = end_string(stack);
send_to_room(p, oldstack, 0, 1);
} else {
sprintf(stack, "%s %s", p2->name, msg);
stack = end_string(stack);
remote_cmd(p, oldstack, 0);
}
stack = oldstack;
return 1;
}
/* type COMPOUND: Can be done to a room or to a person */
void social_smile(player * p, char *str) {
if (!*str) {
send_to_room(p, "smiles happily", 0, 1);
TELLPLAYER(p, " You smile happily\n");
return;
}
if (social_room(p,str,1,"smiles happily at you.")) {
TELLPLAYER(p, " You smile broadly at %s\n", str);
}
}
/* type ROOM: Can't be done to just a person */
void social_afk(player * p, char *str) {
send_to_room(p, "goes afk.", 0, 1);
TELLPLAYER(p, " You go afk.\n");
return;
}
/* type PRIVATE: can't be done to a room */
void social_snog(player * p, char *str) {
if (!*str) {
TELLPLAYER(p, " Yes, but WHO do you want to snog?\n");
return;
}
if (social_room(p, str, 0, "snogs you, leaving you breathless."))
TELLPLAYER (p, " You snog %s =)\n", str);
}