summaryrefslogtreecommitdiff
path: root/npc/014-2
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/014-2
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/014-2')
-rw-r--r--npc/014-2/_import.txt8
-rw-r--r--npc/014-2/_mobs.txt13
-rw-r--r--npc/014-2/_warps.txt6
-rw-r--r--npc/014-2/carla.txt197
-rw-r--r--npc/014-2/guards.txt47
-rw-r--r--npc/014-2/mouboo.txt235
-rw-r--r--npc/014-2/trap.txt52
7 files changed, 558 insertions, 0 deletions
diff --git a/npc/014-2/_import.txt b/npc/014-2/_import.txt
new file mode 100644
index 0000000..1ee7fb0
--- /dev/null
+++ b/npc/014-2/_import.txt
@@ -0,0 +1,8 @@
+// Map 014-2: Woodlands Southeast
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/014-2/_mobs.txt",
+"npc/014-2/_warps.txt",
+"npc/014-2/carla.txt",
+"npc/014-2/guards.txt",
+"npc/014-2/mouboo.txt",
+"npc/014-2/trap.txt",
diff --git a/npc/014-2/_mobs.txt b/npc/014-2/_mobs.txt
new file mode 100644
index 0000000..1f638e0
--- /dev/null
+++ b/npc/014-2/_mobs.txt
@@ -0,0 +1,13 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 014-2: Woodlands Southeast mobs
+014-2,150,63,86,43 monster Log Head 1066,25,30000,20000
+014-2,66,45,58,26 monster Mouboo 1023,6,30000,20000
+014-2,108,60,52,58 monster Forest Mushroom 1060,12,40000,25000
+014-2,29,74,19,27 monster Fluffy 1022,5,30000,20000
+014-2,207,65,40,50 monster Sea Slime 1093,6,42000,20000
+014-2,125,84,157,54 monster Alpha Mouboo 1056,2,120000,120000
+014-2,132,59,90,35 monster Squirrel 1032,28,30000,42000
+014-2,143,74,137,117 monster Cobalt Plant 1136,3,45000,50000
+014-2,148,70,137,117 monster Mauve Plant 1135,3,45000,50000
+014-2,154,66,137,117 monster Gamboge Plant 1134,3,45000,50000
+014-2,125,23,125,37 monster Clover Field 1028,6,45000,50000
diff --git a/npc/014-2/_warps.txt b/npc/014-2/_warps.txt
new file mode 100644
index 0000000..c159673
--- /dev/null
+++ b/npc/014-2/_warps.txt
@@ -0,0 +1,6 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 014-2: Woodlands Southeast warps
+014-2,179,21,0 warp #014-2_179_21 3,0,012-1,78,101
+014-2,232,20,0 warp #014-2_232_20 2,0,012-1,132,100
+014-2,183,76,0 warp #014-2_183_76 0,0,014-2-2,34,34
+014-2,49,24,0 warp #014-2_49_24 1,0,014-3,130,134
diff --git a/npc/014-2/carla.txt b/npc/014-2/carla.txt
new file mode 100644
index 0000000..ae1a738
--- /dev/null
+++ b/npc/014-2/carla.txt
@@ -0,0 +1,197 @@
+// TMW2 Script
+// Author:
+// Saulc
+// Jesusalva
+// Description:
+// Carla the Woody wife in old shaman girl. She kept house entrance from years.
+// id:100 HurnscaldQuest_Woody
+// 0 - Not aware of the quest
+// 1 - Know about winter
+// 2 - Quest Accepted
+// 3 - Quest Complete
+// 4+ - see woody
+
+014-2,104,31,0 script Carla NPC_RAIJIN_FEMALE_WAITRESS,{
+ .@quest = getq(HurnscaldQuest_Woody);
+ if (BaseLevel < 25) goto L_TooWeak;
+ if (.@quest == 1) goto L_Start;
+ if (.@quest == 2) goto L_Check;
+ if (.@quest >= 3) goto L_Complete;
+
+L_GiveTask:
+ mesn;
+ mesq lg("Hello, new wanderer!");
+ next;
+ mesq l("Be careful to not get lost in the forest.");
+ next;
+
+ menu
+ l("Hey, do not mistake me for a child."), L_Quit,
+ l("Hello, I'm looking for bandit hoods!"), L_Hood,
+ l("Hey! I want to enter in this house!"), L_Force,
+ l("Hello, who are you?"), L_Quest,
+ l("I don't have time sorry."), L_Quit;
+
+
+L_Quest:
+ mes "";
+ mesn;
+ mesq l("I'm Carla the Woody Wife, I have lived here with Woody for many years! We decided to live away from civilization, as hunter and shaman life is way better.");
+ next;
+ mesn;
+ mesq l("But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!");
+ next;
+
+ menu
+ l("Isn't hard to live alone?"), L_Start,
+ l("Where is Woody?"), L_Woody,
+ l("Ok grandma CYA!"), L_Quit;
+
+
+L_Start:
+ setq HurnscaldQuest_Woody, 1;
+ mes "";
+ mesn;
+ mesq l("No, we've done this for our whole life, and we have survived!");
+ next;
+ mesn;
+ mesq l("My shaman skills protected us against monsters and thieves!");
+ next;
+
+ menu
+ l("Hey if you want I can do some physical work for you!"), L_Ask,
+ l("Can you teach me a basic shaman skill? please?"), L_Skill,
+ l("Oh no! I will miss my bus! Gotta go!"), L_Quit;
+
+L_Ask:
+ setq HurnscaldQuest_Woody, 2;
+ mes "";
+ mesn;
+ mesq l("Oh yeah some work is really painful, especially for my back, and I cant bother Woody to do it, he has so many difficulties moving.");
+ next;
+ mesn;
+ if (season() != WINTER)
+ mesq l("I need you to bring me some basic items to face Winter! Fire is the most important for us.");
+ else
+ mesq l("Winter this year is really harsh! Fire is the most important for us.");
+ next;
+ goto L_List;
+
+L_Quit:
+ mes "";
+ mesn;
+ mesq l("Alright.");
+ close;
+
+L_List:
+ mes "";
+ mesn;
+ mes l("Would be nice if you could bring me these:");
+ mes l("@@/40 @@", countitem(RawLog), getitemlink(RawLog));
+ mes l("@@/5 @@", countitem(Coal), getitemlink(Coal));
+ close;
+
+L_Check:
+ mesn;
+ mesq l("Hey, did you bring me everything I asked for?");
+ next;
+ menu
+ l("Yes! It is heavy."), L_Give,
+ l("humm... Sorry, I forgot what you need!"), L_List,
+ l("I don't have them, actually."), L_Quit;
+
+L_Give:
+ if (
+ countitem(RawLog) < 40 ||
+ countitem(Coal) < 5
+ ) goto L_Nope;
+
+ inventoryplace RedApple, 3;
+
+ delitem(RawLog, 40);
+ delitem(Coal, 5);
+
+ getitem(RedApple, 3);
+ getexp(3000, 50);
+ setq(HurnscaldQuest_Woody, 3);
+
+ mes "";
+ mesn;
+ mesq l("Thank you, We are now friends, You can visit us when you want!");
+ close;
+
+L_Complete:
+ mesn;
+ mesq l("Wandering too much? Take care to not get lost.");
+ close;
+
+L_Woody:
+ mes "";
+ mesn;
+ mesq l("Woody is inside, he is probably crafting some stuff with animals pelts.");
+ close;
+
+L_Hood:
+ mes "";
+ mesn;
+ mesq l("You search for Bandit hoods.");
+ next;
+ mesn;
+ mesq l("You could find some bandits in the Bandit cave. Yeah, the name wasn't given for nothing.");
+ next;
+ mesn;
+ mesq l("To get there you need to go left, follow rock wall and go up when you can. The entrance to the Bandit cave is on left side of the waterfall.");
+ close;
+
+L_Force:
+ mes "";
+ mesn;
+ mesq l("Strangers and monsters aren't allowed in MY house!");
+ next;
+ mesn;
+ mesq l("Anyway, my herb mixture keeps monsters away.");
+ close;
+
+L_Skill:
+ mes "";
+ mesn;
+ //mesq l("I don't know if jesusalva allow me to teach you a basic shaman skill!? .");
+ // I don't, but a monster repellent would be nice. Does such skill exist/work?
+ mesq l("Well, I know a mixture to keep monsters away. I just can't share it with you now.");
+ next;
+ mesn;
+ mesq l("You see, it need certain special items... Oh, just blame Jesusalva for this one.");
+ close;
+
+L_Nope:
+ mesn;
+ mesc l("humm... You don't have everything I've asked for!");
+ next;
+ mesn;
+ mesq l("Can you come back with all the items I asked for? Please.");
+ next;
+ goto L_List;
+
+L_TooWeak:
+ mesn;
+ mesq l("You should not be there! This forest is home to monsters.");
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 4;
+ end;
+}
+
+014-2,103,29,0 script Woody Barrier NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ .@q=getq(HurnscaldQuest_Woody);
+ if (.@q >= 3)
+ warp "014-2-1", 33, 44;
+ else
+ npctalk3 l("The door is locked, you should speak to Carla about it.");
+ end;
+}
+
diff --git a/npc/014-2/guards.txt b/npc/014-2/guards.txt
new file mode 100644
index 0000000..ef41931
--- /dev/null
+++ b/npc/014-2/guards.txt
@@ -0,0 +1,47 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Access to Eternal Swamps
+
+014-2,58,103,0 script Guard Jennifer NPC_GUARD2,{
+OnMain:
+ mesn;
+ mesq l("Halt! Beyond this gate, is the Great River and the Eternal Swamps.");
+ next;
+ mesn;
+ mesq l("Was not it only flooded constantly, the graveyard is not too far. If you stray away from the path, you'll get lost.");
+ next;
+ .@fd=!(getmapmask("011-3")&1024); // .@fd - is flooded?
+ if (!.@fd) {
+ mesn;
+ mesq l("Various people already went missing, including GMs. This is why if you plan to cross, ")+l(b("You won't be allowed to walk sideways, except to avoid a monster or two."));
+ mesc l("If you try to walk west or east too much, you'll hit an \"invisible wall\" to prevent you from getting lost.");
+ next;
+ select
+ l("I'm fine, thanks."),
+ l("My equipment is good, let me through!");
+ mes "";
+ if (@menu == 2) {
+ warp "011-3", 38, 21;
+ closedialog;
+ close;
+ }
+ } else {
+ mesn;
+ mesq l("In fact, it is flooded at the moment. Come back later.");
+ }
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 5;
+ end;
+}
+014-2,56,107,0 script #ToEternalSwamps NPC_HIDDEN,2,0,{
+ end;
+OnTouch:
+ doevent "Guard Jennifer::OnMain";
+ end;
+}
+
diff --git a/npc/014-2/mouboo.txt b/npc/014-2/mouboo.txt
new file mode 100644
index 0000000..62b4577
--- /dev/null
+++ b/npc/014-2/mouboo.txt
@@ -0,0 +1,235 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Part from a bigger, very important quest for learning about the MOUBOOTAUR.
+// Interacts with Sagratha (for uncursing).
+//
+// Quest Structure:
+// HurnscaldQuest_InjuriedMouboo - STATUS - HPBAR
+// Quest Status:
+// 0 - First Met
+// 1 - Examined (HP Bar stored on field 2)
+// 2 - Healed (Curse not solved - ready for Sagratha Quest)
+// 3 - Curse removed (Sagratha's Arc)
+// 9 - KILLED YOUR MOUBOO. YOU EVIL MONSTER.
+
+014-2,144,80,0 script Mouboo#0142injuried NPC_INJURIED_MOUBOO,{
+ .@q=getq(HurnscaldQuest_InjuriedMouboo);
+
+ if (.@q < 2) goto L_Begin;
+ if (.@q == 2) goto L_Healed;
+ if (.@q == 3) goto L_Uncursed;
+ if (.@q == 9) goto L_Killed;
+ goodbye;
+ end;
+
+// Main Quest
+L_Begin:
+ .@q=getq(HurnscaldQuest_InjuriedMouboo);
+ .@q2=getq2(HurnscaldQuest_InjuriedMouboo);
+ mesn l("Injured Mouboo");
+ mesq l("Booo....");
+ mesc l("The Mouboo seems to be lying in pain.");
+ next;
+ select
+ rif(.@q == 1, l("Attempt to heal the Mouboo")),
+ rif(.@q == 1, l("Attempt to kill the Mouboo")),
+ l("Examine the Mouboo"),
+ l("Leave the Mouboo alone");
+ mes "";
+ switch (@menu) {
+ case 3:
+ mesc l("The Mouboo is lying down on the grass.");
+ mesc l("There doesn't seem to be any physical wound.");
+ mesc l("A closer inspection suggests this mouboo has been... CURSED.");
+ if (.@q == 0)
+ setq HurnscaldQuest_InjuriedMouboo, 1, 100;
+ next;
+ goto L_Begin;
+ case 1:
+ mes "##B" + l("Drag and drop a healing item from your inventory.") + "##b";
+
+ .@id = requestitem();
+
+ // If ID is invalid, there's not enough items, it is bound = Cannot bury
+ if (.@id < 1) close;
+ if (.@id < 1 || countitem(.@id) < 1 || checkbound(.@id) || getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING) {
+ if (checkbound(.@id))
+ mesc l("You cannot part with this item!");
+ else if (.@id == MoubooFigurine)
+ mesc l("Haha, this wooden figurine won't do the job, sorry.");
+ else if (.@id == PlushMouboo)
+ mesc l("This seems like a good idea at first, but actually, it isn't.");
+ else if (.@id == MoubooPendant)
+ mesc l("Wise choice! But can you really part with it? Better think on something else!");
+ else if (.@id == MoubooHat || .@id == AlphaMoubooHat)
+ mesc l("...I don't think giving it this hat will really help...");
+ else if (.@id == DeathPotion || .@id == NymphPoison)
+ mesc l("...Are you crazy?");
+ else if (getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING)
+ mesc l("This is not a healing item.");
+ else
+ mesc l("You give up.");
+ close;
+ }
+
+ // Bad healing items
+ if (.@id == MoubooSteak) {
+ mesc l("Uhm, this seems like a bad idea.");
+ close;
+ } else if (.@id == DeathPenalty) {
+ mesc l("Uhm, that's an... @@. Do you... want to grow a tree on the mouboo or something? Can't you think on something else?", getitemlink(DeathPenalty));
+ close;
+ } else if (.@id == BottleOfSewerWater) {
+ mesc l("Uhm... I thought you were trying to heal the mouboo. Why are you giving it poisonous stuff?!");
+ close;
+ } else if (.@id == Coffee) {
+ mesc l("Uhm, I better heal it first before trying to do anything about the curse.");
+ close;
+ }
+
+ mesc l("Really give your @@ to the Mouboo?", getitemlink(.@id)), 1;
+ mesc l("The item will be lost forever.");
+ next;
+ if (askyesno() == ASK_YES) {
+ delitem .@id, 1;
+ itemeffect(.@id); // As a bonus, you'll be healed too, because I need to retrieve @max value
+
+ // You need about 9.000 HP-worth healing items, and you can't use Mouboo Steak
+ @val1*=rand2(3,5); // Average delay (FIXME: Is @val1 available?)
+ @val1=max(10, @val1); // Hack
+ if (.@id == ElixirOfLife)
+ setq2 HurnscaldQuest_InjuriedMouboo, 9999;
+ else
+ setq2 HurnscaldQuest_InjuriedMouboo, .@q2+((@val1)/10);
+
+ // Get rid of temporary variables, if it haven't happened yet
+ @min = 0;
+ @max = 0;
+ @val1 = 0;
+
+ .@q2=getq2(HurnscaldQuest_InjuriedMouboo);
+ if (.@q2 > 1000) {
+ mesc l("This will be remembered."), 6;
+ setq HurnscaldQuest_InjuriedMouboo, 2;
+ getexp 800, 0;
+ close;
+ }
+
+ // Progress Report
+ if (.@q2 > 900) {
+ mesc l("The mouboo seems to want to thank you, but is still too weak. Let's finish this healing.");
+ }
+ else if (.@q2 > 700) {
+ mesc l("The mouboo looks a bit more healthy. A little more should do.");
+ }
+ else if (.@q2 > 400) {
+ mesc l("The mouboo looks a bit less sickly. But this is not enough.");
+ }
+ else if (.@q2 > 100) {
+ mesc l("The mouboo still looks terrible, but you can see a small difference.");
+ }
+ else {
+ // Mouboo begins at 100 HP, so this should never happen
+ mesc l("Barely any difference, maybe I should use better healing items on it.");
+ }
+ }
+ break;
+ case 2:
+ .@id = getequipid(EQI_HAND_R);
+
+ // If ID is invalid, there's not enough items, it is bound = Cannot bury
+ if (.@id < 1) {
+ mesc l("You are not using a weapon for a merciful last blow.");
+ close;
+ }
+
+ mesc l("Really attack the Mouboo with a(n) @@?", getitemlink(.@id)), 1;
+ mesc l("There will be consequences.");
+ next;
+ if (askyesno() == ASK_YES) {
+ .@atk=getiteminfo(.@id, ITEMINFO_ATK);
+ mesn l("Injured Mouboo");
+ if (.@q2 < 20)
+ mesq l("Re-ref... Reflect.");
+ else
+ mesq l("Ma... Magical Re... Re-ref... Reflection.");
+ setq2 HurnscaldQuest_InjuriedMouboo, .@q2-(.@atk/5);
+ .@q2=getq2(HurnscaldQuest_InjuriedMouboo);
+
+ if (.@q2 <= 0) {
+ mes l("The... Mou... Boo... Taur...");
+ mes l("Is... Dan... Ger... Ous...");
+ mes l("...Help... Me...");
+ setq HurnscaldQuest_InjuriedMouboo, 9;
+ getexp 800, 0;
+ next;
+
+ mesc l("This will be remembered."), 6;
+ heal -.@atk, -(.@atk/10);
+ close;
+ } else {
+ mesc l("This wasn't enough.");
+ }
+
+ heal -.@atk, -(.@atk/10);
+ next;
+ }
+ break;
+ default:
+ close;
+ }
+ mes "";
+ goto L_Begin;
+
+
+// Sagratha Arc
+L_Healed:
+ .@q=getq(HurnscaldQuest_InjuriedMouboo);
+ .@q2=getq2(HurnscaldQuest_InjuriedMouboo);
+ mesn l("Injuried Mouboo");
+ mesq l("Zzzzzz....");
+ mesc l("The mouboo is sleeping soundly. The curse is still there.");
+ if (countitem(Coffee)) {
+ next;
+ mesc l("Give a @@ to the Mouboo?", getitemlink(Coffee));
+ next;
+ if (askyesno() == ASK_YES) {
+ mesn l("Injured Mouboo");
+ mesc l("*screams*");
+ mes "";
+ mesc l("The Mouboo doesn't want to drink the Coffee. Try to force it to drink anyway?");
+ next;
+ if (askyesno() == ASK_YES) {
+ delitem Coffee, 1;
+ mesc l("There's no change in the condition of the poor Mouboo.");
+ next;
+ mesc l("Maybe the Hurnscald alchemist, Wyara, could explain why.");
+ } else {
+ mesc l("Coffee is good, why does the Mouboo refuse to drink it?");
+ mesc l("Maybe someone in Hurnscald can help me.");
+ }
+ }
+ }
+ close;
+
+// Final Results
+L_Uncursed:
+ mesn;
+ mesq l("Hello, @@. Thanks for helping me.", strcharinfo(0));
+ next;
+ mesn;
+ mesq l("Don't challenge the Moubootaur. You saw what happened to me.");
+ close;
+
+L_Killed:
+ mesc l("Did this Mouboo just blink? No, I made sure it was truly dead. Must have been my imagination.");
+ close;
+
+OnInit:
+ .sex=G_OTHER;
+ .distance=2;
+ end;
+}
diff --git a/npc/014-2/trap.txt b/npc/014-2/trap.txt
new file mode 100644
index 0000000..924943d
--- /dev/null
+++ b/npc/014-2/trap.txt
@@ -0,0 +1,52 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// Gemini Sisters Quest - Traps
+
+014-2,230,58,0 script #GeminiTrap1 NPC_HIDDEN,0,0,{
+OnTouch:
+ if (getq(General_Narrator) < 16) {
+ mesc l("WARNING:"), 1;
+ mes l("You are not welcome on this island.");
+ mes "";
+ mes l("No mercy will be shown, turn back now!");
+ mes "";
+ mes l("-- Valia G.");
+ close;
+ }
+ end;
+}
+
+014-2,230,60,0 script #GeminiTrap2 NPC_HIDDEN,0,0,{
+OnTouch:
+ if (getq(General_Narrator) < 16) {
+ slide 230, 56;
+ dispbottom l("You are pushed back with extreme force!");
+ percentheal -15, 0;
+ }
+ end;
+}
+
+014-2,228,64,0 script #GeminiTrap3 NPC_HIDDEN,0,0,{
+OnTouch:
+ if (getq(General_Narrator) < 16) {
+ slide 230, 56;
+ dispbottom l("You are pushed back with absolute force!");
+ percentheal -85, 0;
+ }
+ end;
+}
+
+// Should never trigger
+014-2,221,69,0 script #GeminiTrap4 NPC_HIDDEN,1,1,{
+OnTouch:
+ if (getq(General_Narrator) < 16) {
+ warp "Save", 0, 0;
+ dispbottom l("You don't feel so well... And then, you're dead.");
+ die();
+ end;
+ }
+ end;
+}
+