diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-01-24 16:47:37 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-01-24 16:47:37 -0300 |
commit | d021f436122b5417ae6774d90a30a972a888bcf5 (patch) | |
tree | f1d0f2a24d60a4befbdcc391f3a06de51e9a15e7 | |
parent | 4183a14db9736b6289fa4d5ed81da72261f183e0 (diff) | |
download | serverdata-d021f436122b5417ae6774d90a30a972a888bcf5.tar.gz serverdata-d021f436122b5417ae6774d90a30a972a888bcf5.tar.bz2 serverdata-d021f436122b5417ae6774d90a30a972a888bcf5.tar.xz serverdata-d021f436122b5417ae6774d90a30a972a888bcf5.zip |
Commander Cadis and his stupidly impossible quest which YuckFou will finish in...
I dunno, but I'm hoping it to last at least three days, preferably a week~a month.
-rw-r--r-- | db/quest_db.conf | 9 | ||||
-rw-r--r-- | npc/025-1/commander.txt | 131 | ||||
-rw-r--r-- | npc/025-1/ctrl.c | 2 | ||||
-rw-r--r-- | npc/functions/mobpoint.txt | 1 | ||||
-rw-r--r-- | npc/functions/util.txt | 8 |
5 files changed, 147 insertions, 4 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf index 68bd7e476..641a6df71 100644 --- a/db/quest_db.conf +++ b/db/quest_db.conf @@ -374,8 +374,13 @@ quest_db: ( Name: "FrostiaQuest_AFKCap" }, -// ID 151 to 170: Artis Quests -// ID 171 to 190: Esperia Quests +// ID 151 to 170: Fortress Island Quests +{ + Id: 151 + Name: "FortressQuest_SlimeHunter" +}, + +// ID 171 to 190: Artis & Esperia Quests // ID 191 to 249: General Quests II (eg. Dungeon Quests) { Id: 191 diff --git a/npc/025-1/commander.txt b/npc/025-1/commander.txt index 06df58db3..366d986ec 100644 --- a/npc/025-1/commander.txt +++ b/npc/025-1/commander.txt @@ -20,3 +20,134 @@ OnInit: end; } +///////////////////////////////////////////////////////////////////////////////// +025-1,59,86,0 script Commander Cadis NPC_BRGUARD_SWORD,{ + mesn; + mesq l("Greetings %s, I am %s, I am in charge of monster extermination.", (strcharinfo(0) == $MOST_HEROIC$ ? lg("Hero") : lg("Adventurer")), .name$); + next; + // Check for ongoing quests + if (getq(FortressQuest_SlimeHunter) == 1) + goto L_SlimeHunter; + mesn; + mesq l("I have extremely difficult quests for you; They are more painful than a Grand Hunter Quest, because I don't admit wimps fighting with me."); + next; + mesn; + mesq l("You will be rewarded by me shall you succeed in any of the tasks."); + next; + do + { + select + l("I'm not interested."), + rif(!getq(FortressQuest_SlimeHunter), l("The Great Slime Hunt")); + mes ""; + switch (@menu) { + case 1: + close; + case 2: + mesn; + mesq l("You'll have to slay %s slimes for me! I don't care which ones, just SLAY THEM!", fnum(.million)); + next; + select + l("Accept"), + l("Reject"); + mes ""; + if (@menu == 1) { + setq1 FortressQuest_SlimeHunter, 1; + mesn; + mesq l("Then get to work already!"); + close; + } + break; + } + } + close; + +L_SlimeHunter: + .@kill=getq2(FortressQuest_SlimeHunter); + .@rewa=getq3(FortressQuest_SlimeHunter); + mesn; + mesq l("Thus far you've slain %s/%s %s for me!", fnum(.@kill), fnum(.million), b(l("Slimes"))); + inventoryplace NPCEyes, 4, Iten, 2; + + // ***** ***** ***** Rewards ***** ***** ***** + if (.@kill >= .tier1 && .@rewa < 1) { + mesc l("Milestone reached: %s kills", fnum(.tier1)); + setq3 FortressQuest_SlimeHunter, 1; + getitem MercenaryBoxsetDD, 3; + getitem SacredImmortalityPotion, 2; + getitem MercenaryBoxsetE, 1; + } + + if (.@kill >= .tier2 && .@rewa < 2) { + mesc l("Milestone reached: %s kills", fnum(.tier2)); + setq3 FortressQuest_SlimeHunter, 2; + getitem MercenaryBoxsetEE, 1; + getitem MagicApple, 1; + getitem EquipmentBlueprintE, 1; + getitem IridiumOre, 2; + } + + if (.@kill >= .tier3 && .@rewa < 3) { + mesc l("Milestone reached: %s kills", fnum(.tier3)); + setq3 FortressQuest_SlimeHunter, 3; + getitem MercenaryBoxsetEE, 2; + getitem StrangeCoin, 50; + getitem EarthPowder, 2; + getitem PlatinumOre, 1; + } + + if (.@kill >= .tier4 && .@rewa < 4) { + mesc l("Milestone reached: %s kills", fnum(.tier4)); + setq3 FortressQuest_SlimeHunter, 4; + getitem MercenaryBoxsetEE, 3; + getitem ElixirOfLife, 5; + getitem EarthPowder, 2; + getitem PlatinumOre, 1; + } + + + // Quest complete + if (.@kill >= .million) { + mesc b(l("Quest complete: Congratulations!")), 3; + setq1 FortressQuest_SlimeHunter, 2; + setq3 FortressQuest_SlimeHunter, 5; + getitem MercenaryBoxsetEE, 5; + getitem StrangeCoin, 100; + getitem EarthPowder, 3; + getitem any(LuckFruit, DexterityFruit, IntelligenceFruit, VitalityFruit, AgilityFruit, StrengthFruit), 1; + getitem MysteriousFruit, 1; + //getitem PrismGift, 1; + } + close; + +OnInit: + .sex = G_MALE; + .distance = 5; + .million = 1000000; + + .tier1 = 10000; + .tier2 = 50000; + .tier3 = 250000; + .tier4 = 500000; + end; +} + +// Commander Cadis Questcheck +function script CadisQuestCheck { + if (!playerattached()) + return; + + .@mobId=getarg(0, killedrid); + + if (getq(FortressQuest_SlimeHunter) == 1) { + // Register the kill + if (compare("slime", strtolower(strmobinfo(1, .@mobId)))) + setq2 FortressQuest_SlimeHunter, getq2(FortressQuest_SlimeHunter)+1; + // Report every 1000 kills + if (getq2(FortressQuest_SlimeHunter) % 1000 == 0) + dispbottom l("Cadis : You have slain %s slimes out of a million.", fnum(getq2(FortressQuest_SlimeHunter))); + } + + return; +} + diff --git a/npc/025-1/ctrl.c b/npc/025-1/ctrl.c index f8f197ae4..ace7b64ff 100644 --- a/npc/025-1/ctrl.c +++ b/npc/025-1/ctrl.c @@ -52,6 +52,7 @@ function script FTCleanup { enablenpc "Drahcir"; enablenpc "Selim"; enablenpc "Commander Povo"; + enablenpc "Commander Cadis"; enablenpc "Phoenix Rebirth"; enablenpc "Anin The Traveler"; donpcevent "#025-1_99_112::OnDisable"; @@ -63,6 +64,7 @@ function script FTCleanup { disablenpc "Drahcir"; disablenpc "Selim"; disablenpc "Commander Povo"; + disablenpc "Commander Cadis"; disablenpc "Phoenix Rebirth"; disablenpc "Anin The Traveler"; donpcevent "#025-1_99_112::OnEnable"; diff --git a/npc/functions/mobpoint.txt b/npc/functions/mobpoint.txt index 339e3026c..2ac276f43 100644 --- a/npc/functions/mobpoint.txt +++ b/npc/functions/mobpoint.txt @@ -78,6 +78,7 @@ OnNPCKillEvent: callfunc "ChocolateDay"; callfunc "CoffeeDay"; callfunc "FSFDay"; + callfunc "CadisQuestCheck"; // Unset killedrid. This affects multiple calls of this function // But it is in overall more reliable imao diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 183ca5781..704c84805 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -539,12 +539,16 @@ function script reputation { // Fortress Town Quests (1 point/special) } else if (getarg(0) == "Fortress") { - // Who am I? (+1 rep) + // Who am I? (+2 rep) if (getq(General_Narrator) >= 22) + .@nr=.@nr+2; + + // Cadis: Great Slime Hunt (+1 rep) + if (getq(FortressQuest_SlimeHunter) >= 2) .@nr=.@nr+1; // FORTRESS TOWN Magical Forumula - .@nr=.@nr*100/1; + .@nr=.@nr*100/3; // Final |