1 /* omega copyright (c) 1987,1988,1989 by Laurence Raphael Brothers */
2 /* mtalk.c */
3 /* monster talk functions */
4
5 #include "glob.h"
6
7
8 /* The druid's altar is in the northern forest */
m_talk_druid(m)9 void m_talk_druid(m)
10 struct monster *m;
11 {
12 int i;
13 pml curr;
14
15 if (! m_statusp(m,HOSTILE)) {
16 print1("The Archdruid raises a hand in greeting.");
17 if (! gamestatusp(SPOKE_TO_DRUID)) {
18 setgamestatus(SPOKE_TO_DRUID);
19 morewait();
20 print1("The Archdruid congratulates you on reaching his sanctum.");
21 print2("You feel competent.");
22 morewait();
23 gain_experience(300);
24 if (Player.patron == DRUID) {
25 print1("The Archdruid conveys to you the wisdom of nature....");
26 print2("You feel like a sage.");
27 morewait();
28 for(i=0;i<NUMRANKS;i++) {
29 if (Player.guildxp[i] > 0)
30 Player.guildxp[i] += 300;
31 }
32 }
33 }
34 mprint("Do you request a ritual of neutralization? [yn] ");
35 if (ynq() == 'y') {
36 if (Phase/2 == 6 || Phase/2 == 0) { /* full or new moon */
37 mprint("\"Unfortunately, I cannot perform a ritual of balance on");
38 if (Phase/2 == 6)
39 mprint("this lawful day.\"");
40 else
41 mprint("this chaotic day.\"");
42 }
43 else if (Phase/2 == 3 || Phase/2 == 9) { /* half moon */
44 mprint("You take part in today's holy celebration of balance...");
45 Player.alignment = 0;
46 Player.mana = calcmana();
47 if (Player.patron == DRUID)
48 gain_experience(200); /* if a druid wants to spend 2 days */
49 Time+=60; /* celebrating for 1600 xp, why not? */
50 hourly_check();
51 Time+=60;
52 hourly_check();
53 Time+=60;
54 hourly_check();
55 Time+=60;
56 hourly_check();
57 Time+=60;
58 hourly_check();
59 Time+=60;
60 hourly_check();
61 }
62 else {
63 mprint("The ArchDruid conducts a sacred rite of balance...");
64 if (Player.patron == DRUID) {
65 Player.alignment = 0;
66 Player.mana = calcmana();
67 }
68 else
69 Player.alignment -= Player.alignment*max(0, 10 - Player.level)/10;
70 /* the higher level the character is, the more set in his/her ways */
71 Time+=60;
72 hourly_check();
73 }
74 dataprint();
75 }
76 }
77 else {
78 mprint("The ArchDruid looks at you and cries: 'Unclean! Unclean!'");
79 disrupt(Player.x,Player.y,100);
80 mprint("This seems to have satiated his desire for vengeance.");
81 mprint("'Have you learned your lesson?' The ArchDruid asks. [yn] ");
82 if (ynq()) {
83 mprint("'I certainly hope so!' says the ArchDruid.");
84 for (curr = Level->mlist; curr; curr = curr->next)
85 m_status_reset(curr->m, HOSTILE);
86 m_vanish(m);
87 }
88 else {
89 mprint("'Idiot.' mutters the ArchDruid.");
90 p_damage(500,UNSTOPPABLE,"the ArchDruid's Vengeance");
91 }
92 }
93 }
94
95
m_talk_silent(m)96 void m_talk_silent(m)
97 struct monster *m;
98 {
99
100 int reply = random_range(4);
101
102 if (m->uniqueness == COMMON) {
103 strcpy(Str2,"The ");
104 strcat(Str2,m->monstring);
105 }
106 else strcpy(Str2,m->monstring);
107 switch (reply) {
108 case 0:strcat(Str2," does not reply. "); break;
109 case 1:strcat(Str2," shrugs silently. "); break;
110 case 2:strcat(Str2," hold a finger to his mouth. "); break;
111 case 3:strcat(Str2," glares at you but says nothing. "); break;
112 }
113 mprint(Str2);
114 }
115
m_talk_stupid(m)116 void m_talk_stupid(m)
117 struct monster *m;
118 {
119
120 int reply = random_range(4);
121 if (m->uniqueness == COMMON) {
122 strcpy(Str2,"The ");
123 strcat(Str2,m->monstring);
124 }
125 else strcpy(Str2,m->monstring);
126 switch (reply) {
127 case 0:strcat(Str2," looks at you with mute incomprehension."); break;
128 case 1:strcat(Str2," growls menacingly and ignores you."); break;
129 case 2:strcat(Str2," does not seem to have heard you."); break;
130 case 3:strcat(Str2," tries to pretend it didn't hear you."); break;
131 }
132 mprint(Str2);
133 }
134
m_talk_greedy(m)135 void m_talk_greedy(m)
136 struct monster *m;
137 {
138
139 int reply = random_range(4);
140 if (m->uniqueness == COMMON) {
141 strcpy(Str2,"The ");
142 strcat(Str2,m->monstring);
143 }
144 else strcpy(Str2,m->monstring);
145 switch (reply) {
146 case 0:strcat(Str2," says: Give me a treasure.... ");break;
147 case 1:strcat(Str2," says: Stand and deliver, knave! "); break;
148 case 2:strcat(Str2," says: Your money or your life! "); break;
149 case 3:strcat(Str2," says: Yield or Die! "); break;
150 }
151 mprint(Str2);
152 }
153
m_talk_hungry(m)154 void m_talk_hungry(m)
155 struct monster *m;
156 {
157
158 int reply = random_range(4);
159 if (m->uniqueness == COMMON) {
160 strcpy(Str2,"The ");
161 strcat(Str2,m->monstring);
162 }
163 else strcpy(Str2,m->monstring);
164 switch (reply) {
165 case 0:strcat(Str2," says: I hunger, foolish adventurer! "); break;
166 case 1:strcat(Str2," drools menacingly at you. "); break;
167 case 2:strcat(Str2," says: You're invited to be lunch! "); break;
168 case 3:strcat(Str2," says: Feeed Meee! "); break;
169 }
170 mprint(Str2);
171 }
172
173
m_talk_guard(m)174 void m_talk_guard(m)
175 struct monster *m;
176 {
177 if (m_statusp(m,HOSTILE)) {
178 print1("'Surrender in the name of the Law!'");
179 print2("Do it? [yn] ");
180 if (ynq2()=='y') {
181 Player.alignment++;
182 if (Current_Environment == E_CITY) {
183 print1("Go directly to jail. Do not pass go, do not collect 200Au.");
184 print2("You are taken to the city gaol.");
185 morewait();
186 send_to_jail();
187 drawvision(Player.x,Player.y);
188 }
189 else {
190 clearmsg();
191 print1("Mollified, the guard disarms you and sends you away.");
192 dispose_lost_objects(1,Player.possessions[O_WEAPON_HAND]);
193 pacify_guards();
194 }
195 }
196 else {
197 clearmsg();
198 print1("All right, you criminal scum, you asked for it!");
199 }
200 }
201 else if (Player.rank[ORDER]>0)
202 print1("'Greetings comrade! May you always tread the paths of Law.'");
203 else print1("Move it right along, stranger!");
204 }
205
206
m_talk_mp(m)207 void m_talk_mp(m)
208 struct monster *m;
209 {
210 mprint("The mendicant priest asks you to spare some treasure for the needy");
211 }
212
213
m_talk_titter(m)214 void m_talk_titter(m)
215 struct monster *m;
216 {
217
218 if (m->uniqueness == COMMON) {
219 strcpy(Str2,"The ");
220 strcat(Str2,m->monstring);
221 }
222 else strcpy(Str2,m->monstring);
223 strcat(Str2," titters obscenely at you.");
224 mprint(Str2);
225 }
226
227
m_talk_ninja(m)228 void m_talk_ninja(m)
229 struct monster *m;
230 {
231 mprint("The black-garbed figure says apologetically:");
232 mprint("'Situree simasita, wakarimasen.'");
233 }
234
235
236
237
m_talk_thief(m)238 void m_talk_thief(m)
239 struct monster *m;
240 {
241 if (Player.rank[THIEVES]) {
242 if (m->level == 2)
243 m->monstring = "sneak thief";
244 else m->monstring = "master thief";
245 print1("The cloaked figure makes a gesture which you recognize...");
246 print2("...the thieves' guild recognition signal!");
247 print3("'Sorry, mate, thought you were a mark....'");
248 morewait();
249 m_vanish(m);
250 }
251 else m_talk_man(m);
252
253 }
254
255
256
m_talk_assassin(m)257 void m_talk_assassin(m)
258 struct monster *m;
259 {
260 m->monstring = "master assassin";
261 print1("The ominous figure does not reply, but hands you an embossed card:");
262 print2("'Guild of Assassins Ops are forbidden to converse with targets.'");
263 }
264
265
m_talk_im(m)266 void m_talk_im(m)
267 struct monster *m;
268 {
269 if (strcmp(m->monstring,"itinerant merchant") != 0) {
270 m->monstring = "itinerant merchant";
271 }
272 if (m->possessions == NULL)
273 mprint("The merchant says: Alas! I have nothing to sell!");
274 else {
275 m->possessions->thing->known = 2;
276 clearmsg();
277 mprint("I have a fine");
278 mprint(itemid(m->possessions->thing));
279 mprint("for only");
280 mlongprint(max(10,4*true_item_value(m->possessions->thing)));
281 mprint("Au.");
282 mprint("Want it? [yn] ");
283 if (ynq()=='y') {
284 if (Player.cash < (max(10,4*true_item_value(m->possessions->thing)))) {
285 if (Player.alignment > 10) {
286 mprint("Well, I'll let you have it for what you've got.");
287 Player.cash = 0;
288 gain_item(m->possessions->thing);
289 m->possessions = NULL;
290 }
291 else mprint("Beat it, you deadbeat!");
292 }
293 else {
294 mprint("Here you are. Have a good day.");
295 Player.cash -= max(10,(4*item_value(m->possessions->thing)));
296 gain_item(m->possessions->thing);
297 m->possessions = NULL;
298 }
299 }
300 else mprint("Well then, I must be off. Good day.");
301 m_vanish(m);
302 }
303 }
304
305
m_talk_man(m)306 void m_talk_man(m)
307 struct monster *m;
308 {
309
310 if (m->uniqueness == COMMON) {
311 strcpy(Str2,"The ");
312 strcat(Str2,m->monstring);
313 }
314 else strcpy(Str2,m->monstring);
315 switch (random_range(5)) {
316 case 0:strcat(Str2," asks you for the way home."); break;
317 case 1:strcat(Str2," wishes you a pleasant day."); break;
318 case 2:strcat(Str2," sneers at you contemptuously."); break;
319 case 3:strcat(Str2," smiles and nods."); break;
320 case 4:strcat(Str2," tells you a joke."); break;
321 }
322 mprint(Str2);
323 }
324
325
m_talk_evil(m)326 void m_talk_evil(m)
327 struct monster *m;
328 {
329
330 if (m->uniqueness == COMMON) {
331 strcpy(Str2,"The ");
332 strcat(Str2,m->monstring);
333 }
334 else strcpy(Str2,m->monstring);
335 switch (random_range(14)) {
336 case 0:strcat(Str2," says: 'THERE CAN BE ONLY ONE!'"); break;
337 case 1:strcat(Str2," says: 'Prepare to die, Buckwheat!'"); break;
338 case 2:strcat(Str2," says: 'Time to die!'"); break;
339 case 3:strcat(Str2," says: 'There will be no mercy.'"); break;
340 case 4:strcat(Str2," insults your mother-in-law."); break;
341 case 5:strcat(Str2," says: 'Kurav tu ando mul!'");
342 case 6:strcat(Str2," says: '!va al infierno!'"); break;
343 case 7:strcat(Str2," says: 'dame desu, nee.'"); break;
344 case 8:strcat(Str2," spits on your rug and calls your cat a bastard.");
345 break;
346 case 9:strcat(Str2," snickers malevolently and draws a weapon."); break;
347 case 10:strcat(Str2," sends 'rm -r *' to your shell!"); break;
348 case 11:strcat(Str2," tweaks your nose and cackles evilly."); break;
349 case 12:strcat(Str2," thumbs you in the eyes."); break;
350 case 13:strcat(Str2," kicks you in the groin."); break;
351 }
352 mprint(Str2);
353 }
354
355
m_talk_robot(m)356 void m_talk_robot(m)
357 struct monster *m;
358 {
359 if (m->uniqueness == COMMON) {
360 strcpy(Str2,"The ");
361 strcat(Str2,m->monstring);
362 }
363 else strcpy(Str2,m->monstring);
364 switch (random_range(4)) {
365 case 0:strcat(Str2," says: 'exterminate...Exterminate...EXTERMINATE!!!'");
366 break;
367 case 1:strcat(Str2," says: 'Kill ... Crush ... Destroy'");
368 break;
369 case 2:strcat(Str2," says: 'Danger -- Danger'");
370 break;
371 case 3:strcat(Str2," says: 'Yo Mama -- core dumped.'");
372 break;
373 }
374 mprint(Str2);
375 }
376
m_talk_slithy(m)377 void m_talk_slithy(m)
378 struct monster *m;
379 {
380 mprint("It can't talk -- it's too slithy!");
381 }
382
383
m_talk_mimsy(m)384 void m_talk_mimsy(m)
385 struct monster *m;
386 {
387 mprint("It can't talk -- it's too mimsy!");
388 }
389
390
391
m_talk_burble(m)392 void m_talk_burble(m)
393 struct monster *m;
394 {
395
396 if (m->uniqueness == COMMON) {
397 strcpy(Str2,"The ");
398 strcat(Str2,m->monstring);
399 }
400 else strcpy(Str2,m->monstring);
401 strcat(Str2," burbles hatefully at you.");
402 mprint(Str2);
403 }
404
405
406
407
m_talk_beg(m)408 void m_talk_beg(m)
409 struct monster *m;
410 {
411 if (m->uniqueness == COMMON) {
412 strcpy(Str2,"The ");
413 strcat(Str2,m->monstring);
414 }
415 else strcpy(Str2,m->monstring);
416 strcat(Str2," asks you for alms.");
417 mprint(Str2);
418 }
419
420
m_talk_hint(m)421 void m_talk_hint(m)
422 struct monster *m;
423 {
424 if (m->uniqueness == COMMON) {
425 strcpy(Str2,"The ");
426 strcat(Str2,m->monstring);
427 }
428 else strcpy(Str2,m->monstring);
429 if (m_statusp(m,HOSTILE)) {
430 strcat(Str2," only sneers at you. ");
431 mprint(Str2);
432 }
433 else {
434 strcat(Str2," whispers in your ear: ");
435 mprint(Str2);
436 hint();
437 m->talkf = M_TALK_SILENT;
438 }
439 }
440
m_talk_gf(m)441 void m_talk_gf(m)
442 struct monster *m;
443 {
444 mprint("The good fairy glints: Would you like a wish?");
445 if (ynq()=='y') {
446 mprint("The good fairy glows: Are you sure?");
447 if (ynq()=='y') {
448 mprint("The good fairy radiates: Really really sure?");
449 if (ynq()=='y') {
450 mprint("The good fairy beams: I mean, like, sure as sure can be?");
451 if (ynq()=='y') {
452 mprint("The good fairy dazzles: You don't want a wish, right?");
453 if (ynq()=='y') mprint("The good fairy laughs: I thought not.");
454 else wish(0);
455 }
456 }
457 }
458 }
459 mprint("In a flash of sweet-smelling light, the fairy vanishes....");
460 Player.hp = max(Player.hp,Player.maxhp);
461 Player.mana = max(Player.mana,calcmana());
462 mprint("You feel mellow.");
463 m_vanish(m);
464 }
465
m_talk_ef(m)466 void m_talk_ef(m)
467 struct monster *m;
468 {
469 mprint("The evil fairy roils: Eat my pixie dust!");
470 mprint("She waves her black-glowing wand, which screams thinly....");
471 m->movef=M_MOVE_SMART;
472 m->meleef=M_MELEE_POISON;
473 m->specialf=M_SP_THIEF;
474 acquire(-1);
475 bless(-1);
476 sleep_player(m->level/2);
477 summon(-1,-1);
478 summon(-1,-1);
479 summon(-1,-1);
480 summon(-1,-1);
481 }
482
483
m_talk_seductor(m)484 void m_talk_seductor(m)
485 struct monster *m;
486 {
487 if (m->uniqueness == COMMON) {
488 strcpy(Str2,"The ");
489 strcat(Str2,m->monstring);
490 }
491 else strcpy(Str2,m->monstring);
492 if (Player.preference == 'n')
493 {
494 strcat(Str2, " notices your disinterest and leaves with a pout.");
495 mprint(Str2);
496 }
497 else
498 {
499 strcat(Str2," beckons seductively...");
500 mprint(Str2);
501 mprint("Flee? [yn] ");
502 if (ynq()=='y') {
503 mprint("You feel stupid.");
504 }
505 else {
506 strcpy(Str2,"The ");
507 strcat(Str2,m->monstring);
508 strcat(Str2," shows you a good time....");
509 mprint(Str2);
510 gain_experience(500);
511 Player.con++;
512 }
513 }
514 m_vanish(m);
515 }
516
517
m_talk_demonlover(m)518 void m_talk_demonlover(m)
519 struct monster *m;
520 {
521 if (m->uniqueness == COMMON) {
522 strcpy(Str2,"The ");
523 strcat(Str2,m->monstring);
524 }
525 else strcpy(Str2,m->monstring);
526 if (Player.preference == 'n')
527 {
528 strcat(Str2, " notices your disinterest and changes with a snarl...");
529 mprint(Str2);
530 morewait();
531 }
532 else
533 {
534 strcat(Str2," beckons seductively...");
535 mprint(Str2);
536 mprint("Flee? [yn] ");
537 if (ynq()=='y')
538 mprint("You feel fortunate....");
539 else {
540 if (m->uniqueness == COMMON) {
541 strcpy(Str2,"The ");
542 strcat(Str2,m->monstring);
543 }
544 else strcpy(Str2,m->monstring);
545 strcat(Str2," shows you a good time....");
546 mprint(Str2);
547 morewait();
548 mprint("You feel your life energies draining...");
549 level_drain(random_range(3)+1,"a demon's kiss");
550 morewait();
551 }
552 }
553 m->talkf = M_TALK_EVIL;
554 m->meleef = M_MELEE_SPIRIT;
555 m->specialf = M_SP_DEMON;
556
557 if ((m->monchar&0xff) == 's') {
558 m->monchar = 'I'|CLR(RED);
559 m->monstring = "incubus";
560 }
561 else {
562 m->monchar = 'S'|CLR(RED);
563 m->monstring = "succubus";
564 }
565 if (m->uniqueness == COMMON) {
566 strcpy(Str2,"The ");
567 strcat(Str2,m->monstring);
568 }
569 else strcpy(Str2,m->monstring);
570 strcat(Str2," laughs insanely.");
571 mprint(Str2);
572 mprint("You now notice the fangs, claws, batwings...");
573 }
574
575
m_talk_horse(m)576 void m_talk_horse(m)
577 struct monster *m;
578 {
579 if (m_statusp(m,HOSTILE))
580 mprint("The horse neighs angrily at you.");
581 else if (m_statusp(m,HUNGRY))
582 mprint("The horse noses curiously at your pack.");
583 else if (gamestatusp(MOUNTED))
584 mprint("The horse and your steed don't seem to get along.");
585 else if (Current_Environment == Current_Dungeon)
586 mprint("The horse shies; maybe he doesn't like the dungeon air....");
587 else {
588 mprint("The horse lets you pat his nose. Want to ride him? [yn] ");
589 if (ynq()=='y') {
590 m->hp = -1;
591 Level->site[m->x][m->y].creature = NULL;
592 putspot(m->x,m->y,getspot(m->x,m->y,FALSE));
593 setgamestatus(MOUNTED);
594 calc_melee();
595 mprint("You are now equitating!");
596 }
597 }
598 }
599
m_talk_hyena(m)600 void m_talk_hyena(m)
601 struct monster *m;
602 {
603 mprint("The hyena only laughs at you...");
604 }
605
m_talk_parrot(m)606 void m_talk_parrot(m)
607 struct monster *m;
608 {
609 mprint("Polly wanna cracker?");
610 }
611
612
m_talk_servant(m)613 void m_talk_servant(m)
614 struct monster *m;
615 {
616 int target,x=Player.x,y=Player.y;
617 if (m->id == SERV_LAW) {
618 target = SERV_CHAOS;
619 mprint("The Servant of Law pauses in thought for a moment.");
620 mprint("You are asked: Are there any Servants of Chaos hereabouts? [yn] ");
621 }
622 else {
623 target = SERV_LAW;
624 mprint("The Servant of Chaos grins mischievously at you.");
625 mprint("You are asked: Are there any Servants of Law hereabouts? [yn] ");
626 }
627 if (ynq()=='y') {
628 print1("Show me.");
629 show_screen();
630 drawmonsters(TRUE);
631 setspot(&x,&y);
632 if (Level->site[x][y].creature != NULL) {
633 if (Level->site[x][y].creature->id == target) {
634 mprint("The Servant launches itself towards its enemy.");
635 mprint("In a blaze of combat, the Servants annihilate each other!");
636 gain_experience(m->xpv);
637 m_death(Level->site[x][y].creature);
638 Level->site[m->x][m->y].creature = NULL;
639 m->x = x;
640 m->y = y;
641 Level->site[x][y].creature = m;
642 m_death(Level->site[x][y].creature);
643 }
644 else mprint("Right. Tell me about it. Idiot!");
645 }
646 else mprint("Right. Tell me about it. Idiot!");
647 }
648 else mprint("The servant shrugs and turns away.");
649 }
650
651
m_talk_animal(m)652 void m_talk_animal(m)
653 struct monster *m;
654 {
655 if (m->uniqueness == COMMON) {
656 strcpy(Str2,"The ");
657 strcat(Str2,m->monstring);
658 }
659 else strcpy(Str2,m->monstring);
660 mprint(Str2);
661 mprint("shows you a scholarly paper by Dolittle, D. Vet.");
662 mprint("which demonstrates that animals don't have speech centers");
663 mprint("complex enough to communicate in higher languages.");
664 mprint("It giggles softly to itself and takes back the paper.");
665 }
666
667
m_talk_scream(m)668 void m_talk_scream(m)
669 struct monster *m;
670 {
671 mprint("A thinly echoing scream reaches your ears....");
672 morewait();
673 mprint("You feel doomed....");
674 morewait();
675 mprint("A bird appears and flies three times widdershins around your head.");
676 summon(-1,QUAIL);
677 m->talkf = M_TALK_EVIL;
678 }
679
680
m_talk_archmage(m)681 void m_talk_archmage(m)
682 struct monster *m;
683 {
684 if (m_statusp(m,HOSTILE)) {
685 mprint("The Archmage ignores your attempt at conversation");
686 mprint("and concentrates on his spellcasting....");
687 }
688 else if (Current_Environment == E_COURT) {
689 mprint("The Archmage congratulates you on getting this far.");
690 mprint("He invites you to attempt the Throne of High Magic");
691 mprint("but warns you that it is important to wield the Sceptre");
692 mprint("before sitting on the throne.");
693 if (Level->site[m->x][m->y].p_locf == L_THRONE) {
694 mprint("The Archmage smiles and makes an arcane gesture....");
695 m_vanish(m);
696 }
697 }
698 else {
699 mprint("The Archmage tells you to find him again in his");
700 mprint("Magical Court at the base of his castle in the mountains");
701 mprint("of the far North-East; if you do he will give you some");
702 mprint("important information.");
703 }
704 }
705
706
m_talk_merchant(m)707 void m_talk_merchant(m)
708 struct monster *m;
709 {
710 if (! m_statusp(m,HOSTILE)) {
711 if (Current_Environment == E_VILLAGE) {
712 mprint("The merchant asks you if you want to buy a horse for 250GP.");
713 mprint("Pay the merchant? [yn] ");
714 if (ynq()=='y') {
715 if (Player.cash < 250)
716 mprint("The merchant says: 'Come back when you've got the cash!'");
717 else {
718 Player.cash -= 250;
719 mprint("The merchant takes your money and tells you to select");
720 mprint("any horse you want in the stables.");
721 mprint("He says: 'You'll want to get to know him before trying to");
722 mprint("ride him. By the way, food for the horse is not included.'");
723 mprint("The merchant runs off toward the bank, cackling gleefully.");
724 m_vanish(m);
725 }
726 }
727 else mprint("The merchant tells you to stop wasting his time.");
728 }
729 else {
730 mprint("The merchant tells you to visit his stables at his village");
731 mprint("for a great deal on a horse.");
732 }
733 }
734 else {
735 mprint("The merchant ignores you and screams:");
736 mprint("'Help! Help! I'm being oppressed!'");
737 }
738 }
739
740
m_talk_prime(m)741 void m_talk_prime(m)
742 struct monster *m;
743 {
744 if (!m_statusp(m,HOSTILE)) {
745 if (Current_Environment == E_CIRCLE) {
746 print1("The Prime nods brusquely at you, removes a gem from his");
747 print2("sleeve, places it on the floor, and vanishes wordlessly.");
748 morewait();
749 m_dropstuff(m);
750 m_vanish(m);
751 }
752 else {
753 print1("The Prime makes an intricate gesture, which leaves behind");
754 print2("glowing blue sparks... He winks mischievously at you....");
755 if (Player.rank[CIRCLE] > 0) {
756 morewait();
757 print1("The blue sparks strike you! You feel enhanced!");
758 print2("You feel more experienced....");
759 Player.pow+=Player.rank[CIRCLE];
760 Player.mana += calcmana();
761 gain_experience(1000);
762 m_vanish(m);
763 }
764 }
765 }
766 else m_talk_evil(m);
767 }
768