- script #ValonConfig NPC32767,{ end; OnInit: setarray $@ValonMob, 1002,1050,1046,1003; setarray $@ValonMobName$, "Maggots","House Maggots","Tame Scorpions","Scorpion"; setarray $@ValonMobCnt, 10,5,3,1; end; } function script ValonCount { @valon_mob = 0; if (QL_VALON >= 2) @valon_mob = (QL_VALON - 2); @valon_count = ((STARTAREA & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT); return; } function script ResetValonCntMask { STARTAREA = (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT)); return; } function script AddValonCntMask { @valon_tmp = (@valon_count + 1); if (@valon_tmp > $@ValonMobCnt[@valon_mob]) @valon_tmp = $@ValonMobCnt[@valon_mob]; STARTAREA = (STARTAREA & ~(NIBBLE_2_MASK) | (@valon_tmp << NIBBLE_2_SHIFT)); @valon_tmp = 0; callfunc "ValonProgress"; return; } function script ValonProgress { callfunc "ValonCount"; if ((QL_VALON > 1) && (QL_VALON < 6)) message strcharinfo(0), $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob]; return; } 029-1,74,86,0 script ValonDebug NPC156,{ mes "[Valon Debug]"; mes "Reset?"; menu "Yes.", L_Reset, "No.", L_close; L_Reset: QL_VALON = 0; STARTAREA = (STARTAREA & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT)); mes "Reset!"; goto L_close; L_close: close; OnInit: if (!debug) disablenpc "ValonDebug"; end; } 029-1,72,86,0 script Valon NPC156,{ callfunc "PCtoNPCRange"; if(@npc_check) end; callfunc "ValonCount"; if (QL_VALON >= 6) goto L_QuestComplete; if (QL_VALON == 1) goto L_QuestAskAgain; if (@valon_count >= $@ValonMobCnt[@valon_mob]) goto L_NextMob; if ((QL_VALON >= 2) && (QL_VALON < 6)) goto L_QuestStarted; goto L_QuestAsk; L_QuestAskAgain: mes "[Valon]"; mes "\"Hello, Adventurer! Have you come back to help?\""; menu "Yes. I will help with the island beasts.", L_Accept, "Maybe some other time.", L_close; L_QuestAsk: mes "[Valon]"; mes "\"Hello!"; mes "You're looking for adventures, right?\""; mes "\"But you shouldn't underestimate this island, it is dangerous.\""; mes "\"It's crawling with scorpions, and the heat has overcome adventurers tougher than you are.\""; mes "\"I should know I guard this gate from all manner of island beasts.\""; mes "\"Maybe you would like help and earn your stripes?\""; mes "\"The Council of Wizard's does offer a reward for helping...\""; QL_VALON = 1; callfunc "ResetValonCntMask"; menu "YES!!! let me at them!", L_Accept, "Maybe some other time.", L_close; L_Accept: QL_VALON = 2; callfunc "ValonCount"; goto L_NewMob; L_NextMob: getexp 40, 0; mes "\"I see you killed all the " + $@ValonMobName$[@valon_mob] + " needed.\""; mes "\"The Wizard's thank thee as well.\""; Zeny = Zeny + 25; QL_VALON = (QL_VALON + 1); callfunc "ResetValonCntMask"; callfunc "ValonCount"; if (@valon_mob == getarraysize($@ValonMob)) goto L_QuestOver; goto L_NewMob; L_NewMob: mes "\"Let's see whats on the list. Ah ok, I need you to kill me " + $@ValonMobCnt[@valon_mob] + " " + $@ValonMobName$[@valon_mob] + "\""; mes "\"I'll be waiting here, come back and see after you've killed those mobs.\""; goto L_close; L_QuestStarted: mes "[Valon]"; mes "Hail adventurer! You are well on your way to mastering the beasts of the island.\""; mes "\"You need to kill " + $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob] + "\""; mes "\"Come back and see me when the job is done.\""; goto L_close; L_QuestOver: mes "[Valon]"; mes "\"Thanks once again for helping with the monsters in the island.\""; getexp 50, 0; QL_VALON = (QL_VALON + 1); goto L_close; L_QuestComplete: mes "[Valon]"; mes "\"Thanks once again for helping with the monsters in the island.\""; goto L_close; L_close: close; }