diff options
Diffstat (limited to 'world/map/npc/009-1')
-rw-r--r-- | world/map/npc/009-1/_import.txt | 13 | ||||
-rw-r--r-- | world/map/npc/009-1/_mobs.txt | 33 | ||||
-rw-r--r-- | world/map/npc/009-1/_warps.txt | 14 | ||||
-rw-r--r-- | world/map/npc/009-1/jack.txt | 260 | ||||
-rw-r--r-- | world/map/npc/009-1/mapflags.txt | 2 | ||||
-rw-r--r-- | world/map/npc/009-1/milly.txt | 25 | ||||
-rw-r--r-- | world/map/npc/009-1/old_man.txt | 34 | ||||
-rw-r--r-- | world/map/npc/009-1/old_woman.txt | 78 | ||||
-rw-r--r-- | world/map/npc/009-1/sabine.txt | 26 | ||||
-rw-r--r-- | world/map/npc/009-1/soul-menhir.txt | 12 | ||||
-rw-r--r-- | world/map/npc/009-1/water_pump.txt | 5 |
11 files changed, 502 insertions, 0 deletions
diff --git a/world/map/npc/009-1/_import.txt b/world/map/npc/009-1/_import.txt new file mode 100644 index 00000000..cfd187fb --- /dev/null +++ b/world/map/npc/009-1/_import.txt @@ -0,0 +1,13 @@ +// Map 009-1: Hurnscald +// This file is generated automatically. All manually changes will be removed when running the Converter. +map: 009-1.gat +npc: npc/009-1/_mobs.txt +npc: npc/009-1/_warps.txt +npc: npc/009-1/jack.txt +npc: npc/009-1/mapflags.txt +npc: npc/009-1/milly.txt +npc: npc/009-1/old_man.txt +npc: npc/009-1/old_woman.txt +npc: npc/009-1/sabine.txt +npc: npc/009-1/soul-menhir.txt +npc: npc/009-1/water_pump.txt diff --git a/world/map/npc/009-1/_mobs.txt b/world/map/npc/009-1/_mobs.txt new file mode 100644 index 00000000..629d177e --- /dev/null +++ b/world/map/npc/009-1/_mobs.txt @@ -0,0 +1,33 @@ +// This file is generated automatically. All manually changes will be removed when running the Converter. +// Hurnscald mobs + +009-1.gat,74,32,2,1 monster Clover patch 1037,1,100000,120000,Mob009-1::On1037 +009-1.gat,29,44,9,13 monster PinkFlower 1014,2,0,250,Mob009-1::On1014 +009-1.gat,88,51,15,4 monster Squirrel 1038,2,0,5000,Mob009-1::On1038 +009-1.gat,80,38,5,5 monster Squirrel 1038,1,0,5000,Mob009-1::On1038 +009-1.gat,0,0,0,0 monster Butterfly 1055,5,30,20,Mob009-1::On1055 + + +009-1.gat,0,0,0 script Mob009-1 -1,{ +On1014: + set @mobID, 1014; + callfunc "MobPoints"; + break; + +On1037: + set @mobID, 1037; + callfunc "MobPoints"; + break; + +On1038: + set @mobID, 1038; + callfunc "MobPoints"; + break; + +On1055: + set @mobID, 1055; + callfunc "MobPoints"; + break; + + end; +} diff --git a/world/map/npc/009-1/_warps.txt b/world/map/npc/009-1/_warps.txt new file mode 100644 index 00000000..c8a7fad7 --- /dev/null +++ b/world/map/npc/009-1/_warps.txt @@ -0,0 +1,14 @@ +// This file is generated automatically. All manually changes will be removed when running the Converter. +// 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,114,77 +009-1.gat,91,46 warp ToBlacksmith 0,-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/world/map/npc/009-1/jack.txt b/world/map/npc/009-1/jack.txt new file mode 100644 index 00000000..a0ee0b43 --- /dev/null +++ b/world/map/npc/009-1/jack.txt @@ -0,0 +1,260 @@ +//################################################################################# +//# # +//# 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 +009-1.gat,40,45,0 script Jack 141, { + set @RAWLOGS_AMOUNT, 40; + 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.\""; + if (Inspector == 1) callsub S_NohMask_Ask; + next; + if (@Q_Forestbow < 1) close; + + menu + "I heard you aren't delivering any more living wood. Why not?", -; + + 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) callsub S_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; + getinventorylist; + if (@inventorylist_count == 100) goto L_TooMany; + + 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_TooMany: + mes "[Jack Lumber]"; + mes "\"You don't have enough room for the shield. Come back when you do.\""; + close; + +L_Shield_state_3: + mes "[Jack Lumber]"; + mes "\"I hope that my shield will serve you well!\""; + next; + + if (Inspector == 1) + menu + "Me too.", -, + "Have you seen anything that might be connected to the recent robberies in town?", L_NohMask_Answer; + close; + +S_NohMask_Ask: + next; + 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/world/map/npc/009-1/mapflags.txt b/world/map/npc/009-1/mapflags.txt new file mode 100644 index 00000000..f435d5d7 --- /dev/null +++ b/world/map/npc/009-1/mapflags.txt @@ -0,0 +1,2 @@ +009-1.gat mapflag no_player_drops +009-1.gat mapflag town diff --git a/world/map/npc/009-1/milly.txt b/world/map/npc/009-1/milly.txt new file mode 100644 index 00000000..2935d314 --- /dev/null +++ b/world/map/npc/009-1/milly.txt @@ -0,0 +1,25 @@ +009-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, + "Hello", -; + 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/world/map/npc/009-1/old_man.txt b/world/map/npc/009-1/old_man.txt new file mode 100644 index 00000000..84079138 --- /dev/null +++ b/world/map/npc/009-1/old_man.txt @@ -0,0 +1,34 @@ +// Old man + +009-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/world/map/npc/009-1/old_woman.txt b/world/map/npc/009-1/old_woman.txt new file mode 100644 index 00000000..c48b3557 --- /dev/null +++ b/world/map/npc/009-1/old_woman.txt @@ -0,0 +1,78 @@ +// Old woman + +009-1.gat,29,43,0 script Old Woman 154,{ + if (BaseLevel < 40) goto L_Lower; + + mes "[Old Woman]"; + mes "\"Hello deary.\""; + next; + +L_Continue: + if ((Inspector >= 1 && Inspector <= 7) || Inspector == 9) goto L_NohMask; + close; + +L_Lower: + mes "[Old Woman]"; + mes "\"Watch out for these flowers. They don't like to be messed with.\""; + next; + goto L_Continue; + +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) goto 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 catch 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; + +OnPCDieEvent: + if (countitem(E10_TOKEN_ID) < 1) end; + delitem E10_TOKEN_ID, 1; + getitem "DarkPetal", 1; + message strcharinfo(0), "As you fall, the dark rose crumbles..."; + if ((Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK >= E10_STATE_ROSE_ROSE_USED) end; + message strcharinfo(0), "There is a strange feeling pulling at you. A place... unfamiliar, yet unavoidable."; + message strcharinfo(0), "But you do not move... the force is too distant, too weak, a shadow of the power that it might have once been."; + set Easter_2010_QuestState, (Easter_2010_QuestState & ~(E10_STATE_ROSE_MASK << E10_STATE_ROSE_SHIFT)) | (E10_STATE_ROSE_ROSE_USED << E10_STATE_ROSE_SHIFT); + end; + +} diff --git a/world/map/npc/009-1/sabine.txt b/world/map/npc/009-1/sabine.txt new file mode 100644 index 00000000..b8a45859 --- /dev/null +++ b/world/map/npc/009-1/sabine.txt @@ -0,0 +1,26 @@ +// Girl sitting on bench + +009-1.gat,88,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/world/map/npc/009-1/soul-menhir.txt b/world/map/npc/009-1/soul-menhir.txt new file mode 100644 index 00000000..5daadd23 --- /dev/null +++ b/world/map/npc/009-1/soul-menhir.txt @@ -0,0 +1,12 @@ +// + +009-1.gat,53,40,0 script Soul Menhir 144, { + callfunc "ClearVariables"; + set @map$, "009-1.gat"; + setarray @Xs, 52, 53, 54, 52, 54, 52, 54; + setarray @Ys, 39, 39, 39, 40, 40, 41, 41; + set @x, 0; + set @y, 0; + callfunc "SoulMenhir"; + close; +} diff --git a/world/map/npc/009-1/water_pump.txt b/world/map/npc/009-1/water_pump.txt new file mode 100644 index 00000000..42c36d64 --- /dev/null +++ b/world/map/npc/009-1/water_pump.txt @@ -0,0 +1,5 @@ +// Water pump. YOu can fill empty b ottles here + +009-1.gat,76,33,0 script Water Pump 203,{ + callfunc "WaterBottle"; +} |