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