diff options
Diffstat (limited to 'npc')
-rw-r--r-- | npc/001-7/celestia_bossfight.txt | 1 | ||||
-rw-r--r-- | npc/003-10/kreist.txt | 37 | ||||
-rw-r--r-- | npc/010-1-1/boss.txt | 1 | ||||
-rw-r--r-- | npc/015-1/boss.txt | 1 | ||||
-rw-r--r-- | npc/015-6/boss.txt | 1 | ||||
-rw-r--r-- | npc/018-7-1/demure.txt | 1 | ||||
-rw-r--r-- | npc/024-10/eldrin.txt | 118 | ||||
-rw-r--r-- | npc/025-2-3/boss.txt | 1 | ||||
-rw-r--r-- | npc/031-0/boss.txt | 1 |
9 files changed, 160 insertions, 2 deletions
diff --git a/npc/001-7/celestia_bossfight.txt b/npc/001-7/celestia_bossfight.txt index 7fd8163e4..5140d0cde 100644 --- a/npc/001-7/celestia_bossfight.txt +++ b/npc/001-7/celestia_bossfight.txt @@ -149,6 +149,7 @@ OnVictory: npctalk l("Good job... You can keep the drops. Touch here to return home."); areatimer "001-7", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat"; donpcevent "Celestia::OnClock0002"; + fix_mobkill(YetiKing); end; // This allows the challenger to go back home without dying. diff --git a/npc/003-10/kreist.txt b/npc/003-10/kreist.txt index 4e1fcd68c..e3bd3ecdb 100644 --- a/npc/003-10/kreist.txt +++ b/npc/003-10/kreist.txt @@ -164,6 +164,43 @@ function script Guardhouse_RandQuestCheck { dispbottom l("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId)); } + + // Frostia - Medium Task + if (getq(General_MobHunting5) == .@d && + getq2(General_MobHunting5) == .@mobId) { + .@q3=getq3(General_MobHunting5)+1; + setq3 General_MobHunting5, .@q3; + if (!(.@q3 % 10)) + dispbottom l("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId)); + } + + // Frostia - Hard Task + if (getq(General_MobHunting6) == .@d && + getq2(General_MobHunting6) == .@mobId) { + .@q3=getq3(General_MobHunting6)+1; + setq3 General_MobHunting6, .@q3; + if (!(.@q3 % 10)) + dispbottom l("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId)); + } + + // Frostia - Nightmare Task + if (getq(General_MobHunting7) == .@d && + getq2(General_MobHunting7) == .@mobId) { + .@q3=getq3(General_MobHunting7)+1; + setq3 General_MobHunting7, .@q3; + if (!(.@q3 % 10)) + dispbottom l("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId)); + } + + // Frostia - Boss Task + if (getq(General_MobHunting8) == .@d && + getq2(General_MobHunting8) == .@mobId) { + if (!.@q3) + dispbottom l("%s slain!", getmonsterlink(.@mobId)); + .@q3=getq3(General_MobHunting8)+1; + setq3 General_MobHunting8, .@q3; + } + return; } diff --git a/npc/010-1-1/boss.txt b/npc/010-1-1/boss.txt index 3e9624b1f..3ee49d753 100644 --- a/npc/010-1-1/boss.txt +++ b/npc/010-1-1/boss.txt @@ -26,6 +26,7 @@ OnBossDeath: } else { mapannounce getmap(), "Boss deafeated by: " + strcharinfo(0), bc_all; } + fix_mobkill(GiantCaveMaggot); end; } diff --git a/npc/015-1/boss.txt b/npc/015-1/boss.txt index 5d1d77121..1591e05f5 100644 --- a/npc/015-1/boss.txt +++ b/npc/015-1/boss.txt @@ -22,6 +22,7 @@ OnBossDeath: } else { mapannounce getmap(), "Boss deafeated by: " + strcharinfo(0), bc_all; } + fix_mobkill(SpiderQueen); end; } diff --git a/npc/015-6/boss.txt b/npc/015-6/boss.txt index 8345351a4..d8434968c 100644 --- a/npc/015-6/boss.txt +++ b/npc/015-6/boss.txt @@ -25,6 +25,7 @@ OnBossDeath: } else { mapannounce "015-6", "Boss deafeated by: " + strcharinfo(0), bc_all; } + fix_mobkill(TerraniteKing); end; } diff --git a/npc/018-7-1/demure.txt b/npc/018-7-1/demure.txt index 112c820cf..70eedfd74 100644 --- a/npc/018-7-1/demure.txt +++ b/npc/018-7-1/demure.txt @@ -124,6 +124,7 @@ OnBeet: // Check victory conditions OnYeti: + fix_mobkill(Yetifly); OnDem2: if (!playerattached()) { consolebug "ERROR - PLAYER NOT ATTACHED, INVALID KILL, CANNOT RESOLVE MAP."; diff --git a/npc/024-10/eldrin.txt b/npc/024-10/eldrin.txt index f03cea5a7..0298a174e 100644 --- a/npc/024-10/eldrin.txt +++ b/npc/024-10/eldrin.txt @@ -11,8 +11,122 @@ mesc l("The elf seems busy. He ignores you."); close; } - mesn; - mesq l("Sorry, we're not yet open."); + .@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=7; + goto L_QuestMaster; + case 2: + .@q1=getq(General_MobHunting6); + .@q2=getq2(General_MobHunting6); + .@q3=getq3(General_MobHunting6); + .@q=General_MobHunting6; + .@lv=14; + goto L_QuestMaster; + case 3: + .@q1=getq(General_MobHunting7); + .@q2=getq2(General_MobHunting7); + .@q3=getq3(General_MobHunting7); + .@q=General_MobHunting7; + .@lv=20; + 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 == 7) { + .@q2=any(EarthFairy, FireFairy, WaterFairy, WindFairy, PoisonFairy, BlackScorpion, MountainSnake, ForestMushroom, GoldenScorpion, Yeti, WickedMushroom, Archant, Scar, Crafty); + } else if (.@lv == 14) { + .@q2=any(Crafty, Forain, GreenDragon, Troll, Moonshroom, Terranite, JackO, BlackMamba, Centaur, GoboBear); + } else if (.@lv == 20) { + .@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: diff --git a/npc/025-2-3/boss.txt b/npc/025-2-3/boss.txt index fa9ea4b2d..ba1bd89d6 100644 --- a/npc/025-2-3/boss.txt +++ b/npc/025-2-3/boss.txt @@ -28,6 +28,7 @@ OnBossDeath: mapannounce "025-2-3", "Boss deafeated by: " + strcharinfo(0), bc_all; } callfunc "02524_Revenge_BlackBox"; + fix_mobkill(PinkieEmperor); end; OnBossReward: diff --git a/npc/031-0/boss.txt b/npc/031-0/boss.txt index 0dce5ffd8..efd24256b 100644 --- a/npc/031-0/boss.txt +++ b/npc/031-0/boss.txt @@ -24,6 +24,7 @@ OnBossDeath: mapannounce getmap(), "Boss deafeated by: " + strcharinfo(0), bc_all; } getexp 0, 1000+BaseLevel*8+JobLevel; + fix_mobkill(Tengu); end; } |