|
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: 14561 (0x38e1) Types: TextFile Names: »oguild1.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Omega/oguild1.c«
/* omega copyright (C) by Laurence Raphael Brothers, 1987,1988 */ /* oguild1.c */ /* L_ functions */ /* These functions implement the various guilds. */ /* They are all l_ functions since they are basically activated*/ /* at some site or other. */ #include "oglob.h" void l_merc_guild() { pob newitem; print1("Legion of Destiny, Mercenary Guild, Inc."); if (nighttime()) print2("The barracks are under curfew right now."); else { print2("You enter Legion HQ, "); if (Player.rank[LEGION] == COMMANDANT) { nprint2("Your aide follows you to the staff room."); morewait(); clearmsg(); } if (Player.rank[LEGION] > 0) { nprint2("and report to your commander."); morewait(); } switch(Player.rank[LEGION]) { case 0: nprint2("and see the Recruiting Centurion."); morewait(); print2("Do you wish to join the Legion? [yn] "); if (ynq2()=='y') { clearmsg(); if (Player.rank[ARENA]>0) { print1("The Centurion checks your record, and gets angry:"); print2("'The legion don't need any Arena Jocks. Git!'"); } else if (Player.rank[ORDER] > 0) { print1("The Centurion checks your record, and is amused:"); print2("'A paladin in the ranks? You must be joking.'"); } else if (Player.con < 12) { print1("The Centurion looks you over, sadly."); print2("You are too fragile to join the legion."); } else if (Player.str < 10) { print1("The Centurion looks at you contemptuously."); print2("Your strength is too low to pass the physical!"); } else { print1("You are tested for strength and stamina..."); morewait(); nprint1(" and you pass!"); print2("Commandant "); nprint2(Commandant); nprint2(" shakes your hand."); morewait(); print2("The Legion pays you a 500Au induction fee."); morewait(); print1("You are also issued a shortsword and leather."); print2("You are now a Legionaire."); morewait(); clearmsg(); newitem = ((pob) malloc(sizeof(objtype))); *newitem = Objects[WEAPONID+1]; /* shortsword */ gain_item(newitem); newitem = ((pob) malloc(sizeof(objtype))); *newitem = Objects[ARMORID+1]; /* leather */ gain_item(newitem); Player.cash += 500; Player.rank[LEGION] = LEGIONAIRE; Player.guildxp[LEGION] = 1; Player.str++; Player.con++; Player.maxstr++; Player.maxcon++; } } break; case COMMANDANT: print1("You find the disposition of your forces satisfactory."); break; case COLONEL: if ((Player.level > Commandantlevel) && find_and_remove_item(CORPSEID+0,ML10+4)) { print1("You liberated the Demon Emperor's Regalia!"); morewait(); clearmsg(); print1("The Legion is assembled in salute to you!"); print2("The Regalia is held high for all to see and admire."); morewait(); clearmsg(); print1("Commandant "); nprint1(Commandant); nprint1(" promotes you to replace him,"); print2("and announces his own overdue retirement."); morewait(); clearmsg(); print1("You are the new Commandant of the Legion!"); print2("The Emperor's Regalia is sold for a ridiculous sum."); strcpy(Commandant,Player.name); Commandantlevel = Player.level; morewait(); clearmsg(); print1("You now know the Spell of Regeneration."); Spells[S_REGENERATE].known = TRUE; Player.rank[LEGION]=COMMANDANT; Player.maxstr += 2; Player.str += 2; Player.maxcon += 2; Player.con += 2; print2("Your training is complete. You get top salary."); Player.cash += 20000; } else if (Player.level <= Commandantlevel) { clearmsg(); print1("Your CO expresses satisfaction with your progress."); print2("But your service record does not yet permit promotion."); } else { clearmsg(); print1("Why do you come empty handed?"); print2("You must return with the Regalia of the Demon Emperor!"); } break; case FORCE_LEADER: clearmsg(); print1("Your CO expresses satisfaction with your progress."); if (Player.guildxp[LEGION] < 4000) print2("But your service record does not yet permit promotion."); else { print2("You have been promoted to Legion Colonel!"); morewait(); print1("Your next promotion is contingent on the return of"); print2("the Regalia of the Demon Emperor."); morewait(); print1("The Demon Emperor holds court at the base of a volcano"); print2("to the far south, in the heart of a swamp."); morewait(); clearmsg(); print1("You have been taught the spell of heroism!"); Spells[S_HERO].known = TRUE; Player.rank[LEGION]=COLONEL; Player.maxstr++; Player.str++; Player.maxcon++; Player.con++; print2("You are given advanced training, and a raise."); Player.cash += 10000; } break; case CENTURION: clearmsg(); print1("Your CO expresses satisfaction with your progress."); if (Player.guildxp[LEGION] < 1500) print2("But your service record does not yet permit promotion."); else { print2("You are now a Legion Force-Leader!"); Player.rank[LEGION]=FORCE_LEADER; Player.maxstr++; Player.str++; morewait(); clearmsg(); print1("You receive more training, and bonus pay."); Player.cash += 5000; } break; case LEGIONAIRE: clearmsg(); print1("Your CO expresses satisfaction with your progress."); if (Player.guildxp[LEGION] < 400) print2("But your service record does not yet permit promotion."); else { print2("You are promoted to Legion Centurion!"); morewait(); clearmsg(); print1("You get advanced training, and a higher salary."); Player.rank[LEGION] = CENTURION; Player.maxcon++; Player.con++; Player.cash += 2000; } break; } } } void l_castle() { pob o; if (Player.level < 3) { print1("You can't possibly enter the castle, you nobody!"); print2("Come back when you are famous."); } else { print1("You are ushered into the castle."); if (Player.rank[NOBILITY]<DUKE) { print2("His Grace, "); nprint2(Duke); nprint2("-- Duke of Rampart! <fanfare>"); morewait(); clearmsg(); } if (Player.rank[NOBILITY]==0) { print1("Well, sirrah, wouldst embark on a quest? [yn] "); if (ynq1() == 'y') { print2("Splendid. Bring me the head of the Goblin King."); Player.rank[NOBILITY]=COMMONER; } else { print1("You scoundrel! Guards! Take this blackguard away!"); morewait(); p_damage(25,UNSTOPPABLE,"castle guards for lese majeste"); send_to_jail(); } } else if (Player.rank[NOBILITY]==COMMONER) { if (find_and_remove_item(CORPSEID,ML3+5)) { print1("Good job, sirrah! I promote you to the rank of esquire."); Player.rank[NOBILITY]=ESQUIRE; gain_experience(100); print2("Now that you have proved yourself true, another quest!"); morewait(); print1("Bring to me a Holy Defender!"); print2("One is said to be in the possession of the Great Wyrm"); morewait(); clearmsg(); print1("in the depths of the sewers below the city."); } else print2("Do not return until you achieve the quest, caitiff!"); } else if (Player.rank[NOBILITY]==ESQUIRE) { if (find_and_remove_item(WEAPONID+34,-1)) { print1("My thanks, squire. In return, I dub thee knight!"); Player.rank[NOBILITY]=KNIGHT; gain_experience(1000); print2("If thou wouldst please me further..."); morewait(); print1("Bring me a suit of dragonscale armor."); print2("You might have to kill a dragon to get one...."); } else print2("Greetings, squire. My sword? What, you don't have it?"); } else if (Player.rank[NOBILITY]==KNIGHT) { if (find_and_remove_item(ARMORID+12,-1)) { print1("Thanks, good sir knight."); print2("Here are letters patent to a peerage!"); Player.rank[NOBILITY]=LORD; gain_experience(10000); morewait(); print1("If you would do me a final service..."); print2("I require the Orb of Mastery. If you would be so kind..."); morewait(); print1("By the way, you might find the Orb in the possession"); print2("Of the Elemental Master on the Astral Plane"); } else print2("Your quest is not yet complete, sir knight."); } else if (Player.rank[NOBILITY]==LORD) { if (find_item(&o,ARTIFACTID+0,-1)) { print1("My sincerest thanks, my lord."); print2("You have proved yourself a true paragon of chivalry"); morewait(); print1("I abdicate the Duchy in your favor...."); print2("Oh, you can keep the Orb, by the way...."); Player.rank[NOBILITY]=DUKE; gain_experience(10000); strcpy(Duke,Player.name); } else print2("I didn't really think you were up to the task...."); } } } void l_arena() { char response; pob newitem; int i,prize,monsterlevel; print1("Rampart Coliseum"); if (Player.rank[ARENA] == 0) { print2("Enter the games, or Register as a Gladiator? [e,r,ESCAPE] "); do response = mcigetc(); while ((response != 'e') && (response != 'r') && (response != ESCAPE)); } else { print2("Enter the games? [yn] "); response = ynq2(); if (response == 'y') response = 'e'; else response = ESCAPE; } if (response == 'r') { if (Player.rank[ARENA]>0) print2("You're already a gladiator...."); else if (Player.rank[ORDER]>0) print2("We don't let Paladins into our Guild."); else if (Player.rank[LEGION]>0) print2("We don't train no stinkin' mercs!"); else if (Player.str < 13) print2("Yer too weak to train!"); else if (Player.agi < 12) print2("Too clumsy to be a gladiator!"); else { print1("Ok, yer now an Arena Trainee."); print2("Here's a wooden sword, and a shield"); morewait(); clearmsg(); newitem = ((pob) malloc(sizeof(objtype))); *newitem = Objects[WEAPONID+17]; /* club */ gain_item(newitem); newitem = ((pob) malloc(sizeof(objtype))); *newitem = Objects[SHIELDID+2]; /* shield */ gain_item(newitem); Player.rank[ARENA] = TRAINEE; Arena_Opponent = 3; morewait(); clearmsg(); print1("You've got 5000Au credit at the Gym."); Gymcredit+=5000; } } else if (response == 'e') { print1("OK, we're arranging a match...."); morewait(); Arena_Monster = ((pmt) malloc(sizeof(montype))); switch(Arena_Opponent) { case 0: *Arena_Monster = Monsters[ML1+9]; break; case 1: *Arena_Monster = Monsters[ML0+0]; break; case 2: *Arena_Monster = Monsters[ML1+21]; break; case 3: *Arena_Monster = Monsters[ML1+6]; break; case 4: *Arena_Monster = Monsters[ML1+0]; break; case 5: *Arena_Monster = Monsters[ML2+4]; break; case 6: *Arena_Monster = Monsters[ML2+0]; break; case 7: *Arena_Monster = Monsters[ML3+0]; break; case 8: *Arena_Monster = Monsters[ML2+11]; break; case 9: *Arena_Monster = Monsters[ML4+0]; break; case 10: *Arena_Monster = Monsters[ML5+5]; break; case 11: *Arena_Monster = Monsters[ML6+4]; break; case 12: *Arena_Monster = Monsters[ML6+5]; break; case 13: *Arena_Monster = Monsters[ML8+2]; break; case 14: *Arena_Monster = Monsters[ML8+4]; break; case 15: *Arena_Monster = Monsters[ML9+0]; break; default: if ((Player.rank[ARENA] < 5) && (Player.rank[ARENA] > 0)) { strcpy(Str1,Champion); strcat(Str1,", the arena champion"); *Arena_Monster = Monsters[ML0+8]; Arena_Monster->monstring = salloc(Str1); strcpy(Str2,"The corpse of "); strcat(Str2,Str1); Arena_Monster->corpsestr = salloc(Str2); Arena_Monster->level = 20; Arena_Monster->hp = Championlevel*Championlevel*5; Arena_Monster->hit = Championlevel*4; Arena_Monster->ac = Championlevel*3; Arena_Monster->dmg = 100+Championlevel*2; Arena_Monster->xpv = Championlevel*Championlevel*5; Arena_Monster->speed = 3; Arena_Monster->meleestr = calloc(30,sizeof(char)); strcpy(Arena_Monster->meleestr,""); for(i=0;i<Championlevel/5;i++) strcat(Arena_Monster->meleestr,"L?R?"); } else { do *Arena_Monster = Monsters[random_range(ML9-ML0)+ML0]; while ((Arena_Monster->uniqueness != COMMON) || (Arena_Monster->dmg == 0)); } break; } monsterlevel = Arena_Monster->level; if (Arena_Monster->level != 20) { strcpy(Str1,nameprint()); strcat(Str1," the "); strcat(Str1,Arena_Monster->monstring); Arena_Monster->monstring = salloc(Str1); strcpy(Str2,"The corpse of "); strcat(Str2,Str1); Arena_Monster->corpsestr = salloc(Str2); } Arena_Monster->uniqueness = UNIQUE_MADE; print1("You have a challenger: "); print2(Arena_Monster->monstring); Arena_Monster->attacked = TRUE; m_status_set(Arena_Monster,HOSTILE); morewait(); clearmsg(); print1("Let the battle begin...."); change_environment(E_ARENA); time_clock(TRUE); while (Current_Environment == E_ARENA) time_clock(FALSE); if (! Arena_Victory) { print1("The crowd boos your craven behavior!!!"); print2("You are thrown out of the Gladiator's Guild!"); morewait(); clearmsg(); if (Gymcredit > 0) print1("Your credit at the gym is cut off!"); Gymcredit = 0; Player.rank[ARENA] = -1; } else { Arena_Opponent++; if (monsterlevel == 20) { print1("The crowd roars its approval!"); if (Player.rank[ARENA]) { print2("You are the new Arena Champion!"); Championlevel = Player.level; strcpy(Champion,Player.name); Player.rank[ARENA] = 5; morewait(); print1("You are awarded the Champion's Spear: Victrix!"); morewait(); newitem = ((pob) malloc(sizeof(objtype))); *newitem = Objects[WEAPONID+35]; gain_item(newitem); } else { print1("As you are not an official gladiator,"); nprint1("you are not made Champion."); morewait(); } } morewait(); clearmsg(); print1("Good fight! "); nprint1("Your prize is: "); prize = max(25,monsterlevel * 50); if (Player.rank[ARENA] > 0) prize *= 2; mnumprint(prize); nprint1("Au."); Player.cash+=prize; if ((Player.rank[ARENA]<4) && (Arena_Opponent>5) && (Arena_Opponent % 3 == 0)) { if (Player.rank[ARENA]>0) { Player.rank[ARENA]++; morewait(); print1("You've been promoted to a stronger class!"); print2("You are also entitled to additional training."); Gymcredit+=Arena_Opponent*1000; } } } xredraw(); } else clearmsg(); }