Crossfire Server, Branches 1.12  R18729
c_chat.c
Go to the documentation of this file.
1 /*
2  * static char *rcsid_c_chat_c =
3  * "$Id: c_chat.c 11578 2009-02-23 22:02:27Z lalo $";
4  */
5 
6 /*
7  CrossFire, A Multiplayer game for X-windows
8 
9  Copyright (C) 2002-2006 Mark Wedel & Crossfire Development Team
10  Copyright (C) 1992 Frank Tore Johansen
11 
12  This program is free software; you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation; either version 2 of the License, or
15  (at your option) any later version.
16 
17  This program is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with this program; if not, write to the Free Software
24  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 
26  The authors can be reached via e-mail at crossfire-devel@real-time.com
27 */
28 
34 #include <global.h>
35 #include <loader.h>
36 #include <sproto.h>
37 
47 int command_say(object *op, char *params) {
48  if (!params)
49  return 0;
50  communicate(op, params);
51 
52  return 0;
53 }
54 
64 int command_me(object *op, char *params) {
65  char buf[MAX_BUF];
66 
67  if (!params)
68  return 0;
69  snprintf(buf, MAX_BUF-1, "%s %s", op->name, params);
71  buf, NULL);
72  return 0;
73 }
74 
84 int command_cointoss(object *op, char *params) {
85  char buf[MAX_BUF];
86  char buf2[MAX_BUF];
87  int i;
88 
89  i = rndm(1, 2);
90  if (i == 1) {
91  snprintf(buf, MAX_BUF-1, "%s flips a coin.... Heads!", op->name);
92  snprintf(buf2, MAX_BUF-1, "You flip a coin.... Heads!");
93  } else {
94  snprintf(buf, MAX_BUF-1, "%s flips a coin.... Tails!", op->name);
95  snprintf(buf2, MAX_BUF-1, "You flip a coin.... Tails!");
96  }
98  buf2, NULL);
100  buf, NULL);
101  return 0;
102 }
103 
105 static const char *const orcknuckle[7] = {
106  "none",
107  "beholder",
108  "ghost",
109  "knight",
110  "princess",
111  "dragon",
112  "orc"
113 };
114 
115 #define DICE 4
134 int command_orcknuckle(object *op, char *params) {
135  char buf[MAX_BUF];
136  char buf2[MAX_BUF];
137  object *dice[DICE];
138  object *ob;
139  int i, j, k, l, dice_count, number_dice;
140  const char *name;
141 
142  /* We only use dice if the archetype is present ingame. */
143  name = find_string("dice");
144  if (name) {
145  for (dice_count = 0; dice_count < DICE; dice_count++)
146  dice[dice_count] = NULL;
147  dice_count = 0;
148  number_dice = 0;
149 
150  for (ob = op->inv; ob && dice_count < DICE && number_dice < DICE; ob = ob->below) {
151  if (ob->name == name) {
152  number_dice += ob->nrof;
153  dice[dice_count++] = ob;
154  }
155  }
156 
157  if (number_dice < DICE) {
159  "You need at least %d dice to play orcknuckle!",
160  "You need at least %d dice to play orcknuckle!", DICE);
161  return 0;
162  }
163  }
164 
165  i = rndm(1, 5);
166  j = rndm(1, 5);
167  k = rndm(1, 5);
168  l = rndm(1, 6);
169 
170  snprintf(buf2, MAX_BUF-1, "%s rolls %s, %s, %s, %s!", op->name, orcknuckle[i], orcknuckle[j], orcknuckle[k], orcknuckle[l]);
171  snprintf(buf, MAX_BUF-1, "You roll %s, %s, %s, %s!", orcknuckle[i], orcknuckle[j], orcknuckle[k], orcknuckle[l]);
172 
174  buf, NULL);
176  buf2, NULL);
177 
178  if (name) {
179  /* Randomly lose dice */
180  if (die_roll(1, 100, op, 1) < 5) {
181  /* Lose one randomly. */
182  decrease_ob(dice[rndm(1, dice_count)-1]);
184  "Oops, you lost a die!", "Oops, you lost a die!");
185  }
186  }
187 
188  return 0;
189 #undef DICE
190 }
191 
210 static int command_tell_all(object *op, char *params, int pri, int color, int subtype, const char *desc) {
211  if (op->contr->no_shout == 1) {
213  "You are no longer allowed to shout or chat.", NULL);
214  return 1;
215  } else {
216  if (params == NULL) {
218  "Shout/Chat what?", NULL);
219  return 1;
220  }
222  "%s %s: %s",
223  "%s %s: %s",
224  op->name, desc, params);
225 
226  /* Lauwenmark : Here we handle the SHOUT global event */
227  execute_global_event(EVENT_SHOUT, op, params, pri);
228  return 1;
229  }
230 }
231 
241 int command_shout(object *op, char *params) {
242  return command_tell_all(op, params, 1, NDI_RED, MSG_TYPE_COMMUNICATION_SHOUT, "shouts");
243 }
244 
254 int command_chat(object *op, char *params) {
255  return command_tell_all(op, params, 9, NDI_BLUE, MSG_TYPE_COMMUNICATION_CHAT, "chats");
256 }
257 
270 static int do_tell(object *op, char *params, int adjust_listen) {
271  char buf[MAX_BUF], *name = NULL, *msg = NULL;
272  player *pl;
273  uint8 original_listen;
274 
275  if (params != NULL) {
276  name = params;
277  msg = strchr(name, ' ');
278  if (msg) {
279  *(msg++) = 0;
280  if (*msg == 0)
281  msg = NULL;
282  }
283  }
284 
285  if (name == NULL) {
287  "Tell whom what?", NULL);
288  return 1;
289  } else if (msg == NULL) {
291  "Tell %s what?",
292  "Tell %s what?",
293  name);
294  return 1;
295  }
296 
297  snprintf(buf, MAX_BUF-1, "%s tells you: %s", op->name, msg);
298 
299  pl = find_player_partial_name(name);
300  if (pl) {
301  if (adjust_listen) {
302  original_listen = pl->listening;
303  pl->listening = 10;
304  }
305 
306  execute_global_event(EVENT_TELL, op, msg, pl->ob);
307 
309  buf, NULL);
310 
311  if (adjust_listen)
312  pl->listening = original_listen;
313 
314  /* Update last_tell value [mids 01/14/2002] */
315  snprintf(pl->last_tell, sizeof(pl->last_tell), "%s", op->name);
316 
317  /* Hidden DMs get the message, but player should think DM isn't online. */
318  if (!pl->hidden || QUERY_FLAG(op, FLAG_WIZ)) {
320  "You tell %s: %s",
321  "You tell %s: %s",
322  pl->ob->name, msg);
323 
324  return 1;
325  }
326  }
327 
329  "No such player or ambiguous name.", NULL);
330  return 1;
331 }
332 
343 int command_tell(object *op, char *params) {
344  return do_tell(op, params, 0);
345 }
346 
357 int command_dmtell(object *op, char *params) {
358  return do_tell(op, params, 1);
359 }
360 
373 int command_reply(object *op, char *params) {
374  player *pl;
375 
376  if (params == NULL) {
378  "Reply what?", NULL);
379  return 1;
380  }
381 
382  if (op->contr->last_tell[0] == '\0') {
384  "You can't reply to nobody.", NULL);
385  return 1;
386  }
387 
388  /* Find player object of player to reply to and check if player still exists */
389  pl = find_player(op->contr->last_tell);
390  if (pl == NULL) {
392  "You can't reply, this player left.", NULL);
393  return 1;
394  }
395 
396  /* Update last_tell value */
397  strcpy(pl->last_tell, op->name);
398 
400  "%s tells you: %s",
401  "%s tells you: %s",
402  op->name, params);
403 
404  if (pl->hidden && !QUERY_FLAG(op, FLAG_WIZ)) {
406  "You can't reply, this player left.", NULL);
407  return 1;
408  }
409 
411  "You tell to %s: %s",
412  "You tell to %s: %s",
413  pl->ob->name, params);
414  return 1;
415 }
416 
438 static int basic_emote(object *op, char *params, int emotion) {
439  char buf[MAX_BUF], buf2[MAX_BUF], buf3[MAX_BUF];
440  player *pl;
441 
442  if (!params) {
443  switch (emotion) {
444  case EMOTE_NOD:
445  sprintf(buf, "%s nods solemnly.", op->name);
446  sprintf(buf2, "You nod solemnly.");
447  break;
448 
449  case EMOTE_DANCE:
450  sprintf(buf, "%s expresses himself through interpretive dance.", op->name);
451  sprintf(buf2, "You dance with glee.");
452  break;
453 
454  case EMOTE_KISS:
455  sprintf(buf, "%s makes a weird facial contortion", op->name);
456  sprintf(buf2, "All the lonely people..");
457  break;
458 
459  case EMOTE_BOUNCE:
460  sprintf(buf, "%s bounces around.", op->name);
461  sprintf(buf2, "BOIINNNNNNGG!");
462  break;
463 
464  case EMOTE_SMILE:
465  sprintf(buf, "%s smiles happily.", op->name);
466  sprintf(buf2, "You smile happily.");
467  break;
468 
469  case EMOTE_CACKLE:
470  sprintf(buf, "%s throws back his head and cackles with insane glee!", op->name);
471  sprintf(buf2, "You cackle gleefully.");
472  break;
473 
474  case EMOTE_LAUGH:
475  sprintf(buf, "%s falls down laughing.", op->name);
476  sprintf(buf2, "You fall down laughing.");
477  break;
478 
479  case EMOTE_GIGGLE:
480  sprintf(buf, "%s giggles.", op->name);
481  sprintf(buf2, "You giggle.");
482  break;
483 
484  case EMOTE_SHAKE:
485  sprintf(buf, "%s shakes his head.", op->name);
486  sprintf(buf2, "You shake your head.");
487  break;
488 
489  case EMOTE_PUKE:
490  sprintf(buf, "%s pukes.", op->name);
491  sprintf(buf2, "Bleaaaaaghhhhhhh!");
492  break;
493 
494  case EMOTE_GROWL:
495  sprintf(buf, "%s growls.", op->name);
496  sprintf(buf2, "Grrrrrrrrr....");
497  break;
498 
499  case EMOTE_SCREAM:
500  sprintf(buf, "%s screams at the top of his lungs!", op->name);
501  sprintf(buf2, "ARRRRRRRRRRGH!!!!!");
502  break;
503 
504  case EMOTE_SIGH:
505  sprintf(buf, "%s sighs loudly.", op->name);
506  sprintf(buf2, "You sigh.");
507  break;
508 
509  case EMOTE_SULK:
510  sprintf(buf, "%s sulks in the corner.", op->name);
511  sprintf(buf2, "You sulk.");
512  break;
513 
514  case EMOTE_CRY:
515  sprintf(buf, "%s bursts into tears.", op->name);
516  sprintf(buf2, "Waaaaaaahhh..");
517  break;
518 
519  case EMOTE_GRIN:
520  sprintf(buf, "%s grins evilly.", op->name);
521  sprintf(buf2, "You grin evilly.");
522  break;
523 
524  case EMOTE_BOW:
525  sprintf(buf, "%s bows deeply.", op->name);
526  sprintf(buf2, "You bow deeply.");
527  break;
528 
529  case EMOTE_CLAP:
530  sprintf(buf, "%s gives a round of applause.", op->name);
531  sprintf(buf2, "Clap, clap, clap.");
532  break;
533 
534  case EMOTE_BLUSH:
535  sprintf(buf, "%s blushes.", op->name);
536  sprintf(buf2, "Your cheeks are burning.");
537  break;
538 
539  case EMOTE_BURP:
540  sprintf(buf, "%s burps loudly.", op->name);
541  sprintf(buf2, "You burp loudly.");
542  break;
543 
544  case EMOTE_CHUCKLE:
545  sprintf(buf, "%s chuckles politely.", op->name);
546  sprintf(buf2, "You chuckle politely");
547  break;
548 
549  case EMOTE_COUGH:
550  sprintf(buf, "%s coughs loudly.", op->name);
551  sprintf(buf2, "Yuck, try to cover your mouth next time!");
552  break;
553 
554  case EMOTE_FLIP:
555  sprintf(buf, "%s flips head over heels.", op->name);
556  sprintf(buf2, "You flip head over heels.");
557  break;
558 
559  case EMOTE_FROWN:
560  sprintf(buf, "%s frowns.", op->name);
561  sprintf(buf2, "What's bothering you?");
562  break;
563 
564  case EMOTE_GASP:
565  sprintf(buf, "%s gasps in astonishment.", op->name);
566  sprintf(buf2, "You gasp in astonishment.");
567  break;
568 
569  case EMOTE_GLARE:
570  sprintf(buf, "%s glares around him.", op->name);
571  sprintf(buf2, "You glare at nothing in particular.");
572  break;
573 
574  case EMOTE_GROAN:
575  sprintf(buf, "%s groans loudly.", op->name);
576  sprintf(buf2, "You groan loudly.");
577  break;
578 
579  case EMOTE_HICCUP:
580  sprintf(buf, "%s hiccups.", op->name);
581  sprintf(buf2, "*HIC*");
582  break;
583 
584  case EMOTE_LICK:
585  sprintf(buf, "%s licks his mouth and smiles.", op->name);
586  sprintf(buf2, "You lick your mouth and smile.");
587  break;
588 
589  case EMOTE_POUT:
590  sprintf(buf, "%s pouts.", op->name);
591  sprintf(buf2, "Aww, don't take it so hard.");
592  break;
593 
594  case EMOTE_SHIVER:
595  sprintf(buf, "%s shivers uncomfortably.", op->name);
596  sprintf(buf2, "Brrrrrrrrr.");
597  break;
598 
599  case EMOTE_SHRUG:
600  sprintf(buf, "%s shrugs helplessly.", op->name);
601  sprintf(buf2, "You shrug.");
602  break;
603 
604  case EMOTE_SMIRK:
605  sprintf(buf, "%s smirks.", op->name);
606  sprintf(buf2, "You smirk.");
607  break;
608 
609  case EMOTE_SNAP:
610  sprintf(buf, "%s snaps his fingers.", op->name);
611  sprintf(buf2, "PRONTO! You snap your fingers.");
612  break;
613 
614  case EMOTE_SNEEZE:
615  sprintf(buf, "%s sneezes.", op->name);
616  sprintf(buf2, "Gesundheit!");
617  break;
618 
619  case EMOTE_SNICKER:
620  sprintf(buf, "%s snickers softly.", op->name);
621  sprintf(buf2, "You snicker softly.");
622  break;
623 
624  case EMOTE_SNIFF:
625  sprintf(buf, "%s sniffs sadly.", op->name);
626  sprintf(buf2, "You sniff sadly. *SNIFF*");
627  break;
628 
629  case EMOTE_SNORE:
630  sprintf(buf, "%s snores loudly.", op->name);
631  sprintf(buf2, "Zzzzzzzzzzzzzzz.");
632  break;
633 
634  case EMOTE_SPIT:
635  sprintf(buf, "%s spits over his left shoulder.", op->name);
636  sprintf(buf2, "You spit over your left shoulder.");
637  break;
638 
639  case EMOTE_STRUT:
640  sprintf(buf, "%s struts proudly.", op->name);
641  sprintf(buf2, "Strut your stuff.");
642  break;
643 
644  case EMOTE_TWIDDLE:
645  sprintf(buf, "%s patiently twiddles his thumbs.", op->name);
646  sprintf(buf2, "You patiently twiddle your thumbs.");
647  break;
648 
649  case EMOTE_WAVE:
650  sprintf(buf, "%s waves happily.", op->name);
651  sprintf(buf2, "You wave.");
652  break;
653 
654  case EMOTE_WHISTLE:
655  sprintf(buf, "%s whistles appreciatively.", op->name);
656  sprintf(buf2, "You whistle appreciatively.");
657  break;
658 
659  case EMOTE_WINK:
660  sprintf(buf, "%s winks suggestively.", op->name);
661  sprintf(buf2, "Have you got something in your eye?");
662  break;
663 
664  case EMOTE_YAWN:
665  sprintf(buf, "%s yawns sleepily.", op->name);
666  sprintf(buf2, "You open up your yap and let out a big breeze of stale air.");
667  break;
668 
669  case EMOTE_CRINGE:
670  sprintf(buf, "%s cringes in terror!", op->name);
671  sprintf(buf2, "You cringe in terror.");
672  break;
673 
674  case EMOTE_BLEED:
675  sprintf(buf, "%s is bleeding all over the carpet - got a spare tourniquet?", op->name);
676  sprintf(buf2, "You bleed all over your nice new armour.");
677  break;
678 
679  case EMOTE_THINK:
680  sprintf(buf, "%s closes his eyes and thinks really hard.", op->name);
681  sprintf(buf2, "Anything in particular that you'd care to think about?");
682  break;
683 
684  default:
685  sprintf(buf, "%s dances with glee.", op->name);
686  sprintf(buf2, "You are a nut.");
687  break;
688  } /*case*/
690  buf, NULL);
692  buf2, NULL);
693  return(0);
694  } else {
695  for (pl = first_player; pl != NULL; pl = pl->next) {
696  if (strncasecmp(pl->ob->name, params, MAX_NAME) == 0
697  && pl->ob->map == op->map
698  && pl->ob != op
699  && !(QUERY_FLAG(pl->ob, FLAG_WIZ) && pl->ob->contr->hidden)) {
700  /* Hidden dms are not affected by emotions*/
701  switch (emotion) {
702  case EMOTE_NOD:
703  sprintf(buf, "You nod solemnly to %s.", pl->ob->name);
704  sprintf(buf2, "%s nods solemnly to you.", op->name);
705  sprintf(buf3, "%s nods solemnly to %s.", op->name, pl->ob->name);
706  break;
707 
708  case EMOTE_DANCE:
709  sprintf(buf, "You grab %s and begin doing the Cha-Cha!", pl->ob->name);
710  sprintf(buf2, "%s grabs you, and begins dancing!", op->name);
711  sprintf(buf3, "Yipe! %s and %s are doing the Macarena!", op->name, pl->ob->name);
712  break;
713 
714  case EMOTE_KISS:
715  sprintf(buf, "You kiss %s.", pl->ob->name);
716  sprintf(buf2, "%s kisses you.", op->name);
717  sprintf(buf3, "%s kisses %s.", op->name, pl->ob->name);
718  break;
719 
720  case EMOTE_BOUNCE:
721  sprintf(buf, "You bounce around the room with %s.", pl->ob->name);
722  sprintf(buf2, "%s bounces around the room with you.", op->name);
723  sprintf(buf3, "%s bounces around the room with %s.", op->name, pl->ob->name);
724  break;
725 
726  case EMOTE_SMILE:
727  sprintf(buf, "You smile at %s.", pl->ob->name);
728  sprintf(buf2, "%s smiles at you.", op->name);
729  sprintf(buf3, "%s beams a smile at %s.", op->name, pl->ob->name);
730  break;
731 
732  case EMOTE_LAUGH:
733  sprintf(buf, "You take one look at %s and fall down laughing.", pl->ob->name);
734  sprintf(buf2, "%s looks at you and falls down on the ground laughing.", op->name);
735  sprintf(buf3, "%s looks at %s and falls down on the ground laughing.", op->name, pl->ob->name);
736  break;
737 
738  case EMOTE_SHAKE:
739  sprintf(buf, "You shake %s's hand.", pl->ob->name);
740  sprintf(buf2, "%s shakes your hand.", op->name);
741  sprintf(buf3, "%s shakes %s's hand.", op->name, pl->ob->name);
742  break;
743 
744  case EMOTE_PUKE:
745  sprintf(buf, "You puke on %s.", pl->ob->name);
746  sprintf(buf2, "%s pukes on your clothes!", op->name);
747  sprintf(buf3, "%s pukes on %s.", op->name, pl->ob->name);
748  break;
749 
750  case EMOTE_HUG:
751  sprintf(buf, "You hug %s.", pl->ob->name);
752  sprintf(buf2, "%s hugs you.", op->name);
753  sprintf(buf3, "%s hugs %s.", op->name, pl->ob->name);
754  break;
755 
756  case EMOTE_CRY:
757  sprintf(buf, "You cry on %s's shoulder.", pl->ob->name);
758  sprintf(buf2, "%s cries on your shoulder.", op->name);
759  sprintf(buf3, "%s cries on %s's shoulder.", op->name, pl->ob->name);
760  break;
761 
762  case EMOTE_POKE:
763  sprintf(buf, "You poke %s in the ribs.", pl->ob->name);
764  sprintf(buf2, "%s pokes you in the ribs.", op->name);
765  sprintf(buf3, "%s pokes %s in the ribs.", op->name, pl->ob->name);
766  break;
767 
768  case EMOTE_ACCUSE:
769  sprintf(buf, "You look accusingly at %s.", pl->ob->name);
770  sprintf(buf2, "%s looks accusingly at you.", op->name);
771  sprintf(buf3, "%s looks accusingly at %s.", op->name, pl->ob->name);
772  break;
773 
774  case EMOTE_GRIN:
775  sprintf(buf, "You grin at %s.", pl->ob->name);
776  sprintf(buf2, "%s grins evilly at you.", op->name);
777  sprintf(buf3, "%s grins evilly at %s.", op->name, pl->ob->name);
778  break;
779 
780  case EMOTE_BOW:
781  sprintf(buf, "You bow before %s.", pl->ob->name);
782  sprintf(buf2, "%s bows before you.", op->name);
783  sprintf(buf3, "%s bows before %s.", op->name, pl->ob->name);
784  break;
785 
786  case EMOTE_FROWN:
787  sprintf(buf, "You frown darkly at %s.", pl->ob->name);
788  sprintf(buf2, "%s frowns darkly at you.", op->name);
789  sprintf(buf3, "%s frowns darkly at %s.", op->name, pl->ob->name);
790  break;
791 
792  case EMOTE_GLARE:
793  sprintf(buf, "You glare icily at %s.", pl->ob->name);
794  sprintf(buf2, "%s glares icily at you, you feel cold to your bones.", op->name);
795  sprintf(buf3, "%s glares at %s.", op->name, pl->ob->name);
796  break;
797 
798  case EMOTE_LICK:
799  sprintf(buf, "You lick %s.", pl->ob->name);
800  sprintf(buf2, "%s licks you.", op->name);
801  sprintf(buf3, "%s licks %s.", op->name, pl->ob->name);
802  break;
803 
804  case EMOTE_SHRUG:
805  sprintf(buf, "You shrug at %s.", pl->ob->name);
806  sprintf(buf2, "%s shrugs at you.", op->name);
807  sprintf(buf3, "%s shrugs at %s.", op->name, pl->ob->name);
808  break;
809 
810  case EMOTE_SLAP:
811  sprintf(buf, "You slap %s.", pl->ob->name);
812  sprintf(buf2, "You are slapped by %s.", op->name);
813  sprintf(buf3, "%s slaps %s.", op->name, pl->ob->name);
814  break;
815 
816  case EMOTE_SNEEZE:
817  sprintf(buf, "You sneeze at %s and a film of snot shoots onto him.", pl->ob->name);
818  sprintf(buf2, "%s sneezes on you, you feel the snot cover you. EEEEEEW.", op->name);
819  sprintf(buf3, "%s sneezes on %s and a film of snot covers him.", op->name, pl->ob->name);
820  break;
821 
822  case EMOTE_SNIFF:
823  sprintf(buf, "You sniff %s.", pl->ob->name);
824  sprintf(buf2, "%s sniffs you.", op->name);
825  sprintf(buf3, "%s sniffs %s", op->name, pl->ob->name);
826  break;
827 
828  case EMOTE_SPIT:
829  sprintf(buf, "You spit on %s.", pl->ob->name);
830  sprintf(buf2, "%s spits in your face!", op->name);
831  sprintf(buf3, "%s spits in %s's face.", op->name, pl->ob->name);
832  break;
833 
834  case EMOTE_THANK:
835  sprintf(buf, "You thank %s heartily.", pl->ob->name);
836  sprintf(buf2, "%s thanks you heartily.", op->name);
837  sprintf(buf3, "%s thanks %s heartily.", op->name, pl->ob->name);
838  break;
839 
840  case EMOTE_WAVE:
841  sprintf(buf, "You wave goodbye to %s.", pl->ob->name);
842  sprintf(buf2, "%s waves goodbye to you. Have a good journey.", op->name);
843  sprintf(buf3, "%s waves goodbye to %s.", op->name, pl->ob->name);
844  break;
845 
846  case EMOTE_WHISTLE:
847  sprintf(buf, "You whistle at %s.", pl->ob->name);
848  sprintf(buf2, "%s whistles at you.", op->name);
849  sprintf(buf2, "%s whistles at %s.", op->name, pl->ob->name);
850  break;
851 
852  case EMOTE_WINK:
853  sprintf(buf, "You wink suggestively at %s.", pl->ob->name);
854  sprintf(buf2, "%s winks suggestively at you.", op->name);
855  sprintf(buf2, "%s winks at %s.", op->name, pl->ob->name);
856  break;
857 
858  case EMOTE_BEG:
859  sprintf(buf, "You beg %s for mercy.", pl->ob->name);
860  sprintf(buf2, "%s begs you for mercy! Show no quarter!", op->name);
861  sprintf(buf2, "%s begs %s for mercy!", op->name, pl->ob->name);
862  break;
863 
864  case EMOTE_BLEED:
865  sprintf(buf, "You slash your wrist and bleed all over %s", pl->ob->name);
866  sprintf(buf2, "%s slashes his wrist and bleeds all over you.", op->name);
867  sprintf(buf2, "%s slashes his wrist and bleeds all over %s.", op->name, pl->ob->name);
868  break;
869 
870  case EMOTE_CRINGE:
871  sprintf(buf, "You cringe away from %s.", pl->ob->name);
872  sprintf(buf2, "%s cringes away from you.", op->name);
873  sprintf(buf2, "%s cringes away from %s in mortal terror.", op->name, pl->ob->name);
874  break;
875 
876  default:
877  sprintf(buf, "You are still nuts.");
878  sprintf(buf2, "You get the distinct feeling that %s is nuts.", op->name);
879  sprintf(buf3, "%s is eyeing %s quizzically.", pl->ob->name, op->name);
880  break;
881  } /*case*/
883  buf, NULL);
885  buf2, NULL);
887  buf3, NULL);
888  return(0);
889  }
890  if (strncasecmp(pl->ob->name, params, MAX_NAME) == 0
891  && pl->ob->map == op->map
892  && pl->ob == op) {
893  switch (emotion) {
894  case EMOTE_DANCE:
895  sprintf(buf, "You skip and dance around by yourself.");
896  sprintf(buf2, "%s embraces himself and begins to dance!", op->name);
897  break;
898 
899  case EMOTE_LAUGH:
900  sprintf(buf, "Laugh at yourself all you want, the others won't understand.");
901  sprintf(buf2, "%s is laughing at something.", op->name);
902  break;
903 
904  case EMOTE_SHAKE:
905  sprintf(buf, "You are shaken by yourself.");
906  sprintf(buf2, "%s shakes and quivers like a bowlful of jelly.", op->name);
907  break;
908 
909  case EMOTE_PUKE:
910  sprintf(buf, "You puke on yourself.");
911  sprintf(buf2, "%s pukes on his clothes.", op->name);
912  break;
913 
914  case EMOTE_HUG:
915  sprintf(buf, "You hug yourself.");
916  sprintf(buf2, "%s hugs himself.", op->name);
917  break;
918 
919  case EMOTE_CRY:
920  sprintf(buf, "You cry to yourself.");
921  sprintf(buf2, "%s sobs quietly to himself.", op->name);
922  break;
923 
924  case EMOTE_POKE:
925  sprintf(buf, "You poke yourself in the ribs, feeling very silly.");
926  sprintf(buf2, "%s pokes himself in the ribs, looking very sheepish.", op->name);
927  break;
928 
929  case EMOTE_ACCUSE:
930  sprintf(buf, "You accuse yourself.");
931  sprintf(buf2, "%s seems to have a bad conscience.", op->name);
932  break;
933 
934  case EMOTE_BOW:
935  sprintf(buf, "You kiss your toes.");
936  sprintf(buf2, "%s folds up like a jackknife and kisses his own toes.", op->name);
937  break;
938 
939  case EMOTE_FROWN:
940  sprintf(buf, "You frown at yourself.");
941  sprintf(buf2, "%s frowns at himself.", op->name);
942  break;
943 
944  case EMOTE_GLARE:
945  sprintf(buf, "You glare icily at your feet, they are suddenly very cold.");
946  sprintf(buf2, "%s glares at his feet, what is bothering him?", op->name);
947  break;
948 
949  case EMOTE_LICK:
950  sprintf(buf, "You lick yourself.");
951  sprintf(buf2, "%s licks himself - YUCK.", op->name);
952  break;
953 
954  case EMOTE_SLAP:
955  sprintf(buf, "You slap yourself, silly you.");
956  sprintf(buf2, "%s slaps himself, really strange...", op->name);
957  break;
958 
959  case EMOTE_SNEEZE:
960  sprintf(buf, "You sneeze on yourself, what a mess!");
961  sprintf(buf2, "%s sneezes, and covers himself in a slimy substance.", op->name);
962  break;
963 
964  case EMOTE_SNIFF:
965  sprintf(buf, "You sniff yourself.");
966  sprintf(buf2, "%s sniffs himself.", op->name);
967  break;
968 
969  case EMOTE_SPIT:
970  sprintf(buf, "You drool all over yourself.");
971  sprintf(buf2, "%s drools all over himself.", op->name);
972  break;
973 
974  case EMOTE_THANK:
975  sprintf(buf, "You thank yourself since nobody else wants to!");
976  sprintf(buf2, "%s thanks himself since you won't.", op->name);
977  break;
978 
979  case EMOTE_WAVE:
980  sprintf(buf, "Are you going on adventures as well??");
981  sprintf(buf2, "%s waves goodbye to himself.", op->name);
982  break;
983 
984  case EMOTE_WHISTLE:
985  sprintf(buf, "You whistle while you work.");
986  sprintf(buf2, "%s whistles to himself in boredom.", op->name);
987  break;
988 
989  case EMOTE_WINK:
990  sprintf(buf, "You wink at yourself?? What are you up to?");
991  sprintf(buf2, "%s winks at himself - something strange is going on...", op->name);
992  break;
993 
994  case EMOTE_BLEED:
995  sprintf(buf, "Very impressive! You wipe your blood all over yourself.");
996  sprintf(buf2, "%s performs some satanic ritual while wiping his blood on himself.", op->name);
997  break;
998 
999  default:
1000  sprintf(buf, "My god! is that LEGAL?");
1001  sprintf(buf2, "You look away from %s.", op->name);
1002  break;
1003  }/*case*/
1005  buf, NULL);
1007  buf2, NULL);
1008  return(0);
1009  }/*if self*/
1010  }/*for*/
1012  "%s is not around.",
1013  "%s is not around.",
1014  params);
1015  return(1);
1016  } /*else*/
1017 
1018  return(0);
1019 }
1020 
1021 /*
1022  * everything from here on out are just wrapper calls to basic_emote
1023  */
1024 
1034 int command_nod(object *op, char *params) {
1035  return(basic_emote(op, params, EMOTE_NOD));
1036 }
1037 
1047 int command_dance(object *op, char *params) {
1048  return(basic_emote(op, params, EMOTE_DANCE));
1049 }
1050 
1060 int command_kiss(object *op, char *params) {
1061  return(basic_emote(op, params, EMOTE_KISS));
1062 }
1063 
1073 int command_bounce(object *op, char *params) {
1074  return(basic_emote(op, params, EMOTE_BOUNCE));
1075 }
1076 
1086 int command_smile(object *op, char *params) {
1087  return(basic_emote(op, params, EMOTE_SMILE));
1088 }
1089 
1099 int command_cackle(object *op, char *params) {
1100  return(basic_emote(op, params, EMOTE_CACKLE));
1101 }
1102 
1112 int command_laugh(object *op, char *params) {
1113  return(basic_emote(op, params, EMOTE_LAUGH));
1114 }
1115 
1125 int command_giggle(object *op, char *params) {
1126  return(basic_emote(op, params, EMOTE_GIGGLE));
1127 }
1128 
1138 int command_shake(object *op, char *params) {
1139  return(basic_emote(op, params, EMOTE_SHAKE));
1140 }
1141 
1151 int command_puke(object *op, char *params) {
1152  return(basic_emote(op, params, EMOTE_PUKE));
1153 }
1154 
1164 int command_growl(object *op, char *params) {
1165  return(basic_emote(op, params, EMOTE_GROWL));
1166 }
1167 
1177 int command_scream(object *op, char *params) {
1178  return(basic_emote(op, params, EMOTE_SCREAM));
1179 }
1180 
1190 int command_sigh(object *op, char *params) {
1191  return(basic_emote(op, params, EMOTE_SIGH));
1192 }
1193 
1203 int command_sulk(object *op, char *params) {
1204  return(basic_emote(op, params, EMOTE_SULK));
1205 }
1206 
1216 int command_hug(object *op, char *params) {
1217  return(basic_emote(op, params, EMOTE_HUG));
1218 }
1219 
1229 int command_cry(object *op, char *params) {
1230  return(basic_emote(op, params, EMOTE_CRY));
1231 }
1232 
1242 int command_poke(object *op, char *params) {
1243  return(basic_emote(op, params, EMOTE_POKE));
1244 }
1245 
1255 int command_accuse(object *op, char *params) {
1256  return(basic_emote(op, params, EMOTE_ACCUSE));
1257 }
1258 
1268 int command_grin(object *op, char *params) {
1269  return(basic_emote(op, params, EMOTE_GRIN));
1270 }
1271 
1281 int command_bow(object *op, char *params) {
1282  return(basic_emote(op, params, EMOTE_BOW));
1283 }
1284 
1294 int command_clap(object *op, char *params) {
1295  return(basic_emote(op, params, EMOTE_CLAP));
1296 }
1297 
1307 int command_blush(object *op, char *params) {
1308  return(basic_emote(op, params, EMOTE_BLUSH));
1309 }
1310 
1320 int command_burp(object *op, char *params) {
1321  return(basic_emote(op, params, EMOTE_BURP));
1322 }
1323 
1333 int command_chuckle(object *op, char *params) {
1334  return(basic_emote(op, params, EMOTE_CHUCKLE));
1335 }
1336 
1346 int command_cough(object *op, char *params) {
1347  return(basic_emote(op, params, EMOTE_COUGH));
1348 }
1349 
1359 int command_flip(object *op, char *params) {
1360  return(basic_emote(op, params, EMOTE_FLIP));
1361 }
1362 
1372 int command_frown(object *op, char *params) {
1373  return(basic_emote(op, params, EMOTE_FROWN));
1374 }
1375 
1385 int command_gasp(object *op, char *params) {
1386  return(basic_emote(op, params, EMOTE_GASP));
1387 }
1388 
1398 int command_glare(object *op, char *params) {
1399  return(basic_emote(op, params, EMOTE_GLARE));
1400 }
1401 
1411 int command_groan(object *op, char *params) {
1412  return(basic_emote(op, params, EMOTE_GROAN));
1413 }
1414 
1424 int command_hiccup(object *op, char *params) {
1425  return(basic_emote(op, params, EMOTE_HICCUP));
1426 }
1427 
1437 int command_lick(object *op, char *params) {
1438  return(basic_emote(op, params, EMOTE_LICK));
1439 }
1440 
1450 int command_pout(object *op, char *params) {
1451  return(basic_emote(op, params, EMOTE_POUT));
1452 }
1453 
1463 int command_shiver(object *op, char *params) {
1464  return(basic_emote(op, params, EMOTE_SHIVER));
1465 }
1466 
1476 int command_shrug(object *op, char *params) {
1477  return(basic_emote(op, params, EMOTE_SHRUG));
1478 }
1479 
1489 int command_slap(object *op, char *params) {
1490  return(basic_emote(op, params, EMOTE_SLAP));
1491 }
1492 
1502 int command_smirk(object *op, char *params) {
1503  return(basic_emote(op, params, EMOTE_SMIRK));
1504 }
1505 
1515 int command_snap(object *op, char *params) {
1516  return(basic_emote(op, params, EMOTE_SNAP));
1517 }
1518 
1528 int command_sneeze(object *op, char *params) {
1529  return(basic_emote(op, params, EMOTE_SNEEZE));
1530 }
1531 
1541 int command_snicker(object *op, char *params) {
1542  return(basic_emote(op, params, EMOTE_SNICKER));
1543 }
1544 
1554 int command_sniff(object *op, char *params) {
1555  return(basic_emote(op, params, EMOTE_SNIFF));
1556 }
1557 
1567 int command_snore(object *op, char *params) {
1568  return(basic_emote(op, params, EMOTE_SNORE));
1569 }
1570 
1580 int command_spit(object *op, char *params) {
1581  return(basic_emote(op, params, EMOTE_SPIT));
1582 }
1583 
1593 int command_strut(object *op, char *params) {
1594  return(basic_emote(op, params, EMOTE_STRUT));
1595 }
1596 
1606 int command_thank(object *op, char *params) {
1607  return(basic_emote(op, params, EMOTE_THANK));
1608 }
1609 
1619 int command_twiddle(object *op, char *params) {
1620  return(basic_emote(op, params, EMOTE_TWIDDLE));
1621 }
1622 
1632 int command_wave(object *op, char *params) {
1633  return(basic_emote(op, params, EMOTE_WAVE));
1634 }
1635 
1645 int command_whistle(object *op, char *params) {
1646  return(basic_emote(op, params, EMOTE_WHISTLE));
1647 }
1648 
1658 int command_wink(object *op, char *params) {
1659  return(basic_emote(op, params, EMOTE_WINK));
1660 }
1661 
1671 int command_yawn(object *op, char *params) {
1672  return(basic_emote(op, params, EMOTE_YAWN));
1673 }
1674 
1684 int command_beg(object *op, char *params) {
1685  return(basic_emote(op, params, EMOTE_BEG));
1686 }
1687 
1697 int command_bleed(object *op, char *params) {
1698  return(basic_emote(op, params, EMOTE_BLEED));
1699 }
1700 
1710 int command_cringe(object *op, char *params) {
1711  return(basic_emote(op, params, EMOTE_CRINGE));
1712 }
1713 
1723 int command_think(object *op, char *params) {
1724  return(basic_emote(op, params, EMOTE_THINK));
1725 }
Definition: player.h:146
int command_smile(object *op, char *params)
Definition: c_chat.c:1086
int command_spit(object *op, char *params)
Definition: c_chat.c:1580
#define EMOTE_SCREAM
Definition: commands.h:83
int command_clap(object *op, char *params)
Definition: c_chat.c:1294
#define EVENT_SHOUT
Definition: plugin.h:90
int command_pout(object *op, char *params)
Definition: c_chat.c:1450
void ext_info_map_except2(int color, const mapstruct *map, const object *op1, const object *op2, int type, int subtype, const char *str1, const char *str2)
Definition: info.c:330
int command_bleed(object *op, char *params)
Definition: c_chat.c:1697
#define DICE
Definition: c_chat.c:115
#define EMOTE_THINK
Definition: commands.h:125
int command_blush(object *op, char *params)
Definition: c_chat.c:1307
int command_snore(object *op, char *params)
Definition: c_chat.c:1567
#define NDI_ALL
Definition: newclient.h:220
#define EMOTE_POUT
Definition: commands.h:104
#define EMOTE_SMILE
Definition: commands.h:76
int command_smirk(object *op, char *params)
Definition: c_chat.c:1502
#define NDI_WHITE
Definition: newclient.h:196
#define EMOTE_BURP
Definition: commands.h:94
#define EMOTE_SNAP
Definition: commands.h:109
#define EMOTE_GROAN
Definition: commands.h:101
#define NDI_ORANGE
Definition: newclient.h:199
int command_tell(object *op, char *params)
Definition: c_chat.c:343
#define EMOTE_GASP
Definition: commands.h:99
#define EMOTE_STRUT
Definition: commands.h:115
int command_puke(object *op, char *params)
Definition: c_chat.c:1151
int command_say(object *op, char *params)
Definition: c_chat.c:47
int command_shake(object *op, char *params)
Definition: c_chat.c:1138
#define EMOTE_CHUCKLE
Definition: commands.h:95
#define EMOTE_SHAKE
Definition: commands.h:80
#define NDI_BLUE
Definition: newclient.h:200
#define EMOTE_SULK
Definition: commands.h:85
void draw_ext_info(int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *message, const char *oldmessage)
Definition: standalone.c:171
#define EMOTE_PUKE
Definition: commands.h:81
int command_snap(object *op, char *params)
Definition: c_chat.c:1515
int command_groan(object *op, char *params)
Definition: c_chat.c:1411
player * find_player(const char *plname)
Definition: player.c:62
#define EMOTE_CLAP
Definition: commands.h:92
int command_hiccup(object *op, char *params)
Definition: c_chat.c:1424
int command_strut(object *op, char *params)
Definition: c_chat.c:1593
static const char *const orcknuckle[7]
Definition: c_chat.c:105
#define EVENT_TELL
Definition: plugin.h:91
int command_giggle(object *op, char *params)
Definition: c_chat.c:1125
void draw_ext_info_format(int flags, int pri, const object *pl, uint8 type, uint8 subtype, const char *new_format, const char *old_format,...)
Definition: standalone.c:175
int command_cringe(object *op, char *params)
Definition: c_chat.c:1710
#define EMOTE_THANK
Definition: commands.h:116
int command_laugh(object *op, char *params)
Definition: c_chat.c:1112
#define EMOTE_HICCUP
Definition: commands.h:102
int command_grin(object *op, char *params)
Definition: c_chat.c:1268
int command_bow(object *op, char *params)
Definition: c_chat.c:1281
int command_cry(object *op, char *params)
Definition: c_chat.c:1229
#define EMOTE_NOD
Definition: commands.h:72
#define MSG_TYPE_COMMUNICATION_SHOUT
Definition: newclient.h:543
#define EMOTE_WINK
Definition: commands.h:120
int command_reply(object *op, char *params)
Definition: c_chat.c:373
int command_twiddle(object *op, char *params)
Definition: c_chat.c:1619
#define EMOTE_BEG
Definition: commands.h:122
int command_snicker(object *op, char *params)
Definition: c_chat.c:1541
int command_flip(object *op, char *params)
Definition: c_chat.c:1359
int rndm(int min, int max)
Definition: utils.c:174
#define MSG_TYPE_COMMUNICATION_EMOTE
Definition: newclient.h:541
#define EMOTE_KISS
Definition: commands.h:74
int command_wink(object *op, char *params)
Definition: c_chat.c:1658
int command_dance(object *op, char *params)
Definition: c_chat.c:1047
#define NDI_RED
Definition: newclient.h:198
sstring find_string(const char *str)
Definition: shstr.c:228
int command_scream(object *op, char *params)
Definition: c_chat.c:1177
static int command_tell_all(object *op, char *params, int pri, int color, int subtype, const char *desc)
Definition: c_chat.c:210
int command_shout(object *op, char *params)
Definition: c_chat.c:241
static int basic_emote(object *op, char *params, int emotion)
Definition: c_chat.c:438
int command_sneeze(object *op, char *params)
Definition: c_chat.c:1528
void communicate(object *op, const char *txt)
Definition: monster.c:1831
#define MSG_TYPE_COMMUNICATION_TELL
Definition: newclient.h:540
uint32 hidden
Definition: player.h:186
int command_beg(object *op, char *params)
Definition: c_chat.c:1684
int command_bounce(object *op, char *params)
Definition: c_chat.c:1073
#define EMOTE_DANCE
Definition: commands.h:73
#define EMOTE_SNORE
Definition: commands.h:113
struct mapdef * map
Definition: object.h:155
#define EMOTE_FLIP
Definition: commands.h:97
#define EMOTE_CRINGE
Definition: commands.h:124
#define EMOTE_SHIVER
Definition: commands.h:105
int die_roll(int num, int size, const object *op, int goodbad)
Definition: utils.c:134
const char * name
Definition: object.h:167
int command_me(object *op, char *params)
Definition: c_chat.c:64
#define EMOTE_TWIDDLE
Definition: commands.h:117
int command_yawn(object *op, char *params)
Definition: c_chat.c:1671
#define EMOTE_COUGH
Definition: commands.h:96
int execute_global_event(int eventcode,...)
Definition: standalone.c:229
char last_tell[MAX_NAME]
Definition: player.h:223
#define MSG_TYPE_COMMUNICATION_ME
Definition: newclient.h:539
#define EMOTE_WAVE
Definition: commands.h:118
uint32 nrof
Definition: object.h:184
unsigned char uint8
Definition: global.h:75
int command_cough(object *op, char *params)
Definition: c_chat.c:1346
int command_hug(object *op, char *params)
Definition: c_chat.c:1216
struct pl * contr
Definition: object.h:134
int command_gasp(object *op, char *params)
Definition: c_chat.c:1385
#define EMOTE_GLARE
Definition: commands.h:100
#define EMOTE_YAWN
Definition: commands.h:121
int command_lick(object *op, char *params)
Definition: c_chat.c:1437
#define QUERY_FLAG(xyz, p)
Definition: define.h:514
int command_accuse(object *op, char *params)
Definition: c_chat.c:1255
#define FLAG_WIZ
Definition: define.h:527
#define EMOTE_SIGH
Definition: commands.h:84
#define MAX_BUF
Definition: define.h:81
int command_glare(object *op, char *params)
Definition: c_chat.c:1398
#define EMOTE_BOW
Definition: commands.h:91
int strncasecmp(const char *s1, const char *s2, int n)
Definition: porting.c:402
int command_dmtell(object *op, char *params)
Definition: c_chat.c:357
int command_sulk(object *op, char *params)
Definition: c_chat.c:1203
int command_sniff(object *op, char *params)
Definition: c_chat.c:1554
object * ob
Definition: player.h:207
void ext_info_map_except(int color, const mapstruct *map, const object *op, uint8 type, uint8 subtype, const char *str1, const char *str2)
Definition: info.c:318
int command_shrug(object *op, char *params)
Definition: c_chat.c:1476
int snprintf(char *dest, int max, const char *format,...)
Definition: porting.c:498
#define decrease_ob(xyz)
Definition: global.h:276
int command_thank(object *op, char *params)
Definition: c_chat.c:1606
#define MSG_TYPE_COMMUNICATION_RANDOM
Definition: newclient.h:537
#define EMOTE_CRY
Definition: commands.h:87
#define EMOTE_FROWN
Definition: commands.h:98
#define EMOTE_BLEED
Definition: commands.h:123
int command_slap(object *op, char *params)
Definition: c_chat.c:1489
#define EMOTE_SHRUG
Definition: commands.h:106
#define EMOTE_SNIFF
Definition: commands.h:112
#define EMOTE_LICK
Definition: commands.h:103
int command_burp(object *op, char *params)
Definition: c_chat.c:1320
int command_chat(object *op, char *params)
Definition: c_chat.c:254
#define MSG_TYPE_COMMUNICATION
Definition: newclient.h:332
#define EMOTE_BLUSH
Definition: commands.h:93
int command_kiss(object *op, char *params)
Definition: c_chat.c:1060
int command_cointoss(object *op, char *params)
Definition: c_chat.c:84
#define EMOTE_HUG
Definition: commands.h:86
#define EMOTE_GRIN
Definition: commands.h:90
#define MSG_TYPE_COMMAND
Definition: newclient.h:326
int command_nod(object *op, char *params)
Definition: c_chat.c:1034
int command_sigh(object *op, char *params)
Definition: c_chat.c:1190
#define EMOTE_BOUNCE
Definition: commands.h:75
#define MSG_TYPE_COMMUNICATION_CHAT
Definition: newclient.h:544
int command_frown(object *op, char *params)
Definition: c_chat.c:1372
EXTERN player * first_player
Definition: global.h:190
struct pl * next
Definition: player.h:147
struct obj * inv
Definition: object.h:148
#define NDI_UNIQUE
Definition: newclient.h:219
uint32 no_shout
Definition: player.h:188
int command_think(object *op, char *params)
Definition: c_chat.c:1723
int command_cackle(object *op, char *params)
Definition: c_chat.c:1099
#define MAX_NAME
Definition: define.h:87
#define EMOTE_WHISTLE
Definition: commands.h:119
#define EMOTE_SNEEZE
Definition: commands.h:110
int command_whistle(object *op, char *params)
Definition: c_chat.c:1645
uint8 listening
Definition: player.h:174
static int do_tell(object *op, char *params, int adjust_listen)
Definition: c_chat.c:270
int command_shiver(object *op, char *params)
Definition: c_chat.c:1463
#define EMOTE_CACKLE
Definition: commands.h:77
#define EMOTE_SMIRK
Definition: commands.h:108
#define EMOTE_GIGGLE
Definition: commands.h:79
int command_wave(object *op, char *params)
Definition: c_chat.c:1632
#define EMOTE_ACCUSE
Definition: commands.h:89
#define EMOTE_GROWL
Definition: commands.h:82
#define EMOTE_SLAP
Definition: commands.h:107
#define EMOTE_SNICKER
Definition: commands.h:111
player * find_player_partial_name(const char *plname)
Definition: player.c:84
#define MSG_TYPE_COMMAND_ERROR
Definition: newclient.h:447
int command_chuckle(object *op, char *params)
Definition: c_chat.c:1333
void ext_info_map(int color, const mapstruct *map, uint8 type, uint8 subtype, const char *str1, const char *str2)
Definition: standalone.c:184
const char * name
Definition: object.h:322
int command_growl(object *op, char *params)
Definition: c_chat.c:1164
#define EMOTE_POKE
Definition: commands.h:88
#define EMOTE_SPIT
Definition: commands.h:114
int command_poke(object *op, char *params)
Definition: c_chat.c:1242
#define EMOTE_LAUGH
Definition: commands.h:78