00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00034 #include <global.h>
00035 #include <loader.h>
00036 #include <sproto.h>
00037
00047 int command_say(object *op, char *params) {
00048 if (!params)
00049 return 0;
00050 communicate(op, params);
00051
00052 return 0;
00053 }
00054
00064 int command_me(object *op, char *params) {
00065 char buf[MAX_BUF];
00066
00067 if (!params)
00068 return 0;
00069 snprintf(buf, MAX_BUF-1, "%s %s", op->name, params);
00070 ext_info_map(NDI_UNIQUE|NDI_BLUE, op->map, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_ME,
00071 buf, NULL);
00072 return 0;
00073 }
00074
00084 int command_cointoss(object *op, char *params) {
00085 char buf[MAX_BUF];
00086 char buf2[MAX_BUF];
00087 int i;
00088
00089 i = rndm(1, 2);
00090 if (i == 1) {
00091 snprintf(buf, MAX_BUF-1, "%s flips a coin.... Heads!", op->name);
00092 snprintf(buf2, MAX_BUF-1, "You flip a coin.... Heads!");
00093 } else {
00094 snprintf(buf, MAX_BUF-1, "%s flips a coin.... Tails!", op->name);
00095 snprintf(buf2, MAX_BUF-1, "You flip a coin.... Tails!");
00096 }
00097 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00098 buf2, NULL);
00099 ext_info_map_except(NDI_WHITE, op->map, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00100 buf, NULL);
00101 return 0;
00102 }
00103
00105 static const char *const orcknuckle[7] = {
00106 "none",
00107 "beholder",
00108 "ghost",
00109 "knight",
00110 "princess",
00111 "dragon",
00112 "orc"
00113 };
00114
00115 #define DICE 4
00134 int command_orcknuckle(object *op, char *params) {
00135 char buf[MAX_BUF];
00136 char buf2[MAX_BUF];
00137 object *dice[DICE];
00138 object *ob;
00139 int i, j, k, l, dice_count, number_dice;
00140 const char *name;
00141
00142
00143 name = find_string("dice");
00144 if (name) {
00145 for (dice_count = 0; dice_count < DICE; dice_count++)
00146 dice[dice_count] = NULL;
00147 dice_count = 0;
00148 number_dice = 0;
00149
00150 for (ob = op->inv; ob && dice_count < DICE && number_dice < DICE; ob = ob->below) {
00151 if (ob->name == name) {
00152 number_dice += ob->nrof;
00153 dice[dice_count++] = ob;
00154 }
00155 }
00156
00157 if (number_dice < DICE) {
00158 draw_ext_info_format(NDI_UNIQUE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00159 "You need at least %d dice to play orcknuckle!",
00160 "You need at least %d dice to play orcknuckle!", DICE);
00161 return 0;
00162 }
00163 }
00164
00165 i = rndm(1, 5);
00166 j = rndm(1, 5);
00167 k = rndm(1, 5);
00168 l = rndm(1, 6);
00169
00170 snprintf(buf2, MAX_BUF-1, "%s rolls %s, %s, %s, %s!", op->name, orcknuckle[i], orcknuckle[j], orcknuckle[k], orcknuckle[l]);
00171 snprintf(buf, MAX_BUF-1, "You roll %s, %s, %s, %s!", orcknuckle[i], orcknuckle[j], orcknuckle[k], orcknuckle[l]);
00172
00173 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00174 buf, NULL);
00175 ext_info_map_except(NDI_UNIQUE, op->map, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00176 buf2, NULL);
00177
00178 if (name) {
00179
00180 if (die_roll(1, 100, op, 1) < 5) {
00181
00182 decrease_ob(dice[rndm(1, dice_count)-1]);
00183 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_RANDOM,
00184 "Oops, you lost a die!", "Oops, you lost a die!");
00185 }
00186 }
00187
00188 return 0;
00189 #undef DICE
00190 }
00191
00210 static int command_tell_all(object *op, char *params, int pri, int color, int subtype, const char *desc) {
00211 if (op->contr->no_shout == 1) {
00212 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00213 "You are no longer allowed to shout or chat.", NULL);
00214 return 1;
00215 } else {
00216 if (params == NULL) {
00217 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00218 "Shout/Chat what?", NULL);
00219 return 1;
00220 }
00221 draw_ext_info_format(NDI_UNIQUE|NDI_ALL|color, pri, NULL, MSG_TYPE_COMMUNICATION, subtype,
00222 "%s %s: %s",
00223 "%s %s: %s",
00224 op->name, desc, params);
00225
00226
00227 execute_global_event(EVENT_SHOUT, op, params, pri);
00228 return 1;
00229 }
00230 }
00231
00241 int command_shout(object *op, char *params) {
00242 return command_tell_all(op, params, 1, NDI_RED, MSG_TYPE_COMMUNICATION_SHOUT, "shouts");
00243 }
00244
00254 int command_chat(object *op, char *params) {
00255 return command_tell_all(op, params, 9, NDI_BLUE, MSG_TYPE_COMMUNICATION_CHAT, "chats");
00256 }
00257
00270 static int do_tell(object *op, char *params, int adjust_listen) {
00271 char buf[MAX_BUF], *name = NULL, *msg = NULL;
00272 player *pl;
00273 uint8 original_listen;
00274
00275 if (params != NULL) {
00276 name = params;
00277 msg = strchr(name, ' ');
00278 if (msg) {
00279 *(msg++) = 0;
00280 if (*msg == 0)
00281 msg = NULL;
00282 }
00283 }
00284
00285 if (name == NULL) {
00286 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00287 "Tell whom what?", NULL);
00288 return 1;
00289 } else if (msg == NULL) {
00290 draw_ext_info_format(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00291 "Tell %s what?",
00292 "Tell %s what?",
00293 name);
00294 return 1;
00295 }
00296
00297 snprintf(buf, MAX_BUF-1, "%s tells you: %s", op->name, msg);
00298
00299 pl = find_player_partial_name(name);
00300 if (pl) {
00301 if (adjust_listen) {
00302 original_listen = pl->listening;
00303 pl->listening = 10;
00304 }
00305
00306 execute_global_event(EVENT_TELL, op, msg, pl->ob);
00307
00308 draw_ext_info(NDI_UNIQUE|NDI_ORANGE, 0, pl->ob, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_TELL,
00309 buf, NULL);
00310
00311 if (adjust_listen)
00312 pl->listening = original_listen;
00313
00314
00315 snprintf(pl->last_tell, sizeof(pl->last_tell), "%s", op->name);
00316
00317
00318 if (!pl->hidden || QUERY_FLAG(op, FLAG_WIZ)) {
00319 draw_ext_info_format(NDI_UNIQUE|NDI_ORANGE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_TELL,
00320 "You tell %s: %s",
00321 "You tell %s: %s",
00322 pl->ob->name, msg);
00323
00324 return 1;
00325 }
00326 }
00327
00328 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00329 "No such player or ambiguous name.", NULL);
00330 return 1;
00331 }
00332
00343 int command_tell(object *op, char *params) {
00344 return do_tell(op, params, 0);
00345 }
00346
00357 int command_dmtell(object *op, char *params) {
00358 return do_tell(op, params, 1);
00359 }
00360
00373 int command_reply(object *op, char *params) {
00374 player *pl;
00375
00376 if (params == NULL) {
00377 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00378 "Reply what?", NULL);
00379 return 1;
00380 }
00381
00382 if (op->contr->last_tell[0] == '\0') {
00383 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00384 "You can't reply to nobody.", NULL);
00385 return 1;
00386 }
00387
00388
00389 pl = find_player(op->contr->last_tell);
00390 if (pl == NULL) {
00391 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00392 "You can't reply, this player left.", NULL);
00393 return 1;
00394 }
00395
00396
00397 strcpy(pl->last_tell, op->name);
00398
00399 draw_ext_info_format(NDI_UNIQUE|NDI_ORANGE, 0, pl->ob, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_TELL,
00400 "%s tells you: %s",
00401 "%s tells you: %s",
00402 op->name, params);
00403
00404 if (pl->hidden && !QUERY_FLAG(op, FLAG_WIZ)) {
00405 draw_ext_info(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
00406 "You can't reply, this player left.", NULL);
00407 return 1;
00408 }
00409
00410 draw_ext_info_format(NDI_UNIQUE|NDI_ORANGE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_TELL,
00411 "You tell to %s: %s",
00412 "You tell to %s: %s",
00413 pl->ob->name, params);
00414 return 1;
00415 }
00416
00438 static int basic_emote(object *op, char *params, int emotion) {
00439 char buf[MAX_BUF], buf2[MAX_BUF], buf3[MAX_BUF];
00440 player *pl;
00441
00442 if (!params) {
00443 switch (emotion) {
00444 case EMOTE_NOD:
00445 sprintf(buf, "%s nods solemnly.", op->name);
00446 sprintf(buf2, "You nod solemnly.");
00447 break;
00448
00449 case EMOTE_DANCE:
00450 sprintf(buf, "%s expresses himself through interpretive dance.", op->name);
00451 sprintf(buf2, "You dance with glee.");
00452 break;
00453
00454 case EMOTE_KISS:
00455 sprintf(buf, "%s makes a weird facial contortion", op->name);
00456 sprintf(buf2, "All the lonely people..");
00457 break;
00458
00459 case EMOTE_BOUNCE:
00460 sprintf(buf, "%s bounces around.", op->name);
00461 sprintf(buf2, "BOIINNNNNNGG!");
00462 break;
00463
00464 case EMOTE_SMILE:
00465 sprintf(buf, "%s smiles happily.", op->name);
00466 sprintf(buf2, "You smile happily.");
00467 break;
00468
00469 case EMOTE_CACKLE:
00470 sprintf(buf, "%s throws back his head and cackles with insane glee!", op->name);
00471 sprintf(buf2, "You cackle gleefully.");
00472 break;
00473
00474 case EMOTE_LAUGH:
00475 sprintf(buf, "%s falls down laughing.", op->name);
00476 sprintf(buf2, "You fall down laughing.");
00477 break;
00478
00479 case EMOTE_GIGGLE:
00480 sprintf(buf, "%s giggles.", op->name);
00481 sprintf(buf2, "You giggle.");
00482 break;
00483
00484 case EMOTE_SHAKE:
00485 sprintf(buf, "%s shakes his head.", op->name);
00486 sprintf(buf2, "You shake your head.");
00487 break;
00488
00489 case EMOTE_PUKE:
00490 sprintf(buf, "%s pukes.", op->name);
00491 sprintf(buf2, "Bleaaaaaghhhhhhh!");
00492 break;
00493
00494 case EMOTE_GROWL:
00495 sprintf(buf, "%s growls.", op->name);
00496 sprintf(buf2, "Grrrrrrrrr....");
00497 break;
00498
00499 case EMOTE_SCREAM:
00500 sprintf(buf, "%s screams at the top of his lungs!", op->name);
00501 sprintf(buf2, "ARRRRRRRRRRGH!!!!!");
00502 break;
00503
00504 case EMOTE_SIGH:
00505 sprintf(buf, "%s sighs loudly.", op->name);
00506 sprintf(buf2, "You sigh.");
00507 break;
00508
00509 case EMOTE_SULK:
00510 sprintf(buf, "%s sulks in the corner.", op->name);
00511 sprintf(buf2, "You sulk.");
00512 break;
00513
00514 case EMOTE_CRY:
00515 sprintf(buf, "%s bursts into tears.", op->name);
00516 sprintf(buf2, "Waaaaaaahhh..");
00517 break;
00518
00519 case EMOTE_GRIN:
00520 sprintf(buf, "%s grins evilly.", op->name);
00521 sprintf(buf2, "You grin evilly.");
00522 break;
00523
00524 case EMOTE_BOW:
00525 sprintf(buf, "%s bows deeply.", op->name);
00526 sprintf(buf2, "You bow deeply.");
00527 break;
00528
00529 case EMOTE_CLAP:
00530 sprintf(buf, "%s gives a round of applause.", op->name);
00531 sprintf(buf2, "Clap, clap, clap.");
00532 break;
00533
00534 case EMOTE_BLUSH:
00535 sprintf(buf, "%s blushes.", op->name);
00536 sprintf(buf2, "Your cheeks are burning.");
00537 break;
00538
00539 case EMOTE_BURP:
00540 sprintf(buf, "%s burps loudly.", op->name);
00541 sprintf(buf2, "You burp loudly.");
00542 break;
00543
00544 case EMOTE_CHUCKLE:
00545 sprintf(buf, "%s chuckles politely.", op->name);
00546 sprintf(buf2, "You chuckle politely");
00547 break;
00548
00549 case EMOTE_COUGH:
00550 sprintf(buf, "%s coughs loudly.", op->name);
00551 sprintf(buf2, "Yuck, try to cover your mouth next time!");
00552 break;
00553
00554 case EMOTE_FLIP:
00555 sprintf(buf, "%s flips head over heels.", op->name);
00556 sprintf(buf2, "You flip head over heels.");
00557 break;
00558
00559 case EMOTE_FROWN:
00560 sprintf(buf, "%s frowns.", op->name);
00561 sprintf(buf2, "What's bothering you?");
00562 break;
00563
00564 case EMOTE_GASP:
00565 sprintf(buf, "%s gasps in astonishment.", op->name);
00566 sprintf(buf2, "You gasp in astonishment.");
00567 break;
00568
00569 case EMOTE_GLARE:
00570 sprintf(buf, "%s glares around him.", op->name);
00571 sprintf(buf2, "You glare at nothing in particular.");
00572 break;
00573
00574 case EMOTE_GROAN:
00575 sprintf(buf, "%s groans loudly.", op->name);
00576 sprintf(buf2, "You groan loudly.");
00577 break;
00578
00579 case EMOTE_HICCUP:
00580 sprintf(buf, "%s hiccups.", op->name);
00581 sprintf(buf2, "*HIC*");
00582 break;
00583
00584 case EMOTE_LICK:
00585 sprintf(buf, "%s licks his mouth and smiles.", op->name);
00586 sprintf(buf2, "You lick your mouth and smile.");
00587 break;
00588
00589 case EMOTE_POUT:
00590 sprintf(buf, "%s pouts.", op->name);
00591 sprintf(buf2, "Aww, don't take it so hard.");
00592 break;
00593
00594 case EMOTE_SHIVER:
00595 sprintf(buf, "%s shivers uncomfortably.", op->name);
00596 sprintf(buf2, "Brrrrrrrrr.");
00597 break;
00598
00599 case EMOTE_SHRUG:
00600 sprintf(buf, "%s shrugs helplessly.", op->name);
00601 sprintf(buf2, "You shrug.");
00602 break;
00603
00604 case EMOTE_SMIRK:
00605 sprintf(buf, "%s smirks.", op->name);
00606 sprintf(buf2, "You smirk.");
00607 break;
00608
00609 case EMOTE_SNAP:
00610 sprintf(buf, "%s snaps his fingers.", op->name);
00611 sprintf(buf2, "PRONTO! You snap your fingers.");
00612 break;
00613
00614 case EMOTE_SNEEZE:
00615 sprintf(buf, "%s sneezes.", op->name);
00616 sprintf(buf2, "Gesundheit!");
00617 break;
00618
00619 case EMOTE_SNICKER:
00620 sprintf(buf, "%s snickers softly.", op->name);
00621 sprintf(buf2, "You snicker softly.");
00622 break;
00623
00624 case EMOTE_SNIFF:
00625 sprintf(buf, "%s sniffs sadly.", op->name);
00626 sprintf(buf2, "You sniff sadly. *SNIFF*");
00627 break;
00628
00629 case EMOTE_SNORE:
00630 sprintf(buf, "%s snores loudly.", op->name);
00631 sprintf(buf2, "Zzzzzzzzzzzzzzz.");
00632 break;
00633
00634 case EMOTE_SPIT:
00635 sprintf(buf, "%s spits over his left shoulder.", op->name);
00636 sprintf(buf2, "You spit over your left shoulder.");
00637 break;
00638
00639 case EMOTE_STRUT:
00640 sprintf(buf, "%s struts proudly.", op->name);
00641 sprintf(buf2, "Strut your stuff.");
00642 break;
00643
00644 case EMOTE_TWIDDLE:
00645 sprintf(buf, "%s patiently twiddles his thumbs.", op->name);
00646 sprintf(buf2, "You patiently twiddle your thumbs.");
00647 break;
00648
00649 case EMOTE_WAVE:
00650 sprintf(buf, "%s waves happily.", op->name);
00651 sprintf(buf2, "You wave.");
00652 break;
00653
00654 case EMOTE_WHISTLE:
00655 sprintf(buf, "%s whistles appreciatively.", op->name);
00656 sprintf(buf2, "You whistle appreciatively.");
00657 break;
00658
00659 case EMOTE_WINK:
00660 sprintf(buf, "%s winks suggestively.", op->name);
00661 sprintf(buf2, "Have you got something in your eye?");
00662 break;
00663
00664 case EMOTE_YAWN:
00665 sprintf(buf, "%s yawns sleepily.", op->name);
00666 sprintf(buf2, "You open up your yap and let out a big breeze of stale air.");
00667 break;
00668
00669 case EMOTE_CRINGE:
00670 sprintf(buf, "%s cringes in terror!", op->name);
00671 sprintf(buf2, "You cringe in terror.");
00672 break;
00673
00674 case EMOTE_BLEED:
00675 sprintf(buf, "%s is bleeding all over the carpet - got a spare tourniquet?", op->name);
00676 sprintf(buf2, "You bleed all over your nice new armour.");
00677 break;
00678
00679 case EMOTE_THINK:
00680 sprintf(buf, "%s closes his eyes and thinks really hard.", op->name);
00681 sprintf(buf2, "Anything in particular that you'd care to think about?");
00682 break;
00683
00684 default:
00685 sprintf(buf, "%s dances with glee.", op->name);
00686 sprintf(buf2, "You are a nut.");
00687 break;
00688 }
00689 ext_info_map_except(NDI_WHITE, op->map, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
00690 buf, NULL);
00691 draw_ext_info(NDI_UNIQUE|NDI_WHITE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
00692 buf2, NULL);
00693 return(0);
00694 } else {
00695 for (pl = first_player; pl != NULL; pl = pl->next) {
00696 if (strncasecmp(pl->ob->name, params, MAX_NAME) == 0
00697 && pl->ob->map == op->map
00698 && pl->ob != op
00699 && !(QUERY_FLAG(pl->ob, FLAG_WIZ) && pl->ob->contr->hidden)) {
00700
00701 switch (emotion) {
00702 case EMOTE_NOD:
00703 sprintf(buf, "You nod solemnly to %s.", pl->ob->name);
00704 sprintf(buf2, "%s nods solemnly to you.", op->name);
00705 sprintf(buf3, "%s nods solemnly to %s.", op->name, pl->ob->name);
00706 break;
00707
00708 case EMOTE_DANCE:
00709 sprintf(buf, "You grab %s and begin doing the Cha-Cha!", pl->ob->name);
00710 sprintf(buf2, "%s grabs you, and begins dancing!", op->name);
00711 sprintf(buf3, "Yipe! %s and %s are doing the Macarena!", op->name, pl->ob->name);
00712 break;
00713
00714 case EMOTE_KISS:
00715 sprintf(buf, "You kiss %s.", pl->ob->name);
00716 sprintf(buf2, "%s kisses you.", op->name);
00717 sprintf(buf3, "%s kisses %s.", op->name, pl->ob->name);
00718 break;
00719
00720 case EMOTE_BOUNCE:
00721 sprintf(buf, "You bounce around the room with %s.", pl->ob->name);
00722 sprintf(buf2, "%s bounces around the room with you.", op->name);
00723 sprintf(buf3, "%s bounces around the room with %s.", op->name, pl->ob->name);
00724 break;
00725
00726 case EMOTE_SMILE:
00727 sprintf(buf, "You smile at %s.", pl->ob->name);
00728 sprintf(buf2, "%s smiles at you.", op->name);
00729 sprintf(buf3, "%s beams a smile at %s.", op->name, pl->ob->name);
00730 break;
00731
00732 case EMOTE_LAUGH:
00733 sprintf(buf, "You take one look at %s and fall down laughing.", pl->ob->name);
00734 sprintf(buf2, "%s looks at you and falls down on the ground laughing.", op->name);
00735 sprintf(buf3, "%s looks at %s and falls down on the ground laughing.", op->name, pl->ob->name);
00736 break;
00737
00738 case EMOTE_SHAKE:
00739 sprintf(buf, "You shake %s's hand.", pl->ob->name);
00740 sprintf(buf2, "%s shakes your hand.", op->name);
00741 sprintf(buf3, "%s shakes %s's hand.", op->name, pl->ob->name);
00742 break;
00743
00744 case EMOTE_PUKE:
00745 sprintf(buf, "You puke on %s.", pl->ob->name);
00746 sprintf(buf2, "%s pukes on your clothes!", op->name);
00747 sprintf(buf3, "%s pukes on %s.", op->name, pl->ob->name);
00748 break;
00749
00750 case EMOTE_HUG:
00751 sprintf(buf, "You hug %s.", pl->ob->name);
00752 sprintf(buf2, "%s hugs you.", op->name);
00753 sprintf(buf3, "%s hugs %s.", op->name, pl->ob->name);
00754 break;
00755
00756 case EMOTE_CRY:
00757 sprintf(buf, "You cry on %s's shoulder.", pl->ob->name);
00758 sprintf(buf2, "%s cries on your shoulder.", op->name);
00759 sprintf(buf3, "%s cries on %s's shoulder.", op->name, pl->ob->name);
00760 break;
00761
00762 case EMOTE_POKE:
00763 sprintf(buf, "You poke %s in the ribs.", pl->ob->name);
00764 sprintf(buf2, "%s pokes you in the ribs.", op->name);
00765 sprintf(buf3, "%s pokes %s in the ribs.", op->name, pl->ob->name);
00766 break;
00767
00768 case EMOTE_ACCUSE:
00769 sprintf(buf, "You look accusingly at %s.", pl->ob->name);
00770 sprintf(buf2, "%s looks accusingly at you.", op->name);
00771 sprintf(buf3, "%s looks accusingly at %s.", op->name, pl->ob->name);
00772 break;
00773
00774 case EMOTE_GRIN:
00775 sprintf(buf, "You grin at %s.", pl->ob->name);
00776 sprintf(buf2, "%s grins evilly at you.", op->name);
00777 sprintf(buf3, "%s grins evilly at %s.", op->name, pl->ob->name);
00778 break;
00779
00780 case EMOTE_BOW:
00781 sprintf(buf, "You bow before %s.", pl->ob->name);
00782 sprintf(buf2, "%s bows before you.", op->name);
00783 sprintf(buf3, "%s bows before %s.", op->name, pl->ob->name);
00784 break;
00785
00786 case EMOTE_FROWN:
00787 sprintf(buf, "You frown darkly at %s.", pl->ob->name);
00788 sprintf(buf2, "%s frowns darkly at you.", op->name);
00789 sprintf(buf3, "%s frowns darkly at %s.", op->name, pl->ob->name);
00790 break;
00791
00792 case EMOTE_GLARE:
00793 sprintf(buf, "You glare icily at %s.", pl->ob->name);
00794 sprintf(buf2, "%s glares icily at you, you feel cold to your bones.", op->name);
00795 sprintf(buf3, "%s glares at %s.", op->name, pl->ob->name);
00796 break;
00797
00798 case EMOTE_LICK:
00799 sprintf(buf, "You lick %s.", pl->ob->name);
00800 sprintf(buf2, "%s licks you.", op->name);
00801 sprintf(buf3, "%s licks %s.", op->name, pl->ob->name);
00802 break;
00803
00804 case EMOTE_SHRUG:
00805 sprintf(buf, "You shrug at %s.", pl->ob->name);
00806 sprintf(buf2, "%s shrugs at you.", op->name);
00807 sprintf(buf3, "%s shrugs at %s.", op->name, pl->ob->name);
00808 break;
00809
00810 case EMOTE_SLAP:
00811 sprintf(buf, "You slap %s.", pl->ob->name);
00812 sprintf(buf2, "You are slapped by %s.", op->name);
00813 sprintf(buf3, "%s slaps %s.", op->name, pl->ob->name);
00814 break;
00815
00816 case EMOTE_SNEEZE:
00817 sprintf(buf, "You sneeze at %s and a film of snot shoots onto him.", pl->ob->name);
00818 sprintf(buf2, "%s sneezes on you, you feel the snot cover you. EEEEEEW.", op->name);
00819 sprintf(buf3, "%s sneezes on %s and a film of snot covers him.", op->name, pl->ob->name);
00820 break;
00821
00822 case EMOTE_SNIFF:
00823 sprintf(buf, "You sniff %s.", pl->ob->name);
00824 sprintf(buf2, "%s sniffs you.", op->name);
00825 sprintf(buf3, "%s sniffs %s", op->name, pl->ob->name);
00826 break;
00827
00828 case EMOTE_SPIT:
00829 sprintf(buf, "You spit on %s.", pl->ob->name);
00830 sprintf(buf2, "%s spits in your face!", op->name);
00831 sprintf(buf3, "%s spits in %s's face.", op->name, pl->ob->name);
00832 break;
00833
00834 case EMOTE_THANK:
00835 sprintf(buf, "You thank %s heartily.", pl->ob->name);
00836 sprintf(buf2, "%s thanks you heartily.", op->name);
00837 sprintf(buf3, "%s thanks %s heartily.", op->name, pl->ob->name);
00838 break;
00839
00840 case EMOTE_WAVE:
00841 sprintf(buf, "You wave goodbye to %s.", pl->ob->name);
00842 sprintf(buf2, "%s waves goodbye to you. Have a good journey.", op->name);
00843 sprintf(buf3, "%s waves goodbye to %s.", op->name, pl->ob->name);
00844 break;
00845
00846 case EMOTE_WHISTLE:
00847 sprintf(buf, "You whistle at %s.", pl->ob->name);
00848 sprintf(buf2, "%s whistles at you.", op->name);
00849 sprintf(buf2, "%s whistles at %s.", op->name, pl->ob->name);
00850 break;
00851
00852 case EMOTE_WINK:
00853 sprintf(buf, "You wink suggestively at %s.", pl->ob->name);
00854 sprintf(buf2, "%s winks suggestively at you.", op->name);
00855 sprintf(buf2, "%s winks at %s.", op->name, pl->ob->name);
00856 break;
00857
00858 case EMOTE_BEG:
00859 sprintf(buf, "You beg %s for mercy.", pl->ob->name);
00860 sprintf(buf2, "%s begs you for mercy! Show no quarter!", op->name);
00861 sprintf(buf2, "%s begs %s for mercy!", op->name, pl->ob->name);
00862 break;
00863
00864 case EMOTE_BLEED:
00865 sprintf(buf, "You slash your wrist and bleed all over %s", pl->ob->name);
00866 sprintf(buf2, "%s slashes his wrist and bleeds all over you.", op->name);
00867 sprintf(buf2, "%s slashes his wrist and bleeds all over %s.", op->name, pl->ob->name);
00868 break;
00869
00870 case EMOTE_CRINGE:
00871 sprintf(buf, "You cringe away from %s.", pl->ob->name);
00872 sprintf(buf2, "%s cringes away from you.", op->name);
00873 sprintf(buf2, "%s cringes away from %s in mortal terror.", op->name, pl->ob->name);
00874 break;
00875
00876 default:
00877 sprintf(buf, "You are still nuts.");
00878 sprintf(buf2, "You get the distinct feeling that %s is nuts.", op->name);
00879 sprintf(buf3, "%s is eyeing %s quizzically.", pl->ob->name, op->name);
00880 break;
00881 }
00882 draw_ext_info(NDI_UNIQUE|NDI_WHITE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
00883 buf, NULL);
00884 draw_ext_info(NDI_UNIQUE|NDI_WHITE, 0, pl->ob, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
00885 buf2, NULL);
00886 ext_info_map_except2(NDI_WHITE, op->map, op, pl->ob, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
00887 buf3, NULL);
00888 return(0);
00889 }
00890 if (strncasecmp(pl->ob->name, params, MAX_NAME) == 0
00891 && pl->ob->map == op->map
00892 && pl->ob == op) {
00893 switch (emotion) {
00894 case EMOTE_DANCE:
00895 sprintf(buf, "You skip and dance around by yourself.");
00896 sprintf(buf2, "%s embraces himself and begins to dance!", op->name);
00897 break;
00898
00899 case EMOTE_LAUGH:
00900 sprintf(buf, "Laugh at yourself all you want, the others won't understand.");
00901 sprintf(buf2, "%s is laughing at something.", op->name);
00902 break;
00903
00904 case EMOTE_SHAKE:
00905 sprintf(buf, "You are shaken by yourself.");
00906 sprintf(buf2, "%s shakes and quivers like a bowlful of jelly.", op->name);
00907 break;
00908
00909 case EMOTE_PUKE:
00910 sprintf(buf, "You puke on yourself.");
00911 sprintf(buf2, "%s pukes on his clothes.", op->name);
00912 break;
00913
00914 case EMOTE_HUG:
00915 sprintf(buf, "You hug yourself.");
00916 sprintf(buf2, "%s hugs himself.", op->name);
00917 break;
00918
00919 case EMOTE_CRY:
00920 sprintf(buf, "You cry to yourself.");
00921 sprintf(buf2, "%s sobs quietly to himself.", op->name);
00922 break;
00923
00924 case EMOTE_POKE:
00925 sprintf(buf, "You poke yourself in the ribs, feeling very silly.");
00926 sprintf(buf2, "%s pokes himself in the ribs, looking very sheepish.", op->name);
00927 break;
00928
00929 case EMOTE_ACCUSE:
00930 sprintf(buf, "You accuse yourself.");
00931 sprintf(buf2, "%s seems to have a bad conscience.", op->name);
00932 break;
00933
00934 case EMOTE_BOW:
00935 sprintf(buf, "You kiss your toes.");
00936 sprintf(buf2, "%s folds up like a jackknife and kisses his own toes.", op->name);
00937 break;
00938
00939 case EMOTE_FROWN:
00940 sprintf(buf, "You frown at yourself.");
00941 sprintf(buf2, "%s frowns at himself.", op->name);
00942 break;
00943
00944 case EMOTE_GLARE:
00945 sprintf(buf, "You glare icily at your feet, they are suddenly very cold.");
00946 sprintf(buf2, "%s glares at his feet, what is bothering him?", op->name);
00947 break;
00948
00949 case EMOTE_LICK:
00950 sprintf(buf, "You lick yourself.");
00951 sprintf(buf2, "%s licks himself - YUCK.", op->name);
00952 break;
00953
00954 case EMOTE_SLAP:
00955 sprintf(buf, "You slap yourself, silly you.");
00956 sprintf(buf2, "%s slaps himself, really strange...", op->name);
00957 break;
00958
00959 case EMOTE_SNEEZE:
00960 sprintf(buf, "You sneeze on yourself, what a mess!");
00961 sprintf(buf2, "%s sneezes, and covers himself in a slimy substance.", op->name);
00962 break;
00963
00964 case EMOTE_SNIFF:
00965 sprintf(buf, "You sniff yourself.");
00966 sprintf(buf2, "%s sniffs himself.", op->name);
00967 break;
00968
00969 case EMOTE_SPIT:
00970 sprintf(buf, "You drool all over yourself.");
00971 sprintf(buf2, "%s drools all over himself.", op->name);
00972 break;
00973
00974 case EMOTE_THANK:
00975 sprintf(buf, "You thank yourself since nobody else wants to!");
00976 sprintf(buf2, "%s thanks himself since you won't.", op->name);
00977 break;
00978
00979 case EMOTE_WAVE:
00980 sprintf(buf, "Are you going on adventures as well??");
00981 sprintf(buf2, "%s waves goodbye to himself.", op->name);
00982 break;
00983
00984 case EMOTE_WHISTLE:
00985 sprintf(buf, "You whistle while you work.");
00986 sprintf(buf2, "%s whistles to himself in boredom.", op->name);
00987 break;
00988
00989 case EMOTE_WINK:
00990 sprintf(buf, "You wink at yourself?? What are you up to?");
00991 sprintf(buf2, "%s winks at himself - something strange is going on...", op->name);
00992 break;
00993
00994 case EMOTE_BLEED:
00995 sprintf(buf, "Very impressive! You wipe your blood all over yourself.");
00996 sprintf(buf2, "%s performs some satanic ritual while wiping his blood on himself.", op->name);
00997 break;
00998
00999 default:
01000 sprintf(buf, "My god! is that LEGAL?");
01001 sprintf(buf2, "You look away from %s.", op->name);
01002 break;
01003 }
01004 draw_ext_info(NDI_UNIQUE|NDI_WHITE, 0, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
01005 buf, NULL);
01006 ext_info_map_except(NDI_WHITE, op->map, op, MSG_TYPE_COMMUNICATION, MSG_TYPE_COMMUNICATION_EMOTE,
01007 buf2, NULL);
01008 return(0);
01009 }
01010 }
01011 draw_ext_info_format(NDI_UNIQUE, 0, op, MSG_TYPE_COMMAND, MSG_TYPE_COMMAND_ERROR,
01012 "%s is not around.",
01013 "%s is not around.",
01014 params);
01015 return(1);
01016 }
01017
01018 return(0);
01019 }
01020
01021
01022
01023
01024
01034 int command_nod(object *op, char *params) {
01035 return(basic_emote(op, params, EMOTE_NOD));
01036 }
01037
01047 int command_dance(object *op, char *params) {
01048 return(basic_emote(op, params, EMOTE_DANCE));
01049 }
01050
01060 int command_kiss(object *op, char *params) {
01061 return(basic_emote(op, params, EMOTE_KISS));
01062 }
01063
01073 int command_bounce(object *op, char *params) {
01074 return(basic_emote(op, params, EMOTE_BOUNCE));
01075 }
01076
01086 int command_smile(object *op, char *params) {
01087 return(basic_emote(op, params, EMOTE_SMILE));
01088 }
01089
01099 int command_cackle(object *op, char *params) {
01100 return(basic_emote(op, params, EMOTE_CACKLE));
01101 }
01102
01112 int command_laugh(object *op, char *params) {
01113 return(basic_emote(op, params, EMOTE_LAUGH));
01114 }
01115
01125 int command_giggle(object *op, char *params) {
01126 return(basic_emote(op, params, EMOTE_GIGGLE));
01127 }
01128
01138 int command_shake(object *op, char *params) {
01139 return(basic_emote(op, params, EMOTE_SHAKE));
01140 }
01141
01151 int command_puke(object *op, char *params) {
01152 return(basic_emote(op, params, EMOTE_PUKE));
01153 }
01154
01164 int command_growl(object *op, char *params) {
01165 return(basic_emote(op, params, EMOTE_GROWL));
01166 }
01167
01177 int command_scream(object *op, char *params) {
01178 return(basic_emote(op, params, EMOTE_SCREAM));
01179 }
01180
01190 int command_sigh(object *op, char *params) {
01191 return(basic_emote(op, params, EMOTE_SIGH));
01192 }
01193
01203 int command_sulk(object *op, char *params) {
01204 return(basic_emote(op, params, EMOTE_SULK));
01205 }
01206
01216 int command_hug(object *op, char *params) {
01217 return(basic_emote(op, params, EMOTE_HUG));
01218 }
01219
01229 int command_cry(object *op, char *params) {
01230 return(basic_emote(op, params, EMOTE_CRY));
01231 }
01232
01242 int command_poke(object *op, char *params) {
01243 return(basic_emote(op, params, EMOTE_POKE));
01244 }
01245
01255 int command_accuse(object *op, char *params) {
01256 return(basic_emote(op, params, EMOTE_ACCUSE));
01257 }
01258
01268 int command_grin(object *op, char *params) {
01269 return(basic_emote(op, params, EMOTE_GRIN));
01270 }
01271
01281 int command_bow(object *op, char *params) {
01282 return(basic_emote(op, params, EMOTE_BOW));
01283 }
01284
01294 int command_clap(object *op, char *params) {
01295 return(basic_emote(op, params, EMOTE_CLAP));
01296 }
01297
01307 int command_blush(object *op, char *params) {
01308 return(basic_emote(op, params, EMOTE_BLUSH));
01309 }
01310
01320 int command_burp(object *op, char *params) {
01321 return(basic_emote(op, params, EMOTE_BURP));
01322 }
01323
01333 int command_chuckle(object *op, char *params) {
01334 return(basic_emote(op, params, EMOTE_CHUCKLE));
01335 }
01336
01346 int command_cough(object *op, char *params) {
01347 return(basic_emote(op, params, EMOTE_COUGH));
01348 }
01349
01359 int command_flip(object *op, char *params) {
01360 return(basic_emote(op, params, EMOTE_FLIP));
01361 }
01362
01372 int command_frown(object *op, char *params) {
01373 return(basic_emote(op, params, EMOTE_FROWN));
01374 }
01375
01385 int command_gasp(object *op, char *params) {
01386 return(basic_emote(op, params, EMOTE_GASP));
01387 }
01388
01398 int command_glare(object *op, char *params) {
01399 return(basic_emote(op, params, EMOTE_GLARE));
01400 }
01401
01411 int command_groan(object *op, char *params) {
01412 return(basic_emote(op, params, EMOTE_GROAN));
01413 }
01414
01424 int command_hiccup(object *op, char *params) {
01425 return(basic_emote(op, params, EMOTE_HICCUP));
01426 }
01427
01437 int command_lick(object *op, char *params) {
01438 return(basic_emote(op, params, EMOTE_LICK));
01439 }
01440
01450 int command_pout(object *op, char *params) {
01451 return(basic_emote(op, params, EMOTE_POUT));
01452 }
01453
01463 int command_shiver(object *op, char *params) {
01464 return(basic_emote(op, params, EMOTE_SHIVER));
01465 }
01466
01476 int command_shrug(object *op, char *params) {
01477 return(basic_emote(op, params, EMOTE_SHRUG));
01478 }
01479
01489 int command_slap(object *op, char *params) {
01490 return(basic_emote(op, params, EMOTE_SLAP));
01491 }
01492
01502 int command_smirk(object *op, char *params) {
01503 return(basic_emote(op, params, EMOTE_SMIRK));
01504 }
01505
01515 int command_snap(object *op, char *params) {
01516 return(basic_emote(op, params, EMOTE_SNAP));
01517 }
01518
01528 int command_sneeze(object *op, char *params) {
01529 return(basic_emote(op, params, EMOTE_SNEEZE));
01530 }
01531
01541 int command_snicker(object *op, char *params) {
01542 return(basic_emote(op, params, EMOTE_SNICKER));
01543 }
01544
01554 int command_sniff(object *op, char *params) {
01555 return(basic_emote(op, params, EMOTE_SNIFF));
01556 }
01557
01567 int command_snore(object *op, char *params) {
01568 return(basic_emote(op, params, EMOTE_SNORE));
01569 }
01570
01580 int command_spit(object *op, char *params) {
01581 return(basic_emote(op, params, EMOTE_SPIT));
01582 }
01583
01593 int command_strut(object *op, char *params) {
01594 return(basic_emote(op, params, EMOTE_STRUT));
01595 }
01596
01606 int command_thank(object *op, char *params) {
01607 return(basic_emote(op, params, EMOTE_THANK));
01608 }
01609
01619 int command_twiddle(object *op, char *params) {
01620 return(basic_emote(op, params, EMOTE_TWIDDLE));
01621 }
01622
01632 int command_wave(object *op, char *params) {
01633 return(basic_emote(op, params, EMOTE_WAVE));
01634 }
01635
01645 int command_whistle(object *op, char *params) {
01646 return(basic_emote(op, params, EMOTE_WHISTLE));
01647 }
01648
01658 int command_wink(object *op, char *params) {
01659 return(basic_emote(op, params, EMOTE_WINK));
01660 }
01661
01671 int command_yawn(object *op, char *params) {
01672 return(basic_emote(op, params, EMOTE_YAWN));
01673 }
01674
01684 int command_beg(object *op, char *params) {
01685 return(basic_emote(op, params, EMOTE_BEG));
01686 }
01687
01697 int command_bleed(object *op, char *params) {
01698 return(basic_emote(op, params, EMOTE_BLEED));
01699 }
01700
01710 int command_cringe(object *op, char *params) {
01711 return(basic_emote(op, params, EMOTE_CRINGE));
01712 }
01713
01723 int command_think(object *op, char *params) {
01724 return(basic_emote(op, params, EMOTE_THINK));
01725 }