summaryrefslogtreecommitdiff
path: root/npc/009-1_Hurnscald
diff options
context:
space:
mode:
Diffstat (limited to 'npc/009-1_Hurnscald')
-rw-r--r--npc/009-1_Hurnscald/_import.txt9
-rw-r--r--npc/009-1_Hurnscald/_mobs.txt7
-rw-r--r--npc/009-1_Hurnscald/_warps.txt13
-rw-r--r--npc/009-1_Hurnscald/jack.txt252
-rw-r--r--npc/009-1_Hurnscald/milly.txt25
-rw-r--r--npc/009-1_Hurnscald/old_man.txt34
-rw-r--r--npc/009-1_Hurnscald/old_woman.txt56
-rw-r--r--npc/009-1_Hurnscald/sabine.txt26
-rw-r--r--npc/009-1_Hurnscald/soul-menhir.txt8
9 files changed, 430 insertions, 0 deletions
diff --git a/npc/009-1_Hurnscald/_import.txt b/npc/009-1_Hurnscald/_import.txt
new file mode 100644
index 00000000..94bf97b6
--- /dev/null
+++ b/npc/009-1_Hurnscald/_import.txt
@@ -0,0 +1,9 @@
+map: 009-1.gat
+npc: npc/009-1_Hurnscald/soul-menhir.txt
+npc: npc/009-1_Hurnscald/sabine.txt
+npc: npc/009-1_Hurnscald/old_woman.txt
+npc: npc/009-1_Hurnscald/old_man.txt
+npc: npc/009-1_Hurnscald/milly.txt
+npc: npc/009-1_Hurnscald/jack.txt
+npc: npc/009-1_Hurnscald/_warps.txt
+npc: npc/009-1_Hurnscald/_mobs.txt
diff --git a/npc/009-1_Hurnscald/_mobs.txt b/npc/009-1_Hurnscald/_mobs.txt
new file mode 100644
index 00000000..8e5290ee
--- /dev/null
+++ b/npc/009-1_Hurnscald/_mobs.txt
@@ -0,0 +1,7 @@
+// 009-1 Hurnscald mobs
+
+
+
+009-1.gat,0,0,0 script Mob009-1 -1,{
+ end;
+}
diff --git a/npc/009-1_Hurnscald/_warps.txt b/npc/009-1_Hurnscald/_warps.txt
new file mode 100644
index 00000000..a41c63a4
--- /dev/null
+++ b/npc/009-1_Hurnscald/_warps.txt
@@ -0,0 +1,13 @@
+// 009-1 Hurnscald warps
+
+009-1.gat,49,55 warp HurnscaldSouthGate 2,-1,008-1.gat,78,82
+009-1.gat,97,36 warp HurnscaldEastGate -1,0,008-1.gat,129,60
+009-1.gat,35,30 warp ToInn -1,-1,009-2.gat,50,55
+009-1.gat,58,46 warp ToGeneralStore -1,-1,009-2.gat,27,105
+009-1.gat,59,33 warp ToArcherShop -1,-1,009-2.gat,95,29
+009-1.gat,71,30 warp ToPotionShop -1,-1,009-2.gat,130,25
+009-1.gat,80,31 warp ToHospital -1,-1,009-2.gat,149,66
+009-1.gat,72,44 warp ToMayor -1,-1,009-2.gat,113,77
+009-1.gat,91,46 warp ToBlacksmith -1,-1,009-2.gat,181,66
+009-1.gat,24,36 warp HurnscaldWestGate -1,1,008-1.gat,53,61
+009-1.gat,49,24 warp HurnscaldNorthGate 2,-1,008-1.gat,78,48
diff --git a/npc/009-1_Hurnscald/jack.txt b/npc/009-1_Hurnscald/jack.txt
new file mode 100644
index 00000000..721c4cce
--- /dev/null
+++ b/npc/009-1_Hurnscald/jack.txt
@@ -0,0 +1,252 @@
+//#################################################################################
+//# #
+//# This script file contains the npc scripts for two quests: #
+//# #
+//# Quest1: Obtaining a Forest bow #
+//# Needed: About 20 Raw logs, 5000gp, some chatting and running #
+//# Reward: Forest bow #
+//# #
+//# Quest2: Obtaining a Wooden shield #
+//# Needed: 40 Raw logs, 5000gp #
+//# Reward: Wooden shield and 2500exp #
+//# #
+//# Variables used: @QUEST_Forestbow_state, nibbles 0 and 1 #
+//#################################################################################
+
+// Lumberjack
+new_19-1.gat,40,45,0 script Jack 141, {
+ set @RAWLOG, 569;
+ set @RAWLOGS_AMOUNT, 40;
+ set @WOODENSHIELD, 602;
+ set @SHIELD_COST, 5000;
+ set @QUEST_SHIELD_EXP, 2500;
+
+ set @Q_Forestbow_MASK, NIBBLE_0_MASK;
+ set @Q_Forestbow_SHIFT, NIBBLE_0_SHIFT;
+
+ set @Q_Woodenshield_MASK, NIBBLE_1_MASK;
+ set @Q_Woodenshield_SHIFT, NIBBLE_1_SHIFT;
+
+ set @Q_Forestbow, ((QUEST_Forestbow_state & @Q_Forestbow_MASK) >> @Q_Forestbow_SHIFT);
+ set @Q_Woodenshield, ((QUEST_Forestbow_state & @Q_Woodenshield_MASK) >> @Q_Woodenshield_SHIFT);
+
+ if (@Q_Woodenshield >= 3) goto L_Shield_state_3;
+ if (@Q_Woodenshield == 2) goto L_Shield_state_2;
+ if (@Q_Woodenshield == 1) goto L_Shield_state_1;
+ if (@Q_Forestbow > 1) goto L_Bow_state_2;
+
+ mes "[Jack Lumber]";
+ mes "\"Hello there, my name is Jack Lumber, the enemy of all trees. If you need some firewood just let me know.\"";
+ next;
+ if (Inspector == 1) callsub S_NohMask_Ask;
+ if (@Q_Forestbow < 1) close;
+
+ menu
+ "I heard you aren't delivering any more living wood. Why that?", -;
+
+ mes "[Jack Lumber]";
+ mes "\"Why not?! I value my life, that's why!.\"";
+
+ next;
+ menu
+ "What do you mean?", -;
+
+ mes "[Jack Lumber]";
+ mes "\"A week ago I was going to chop down one of those twigleaf trees in the forest to the southwest. These twigleafs are the trees that give me the living wood you speak of. I was just chopping away with my axe and what happened? One of its branches hit me! I thought it fell down or the wind blew it. It hurt! I shook it off and struck it again with my axe and another branch hit me! I got angry and started to chop off all the branches near the ground so this couldn't happen anymore. But I still can't believe what happened next.\"";
+
+ next;
+ menu
+ "What happened? ", -;
+
+ mes "[Jack Lumber]";
+ mes "\"You'll think I am insane when I tell you.\"";
+
+ next;
+ menu
+ "I won't. I promise.", -;
+
+ mes "[Jack Lumber]";
+ mes "\"OK. After I chopped off a few branches the whole tree started to move. Its roots tore out of the earth, all the branches started to wave around and a face appeared on the trunk. The whole tree CAME TO LIFE! It was mad!\"";
+ next;
+ menu
+ "Did you run away?", -,
+ "Did you fight it?", -;
+
+ mes "[Jack Lumber]";
+ mes "\"I fought, of course! I took my axe and attacked the beast! It hit me here *points at a bruise at his shoulder*, here *lifts his trouser leg to show another bruise* and here *lifts his shirt and reveals some even worse bruises*. But i didn't give up. I chopped away at it, branch after branch, and in the end I chopped off its roots and it fell to the ground motionless.\"";
+
+ next;
+ menu
+ "So you beat the monster? Then why are you so scared?", -;
+
+ mes "[Jack Lumber]";
+ mes "\"Well, I was exhausted and had to rest. A few minutes passed and suddenly I was surrounded by a dozen or more of these living trees!\"";
+
+ next;
+ menu
+ "Did you fight them, too? ", -;
+
+ mes "[Jack Lumber]";
+ mes "\"Are you crazy? I barely destroyed one of those beasts. I was in no shape to fight again. I ran away as fast as i could. Lucky for me the monsters aren't that fast on their tiny root legs. Ha!\"";
+
+ next;
+ menu
+ "So you aren't chopping down trees anymore?", -;
+
+ mes "[Jack Lumber]";
+ mes "\"I still do. It's my job. But I no longer chop those twigleafs, I'll tell you that. I know the bowyer master wants some wood from them, but I don't care. I won't risk my life for a few gold pieces. If you want to, just go to the southwest. But i won't go there ever again.\"";
+
+ next;
+ menu
+ "Southwest you say? OK, thank you.", -;
+
+ set @Q_Forestbow, 2;
+ callsub S_Update_Mask;
+
+ close;
+
+L_Bow_state_2:
+ // Bow state 4: The player has found a perfect piece of wood.
+ if (@Q_Forestbow > 3) goto L_Bow_state_4;
+
+ mes "\"Good luck hunting those tree monsters - you will need it.\"";
+ if (Inspector == 1) goto L_NohMask_Ask;
+ close;
+
+L_Bow_state_4:
+ mes "[Jack Lumber]";
+ mes "\"You've finally found that perfect piece of living wood Alan needs to make a Forest bow, haven't you?\"";
+
+ next;
+ menu
+ "I couldn't afford the bow, though...", L_Shield_state_0,
+ "No, I'm still looking.", L_Bow_state_4_reaffirm,
+ "Yes, I've got the Forest bow now.", -,
+ "I'm a melee warrior, I don't need bows.", L_Shield_state_0;
+
+ // Check if the player tells the truth (continue on in any case)
+ if (@Q_Forestbow > 4) goto L_Shield_state_0;
+
+ mes "[Jack Lumber]";
+ mes "\"Hrmph. I'm someone who respects those speaking the truth.\"";
+
+ next;
+ goto L_Shield_state_0;
+
+L_Bow_state_4_reaffirm:
+ mes "[Jack Lumber]";
+ mes "\"You should go talk to Alan again.\"";
+ close;
+
+L_Shield_state_0:
+ set @Q_Woodenshield, 1;
+ callsub S_Update_Mask;
+
+ if (Sex == 0) set @child_of_jack$, "daughter";
+ if (Sex == 1) set @child_of_jack$, "son";
+
+ mes "[Jack Lumber]";
+ mes "\"You no doubt remember how I struggled with those beasts, fighting for my life. Scared me, those seven-branched little stumps did! Never since that day have I strayed near them. And here comes you, cutting them down one by one. I'm proud of you, to dare those trunks a fight. You're strong as if you were my own " + @child_of_jack$ + "!\"";
+ next;
+ goto L_Shield_state_1;
+
+L_Shield_state_1:
+ mes "[Jack Lumber]";
+ mes "\"I have an idea. What would you say about a new shield?\"";
+ next;
+
+ if (Inspector == 1)
+ menu
+ "No thanks.", L_End,
+ "Yes, please!", -,
+ "Actually, I'd like to know if you've seen any strange happenings in town.", L_NohMask_Answer;
+ if (Inspector != 1)
+ menu
+ "No thanks.", L_End,
+ "Yes, please!", -;
+
+ mes "[Jack Lumber]";
+ mes "\"All I need is " + @RAWLOGS_AMOUNT + " raw logs. This needn't be highest-quality wood; pretty much any log you can find should work. Oh, and I'll also need " + @SHIELD_COST + " GP for other materials.\"";
+ next;
+
+ set @Q_Woodenshield, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_End:
+ close;
+
+L_Shield_state_2:
+ mes "[Jack Lumber]";
+ mes "\"Let's see if you have enough of everything.\"";
+ next;
+
+ if (countitem(@RAWLOG) < @RAWLOGS_AMOUNT) goto L_Not_enough_logs;
+ if (zeny < @SHIELD_COST) goto L_Not_enough_money;
+
+ delitem @RAWLOG, @RAWLOGS_AMOUNT;
+ set zeny, zeny - @SHIELD_COST;
+ getexp @QUEST_SHIELD_EXP, 0;
+ getitem @WOODENSHIELD, 1;
+
+ set @Q_Woodenshield, 3;
+ callsub S_Update_Mask;
+ mes "[Jack Lumber]";
+ mes "\"Have a seat.\"";
+ mes "Jack saws the logs into pieces, then shaves them until they are smooth to the touch.";
+ mes "Applying some strong-smelling liquid, he tans them in darker hues.";
+ next;
+
+ mes "[Jack Lumber]";
+ mes "Grabbing one of two leftover pieces, he begins to carve it into a round shape, then repeats this with the second piece-- shield handles, from what you can tell.";
+ next;
+
+ mes "[Jack Lumber]";
+ mes "Meanwhile, the sun has dried the other pieces. Jack places them next to each other, adds a frame, and nails everything together.";
+ mes "The resulting shield looks usable already, but Jack applies another liquid to it and leaves it to dry for a few moments.";
+ next;
+
+ mes "[Jack Lumber]";
+ mes "Finally, he hands the shield to you.";
+ mes "\"Enjoy your new shield!\"";
+ mes "[" + @QUEST_SHIELD_EXP + " experience points]";
+ next;
+ goto L_End;
+
+L_Not_enough_logs:
+ mes "[Jack Lumber]";
+ mes "\"You don't have enough wood for me to craft this shield; I need a total of " + @RAWLOGS_AMOUNT + " raw logs.\"";
+ close;
+
+L_Not_enough_money:
+ mes "[Jack Lumber]";
+ mes "\"You don't have enough gold, I'm afraid. I need " + @SHIELD_COST + " GP to finish your shield.\"";
+ close;
+
+L_Shield_state_3:
+ mes "[Jack Lumber]";
+ mes "\"I hope that my shield will serve you well!\"";
+ if (Inspector == 1)
+ menu
+ "Me too.", -,
+ "Have you seen anything that might be connected to the recent robberies in town?", L_NohMask_Answer;
+ close;
+
+L_NohMask_Ask:
+ menu
+ "I'll keep that in mind.", -,
+ "Have you seen anything that might be connected to the recent robberies in town?", L_NohMask_Answer;
+ return;
+
+L_NohMask_Answer:
+ mes "[Jack Lumber]";
+ mes "\"Sorry, no.\"";
+ close;
+
+S_Update_Mask:
+ set QUEST_Forestbow_state,
+ (QUEST_Forestbow_state & ~(@Q_Forestbow_MASK | @Q_Woodenshield_MASK))
+ | (@Q_Forestbow << @Q_Forestbow_SHIFT)
+ | (@Q_Woodenshield << @Q_Woodenshield_SHIFT);
+ return;
+}
diff --git a/npc/009-1_Hurnscald/milly.txt b/npc/009-1_Hurnscald/milly.txt
new file mode 100644
index 00000000..b8bf7460
--- /dev/null
+++ b/npc/009-1_Hurnscald/milly.txt
@@ -0,0 +1,25 @@
+new_19-1.gat,81,41,0 script Milly 114, {
+ mes "[Milly]";
+ mes "\"Hello.\"";
+ next;
+ if (Inspector == 1) goto L_NohMask;
+ close;
+
+L_NohMask:
+ menu
+ "Have you seen anything strange lately?", L_NohMask_Strange,
+ "Do you know anything about the recent robberies?", L_NohMask_Robbery,
+ "Yes, it is.", -;
+ close;
+
+L_NohMask_Strange:
+ mes "[Milly]";
+ mes "\"I haven't seen anything strange.\"";
+ close;
+
+L_NohMask_Robbery:
+ mes "[Milly]";
+ mes "\"No, sorry.\"";
+ close;
+}
+
diff --git a/npc/009-1_Hurnscald/old_man.txt b/npc/009-1_Hurnscald/old_man.txt
new file mode 100644
index 00000000..55812260
--- /dev/null
+++ b/npc/009-1_Hurnscald/old_man.txt
@@ -0,0 +1,34 @@
+// Old man
+
+new_19-1.gat,85,51,0 script Old Man 159,{
+ mes "[Old Man]";
+ mes "\"Don't let those monsters get to you.\"";
+ next;
+ if (Inspector == 1) goto L_NohMask_Ask;
+ if (Inspector == 6) goto L_NohMask_Accuse;
+ close;
+
+L_NohMask_Ask:
+ menu
+ "Have you seen anything strange lately?", L_NohMask_Ask_Nothing,
+ "Do you know anything about the recent robberies?", L_NohMask_Ask_Nothing,
+ "I won't, thank you.", -;
+ close;
+
+L_NohMask_Ask_Nothing:
+ mes "[Old Man]";
+ mes "\"I'm sorry, but I didn't see anything. You should ask my old woman.\"";
+ close;
+
+L_NohMask_Accuse:
+ menu
+ "The leader of the troupe said you hung around them a lot while they were in town.", L_NohMask_Accuse_Respond,
+ "I won't, thank you.", -;
+ close;
+
+L_NohMask_Accuse_Respond:
+ mes "[Old Man]";
+ mes "\"Yes, I hung around the theater a lot. I was an actor when I was younger. But I wasn't there that night. Me and the wife were at home all night.\"";
+ set Inspector, 7;
+ close;
+}
diff --git a/npc/009-1_Hurnscald/old_woman.txt b/npc/009-1_Hurnscald/old_woman.txt
new file mode 100644
index 00000000..c94fe63f
--- /dev/null
+++ b/npc/009-1_Hurnscald/old_woman.txt
@@ -0,0 +1,56 @@
+// Old woman
+
+new_19-1.gat,29,43,0 script Old Woman 154,{
+ mes "[Old Woman]";
+ mes "\"Hello deary.\"";
+ next;
+ if ((Inspector >= 1 && Inspector <= 7) || Inspector == 9) goto L_NohMask;
+ close;
+
+L_NohMask:
+ if (Inspector == 7) goto L_NohMask_Alibi;
+ callfunc "ProcessEquip";
+ if (@torsoC == cDarkBlue && @legsC == cDarkBlue) goto L_NohMask_Fake;
+ if (Inspector >= 3 && Inspector <= 6) close;
+
+ menu
+ "Have you seen anything strange lately?", L_NohMask_FirstAsk,
+ "Do you know anything about the recent robberies?", L_NohMask_FirstAsk,
+ "Hello", -;
+ close;
+
+L_NohMask_FirstAsk:
+ mes "[Old Woman]";
+ mes "\"Yes, but I'm only talking to the inspector himself!\"";
+ if (Inspector == 1) set Inspector, 2;
+ close;
+
+L_NohMask_Alibi:
+ menu
+ "Was your husband with you at home all night the last night that the troupe was in town?", -;
+
+ mes "[Old Woman]";
+ mes "\"Yes, we were both at home all night.\"";
+ set Inspector, 8;
+ close;
+
+L_NohMask_Fake:
+ if (Inspector == 9) goto L_NohMask_Fake_Satchel;
+ if (Inspector >= 3 && Inspector <= 6) got L_NohMask_Filler;
+
+ mes "[Old Woman]";
+ mes "\"I saw someone sneaking around town wearing a theater mask. It looked like one of the masks used by the troupe that was in town recently.\"";
+ set Inspector, 3;
+ close;
+
+L_NohMask_Filler:
+ mes "[Old Woman]";
+ mes "\"I hope you castch that naughty person!\"";
+ close;
+
+L_NohMask_Fake_Satchel:
+ mes "[Old Woman]";
+ mes "\"I've remembered something else. The night the troupe left, I saw someone with a theater mask take a large satchel out of town. He was heading north.\"";
+ set Inspector, 10;
+ close;
+}
diff --git a/npc/009-1_Hurnscald/sabine.txt b/npc/009-1_Hurnscald/sabine.txt
new file mode 100644
index 00000000..e45ae7a8
--- /dev/null
+++ b/npc/009-1_Hurnscald/sabine.txt
@@ -0,0 +1,26 @@
+// Girl sitting on bench
+
+new_19-1.gat,89,27,0 script Sabine 106,{
+ mes "[Sabine]";
+ mes "\"Isn't this place pretty? I love hanging out here!\"";
+ next;
+ if (Inspector == 1) goto L_NohMask;
+ close;
+
+L_NohMask:
+ menu
+ "Have you seen anything strange lately?", L_NohMask_Strange,
+ "Do you know anything about the recent robberies?", L_NohMask_Robbery,
+ "Yes, it is.", -;
+ close;
+
+L_NohMask_Strange:
+ mes "[Sabine]";
+ mes "\"I haven't seen anything strange.\"";
+ close;
+
+L_NohMask_Robbery:
+ mes "[Sabine]";
+ mes "\"No, sorry.\"";
+ close;
+}
diff --git a/npc/009-1_Hurnscald/soul-menhir.txt b/npc/009-1_Hurnscald/soul-menhir.txt
new file mode 100644
index 00000000..152f05be
--- /dev/null
+++ b/npc/009-1_Hurnscald/soul-menhir.txt
@@ -0,0 +1,8 @@
+new_19-1.gat,53,40,0 script Soul Menhir 144, {
+ set @map$, "new_19-1.gat";
+ set @x, 53;
+ set @y, 41;
+ callfunc "SoulMenhir";
+}
+
+