// TMW-2 Script // Author: Jesusalva // Desc: Grand Hunter Quest Utils // MobID function script GHQ_GetQuestIDByMonsterID { switch (getarg(0)) { case Maggot: return 1; break; case Snake: return 2; break; case Scorpion: return 3; break; case ForestMushroom: return 4; break; case Pinkie: return 5; break; case Moggun: return 6; break; case Fluffy: return 7; break; default: debugmes "Invalid mob ID: " + getarg(0); dispbottom l("ERROR, Please report: GHQ GQID: Invalid ID: @@", getarg(0)); return 0; break; } } // QuestID (basically reverses the previous code) function script GHQ_GetMonsterIDByQuestID { switch (getarg(0)) { case 1: return Maggot; break; case 2: return Snake; break; case 3: return Scorpion; break; case 4: return ForestMushroom; break; case 5: return Pinkie; break; case 6: return Moggun; break; case 7: return Fluffy; break; default: debugmes "Invalid quest ID: " + getarg(0); dispbottom l("ERROR, Please report: GHQ GMID: Invalid ID: @@", getarg(0)); return 0; break; } } // MobID, Place, Prize function script GHQ_Assign { // Arguments .@mobId =getarg(0); .@loc$ =getarg(1); .@prize$=getarg(2); // Current Quest Status + vars .@id=GHQ_GetQuestIDByMonsterID(.@mobId); .@q=getq(General_Hunter); .@p=getq2(General_Hunter); next; //mesq l("Current Quest Progress: @@/10,000 kills", .@p); mesn; mes l("I represent the @@ Hunters. We hunt @@.", .@loc$, getmonsterlink(.@mobId)); mes l("The great prize is @@. It can be claimed with Aidan, on Tulimshar.", .@prize$); if (.@q == .@id) { .@m=GHQ_GetMonsterIDByQuestID(.@q); mes l("You are currently hunting @@/10000 @@. When done, remember to claim rewards with Aidan, on Tulimshar!", .@p, getmonsterlink(.@m)); next; closedialog; goodbye; } if (.@q) { .@m=GHQ_GetMonsterIDByQuestID(.@q); mes l("You are currently hunting @@/10000 @@. Do you want to switch?", .@p, getmonsterlink(.@m)); } select l("I'm not interested."), rif(GHMEMO[.@id] < 10000,l("I'll hunt them for you.")); switch (@menu) { case 2: GHMEMO[getq(General_Hunter)]=getq2(General_Hunter); setq(General_Hunter, .@id, GHMEMO[.@id]); mesn; mesq l("Good luck! Don't come back until you reach 10000 kills!"); break; } closedialog; goodbye; } // Handle rewards (must check beforehand) function script GHQ_GetRewardsOnCompletion { // Check if you can store a Strange Coin (you really should) // Another item too, which I'm sure you won't get it anywhere. inventoryplace StrangeCoin, 1, NPCEyes, 1; mes l("Current progress: @@/10000 @@", getq2(General_Hunter), getmonsterlink(GHQ_GetMonsterIDByQuestID(getq(General_Hunter)))); mes ""; GHMEMO[getq(General_Hunter)]=getq2(General_Hunter); switch (GHQ_GetMonsterIDByQuestID(getq(General_Hunter))) { case Maggot: setq General_Hunter, 0, 0; Zeny=Zeny+25000; inventoryplace MaggotCocoon, 1; makepet(Maggot); // Works the same, even if I'm using mob_db constant getexp 15750, 100; mesn; mesq l("Good job, here is 25,000 GP and 15,750 EXP."); mesq l("And your rare, a @@! Enjoy!", getitemlink(MaggotCocoon)); close; case Snake: setq General_Hunter, 0, 0; Zeny=Zeny+300000; getitem StrangeCoin, 80; getexp 15750, 100; mesn; mesq l("Good job, here is @@ GP and @@ @@!", format_number(300000), format_number(80), getitemlink(StrangeCoin)); mesc l("Gained @@ XP", "15750"); close; case Scorpion: setq General_Hunter, 0, 0; Zeny=Zeny+100000; getexp 15750, 100; mesn; mesq l("Good job, here is 100,000 GP!"); mesc l("Gained @@ XP", "15750"); close; case ForestMushroom: setq General_Hunter, 0, 0; Zeny=Zeny+175000; getitem StrangeCoin, 60; getexp 15750, 100; mesn; mesq l("Good job, here is @@ GP and @@ @@!", format_number(175000), format_number(60), getitemlink(StrangeCoin)); mesc l("Gained @@ XP", "15750"); close; case Pinkie: setq General_Hunter, 0, 0; getitem PinkHelmet, 1; getexp 15750, 100; mesn; mesq l("And your rare, a @@! Enjoy!", getitemlink(PinkHelmet)); mesc l("Gained @@ XP", "15750"); close; case Moggun: setq General_Hunter, 0, 0; Zeny=Zeny+150000; getitem StrangeCoin, 60; getexp 15750, 100; mesn; mesq l("Good job, here is @@ GP and @@ @@!", format_number(150000), format_number(60), getitemlink(StrangeCoin)); mesc l("Gained @@ XP", "15750"); close; case Fluffy: setq General_Hunter, 0, 0; Zeny=Zeny+125000; getitem StrangeCoin, 60; getexp 15750, 100; mesn; mesq l("Good job, here is @@ GP and @@ @@!", format_number(125000), format_number(60), getitemlink(StrangeCoin)); mesc l("Gained @@ XP", "15750"); close; } mesc l("ILLEGAL SCRIPT LOGIC REACHED, PLEASE REPORT. (GHQ_GROC)", 1); return; } function script mobhunter { if (getq(General_Hunter) == 0) return; .@ghd=getq(General_Hunter); if (killedrid == GHQ_GetMonsterIDByQuestID(.@ghd)) { setq2 General_Hunter, getq2(General_Hunter)+1; .@ghd=getq2(General_Hunter); if (! (.@ghd % 1000)) dispbottom l("Grand Hunter Quest: @@/10,000", format_number(.@ghd)); } return; }