summaryrefslogblamecommitdiff
path: root/npc/018-5-3/shaabty.txt
blob: 3defb5de2a3ca4370123a5c6bcd9f148a607b3fa (plain) (tree)
1
2
3
4
5




                                    











                                                       
 
                                             

















                                                                                                
                                

                                                                                                         
                                
                                                                                                         


                                   
                                


                                                      

          
                
                                

                                                                                     
                                











                                                                 
                                        




                                                                                                                    
                                    










                                                                                 
                                    




                                                                                           
                                

                                                                                         
                                












                                                                                                   
                                    







                                                                                            
                                    









                                                                                                                              
                                    












                                                                                                                               
                               

        


                   

        
// TMW-2 Script.
// Author:
//    Jesusalva
// Description:
//    Leather Trousers quest (lv 48)
// Variable:
//    LilitQuest_Shaabty
//      0 - Not enough level
//      1 - Quest assigned
//      2 - Requested the material
//      3 - Craft is in progress
//      4 - Quest Complete
// Var2:
//      Controls how many snakes you killed down there.
//      It counts regardless of quest state.
// Var3:
//      Timer for state 3

018-5-3,29,38,0	script	Shaabty	NPC_FAIRY_A,{
    function LTask;
    .@q=getq(LilitQuest_Shaabty);
    switch (.@q) {
        case 0:
            goto L_Start; break;
        case 1:
            goto L_Return; break;
        case 2:
            goto L_Craft; break;
        case 3:
            goto L_Craft2; break;
        case 4:
            goto L_Start; break;
    }
    Exception(l("Invalid quest state: @@", .@q), RB_DEFAULT|RB_SPEECH|RB_ISFATAL^RB_DISPBOTTOM);
    close;

L_Start:
    mesn l("Shaabty the Fairy");
    mesq l("I always wanted to live in this town. I'm glad I managed to move from LoF Village to here.");
    next;
    mesn l("Shaabty the Fairy");
    mesq l("A shame there are snakes below the ground. I really, really hate snakes, like every fairy.");
    if (BaseLevel < 45 || .@q >= 3)
        close;
    next;
    mesn l("Shaabty the Fairy");
    mesq l("Maybe you could do me a favour, though?");
    setq1 LilitQuest_Shaabty, 1;
    LTask();
    close;

function LTask {
    mesn l("Shaabty the Fairy");
    mesq l("I would love to see the skin of two @@.", getmonsterlink(MountainSnake));
    next;
    mesn l("Shaabty the Fairy");
    mesq l("They live below this town. Can you do this for me?");
    next;
    return;
}

L_Return:
    LTask();
    .@q2=getq2(LilitQuest_Shaabty);
    // 0.98% DR (skin) - Reference is 0.32%
    // 2 snake skins should take ~200 kills
    if (countitem(MountainSnakeSkin) >= 2) {
        if (.@q2 < 150) {
            mesn l("Shaabty the Fairy");
            mesq l("I see two snake skins, but you didn't killed them down there. That defeats the whole purpose.");
        } else {
            goto L_Finish;
        }
    } else {
        mesn l("Shaabty the Fairy");
        mesq l("That's not a couple of skins.");
    }
    close;

L_Finish:
    mesc l("Deliver @@ @@ to @@?", 2, getitemlink(MountainSnakeSkin), .name$), 1;
    next;
    if (askyesno() == ASK_YES) {
        delitem MountainSnakeSkin, 2;
        setq1 LilitQuest_Shaabty, 2;
        getexp 20000, 200;
        mesn l("Shaabty the Fairy");
        mesq l("Thanks. Please come back later, there is something I want to do for you.");
    }
    close;

L_Craft:
    mesn l("Shaabty the Fairy");
    mesq l("So, I was thinking in crafting a @@ for you.", getitemlink(LeatherTrousers));
    next;
    mesn l("Shaabty the Fairy");
    mes l("For that, I'll need @@/@@ @@.", countitem(LeatherPatch), 10, getitemlink(LeatherPatch));
    mes l("And a commission of @@/@@ GP.", format_number(Zeny), format_number(8000));
    if (countitem(LeatherPatch) < 10 ||
        Zeny < 8000)
        close;
    next;
    mesc l("Pay for her handi-work?");
    if (askyesno() == ASK_YES) {
        delitem LeatherPatch, 10;
        Zeny-=8000;
        setq1 LilitQuest_Shaabty, 3;
        //setq3 LilitQuest_Shaabty, gettimeparam(GETTIME_HOUR)+2;
        setq3 LilitQuest_Shaabty, gettimetick(2)+7200;
        mesn l("Shaabty the Fairy");
        mesq l("Thanks! Please come back in two hours, then I'll have the trousers ready.");
    }
    close;

// Each time you bother her, she loses the line;
L_Craft2:
    .@q3=getq3(LilitQuest_Shaabty);
    if (gettimetick(2) < .@q3) {
        mesn l("Shaabty the Fairy");
        .@mg$=any(l("stop interrupting me while I make your trousers."), l("stop making me lose the line by talking to me."));
        mesq l("Please be patient and "+.@mg$);
        mesc l("Remaining time: @@", FuzzyTime(.@q3));
        setq3 LilitQuest_Shaabty, .@q3+rand(1,3);
    } else {
        inventoryplace LeatherTrousers, 1;
        getitem LeatherTrousers, 1;
        getexp 0, 1000;
        setq3 LilitQuest_Shaabty, 0;
        setq1 LilitQuest_Shaabty, 4;
        mesn l("Shaabty the Fairy");
        mesq l("Here you go. Please enjoy and thanks for making this town better to live. Maybe one day the snakes leave ^.^");
    }
    close;

/////////////////////////////////////////////////////////
OnKillSnake:
    .@q1=getq(LilitQuest_Shaabty);
    .@q2=getq2(LilitQuest_Shaabty);
    setq2 LilitQuest_Shaabty, .@q2+1;
    if (.@q1 == 1) {
        if (! (.@q2+1) % 10)
            dispbottom l("@@ @@ killed.", .@q2+1, getmonsterlink(MountainSnake));
    }
    fix_mobkill(MountainSnake);
    end;

OnInit:
    .sex = G_OTHER;
    .distance = 5;
    end;
}