// $Id: socials.cc,v 1.5.2.11 2000/05/08 05:24:17 greear Exp $
// $Revision: 1.5.2.11 $ $Author: greear $ $Date: 2000/05/08 05:24:17 $
//
//ScryMUD Server Code
//Copyright (C) 1998 Ben Greear
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// To contact the Author, Ben Greear: greear@cyberhighway.net, (preferred)
// greearb@agcs.com
//
/* Socials.cc: These are simplistic commands. They usually only
involve text messages, but some can provoke responses from mobs,
not to mention other players. */
#include "misc.h"
#include "misc2.h"
#include "commands.h"
#include "command2.h"
#include <string2.h>
#include "classes.h"
#include "battle.h"
#include "spec_prc.h"
#include <PtrArray.h>
/* By Shamu */
void mutter(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You mutter about your foolish actions.\n", pc);
Sprintf(buf, "mutters to %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You mutter under your breath about %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S mutters something under his breath about you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S mutters about %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You mutter.\n", pc);
emote("mutters.", pc, rm, TRUE);
}//else
}//mutter
/* By Shamu */
void cough(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You politely cough at your own actions.\n", pc);
Sprintf(buf, "coughs politely to %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You cough politely at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S coughs politely at you. Are you missing something?\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S coughs in %S's direction..\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You cough politely.\n", pc);
emote("coughs politely.", pc, rm, TRUE);
}//else
}//cough
/* By Shamu */
void point(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You grin at yourself.\n", pc);
Sprintf(buf, "points accusingly at %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You point accusingly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S points at you accusingly!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S points at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You point at nowhere in particular.\n", pc);
emote("points at nowhere in particular.", pc, rm, TRUE);
}//else
}//point
/* By Shamu */
void snap(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You snap your fingers in front of your face.\n", pc);
Sprintf(buf, "snaps at %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You snap your fingers in front of %S's face.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S snaps their fingers in front of your face.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S tries to snap %S's neck.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You snap your fingers.\n", pc);
emote("snaps their fingers.", pc, rm, TRUE);
}//else
}//snap
/* By Shamu */
void whine(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You whine to yourself.\n", pc);
Sprintf(buf, "grins at %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You whine at %S. Perhaps you'd like some cheese with that?\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S whines at you, claiming it's all your fault.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S whines at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You whine at everyone!\n", pc);
emote("whines at everyone!", pc, rm, TRUE);
}//else
}//whine
/* By Shamu */
void bah(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You grin at yourself.\n", pc);
Sprintf(buf, "makes sheep-like noises at %s.\n",
get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You look at %S and exclaim, 'Bah!'.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S gets right up in your face and yells, 'Bah!' Weird, 'eh?\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S looks at %S and shouts, 'Bah!' in perfect Quadcaster style.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You exclaim, 'Bah!'\n", pc);
emote("suddenly shouts, 'Bah!'.", pc, rm, TRUE);
}//else
}//bah
/* By Shamu */
void punt(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You kick yourself in the behind!\n", pc);
Sprintf(buf, "kicks %s in the bottom!.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You kick %S in the rear end, sending them flying!.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S runs up behind you and punts you in the behind!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S punts %S at some imaginary target.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You try and punt the air!\n", pc);
emote("takes a big swing at the air and misses! Ouch, that had to hurt.", pc, rm, TRUE);
}//else
}//punt
/* By Shamu */
void yuck(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You look at yourself and say, 'Yuck.'.\n", pc);
Sprintf(buf, "looks at %s and mutters, 'Yuck.'.\n",
get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You look at %S and say, 'Yuck!'.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S lets you know just how disgusting you really are!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S tells everyone that %S is all yucky.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You look up to the sky and yell, 'Ew! Yucky!'.\n", pc);
emote("looks to the sky and yells, 'Ewwww! Yucky!'.", pc, rm, TRUE);
}//else
}//yuck
/* By Shamu */
void announce(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You let yourself know just who you are!\n", pc);
Sprintf(buf, "introduces %s to no one in particular.\n",
get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You announce to %S that you are here!.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S announces to you that he is here.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S announces himself to %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You announce yourself!\n", pc);
emote("boldly lets everyone know just who he is.", pc, rm, TRUE);
}//else
}//announce
/* By Shamu */
void greet(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You wave hello to yourself. Lonely?\n", pc);
Sprintf(buf, "waves to %s.\n", get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You wave hello to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S gives you a big welcome wave!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S waves in greetings to %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You greet everyone!\n", pc);
emote("greets everyone around!", pc, rm, TRUE);
}//else
}//greet
/* By everyone's favorite marine mammal */
void doze(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You doze off.\n", pc);
Sprintf(buf, "dozes off, having bored %s to pieces.\n",
get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You doze off whilst trying to pay attention to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S dozes off while looking at you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S dozes off in the middle of %S's boring diatribe.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You begin to doze off.\n", pc);
emote("lies down to take a nap.", pc, rm, TRUE);
}//else
}//doze
/* Not by Shamu. Definitely not by Shamu. */
void megawibble(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You are not in a position to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You turn yourself downside up and outside in and try to wibble at yourself!\n",
pc);
Sprintf(buf, "twists all around and tries to wibble at %s!\n",
get_hisself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You turn yourself inside out and upside down and MEGAWIBBLE at %S!!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S turns themself outside in and downside up and MEGAWIBBLES at you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S rearranges themself in impossible ways and MEGAWIBBLES at %S!\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You turn yourself inside out and upside down and MEGAWIBBLE!\n", pc);
emote("turns downside out and upside in and MEGAWIBBLES!", pc, rm, TRUE);
}//else
}//mega
/* By kat_skan */
void social_jump(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
object* obj_ptr;
if(vict->Strlen()) {
if( (obj_ptr=have_obj_named(pc.inv, i_th, vict, pc.SEE_BIT, rm)) ) {
Sprintf(buf, "You throw %S to the ground and start jumping up and down on it.\n",
long_name_of_obj(*obj_ptr, ~0));
show(buf, pc);
Sprintf(buf, "throws %S to the ground and starts jumping up and down on it.",
long_name_of_obj(*obj_ptr, ~0));
pc.emote(buf);
}
else {
pc.show(CS_DONT_SEEM_TO_HAVE_THAT);
}
}
else {
pc.show("You jump up and down in frustration.\n");
pc.emote("jumps up and down in frustration.");
}
}//social_jump
/* by shamu */
void lag(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.emote("How can you tell?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (crit_ptr == &pc) {
show("You complain about the lag, your hitpoints, your mana...\n",
pc);
Sprintf(buf, "complains on and on about the lag.\n",
get_himself_herself(pc));
emote(buf, pc, ROOM, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You complain to %S about the lag.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
pc.show(buf);
Sprintf(buf, "%S whines to you about the lag.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
crit_ptr->show(buf);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S whines about the lag to %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
ptr->show(buf);
}//if
}//while
}//else
}//if a victim
else {
pc.show("You complain about the lag, your hitpoints, your mana...\n");
pc.emote("complains on and on about the lag.");
}//else
}//lag
/* by shamu */
void sigh(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You sigh in your sleep");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (crit_ptr == &pc) {
show("You sigh dejectedly to yourself.\n", pc);
Sprintf(buf, "sighs dejectedly to %s.\n",
get_himself_herself(pc));
emote(buf, pc, ROOM, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You sigh dejectedly to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S sighs and looks pittifully in your direction.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S sighs dejectedly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You sigh dejectedly.\n", pc);
emote("sighs dejectedly.\n", pc, ROOM, TRUE);
}//else
}//sigh
/* by Grock */
void pout(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You pout in your sleep, but noone seems to notice.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (crit_ptr == &pc) {
show("You pout pitifully to yourself.\n", pc);
Sprintf(buf, "pouts to %s.\n",
get_himself_herself(pc));
emote(buf, pc, ROOM, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You poute to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S pouts at you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S pouts at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You pout pitifully.\n", pc);
emote("pouts pitifully.\n", pc, ROOM, TRUE);
}//else
}//pout
void rofl(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who laugh in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
pc.show("You would probably want to be standing to do that.\n");
else if (crit_ptr == &pc) {
pc.show("You roll on the floor, laughing hysterically!\n");
pc.emote("rolls on the floor, laughing hysterically!\n");
}//if targ and agg is same
else {
Sprintf(buf, "You roll on the floor laughing your guts out at %S!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
pc.show(buf);
Sprintf(buf, "%S rolls on the floor laughing at you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
crit_ptr->show(buf);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S rolls on the floor laughing at %S!\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
ptr->show(buf);
}//if
}//while
}//else
}//if a victim
else {
pc.show("You roll on the floor laughing hysterically!\n");
pc.emote("rolls on the floor laughing hysterically!");
}//else
}//rofl
/* shamu */
void insane(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
pc.show("You would probably want to be standing to do that.\n");
else if (crit_ptr == &pc) {
pc.show("Your sanity is slowly slipping away...\n");
pc.pemote("sanity is slowly slipping away, right before your very eyes!\n");
}//if targ and agg is same
else {
Sprintf(buf, "You whisper to %S to call the men in white coats.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
pc.show(buf);
Sprintf(buf, "%S tells you to call the men in white coats.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
crit_ptr->show(buf);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf,
"%S whispers to %S to call the men in white coats.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
ptr->show(buf);
}//if
}//while
}//else
}//if a victim
else {
show("Your sanity is slowly slipping away...\n", pc);
pc.pemote("sanity is slowly slipping away, right before your very eyes!");
}//else
}//insane
/* Social By Acrwyn */
void flex(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
Sprintf(buf,"You flex for all the %s fawning all over you.\n",
pc.SEX==SEX_MALE?"women":
(pc.SEX==SEX_FEMALE?"men":"beings of undisclosed gender"));
pc.show(buf);
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You flex impressively for yourself.\n", pc);
Sprintf(buf, "flexes impressively for %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You flex impressively for %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S flexes impressively for you. Oooo!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S flexes impressively for %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You flex your muscles impressively, watching them ripple.\n", pc);
emote("flexes impressively.", pc, rm, TRUE);
}//else
}//flex
/* Social by Acrwyn */
void hug(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Perhaps you should try to wake first.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You hug yourself in a reassuring way.\n", pc);
Sprintf(buf, "hugs %s warmly.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You give %S a big, warm hug.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S gives you a great, big, warm hug.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S hugs %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You hug the air. Lonely?\n", pc);
emote("hugs the air, looking lonely.", pc, rm, TRUE);
}//else
}//hug
void poke(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You can't poke yourself in the eye if your eyelids are closed!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You poke yourself ruefully.\n", pc);
Sprintf(buf, "pokes %s in the eye.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You poke %S in the ribs.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S pokes you in the ribs.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S pokes %S in the ribs.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You poke around.\n", pc);
emote("pokes around.", pc, rm, TRUE);
}//else
}//poke
void wink(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Ha ha ha ha! Nice try.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You wink slyly at yourself.\n", pc);
Sprintf(buf, "winks at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You wink slyly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S winks at you slyly.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S winks at %S with a sly grin.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You wink.\n", pc);
emote("winks.", pc, rm, TRUE);
}//else
}//wink
void hop(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You twitch slightly in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS != POS_STAND)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You hop in little circles around yourself.\n", pc);
Sprintf(buf, "hops gleefully in little circles around %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You gleefully hop in little circles around %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S gleefully hops in little circles around you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S gleefully hops around %S in little circles!\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You gleefully hop in little circles!\n", pc);
emote("gleefully hops in little circles!", pc, rm, TRUE);
}//else
}//hop
/* Social By Acrwyn */
void smile(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You smile sleepily.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You smile happily to yourself.\n", pc);
Sprintf(buf, "smiles happily at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You smile happily at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S smiles happily at you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S smiles happily at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You smile happily.\n", pc);
emote("smiles happily.", pc, rm, TRUE);
}//else
}//smile
/* Social By Acrwyn */
void growl(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Your stomach growls, perhaps you should get a midnight snack.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You growl quietly to yourself.\n", pc);
Sprintf(buf, "growls menacingly at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You growl loudly at %S. Grrr!!!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S growls menacingly at you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S growls loudly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You growl menacingly like the beast you really are. Grrr!!!\n",
pc);
emote("growls menacingly. Grrr!", pc, rm, TRUE);
}//else
}//growl
/* Social By Acrwyn*/
void dance(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
Sprintf(buf,"You dance around with %s of your dreams!\n",
pc.SEX==SEX_MALE?"woman":
(pc.SEX==SEX_FEMALE?"man":"being of undisclosed gender"));
pc.show(buf);
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You dance romantically with yourself.\n", pc);
Sprintf(buf, "dances about merrily with %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You dance about with %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S dances about merrily with you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S dances about merrily with %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You dance around in happy circles!\n", pc);
emote("dances about in happy circles!", pc, rm, TRUE);
}//else
}//dance
/* Social By Acrwyn */
void thank(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Thank the stars you finally fell asleep!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You thank yourself.\n", pc);
Sprintf(buf, "thanks %s profusely.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You thank %S profusely.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S thanks you profusely!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S thanks %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You thank your lucky stars.\n", pc);
emote("thanks the gods, eyes turned heavenward.", pc, rm, TRUE);
}//else
}//thank
/* Social By Acrwyn */
void curtsey(int i_th, const String* vict, critter& pc, room& rm)
{
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Perhaps you'd better try that while you're awake.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You curtsey to yourself and nearly fall over.\n",
pc);
Sprintf(buf, "curtseys gracefully to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You curtsey gracefully to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S curtseys gracefully to you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S curtseys gracefully before %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You curtsey low and gracefully.\n", pc);
emote("curtseys low and gracefully.", pc, rm, TRUE);
}//else
}//curtsey
/* ANOTHER Social by Acrwyn */
void laugh(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who laugh in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You laugh at yourself. Silly you!\n", pc);
Sprintf(buf, "laughs loudly at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You laugh loudly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S laughs loudly, pointing at you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S laughs loudly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You laugh loudly. Hahahahaha!\n", pc);
emote("laughs loudly.", pc, rm, TRUE);
}//else
}//laugh
/* Social By Acrwyn */
void chuckle(int i_th, const String* vict, critter& pc, room& rm)
{
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who laugh in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You chuckle to yourself.\n", pc);
Sprintf(buf, "chuckles to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You chuckle at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S chuckles at you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S chuckles at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You chuckle.\n", pc);
emote("chuckles.", pc, rm, TRUE);
}//else
}//chuckle
/* Social By Acrwyn */
void ack(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You gag in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You ACK and spit at yourself.\n", pc);
Sprintf(buf, "ACKS and spits on %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You ACK at spit at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S ACKS and spits at you! ACK! PTHHH!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S ACKS and spits at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You ACK and spit. ACK! PTHHH!\n", pc);
emote("ACKS and spits. ACK! PTHHH!", pc, rm, TRUE);
}//else
}//ack
/* Social By Acrwyn */
void bounce(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You twitch slightly in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You bounce around yourself and get dizzy.\n", pc);
Sprintf(buf, "bounces excitedly around %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You bounce excitedly around %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S bounces around you excitedly!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S bounces excitedly around %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You bounce about excitedly! BOIIING!\n", pc);
emote("bounces about excitedly!", pc, rm, TRUE);
}//else
}//bounce
/* Social By "The Love Monkey" */
void burp(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You belch softly in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You burp loudly at yourself. PHEW!.\n", pc);
Sprintf(buf, "burps loudly at %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You burp loudly at %S, sending %s reeling.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT), get_his_her(*crit_ptr));
show(buf, pc);
Sprintf(buf, "%S sends you reeling with a horrific burp!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S burps loudly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You burp happily. BUUUUURP!\n", pc);
emote("burps loud and happily.", pc, rm, TRUE);
}//else
}//burp
/* Social By Acrwyn */
void snicker(int i_th, const String* vict, critter& pc, room& rm)
{
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who laugh in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You snicker knowingly to yourself.\n", pc);
Sprintf(buf, "snickers to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You snicker quietly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S snickers quietly at you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S snickers quietly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You snicker quietly.\n", pc);
emote("snickers quietly.", pc, rm, TRUE);
}//else
}//snicker
/* Social By Acrwyn */
void scream(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who scream in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You scream in frustration at yourself.\n", pc);
Sprintf(buf, "screams deafeningly at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You get close and scream loudly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S screams loudly into your ears. Ouch!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S screams deafeningly at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You scream like you've never screamed before!!!\n",
pc);
emote("screams deafeningly. AAAAAH!", pc, rm, TRUE);
}//else
}//scream
/* Socials By Acrwyn */
void panic(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Can't that wait until morning?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You panic at the thought of yourself.\n", pc);
emote("panics and runs screaming in erratic circles.\n",
pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You panic and run in circles around %S while screaming.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S panics and runs in circles around you, screaming.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S panics and runs screaming in circles around %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You panic, running about in circles and screaming.\n", pc);
emote("panics, running about in circles and screaming.", pc, rm, TRUE);
}//else
}//panic
/* Social By Acrwyn */
void grunt(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You grunt and roll over in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You grunt to yourself.\n", pc);
Sprintf(buf, "grunts to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You grunt loudly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S grunts loudly at you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S grunts at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You grunt.\n", pc);
emote("grunts loudly.", pc, rm, TRUE);
}//else
}//grunt
/* Social By Acrwyn */
void ponder(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You ponder for a moment, and suddenly realize the meaning of life! You should write it down in the morning!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
if (strcasecmp(*(Top(pc.names)), "levander") == 0) {
show("You ARE a Ponder!!.\n", pc);
}//if
else {
show("You ponder your own existence.\n", pc);
}//else
Sprintf(buf, "ponders %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You ponder %S thoughtfully.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S ponders you thoughtfully.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S ponders %S thoughtfully.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You ponder, thinking deep thoughts.\n", pc);
emote("ponders, eyebrows furrowed in deep thought.", pc, rm,
TRUE);
}//else
}//ponder
/* Social By Acrwyn */
void scratch(int i_th, const String* vict, critter& pc, room& rm)
{
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You scratch sleepily.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You scratch yourself thoughtfully.\n", pc);
Sprintf(buf, "scratches %s thoughtfully.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You scratch %S thoughtfully.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S scratches your back. Ahhh.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S scratches %S behind the ears.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You scratch, thoughtfully.\n", pc);
emote("thoughtfully scratches.", pc, rm, TRUE);
}//else
}//scratch
/* Social By Acrwyn */
void lick(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You dream of puppies, thousands of puppies! Oh god, they're coming this way! FOR THE LOVE OF GOD! KEEP THE PUPPIES AWAY!!!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You lick yourself. Mmmm.\n", pc);
Sprintf(buf, "licks %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You lick %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S licks you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S licks %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You lick your lips.\n", pc);
Sprintf(buf, "licks %s lips.", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//else
}//lick
/* Social By Acrwyn */
void cackle(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who laugh in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr = rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You cackle gleefully at yourself.\n", pc);
Sprintf(buf, "cackles gleefully at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You cackle gleefully at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S cackles at you gleefully.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S cackles at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You cackle gleefully!\n", pc);
emote("cackles gleefully!", pc, rm, TRUE);
}//else
}//cackle
/* by Acrwyn */
void weep(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You know what they say about people who cry in their sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You weep big tears on yourself.\n", pc); //change
Sprintf(buf, "weeps at %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "Bawling, you weep huge tears on %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S weeps huge tears on you!!\n", //change
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S weeps on %S.\n", //change
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else { //change these next two lines
show("You weep big mournful tears. Poor you.\n", pc);
emote("weeps loudly, drenching everything with tears!!", pc,
rm, TRUE);
}//else
}//weep
/* by Acrwyn */
void disco(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You dream of a simpler time.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_STAND)
show("You are not in a position to disco.\n", pc);
else if (crit_ptr == &pc) {
show("You disco with yourself across the room.\n", pc);
Sprintf(buf, "disco dances with %s.\n",get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You disco wildly with %S.\n", //change
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S wildly dances the disco with you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S does a funky disco dance with %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else { //change these next two lines
show("You flail your arms and twirl ... it's the disco man!\n", pc);
pc.pemote("collar flipped up, does the disco!!");
}//else
}//disco
void puke(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You're not going to appreciate waking up in that!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You puke on your shoes.\n", pc);
Sprintf(buf, "pukes on %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You puke your guts out all over %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S spews chunks all over you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S pukes all over %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You spew chunks...did THAT come out of your stomach???\n", pc);
emote("turns green and blows chunks!!", pc, rm, TRUE);
}//else
}//puke
void cheer(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("Better not, that would wake you up for sure!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You cheer yourself.. What a hoser!.\n", pc);
Sprintf(buf, "cheers %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You give a big cheer for %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S cheers you on!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S cheers %S to victory and glory!!\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You give a good try at starting the wave....nothing happens!\n",
pc);
emote("throws up the hands and gives a big cheer!!", pc, rm,
TRUE);
}//else
}//cheer
void nod(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
critter* targ = NULL;
if (pc.POS == POS_SLEEP) {
pc.show("You've already nodded off.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You nod to yourself.\n", pc);
Sprintf(buf, "nods to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
targ = &pc;
}//if targ and agg is same
else {
targ = crit_ptr;
Sprintf(buf, "You nod your head in agreement with %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S nods in agreement with you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S nods in agreement with %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You nod your head in agreement.\n", pc);
emote("nods in agreement!!", pc, rm, TRUE);
targ = NULL;
}//else
String cmd = "nod";
if (targ) {
rm.checkForProc(cmd, NULL_STRING, pc, targ->getIdNum());
}
else {
rm.checkForProc(cmd, NULL_STRING, pc, 0);
}
}//nod
void nog(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
critter* targ = NULL;
if (pc.POS == POS_SLEEP) {
pc.show("Quit that, damn it!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You nog sagely to yourself.\n", pc);
Sprintf(buf, "nogs sagely to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
targ = &pc;
}//if targ and agg is same
else {
targ = crit_ptr;
Sprintf(buf, "You nog in sagely agreement with %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S nogs in sagely agreement with you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S nogs in sagely agreement with %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You nog sagely.\n", pc);
emote("nogs sagely!!", pc, rm, TRUE);
targ = NULL;
}//else
// String cmd = "nod";
// if (targ) {
// rm.checkForProc(cmd, NULL_STRING, pc, targ->getIdNum());
// }
// else {
// rm.checkForProc(cmd, NULL_STRING, pc, 0);
// }
}//nog
void grin(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You smile in your sleep?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You grin at yourself.\n", pc);
Sprintf(buf, "grins at %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You grin mischieviously at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S grins mischieviously at you!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S grins at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You grin widely!\n", pc);
emote("grins at the thought.", pc, rm, TRUE);
}//else
}//grin
void wave(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You dream you've won the Miss Universe pagent. Wave to your adoring public!?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You wave goodbye to yourself.\n", pc);
Sprintf(buf, "waves goodbye to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You wave goodbye to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S waves goodbye to you.\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S waves goodbye to %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You wave merrily!\n", pc);
emote("waves in your general direction.", pc, rm, TRUE);
}//else
}//wave
void bow(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("And just how do you plan to pull that off?\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You attempt to bow to yourself.\n", pc);
Sprintf(buf, "tries to bow to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You bow to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S bows before you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S bows to %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
if (crit_ptr->mob && crit_ptr->mob->proc_data &&
crit_ptr->mob->proc_data->bow_proc) {
ptr = crit_ptr;
if (crit_ptr->isMob()) {
ptr = mob_to_smob(*crit_ptr, rm.getRoomNum());
}//if
do_domob_bow_proc(*ptr, pc);
}//if
}//else
}//if a victim
else {
show("You bow.\n", pc);
emote("bows.", pc, rm, TRUE);
}//else
}//bow
void curse(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("You scream profanities in your sleep!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You curse to yourself.\n", pc);
Sprintf(buf, "curses at %s folly.\n", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You call down the wrath of ancient gods upon %S!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S invokes ancient names to speed your doom!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf,
"%S calls forth the wrath of ancient gods to hasten %S's doom.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
if (crit_ptr->mob && crit_ptr->mob->proc_data &&
crit_ptr->mob->proc_data->curse_proc) {
ptr = crit_ptr;
if (crit_ptr->isMob()) {
ptr = mob_to_smob(*crit_ptr, rm.getRoomNum());
}//if
do_domob_curse_proc(*ptr, pc);
}//if
}//else
}//if a victim
else {
show("You curse darkly at the world.", pc);
Sprintf(buf, "curses the situation %s finds %s in.", get_he_she(pc),
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//else
}//curse
void disdain(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("That might be more effective if you were awake.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_REST)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You wallow in self pity.\n", pc);
Sprintf(buf, "turns a glowering eye upon %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You glower at %S with great disdain.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S glares disdainfully at you!!\n",
name_of_crit(pc, crit_ptr->SEE_BIT));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S glares disdainfully at %S.\n",
name_of_crit(pc, ptr->SEE_BIT),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You glower with disdain at the world.\n", pc);
emote("glowers disdainfully.", pc, rm, TRUE);
}//else
}//disdain
/*by Gingon*/
void thpppt(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr;
if (pc.POS == POS_SLEEP) {
pc.show("That might be more effective if you were awake.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
rm.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show(DONT_SEE_PERSON, pc);
else if (pc.POS > POS_SIT)
show(NOT_IN_POSN, pc);
else if (crit_ptr == &pc) {
show("You try to stick your tongue out at yourself and thpppt!\n", pc);
Sprintf(buf, "tries to sticks %s out at %s and thpppt!\n",
get_his_her(pc),
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You stick you tongue at %S and thpppt!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S sticks %s tongue out at you and thpppts!\n",
name_of_crit(pc, crit_ptr->SEE_BIT),
get_his_her(pc));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S sticks %s tongue out at %S and thpppts!\"\n",
name_of_crit(pc, ptr->SEE_BIT),
get_his_her(pc),
name_of_crit(*crit_ptr, ptr->SEE_BIT));
buf.Cap();
show(buf, *ptr);
}//if
}//while
}//else
}//if a victim
else {
show("You stick your tongue out and thpppt!\n",
pc);
Sprintf(buf,"sticks %s tongue out, and thpppts!\n",
get_his_her(pc));
emote(buf,pc,rm, TRUE);
}//else
}//thpppt