// TMW2 scripts. // Authors: // Jesusalva // Description: // Leader of the PRIEST class 003-0,58,30,0 script Priest Master NPC_PLAYER,{ /* if (!is_staff()) goto L_Close; */ if (!(MAGIC_SUBCLASS & CL_PRIEST)) goto L_SignUp; goto L_Member; // Sign Up L_SignUp: // Not allowed if subclass filled or not from main class if (total_subclass() >= max_subclass() || getskilllv(WIZARD_MAGE) < 2) goto L_Close; mesn; mesq l("Hey there! Do you want to join the Priest Class?"); mesc l("Warning: If you join a subclass, you can't leave it later!"), 1; mesc b(l("Warning: This class haven't been tested/balanced yet. Feedback is required!")), 1; next; if (askyesno() != ASK_YES) close; // TODO: Requeriment for signing up to a subclass? Or is the tier + skill quest hard enough? MAGIC_SUBCLASS=MAGIC_SUBCLASS|CL_PRIEST; mesn; mesq l("Welcome to the Priest guild!"); close; // Close L_Close: goodbye; closedialog; close; L_Missing: mesn; mesq l("Hey hey! You don't have that stuff, CAN'T YOU READ?!"); percentheal 0, -10; next; goto L_Member; // Membership area // Priest // AL_HOLYLIGHT (standard holy magic attack - 125% of MATK) // MG_SRECOVERY (small increase to SP Recovery while idle each 10 sec.) // ALL_RESURRECTION (Revive at 10% HP. May insta-kill undead. Max Level 3~4) // PR_ASPERSIO (Change anyone weapon to holy for 60s. Or 40 defense-disregard holy dmg to undead/evil) // TF_DETOXIFY (cancels poison. 40% MP.) L_Member: mesn; mesq l("Hey there! Do you want to learn new skills for a very small teaching fee?"); select rif(sk_intcost(AL_HOLYLIGHT) && !getskilllv(AL_HOLYLIGHT), l("Learn Holy Light")), rif(sk_intcost(TF_DETOXIFY) && !getskilllv(TF_DETOXIFY), l("Learn Detoxify")), rif(sk_intcost(ALL_RESURRECTION) && getskilllv(ALL_RESURRECTION) < (1+degree_subclass()/2), l("Learn Ressurection")), rif(sk_intcost(MG_SRECOVERY) && sk_canlvup(MG_SRECOVERY), l("Improve Mana Recovery")), rif(sk_intcost(PR_ASPERSIO) && sk_canlvup(PR_ASPERSIO), l("Improve Blessed Weapon")), rif(sk_intcost(AB_HIGHNESSHEAL) && sk_canlvup(AB_HIGHNESSHEAL), l("Improve Luma")), l("Leave Subclass"), l("Nothing at the moment."); mes ""; switch (@menu) { case 1: mesc l("[Holy Light]"); mesc l("The basic magic attack from a Priest. No effect against Holy Monsters."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(MoubooFigurine), (getskilllv(AL_HOLYLIGHT)+1)*3, getitemlink(MoubooFigurine)); mesc l("@@/@@ @@", countitem(GemPowder), (getskilllv(AL_HOLYLIGHT)+1)*1, getitemlink(GemPowder)); next; if (askyesno() == ASK_YES) { if ( countitem(MoubooFigurine) < (getskilllv(AL_HOLYLIGHT)+1)*3 || countitem(GemPowder) < (getskilllv(AL_HOLYLIGHT)+1)*1) goto L_Missing; delitem MoubooFigurine, (getskilllv(AL_HOLYLIGHT)+1)*3; delitem GemPowder, (getskilllv(AL_HOLYLIGHT)+1)*1; sk_lvup(AL_HOLYLIGHT); next; } break; case 2: mesc l("[Detoxify]"); mesc l("Cancels Poison. Antidotes are hard to come by, anyway."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Candy), (getskilllv(TF_DETOXIFY)+1)*70, getitemlink(Candy)); mesc l("@@/@@ @@", countitem(Root), (getskilllv(TF_DETOXIFY)+1)*10, getitemlink(Root)); mesc l("@@/@@ @@", countitem(Mashmallow), (getskilllv(TF_DETOXIFY)+1)*2, getitemlink(Mashmallow)); mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(TF_DETOXIFY)+1)*1, getitemlink(FluoPowder)); next; if (askyesno() == ASK_YES) { if ( countitem(Candy) < (getskilllv(TF_DETOXIFY)+1)*70 || countitem(Root) < (getskilllv(TF_DETOXIFY)+1)*10 || countitem(Mashmallow) < (getskilllv(TF_DETOXIFY)+1)*2 || countitem(FluoPowder) < (getskilllv(TF_DETOXIFY)+1)*1) goto L_Missing; delitem Candy, (getskilllv(TF_DETOXIFY)+1)*70; delitem Root, (getskilllv(TF_DETOXIFY)+1)*10; delitem Mashmallow, (getskilllv(TF_DETOXIFY)+1)*2; delitem FluoPowder, (getskilllv(TF_DETOXIFY)+1)*1; sk_lvup(TF_DETOXIFY); next; } break; case 3: mesc l("[Ressurection]"); mesc l("Raise fallen party members so they can keep fighting."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(ALL_RESURRECTION)+1)*60, getitemlink(Acorn)); mesc l("@@/@@ @@", countitem(Bread), (getskilllv(ALL_RESURRECTION)+1)*20, getitemlink(Bread)); mesc l("@@/@@ @@", countitem(SmallMushroom), (getskilllv(ALL_RESURRECTION)+1)*20, getitemlink(SmallMushroom)); mesc l("@@/@@ @@", countitem(PinkBlobime), (getskilllv(ALL_RESURRECTION)+1)*15, getitemlink(PinkBlobime)); mesc l("@@/@@ @@", countitem(Pearl), (getskilllv(ALL_RESURRECTION)+1)*2, getitemlink(Pearl)); next; if (askyesno() == ASK_YES) { if ( countitem(Acorn) < (getskilllv(ALL_RESURRECTION)+1)*60 || countitem(Bread) < (getskilllv(ALL_RESURRECTION)+1)*20 || countitem(SmallMushroom) < (getskilllv(ALL_RESURRECTION)+1)*15 || countitem(PinkBlobime) < (getskilllv(ALL_RESURRECTION)+1)*20 || countitem(Pearl) < (getskilllv(ALL_RESURRECTION)+1)*2) goto L_Missing; delitem Acorn, (getskilllv(ALL_RESURRECTION)+1)*60; delitem Bread, (getskilllv(ALL_RESURRECTION)+1)*20; delitem SmallMushroom, (getskilllv(ALL_RESURRECTION)+1)*20; delitem PinkBlobime, (getskilllv(ALL_RESURRECTION)+1)*15; delitem Pearl, (getskilllv(ALL_RESURRECTION)+1)*2; sk_lvup(ALL_RESURRECTION); next; } break; case 4: mesc l("[MP Regen]"); mesc l("Heals more mana while standing."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(MG_SRECOVERY)+1)*70, getitemlink(Acorn)); mesc l("@@/@@ @@", countitem(Root), (getskilllv(MG_SRECOVERY)+1)*10, getitemlink(Root)); mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(MG_SRECOVERY)+1)*2, getitemlink(FrozenYetiTear)); mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(MG_SRECOVERY)+1)*1, getitemlink(FluoPowder)); next; if (askyesno() == ASK_YES) { if ( countitem(Acorn) < (getskilllv(MG_SRECOVERY)+1)*70 || countitem(Root) < (getskilllv(MG_SRECOVERY)+1)*10 || countitem(FrozenYetiTear) < (getskilllv(MG_SRECOVERY)+1)*2 || countitem(FluoPowder) < (getskilllv(MG_SRECOVERY)+1)*1) goto L_Missing; delitem Acorn, (getskilllv(MG_SRECOVERY)+1)*70; delitem Root, (getskilllv(MG_SRECOVERY)+1)*10; delitem FrozenYetiTear, (getskilllv(MG_SRECOVERY)+1)*2; delitem FluoPowder, (getskilllv(MG_SRECOVERY)+1)*1; sk_lvup(MG_SRECOVERY); next; } break; case 5: mesc l("[Bless Weapon]"); mesc l("Changes anyone's weapon to Holy elemental. Causes small damage when used on offensive."); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Acorn), (getskilllv(PR_ASPERSIO)+1)*70, getitemlink(Acorn)); mesc l("@@/@@ @@", countitem(Root), (getskilllv(PR_ASPERSIO)+1)*10, getitemlink(Root)); mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(PR_ASPERSIO)+1)*2, getitemlink(FrozenYetiTear)); mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(PR_ASPERSIO)+1)*1, getitemlink(FluoPowder)); next; if (askyesno() == ASK_YES) { if ( countitem(Acorn) < (getskilllv(PR_ASPERSIO)+1)*70 || countitem(Root) < (getskilllv(PR_ASPERSIO)+1)*10 || countitem(FrozenYetiTear) < (getskilllv(PR_ASPERSIO)+1)*2 || countitem(FluoPowder) < (getskilllv(PR_ASPERSIO)+1)*1) goto L_Missing; delitem Acorn, (getskilllv(PR_ASPERSIO)+1)*70; delitem Root, (getskilllv(PR_ASPERSIO)+1)*10; delitem FrozenYetiTear, (getskilllv(PR_ASPERSIO)+1)*2; delitem FluoPowder, (getskilllv(PR_ASPERSIO)+1)*1; sk_lvup(PR_ASPERSIO); next; } break; case 6: mesc l("[Luma]"); mesc l("More powerful version of healing. Requires @@ each cast.", getitemlink(Lifestone)); mes ""; mesn; mesq l("This useful skill will only require:"); mesc l("@@/@@ @@", countitem(Lifestone), (getskilllv(AB_HIGHNESSHEAL)+1)*70, getitemlink(Lifestone)); mesc l("@@/@@ @@", countitem(Root), (getskilllv(AB_HIGHNESSHEAL)+1)*10, getitemlink(Root)); mesc l("@@/@@ @@", countitem(FrozenYetiTear),(getskilllv(AB_HIGHNESSHEAL)+1)*2, getitemlink(FrozenYetiTear)); mesc l("@@/@@ @@", countitem(FluoPowder), (getskilllv(AB_HIGHNESSHEAL)+1)*1, getitemlink(FluoPowder)); next; if (askyesno() == ASK_YES) { if ( countitem(Lifestone) < (getskilllv(AB_HIGHNESSHEAL)+1)*70 || countitem(Root) < (getskilllv(AB_HIGHNESSHEAL)+1)*10 || countitem(FrozenYetiTear) < (getskilllv(AB_HIGHNESSHEAL)+1)*2 || countitem(FluoPowder) < (getskilllv(AB_HIGHNESSHEAL)+1)*1) goto L_Missing; delitem Lifestone, (getskilllv(AB_HIGHNESSHEAL)+1)*70; delitem Root, (getskilllv(AB_HIGHNESSHEAL)+1)*10; delitem FrozenYetiTear, (getskilllv(AB_HIGHNESSHEAL)+1)*2; delitem FluoPowder, (getskilllv(AB_HIGHNESSHEAL)+1)*1; sk_lvup(AB_HIGHNESSHEAL); next; } break; case 7: // All skills related may include the basic class skills if they're related. mesc l("WARNING: If you leave the subclass, you'll lose all skills related to it!"), 1; mesc l("This cannot be undone. Are you sure?"), 1; mes ""; if (askyesno() == ASK_YES) { mes ""; if (validatepin()) { skill AL_HOLYLIGHT, 0, 0; skill TF_DETOXIFY, 0, 0; skill ALL_RESURRECTION, 0, 0; skill MG_SRECOVERY, 0, 0; skill PR_ASPERSIO, 0, 0; MAGIC_SUBCLASS=MAGIC_SUBCLASS^CL_PRIEST; mesc l("You abandoned the PRIEST class!"), 1; close; } else { mesc l("Failed to validate pin. Aborting."); next; } } else { mes ""; mesc l("Operation aborted. Phew!"); next; } break; default: goto L_Close; } goto L_Member; OnInit: .@npcId = getnpcid(.name$); //setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet); // TODO: wizard hat setunitdata(.@npcId, UDT_HEADMIDDLE, SorcererRobe); setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes); setunitdata(.@npcId, UDT_WEAPON, JeansChaps); setunitdata(.@npcId, UDT_HAIRSTYLE, 2); setunitdata(.@npcId, UDT_HAIRCOLOR, 4); .sex=G_MALE; .distance=5; end; }