// TMW2 scripts.
// Authors:
// Jesusalva
// Description:
// Questmaker Handbook 14.0 - Frostia's Bounty House
024-10,33,30,0 script Eldrin NPC_ELF,{
//.@q = getq(FrostiaQuest_Rydel);
if (BaseLevel < 30) {
mesc l("The elf seems busy. He ignores you.");
close;
}
.@d=gettimeparam(GETTIME_DAYOFMONTH);
mesn l("Eldrin, Taskmaster");
mesq l("Hello, and welcome to Frostia bounty hunter guild.");
next;
mesn l("Eldrin, Taskmaster");
mesq l("I have bounties for specific high level monsters as well for extermination. Do note mobs killed in Heroes Hold may not count.");
next;
mesn l("Eldrin, Taskmaster");
mesq l("Be careful that they may be anywhere in the world, and the same rules as Tulimshar Guard House apply! So, are you here to apply or to report back?");
mesc l("Protip: All quests expire at 00:00 server time, be sure to finish AND report back before that!");
next;
// Borrowed from Arkim Code
mesc l("Time remaining to report completion: ")+FuzzyTime($@ARKIM_TIMER+86400), 1;
select
l("I want a MODERATE (Lv 50~70) task!"),
l("I want a EXPERT (Lv 70~100) task!"),
l("I want a MASTER (Lv 100+) task!"),
l("I want a BOSS task!"),
l("It was nice seeing you.");
mes "";
switch (@menu) {
case 1:
.@q1=getq(General_MobHunting5);
.@q2=getq2(General_MobHunting5);
.@q3=getq3(General_MobHunting5);
.@q=General_MobHunting5;
.@lv=9;
goto L_QuestMaster;
case 2:
.@q1=getq(General_MobHunting6);
.@q2=getq2(General_MobHunting6);
.@q3=getq3(General_MobHunting6);
.@q=General_MobHunting6;
.@lv=15;
goto L_QuestMaster;
case 3:
.@q1=getq(General_MobHunting7);
.@q2=getq2(General_MobHunting7);
.@q3=getq3(General_MobHunting7);
.@q=General_MobHunting7;
.@lv=24;
goto L_QuestMaster;
case 4:
.@q1=getq(General_MobHunting8);
.@q2=getq2(General_MobHunting8);
.@q3=getq3(General_MobHunting8);
.@q=General_MobHunting8;
.@lv=50;
goto L_QuestMaster;
}
closeclientdialog;
goodbye();
close;
L_QuestMaster:
// It's a new day, so we must generate a new quest!
if (.@q1 != .@d) {
.@q1=.@d;
if (.@lv == 9) {
.@q2=any(EarthFairy, FireFairy, WaterFairy, WindFairy, PoisonFairy, BlackScorpion, MountainSnake, ForestMushroom, GoldenScorpion, Yeti, WickedMushroom, Archant, Scar, Crafty);
} else if (.@lv == 15) {
.@q2=any(Crafty, Forain, GreenDragon, Troll, Moonshroom, Terranite, JackO, BlackMamba, Centaur, GoboBear);
} else if (.@lv == 24) {
.@q2=any(TerraniteProtector, EliteDuck, Reaper, NightmareDragon, NightmareDragon, PinkieSuseran, PinkieMaximus);
} else if (.@lv == 50) {
.@q2=any(Tengu, Tipiu, EvilScythe, GiantCaveMaggot, SpiderQueen, TerraniteKing, PinkieEmperor, Yetifly, YetiKing);
} else {
Exception("Bad setting for GMH.LV: "+.@lv, RB_DEFAULT|RB_SPEECH|RB_ISFATAL);
}
setq .@q, .@q1, .@q2, 0;
}
// Maybe there is no monster to kill
if (!.@q2) {
mesn l("Eldrin, Taskmaster");
mesq l("You've already completed this quest today. Try again tomorrow.");
close;
}
// You only need to slay one boss
if (.@q3 && .@lv == 50)
.@q3 += 50;
// Maybe you finished the quest?
// Reuses everything from Kreist
if (.@q3 >= 50) {
mesn l("Eldrin, Taskmaster");
mesq l("Good job, you've killed the @@ @@ and reported back in time!", 50, getmonsterlink(.@q2));
next;
inventoryplace MercBoxA, 1;
if (MERCENARY_DAILYQUEST == 100) {
inventoryplace BountyHunterHelmet, 1;
getitem BountyHunterHelmet, 1;
}
mesn l("Eldrin, Taskmaster");
mesq l("It's not much of a reward, but doesn't it feels great to help others in need?! HAHAHA!");
.@overkill=.@q3-50;
Zeny+=.@lv*(42+MERCENARY_DAILYQUEST);
// Raise LV according to monster level
.@lv+=getmonsterinfo(.@q2, MOB_LV)+MERCENARY_DAILYQUEST*11/10;
getexp BaseLevel*.@lv, .@lv+.@overkill;
setq2 .@q, 0;
setq3 .@q, 0;
MERCENARY_DAILYQUEST+=1;
if (MERCENARY_DAILYQUEST % 5 == 0) {
getitem MercBoxA, 1;
}
close;
}
mesn l("Eldrin, Taskmaster");
if (.@lv != 50)
mesq l("So, please kill @@/@@ @@ for us and make the world a safer place!", .@q3, 50, getmonsterlink(.@q2));
else
mesq l("So, please kill a %s for us and make the world a safer place!", getmonsterlink(.@q2));
close;
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers);
setunitdata(.@npcId, UDT_HEADMIDDLE, Chainmail);
setunitdata(.@npcId, UDT_HEADTOP, VikingHelmet);
setunitdata(.@npcId, UDT_HAIRSTYLE, 7);
setunitdata(.@npcId, UDT_HAIRCOLOR, 11);
.sex = G_MALE;
.distance = 5;
end;
}