summaryrefslogblamecommitdiff
path: root/npc/015-3/arkim.txt
blob: 32a28b93d008cde6abf904850a2ea564834325e6 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                                                     


                        
                             





                                                           


                                                                                                                  

                       
                                
                                      
                                                   
     
 
                          
                                     






                                                                
          
                                                               
                                                              

                                                           





                                                             
                                                 
                  
               
                                                
                  
               





                                                             

                                       
                  
               


                            


                

                                                      

                                                                                                       

                               







                                                                                                      
                                                   
                                                   
                                                        




                                                          





                            

                                   




















                                                                                                   



                                                                         

                                                                                                          

                                                                                   

                                                                                   
                    
                                                                                                    


                     
              
           


                                                                              
                                                                             





                    
         









                                                                                             


                           





                                          
                                          


                               












                                                                         































































                                                                                                                                                              


                






                                                    

         
                                                    
                                 


        
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Heremit
// Variables:
//    $ARKIM_ST
//      How many Bat Teeth/Wings were given
//    q1
//      Controls your own progress helping Arkim - Unused, might give place to some real quest later.
//    q2
//      Controls your own progress helping Arkim - Items today
//    q3
//      Controls your own progress helping Arkim - Your timer

015-3,170,169,0	script	Arkim	NPC_TERRY,{
    function pmap_intro;
    function pmap_wrong;
    function pmap_right;
    function handle_donation;
    mesn;
    mesq lg("Hello, young girl...", "Hello, young boy...");
    next;

L_Loop:
    .@q1=getq(HurnscaldQuest_Arkim);
    .@q3=getq3(HurnscaldQuest_Arkim);
    mesn;
    mesq l("I am doing a great research with Bats, and thus far I collected @@ Bat Wings and Teeths.", $ARKIM_ST);
    next;
    // It was yesterday
    if (.@q3 < $@ARKIM_QTIMER) {
        setq2 HurnscaldQuest_Arkim, 0;
        setq3 HurnscaldQuest_Arkim, $@ARKIM_QTIMER;
    }

    // Daily limit reached
    .@q2=getq2(HurnscaldQuest_Arkim);
    .@donations_limit = (BaseLevel-17)/3 - .@q2;
    .@teeth_limit = min(countitem(BatTeeth), .@donations_limit);
    .@wings_limit = min(countitem(BatWing),  .@donations_limit);

    if (.@donations_limit <= 0)
        goto L_Timer;

    select
        rif(countitem(BatTeeth) >= 1, l("Donate a Bat Teeth")),
        rif(countitem(BatWing)  >= 1, l("Donate a Bat Wing")),
        rif(.@teeth_limit >= 2, l("Donate all Bat Teeth")),
        rif(.@wings_limit >= 2, l("Donate all Bat Wings")),
        l("I better leave this crazy man to his ordeals..."),
        l("Had you any breakthrough?");
    mes "";

    switch (@menu) {
        case 1:
            handle_donation(BatTeeth, 1, 70, 36);
            break;
        case 2:
            handle_donation(BatWing, 1, 50, 25);
            break;
        case 3:
            handle_donation(BatTeeth, .@teeth_limit, 70, 36);
            break;
        case 4:
            handle_donation(BatWing, .@wings_limit, 50, 25);
            break;
        case 5:
            goto L_Assign;
            close; // Will never reach.
            break;
        case 6:
            goto L_Research;
            break;
    }
    goto L_Loop;

L_Timer:
    if (BaseLevel < 20)
        mesc l("You need at least level 20 to help.");
    mesn;
    mesq l("You've helped me plenty. Please come back in @@", FuzzyTime($@ARKIM_TIMER+(60*60*24),2,2));
    goto L_Assign;
    close; // Will never reach.

// TODO
L_Research:
    mesn;
    mesq l("Let me see... The more Wings and Teethes I collect, the more my research shall advance.");
    next;
    select
        l("Thanks."),
        rif($ARKIM_ST >= 1400, l("Cursed Arrows")),
        rif($ARKIM_ST >= 2800, l("Poison Arrows")),
        rif($ARKIM_ST >= 1200, l("Piberries Infusion")),
        rif($ARKIM_ST >= 2600, l("Fate's Potion")),
        rif($ARKIM_ST >= 4000, l("Clotho Liquor")),
        rif($ARKIM_ST >= 4700, l("Lachesis Brew")),
        rif($ARKIM_ST >= 6600, l("Atropos Mixture")),
        rif($ARKIM_ST >= 7500, l("Dark Desert Mushroom"));
    mes "";
    mesn;

    switch (@menu) {
    case 1:
        mesq l("Good bye!");
        goto L_Assign;
        close; // Will never reach.
        break;
    case 2:
        mesq l("The @@ are specially dangerous, and archers love them.", getitemlink(CursedArrow));
        next;
        mesn;
        mesq l("These are being crafted by Alan.");
        break;
    case 3:
        mesq l("The @@ are specially dangerous, and archers love them.", getitemlink(PoisonArrow));
        next;
        mesn;
        mesq l("These are being crafted by Alan.");
        break;
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
        mesq l("The @@ is a powerful healing drink.", getitemlink(PiberriesInfusion-4+@menu));
        next;
        mesn;

        switch (@menu) {
            case 4:
               mesq l("@@ is developing these potions.", "Wyara"); break;
            case 5:
               mesq l("@@ is developing these potions.", "Fate, in Nivalis,"); break; // TODO: Missing NPC
            case 6:
               mesq l("@@ is developing these potions.", "Frostia Dwarves"); break;
            case 7:
               mesq l("@@ is developing these potions.", "Frostia Dwarves"); break;
            default:
               mesq l("@@ is developing these potions.", "Jesusalva"); // TODO: Lachesis and Atropos
               break;
        }

        break;
    case 9:
        mesq l("Ah! @@. A very rare drop!", getitemlink(DarkDesertMushrooom));
        next;
        mesn;
        mesq l("You can find it in the bandit market, but it is EXPENSIVE.");
        break;

    }
    next;
    goto L_Research;

L_Assign:
    // NOTE: Map will be destroyed after first time, MAKE SURE TO MEMORIZE.
    // Or you'll need to find ANOTHER copy, but this one won't be burned.
    if (getq(HurnscaldQuest_PirateCave) >= 2 && countitem(PirateTreasureMap)) {
        mesc l("Should we ask about the %s before leaving?", getitemlink(PirateTreasureMap));
        select
            l("Ask."),
            l("Don't ask.");
        mes "";
        if (@menu == 1) goto L_PirateMap;
    }
    GHQ_Assign(Bat, "Bat");
    end;

L_PirateMap:
    .@q = getq(HurnscaldQuest_PirateCave);
    if (.@q == 2) pmap_intro();
    else if (.@q == 3) pmap_intro();
    else if (.@q == 4) pmap_wrong();
    // IMPLICIT FALLTHROUGH
    .@q = getq(HurnscaldQuest_PirateCave);
    if (.@q == 5) pmap_right();
    close;

function handle_donation { // (partID, Amount, Zeny, bEXP)
    .@partID = getarg(0);
    .@amount = getarg(1);
    .@zeny = getarg(2);
    .@bEXP = getarg(3);

    delitem .@partID, .@amount;
    getexp (.@amount * .@bEXP), 0;
    Zeny += (.@amount * .@zeny);
    $ARKIM_ST += .@amount;
    setq2 HurnscaldQuest_Arkim, (getq2(HurnscaldQuest_Arkim) + .@amount);
}

function pmap_intro {
    mesn;
    mesq l("There's no one who knows Butterfly Caves better than me, child. These are MY caves, after all.");
    next;
    mesn;
    mesc l("%s makes a confused face.", .name$);
    mesq l("But your silly map must be wrong. These passages do not connect themselves like this, but this should not be an issue, as they're not relevant.");
    next;
    mesn;
    mesq l("To reach this place... You just need to follow the path after the waterfall. Come back to me after that.");
    compareandsetq HurnscaldQuest_PirateCave, 2, 3;
    close;
}

function pmap_wrong {
    mesn;
    mesq l("Welcome back, children. So, how was your treasure hunt? Did you manage to find the path?");
    next;
    mesn strcharinfo(0);
    select
        l("NO!"),
        l("Not at all!"),
        l("You barely know these caves."),
        l("You send me the wrong way.");
    mes "";
    mesn;
    mesq l("Calm down, don't get mad! I was wrong in trusting this map, it is definitely faulty. Lemme see it again...");
    if (!countitem(PirateTreasureMap)) close; // Last chance...
    next;
    mesn;
    mesc l("%s eyebrow furrows, as he brings the map closer to a torch.", .name$);
    mesq l("These paths are all wrong! What is the problem with this map?!");
    next;
    mesc l("The map starts getting darker with the heat of the flame, and curiously, new shapes starts to form...");
    next;
    mesn;
    mesq l("Aha! So that's what it was! The map was hiding its secrets in drawings made with acid. An old technique... But a very useful one.");
    next;
    delitem PirateTreasureMap, 1;
    setq HurnscaldQuest_PirateCave, 5;
    getexp 0, 600;
    mesc l("Suddenly, the map %s!", col(l("burst up in flames"), 1));
    mesc l("Seems like Arkim held it too close to the flame...");
    next;
    mesn;
    mes "\""+l("I have some good and some bad news for you.");
    mes l("The good one, is that now I know the right path.");
    mes l("The bad one, is that you'll have to guide yourself without the map.")+"\"";
    next;
    return;
}

function pmap_right {
    mes ".:: " + l("Direction for Pirate Caves") + " ::.";
    mes "1. "+l("Go through the waterfall path.");
    mes "2. "+l("Use the abandoned passage to the north... Usually, no one uses it.");
    mes "3. "+l("After that, follow the path until you reach a great chamber...");
    mes "4. "+l("Then take the middle entrance.");
    next;
    mesn;
    mesq l("I wish you good luck. I remember these caves... They're dangerous. Make sure to be prepared before venturing further.");
    close;
}

OnInit:
    .sex=G_MALE;
    .distance=5;

    $@ARKIM_QTIMER=gettimeparam(GETTIME_DAYOFMONTH);
    $@ARKIM_TIMER=gettimetick(2);
    $@ARKIM_TIMER-=gettime(1);
    $@ARKIM_TIMER-=gettime(2)*60;
    $@ARKIM_TIMER-=gettime(3)*3600;
    end;

OnHour00:
    $@ARKIM_QTIMER=gettimeparam(GETTIME_DAYOFMONTH);
    $@ARKIM_TIMER=gettimetick(2);
    end;

}