summaryrefslogblamecommitdiff
path: root/npc/003-0/priest.txt
blob: 958c9d710419eaa45766a69ea797e6f023e4bffd (plain) (tree)






















                                                                            
                                                                                                






































                                                                                                                             
                                                                                           









                                                                                             

                                                                                                                          


                                        

                                                                                                  
 

                                                                            











                                                                             
                                                                                                             
                                                                                                            
                                                                                                                  



                                                                                                                  
                                                                                   
                                                                                   
                                                                                  

                                                                                                
                                                                       
                                                                       
                                                                      













                                                                                                                     
                                                                                                                     
                                                                                                                             

                                                                                                                            



                                                                                     

                                                                                     
                                                                                     
                                                                                                  

                                                                            
                                                                            
                                                                            

                                                                            






























































                                                                                                                       



























                                                                                                                          































                                                                                                   
                               











                                                                           
// 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;
}