summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hulka <sean.hulka@gmail.com>2020-06-21 09:55:37 +0000
committerJesusaves <cpntb1@ymail.com>2020-06-21 09:55:37 +0000
commitb3af3029e1f8d0aaae388a71bbbd3d470a40aa40 (patch)
treea6b21cb6038ecbd34b02dd06b32139284cdb8045
parent27140ff716ab751f350c7f369a98b3e93732ba2c (diff)
downloadserverdata-b3af3029e1f8d0aaae388a71bbbd3d470a40aa40.tar.gz
serverdata-b3af3029e1f8d0aaae388a71bbbd3d470a40aa40.tar.bz2
serverdata-b3af3029e1f8d0aaae388a71bbbd3d470a40aa40.tar.xz
serverdata-b3af3029e1f8d0aaae388a71bbbd3d470a40aa40.zip
To add the serverside data for the Duck Elder quest.
-rw-r--r--db/quest_db.conf4
-rw-r--r--db/re/item_db.conf21
-rw-r--r--db/re/skill_db.conf42
-rw-r--r--db/re/skill_tree.conf1
-rw-r--r--npc/018-5-4/elder.txt142
-rw-r--r--npc/functions/clientversion.txt1
-rw-r--r--npc/functions/hub.txt6
7 files changed, 211 insertions, 6 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf
index 5fc44d603..68bd7e476 100644
--- a/db/quest_db.conf
+++ b/db/quest_db.conf
@@ -420,6 +420,10 @@ quest_db: (
Id: 251
Name: "LilitQuest_Shaabty"
},
+{
+ Id: 252
+ Name: "LilitQuest_PiratesOfSARAH"
+},
// ID 270 to 299: Land Of Fire Quests
{
Id: 270
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index ee042da52..cfed5622b 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -6260,6 +6260,25 @@ item_db: (
bonus bMatk,30;
">
},
+{
+ Id: 1179
+ AegisName: "RubberDucky"
+ Name: "Rubber Ducky"
+ Type: "IT_ARMOR"
+ Buy: 15000
+ Sell: 7500
+ Weight: 500
+ Def: 0
+ Loc: "EQP_ACC_L"
+ EquipLv: 50
+ Refine: false
+ Script: <"
+ skill TMW2_DUCKY,1;
+ bonus bAllStats,5;
+ bonus bMaxHP,-25;
+ bonus bMaxSPrate,-20;
+ ">
+},
///////////////////////////
// Chest Armors
@@ -12661,6 +12680,8 @@ item_db: (
skill TMW2_FROZENHEART, 9;
skill TMW2_PLANTKINGDOM, 9;
skill TMW2_FAIRYKINGDOM, 9;
+ skill TMW2_DUCKY, 10;
+
">
OnUnequipScript: <"
@min = 20;
diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf
index a16f0c99a..8b6171118 100644
--- a/db/re/skill_db.conf
+++ b/db/re/skill_db.conf
@@ -39370,4 +39370,46 @@ skill_db: (
Quest: true
}
},
+{
+ Id: 20047
+ Name: "TMW2_DUCKY"
+ Description: "Summon Duck Reinforcements"
+ MaxLevel: 10
+ SkillInfo: {
+ Quest: true
+ }
+ SkillType: {
+ Self: true
+ }
+ CoolDown: {
+ Lv1: 80000
+ Lv2: 78000
+ Lv3: 76000
+ Lv4: 74000
+ Lv5: 72000
+ Lv6: 70000
+ Lv7: 68000
+ Lv8: 66000
+ Lv9: 64000
+ Lv10: 62000
+ }
+ Requirements: {
+ Items: {
+ RubberDucky: 0
+ CherryCake: 1
+ }
+ SPCost: {
+ Lv1: 40
+ Lv2: 47
+ Lv3: 54
+ Lv4: 61
+ Lv5: 68
+ Lv6: 75
+ Lv7: 82
+ Lv8: 89
+ Lv9: 96
+ Lv10: 100
+ }
+ }
+},
)
diff --git a/db/re/skill_tree.conf b/db/re/skill_tree.conf
index acab262be..fc19a9cd5 100644
--- a/db/re/skill_tree.conf
+++ b/db/re/skill_tree.conf
@@ -46,6 +46,7 @@ Human: {
// Mana Skills
TMW2_ZARKOR: 3
+ TMW2_DUCKY: 10
TMW2_PARUM: 0
TMW2_KALMURK: 4
TMW2_TRANSMIGRATION: 10
diff --git a/npc/018-5-4/elder.txt b/npc/018-5-4/elder.txt
index 829e0894b..830cc4616 100644
--- a/npc/018-5-4/elder.txt
+++ b/npc/018-5-4/elder.txt
@@ -3,11 +3,17 @@
// dangerDuck
// Description:
// Duck Elder is a friendly npc.
-// May eventually implement a quest that needs Duck Feathers
-// Variable:
-// none
+// The first stage of the Elder's quest consists of a supply restock
+// Second stage of the quest will be a pirate attack (WIP)
+// Third stage will consist of planting mage acorns around the island (WIP)
+// Variables:
+// LilitQuest_PiratesOfSARAH
018-5-4,28,73,0 script Duck Elder NPC_DUCK_ELDER,{
+ function elderQuest;
+ function elderSupplyList;
+ function elderSupplyGive;
+ function elderPirateAttack;
function elderAbout;
function elderAboutSarah;
function elderClose;
@@ -15,19 +21,138 @@
mesq l("Hello %s. What brings you here?", get_race());
next;
select
+ l("I've heard tidings of strange goings-on in this area..."),
l("Oh, I'm just exploring. What can you tell me about this island?"),
l("I came to enjoy a beautiful day with some ducks!");
mes "";
switch (@menu) {
case 1:
+ elderQuest();
+ break;
+ case 2:
elderAbout();
// fallthrough
- case 2:
+ case 3:
elderClose();
break;
}
close;
+function elderQuest {
+ if(BaseLevel < 50) {
+ mesn;
+ mesq l("Unfortunately, a mere fledgling like you is not strong enough to help us.");
+ next;
+ elderClose();
+ return;
+ }
+ .@q = getq(LilitQuest_PiratesOfSARAH);
+ switch (.@q) {
+ case 0:
+ mesn;
+ mesq l("Your information is correct, %s. Pirates have been plaguing our shores and cutting off our supply lines.", get_race());
+ next;
+ mesn;
+ mesq l("We are in desperate need of food and nesting material, as well as our sacred supply of @@.", getitemlink(CrystallizedMaggot));
+ next;
+ setq LilitQuest_PiratesOfSARAH, 1;
+ elderSupplyList();
+ break;
+ case 1:
+ mesn;
+ mesq l("Did you bring the supplies?");
+ next;
+ select
+ l("Yes, I have them right here."),
+ l("What did you want? I've forgotten."),
+ l("Not yet. I've been... delayed.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ elderSupplyGive();
+ break;
+ case 2:
+ elderSupplyList();
+ break;
+ case 3:
+ close;
+ break;
+ }
+ break;
+ case 2:
+ elderPirateAttack();
+ break;
+ case 3:
+ break;
+ }
+ close;
+ return;
+}
+
+function elderSupplyList {
+ mesq "";
+ mesn;
+ mesq l("We need:");
+ mesq l("%d/%d %s", countitem(Moss), 300, getitemlink(Moss));
+ mesq l("%d/%d %s", countitem(RoastedMaggot), 250, getitemlink(RoastedMaggot));
+ mesq l("%d/%d %s", countitem(CommonCarp), 250, getitemlink(CommonCarp));
+ mesq l("%d/%d %s", countitem(GrassCarp), 75, getitemlink(GrassCarp));
+ mesq l("%d/%d %s", countitem(CrystallizedMaggot), 1, getitemlink(CrystallizedMaggot));
+ next;
+ mesq l("Of course, we'll find a way to reward you for your efforts.");
+ return;
+}
+
+function elderSupplyGive {
+ if (countitem(Moss) < 300 ||
+ countitem(RoastedMaggot) < 250 ||
+ countitem(CommonCarp) < 250 ||
+ countitem(GrassCarp) < 75 ||
+ countitem(CrystallizedMaggot) < 1) {
+ mesn;
+ mesq l("This isn't what we requested. Perhaps you should count your items more carefully.");
+ next;
+ mesn;
+ mesq l("If you aren't more careful, we might... accidentally... mistake you for an agent of S.A.R.A.H.");
+ percentheal -99, 0;
+ close;
+ }
+ inventoryplace RubberDucky, 1;
+
+ delitem(Moss, 300);
+ delitem(RoastedMaggot, 250);
+ delitem(CommonCarp, 250);
+ delitem(GrassCarp, 75);
+ delitem(CrystallizedMaggot, 1);
+
+ getitem(RubberDucky, 1);
+ getexp(34576, 19226);
+ setq(LilitQuest_PiratesOfSARAH, 2);
+
+ mes "";
+ mesn;
+ mesq l("We appreciate your help. Take this %s as a token of goodwill.", getitemlink(RubberDucky));
+ next;
+ mesn;
+ mesq l("If you're ever in need, you may use it to call upon the aid of the ducks.");
+ next;
+ if(BaseLevel < 75) {
+ mesn;
+ mesq l("Go now, with the blessing of ducks. There may come a time when we require your aid once again, O %s.", get_race());
+ } else {
+ mesn;
+ mesq l("We may require your aid again soon. The tritan pirates are amassing and we fear they are planning a siege of Duck Island. I must speak with the council...");
+ }
+ close;
+}
+
+function elderPirateAttack {
+ mesn;
+ mesq l("The tritan pirates amass for their siege, but they will not attack yet. Return later. King DD is working to find a solution.");
+ next;
+ close;
+}
+
function elderAbout {
mesn;
mesq l("This is Duck Island, the last safe refuge for birds. Ducks tend to be very peaceful, but our young ruler, King DD, has been taken up with the art of war.");
@@ -49,7 +174,7 @@ function elderAboutSarah {
mesq l("As I said, S.A.R.A.H. is a terrorist organization. They are dedicated to wiping out every single duck, worldwide. No duck has ever survived an encounter with a S.A.R.A.H. agent. You would do best to avoid them.");
next;
mesn;
- mesq l("I suggest you leave now, %s. If you are even suspected of being a S.A.R.A.H. agent . . .", get_race());
+ mesq l("I suggest you leave now, %s. If you are even suspected of being a S.A.R.A.H. agent...", get_race());
close;
return;
}
@@ -59,7 +184,12 @@ function elderClose {
mesq l("Enjoy your time here, %s. And keep your eye out for agents of S.A.R.A.H.", get_race());
next;
mesn;
- mesq l("Perhaps you may be of assistance later . . .");
+ if (BaseLevel < 50) {
+ mesq l("Perhaps you may be of assistance later...");
+ }
+ else{
+ mesq l("I may have a task for you. Return when you tired of exploring...");
+ }
close;
return;
}
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index 36d4792b0..0a33f2a7b 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -837,6 +837,7 @@ function script clientupdater {
skill EVOL_MASS_PROVOKE, 0, 0;
dispbottom col(l("Mass Provoke replaced with Area Provoke."), 1);
}
+
}
// :// End of Regular Update System
diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt
index ba89f483d..85fe79c37 100644
--- a/npc/functions/hub.txt
+++ b/npc/functions/hub.txt
@@ -487,6 +487,12 @@ function script HUB_SkillInvoke {
}
SK_summon(.@mobId, 4, any(4,5));
break;
+ case TMW2_DUCKY:
+ if (alignment() < 0 && !isequippedcnt(AegisShield))
+ break;
+ SummonMagic(@skillId, Duck, 2, @skillLv);
+ GetManaExp(@skillId, 1);
+ break;
// Special exception
case TMW2_TRANSMIGRATION: