|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T o
Length: 18566 (0x4886) Types: TextFile Names: »omtalk.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Omega/omtalk.c«
/* omega copyright (c) 1987,1988 by Laurence Raphael Brothers */ /* omonf.c */ /* monster talk functions */ #include "oglob.h" /* The druid's altar is in the northern forest */ void m_talk_druid(m) struct monster *m; { int i; if (! m_statusp(m,HOSTILE)) { print1("The Archdruid raises a hand in greeting."); if (! gamestatusp(SPOKE_TO_DRUID)) { setgamestatus(SPOKE_TO_DRUID); morewait(); print1("The Archdruid congratulates you on reaching his sanctum."); print2("You feel competent."); morewait(); gain_experience(300); if (Player.patron == DRUID) { print1("The Archdruid conveys to you the wisdom of nature...."); print2("You feel like a sage."); for(i=0;i<NUMRANKS;i++) { if (Player.guildxp[i] > 0) Player.guildxp[i] += 300; } } } mprint("Do you wish to request a ritual of neutralization? [yn] "); if (ynq() == 'y') { mprint("The ArchDruid conducts a sacred rite of balance...."); Player.alignment = 0; Player.mana = calcmana(); dataprint(); } } else { mprint("The ArchDruid looks at you and cries: 'Unclean! Unclean!'"); disrupt(Player.x,Player.y,100); mprint("This seems to have satiated his desire for vengeance."); mprint("'Have you learned your lesson?' The ArchDruid asks. [yn] "); if (ynq()) { m_status_reset(m,HOSTILE); mprint("'I certainly hope so!' says the ArchDruid."); m_vanish(m); } else { mprint("'Idiot.' mutters the ArchDruid."); p_damage(500,UNSTOPPABLE,"the ArchDruid's Vengeance"); } } } void m_talk_silent(m) struct monster *m; { int reply = random_range(4); if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (reply) { case 0:strcat(Str2," does not reply. "); break; case 1:strcat(Str2," shrugs silently. "); break; case 2:strcat(Str2," hold a finger to his mouth. "); break; case 3:strcat(Str2," glares at you but says nothing. "); break; } mprint(Str2); } void m_talk_stupid(m) struct monster *m; { int reply = random_range(4); if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (reply) { case 0:strcat(Str2," looks at you with mute incomprehension."); break; case 1:strcat(Str2," growls menacingly and ignores you."); break; case 2:strcat(Str2," does not seem to have heard you."); break; case 3:strcat(Str2," tries to pretend it didn't hear you."); break; } mprint(Str2); } void m_talk_greedy(m) struct monster *m; { int reply = random_range(4); if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (reply) { case 0:strcat(Str2," says: Give me a treasure.... ");break; case 1:strcat(Str2," says: Stand and deliver, knave! "); break; case 2:strcat(Str2," says: Your money or your life! "); break; case 3:strcat(Str2," says: Yield or Die! "); break; } mprint(Str2); } void m_talk_hungry(m) struct monster *m; { int reply = random_range(4); if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (reply) { case 0:strcat(Str2," says: I hunger, foolish adventurer! "); break; case 1:strcat(Str2," drools menacingly at you. "); break; case 2:strcat(Str2," says: You're invited to be lunch! "); break; case 3:strcat(Str2," says: Feeed Meee! "); break; } mprint(Str2); } void m_talk_guard(m) struct monster *m; { pml ml; if (m_statusp(m,HOSTILE)) { print1("'Surrender in the name of the Law!'"); print2("Do it? [yn] "); if (ynq2()=='y') { Player.alignment++; for(ml=Level->mlist;ml!=NULL;ml=ml->next) if ((ml->m->id == ML0+3) || /*guard*/ ((ml->m->id == ML0+8) && (ml->m->aux2 == 15))) /* justiciar */ m_status_reset(ml->m,HOSTILE); m_status_reset(m,HOSTILE); if (Current_Environment == E_CITY) { print1("Go directly to jail. Do not pass go, do not collect 200Au."); print2("You are taken to the city gaol."); morewait(); send_to_jail(); drawvision(Player.x,Player.y); } else { clearmsg(); print1("Mollified, the guard disarms you and sends you away."); dispose_lost_objects(1,Player.possessions[O_WEAPON_HAND]); } } else { clearmsg(); print1("All right, you criminal scum, you asked for it!"); } } else if (Player.rank[ORDER]>0) print1("'Greetings comrade! May you always tread the paths of Law.'"); else print1("Move it right along, stranger!"); } void m_talk_mp(m) struct monster *m; { mprint("The mendicant priest asks you to spare some treasure for the needy"); } void m_talk_titter(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," titters obscenely at you."); mprint(Str2); } void m_talk_ninja(m) struct monster *m; { mprint("The black-garbed figure says apologetically:"); mprint("'Situree simasita, wakarimasen.'"); } void m_talk_thief(m) struct monster *m; { if (Player.rank[THIEVES]) { if (m->level == 2) m->monstring = salloc("sneak thief"); else m->monstring = salloc("master thief"); print1("The cloaked figure makes a gesture which you recognize..."); print2("...the thieves' guild recognition signal!"); print3("'Sorry, mate, thought you were a mark....'"); morewait(); m_vanish(m); } else m_talk_man(m); } void m_talk_assassin(m) struct monster *m; { m->monstring = salloc("master assassin"); print1("The ominous figure does not reply, but hands you an embossed card:"); print2("'Guild of Assassins Ops are forbidden to converse with targets.'"); } void m_talk_im(m) struct monster *m; { if (strcmp(m->monstring,"itinerant merchant") != 0) { m->monstring = salloc("itinerant merchant"); } if (m->possessions == NULL) mprint("The merchant says: Alas! I have nothing to sell!"); else { m->possessions->thing->known = 2; mprint("I have a fine"); mprint(itemid(m->possessions->thing)); mprint("for only"); mnumprint(max(10,4*true_item_value(m->possessions->thing))); mprint("Au."); mprint("Want it? [yn] "); if (ynq()=='y') { if (Player.cash < (max(10,4*true_item_value(m->possessions->thing)))) { if (Player.alignment > 10) { mprint("Well, I'll let you have it for what you've got."); Player.cash = 0; gain_item(m->possessions->thing); m->possessions = NULL; } else mprint("Beat it, you deadbeat!"); } else { mprint("Here you are. Have a good day."); Player.cash -= max(10,(4*item_value(m->possessions->thing))); gain_item(m->possessions->thing); m->possessions = NULL; } } else mprint("Well then, I must be off. Good day."); m_vanish(m); } } void m_talk_man(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (random_range(5)) { case 0:strcat(Str2," asks you for the way home."); break; case 1:strcat(Str2," wishes you a pleasant day."); break; case 2:strcat(Str2," sneers at you contemptuously."); break; case 3:strcat(Str2," smiles and nods."); break; case 4:strcat(Str2," tells you a joke."); break; } mprint(Str2); } void m_talk_evil(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (random_range(14)) { case 0:strcat(Str2," says: 'THERE CAN BE ONLY ONE!'"); break; case 1:strcat(Str2," says: 'Prepare to die, Buckwheat!'"); break; case 2:strcat(Str2," says: 'Time to die!'"); break; case 3:strcat(Str2," says: 'There will be no mercy.'"); break; case 4:strcat(Str2," insults your mother-in-law."); break; case 5:strcat(Str2," says: 'Kurav tu ando mul!'"); case 6:strcat(Str2," says: '!va al infierno!'"); break; case 7:strcat(Str2," says: 'dame desu, nee.'"); break; case 8:strcat(Str2," spits on your rug and calls your cat a bastard."); break; case 9:strcat(Str2," snickers malevolently and draws a weapon."); break; case 10:strcat(Str2," sends 'rm -r *' to your shell!"); break; case 11:strcat(Str2," tweaks your nose and cackles evilly."); break; case 12:strcat(Str2," thumbs you in the eyes."); break; case 13:strcat(Str2," kicks you in the groin."); break; } mprint(Str2); } void m_talk_robot(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); switch (random_range(4)) { case 0:strcat(Str2," says: 'exterminate...Exterminate...EXTERMINATE!!!'"); break; case 1:strcat(Str2," says: 'Kill ... Crush ... Destroy'"); break; break; case 2:strcat(Str2," says: 'Danger -- Danger'"); break; break; case 3:strcat(Str2," says: 'Yo Mama -- core dumped.'"); break; break; } mprint(Str2); } void m_talk_slithy(m) struct monster *m; { mprint("It can't talk -- it's too slithy!"); } void m_talk_mimsy(m) struct monster *m; { mprint("It can't talk -- it's too mimsy!"); } void m_talk_burble(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," burbles hatefully at you."); mprint(Str2); } void m_talk_beg(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," asks you for alms."); mprint(Str2); } void m_talk_hint(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); if (m_statusp(m,HOSTILE)) { strcat(Str2," only sneers at you. "); mprint(Str2); } else { strcat(Str2," whispers in your ear: "); mprint(Str2); hint(); m->talkf = M_TALK_SILENT; } } void m_talk_gf(m) struct monster *m; { mprint("The good fairy glints: Would you like a wish?"); if (ynq()=='y') { mprint("The good fairy glows: Are you sure?"); if (ynq()=='y') { mprint("The good fairy radiates: Really really sure?"); if (ynq()=='y') { mprint("The good fairy beams: I mean, like, sure as sure can be?"); if (ynq()=='y') { mprint("The good fairy dazzles: You don't want a wish, right?"); if (ynq()=='y') mprint("The good fairy laughs: I thought not."); else wish(0); } } } } mprint("In a flash of sweet-smelling light, the fairy vanishes...."); Player.hp = max(Player.hp,Player.maxhp); Player.mana = max(Player.mana,calcmana()); mprint("You feel mellow."); m_vanish(m); } void m_talk_ef(m) struct monster *m; { mprint("The evil fairy roils: Eat my pixie dust!"); mprint("She waves her black-glowing wand, which screams thinly...."); m->movef=M_MOVE_SMART; m->meleef=M_MELEE_POISON; m->specialf=M_SP_THIEF; acquire(-1); bless(-1); sleep_player(m->level/2); summon(-1,-1); summon(-1,-1); summon(-1,-1); summon(-1,-1); } void m_talk_seductor(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," beckons seductively..."); mprint(Str2); mprint("Flee? [yn] "); if (ynq()=='y') { mprint("You feel stupid."); } else { strcpy(Str2,"The "); strcat(Str2,m->monstring); strcat(Str2," shows you a good time...."); mprint(Str2); gain_experience(500); Player.con++; } m_vanish(m); } void m_talk_demonlover(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," beckons seductively..."); mprint(Str2); mprint("Flee? [yn] "); if (ynq()=='y') mprint("You feel fortunate...."); else { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," shows you a good time...."); mprint(Str2); mprint("You feel your life energies draining..."); level_drain(random_range(3)+1,"a demon's kiss"); } m->talkf = M_TALK_EVIL; m->meleef = M_MELEE_SPIRIT; m->specialf = M_SP_DEMON; if (m->monchar == 's') { m->monchar = 'I'; m->monstring = salloc("incubus"); } else { m->monchar = 'S'; m->monstring = salloc("succubus"); } if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); strcat(Str2," laughs insanely."); mprint(Str2); mprint("You now notice the fangs, claws, batwings..."); } void m_talk_horse(m) struct monster *m; { if (m_statusp(m,HOSTILE)) mprint("The horse neighs angrily at you."); else if (m_statusp(m,HUNGRY)) mprint("The horse noses curiously at your pack."); else if (gamestatusp(MOUNTED)) mprint("The horse and your steed don't seem to get along."); else if (Current_Environment == Current_Dungeon) mprint("The horse shies; maybe he doesn't like the dungeon air...."); else { mprint("The horse lets you pat his nose. Want to ride him? [yn] "); if (ynq()=='y') { m->hp = -1; Level->site[m->x][m->y].creature = NULL; putspot(m->x,m->y,getspot(m->x,m->y,FALSE)); setgamestatus(MOUNTED); calc_melee(); mprint("You are now equitating!"); } } } void m_talk_hyena(m) struct monster *m; { mprint("The hyena only laughs at you..."); } void m_talk_parrot(m) struct monster *m; { mprint("Polly wanna cracker?"); } void m_talk_servant(m) struct monster *m; { int target,x=Player.x,y=Player.y; if (m->id == ML4+12) { target = ML4+13; mprint("The servant of law pauses in thought for a moment."); mprint("You are asked: Are there any servants of chaos hereabouts? [yn] "); } else { target = ML4+12; mprint("The servant of chaos pauses in thought for a moment."); mprint("You are asked: Are there any servants of law hereabouts? [yn] "); } if (ynq()=='y') { mprint("Show me."); setspot(&x,&y); if (Level->site[x][y].creature != NULL) { if (Level->site[x][y].creature->id == target) { mprint("The servant launches itself towards the target you selected."); mprint("In a blaze of combat, the servants annihilate each other!"); gain_experience(m->xpv); m_death(Level->site[x][y].creature); m->x = x; m->y = y; Level->site[x][y].creature = m; m_death(Level->site[x][y].creature); } else mprint("Right. Tell me about it. Idiot!"); } else mprint("Right. Tell me about it. Idiot!"); } else mprint("The servant shrugs and turns away."); } void m_talk_animal(m) struct monster *m; { if (m->uniqueness == COMMON) { strcpy(Str2,"The "); strcat(Str2,m->monstring); } else strcpy(Str2,m->monstring); mprint(Str2); mprint("shows you a scholarly paper by Dolittle, D. Vet."); mprint("which demonstrates that animals don't have speech centers"); mprint("complex enough to communicate in higher languages."); mprint("It giggles softly to itself and takes back the paper."); } void m_talk_scream(m) struct monster *m; { mprint("A thinly echoing scream reaches your ears...."); morewait(); mprint("You feel doomed...."); morewait(); mprint("A bird appears and flies three times widdershins around your head."); summon(-1,QUAIL); m->talkf = M_TALK_EVIL; } void m_talk_archmage(m) struct monster *m; { if (m_statusp(m,HOSTILE)) { mprint("The Archmage ignores your attempt at conversation"); mprint("and concentrates on his spellcasting...."); } else if (Current_Environment == E_COURT) { mprint("The Archmage congratulates you on getting this far."); mprint("He invites you to attempt the Throne of High Magic"); mprint("but warns you that it is important to wield the Sceptre"); mprint("before sitting on the throne."); if (Level->site[m->x][m->y].p_locf == L_THRONE) { mprint("The Archmage smiles and makes an arcane gesture...."); m_vanish(m); } } else { mprint("The Archmage tells you to find him again in his"); mprint("Magical Court at the base of his castle in the mountains"); mprint("of the far North-East; if you do he will give you some"); mprint("important information."); } } void m_talk_merchant(m) struct monster *m; { if (! m_statusp(m,HOSTILE)) { if (Current_Environment == E_VILLAGE) { mprint("The merchant asks you if you want to buy a horse for 250GP."); mprint("Pay the merchant? [yn] "); if (ynq()=='y') { if (Player.cash < 250) mprint("The merchant says: 'Come back when you've got the cash!'"); else { Player.cash -= 250; mprint("The merchant takes your money and tells you to select"); mprint("any horse you want in the stables."); mprint("He says: 'You'll want to get to know him before trying to"); mprint("ride him. By the way, food for the horse is not included.'"); mprint("The merchant runs off toward the bank, cackling gleefully."); m_vanish(m); } } else mprint("The merchant tells you to stop wasting his time."); } else { mprint("The merchant tells you to visit his stables at his village"); mprint("for a great deal on a horse."); } } else { mprint("The merchant ignores you and screams:"); mprint("'Help! Help! I'm being oppressed!'"); } } void m_talk_prime(m) struct monster *m; { if (!m_statusp(m,HOSTILE)) { if (Current_Environment == E_CIRCLE) { print1("The Prime nods brusquely at you, removes a gem from his"); print2("sleeve, places it on the floor, and vanishes wordlessly."); morewait(); m_vanish(m); } else { print1("The Prime makes an intricate gesture, which leaves behind"); print2("glowing blue sparks... He winks mischievously at you...."); if (Player.rank[CIRCLE] > 0) { morewait(); print1("The blue sparks strike you! You feel enhanced!"); print2("You feel more experienced...."); Player.pow+=Player.rank[CIRCLE]; Player.mana += calcmana(); gain_experience(1000); m_vanish(m); } } } else m_talk_evil(m); }