void i_spells(pob o) { if (o->blessing > -1) Objects[o->id].known = 1; mprint("A scroll of spells."); morewait(); learnspell(o->blessing); }
void l_monastery(void) { char action; int done=FALSE,enrolled = FALSE; print1("Tholian Monastery of Rampart. Founded 12031, AOF."); print2("Welcome to our humble hovel."); if (nighttime()) print2("The monastery doors are sealed until dawn."); else { while (! done) { menuclear(); menuprint("Find your True Course:\n\n"); menuprint("a: Discover the Way.\n"); menuprint("b: Meditate on the Path.\n"); menuprint("c: Meditate on Knowledge.\n"); menuprint("d: Take an extended Meditation.\n"); menuprint("ESCAPE: Re-enter the World.\n"); showmenu(); action = mgetc(); if (action == ESCAPE) { done = TRUE; calc_melee(); } else if (action == 'a') { if (Player.rank[MONKS] > 0) print2("You are already initiated, Brother."); else if (Player.con < 13) print2("Your body is too fragile to walk the Path, child."); else if (Player.pow < 13) print2("Your mind is too fragile to follow the Path, child."); else if (Player.rank[COLLEGE] > 0) print2("The Collegium has corruputed your spirit, child."); else if (Player.rank[CIRCLE] > 0) print2("The Circle has corruputed your spirit, child."); else { if (Player.pow > 17) { print2("Your spirit is strong. You may study the Path with us."); morewait(); enrolled=TRUE; } else { print1("A substantial cash sacrifice will cleanse your spirit.. "); print2("Donate your worldly goods? [yn] "); if (ynq1() =='y') { if (Player.cash < 1000) { /* WDT HACK! I'd rather the monks have some other * criteria for joining. */ print2("You have not much to give."); } else { Player.cash = 0; enrolled = TRUE; dataprint(); } } } if (enrolled) { print1("Grandmaster "); nprint1(Grandmaster); nprint1(" welcomes you to the Brotherhood."); print2("You are now a Tholian Monk trainee!"); morewait(); print2("You may study the Way with us."); Studiesleft = 1; Player.rank[MONKS] = MONK_TRAINEE; Player.guildxp[MONKS] = 1; Player.maxpow += 1; Player.pow += 1; } } } else if (action == 'b') { if (Player.rank[MONKS] == 0) print2("You are not yet initiated, child."); else if (Player.rank[MONKS]==MONK_GRANDMASTER) print2("Your advancement lies within, Grandmaster."); else if (Player.rank[MONKS]==MONK_MASTER_TEARS) { if (Player.level <= Grandmasterlevel) print2("Seek more experience, Master."); else if ((Player.rank[MONKS]==MONK_MASTER_TEARS) && (Player.level > Grandmasterlevel) && find_and_remove_item(CORPSEID,EATER)) { print1("You brought back the heart of the Eater of Magic!"); morewait(); print1("The Heart is sent to the placed in the kitchen cauldron."); print2("The Grandmaster steps down. You are the new Grandmaster."); morewait(); clearmsg(); strcpy(Grandmaster,Player.name); Grandmasterlevel = Player.level; Player.rank[MONKS] = MONK_GRANDMASTER; Player.maxhp += (Player.maxpow * 3); Player.maxiq += 5; Player.iq+= 5; Player.maxpow += 3; Player.pow += 3; Player.maxstr += 3; Player.str += 3; morewait(); Grandmasterbehavior = fixnpc(4); save_hiscore_npc(16); } else print2("You must return with the heart of the Eater of Magic!"); } else if (Player.rank[MONKS]==MONK_MASTER_PAINS) { if (Player.guildxp[MONKS] < 40000) print2("Seek more experience, Master."); else { print1("You have travelled far, Master."); print2("You are now Master of Tears."); Studiesleft += 6; morewait(); print1("To become Grandmaster, you must return with the"); print2("heart of the Eater of Magic"); morewait(); clearmsg(); print1("The Eater may be found on a desert isle somewhere."); Spells[S_REGENERATE].known = TRUE; Player.rank[MONKS] = MONK_MASTER_TEARS; Player.maxhp += (Player.maxpow * 2); Player.maxpow += 2; Player.pow += 2; Player.maxstr += 2; Player.str += 2; Player.maxagi += 2; Player.agi += 2; } } else if (Player.rank[MONKS]==MONK_MASTER_SIGHS) { if (Player.guildxp[MONKS] < 15000) print2("Seek more experience, Master."); else { print1("The Path is long, Master."); print2("You are now Master of Pain."); morewait(); print1("You feel enlightened."); morewait(); clearmsg(); Studiesleft +=4; Spells[S_RITUAL].known = TRUE; Spells[S_RESTORE].known = TRUE; Player.status[ILLUMINATION] = 1500; /* enlightened */ Player.rank[MONKS] = MONK_MASTER_PAINS; Player.maxhp += Player.maxpow; Player.maxcon += 1; Player.con += 1; Player.maxdex += 2; Player.dex += 2; } } else if (Player.rank[MONKS]==MONK_MASTER) { if (Player.guildxp[MONKS] < 9000) print2("Seek more experience, Master."); else { print1("Drink, weary Master."); print2("You are now Master of Sighs."); morewait(); clearmsg(); Studiesleft +=2; Spells[S_HASTE].known = TRUE; Player.rank[MONKS] = MONK_MASTER_SIGHS; Player.maxhp += Player.maxpow; Player.maxcon += 1; Player.con += 1; Player.maxiq += 2; Player.iq += 2; } } else if (Player.rank[MONKS]==MONK_MONK) { if (Player.guildxp[MONKS] < 3000) print2("Seek more experience, Brother."); else { print1("A thousand steps on the path, Brother."); print2("You are now a Master."); morewait(); clearmsg(); Studiesleft +=2; Spells[S_HEAL].known = TRUE; Player.rank[MONKS] = MONK_MASTER; Player.maxhp += Player.maxpow; Player.maxcon += 1; Player.con += 1; Player.maxpow += 2; Player.pow += 5; /* [sic] */ } } else if (Player.rank[MONKS]==MONK_TRAINEE) { if (Player.guildxp[MONKS] < 1500) print2("Seek more experience, Brother."); else { print1("You have sought wisdom, Brother."); print2("You are now a Tholian Monk."); morewait(); clearmsg(); Studiesleft +=2; Spells[S_CURE].known = TRUE; Player.rank[MONKS] = MONK_MONK; Player.maxhp += Player.maxpow; Player.maxcon += 1; Player.con += 1; Player.maxpow += 1; Player.pow += 1; } } } else if (action == 'c') { clearmsg(); if (Studiesleft > 0) { print1("Studies permitted: "); mnumprint(Studiesleft); nprint1(" Studies."); morewait(); } if (Studiesleft < 1) { print1("Sacrifice clears a cluttered heart. "); nprint1("Donate your worldly cash? [yn] "); if (ynq1()=='y') { if (Player.cash < 2000) { if ( Player.rank[MONKS] >= MONK_GRANDMASTER ) print2("You have not much to give, Grandmaster."); else if ( Player.rank[MONKS] >= MONK_MASTER ) print2("You have not much to give, Master."); else print2("You have not much to give, Brother."); } else { Player.cash = 0; dataprint(); Studiesleft = 1; } } } if (Studiesleft > 0) { learnspell(0); Studiesleft--; } } else if (action == 'd') { if (Player.rank[MONKS] < MONK_MASTER) { clearmsg(); print1("Only Masters can achieve extended meditation, child."); print2(" "); } else { int i = 0; clearmsg(); print1("Seeking inner truth..."); morewait(); clearmsg(); morewait(); toggle_item_use(TRUE); Player.cash = 0; Player.hp = Player.maxhp; Player.str = Player.maxstr; Player.agi = Player.maxagi; Player.con = Player.maxcon; Player.dex = Player.maxdex; Player.iq = Player.maxiq; Player.pow = Player.maxpow; for (i=0;i<NUMSTATI;i++) if (Player.status[i]<1000) Player.status[i]=0; toggle_item_use(FALSE); Player.food = 43; print2("Your body and mind are whole."); if (random_range(2) == 1) { morewait(); print1("Extra whole!"); Player.maxhp += 1; } } Time += 60*24*7; Date += 7; moon_check(); timeprint(); } } } xredraw(); }
void l_college(void) { char action; int done=FALSE,enrolled = FALSE; print1("The Collegium Magii. Founded 16937, AOF."); if (nighttime()) print2("The Registration desk is closed at night...."); else { while (! done) { if ((Player.rank[COLLEGE]==MAGE) && (Player.level > Archmagelevel) && find_and_remove_item(CORPSEID,EATER)) { print1("You brought back the heart of the Eater of Magic!"); morewait(); print1("The Heart is sent to the labs for analysis."); print2("The Board of Trustees appoints you Archmage!"); morewait(); clearmsg(); strcpy(Archmage,Player.name); Archmagelevel = Player.level; Player.rank[COLLEGE] = ARCHMAGE; Player.maxiq += 5; Player.iq += 5; Player.maxpow += 5; Player.pow += 5; morewait(); Archmagebehavior = fixnpc(4); save_hiscore_npc(9); } menuclear(); menuprint("May we help you?\n\n"); menuprint("a: Enroll in the College.\n"); menuprint("b: Raise your College rank.\n"); menuprint("c: Do spell research.\n"); menuprint("ESCAPE: Leave these hallowed halls.\n"); showmenu(); action = mgetc(); if (action == ESCAPE) done = TRUE; else if (action == 'a') { if (Player.rank[COLLEGE] > 0) print2("You are already enrolled!"); else if (Player.iq < 13) print2("Your low IQ renders you incapable of being educated."); else if (Player.rank[CIRCLE] > 0) print2("Sorcery and our Magic are rather incompatible, no?"); #ifdef INCLUDE_MONKS else if (Player.rank[MONKS] > 0) print2("Meditation will not leave you enough time for studies."); #endif else { if (Player.iq > 17) { print2("You are given a scholarship!"); morewait(); enrolled=TRUE; } else { print1("Tuition is 1000Au. "); nprint1("Pay it? [yn] "); if (ynq1() =='y') { if (Player.cash < 1000) print2("You don't have the funds!"); else { Player.cash -= 1000; enrolled = TRUE; dataprint(); } } } if (enrolled) { print1("Archmage "); nprint1(Archmage); nprint1(" greets you and congratulates you on your acceptance."); print2("You are now enrolled in the Collegium Magii!"); morewait(); print1("You are now a Novice."); print2("You may research 1 spell, for your intro class."); Spellsleft = 1; Player.rank[COLLEGE] = INITIATE; Player.guildxp[COLLEGE] = 1; Player.maxiq += 1; Player.iq += 1; Player.maxpow += 1; Player.pow += 1; } } } else if (action == 'b') { if (Player.rank[COLLEGE] == 0) print2("You have not even been initiated, yet!"); else if (Player.rank[COLLEGE]==ARCHMAGE) print2("You are at the pinnacle of mastery in the Collegium."); else if (Player.rank[COLLEGE]==MAGE) { if (Player.level <= Archmagelevel) print2("You are not experienced enough to advance."); else print2("You must return with the heart of the Eater of Magic!"); } else if (Player.rank[COLLEGE]==PRECEPTOR) { if (Player.guildxp[COLLEGE] < 4000) print2("You are not experienced enough to advance."); else { print1("You are now a Mage of the Collegium Magii!"); print2("You may research 6 spells for postdoctoral research."); Spellsleft += 6; morewait(); print1("To become Archmage, you must return with the"); print2("heart of the Eater of Magic"); morewait(); clearmsg(); print1("The Eater may be found on a desert isle somewhere."); Player.rank[COLLEGE] = MAGE; Player.maxiq += 2; Player.iq += 2; Player.maxpow += 2; Player.pow += 2; } } else if (Player.rank[COLLEGE]==STUDENT) { if (Player.guildxp[COLLEGE] < 1500) print2("You are not experienced enough to advance."); else { print1("You are now a Preceptor of the Collegium Magii!"); print2("You are taught the basics of ritual magic."); morewait(); clearmsg(); print1("Your position allows you to research 4 spells."); Spellsleft +=4; Spells[S_RITUAL].known = TRUE; Player.rank[COLLEGE] = PRECEPTOR; Player.maxiq += 1; Player.iq += 1; Player.maxpow += 1; Player.pow += 1; } } else if (Player.rank[COLLEGE]==NOVICE) { if (Player.guildxp[COLLEGE] < 400) print2("You are not experienced enough to advance."); else { print1("You are now a Student at the Collegium Magii!"); print2("You are taught the spell of identification."); morewait(); clearmsg(); print1("Thesis research credit is 2 spells."); Spellsleft+=2; Spells[S_IDENTIFY].known = TRUE; Player.rank[COLLEGE] = STUDENT; Player.maxiq += 1; Player.iq += 1; Player.maxpow += 1; Player.pow += 1; } } } else if (action == 'c') { clearmsg(); if (Spellsleft > 0) { print1("Research permitted: "); mnumprint(Spellsleft); nprint1(" Spells."); morewait(); } if (Spellsleft < 1) { print1("Extracurricular Lab fee: 2000 Au. "); nprint1("Pay it? [yn] "); if (ynq1()=='y') { if (Player.cash < 2000) print1("Try again when you have the cash."); else { Player.cash -= 2000; dataprint(); Spellsleft = 1; } } } if (Spellsleft > 0) { learnspell(0); Spellsleft--; } } } } xredraw(); }