/* Recreates the current level */ void flux(int blessing) { mprint("The universe warps around you!"); if (Current_Environment == E_CITY) { mprint("Sensing dangerous high order magic, the Collegium Magii"); mprint("and the Circle of Sorcerors join forces to negate the spell."); mprint("You are zapped by an antimagic ray!!!"); dispel(-1); mprint("The universe unwarps itself...."); } else if (Current_Environment != Current_Dungeon) mprint("Odd.... No effect!"); else { mprint("You stagger as the very nature of reality warps!"); erase_level(); Level->generated = FALSE; mprint("The fabric of spacetime reknits...."); change_level(Level->depth-1,Level->depth,TRUE); } }
void s_dispel(void) { dispel((Player.level+Player.maxpow)/10); }
/* Prayer occurs at altars, hence the name of the function */ void l_altar() { int i; int deity; char response; if(Current_Environment == E_COUNTRYSIDE) { deity = DRUID; } else { deity = Level->site[Player.x][Player.y].aux; } switch(deity) { case ODIN: print1("This granite altar is graven with a gallows."); break; case SET: print1("This sandstone altar has a black hand drawn on it."); break; case HECATE: print1("This silver altar is inlaid with a black cresent moon."); break; case ATHENA: print1("This golden altar is inscribed with an owl."); break; case DESTINY: print1("This crystal altar is in the form of an omega."); break; case DRUID: print1("This oaken altar is ornately engraved with leaves."); break; default: print1("This rude altar has no markings."); break; } print2("Worship at this altar? [yn] "); if(ynq2() == 'y') { if(Player.rank[PRIESTHOOD] == 0) { increase_priest_rank(deity); } else if(!check_sacrilege(deity)) { if(Blessing) { print1("You have a sense of immanence."); } print2("Request a Blessing, Sacrifice an item, or just Pray [b,s,p] "); response = mcigetc(); while((response != 'b') && (response != 's') && (response != 'p') && (response != ESCAPE)) { response = mcigetc(); } if(response == 'b') { print1("You beg a heavenly benefice."); print2("You hear a gong resonating throughout eternity..."); morewait(); if(Blessing) { print1("A shaft of lecent radiance lances dwon from the heavens!"); print2("You feel uplifted..."); morewait(); gain_experience(Player.rank[PRIESTHOOD] * Player.rank[PRIESTHOOD] * 50); cleanse(1); heal(10); bless(1); Blessing = FALSE; increase_priest_rank(deity); } else { print1("Your ardent plea is ignored."); print2("You feel ashamed."); Player.xp -= (Player.xp / 4); } calc_melee(); } else if(response == 's') { print1("Which item to Sacrifice?"); i = getitem('\0'); if(i == ABORT) { i = 0; } if(Player.possessions[i] == NULL) { print1("You have insulted your deity!"); print2("Not a good idea, as it turns out..."); dispel(-1); p_damage(Player.hp - 1, UNSTOPPABLE, "a god's pique"); } else if(true_item_value(Player.possessions[i]) > (Player.rank[PRIESTHOOD] * Player.rank[PRIESTHOOD] * Player.rank[PRIESTHOOD] * 50)) { print1("With a burst of blue flame, your offering vanishes!"); dispose_lost_objects(1, Player.possessions[i]); print2("A violet nimbus settles around your head and slowly fades."); morewait(); Blessing = TRUE; } else { print1("A darkling glow envelopes your offering!"); print2("The glow slowly fades..."); morewait(); setgamestatus(SUPPRESS_PRINTING); if(Player.possessions[i]->used) { Player.possessions[i]->used = FALSE; item_use(Player.possessions[i]); Player.possessions[i]->blessing = -1 - abs(Player.possessions[i]->blessing); Player.possessions[i]->used = TRUE; item_use(Player.possessions[i]); } else { Player.possessions[i]->blessing = -1 - abs(Player.possessions[i]->blessing); } resetgamestatus(SUPPRESS_PRINTING); } } else if(response == 'p') { if(deity != Player.patron) { print1("Nothing seems to happen."); } else { increase_priest_rank(deity); } } } } }
void l_throne(void) { pob o; int i; print1("You have come upon a huge ornately appointed throne!"); print2("Sit in it? [yn] "); if (ynq1()=='y') { if (! find_item(&o,OB_SCEPTRE,-1)) { print1("The throne emits an eerie violet-black radiance."); print2("You find, to your horror, that you cannot get up!"); print3("You feel an abstract sucking sensation..."); for(i=0;i<NUMSPELLS;i++) Spells[i].known = FALSE; Player.pow = 3; Player.mana = 0; Player.hp = 1; dispel(-1); morewait();clearmsg(); print1("The radiance finally ceases. You can get up now."); } else { if (HiMagicUse == Date) print3("You hear the sound of a magic kazoo played by an asthmatic."); else { HiMagicUse = Date; print1("Following some strange impulse, you raise the Sceptre...."); print2("You hear a magical fanfare, repeated three times."); switch(HiMagic++) { case 0: print3("Strength."); Player.str+=5; Player.maxstr+=5; break; case 1: print3("Constitution."); Player.con+=5; Player.maxcon+=5; break; case 2: print3("Dexterity."); Player.dex+=5; Player.maxdex+=5; break; case 3: print3("Agility."); Player.agi+=5; Player.maxagi+=5; break; case 4: print3("Intelligence."); Player.iq+=5; Player.maxiq+=5; break; case 5: print3("Power."); Player.pow+=5; Player.maxpow+=5; break; default: if (Spells[S_WISH].known) { print1("A mysterious voice mutters peevishly...."); print2("So what do you want now? A medal?"); } else { print1("Mystic runes appear in the air before you:"); print2("They appear to describe some high-powered spell."); morewait(); print1("You hear a distant voice...."); print2("'You may now tread the path of High Magic.'"); Spells[S_WISH].known = TRUE; } break; case 17: print1("Weird flickering lights play over the throne."); print2("You hear a strange droning sound, as of a magical"); morewait(); print1("artifact stressed by excessive use...."); print2("With an odd tinkling sound the throne shatters!"); Level->site[Player.x][Player.y].locchar = RUBBLE; Level->site[Player.x][Player.y].p_locf = L_RUBBLE; lset(Player.x, Player.y, CHANGED); if (find_and_remove_item(OB_SCEPTRE,-1)) { morewait(); print1("Your sceptre reverberates with the noise, and"); print2("it too explodes in a spray of shards."); } break; } calc_melee(); dataprint(); } } } }