Branch data Line data Source code
1 : : /* omega copyright (C) by Laurence Raphael Brothers, 1987,1988,1989 */
2 : : /* guild2.c */
3 : : /* L_ functions */
4 : :
5 : : /* These functions implement the various guilds. */
6 : : /* They are all l_ functions since they are basically activated*/
7 : : /* at some site or other. */
8 : :
9 : : #include "glob.h"
10 : :
11 : :
12 : 0 : void l_thieves_guild(void)
13 : : {
14 : 0 : int fee,count,i,number,done=FALSE,dues=1000;
15 : : char c,action;
16 : : pob lockpick;
17 : 0 : print1("You have penetrated to the Lair of the Thieves' Guild.");
18 [ # # ]: 0 : if (! nighttime())
19 : 0 : print2("There aren't any thieves around in the daytime.");
20 : : else {
21 [ # # ][ # # ]: 0 : if ((Player.rank[THIEVES]==TMASTER) &&
22 [ # # ]: 0 : (Player.level > Shadowlordlevel) &&
23 : 0 : find_and_remove_item(OB_JUSTICIAR_BADGE,-1)) {
24 : 0 : print2("You nicked the Justiciar's Badge!");
25 : 0 : morewait();
26 : 0 : print1("The Badge is put in a place of honor in the Guild Hall.");
27 : 0 : print2("You are now the Shadowlord of the Thieves' Guild!");
28 : 0 : morewait();
29 : 0 : print1("Who says there's no honor among thieves?");
30 : 0 : strcpy(Shadowlord,Player.name);
31 : 0 : Shadowlordlevel = Player.level;
32 : 0 : morewait();
33 : 0 : Shadowlordbehavior = fixnpc(4);
34 : 0 : save_hiscore_npc(7);
35 : 0 : clearmsg();
36 : 0 : print1("You learn the Spell of Shadowform.");
37 : 0 : Spells[S_SHADOWFORM].known = TRUE;
38 : 0 : morewait();
39 : 0 : clearmsg();
40 : 0 : Player.rank[THIEVES]=SHADOWLORD;
41 : 0 : Player.maxagi += 2;
42 : 0 : Player.maxdex += 2;
43 : 0 : Player.agi += 2;
44 : 0 : Player.dex += 2;
45 : : }
46 [ # # ]: 0 : while (! done) {
47 : 0 : menuclear();
48 [ # # ]: 0 : if (Player.rank[THIEVES] == 0)
49 : 0 : menuprint("a: Join the Thieves' Guild.\n");
50 : : else
51 : 0 : menuprint("b: Raise your Guild rank.\n");
52 : 0 : menuprint("c: Get an item identified.\n");
53 [ # # ]: 0 : if (Player.rank[THIEVES] > 0)
54 : 0 : menuprint("d: Fence an item.\n");
55 : 0 : menuprint("ESCAPE: Leave this Den of Iniquity.");
56 : 0 : showmenu();
57 : 0 : action = mgetc();
58 [ # # ]: 0 : if (action == ESCAPE) done = TRUE;
59 [ # # ]: 0 : else if (action == 'a') {
60 : 0 : done = TRUE;
61 [ # # ]: 0 : if (Player.rank[THIEVES]> 0)
62 : 0 : print2("You are already a member!");
63 [ # # ]: 0 : else if (Player.alignment > 10)
64 : 0 : print2("You are too lawful to be a thief!");
65 : : else {
66 : 0 : dues += dues*(12-Player.dex)/9;
67 : 0 : dues += Player.alignment*5;
68 : 0 : dues = max(100,dues);
69 : 0 : clearmsg();
70 : 0 : mprint("Dues are");
71 : 0 : mnumprint(dues);
72 : 0 : mprint(" Au. Pay it? [yn] ");
73 [ # # ]: 0 : if (ynq1() =='y') {
74 [ # # ]: 0 : if (Player.cash < dues) {
75 : 0 : print1("You can't cheat the Thieves' Guild!");
76 : 0 : print2("... but the Thieves' Guild can cheat you....");
77 : 0 : Player.cash = 0;
78 : : }
79 : : else {
80 : 0 : print1("Shadowlord ");
81 : 0 : nprint1(Shadowlord);
82 : 0 : print2("enters your name into the roll of the Guild.");
83 : 0 : morewait();
84 : 0 : clearmsg();
85 : 0 : print1("As a special bonus, you get a free lockpick.");
86 : 0 : print2("You are taught the spell of Object Detection.");
87 : 0 : morewait();
88 : 0 : Spells[S_OBJ_DET].known = TRUE;
89 : 0 : lockpick = ((pob) checkmalloc(sizeof(objtype)));
90 : 0 : *lockpick = Objects[OB_LOCK_PICK]; /* lock pick */
91 : 0 : gain_item(lockpick);
92 : 0 : Player.cash -= dues;
93 : 0 : dataprint();
94 : 0 : Player.guildxp[THIEVES]=1;
95 : 0 : Player.rank[THIEVES]=TMEMBER;
96 : 0 : Player.maxdex++;Player.dex++;Player.agi++;Player.maxagi++;
97 : : }
98 : : }
99 : : }
100 : : }
101 [ # # ]: 0 : else if (action == 'b') {
102 [ # # ]: 0 : if (Player.rank[THIEVES]==0)
103 : 0 : print2("You are not even a member!");
104 [ # # ]: 0 : else if (Player.rank[THIEVES]==SHADOWLORD)
105 : 0 : print2("You can't get any higher than this!");
106 [ # # ]: 0 : else if (Player.rank[THIEVES]==TMASTER) {
107 [ # # ]: 0 : if (Player.level <= Shadowlordlevel)
108 : 0 : print2("You are not experienced enough to advance.");
109 : 0 : else print2("You must bring back the Justiciar's Badge!");
110 : : }
111 [ # # ]: 0 : else if (Player.rank[THIEVES]==THIEF) {
112 [ # # ]: 0 : if (Player.guildxp[THIEVES] < 4000)
113 : 0 : print2("You are not experienced enough to advance.");
114 : : else {
115 : 0 : print1("You are now a Master Thief of the Guild!");
116 : 0 : print2("You are taught the Spell of Apportation.");
117 : 0 : morewait();
118 : 0 : print1("To advance to the next level you must return with");
119 : 0 : print2("the badge of the Justiciar (cursed be his name).");
120 : 0 : morewait();
121 : 0 : clearmsg();
122 : 0 : print1("The Justiciar's office is just south of the gaol.");
123 : 0 : Spells[S_APPORT].known = TRUE;
124 : 0 : Player.rank[THIEVES]=TMASTER;
125 : 0 : Player.maxagi++;
126 : 0 : Player.maxdex++;
127 : 0 : Player.agi++;
128 : 0 : Player.dex++;
129 : : }
130 : : }
131 [ # # ]: 0 : else if (Player.rank[THIEVES]==ATHIEF) {
132 [ # # ]: 0 : if (Player.guildxp[THIEVES] < 1500)
133 : 0 : print2("You are not experienced enough to advance.");
134 : : else {
135 : 0 : print1("You are now a ranking Thief of the Guild!");
136 : 0 : print2("You learn the Spell of Invisibility.");
137 : 0 : Spells[S_INVISIBLE].known = TRUE;
138 : 0 : Player.rank[THIEVES]=THIEF;
139 : 0 : Player.agi++;
140 : 0 : Player.maxagi++;
141 : : }
142 : : }
143 [ # # ]: 0 : else if (Player.rank[THIEVES]==TMEMBER) {
144 [ # # ]: 0 : if (Player.guildxp[THIEVES] < 400)
145 : 0 : print2("You are not experienced enough to advance.");
146 : : else {
147 : 0 : print1("You are now an Apprentice Thief!");
148 : 0 : print2("You are taught the Spell of Levitation.");
149 : 0 : Spells[S_LEVITATE].known = TRUE;
150 : 0 : Player.rank[THIEVES]=ATHIEF;
151 : 0 : Player.dex++;
152 : 0 : Player.maxdex++;
153 : : }
154 : : }
155 : : }
156 [ # # ]: 0 : else if (action == 'c') {
157 [ # # ]: 0 : if (Player.rank[THIEVES]==0) {
158 : 0 : print1("RTG, Inc, Appraisers. Identification Fee: 50Au/item.");
159 : 0 : fee = 50;
160 : : }
161 : : else {
162 : 0 : fee = 5;
163 : 0 : print1("The fee is 5Au per item.");
164 : : }
165 : 0 : print2("Identify one item, or all possessions? [ip] ");
166 [ # # ]: 0 : if ((char) mcigetc()=='i') {
167 [ # # ]: 0 : if (Player.cash < fee)
168 : 0 : print2("Try again when you have the cash.");
169 : : else {
170 : 0 : Player.cash -= fee;
171 : 0 : dataprint();
172 : 0 : identify(0);
173 : : }
174 : : }
175 : : else {
176 : 0 : count = 0;
177 [ # # ]: 0 : for(i=1;i<MAXITEMS;i++)
178 [ # # ]: 0 : if (Player.possessions[i] != NULL)
179 [ # # ]: 0 : if (Player.possessions[i]->known < 2)
180 : 0 : count++;
181 [ # # ]: 0 : for(i=0;i<Player.packptr;i++)
182 [ # # ]: 0 : if (Player.pack[i] != NULL)
183 [ # # ]: 0 : if (Player.pack[i]->known < 2)
184 : 0 : count++;
185 : 0 : clearmsg();
186 : 0 : print1("The fee will be: ");
187 : 0 : mnumprint(max(count*fee,fee));
188 : 0 : nprint1("Au. Pay it? [yn] ");
189 [ # # ]: 0 : if (ynq1()=='y')
190 : : {
191 [ # # ]: 0 : if (Player.cash < max(count*fee,fee))
192 : 0 : print2("Try again when you have the cash.");
193 : : else {
194 : 0 : Player.cash -= max(count*fee,fee);
195 : 0 : dataprint();
196 : 0 : identify(1);
197 : : }
198 : : }
199 : : }
200 : : }
201 [ # # ]: 0 : else if (action == 'd') {
202 [ # # ]: 0 : if (Player.rank[THIEVES]==0)
203 : 0 : print2("Fence? Who said anything about a fence?");
204 : : else {
205 : 0 : print1("Fence one item or go through pack? [ip] ");
206 [ # # ]: 0 : if ((char) mcigetc()=='i') {
207 : 0 : i = getitem(NULL_ITEM);
208 [ # # ][ # # ]: 0 : if ((i==ABORT) || (Player.possessions[i] == NULL))
209 : 0 : print2("Huh, Is this some kind of set-up?");
210 [ # # ]: 0 : else if (Player.possessions[i]->blessing < 0)
211 : 0 : print2("I don't want to buy a cursed item!");
212 : : else {
213 : 0 : clearmsg();
214 : 0 : print1("I'll give you ");
215 : 0 : mlongprint(2 * item_value(Player.possessions[i]) / 3);
216 : 0 : nprint1("Au each. OK? [yn] ");
217 [ # # ]: 0 : if (ynq1() == 'y') {
218 : 0 : number = getnumber(Player.possessions[i]->number);
219 [ # # ][ # # ]: 0 : if ((number >= Player.possessions[i]->number) &&
220 : 0 : Player.possessions[i]->used) {
221 : 0 : Player.possessions[i]->used = FALSE;
222 : 0 : item_use(Player.possessions[i]);
223 : : }
224 : 0 : Player.cash += number*2*item_value(Player.possessions[i])/3;
225 : : /* Fenced artifacts could turn up anywhere, really... */
226 [ # # ]: 0 : if (Objects[Player.possessions[i]->id].uniqueness >
227 : : UNIQUE_UNMADE)
228 : 0 : Objects[Player.possessions[i]->id].uniqueness = UNIQUE_UNMADE;
229 : 0 : dispose_lost_objects(number,Player.possessions[i]);
230 : 0 : dataprint();
231 : : }
232 : 0 : else print2("Hey, gimme a break, it was a fair price!");
233 : : }
234 : : }
235 : : else {
236 [ # # ]: 0 : for(i=0;i<Player.packptr;i++) {
237 [ # # ]: 0 : if (Player.pack[i]->blessing > -1) {
238 : 0 : clearmsg();
239 : 0 : print1("Sell ");
240 : 0 : nprint1(itemid(Player.pack[i]));
241 : 0 : nprint1(" for ");
242 : 0 : mlongprint(2*item_value(Player.pack[i])/3);
243 : 0 : nprint1("Au each? [ynq] ");
244 [ # # ]: 0 : if ((c=ynq1())=='y') {
245 : 0 : number = getnumber(Player.pack[i]->number);
246 : 0 : Player.cash += 2*number * item_value(Player.pack[i]) / 3;
247 : 0 : Player.pack[i]->number -= number;
248 [ # # ]: 0 : if (Player.pack[i]->number < 1) {
249 : : /* Fenced an artifact? You just might see it again. */
250 [ # # ]: 0 : if (Objects[Player.pack[i]->id].uniqueness > UNIQUE_UNMADE)
251 : 0 : Objects[Player.pack[i]->id].uniqueness = UNIQUE_UNMADE;
252 : 0 : free((char *)Player.pack[i]);
253 : 0 : Player.pack[i] = NULL;
254 : : }
255 : 0 : dataprint();
256 : : }
257 [ # # ]: 0 : else if (c=='q') break;
258 : : }
259 : : }
260 : 0 : fixpack();
261 : : }
262 : : }
263 : : }
264 : : }
265 : : }
266 : 0 : xredraw();
267 : 0 : }
268 : :
269 : 0 : void l_college(void)
270 : : {
271 : : char action;
272 : 0 : int done=FALSE,enrolled = FALSE;
273 : 0 : print1("The Collegium Magii. Founded 16937, AOF.");
274 [ # # ]: 0 : if (nighttime())
275 : 0 : print2("The Registration desk is closed at night....");
276 : : else {
277 [ # # ]: 0 : while (! done) {
278 [ # # ][ # # ]: 0 : if ((Player.rank[COLLEGE]==MAGE) &&
279 [ # # ]: 0 : (Player.level > Archmagelevel) &&
280 : 0 : find_and_remove_item(CORPSEID,EATER)) {
281 : 0 : print1("You brought back the heart of the Eater of Magic!");
282 : 0 : morewait();
283 : 0 : print1("The Heart is sent to the labs for analysis.");
284 : 0 : print2("The Board of Trustees appoints you Archmage!");
285 : 0 : morewait();
286 : 0 : clearmsg();
287 : 0 : strcpy(Archmage,Player.name);
288 : 0 : Archmagelevel = Player.level;
289 : 0 : Player.rank[COLLEGE] = ARCHMAGE;
290 : 0 : Player.maxiq += 5;
291 : 0 : Player.iq += 5;
292 : 0 : Player.maxpow += 5;
293 : 0 : Player.pow += 5;
294 : 0 : morewait();
295 : 0 : Archmagebehavior = fixnpc(4);
296 : 0 : save_hiscore_npc(9);
297 : : }
298 : 0 : menuclear();
299 : 0 : menuprint("May we help you?\n\n");
300 : 0 : menuprint("a: Enroll in the College.\n");
301 : 0 : menuprint("b: Raise your College rank.\n");
302 : 0 : menuprint("c: Do spell research.\n");
303 : 0 : menuprint("ESCAPE: Leave these hallowed halls.\n");
304 : 0 : showmenu();
305 : 0 : action = mgetc();
306 [ # # ]: 0 : if (action == ESCAPE) done = TRUE;
307 [ # # ]: 0 : else if (action == 'a') {
308 [ # # ]: 0 : if (Player.rank[COLLEGE] > 0)
309 : 0 : print2("You are already enrolled!");
310 [ # # ]: 0 : else if (Player.iq < 13)
311 : 0 : print2("Your low IQ renders you incapable of being educated.");
312 [ # # ]: 0 : else if (Player.rank[CIRCLE] > 0)
313 : 0 : print2("Sorcery and our Magic are rather incompatible, no?");
314 : : #ifdef INCLUDE_MONKS
315 [ # # ]: 0 : else if (Player.rank[MONKS] > 0)
316 : 0 : print2("Meditation will not leave you enough time for studies.");
317 : : #endif
318 : : else {
319 [ # # ]: 0 : if (Player.iq > 17) {
320 : 0 : print2("You are given a scholarship!");
321 : 0 : morewait();
322 : 0 : enrolled=TRUE;
323 : : }
324 : : else {
325 : 0 : print1("Tuition is 1000Au. ");
326 : 0 : nprint1("Pay it? [yn] ");
327 [ # # ]: 0 : if (ynq1() =='y') {
328 [ # # ]: 0 : if (Player.cash < 1000)
329 : 0 : print2("You don't have the funds!");
330 : : else {
331 : 0 : Player.cash -= 1000;
332 : 0 : enrolled = TRUE;
333 : 0 : dataprint();
334 : : }
335 : : }
336 : : }
337 [ # # ]: 0 : if (enrolled) {
338 : 0 : print1("Archmage ");
339 : 0 : nprint1(Archmage);
340 : 0 : nprint1(" greets you and congratulates you on your acceptance.");
341 : 0 : print2("You are now enrolled in the Collegium Magii!");
342 : 0 : morewait();
343 : 0 : print1("You are now a Novice.");
344 : 0 : print2("You may research 1 spell, for your intro class.");
345 : 0 : Spellsleft = 1;
346 : 0 : Player.rank[COLLEGE] = INITIATE;
347 : 0 : Player.guildxp[COLLEGE] = 1;
348 : 0 : Player.maxiq += 1;
349 : 0 : Player.iq += 1;
350 : 0 : Player.maxpow += 1;
351 : 0 : Player.pow += 1;
352 : : }
353 : : }
354 : : }
355 [ # # ]: 0 : else if (action == 'b') {
356 [ # # ]: 0 : if (Player.rank[COLLEGE] == 0)
357 : 0 : print2("You have not even been initiated, yet!");
358 [ # # ]: 0 : else if (Player.rank[COLLEGE]==ARCHMAGE)
359 : 0 : print2("You are at the pinnacle of mastery in the Collegium.");
360 [ # # ]: 0 : else if (Player.rank[COLLEGE]==MAGE) {
361 [ # # ]: 0 : if (Player.level <= Archmagelevel)
362 : 0 : print2("You are not experienced enough to advance.");
363 : : else
364 : 0 : print2("You must return with the heart of the Eater of Magic!");
365 : : }
366 [ # # ]: 0 : else if (Player.rank[COLLEGE]==PRECEPTOR) {
367 [ # # ]: 0 : if (Player.guildxp[COLLEGE] < 4000)
368 : 0 : print2("You are not experienced enough to advance.");
369 : : else {
370 : 0 : print1("You are now a Mage of the Collegium Magii!");
371 : 0 : print2("You may research 6 spells for postdoctoral research.");
372 : 0 : Spellsleft += 6;
373 : 0 : morewait();
374 : 0 : print1("To become Archmage, you must return with the");
375 : 0 : print2("heart of the Eater of Magic");
376 : 0 : morewait();
377 : 0 : clearmsg();
378 : 0 : print1("The Eater may be found on a desert isle somewhere.");
379 : 0 : Player.rank[COLLEGE] = MAGE;
380 : 0 : Player.maxiq += 2;
381 : 0 : Player.iq += 2;
382 : 0 : Player.maxpow += 2;
383 : 0 : Player.pow += 2;
384 : : }
385 : : }
386 [ # # ]: 0 : else if (Player.rank[COLLEGE]==STUDENT) {
387 [ # # ]: 0 : if (Player.guildxp[COLLEGE] < 1500)
388 : 0 : print2("You are not experienced enough to advance.");
389 : : else {
390 : 0 : print1("You are now a Preceptor of the Collegium Magii!");
391 : 0 : print2("You are taught the basics of ritual magic.");
392 : 0 : morewait();
393 : 0 : clearmsg();
394 : 0 : print1("Your position allows you to research 4 spells.");
395 : 0 : Spellsleft +=4;
396 : 0 : Spells[S_RITUAL].known = TRUE;
397 : 0 : Player.rank[COLLEGE] = PRECEPTOR;
398 : 0 : Player.maxiq += 1;
399 : 0 : Player.iq += 1;
400 : 0 : Player.maxpow += 1;
401 : 0 : Player.pow += 1;
402 : : }
403 : : }
404 [ # # ]: 0 : else if (Player.rank[COLLEGE]==NOVICE) {
405 [ # # ]: 0 : if (Player.guildxp[COLLEGE] < 400)
406 : 0 : print2("You are not experienced enough to advance.");
407 : : else {
408 : 0 : print1("You are now a Student at the Collegium Magii!");
409 : 0 : print2("You are taught the spell of identification.");
410 : 0 : morewait();
411 : 0 : clearmsg();
412 : 0 : print1("Thesis research credit is 2 spells.");
413 : 0 : Spellsleft+=2;
414 : 0 : Spells[S_IDENTIFY].known = TRUE;
415 : 0 : Player.rank[COLLEGE] = STUDENT;
416 : 0 : Player.maxiq += 1;
417 : 0 : Player.iq += 1;
418 : 0 : Player.maxpow += 1;
419 : 0 : Player.pow += 1;
420 : : }
421 : : }
422 : : }
423 [ # # ]: 0 : else if (action == 'c') {
424 : 0 : clearmsg();
425 [ # # ]: 0 : if (Spellsleft > 0) {
426 : 0 : print1("Research permitted: ");
427 : 0 : mnumprint(Spellsleft);
428 : 0 : nprint1(" Spells.");
429 : 0 : morewait();
430 : : }
431 [ # # ]: 0 : if (Spellsleft < 1) {
432 : 0 : print1("Extracurricular Lab fee: 2000 Au. ");
433 : 0 : nprint1("Pay it? [yn] ");
434 [ # # ]: 0 : if (ynq1()=='y') {
435 [ # # ]: 0 : if (Player.cash < 2000)
436 : 0 : print1("Try again when you have the cash.");
437 : : else {
438 : 0 : Player.cash -= 2000;
439 : 0 : dataprint();
440 : 0 : Spellsleft = 1;
441 : : }
442 : : }
443 : : }
444 [ # # ]: 0 : if (Spellsleft > 0) {
445 : 0 : learnspell(0);
446 : 0 : Spellsleft--;
447 : : }
448 : : }
449 : : }
450 : : }
451 : 0 : xredraw();
452 : 0 : }
453 : :
454 : : #ifdef INCLUDE_MONKS
455 : 0 : void l_monastery(void)
456 : : {
457 : : char action;
458 : 0 : int done=FALSE,enrolled = FALSE;
459 : 0 : print1("Tholian Monastery of Rampart. Founded 12031, AOF.");
460 : 0 : print2("Welcome to our humble hovel.");
461 [ # # ]: 0 : if (nighttime())
462 : 0 : print2("The monastery doors are sealed until dawn.");
463 : : else {
464 [ # # ]: 0 : while (! done) {
465 : 0 : menuclear();
466 : 0 : menuprint("Find your True Course:\n\n");
467 : 0 : menuprint("a: Discover the Way.\n");
468 : 0 : menuprint("b: Meditate on the Path.\n");
469 : 0 : menuprint("c: Meditate on Knowledge.\n");
470 : 0 : menuprint("d: Take an extended Meditation.\n");
471 : 0 : menuprint("ESCAPE: Re-enter the World.\n");
472 : 0 : showmenu();
473 : 0 : action = mgetc();
474 [ # # ]: 0 : if (action == ESCAPE) {
475 : 0 : done = TRUE;
476 : 0 : calc_melee();
477 : : }
478 [ # # ]: 0 : else if (action == 'a') {
479 [ # # ]: 0 : if (Player.rank[MONKS] > 0)
480 : 0 : print2("You are already initiated, Brother.");
481 [ # # ]: 0 : else if (Player.con < 13)
482 : 0 : print2("Your body is too fragile to walk the Path, child.");
483 [ # # ]: 0 : else if (Player.pow < 13)
484 : 0 : print2("Your mind is too fragile to follow the Path, child.");
485 [ # # ]: 0 : else if (Player.rank[COLLEGE] > 0)
486 : 0 : print2("The Collegium has corruputed your spirit, child.");
487 [ # # ]: 0 : else if (Player.rank[CIRCLE] > 0)
488 : 0 : print2("The Circle has corruputed your spirit, child.");
489 : : else {
490 [ # # ]: 0 : if (Player.pow > 17) {
491 : 0 : print2("Your spirit is strong. You may study the Path with us.");
492 : 0 : morewait();
493 : 0 : enrolled=TRUE;
494 : : }
495 : : else {
496 : 0 : print1("A substantial cash sacrifice will cleanse your spirit.. ");
497 : 0 : print2("Donate your worldly goods? [yn] ");
498 [ # # ]: 0 : if (ynq1() =='y') {
499 [ # # ]: 0 : if (Player.cash < 1000)
500 : : {
501 : : /* WDT HACK! I'd rather the monks have some other
502 : : * criteria for joining. */
503 : 0 : print2("You have not much to give.");
504 : : }
505 : : else {
506 : 0 : Player.cash = 0;
507 : 0 : enrolled = TRUE;
508 : 0 : dataprint();
509 : : }
510 : : }
511 : : }
512 [ # # ]: 0 : if (enrolled) {
513 : 0 : print1("Grandmaster ");
514 : 0 : nprint1(Grandmaster);
515 : 0 : nprint1(" welcomes you to the Brotherhood.");
516 : 0 : print2("You are now a Tholian Monk trainee!");
517 : 0 : morewait();
518 : 0 : print2("You may study the Way with us.");
519 : 0 : Studiesleft = 1;
520 : 0 : Player.rank[MONKS] = MONK_TRAINEE;
521 : 0 : Player.guildxp[MONKS] = 1;
522 : 0 : Player.maxpow += 1;
523 : 0 : Player.pow += 1;
524 : : }
525 : : }
526 : : }
527 [ # # ]: 0 : else if (action == 'b') {
528 [ # # ]: 0 : if (Player.rank[MONKS] == 0)
529 : 0 : print2("You are not yet initiated, child.");
530 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_GRANDMASTER)
531 : 0 : print2("Your advancement lies within, Grandmaster.");
532 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_MASTER_TEARS) {
533 [ # # ]: 0 : if (Player.level <= Grandmasterlevel)
534 : 0 : print2("Seek more experience, Master.");
535 [ # # ][ # # ]: 0 : else if ((Player.rank[MONKS]==MONK_MASTER_TEARS) &&
536 [ # # ]: 0 : (Player.level > Grandmasterlevel) &&
537 : 0 : find_and_remove_item(CORPSEID,EATER))
538 : : {
539 : 0 : print1("You brought back the heart of the Eater of Magic!");
540 : 0 : morewait();
541 : 0 : print1("The Heart is sent to the placed in the kitchen cauldron.");
542 : 0 : print2("The Grandmaster steps down. You are the new Grandmaster.");
543 : 0 : morewait();
544 : 0 : clearmsg();
545 : 0 : strcpy(Grandmaster,Player.name);
546 : 0 : Grandmasterlevel = Player.level;
547 : 0 : Player.rank[MONKS] = MONK_GRANDMASTER;
548 : 0 : Player.maxhp += (Player.maxpow * 3);
549 : 0 : Player.maxiq += 5;
550 : 0 : Player.iq+= 5;
551 : 0 : Player.maxpow += 3;
552 : 0 : Player.pow += 3;
553 : 0 : Player.maxstr += 3;
554 : 0 : Player.str += 3;
555 : 0 : morewait();
556 : 0 : Grandmasterbehavior = fixnpc(4);
557 : 0 : save_hiscore_npc(16);
558 : : }
559 : : else
560 : 0 : print2("You must return with the heart of the Eater of Magic!");
561 : :
562 : : }
563 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_MASTER_PAINS) {
564 [ # # ]: 0 : if (Player.guildxp[MONKS] < 40000)
565 : 0 : print2("Seek more experience, Master.");
566 : : else {
567 : 0 : print1("You have travelled far, Master.");
568 : 0 : print2("You are now Master of Tears.");
569 : 0 : Studiesleft += 6;
570 : 0 : morewait();
571 : 0 : print1("To become Grandmaster, you must return with the");
572 : 0 : print2("heart of the Eater of Magic");
573 : 0 : morewait();
574 : 0 : clearmsg();
575 : 0 : print1("The Eater may be found on a desert isle somewhere.");
576 : 0 : Spells[S_REGENERATE].known = TRUE;
577 : 0 : Player.rank[MONKS] = MONK_MASTER_TEARS;
578 : 0 : Player.maxhp += (Player.maxpow * 2);
579 : 0 : Player.maxpow += 2;
580 : 0 : Player.pow += 2;
581 : 0 : Player.maxstr += 2;
582 : 0 : Player.str += 2;
583 : 0 : Player.maxagi += 2;
584 : 0 : Player.agi += 2;
585 : : }
586 : : }
587 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_MASTER_SIGHS) {
588 [ # # ]: 0 : if (Player.guildxp[MONKS] < 15000)
589 : 0 : print2("Seek more experience, Master.");
590 : : else {
591 : 0 : print1("The Path is long, Master.");
592 : 0 : print2("You are now Master of Pain.");
593 : 0 : morewait();
594 : 0 : print1("You feel enlightened.");
595 : 0 : morewait();
596 : 0 : clearmsg();
597 : 0 : Studiesleft +=4;
598 : 0 : Spells[S_RITUAL].known = TRUE;
599 : 0 : Spells[S_RESTORE].known = TRUE;
600 : 0 : Player.status[ILLUMINATION] = 1500; /* enlightened */
601 : 0 : Player.rank[MONKS] = MONK_MASTER_PAINS;
602 : 0 : Player.maxhp += Player.maxpow;
603 : 0 : Player.maxcon += 1;
604 : 0 : Player.con += 1;
605 : 0 : Player.maxdex += 2;
606 : 0 : Player.dex += 2;
607 : : }
608 : : }
609 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_MASTER) {
610 [ # # ]: 0 : if (Player.guildxp[MONKS] < 9000)
611 : 0 : print2("Seek more experience, Master.");
612 : : else {
613 : 0 : print1("Drink, weary Master.");
614 : 0 : print2("You are now Master of Sighs.");
615 : 0 : morewait();
616 : 0 : clearmsg();
617 : 0 : Studiesleft +=2;
618 : 0 : Spells[S_HASTE].known = TRUE;
619 : 0 : Player.rank[MONKS] = MONK_MASTER_SIGHS;
620 : 0 : Player.maxhp += Player.maxpow;
621 : 0 : Player.maxcon += 1;
622 : 0 : Player.con += 1;
623 : 0 : Player.maxiq += 2;
624 : 0 : Player.iq += 2;
625 : : }
626 : : }
627 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_MONK) {
628 [ # # ]: 0 : if (Player.guildxp[MONKS] < 3000)
629 : 0 : print2("Seek more experience, Brother.");
630 : : else {
631 : 0 : print1("A thousand steps on the path, Brother.");
632 : 0 : print2("You are now a Master.");
633 : 0 : morewait();
634 : 0 : clearmsg();
635 : 0 : Studiesleft +=2;
636 : 0 : Spells[S_HEAL].known = TRUE;
637 : 0 : Player.rank[MONKS] = MONK_MASTER;
638 : 0 : Player.maxhp += Player.maxpow;
639 : 0 : Player.maxcon += 1;
640 : 0 : Player.con += 1;
641 : 0 : Player.maxpow += 2;
642 : 0 : Player.pow += 5; /* [sic] */
643 : : }
644 : : }
645 [ # # ]: 0 : else if (Player.rank[MONKS]==MONK_TRAINEE) {
646 [ # # ]: 0 : if (Player.guildxp[MONKS] < 1500)
647 : 0 : print2("Seek more experience, Brother.");
648 : : else {
649 : 0 : print1("You have sought wisdom, Brother.");
650 : 0 : print2("You are now a Tholian Monk.");
651 : 0 : morewait();
652 : 0 : clearmsg();
653 : 0 : Studiesleft +=2;
654 : 0 : Spells[S_CURE].known = TRUE;
655 : 0 : Player.rank[MONKS] = MONK_MONK;
656 : 0 : Player.maxhp += Player.maxpow;
657 : 0 : Player.maxcon += 1;
658 : 0 : Player.con += 1;
659 : 0 : Player.maxpow += 1;
660 : 0 : Player.pow += 1;
661 : : }
662 : : }
663 : : }
664 [ # # ]: 0 : else if (action == 'c') {
665 : 0 : clearmsg();
666 [ # # ]: 0 : if (Studiesleft > 0) {
667 : 0 : print1("Studies permitted: ");
668 : 0 : mnumprint(Studiesleft);
669 : 0 : nprint1(" Studies.");
670 : 0 : morewait();
671 : : }
672 [ # # ]: 0 : if (Studiesleft < 1) {
673 : 0 : print1("Sacrifice clears a cluttered heart. ");
674 : 0 : nprint1("Donate your worldly cash? [yn] ");
675 [ # # ]: 0 : if (ynq1()=='y') {
676 [ # # ]: 0 : if (Player.cash < 2000)
677 : : {
678 [ # # ]: 0 : if ( Player.rank[MONKS] >= MONK_GRANDMASTER )
679 : 0 : print2("You have not much to give, Grandmaster.");
680 [ # # ]: 0 : else if ( Player.rank[MONKS] >= MONK_MASTER )
681 : 0 : print2("You have not much to give, Master.");
682 : : else
683 : 0 : print2("You have not much to give, Brother.");
684 : : }
685 : : else {
686 : 0 : Player.cash = 0;
687 : 0 : dataprint();
688 : 0 : Studiesleft = 1;
689 : : }
690 : : }
691 : : }
692 [ # # ]: 0 : if (Studiesleft > 0) {
693 : 0 : learnspell(0);
694 : 0 : Studiesleft--;
695 : : }
696 : : }
697 [ # # ]: 0 : else if (action == 'd') {
698 [ # # ]: 0 : if (Player.rank[MONKS] < MONK_MASTER) {
699 : 0 : clearmsg();
700 : 0 : print1("Only Masters can achieve extended meditation, child.");
701 : 0 : print2(" ");
702 : : }
703 : : else {
704 : 0 : int i = 0;
705 : 0 : clearmsg();
706 : 0 : print1("Seeking inner truth...");
707 : 0 : morewait();
708 : 0 : clearmsg();
709 : 0 : morewait();
710 : 0 : toggle_item_use(TRUE);
711 : 0 : Player.cash = 0;
712 : 0 : Player.hp = Player.maxhp;
713 : 0 : Player.str = Player.maxstr;
714 : 0 : Player.agi = Player.maxagi;
715 : 0 : Player.con = Player.maxcon;
716 : 0 : Player.dex = Player.maxdex;
717 : 0 : Player.iq = Player.maxiq;
718 : 0 : Player.pow = Player.maxpow;
719 [ # # ]: 0 : for (i=0;i<NUMSTATI;i++)
720 [ # # ]: 0 : if (Player.status[i]<1000) Player.status[i]=0;
721 : 0 : toggle_item_use(FALSE);
722 : 0 : Player.food = 43;
723 : 0 : print2("Your body and mind are whole.");
724 [ # # ]: 0 : if (random_range(2) == 1) {
725 : 0 : morewait();
726 : 0 : print1("Extra whole!");
727 : 0 : Player.maxhp += 1;
728 : : }
729 : : }
730 : 0 : Time += 60*24*7;
731 : 0 : Date += 7;
732 : 0 : moon_check();
733 : 0 : timeprint();
734 : : }
735 : :
736 : : }
737 : : }
738 : 0 : xredraw();
739 : 0 : }
740 : : #endif
741 : :
742 : :
743 : 0 : void l_sorcerors(void)
744 : : {
745 : : char action;
746 : 0 : int done=FALSE,fee;
747 : : long total;
748 : 0 : print1("The Circle of Sorcerors.");
749 [ # # ]: 0 : if (Player.rank[CIRCLE] == -1) {
750 : 0 : print2("Fool! Didn't we tell you to go away?");
751 : 0 : Player.mana = 0;
752 : 0 : dataprint();
753 : : }
754 [ # # ]: 0 : else while (! done) {
755 [ # # ][ # # ]: 0 : if ((Player.rank[CIRCLE]==HIGHSORCEROR) &&
756 [ # # ]: 0 : (Player.level > Primelevel) &&
757 : 0 : find_and_remove_item(CORPSEID,LAWBRINGER)) {
758 : 0 : print2("You obtained the Crown of the Lawgiver!");
759 : 0 : morewait();
760 : 0 : print1("The Crown is ritually sacrificed to the Lords of Chaos.");
761 : 0 : print2("You are now the Prime Sorceror of the Inner Circle!");
762 : 0 : strcpy(Prime,Player.name);
763 : 0 : Primelevel = Player.level;
764 : 0 : morewait();
765 : 0 : Primebehavior = fixnpc(4);
766 : 0 : save_hiscore_npc(10);
767 : 0 : clearmsg();
768 : 0 : print1("You learn the Spell of Disintegration!");
769 : 0 : morewait();
770 : 0 : clearmsg();
771 : 0 : Spells[S_DISINTEGRATE].known = TRUE;
772 : 0 : Player.rank[CIRCLE] = PRIME;
773 : 0 : Player.maxpow += 10;
774 : 0 : Player.pow += 10;
775 : : }
776 : 0 : menuclear();
777 : 0 : menuprint("May we help you?\n\n");
778 : 0 : menuprint("a: Become an Initiate of the Circle.\n");
779 : 0 : menuprint("b: Raise your rank in the Circle.\n");
780 : 0 : menuprint("c: Restore mana points\n");
781 : 0 : menuprint("ESCAPE: Leave these Chambers of Power.\n");
782 : 0 : showmenu();
783 : 0 : action = mgetc();
784 [ # # ]: 0 : if (action == ESCAPE) done = TRUE;
785 [ # # ]: 0 : else if (action == 'a') {
786 [ # # ]: 0 : if (Player.rank[CIRCLE] > 0)
787 : 0 : print2("You are already an initiate!");
788 [ # # ]: 0 : else if (Player.alignment > 0)
789 : 0 : print2("You may not join -- you reek of Law!");
790 [ # # ]: 0 : else if (Player.rank[COLLEGE] > 0)
791 : 0 : print2("Foolish Mage! You don't have the right attitude to Power!");
792 : : #ifdef INCLUDE_MONKS
793 [ # # ]: 0 : else if (Player.rank[MONKS] > 0)
794 : 0 : print2("Stupid monk. Go Meditate on this!");
795 : : #endif
796 : : else {
797 : 0 : fee = 3000;
798 : 0 : fee += Player.alignment*100;
799 : 0 : fee += fee*(12 - Player.pow)/9;
800 : 0 : fee = max(100,fee);
801 : 0 : clearmsg();
802 : 0 : mprint("For you, there is an initiation fee of");
803 : 0 : mnumprint(fee);
804 : 0 : mprint(" Au.");
805 : 0 : print2("Pay it? [yn] ");
806 [ # # ]: 0 : if (ynq2() =='y') {
807 [ # # ]: 0 : if (Player.cash < fee)
808 : 0 : print3("Try again when you have the cash!");
809 : : else {
810 : 0 : print1("Prime Sorceror ");
811 : 0 : nprint1(Prime);
812 : 0 : print2("conducts your initiation into the circle of novices.");
813 : 0 : morewait();
814 : 0 : clearmsg();
815 : 0 : print1("You learn the Spell of Magic Missiles.");
816 : 0 : Spells[S_MISSILE].known = TRUE;
817 : 0 : Player.cash -= fee;
818 : 0 : dataprint();
819 : 0 : Player.rank[CIRCLE] = INITIATE;
820 : 0 : Player.guildxp[CIRCLE] = 1;
821 : 0 : Player.maxpow++;
822 : 0 : Player.pow++;
823 : : }
824 : : }
825 : : }
826 : : }
827 [ # # ]: 0 : else if (action == 'b') {
828 [ # # ]: 0 : if (Player.rank[CIRCLE] == 0)
829 : 0 : print2("You have not even been initiated, yet!");
830 [ # # ]: 0 : else if (Player.alignment > -1) {
831 : 0 : print1("Ahh! You have grown too lawful!!!");
832 : 0 : print2("You are hereby blackballed from the Circle!");
833 : 0 : Player.rank[CIRCLE] = -1;
834 : 0 : morewait();
835 : 0 : clearmsg();
836 : 0 : print1("A pox upon thee!");
837 [ # # ]: 0 : if (! Player.immunity[INFECTION])
838 : 0 : Player.status[DISEASED]+=100;
839 : 0 : print2("And a curse on your possessions!");
840 : 0 : morewait();
841 : 0 : clearmsg();
842 : 0 : acquire(-1);
843 : 0 : clearmsg();
844 : 0 : enchant(-1);
845 : 0 : bless(-1);
846 : 0 : print3("Die, false sorceror!");
847 : 0 : p_damage(25,UNSTOPPABLE,"a sorceror's curse");
848 : 0 : done = TRUE;
849 : : }
850 [ # # ]: 0 : else if (Player.rank[CIRCLE]==PRIME)
851 : 0 : print2("You are at the pinnacle of mastery in the Circle.");
852 [ # # ]: 0 : else if (Player.rank[CIRCLE]==HIGHSORCEROR) {
853 [ # # ]: 0 : if (Player.level <= Primelevel)
854 : 0 : print2("You are not experienced enough to advance.");
855 : : else
856 : 0 : print2("You must return with the Crown of the LawBringer!");
857 : : }
858 [ # # ]: 0 : else if (Player.rank[CIRCLE]==SORCEROR) {
859 [ # # ]: 0 : if (Player.guildxp[CIRCLE] < 4000)
860 : 0 : print2("You are not experienced enough to advance.");
861 : : else {
862 : 0 : print1("You are now a High Sorceror of the Inner Circle!");
863 : 0 : print2("You learn the Spell of Disruption!");
864 : 0 : morewait();
865 : 0 : clearmsg();
866 : 0 : print1("To advance you must return with the LawBringer's Crown!");
867 : 0 : print2("The LawBringer resides on Star Peak.");
868 : 0 : Spells[S_DISRUPT].known = TRUE;
869 : 0 : Player.rank[CIRCLE] = HIGHSORCEROR;
870 : 0 : Player.maxpow += 5;
871 : 0 : Player.pow += 5;
872 : : }
873 : : }
874 [ # # ]: 0 : else if (Player.rank[CIRCLE]==ENCHANTER) {
875 [ # # ]: 0 : if (Player.guildxp[CIRCLE] < 1500)
876 : 0 : print2("You are not experienced enough to advance.");
877 : : else {
878 : 0 : print1("You are now a member of the Circle of Sorcerors!");
879 : 0 : print2("You learn the Spell of Ball Lightning!");
880 : 0 : Spells[S_LBALL].known = TRUE;
881 : 0 : Player.rank[CIRCLE] = SORCEROR;
882 : 0 : Player.maxpow += 2;
883 : 0 : Player.pow+=2;
884 : : }
885 : : }
886 [ # # ]: 0 : else if (Player.rank[CIRCLE]==INITIATE) {
887 [ # # ]: 0 : if (Player.guildxp[CIRCLE] < 400)
888 : 0 : print2("You are not experienced enough to advance.");
889 : : else {
890 : 0 : print1("You are now a member of the Circle of Enchanters!");
891 : 0 : print2("You learn the Spell of Firebolts.");
892 : 0 : Spells[S_FIREBOLT].known = TRUE;
893 : 0 : Player.rank[CIRCLE] = ENCHANTER;
894 : 0 : Player.maxpow+=2;
895 : 0 : Player.pow+=2;
896 : : }
897 : : }
898 : : }
899 [ # # ]: 0 : else if (action == 'c') {
900 : 0 : done = TRUE;
901 : 0 : fee = Player.level*100;
902 [ # # ]: 0 : if (Player.rank[CIRCLE]) fee = fee / 2;
903 : 0 : clearmsg();
904 : 0 : print1("That will be: ");
905 : 0 : mnumprint(fee);
906 : 0 : nprint1("Au. Pay it? [yn] ");
907 [ # # ]: 0 : if (ynq1()=='y') {
908 [ # # ]: 0 : if (Player.cash < fee)
909 : 0 : print2("Begone, deadbeat, or face the wrath of the Circle!");
910 : : else {
911 : 0 : Player.cash -= fee;
912 : 0 : total = calcmana();
913 [ # # ]: 0 : while (Player.mana < total) {
914 : 0 : Player.mana++;
915 : 0 : dataprint();
916 : : }
917 : 0 : print2("Have a sorcerous day, now!");
918 : : }
919 : : }
920 : 0 : else print2("Be seeing you!");
921 : : }
922 : : }
923 : 0 : xredraw();
924 : 0 : }
925 : :
926 : :
927 : :
928 : :
929 : 0 : void l_order(void)
930 : : {
931 : : pob newitem;
932 : : pml ml;
933 : 0 : print1("The Headquarters of the Order of Paladins.");
934 : 0 : morewait();
935 [ # # ][ # # ]: 0 : if ((Player.rank[ORDER]==PALADIN) &&
936 [ # # ]: 0 : (Player.level > Justiciarlevel) &&
937 [ # # ]: 0 : gamestatusp(GAVE_STARGEM) &&
938 : 0 : Player.alignment > 300) {
939 : 0 : print1("You have succeeded in your quest!");
940 : 0 : morewait();
941 : 0 : print1("The previous Justiciar steps down in your favor.");
942 : 0 : print2("You are now the Justiciar of Rampart and the Order!");
943 : 0 : strcpy(Justiciar,Player.name);
944 [ # # ][ # # ]: 0 : for (ml = Level->mlist; ml && (ml->m->id != HISCORE_NPC ||
[ # # ]
945 : 0 : ml->m->aux2 != 15); ml = ml->next)
946 : : /* just scan for current Justicar */;
947 [ # # ]: 0 : if (ml) {
948 : 0 : m_remove(ml->m); /* signals "death" -- no credit to player, though */
949 : : }
950 : 0 : Justiciarlevel = Player.level;
951 : 0 : morewait();
952 : 0 : Justiciarbehavior = fixnpc(4);
953 : 0 : save_hiscore_npc(15);
954 : 0 : clearmsg();
955 : 0 : print1("You are awarded a blessed shield of deflection!");
956 : 0 : morewait();
957 : 0 : newitem = ((pob) checkmalloc(sizeof(objtype)));
958 : 0 : *newitem = Objects[OB_DEFLECT]; /* shield of deflection */
959 : 0 : newitem->blessing = 9;
960 : 0 : gain_item(newitem);
961 : 0 : morewait();
962 : 0 : Player.rank[ORDER] = JUSTICIAR;
963 : 0 : Player.maxstr += 5;
964 : 0 : Player.str += 5;
965 : 0 : Player.maxpow += 5;
966 : 0 : Player.pow += 5;
967 : : }
968 [ # # ]: 0 : if (Player.alignment < 1) {
969 [ # # ]: 0 : if (Player.rank[ORDER] > 0) {
970 : 0 : print1("You have been tainted by chaos!");
971 : 0 : print2("You are stripped of your rank in the Order!");
972 : 0 : morewait();
973 : 0 : Player.rank[ORDER]= -1;
974 : 0 : send_to_jail();
975 : : }
976 : : else
977 : 0 : print1("Get thee hence, minion of chaos!");
978 : : }
979 [ # # ]: 0 : else if (Player.rank[ORDER] == -1)
980 : 0 : print1("Thou again? Get thee hence, minion of chaos!");
981 [ # # ]: 0 : else if (Player.rank[ORDER] == 0) {
982 [ # # ]: 0 : if (Player.rank[ARENA] != 0)
983 : 0 : print1("We do not accept bloodstained gladiators into our Order.");
984 [ # # ]: 0 : else if (Player.rank[LEGION] != 0)
985 : 0 : print1("Go back to your barracks, mercenary!");
986 : : else {
987 : 0 : print1("Dost thou wish to join our Order? [yn] ");
988 [ # # ]: 0 : if (ynq1()=='y') {
989 : 0 : print1("Justiciar ");
990 : 0 : nprint1(Justiciar);
991 : 0 : nprint1(" welcomes you to the Order.");
992 : 0 : print2("'Mayest thou always follow the sublime path of Law.'");
993 : 0 : morewait();
994 : 0 : print1("You are now a Gallant in the Order.");
995 : 0 : print2("You are given a horse and a blessed spear.");
996 : 0 : morewait();
997 : 0 : Player.rank[ORDER] = GALLANT;
998 : 0 : Player.guildxp[ORDER] = 1;
999 : 0 : setgamestatus(MOUNTED);
1000 : 0 : newitem = ((pob) checkmalloc(sizeof(objtype)));
1001 : 0 : *newitem = Objects[OB_SPEAR]; /* spear */
1002 : 0 : newitem->blessing = 9;
1003 : 0 : newitem->plus = 1;
1004 : 0 : newitem->known = 2;
1005 : 0 : gain_item(newitem);
1006 : : }
1007 : : }
1008 : : } else {
1009 : 0 : print1("'Welcome back, Paladin.'");
1010 [ # # ]: 0 : if (!gamestatusp(MOUNTED)) {
1011 : 0 : print2("You are given a new steed.");
1012 : 0 : setgamestatus(MOUNTED);
1013 : : }
1014 : 0 : morewait();
1015 : 0 : clearmsg();
1016 [ # # ][ # # ]: 0 : if ((Player.hp < Player.maxhp) || (Player.status[DISEASED]) ||
[ # # ]
1017 : 0 : (Player.status[POISONED]))
1018 : 0 : print1("Your wounds are treated by a medic.");
1019 : 0 : cleanse(0);
1020 : 0 : Player.hp = Player.maxhp;
1021 [ # # ]: 0 : if ( Player.food <= 40 )
1022 : : {
1023 : 0 : Player.food = 40;
1024 : 0 : print2("You get a hot meal from the refectory.");
1025 : : }
1026 : 0 : morewait();
1027 : 0 : clearmsg();
1028 [ # # ]: 0 : if (Player.rank[ORDER]==PALADIN) {
1029 [ # # ]: 0 : if (Player.level <= Justiciarlevel)
1030 : 0 : print2("You are not experienced enough to advance.");
1031 [ # # ]: 0 : else if (Player.alignment < 300)
1032 : 0 : print2("You are not sufficiently Lawful as yet to advance.");
1033 : 0 : else print2("You must give the Star Gem to the LawBringer.");
1034 : : }
1035 [ # # ]: 0 : else if (Player.rank[ORDER]==CHEVALIER) {
1036 [ # # ]: 0 : if (Player.guildxp[ORDER] < 4000)
1037 : 0 : print2("You are not experienced enough to advance.");
1038 [ # # ]: 0 : else if (Player.alignment < 200)
1039 : 0 : print2("You are not sufficiently Lawful as yet to advance.");
1040 : : else {
1041 : 0 : print1("You are made a Paladin of the Order!");
1042 : 0 : print2("You learn the Spell of Heroism and get Mithril Plate!");
1043 : 0 : morewait();
1044 : 0 : newitem = ((pob) checkmalloc(sizeof(objtype)));
1045 : 0 : *newitem = Objects[OB_MITHRIL_PLATE]; /* mithril plate armor */
1046 : 0 : newitem->blessing = 9;
1047 : 0 : newitem->known = 2;
1048 : 0 : gain_item(newitem);
1049 : 0 : morewait();
1050 : 0 : clearmsg();
1051 : 0 : print1("To advance you must rescue the Star Gem and return it");
1052 : 0 : print2("to its owner, the LawBringer, who resides on Star Peak.");
1053 : 0 : morewait();
1054 : 0 : print1("The Star Gem was stolen by the cursed Prime Sorceror,");
1055 : 0 : print2("whose headquarters may be found beyond the Astral Plane.");
1056 : 0 : morewait();
1057 : 0 : print1("The Oracle will send you to the Astral Plane if you");
1058 : 0 : print2("prove yourself worthy to her.");
1059 : 0 : morewait();
1060 : 0 : Spells[S_HERO].known = TRUE;
1061 : 0 : Player.rank[ORDER] = PALADIN;
1062 : : }
1063 : : }
1064 [ # # ]: 0 : else if (Player.rank[ORDER]==GUARDIAN) {
1065 [ # # ]: 0 : if (Player.guildxp[ORDER] < 1500)
1066 : 0 : print2("You are not experienced enough to advance.");
1067 [ # # ]: 0 : else if (Player.alignment < 125)
1068 : 0 : print2("You are not yet sufficiently Lawful to advance.");
1069 : : else {
1070 : 0 : Player.rank[ORDER] = CHEVALIER;
1071 : 0 : print1("You are made a Chevalier of the Order!");
1072 : 0 : print2("You are given a Mace of Disruption!");
1073 : 0 : morewait();
1074 : 0 : clearmsg();
1075 : 0 : newitem = ((pob) checkmalloc(sizeof(objtype)));
1076 : 0 : *newitem = Objects[OB_MACE_DISRUPT]; /* mace of disruption */
1077 : 0 : newitem->known = 2;
1078 : 0 : gain_item(newitem);
1079 : : }
1080 : : }
1081 [ # # ]: 0 : else if (Player.rank[ORDER]==GALLANT) {
1082 [ # # ]: 0 : if (Player.guildxp[ORDER] < 400)
1083 : 0 : print2("You are not experienced enough to advance.");
1084 [ # # ]: 0 : else if (Player.alignment < 50)
1085 : 0 : print2("You are not Lawful enough to advance.");
1086 : : else {
1087 : 0 : print1("You are made a Guardian of the Order of Paladins!");
1088 : 0 : print2("You are given a Holy Hand Grenade (of Antioch).");
1089 : 0 : morewait();
1090 : 0 : print1("You hear a nasal monotone in the distance....");
1091 : 0 : print2("'...and the number of thy counting shall be 3...'");
1092 : 0 : morewait();
1093 : 0 : clearmsg();
1094 : 0 : Player.rank[ORDER] = GUARDIAN;
1095 : 0 : newitem = ((pob) checkmalloc(sizeof(objtype)));
1096 : 0 : *newitem = Objects[OB_ANTIOCH]; /* holy hand grenade. */
1097 : 0 : newitem->known = 2;
1098 : 0 : gain_item(newitem);
1099 : : }
1100 : : }
1101 : : }
1102 : 0 : showflags();
1103 : 0 : }
|