// $Id: social2.cc,v 1.5.2.4 2000/02/19 17:44:45 justin Exp $
// $Revision: 1.5.2.4 $ $Author: justin $ $Date: 2000/02/19 17:44:45 $
//
//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
//
/************************** social2.cc **********/
#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 "social2.h"
/*Coded By GROCK*/
void smirk(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) {
show("You smirk in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You smirk to yourself.\n", pc);
Sprintf(buf, "smirks at %s", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You smirk at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S smirks 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 smirks 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 smirk.\n", pc);
emote("smirks.", pc, rm, TRUE);
}//else
}//smirk
/*Coded By GROCK*/
void beckon(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) {
show("You gesture in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You beckon to yourself.\n", pc);
Sprintf(buf, "beckons at %s", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You beckon %S to follow you.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S beckons you to follow %s.\n",
name_of_crit(pc, crit_ptr->SEE_BIT),
get_him_her(pc));
buf.Cap();
show(buf, *crit_ptr);
while ((ptr = cll.next())) {
if ((ptr != &pc) && (ptr != crit_ptr)) {
Sprintf(buf, "%S beckons %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 beckon folks to follow you.\n", pc);
emote("beckons all to follow.", pc, rm, TRUE);
}//else
}//beckon
/*Coded By GROCK*/
void sob(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) {
show("You cry in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You sob quietly to yourself.\n", pc);
Sprintf(buf, "sobs quietly to %s.", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You sob on %S's shoulder.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S sobs on your shoulder.\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 sobs on %S's shoulder.\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 sob quietly.\n", pc);
emote("sobs quietly.", pc, rm, TRUE);
}//else
}//sob
/*Coded By GROCK*/
void splash(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) {
show("Let's just hope you have nothing to splash in!\n", pc);
return;
}
if (!(rm.isSmallWater() || rm.isBigWater() ||
rm.isSwamp())) {
show("You go to splash, and only find a dry floor!\n", pc);
return;
}//if
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
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 splash anyone.\n", pc);
else if (crit_ptr == &pc) {
show("You splash yourself in the face!\n", pc);
Sprintf(buf, "splashes %s in the face!", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You splash %S in the face!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S splashes you in the 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 splashes %S in the face!\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 splash around in the water.\n", pc);
emote("splashes around in the water.", pc, rm, TRUE);
}//else
}//splash
/*Coded By GROCK*/
void pat(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) {
show("Perhaps you should try this while you are awake.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
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 pat yourself on the back.\n", pc);
Sprintf(buf, "pats %s on the back.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You pat %S on the back.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S pats you on the back.\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 pats %S on the back.\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 pat the ground.\n", pc);
emote("pats the ground.", pc, rm, TRUE);
}//else
}//pat
/*Coded By GROCK*/
void itch(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) {
show("A terrible itch causes you to sleep restlessly.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS == POS_SLEEP)
show("You itch horribly in your sleep.\n", pc);
else if (crit_ptr == &pc) {
show("You make yourself break out in hives!\n", pc);
Sprintf(buf, "makes %s break out in hives!",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You make %S feel itchy all over.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S makes you feel itchy all over!\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 make %S itchy.\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 itch all over...AAAHHHHH infuriating!\n", pc);
emote("itches all over!", pc, rm, TRUE);
}//else
}//itch
/*Coded By GROCK*/
void wiggle(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) {
show("You toss and turn restlessly.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You wiggle yourself.\n", pc);
Sprintf(buf, "wiggles %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You wiggle your bottom at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S wiggles %s bottom at you.\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 wiggles %s bottom at %S!\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 wiggle your bottom.\n", pc);
Sprintf(buf, "wiggles %s bottom.", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//else
}//wiggle
/*Coded By GROCK*/
void agree(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) {
show("You are quite agreeable while you are asleep!\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You agree with yourself...for a change!\n", pc);
Sprintf(buf, "agrees with %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You agree with %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S agrees 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 agrees 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 agree completely.\n", pc);
emote("agrees all around.", pc, rm, TRUE);
}//else
}//agree
/*Coded By Crazy*/
void blush(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
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 blush.\n", pc);
Sprintf(buf, "blushes at %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You blush at the sight of %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S blushes at the sight of 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 blushes at the sight of %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 beet red!\n", pc);
emote("turns bright red and blushes.", pc, rm, TRUE);
}//else
}//blush
/* by crazy */
void kiss(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 pucker and try to kiss your dream %s!",
pc.SEX==SEX_MALE?"woman":
(pc.SEX==SEX_FEMALE?"man":"being of undisclosed gender"));
pc.show(buf);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
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 kiss yourself.\n", pc); //change
Sprintf(buf, "Kisses %s.\n", get_himself_herself(pc));
//change
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You kiss %S.\n", //change
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S kisses you long and passionatly.\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 kisses %S passionately.\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 kiss the air. Was it fun??\n", pc);
emote("blows kisses into the air!", pc, rm, TRUE);
}//else
}//kiss
/* by Crazy */
void afk(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
show("You go afk.\n", pc);
Sprintf(buf, "steps away from %s keyboard.", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//afk
/* Made by Shamu */
void giggle(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You giggle uncontrollably!\n", pc);
Sprintf(buf, "giggles crazily at %s!\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You giggle at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S giggles crazily 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 giggles crazily 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 giggle uncontrollably!\n", pc);
emote("giggles crazily!", pc, rm, TRUE);
}//else
}//giggle
/* Made by Shamu */
void shrug(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("In your attempt to shrug while asleep, you dig your shoulder into the back of your neck!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You shrug helplessly to yourself.\n", pc);
Sprintf(buf, "shrugs helplessly to %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You shrug in response to %S's remark.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S shrugs helplessly 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 shrugs 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 shrug helplessly.\n", pc);
emote("shrugs helplessly.", pc, rm, TRUE);
}//else
}//shrug
/* Made by Shamu */
void wibble(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You turn your face inside out and WIBBLE!\n", pc);
else if (crit_ptr == &pc) {
show("You turn your face inside out and WIBBLE!\n", pc);
Sprintf(buf, "WIBBLES! %s\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You turn your face inside out and WIBBLE at %S!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S turns %s face inside out and WIBBLES at you!\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 turns %s face inside out and WIBBLES at %S.\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 turn your face inside out and WIBBLE!\n", pc);
emote("WIBBLES!", pc, rm, TRUE);
}//else
}//wibble
/* Made by Shamu */
void yawn(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You yawn sleepily and adjust your pillow.\n", pc);
else if (crit_ptr == &pc) {
show("You yawn sleepily and adjust your pillow.\n", pc);
Sprintf(buf, "yawns to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You yawn at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S yawns sleepily at you. Are you THAT boring?!\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 yawns sleepily 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 yawn sleepily and adjust your pillow.\n", pc);
emote("yawns. Are you THAT boring?", pc, rm, TRUE);
}//else
}//yawn
/* Made by Shamu */
void bonk(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("Oh, that's just not right!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You bonk youself. What a numbskull.\n", pc);
Sprintf(buf, "bonks %s. What a weirdo.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You bonk %S!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S bonks 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 bonks %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 somehow manage to bonk the air.\n", pc);
emote("bonks the air. What a weirdo.", pc, rm, TRUE);
}//else
}//bonk
/* Made by Shamu */
void pft(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 might want to try waking first.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You exclaim, 'pftpftpftpft!'\n", pc);
Sprintf(buf, "exclaims, 'pftpftpftpft!' at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You look at %S and exclaim, 'pftpftpftpft!'.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S looks at you and exclaims, 'pftpftpftpft!'\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 exclaims, 'pftpftpftpft!' 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 exclaim, 'pftpftpftpft!'\n", pc);
emote("exclaims, 'pftpftpftpft!'", pc, rm, TRUE);
}//else
}//pft
/* Made by Shamu */
void clap(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 and wake first.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_REST)
show("You feel too relaxed.\n", pc);
else if (crit_ptr == &pc) {
show("You clap appreciatively!\n", pc);
Sprintf(buf, "claps appreciatively to %s!\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You clap at %S's performance.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S claps at your performance.\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 claps at %S's performance.\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 clap appreciatively!\n", pc);
emote("claps appreciatively!", pc, rm, TRUE);
}//else
}//clap
/* Made by Shamu */
void shake(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 twitch slightly in your sleep.\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
targ = &pc;
show("You shake your head in denial.\n", pc);
Sprintf(buf, "shakes %s head in denial.!\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
targ = crit_ptr;
Sprintf(buf, "You shake your head in denial at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S shakes his head in denial at your claims!\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 shakes his head in denial 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 shake your head in denial.\n", pc);
emote("shakes his head in denial.", pc, rm, TRUE);
}//else
String cmd = "shake";
if (targ) {
rm.checkForProc(cmd, NULL_STRING, pc, targ->getIdNum());
}
else {
rm.checkForProc(cmd, NULL_STRING, pc, 0);
}
}//shake
/* Made by Shamu */
void groan(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) {
show("You groan in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You groan loudly, clutching your stomach.\n", pc);
Sprintf(buf, "groans loudly, clutching %s stomach.\n",
get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You groan at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S groans at you. What could you have done?\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 groans 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 groan loudly, clutching your stomach.\n", pc);
emote("groans loudly.", pc, rm, TRUE);
}//else
}//groan
/* Made by Shamu */
void hmm(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) {
show("You drool a little harder.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You think for a while. Hmmmmm....!\n", pc);
emote("thinks, 'Hmmm....'\n", pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You look at %S and think, 'Hmmm....'\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S looks at you and thinks, 'Hmmm....'\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 glances at %S and goes, 'Hmmmm...'\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 think for a while. Hmmmmm....\n", pc);
emote("thinks for a while. Hmmmmm....", pc, rm, TRUE);
}//else
}//hmm
/* Made by Shamu */
void hum(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) {
show("You hum in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You hum a tune.\n", pc);
Sprintf(buf, "hums a tune to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You hum a tune just for %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S hums a tune for 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 hums a tune 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 hum a tune.\n", pc);
emote("hums a tune.", pc, rm, TRUE);
}//else
}//hum
/* Made by Shamu */
void grumble(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_REST)
show("You grumble in your sleep.\n", pc);
else if (crit_ptr == &pc) {
show("You grumble to yourself.\n", pc);
Sprintf(buf, "grumbles to %s. Is something wrong?\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You grumble at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S grumbles at you. What could you have done?\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 grumbles 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 grumble. Is something bothering you?\n", pc);
emote("grumbles at the world!", pc, rm, TRUE);
}//else
}//grumble
/* Made by Shamu */
void listen(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) {
show("You submit to the voices in your head.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You listen attentively.\n", pc);
Sprintf(buf, "listens attentively to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You listen to %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S listens 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 listens attentively 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 listen attentively.\n", pc);
emote("listens attentively.", pc, rm, TRUE);
}//else
}//listen
/* Made by Shamu */
void pinch(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) {
show("You pinch yourself. Yep, you're dreaming.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You pinch yourself. Nope, you're not dreaming.\n", pc);
Sprintf(buf, "pinches %s on the arm.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You pinch %S on the arm..\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S pinches you on the arm. 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 pinches %S on the arm. Uh-oh!\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 pinch yourself. Nope, you're not dreaming.\n", pc);
emote("pinches a bug.", pc, rm, TRUE);
}//else
}//pinch
/* Made by Shamu */
void roll(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("Oh yeah, THAT would be effective!\n");
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You roll your eyes.\n", pc);
else if (crit_ptr == &pc) {
show("You roll your eyes.\n", pc);
Sprintf(buf, "rolls his eyes at %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You roll your eyes at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S rolls his eyes 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 rolls %s eyes at %S.\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 roll your eyes.\n", pc);
Sprintf(buf, "rolls %s eyes.\n", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//else
}//roll
/* Made by Shamu */
void strut(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,"Why would you need to strut when you have all these %s fawning all over you?",
pc.SEX==SEX_MALE?"women":
(pc.SEX==SEX_FEMALE?"men":"beings of undisclosed gender"));
pc.show(buf);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You strut proudly.\n", pc);
Sprintf(buf, "struts proudly.\n");
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You strut proudly, eyeing %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S struts proudly before you. Nice, 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 struts proudly 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 strut proudly.\n", pc);
emote("struts proudly.", pc, rm, TRUE);
}//else
}//strut
/* Made by Shamu */
void whistle(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) {
show("You whistle a tune in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You whistle a tune to yourself.\n", pc);
Sprintf(buf, "whistles a tune to %s.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You whistle a special song for %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S whistles a special song for 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 whistles a song 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 whistle a tune.\n", pc);
emote("whistles a tune.", pc, rm, TRUE);
}//else
}//whistle
/* Made by Shamu */
void slap(int i_th, const String* vict, critter& pc, room& rm) {
String buf(100);
Cell<critter*> cll(rm.getCrits());
critter* ptr = NULL;
critter* crit_ptr = NULL;
if (vict->Strlen()) {
crit_ptr = ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (pc.POS > POS_SIT)
show("You would probably want to be standing to do that.\n", pc);
else if (crit_ptr == &pc) {
show("You slap yourself silly.\n", pc);
Sprintf(buf, "slaps %s silly. What a weirdo.\n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You slap %S across the face!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S slaps you across the face. Grrr! That did it!\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 slaps %S across the face.\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 slap the wall.\n", pc);
emote("slaps the ground in anger.", pc, rm, TRUE);
}//else
String cmd = "slap";
if (crit_ptr) {
rm.checkForProc(cmd, NULL_STRING, pc, crit_ptr->getIdNum());
}
else {
rm.checkForProc(cmd, NULL_STRING, pc, 0);
}
}//slap
/* Made by Shamu */
void muahaha(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) {
show("You gargle in your sleep!\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You burst forth with a booming 'MUAHAHAHAHA!'\n", pc);
Sprintf(buf, "bursts forth with a booming 'MUAHAHAHAHA!'\n");
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You laugh mercilessly at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S looks at you and yells, 'MUAHAHAHAHAHA!'\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 mercilessly 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 burst forth with a booming 'MUAHAHAHAHAHA!'\n", pc);
emote("bursts forth with a booming 'MUAHAHAHAHAHA'!", pc, rm, TRUE);
}//else
}//muahaha
/* Made by Shamu */
void hehe(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) {
show("You snarfle in your sleep!\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You giggle like the Pillsbury Doughboy!\n", pc);
Sprintf(buf, "giggles like the Pillsbury Doughboy at %s! \n",
get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You giggle like the Pillsbury Doughboy at %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S giggles strangely 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 giggles like the Pillsbury Doughboy 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 giggle like the Pillsbury Doughboy!\n", pc);
emote("giggles like the Pillsbury Doughboy!", pc, rm, TRUE);
}//else
}//hehe
/* Made by Shamu */
void silly(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) {
show("You twitch a little\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You say, 'Oh, silly me!\n", pc);
Sprintf(buf, "exclaims, 'Oh, silly me!'\n");
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You say to %S, 'You're so silly!'\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S says to you, 'You're so silly!'\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 says, 'You're so silly!' 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 say, 'Oh, silly me!'\n", pc);
emote("exclaims, 'Oh, silly me!'", pc, rm, TRUE);
}//else
}//silly
/* Made by Shamu */
void scold(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) {
show("You twitch in your sleep.\n", pc);
return;
}
if (vict->Strlen()) {
critter* crit_ptr =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
if (!crit_ptr)
show("You don't see that person.\n", pc);
else if (crit_ptr == &pc) {
show("You scold yourself.\n", pc);
Sprintf(buf, "scolds %s.\n", get_himself_herself(pc));
emote(buf, pc, rm, TRUE);
}//if targ and agg is same
else {
Sprintf(buf, "You scold %S!\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S scolds you! What did you do?\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 scolds %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 scold the harsh world!\n", pc);
emote("scolds the harsh world!", pc, rm, TRUE);
}//else
}//scold
/* Coded by Crazy */
void twiddle(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 =
ROOM.haveCritNamed(i_th, vict, pc.SEE_BIT);
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 twiddle your thumbs.\n", pc);
Sprintf(buf, "Twiddles %s thumbs.\n",
get_his_her(pc));
emote(buf, pc, rm, TRUE);
}
else {
Sprintf(buf, "You twiddle your thumbs because of %S.\n",
name_of_crit(*crit_ptr, pc.SEE_BIT));
show(buf, pc);
Sprintf(buf, "%S twiddles %s thumbs because of you!!\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 twiddles %s thumbs because of %S.\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 twiddle your thumbs.\n", pc);
Sprintf(buf, "twiddles %s thumbs.", get_his_her(pc));
emote(buf, pc, rm, TRUE);
}//else
}//twiddle