summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/quest_db.conf12
-rw-r--r--npc/024-10/_import.txt1
-rw-r--r--npc/024-10/eldrin.txt30
-rw-r--r--npc/024-2/_import.txt1
-rw-r--r--npc/024-2/gaelira.txt131
-rw-r--r--npc/024-5/_import.txt1
-rw-r--r--npc/024-5/saevel.txt118
-rw-r--r--npc/024-6/_import.txt1
-rw-r--r--npc/024-6/talindra.txt128
-rw-r--r--npc/functions/util.txt14
10 files changed, 436 insertions, 1 deletions
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;