From f992808a952e42109ad5679059828b72a3f632e1 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Mon, 18 Oct 2021 17:39:09 -0300 Subject: The missing Frostia's Quests... Except for bounty hunter Eldrin --- db/quest_db.conf | 12 +++++ npc/024-10/_import.txt | 1 + npc/024-10/eldrin.txt | 30 +++++++++++ npc/024-2/_import.txt | 1 + npc/024-2/gaelira.txt | 131 +++++++++++++++++++++++++++++++++++++++++++++++++ npc/024-5/_import.txt | 1 + npc/024-5/saevel.txt | 118 ++++++++++++++++++++++++++++++++++++++++++++ npc/024-6/_import.txt | 1 + npc/024-6/talindra.txt | 128 +++++++++++++++++++++++++++++++++++++++++++++++ npc/functions/util.txt | 14 +++++- 10 files changed, 436 insertions(+), 1 deletion(-) create mode 100644 npc/024-10/eldrin.txt create mode 100644 npc/024-2/gaelira.txt create mode 100644 npc/024-5/saevel.txt create mode 100644 npc/024-6/talindra.txt diff --git a/db/quest_db.conf b/db/quest_db.conf index cffedde2d..3bc44703b 100644 --- a/db/quest_db.conf +++ b/db/quest_db.conf @@ -417,6 +417,18 @@ quest_db: ( Id: 138 Name: "FrostiaQuest_Meriel" }, +{ + Id: 139 + Name: "FrostiaQuest_Saevel" +}, +{ + Id: 140 + Name: "FrostiaQuest_Talindra" +}, +{ + Id: 141 + Name: "FrostiaQuest_Gaelira" +}, // ID 151 to 170: Fortress Island Quests { diff --git a/npc/024-10/_import.txt b/npc/024-10/_import.txt index 185060717..c1656f2b6 100644 --- a/npc/024-10/_import.txt +++ b/npc/024-10/_import.txt @@ -1,4 +1,5 @@ // Map 024-10: Frostia Indoors // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/024-10/_warps.txt", +"npc/024-10/eldrin.txt", "npc/024-10/haircut.txt", diff --git a/npc/024-10/eldrin.txt b/npc/024-10/eldrin.txt new file mode 100644 index 000000000..f03cea5a7 --- /dev/null +++ b/npc/024-10/eldrin.txt @@ -0,0 +1,30 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-10,33,30,0 script Eldrin NPC_ELF,{ + // FIXME: Bounty House + //.@q = getq(FrostiaQuest_Rydel); + if (BaseLevel < 30) { + mesc l("The elf seems busy. He ignores you."); + close; + } + mesn; + mesq l("Sorry, we're not yet open."); + 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; +} + diff --git a/npc/024-2/_import.txt b/npc/024-2/_import.txt index f9e2e3876..2ca764d49 100644 --- a/npc/024-2/_import.txt +++ b/npc/024-2/_import.txt @@ -1,3 +1,4 @@ // Map 024-2: Frostia Indoors // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/024-2/_warps.txt", +"npc/024-2/gaelira.txt", diff --git a/npc/024-2/gaelira.txt b/npc/024-2/gaelira.txt new file mode 100644 index 000000000..d8398d426 --- /dev/null +++ b/npc/024-2/gaelira.txt @@ -0,0 +1,131 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-2,41,22,0 script Gaelira NPC_ELF_F,{ + .@q = getq(FrostiaQuest_Gaelira); + if (BaseLevel < 52) { + mesc l("The elf seems busy. She ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey friend, could you do me a little favor?"); + next; + mesn; + mesq l("You see, I love %s! So shiny, so bright... They are my favorite!", getitemlink(Pearl)); + next; + mesn; + mesq l("So, if you could bring me %d of them, that would be totally awesome! Pretty please! I'm counting on you!", 20); + setq FrostiaQuest_Gaelira, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 20, getitemlink(Pearl)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Pearl) < 20) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + inventoryplace AncientBlueprint, 1; + delitem Pearl, 20; + getitem AncientBlueprint, 1; + Zeny+=getiteminfo(Pearl, ITEMINFO_SELLPRICE)*20*12/10; // 120% payoff + getexp 15000, 0; + setq FrostiaQuest_Gaelira, 2; + mesn; + mesq l("Thank you soooo much! Here is some compensation, and you can keep this worthless scroll of paper! I looooove Pearls!"); + } + close; + +L_Done_F: + mesn; + mesq l("Hey there! How are you? I hope you're doing fine!"); + next; + mesn; + mesq l("Did you knew about the legend of Aethyr? I've heard the path to it was somewhere to the west of our old village... And some stuff about passwords... Hehe, I don't remember!"); + next; + mesn; + mesq l("But I can't help but keep thinking on how many shiny treasures might be there!"); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Hey %s, could you do me a little favor?", get_race()); + next; + mesn; + mesq l("You see, I love %s! So shiny, so bright... They are my favorite!", getitemlink(Pearl)); + next; + mesn; + mesq l("So, if you could bring me %d of them, that would be totally awesome! I'm counting on you!", 20); + setq FrostiaQuest_Gaelira, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 20, getitemlink(Pearl)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Pearl) < 20) { + mesn; + mesq l("You liar, I'll teach you a lesson you won't forget!"); + mesc l("%s stabs you with a dagger!", .name$); + percentheal -55, 0; + close; + } + inventoryplace AncientBlueprint, 1; + delitem Pearl, 20; + getitem AncientBlueprint, 1; + Zeny+=getiteminfo(Pearl, ITEMINFO_SELLPRICE)*20*12/10; // 120% payoff + getexp 15000, 0; + setq FrostiaQuest_Gaelira, 2; + mesn; + mesq l("Thank you! Here is some compensation, and you can keep this worthless scroll of paper! I looooove Pearls!"); + } + close; + +L_Done_U: + mesn; + mesq l("Hey there! How are you?"); + next; + mesn; + mesq l("Did you knew about the legend of Aethyr? I've heard the path to it was somewhere to the west of our old village... And some stuff about passwords... I'm not sure if I remember!"); + next; + mesn; + mesq l("Well, I can't help but keep thinking on how many shiny treasures might be there!"); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt); + setunitdata(.@npcId, UDT_HEADMIDDLE, AssassinChest); + setunitdata(.@npcId, UDT_HEADTOP, BunnyEars); + setunitdata(.@npcId, UDT_HAIRSTYLE, 10); + setunitdata(.@npcId, UDT_HAIRCOLOR, 6); + npcsit; + + .sex = G_FEMALE; + .distance = 5; + end; +} + diff --git a/npc/024-5/_import.txt b/npc/024-5/_import.txt index fc7a36f8a..a0a3f3320 100644 --- a/npc/024-5/_import.txt +++ b/npc/024-5/_import.txt @@ -1,3 +1,4 @@ // Map 024-5: Frostia Indoors // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/024-5/_warps.txt", +"npc/024-5/saevel.txt", diff --git a/npc/024-5/saevel.txt b/npc/024-5/saevel.txt new file mode 100644 index 000000000..2005cb01c --- /dev/null +++ b/npc/024-5/saevel.txt @@ -0,0 +1,118 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-5,38,23,0 script Saevel NPC_ELF,{ + .@q = getq(FrostiaQuest_Saevel); + if (BaseLevel < 47) { + mesc l("The elf seems busy. He ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq l("I'm am about to make myself some powerful equipment... But I ran out of material to refine it!"); + next; + mesn; + mesq l("Could you, perhaps, bring me %d %s? That'll help me to finish this.", 1, getitemlink(Arcanum)); + setq FrostiaQuest_Saevel, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 1, getitemlink(Arcanum)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Arcanum) < 1) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + inventoryplace EquipmentBlueprintB, 1, EquipmentBlueprintA, 1; + delitem Arcanum, 1; + getexp 7000, 0; + getitem EquipmentBlueprintB, 1; + getitem EquipmentBlueprintA, 1; + setq FrostiaQuest_Saevel, 2; + mesn; + mesq l("Muahahaha, I'll be SO strong thanks to you! Here, I don't need these weak recipes anymore. You can have them!"); + } + close; + +L_Done_F: + mesn; + mesq l("POWER!"); + next; + mesn; + mesq l("Reminds me, but they say the Aethyr is a place where powerful elves of old live. But nobody has been there on the past century... Or if they were, nobody said anything about it! Hahahah!"); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("I'm am about to make myself some powerful equipment... But I ran out of material to refine it!"); + next; + mesn; + mesq l("Could you bring me %d %s? That'll help me to finish this.", 1, getitemlink(Arcanum)); + setq FrostiaQuest_Saevel, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 1, getitemlink(Arcanum)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Arcanum) < 1) { + mesn; + mesq l("You liar, I'll teach you a lesson you won't forget!"); + mesc l("%s slaps you!", .name$); + percentheal -30, 0; + close; + } + inventoryplace EquipmentBlueprintB, 1, EquipmentBlueprintA, 1; + delitem Arcanum, 1; + getexp 7000, 0; + getitem EquipmentBlueprintB, 1; + getitem EquipmentBlueprintA, 1; + setq FrostiaQuest_Saevel, 2; + mesn; + mesq l("Muahahaha, I'll be SO strong thanks to you! Here, these recipes should be useful for ya. You can have them!"); + } + close; + +L_Done_U: + mesn; + mesq l("POWER!"); + next; + mesn; + mesq l("Reminds me, but they say the Aethyr is a place where powerful elves of old live. But nobody has been there on the past century... Or if they were, nobody said anything about it! Hahahah!"); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants); + setunitdata(.@npcId, UDT_HEADMIDDLE, GoldenWarlordPlate); + setunitdata(.@npcId, UDT_HEADTOP, SamuraiHelmet); + setunitdata(.@npcId, UDT_HAIRSTYLE, 2); + setunitdata(.@npcId, UDT_HAIRCOLOR, 8); + + .sex = G_MALE; + .distance = 5; + end; +} + diff --git a/npc/024-6/_import.txt b/npc/024-6/_import.txt index 5b36f2a59..1af2c67fc 100644 --- a/npc/024-6/_import.txt +++ b/npc/024-6/_import.txt @@ -1,3 +1,4 @@ // Map 024-6: Frostia Indoors // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/024-6/_warps.txt", +"npc/024-6/talindra.txt", diff --git a/npc/024-6/talindra.txt b/npc/024-6/talindra.txt new file mode 100644 index 000000000..7ef8dadfa --- /dev/null +++ b/npc/024-6/talindra.txt @@ -0,0 +1,128 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-6,31,23,0 script Talindra NPC_ELF_F,{ + .@q = getq(FrostiaQuest_Talindra); + if (BaseLevel < 65) { + mesc l("The elf seems busy. She ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey friend, could you do me a little favor?"); + next; + mesn; + mesq l("I want to prove exotic tea. More specifically, I'm looking for %s and %s. Bring me %d of each, and I'll reward you awesomely.", getitemlink(CelestiaTea), getitemlink(HerbalTea), 15); + next; + mesn; + mesq l("Good luck!"); + setq FrostiaQuest_Talindra, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got everything I've asked?"); + mes sprintf("- %d %s", 15, getitemlink(CelestiaTea)); + mes sprintf("- %d %s", 15, getitemlink(HerbalTea)); + next; + if (askyesno() == ASK_YES) { + if (countitem(CelestiaTea) < 15 || + countitem(HerbalTea) < 15) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + inventoryplace EquipmentBlueprintD, 1; + delitem CelestiaTea, 15; + delitem HerbalTea, 15; + getitem EquipmentBlueprintD, 1; + getexp 50000, 0; + setq FrostiaQuest_Talindra, 2; + mesn; + mesq l("Yay! Many thanks! I'll enjoy it! Here is the promised reward."); + } + close; + +L_Done_F: + mesn; + mesq l("I've heard Aethyr path was to the west, but I'm not sure west of where... %s", col(l("*sigh*"), 9)); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Hey %s, could you do me a little favor?", get_race()); + next; + mesn; + mesq l("I want to prove exotic tea. More specifically, I'm looking for %s and %s. Bring me %d of each, and I'll reward you awesomely.", getitemlink(CelestiaTea), getitemlink(HerbalTea), 15); + next; + mesn; + mesq l("Try to don't take too long!"); + setq FrostiaQuest_Talindra, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got everything I've asked?"); + mes sprintf("%d %s", 15, getitemlink(CelestiaTea)); + mes sprintf("%d %s", 15, getitemlink(HerbalTea)); + next; + if (askyesno() == ASK_YES) { + if (countitem(CelestiaTea) < 15 || + countitem(HerbalTea) < 15) { + mesn; + mesq l("You liar, I'll teach you a lesson you won't forget!"); + mesc l("%s stabs you with a dagger!", .name$); + percentheal -55, 0; + close; + } + inventoryplace EquipmentBlueprintD, 1; + delitem CelestiaTea, 15; + delitem HerbalTea, 15; + getitem EquipmentBlueprintD, 1; + getexp 50000, 0; + setq FrostiaQuest_Talindra, 2; + mesn; + mesq l("Thanks! I'll enjoy it! Here is the promised reward."); + } + close; + +L_Done_U: + mesn; + mesq l("I've heard Aethyr path was to the west, but I'm not sure west of where... %s", col(l("*sigh*"), 9)); + next; + mesn; + mesq l("...Go mind your own business, %s.", get_race()); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADTOP, TrapperHat); + setunitdata(.@npcId, UDT_HAIRSTYLE, 20); + setunitdata(.@npcId, UDT_HAIRCOLOR, 17); + npcsit; + + .sex = G_FEMALE; + .distance = 5; + end; +} + diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 3b9b0ba32..28d0a2d9c 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -487,8 +487,20 @@ function script reputation { if (getq(FrostiaQuest_Taenya) >= 2) .@nr=.@nr+1; + // Talindra Quest (+1 rep) + if (getq(FrostiaQuest_Talindra) >= 2) + .@nr=.@nr+1; + + // Gaelira Quest (+1 rep) + if (getq(FrostiaQuest_Gaelira) >= 2) + .@nr=.@nr+1; + + // Saevel Quest (+1 rep) + if (getq(FrostiaQuest_Saevel) >= 2) + .@nr=.@nr+1; + // FROSTIA Magical Forumula - .@nr=.@nr*100/7; + .@nr=.@nr*100/10; -- cgit v1.2.3-60-g2f50