summaryrefslogtreecommitdiff
path: root/npc/005-1
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/005-1
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/005-1')
-rw-r--r--npc/005-1/_import.txt16
-rw-r--r--npc/005-1/_mobs.txt10
-rw-r--r--npc/005-1/_warps.txt8
-rw-r--r--npc/005-1/ayasha.txt438
-rw-r--r--npc/005-1/liana.txt110
-rw-r--r--npc/005-1/mapflags.txt8
-rw-r--r--npc/005-1/maya.txt234
-rw-r--r--npc/005-1/sailors.txt157
-rw-r--r--npc/005-1/saxso.txt23
-rw-r--r--npc/005-1/ship.txt17
-rw-r--r--npc/005-1/soul-menhir.txt20
-rw-r--r--npc/005-1/underground.txt41
-rw-r--r--npc/005-1/vincent.txt78
-rw-r--r--npc/005-1/wateranimation.txt37
-rw-r--r--npc/005-1/zegas.txt144
15 files changed, 1341 insertions, 0 deletions
diff --git a/npc/005-1/_import.txt b/npc/005-1/_import.txt
new file mode 100644
index 0000000..d7d03ba
--- /dev/null
+++ b/npc/005-1/_import.txt
@@ -0,0 +1,16 @@
+// Map 005-1: Candor Island
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/005-1/_mobs.txt",
+"npc/005-1/_warps.txt",
+"npc/005-1/ayasha.txt",
+"npc/005-1/liana.txt",
+"npc/005-1/mapflags.txt",
+"npc/005-1/maya.txt",
+"npc/005-1/sailors.txt",
+"npc/005-1/saxso.txt",
+"npc/005-1/ship.txt",
+"npc/005-1/soul-menhir.txt",
+"npc/005-1/underground.txt",
+"npc/005-1/vincent.txt",
+"npc/005-1/wateranimation.txt",
+"npc/005-1/zegas.txt",
diff --git a/npc/005-1/_mobs.txt b/npc/005-1/_mobs.txt
new file mode 100644
index 0000000..ed13f97
--- /dev/null
+++ b/npc/005-1/_mobs.txt
@@ -0,0 +1,10 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 005-1: Candor Island mobs
+005-1,43,50,2,1 monster Clover Field 1028,1,35000,300000
+005-1,30,66,1,0 monster Diamond Bif 1108,1,35000,90000,Rosen::OnKillMBif
+005-1,70,94,7,6 monster Maggot 1030,9,35000,300000,Trainer::OnKillMaggot
+005-1,89,97,8,9 monster Candor Scorpion 1073,7,35000,300000,Trainer::OnKillCandorScorpion
+005-1,43,115,6,3 monster Piou 1002,1,35000,300000
+005-1,87,43,16,15 monster Candor Scorpion 1073,12,35000,300000,Trainer::OnKillCandorScorpion
+005-1,78,49,28,10 monster Mana Bug 1075,5,35000,300000,Trainer::OnKillManaBug
+005-1,37,49,12,14 monster Scorpion 1071,2,35000,300000,Trainer::OnKillScorpion
diff --git a/npc/005-1/_warps.txt b/npc/005-1/_warps.txt
new file mode 100644
index 0000000..4c19648
--- /dev/null
+++ b/npc/005-1/_warps.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 005-1: Candor Island warps
+005-1,38,89,0 warp #005-1_38_89 0,0,005-2,33,42
+005-1,41,84,0 warp #005-1_41_84 0,0,005-3,25,42
+005-1,55,80,0 warp #005-1_55_80 0,0,005-4,25,42
+005-1,46,78,0 warp #005-1_46_78 0,0,005-5,25,41
+005-1,34,99,0 warp #005-1_34_99 0,0,005-7,45,37
+005-1,50,85,0 warp #005-1_50_85 0,0,005-6,33,42
diff --git a/npc/005-1/ayasha.txt b/npc/005-1/ayasha.txt
new file mode 100644
index 0000000..6789f42
--- /dev/null
+++ b/npc/005-1/ayasha.txt
@@ -0,0 +1,438 @@
+// Author:
+// Crazyfefe
+// Jesusalva
+// Description:
+// Ayasha takes care of the children of Candor Village, and is in charge of protecting them.
+// The kids sometimes go play outside of city walls, and this makes her upset.
+// Even if no major attack happened in Candor for a while.
+// Variables:
+// CandorQuest_HAS
+// 0: Not met
+// 1: Already met
+// 2: Quest ongoing
+// 3: Found all kids
+// 4: Reward given
+
+005-1,59,91,0 script Ayasha NPC_HUMAN_FEMALE_NOOB,{
+ showavatar NPC_HUMAN_FEMALE_NOOB; // this is handled by avatars.xml
+ if (strcharinfo(2) == "Monster King" && is_master()) goto L_MKControl;
+
+ function quest_findAllKids {
+ setq CandorQuest_HAS, 2;
+ mesn;
+ mesq l("Good luck!");
+ close;
+ }
+
+ .@has = getq(CandorQuest_HAS);
+ if (.@has == 0) {
+ speech S_LAST_NEXT,
+ l("Ah, the kids are playing hide and seek, but I am afraid they went too far. A monster attack could start anytime, after all."),
+ l("I am currently very worried with them. They're just children! They don't know how to fight!"),
+ l("Could you perhaps help me to find all kids?");
+ do
+ {
+ select
+ l("Yes!"),
+ l("I can't, sorry.");
+
+ setq CandorQuest_HAS, 1;
+ switch (@menu) {
+ case 1:
+ quest_findAllKids;
+ break;
+ }
+ } while (@menu != 2);
+ } else if (.@has == 1) {
+ mesn;
+ mesq l("Even if the city has not been attacked on the last few years, I can't help but be concerned while the kids are playing hide and seek.");
+ next;
+ mesq l("Could you perhaps help me to find all kids?");
+ next;
+
+ do
+ {
+ select
+ l("Yes!"),
+ l("I can't, sorry.");
+
+ switch (@menu) {
+ case 1:
+ quest_findAllKids;
+ break;
+ }
+ } while (@menu != 2);
+ } else if (.@has == 2) {
+ mesn;
+ mesq l("You still haven't found all of them yet.");
+ close;
+ } else if (.@has == 3) {
+ speech S_LAST_NEXT,
+ l("Thank you, here is your reward and... some pocket money.");
+ narrator("You receive 30 exp and 50 GP.");
+ getexp 32, 0;
+ Zeny = (Zeny + 50);
+ setq CandorQuest_HAS, 4;
+ close;
+ } else {
+ mesn;
+ mesq l("Thank you for your help.");
+ if (BaseLevel >= 24 && gettimetick(2) > .RENT_TIME) goto L_Sword;
+ close;
+ }
+
+ //closedialog;
+ //goodbye;
+ close;
+
+L_Sword:
+ menu
+ l("The children are safe, could you rent me your sword?"), L_Rent,
+ l("You're welcome!"), -;
+ close;
+
+L_Rent:
+ // This code is equivalent to: speech S_FIRST_BLANK_LINE | S_LAST_NEXT
+ mes "";
+ mesn;
+ mesq l("Ah, I guess you want to fight at the cave north of me...");
+ next;
+ mesq l("The children are safe, aren't they...?");
+ next;
+ mesq l("I can rent it to you for 300 GP, during 15 minutes. Deal?");
+ next;
+ menu
+ rif(Zeny >= 300 && gettimetick(2) > .RENT_TIME, l("Deal!")), L_DoRent,
+ l("Maybe later."), -;
+ close;
+
+L_DoRent:
+ if (gettimetick(2) <= .RENT_TIME) mesq l("Sorry, you were taking too long to decide and I've rented my sword to somebody else.");
+ if (gettimetick(2) <= .RENT_TIME) close;
+ .RENT_TIME=gettimetick(2)+(15*60);
+ set Zeny, Zeny - 300;
+ rentitem Judgement, (15*60);
+ mes "";
+ mesn;
+ mesq l("Here it is. Take care with it!");
+ if ($RUNES_HOLDER$ == "" && $GAME_STORYLINE >= 4) {
+ next;
+ mesn;
+ mesq l("Actually, I heard that on the cave north of me a great wizard died from a curse, but his staff would be available for any other wizard who looks.");
+ next;
+ mesn;
+ mesq l("I don't know, I assume the staff was burried with him on the deepest parts of the cave. If it was easy, someone would already have stolen it.");
+ }
+ close;
+
+
+
+
+L_MKControl:
+ mesn;
+ mes l("Oh noes! You've found the Candor control panel!");
+ menu
+ l("Initiate small siege (lv. 5)"), L_MKSmall,
+ l("Abort"), -;
+ close;
+
+L_MKSmall:
+ addmapmask "005-1", MASK_MATTACK;
+ changemusic "005-1", "mythica.ogg";
+ disablenpc("Mana Stone");
+ pvpon("005-1");
+ announce(l("##1WARNING! WARNING! Siege starting at Candor!!"), bc_all);
+ areamonster("005-1", 0, 0, 125, 125, l("Black Scorpion"), BlackScorpion, 1, "Ayasha::OnBlackScorpionDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("House Maggot"), HouseMaggot, 3, "Ayasha::OnHouseMaggotDeath");
+ initnpctimer;
+ close;
+
+
+OnBlackScorpionDeath:
+ dispbottom "BSD";
+ areamonster("005-1", 0, 0, 125, 125, l("Black Scorpion"), BlackScorpion, 1, "Ayasha::OnBlackScorpionDeath");
+ if (rand(10000) <= 900)
+ getitem StrangeCoin, 1;
+ debugmes "BSD OK";
+ end;
+
+OnManaGhostDeath:
+ dispbottom "MGD";
+ areamonster("005-1", 0, 0, 125, 125, l("Mana Ghost"), ManaGhost, 1, "Ayasha::OnManaGhostDeath");
+ if (rand(10000) <= 500)
+ getitem StrangeCoin, 1;
+ debugmes "MGD OK";
+ end;
+
+OnHouseMaggotDeath:
+ dispbottom "HMD";
+ areamonster("005-1", 0, 0, 125, 125, l("House Maggot"), ManaGhost, 1, "Ayasha::OnHouseMaggotDeath");
+ if (rand(10000) <= 400)
+ getitem StrangeCoin, 1;
+ debugmes "HMD OK";
+ end;
+
+OnTimer5000:
+ areamonster("005-1", 0, 0, 125, 125, "Black Scorpion", BlackScorpion, 1, "Ayasha::OnBlackScorpionDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("House Maggot"), HouseMaggot, 10, "Ayasha::OnHouseMaggotDeath");
+ mapannounce("003-1", "##2Message to all Candor NPCs: Take shelter!", bc_map);
+ disablenpc "Ayasha";
+ disablenpc "Charda";
+ disablenpc "Faris";
+ disablenpc "Ghada";
+ disablenpc "Latif";
+ disablenpc "Rasin";
+ disablenpc "Lilly";
+ disablenpc "Zegas";
+ disablenpc "Vincent";
+ disablenpc "Liana";
+ disablenpc "Maya";
+ disablenpc "Sailors#005-1";
+ disablenpc "Magic Barrier";
+ disablenpc "Tolchi";
+ disablenpc "Rosen";
+ disablenpc "Nylo";
+ disablenpc "Cynric";
+ disablenpc "Morgan";
+ disablenpc "Zitoni";
+ disablenpc "Trainer";
+ end;
+
+OnTimer60000:
+ areamonster("005-1", 0, 0, 125, 125, "Black Scorpion", BlackScorpion, 1, "Ayasha::OnBlackScorpionDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("Mana Ghost"), ManaGhost, 3, "Ayasha::OnManaGhostDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("House Maggot"), HouseMaggot, 5, "Ayasha::OnHouseMaggotDeath");
+ end;
+
+OnTimer120000:
+OnTimer180000:
+OnTimer240000:
+OnTimer300000:
+OnTimer360000:
+OnTimer420000:
+OnTimer480000:
+ areamonster("005-1", 0, 0, 125, 125, ("Slime Blast"), 1090, 1);
+ areamonster("005-1", 0, 0, 125, 125, ("Mana Ghost"), ManaGhost, 1, "Ayasha::OnManaGhostDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("House Maggot"), HouseMaggot, 1, "Ayasha::OnHouseMaggotDeath");
+ end;
+
+OnTimer540000:
+ mapannounce("005-1", "##1The Monster Army is getting tired of resistance!", bc_map);
+ areamonster("005-1", 0, 0, 125, 125, ("Slime Blast"), 1090, 5);
+ areamonster("005-1", 0, 0, 125, 125, ("Mana Ghost"), ManaGhost, 1, "Ayasha::OnManaGhostDeath");
+ areamonster("005-1", 0, 0, 125, 125, ("House Maggot"), HouseMaggot, 1, "Ayasha::OnHouseMaggotDeath");
+ end;
+
+OnTimer600000:
+ mapannounce("005-1", "##1The Monster King army is preparing to withdraw!", bc_map);
+ end;
+
+OnTimer630000:
+ removemapmask "005-1", MASK_MATTACK;
+ changemusic "005-1", "bartk_adventure.ogg";
+ enablenpc("Mana Stone");
+ killmonsterall("005-1", 0);
+ pvpoff("005-1");
+ announce(("Candor siege is over!"), bc_all);
+ enablenpc "Ayasha";
+ enablenpc "Charda";
+ enablenpc "Faris";
+ enablenpc "Ghada";
+ enablenpc "Latif";
+ enablenpc "Rasin";
+ enablenpc "Lilly";
+ enablenpc "Zegas";
+ enablenpc "Vincent";
+ enablenpc "Liana";
+ enablenpc "Maya";
+ enablenpc "Sailors#005-1";
+ enablenpc "Magic Barrier";
+ enablenpc "Tolchi";
+ enablenpc "Rosen";
+ enablenpc "Nylo";
+ enablenpc "Cynric";
+ enablenpc "Morgan";
+ enablenpc "Zitoni";
+ enablenpc "Trainer";
+ stopnpctimer;
+ end;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 5;
+ .RENT_TIME=0; // TODO: This could easily be a $GLOBAL_VARIABLE
+ end;
+}
+
+
+function script CheckEnfant {
+ @kids_count = 0;
+ @count_tmp = 0;
+ if ($@GM_OVERRIDE)
+ npctalk3 l("Hello, I am K-@@, of the @@ order.", @kids, $@KidsBits[@kids]);
+ if (STARTAREA & $@KidsBits[@kids])
+ goto L_Already;
+ STARTAREA = STARTAREA | $@KidsBits[@kids];
+
+ goto L_Loop;
+
+L_KidsTally:
+ if (debug || $@GM_OVERRIDE)
+ npctalk3 l("You found @@ out of @@ kids.", @kids_count, @count_tmp);
+ if (@kids_count == 6)
+ {
+ message strcharinfo(0), "That must have been the last kid.";
+ setq CandorQuest_HAS, 3;
+ }
+ speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
+ l("Oh! You found me. Good job!");
+ narrator("You receive 5 exp.");
+ getexp 5,0;
+ close;
+ return;
+
+L_Loop:
+ while (@count_tmp < 6) {
+ if (STARTAREA & $@KidsBits[@count_tmp])
+ @kids_count = (@kids_count + 1);
+ @count_tmp = (@count_tmp + 1);
+ }
+ goto L_KidsTally;
+
+L_Already:
+ mesn;
+ mesq l("Thanks for playing with us! Can you find my friends?");
+ close;
+
+ return;
+}
+005-1,76,100,0 script Charda NPC_CHILD8,{
+ @kids = 0;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ // This works at same var from KidsBits. We start counting from 10, then.
+ setarray $@KidsBits, (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15);
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}
+005-1,28,100,0 script Faris NPC_CHILD7,{
+ @kids = 1;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ .sex = G_MALE;
+ .distance = 1;
+ end;
+}
+005-1,91,31,0 script Ghada NPC_CHILD5,{
+ @kids = 2;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ .sex = G_MALE;
+ .distance = 1;
+ end;
+}
+005-1,45,68,0 script Latif NPC_HUMAN_M_ARTIS,{
+ @kids = 3;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ .sex = G_MALE;
+ .distance = 1;
+ end;
+}
+005-1,25,53,0 script Rasin NPC_CHILD3,{
+ @kids = 4;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ .sex = G_MALE;
+ .distance = 1;
+ end;
+}
+005-1,44,74,0 script Lilly NPC_CHILD6,{
+ @kids = 5;
+ if (getq(CandorQuest_HAS) == 2)
+ {
+ CheckEnfant();
+ } else {
+ mes l("The kid is not paying attention to you.");
+ close;
+ }
+ end;
+OnInit:
+ .sex = G_MALE;
+ .distance = 1;
+ end;
+}
+
+005-1,60,91,0 script AyashaDebug NPC_MONA,{
+ showavatar NPC_MONA; // this is handled by avatars.xml
+ mesn;
+ mesq l("Reset?");
+ next;
+ menu
+ l("Yes."), L_Reset,
+ l("Test"), L_Charda,
+
+ l("No."), L_Close;
+
+L_Reset:
+ setq CandorQuest_HAS, 0;
+ STARTAREA = STARTAREA &~ (1 << 10);
+ STARTAREA = STARTAREA &~ (1 << 11);
+ STARTAREA = STARTAREA &~ (1 << 12);
+ STARTAREA = STARTAREA &~ (1 << 13);
+ STARTAREA = STARTAREA &~ (1 << 14);
+ STARTAREA = STARTAREA &~ (1 << 15);
+ mes l("Reset!");
+ goto L_Close;
+
+L_Charda:
+ STARTAREA = STARTAREA &~ (1 << 10);
+ mes l("Charda clean!");
+ goto L_Close;
+
+L_Close:
+ //showavatar; // Use this to hide the showavatar
+ close;
+
+// Use @shownpc to enable AyashaDebug
+OnInit:
+ if (!debug)
+ disablenpc .name$;
+ end;
+}
diff --git a/npc/005-1/liana.txt b/npc/005-1/liana.txt
new file mode 100644
index 0000000..2916013
--- /dev/null
+++ b/npc/005-1/liana.txt
@@ -0,0 +1,110 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Saulc
+// Description:
+// Candor girl ask for maggot sliem every 6 hours
+// Variable:
+// CandorQuest_Liana
+// PS. Liana could (should) explain too the small cave north of there. It can be
+// a place to run, or maybe monsters there are natural and protect them from the
+// Mana Monsters, etc.
+
+005-1,54,96,0 script Liana NPC_ELVEN_FEMALE,{
+
+ mesn;
+ //mesq l("Hurnscald is a large city. I'm sure glad I live in Candor because I know where everything's at.");
+ mesq l("Monsters do not aim small towns like Candor. This city also comes with the plus that I know where everything's at.");
+ if (BaseLevel >= 5) goto L_Menu;
+ tutmes l("This quest will unlock at level 5."), l("Protip"), false;
+ close;
+
+L_Menu:
+ mesn;
+ mesq l("Are you enjoying yourself in Candor? Do you have any questions?");
+ mes "";
+ menu
+ l("What can I do with Maggot Slime?"),L_Slime,
+ l("What can I do with Bug Leg?"),L_Bug,
+ l("No, thanks."),L_Close;
+
+L_Slime:
+ mes "";
+ .@q=getq(CandorQuest_Liana);
+ mesq l("I collect them.");
+ tutmes l("Liana, like other NPCs, provide a repeatable quest. Once you finish it, you will be able to do it again, after waiting for a few hours.");
+ next;
+ if (.@q == 0) goto L_Quest;
+ if (gettimetick(2) >= LIANA_TIMER + 60 * 60 * 6) goto L_Repeat;
+ close;
+
+L_Quest:
+ mesq l("With this I make balls of slime for Candor's childs, they really like to play with them.");
+ next;
+ mesq l("Maybe you could bring me 5 @@? I will reward you for your effort.", getitemlink(MaggotSlime));
+ mes "";
+ menu
+ rif(countitem(MaggotSlime) >= 5, l("Here they are!")), L_Finish,
+ l("I'll get to it."), L_Close;
+ close; // double sure
+
+L_Repeat:
+ mesq l("I am searching again maggot slime to craft more balls.");
+ next;
+ mesq l("Maybe you could bring me 10 sticky @@?", getitemlink(MaggotSlime));
+ mes "";
+ menu
+ rif(countitem(MaggotSlime) >= 10, l("Here they are!")), L_Finish2,
+ l("I'll get to it."), L_Close;
+ close;
+
+L_Finish2:
+ delitem MaggotSlime, 10;
+ getexp 21, 0;
+ Zeny = (Zeny + 80); // 10*4 = 40 base
+ setq CandorQuest_Liana, 1;
+ set LIANA_TIMER, gettimetick(2);
+ mes "";
+ mesn;
+ mesq l("Many, many thanks! I'm sure the children will love it!");
+ close;
+
+L_Finish:
+ delitem MaggotSlime, 5;
+ getexp 58, 7;
+ Zeny = (Zeny + 30); // 5*4 = 20 base
+ setq CandorQuest_Liana, 1;
+ set LIANA_TIMER, gettimetick(2);
+ mes "";
+ mesn;
+ mesq l("Many, many thanks! I'm sure the children will love it!");
+ close;
+
+L_Bug:
+ mes "";
+ mesq l("Ah, personally I don't use it?");
+ next;
+ mes l("She shakes her head.");
+ next;
+ if (getq(CandorQuest_Vincent) < 2) {
+ mesq l("You should ask this question at Vincent.");
+ next;
+ mesq l("He is in the process of making a figurine made of bug leg.");
+ next;
+ } else {
+ mesq l("If you have a @@, perhaps you could use it as a bait.", getitemlink(FishingRod));
+ next;
+ mesq l("I guess it can also be used at quests... Or sell to Juliet, on Nard's ship.");
+ next;
+ }
+ mesq l("I hope my answer help you in your adventure!");
+ next;
+ mes l("she's smiling at you.");
+ goto L_Close;
+
+L_Close:
+ closedialog;
+ goodbye;
+ close;
+}
+
diff --git a/npc/005-1/mapflags.txt b/npc/005-1/mapflags.txt
new file mode 100644
index 0000000..e0cbd89
--- /dev/null
+++ b/npc/005-1/mapflags.txt
@@ -0,0 +1,8 @@
+005-1 mapflag town
+005-1 mapflag nopenalty
+//005-2 mapflag town // Saxso House
+005-3 mapflag town
+005-4 mapflag town
+005-5 mapflag town
+005-6 mapflag town
+005-7 mapflag town
diff --git a/npc/005-1/maya.txt b/npc/005-1/maya.txt
new file mode 100644
index 0000000..d990abc
--- /dev/null
+++ b/npc/005-1/maya.txt
@@ -0,0 +1,234 @@
+// TMW2 scripts.
+// Author:
+// Saulc
+// GonzoDark
+// Jesusalva
+// Variables:
+// 0 CandorQuest_Maya
+// Values:
+// 00 Default, no quest selected.
+// 01 First quest accepted: Need 3 cotton cloth and 3 maggot slime
+// 02 First quest completed: Reward Candor shirt
+// 03 Second quest accepted: Need 3 ScorpionStinger and 10 Piou Feathers
+// 04 Second quest completed: Reward 700 GP (precise calculation)
+// 05 wolvern tooth +20k + 2000monster point ->claw pendant
+
+005-1,49,47,0 script Maya NPC_RAIJIN_FEMALE_LEGION_ARTIS,{
+ function itemCombo;
+ .@maya = getq(CandorQuest_Maya);
+
+ if (.@maya == 0)
+ goto L_QuestNotStarted;
+ if (.@maya == 1)
+ goto L_QuestAccepted;
+ if (.@maya == 2)
+ goto L_Quest2;
+ if (.@maya == 3)
+ goto L_Quest2Accepted;
+ if (.@maya == 4)
+ goto L_NextQuestPending;
+
+L_QuestNotStarted:
+ mesn;
+ mesq l("Hi there, I can always use a helping hand around here, are you the one for the job?");
+ mes "";
+ menu
+ l("Sure"),L_Next,
+ l("No, thanks."),L_Close;
+
+L_Next:
+ mes "";
+ mesn;
+ mesq l("Good! First, let us test if you are resourceful. Bring me 3 @@ and 3 @@. That should be enough!", getitemlink(CottonCloth), getitemlink(MaggotSlime));
+ setq CandorQuest_Maya, 1;
+ tutmes l("You can use \"%s <monster_name>\" to obtain specified monster drop list and stats.", b("@monsterinfo")), l("Protip"), false;
+ close;
+
+L_QuestAccepted:
+ mesn;
+ mesq l("I see you have brought @@/3 @@ and @@/3 @@ for me",countitem(CottonCloth),getitemlink(CottonCloth),countitem(MaggotSlime),getitemlink(MaggotSlime));
+ mes "";
+ menu
+ rif(countitem(CottonCloth) >= 3 && countitem(MaggotSlime) >= 3, l("Here they are!")), L_QuestCompleted,
+ rif(countitem(CottonCloth) < 3 || countitem(MaggotSlime) < 3, l("Oh, then I don't have enough! I'll bring more later!")), L_GetHelp1,
+ l("Can we get back to that later?"), -;
+ tutmes l("You can use \"%s <monster_name>\" to obtain specified monster drop list and stats.", b("@monsterinfo")), l("Protip"), false;
+ close;
+
+L_GetHelp1:
+ mes "";
+ mesc l("Protip: You can get @@ from shops. Cotton is rumored to be magical, keep this is mind.", getitemlink(CottonCloth));
+ mesc l("Protip 2: If you fell stuck, ask at #world, even if nobody is online. Who knows, someone on Discord or IRC might reply!");
+ tutmes l("You can use \"%s <monster_name>\" to obtain specified monster drop list and stats.", b("@monsterinfo")), l("Protip"), false;
+ next;
+ goto L_Close;
+
+L_QuestCompleted:
+ delitem CottonCloth, 3;
+ delitem MaggotSlime, 3;
+ set Zeny, Zeny + 325;
+ getitem CandorShirt, 1;
+ getexp BaseLevel*8, 5;
+ setq CandorQuest_Maya, 2;
+
+ mes "";
+ mesn;
+ mesq l("Thanks for the help. Here, take this shirt and some money.");
+ close;
+
+L_Quest2:
+ mesn;
+ mesq l("Thanks again for the help. You have proven that you are resourceful.");
+ next;
+ if (BaseLevel < 7) mesn;
+ if (BaseLevel < 7) mesq l("But maybe you should help other people and get some levels before returning to me.");
+ if (BaseLevel < 7) close;
+ mesn;
+ mesq l("As always, I can use a helping hand around here. Interested?");
+ mes "";
+ menu
+ l("Sure"),-,
+ l("No, thanks."),L_Close;
+
+ mes "";
+ mesn;
+ mesq l("Good! I want 3 @@ and 10 @@. I have a contract to transform that in good money.",
+ getitemlink(ScorpionStinger), getitemlink(PiouFeathers));
+ setq CandorQuest_Maya, 3;
+ close;
+
+L_Quest2Accepted:
+ mesn;
+ mesq l("I see you have brought @@/3 @@ and @@/10 @@ for me.",
+ countitem(ScorpionStinger),getitemlink(ScorpionStinger),
+ countitem(PiouFeathers),getitemlink(PiouFeathers));
+ mes "";
+ menu
+ rif(countitem(ScorpionStinger) >= 3 && countitem(PiouFeathers) >= 10, l("Here they are!")), L_Quest2Completed,
+ rif(countitem(ScorpionStinger) < 3 || countitem(PiouFeathers) < 10, l("Oh, then I don't have enough! I'll bring more later!")), L_Close,
+ l("Can we get back to that later?"), -;
+ close;
+
+L_Quest2Completed:
+ delitem ScorpionStinger, 3;
+ delitem PiouFeathers, 10;
+ set Zeny, Zeny + 725;
+ getexp BaseLevel*10, 10;
+ setq CandorQuest_Maya, 4;
+
+ // Reward Calculation: Piou base is 3 and Stinger base is 25.
+ // Maya will pay in a 1.5x factor + 300 GP she owed you + a small bonus to round things
+ // (3*3*1.5)+(25*10*1.5) = roughly 389 GP + 300 + bonus(11) = 700
+
+ mes "";
+ mesn;
+ mesq l("Thanks for the help! If you help people, they'll start trusting you. Once they trust you, they'll give you quests which are very important to them;");
+ next;
+ mesn;
+ mesq l("And once they entrust you with what is important for them, they'll pay better. Here is 700 GP. Come back later.");
+ close;
+
+
+L_NextQuestPending:
+ mesn;
+ mesq l("Thanks again for the help. You have proven that you are resourceful. Come back again later.");
+ switch (getequipid(EQI_HEAD_MID)) {
+ case CreasedShirt:
+ itemCombo(l("Creased"), l("All Stats +1"),
+ CreasedShirt, CreasedBoots, CreasedGloves, CreasedShorts);
+ break;
+ case CandorShirt:
+ itemCombo(l("Candor"), l("All Stats +1, Max HP +1%"),
+ CandorShirt, CandorBoots, CandorGloves, CandorShorts, CandorHeadBand);
+ break;
+ case CottonShirt:
+ itemCombo(l("Cotton"), l("All Stats +1, Max HP +1%, Max MP +5%"),
+ CottonShirt, CottonBoots, CottonGloves, 0,
+ CottonShorts, CottonTrousers, CottonSkirt, MiniSkirt);
+ break;
+ case MinerTankTop:
+ itemCombo(l("Miner"), l("All Stats +1, Vit +2"),
+ MinerTankTop, MinerGloves, MinerHat, 0,
+ MinerKnife, Pickaxe);
+ break;
+ case WarlordPlate:
+ itemCombo(l("Warlord"), l("All Stats +1, Block +2%"),
+ WarlordPlate, WarlordBoots, WarlordGloves, WarlordPants, WarlordHelmet);
+ break;
+ case GoldenWarlordPlate:
+ itemCombo(l("Golden Warlord"), l("All Stats +1, Block +2%"),
+ GoldenWarlordPlate, WarlordBoots, WarlordGloves, WarlordPants, WarlordHelmet);
+ break;
+ case Chainmail:
+ itemCombo(l("Chainmail"), l("Block +1%"),
+ Chainmail, ChainmailSkirt);
+ break;
+ case GoldenChainmail:
+ itemCombo(l("Golden Chainmail"), l("Block +1%"),
+ GoldenChainmail, ChainmailSkirt);
+ break;
+ case TerraniteArmor:
+ itemCombo(l("Terranite"), l("All Stats +1, MDEF +30%"),
+ TerraniteArmor, TerraniteBoots,
+ TerranitePants, TerraniteMask);
+ break;
+ case LeatherShirt:
+ itemCombo(l("Leather"), l("All Stats +2"),
+ LeatherShirt, LeatherBoots, LeatherGloves, LeatherTrousers);
+ break;
+ case AssassinChest:
+ itemCombo(l("Assassin"), l("All Stats +1, Agi +5"),
+ AssassinChest, AssassinBoots, AssassinGloves, AssassinPants);
+ break;
+ case SaviorArmor:
+ itemCombo(l("Savior"), l("All Stats +5"),
+ SaviorArmor, SaviorBoots, SaviorPants, SaviorHelmet, 0,
+ SaviorShield, Skypiercer);
+ break;
+ case SilkRobe:
+ itemCombo(l("Silk"), l("Passive MP Regen"),
+ SilkRobe, CottonBoots, 0,
+ SilkGloves, CottonGloves);
+ break;
+ case SorcererRobe:
+ itemCombo(l("Sorcerer"), l("Passive MP Regen"),
+ SorcererRobe, 0,
+ CottonBoots, WizardMoccasins, WitchBoots, 0,
+ CottonGloves, SilkGloves);
+ break;
+ }
+ close;
+
+function itemCombo {
+ next;
+ mesn;
+ mesq l("I see you're trying to use the %s set, nice!", b(getarg(0)));
+ mesq l("This set grants the following effect when complete:");
+ mesc getarg(1), 3;
+ next;
+ mesn;
+ mesq l("This set is composed by the following items:");
+ mes "";
+ for (.@i = 2; .@i < getargcount(); .@i++) {
+ if (getarg(.@i) <= 0)
+ mesc l("--- AND ANY OF ---");
+ else
+ mesc l("* %s", getitemlink(getarg(.@i))),(countitem(getarg(.@i)) ? 3 : 9);
+ }
+ mes "";
+ next;
+ mesn;
+ mesq l("To get the combo, you must fill all slots if one of the listed items. Usually any of the listed ones will do, but in rare cases it won't!");
+ return;
+}
+
+L_Close:
+ closedialog;
+ goodbye;
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 4;
+ end;
+}
diff --git a/npc/005-1/sailors.txt b/npc/005-1/sailors.txt
new file mode 100644
index 0000000..633e195
--- /dev/null
+++ b/npc/005-1/sailors.txt
@@ -0,0 +1,157 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Crazyfefe
+// Description:
+// A Sailor from Nard's crew.
+// CandorQuest_Sailors
+// 0: Not started
+// 1: Accepted
+// 2: Invite Elmo
+// 3: Completed
+
+005-1,102,109,0 script Sailors#005-1 NPC_ELVEN_MAN_TRADER_SITTING,{
+ .@q = getq(CandorQuest_Sailors);
+ if (.@q == 1)
+ goto L_Report;
+ if (.@q == 2)
+ goto L_Elmo;
+ if (.@q == 3)
+ goto L_Complete;
+ if ( BaseLevel < 8) { hello; end; }
+
+ mesn;
+ mesq l("Ahoy matey!");
+ next;
+ mesq l("Arr, it is always good to be on land after so much time in sea!");
+ next;
+ mesq l("We want to celebrate this moment, but can you believe we ran out of beer?");
+ mes "";
+ menu
+ l("If I were you, I would drink water."),L_Water,
+ l("WHAT? How can you ever party without beer?!"),L_Accept;
+
+L_Water:
+ mes "";
+ mesn;
+ mesq l("Ah, it is not the same. Not the same.");
+ next;
+ mesq l("When I am drunk I tell myself to stop drinking, but I won't listen the words of a drunkard.");
+ close;
+
+L_Accept:
+ mes "";
+ mesn;
+ mesq l("We can't, don't you agree?!");
+ next;
+ mesq l("However, if we waste the ship's money in beer, Nard will get mad.");
+ next;
+ mesq l("We won't be able to pay you in money, but we'll make you one of us if you bring us beer!");
+ next;
+ mesq l("Please bring us 5 @@! That should be enough!", getitemlink("Beer"));
+ setq CandorQuest_Sailors, 1;
+ close;
+
+L_Report:
+ mesn;
+ mesq l("I see you brought @@/5 @@ for us!",countitem("Beer"),getitemlink("Beer"));
+ mes "";
+ menu
+ rif(countitem("Beer") >= 5, l("Indeed, matey! Here they are!")), L_Give,
+ rif(countitem("Beer") >= 5, l("You're doing the math wrong, matey! I'll bring them later!")), L_Later,
+ rif(countitem("Beer") < 5, l("Arr, that's not enough! I'll bring more later!")), L_Later;
+ close;
+
+L_Later:
+ mes "";
+ mesn;
+ mesq l("Arr, we will wait for you then! We still have tasks to complete!");
+ close;
+
+L_Give:
+ inventoryplace Bandana, 1;
+ delitem "Beer", 5;
+ getitem Bandana, 1;
+ getexp 35, 5;
+ setq CandorQuest_Sailors, 2;
+ mes "";
+ mesn;
+ mesq l("Arr, that's some fine ale! We can do the party when we're done with our work!");
+ next;
+ mesn;
+ mesq l("Take this @@ to prove you're one of us! Could you also invite Elmo? Thanks, matey!", getitemlink("Bandana"));
+ close;
+
+
+L_Elmo:
+ mesn;
+ mesq l("Please invite Elmo for the party, matey! We can't leave our positions!");
+ close;
+
+L_Complete:
+ .@q = getq(CandorQuest_SailorCure);
+ mesn;
+ mesq l("Thanks for the help! Arr, that was some fine ale, indeed!");
+ if (.@q == 1)
+ close;
+ next;
+ mesn;
+ mesq l("A pity a friend of ours drank too much. Juliet knows how to cure. We need to give her a @@ to do a hangover potion.", getitemlink(ScorpionStinger));
+
+L_CureMaster:
+ if (countitem(ScorpionStinger) < 1)
+ close;
+ next;
+ mesn;
+ mesq l("...Dealing with scorpion stingers is a gamble, so we may need a few stingers before making a successful potion.");
+ next;
+ select
+ rif(countitem(ScorpionStinger) >= 1, l("I have a Stinger with me. Try it!")),
+ l("I see.");
+
+ mes "";
+
+ if (@menu == 1)
+ goto L_CureLoop;
+ close;
+
+L_CureLoop:
+ inventoryplace CandorBoots, 1;
+ delitem ScorpionStinger,1;
+ setq2 CandorQuest_SailorCure, getq2(CandorQuest_SailorCure)+1;
+ if (rand(5) == 2) // Crazyfefe like this number :3
+ goto L_questCure_success;
+ goto L_questCure_failure;
+
+L_questCure_success:
+ if (getq2(CandorQuest_SailorCure) * 30 < 240)
+ Zeny = Zeny + 240 - getq2(CandorQuest_SailorCure) * 30;
+ else
+ Zeny = Zeny + 30;
+ getitem CandorBoots, 1;
+ getexp 20, 2;
+ setq CandorQuest_SailorCure, 1;
+ mesn;
+ mesq l("That... It... It worked! This is just the right claw!");
+ next;
+ mesn;
+ mesq lg("We'll bring this one to Juliet at once. Thanks for your help! Savior!");
+ close;
+
+L_questCure_failure:
+ if (getq2(CandorQuest_SailorCure) * 30 < 240)
+ Zeny = Zeny + 60;
+ else
+ Zeny = Zeny + 30;
+ mesn;
+ mesq l("That... Didn't work. I'm sorry.");
+ next;
+ mesn;
+ mesq l("Here's some gold for your efforts.");
+ goto L_CureMaster;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 7;
+ end;
+}
diff --git a/npc/005-1/saxso.txt b/npc/005-1/saxso.txt
new file mode 100644
index 0000000..5bc728f
--- /dev/null
+++ b/npc/005-1/saxso.txt
@@ -0,0 +1,23 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+
+// Sign of great danger
+005-1,37,90,0 script #SignSaxso NPC_NO_SPRITE,{
+ mes ".:: "+l("DANGER")+" ::.";
+ mesc l("Saxso's Official Residence.");
+ mesc l("DO NOT ENTER.");
+ mes "";
+ mesc l("-- Zegas, the Mayoress");
+ tutmes l("In some dungeons etc., there might be a monster much, much stronger than all other monsters on the area. These are the optional miniboss."), l("Optional Miniboss");
+ tutmes l("Defeating is entirely optional. They usually give more experience than the average, but are much stronger and dangerous."), l("Optional Miniboss");
+ tutmes l("Usually they have a few rare drops. The miniboss of Candor may drop a rare key, which you can use to open a certain chest..."), l("Optional Miniboss");
+ tutmes l("(Protip: Always use %s before engaging a different monster!)", b("@monsterinfo")), l("Optional Miniboss");
+ close;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 3;
+ end;
+}
+
diff --git a/npc/005-1/ship.txt b/npc/005-1/ship.txt
new file mode 100644
index 0000000..3b333be
--- /dev/null
+++ b/npc/005-1/ship.txt
@@ -0,0 +1,17 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// This script controls access to Nard's Ship, fixing variables.
+
+005-1,50,117,0 script CandorShip NPC_HIDDEN,0,0,{
+
+OnTouch:
+ LOCATION$="Candor";
+ goto L_Warp;
+
+L_Warp:
+ warp "002-3@"+LOCATION$, 31, 28;
+ closedialog;
+ close;
+}
diff --git a/npc/005-1/soul-menhir.txt b/npc/005-1/soul-menhir.txt
new file mode 100644
index 0000000..6ea59bf
--- /dev/null
+++ b/npc/005-1/soul-menhir.txt
@@ -0,0 +1,20 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Soul Menhir
+
+005-1,43,97,0 script Soul Menhir#candor NPC_SOUL_MOSS,{
+ @map$ = "005-1";
+ setarray @Xs, 42, 43, 44, 42, 44, 42, 43, 44;
+ setarray @Ys, 96, 96, 96, 97, 97, 98, 98, 98;
+ @x = 0;
+ @y = 0;
+ callfunc "SoulMenhir";
+ @map$ = "";
+ cleararray @Xs[0], 0, getarraysize(@Xs);
+ cleararray @Ys[0], 0, getarraysize(@Ys);
+ @x = 0;
+ @y = 0;
+ close;
+}
diff --git a/npc/005-1/underground.txt b/npc/005-1/underground.txt
new file mode 100644
index 0000000..bd5b214
--- /dev/null
+++ b/npc/005-1/underground.txt
@@ -0,0 +1,41 @@
+// TMW2 Script
+// Author:
+// Crazyfefe
+// Jesusalva
+
+005-1,65,63,0 script Sign#0051UG NPC_SWORDS_SIGN,{
+ mes ".:: "+l("DANGER")+" ::.";
+ mesc l("Endless, cute, dangerous, deadly.");
+ mesc l("Only those whom overcome all Candor Challenges shall wield ultimate power.");
+ mes "";
+ mesc l("-- The Expedition");
+ close;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 3;
+ end;
+}
+
+// Effective Warp
+005-1,66,62,0 script Magic Barrier#0051 NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ if (TUTORIAL && !@candor_warn) {
+ mesc ".:: "+l("WARNING")+" ::.", 1;
+ mesc l("You're about to enter a dangerous zone!");
+ mesc l("Outside towns, there's an EXP penalty if you die.");
+ mes "";
+ mes l("This cave is considered outside the town!");
+ next;
+ mesc l("Enter anyway?");
+ mesc l("EXP Penalty: ON"), 1;
+ if (askyesno() == ASK_NO) close;
+ closeclientdialog;
+ @candor_warn = true; // Maybe record this in a more definitive way
+ }
+ warp "006-0", 49, 53;
+ end;
+}
+
diff --git a/npc/005-1/vincent.txt b/npc/005-1/vincent.txt
new file mode 100644
index 0000000..7b6e7e2
--- /dev/null
+++ b/npc/005-1/vincent.txt
@@ -0,0 +1,78 @@
+// TMW2 scripts.
+// Authors:
+// Saulc
+// Variables:
+// CandorQuest_Vincent - quest var
+
+
+005-1,99,105,0 script Vincent NPC_PLAYER,{
+ .@q = getq(CandorQuest_Vincent);
+ if (.@q == 1) goto L_CheckItems;
+ if (.@q == 2) goto L_QuestDone;
+
+ speech S_LAST_BLANK_LINE,
+ l("I am making a figurine with Bug legs for the upcoming festival."),
+ lg("Be a friend and bring me @@ @@.", "Be a friend and bring me @@ @@.", .LegsCount, getitemlink(BugLeg));
+
+ switch (select(l("Ok, I'll be back in no time."),
+ rif(countitem(BugLeg) >= .LegsCount, l("I have them here already.")),
+ l("Sorry, I'm doing other things at the moment.")))
+ {
+ case 1:
+ setq CandorQuest_Vincent, 1;
+ speech S_FIRST_BLANK_LINE,
+ l("Thank you. I'll wait here.");
+ close;
+ case 2:
+ setq CandorQuest_Vincent, 1;
+ goto L_CheckItems;
+ case 3:
+ speech S_FIRST_BLANK_LINE,
+ l("But I'm almost out of @@...", getitemlink(BugLeg));
+ close;
+ }
+
+L_CheckItems:
+ if (countitem(BugLeg) < .LegsCount)
+ {
+ speech
+ l("Sorry, but you don't have what I need."),
+ l("I need @@ @@.", .LegsCount, getitemlink(BugLeg));
+ close;
+ }
+
+ speech
+ l("I can't believe it! You've brought me @@ @@!", .LegsCount, getitemlink(BugLeg)),
+ l("That's exactly what I needed!"),
+ l("I will be forever grateful!");
+
+ delitem BugLeg, .LegsCount;
+ getexp 15, 5;
+ Zeny = Zeny + 850;
+ message strcharinfo(0), l("You receive @@ GP!", 850);
+ setq CandorQuest_Vincent, 2;
+ close;
+
+L_QuestDone:
+ speech
+ l("Hey, @@!", strcharinfo(0)),
+ l("My figurine is so nice!");
+ tutmes l("Some quests and events, like the festival, are only available during specific times.");
+ tutmes l("Some will only repeat yearly, while other events happen weekly or monthly, or in some other time aspect.");
+ close;
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, CreasedShirt);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, CreasedShorts);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 25);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .LegsCount = 7;
+
+ .sex = G_MALE;
+ .distance = 5;
+ end;
+}
diff --git a/npc/005-1/wateranimation.txt b/npc/005-1/wateranimation.txt
new file mode 100644
index 0000000..cb8ae56
--- /dev/null
+++ b/npc/005-1/wateranimation.txt
@@ -0,0 +1,37 @@
+// TMW2 scripts.
+// Author:
+// Saulc
+// Description:
+// Water animations, splash, fishes, etc...
+
+005-1,81,62,0 script #water_animation_candor0 NPC_WATER_SPLASH,{
+
+ fishing(1,
+ Roach,
+ Tench); // begin or continue fishing
+ close;
+
+OnInit:
+ setarray .bait_ids,
+ SmallTentacles, 24,
+ PiouLegs, 1,
+ Bread, 8,
+ Aquada, 24,
+ Tentacles, 32,
+ BugLeg, 2;
+
+ .sex = G_OTHER;
+ .distance = 4;
+ end;
+}
+
+005-1,84,66,0 duplicate(#water_animation_candor0) #water_animation_candor1 NPC_WATER_SPLASH
+005-1,74,66,0 duplicate(#water_animation_candor0) #water_animation_candor2 NPC_WATER_SPLASH
+005-1,76,70,0 duplicate(#water_animation_candor0) #water_animation_candor3 NPC_WATER_SPLASH
+005-1,79,71,0 duplicate(#water_animation_candor0) #water_animation_candor4 NPC_WATER_SPLASH
+005-1,78,62,0 duplicate(#water_animation_candor0) #water_animation_candor5 NPC_WATER_SPLASH
+005-1,55,61,0 duplicate(#water_animation_candor0) #water_animation_candor6 NPC_WATER_SPLASH
+005-1,49,64,0 duplicate(#water_animation_candor0) #water_animation_candor7 NPC_WATER_SPLASH
+005-1,56,65,0 duplicate(#water_animation_candor0) #water_animation_candor8 NPC_WATER_SPLASH
+005-1,48,66,0 duplicate(#water_animation_candor0) #water_animation_candor9 NPC_WATER_SPLASH
+
diff --git a/npc/005-1/zegas.txt b/npc/005-1/zegas.txt
new file mode 100644
index 0000000..a623f32
--- /dev/null
+++ b/npc/005-1/zegas.txt
@@ -0,0 +1,144 @@
+// TMW2 Script
+// Author:
+// Unknown
+// Description:
+// Saxso's widow. Asks new players to trigger a bug bomb in the storehouse.
+
+005-1,43,85,0 script Zegas NPC_MONA,{
+ function lagTutorial;
+ .@q = getq(CandorQuest_Barrel);
+ if (BaseLevel < 5)
+ goto L_Weak;
+ if (.@q == 1)
+ goto L_Find;
+ if (.@q == 2)
+ goto L_Looking;
+ if (.@q == 3)
+ goto L_QuestEnd;
+ if (.@q == 4)
+ goto L_Thanks;
+ goto L_Meet;
+
+L_Weak:
+ mesn;
+ mesq l("Do not enter in this storehouse, the maggots there will kill you.");
+ close;
+
+L_Meet:
+ mesn;
+ mesq l("Hey do you have a second?");
+ next;
+ mesq l("The storehouse here is overrun with house maggots.");
+ next;
+ mesq l("Wouldn't you know it, the bug bomb Eomie gave us is in one of the store room barrels.");
+ next;
+ mesq l("Can you search ##Bthe barrels##b for the bug bomb and set it off when you find it?");
+ setq CandorQuest_Barrel, 1;
+ menu
+ l("Sure."),L_Start,
+ l("Maybe some other time."),L_Close;
+
+L_Find:
+ mesn;
+ mesq l("The storehouse is still over run with house maggots.");
+ next;
+ mesq l("Please help me find the bug bomb Eomie gave us is in one of the store room barrels?");
+ menu
+ l("Sure."),L_Start,
+ l("Maybe some other time."),L_Close;
+
+L_Start:
+ mesn;
+ mesq l("Thanks, come back and see me once you found the bug bomb and set it off.");
+ setq CandorQuest_Barrel, 2;
+ lagTutorial();
+ close;
+
+L_Looking:
+ mesn;
+ mesq l("Still haven't found it? Well, keep looking the barrels at this storehouse. I know it's in there, somewhere.");
+ if (TUTORIAL) {
+ mesc l("Read the tutorial again?");
+ if (askyesno() == ASK_YES)
+ lagTutorial();
+ }
+ close;
+
+L_QuestEnd:
+ mesn;
+ mesq l("From the smell I can see you found the bug bomb!");
+ mesq l("Thanks once again, I know it's not much but here is @@ GP for your troubles.", 350);
+ getexp 63, 0;
+ getitem CandorShorts, 1;
+ Zeny = (Zeny + 350);
+ setq CandorQuest_Barrel, 4;
+ close;
+
+L_Thanks:
+ mesn;
+ mesq l("Thanks for Helping with clear out the store room!");
+ if (!getq(CandorQuest_Chest)) {
+ next;
+ mesn;
+ mesq l("Do you see that fancy house over there? My husband, @@, used to live there.", b(l("Saxso")));
+ next;
+ mesn;
+ mesq l("Strangely enough, when he died, he became a ghost. This shouldn't happen, but yet...");
+ next;
+ mesn;
+ mesq l("Anyway, conspiratory theories aside, his ghost is a powerful boss. I would not attack him if I were you!");
+ }
+ close;
+
+L_Close:
+ closedialog;
+ goodbye;
+ close;
+
+function lagTutorial {
+ // TUTORIAL block
+ tutmes l("The bugs there can be pretty vicious. Do you know what's worse though? Lag.");
+ tutmes l("By pressing @@, you can open the Shortcut menu. And by pressing @@, you open the skill menu!", b("F8"), b("F5"));
+ tutmes l("If you drag the \"Resync\" skill from the skill list to the shortcut list, you'll be able to rapidly solve some lag issues!");
+ tutmes l("Of course, lag might always be a problem. Remember to drag healing items to the shortcut list too. %%2");
+ return;
+}
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 4;
+ end;
+}
+
+005-1,32,73,0 script ZegasDebug NPC_MONA,{
+ showavatar NPC_MONA; // this is handled by avatars.xml
+ mesn;
+ mesq l("Reset?");
+ next;
+ menu
+ l("Yes."), L_Reset,
+ l("No."), L_Close;
+
+L_Reset:
+ setq CandorQuest_Barrel, 0;
+ STARTAREA = STARTAREA &~ (1 << 2);
+ STARTAREA = STARTAREA &~ (1 << 3);
+ STARTAREA = STARTAREA &~ (1 << 4);
+ STARTAREA = STARTAREA &~ (1 << 5);
+ STARTAREA = STARTAREA &~ (1 << 6);
+ STARTAREA = STARTAREA &~ (1 << 7);
+ STARTAREA = STARTAREA &~ (1 << 8);
+ STARTAREA = STARTAREA &~ (1 << 9);
+ mes l("Reset!");
+ close;
+
+L_Close:
+ //showavatar; // Use this to hide the showavatar
+ close;
+
+// Use @shownpc to enable ZegasDebug
+OnInit:
+ if (!debug)
+ disablenpc "ZegasDebug";
+ end;
+}