summaryrefslogtreecommitdiff
path: root/world/map/npc/027-2
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2011-06-18 21:58:47 -0700
committerBen Longbons <b.r.longbons@gmail.com>2011-06-19 14:19:55 -0700
commitbae4b92e560c2694eaaf0e8b4d9e95e56204471b (patch)
tree4acc120f6a94cfbf9694bf344658493de5aaa67b /world/map/npc/027-2
parent319f80526f8585ecadaec986e37c9bd326f4d363 (diff)
downloadserverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.gz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.bz2
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.xz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.zip
Move to a subdirectory
Diffstat (limited to 'world/map/npc/027-2')
-rw-r--r--world/map/npc/027-2/_import.txt22
-rw-r--r--world/map/npc/027-2/_mobs.txt29
-rw-r--r--world/map/npc/027-2/_warps.txt7
-rw-r--r--world/map/npc/027-2/alacrius.txt40
-rw-r--r--world/map/npc/027-2/alacrius2.txt113
-rw-r--r--world/map/npc/027-2/barman.txt9
-rw-r--r--world/map/npc/027-2/caretaker.txt131
-rw-r--r--world/map/npc/027-2/cerhan.txt32
-rw-r--r--world/map/npc/027-2/crying_child.txt186
-rw-r--r--world/map/npc/027-2/diary.txt43
-rw-r--r--world/map/npc/027-2/door.txt19
-rw-r--r--world/map/npc/027-2/evil_guard.txt26
-rw-r--r--world/map/npc/027-2/golbenez.txt574
-rw-r--r--world/map/npc/027-2/gy_inn_shops.txt35
-rw-r--r--world/map/npc/027-2/headless_man.txt208
-rw-r--r--world/map/npc/027-2/husband.txt327
-rw-r--r--world/map/npc/027-2/innkeeper.txt438
-rw-r--r--world/map/npc/027-2/lover.txt285
-rw-r--r--world/map/npc/027-2/testnpcs.txt145
-rw-r--r--world/map/npc/027-2/werewolf.txt158
20 files changed, 2827 insertions, 0 deletions
diff --git a/world/map/npc/027-2/_import.txt b/world/map/npc/027-2/_import.txt
new file mode 100644
index 00000000..56dcdd1b
--- /dev/null
+++ b/world/map/npc/027-2/_import.txt
@@ -0,0 +1,22 @@
+// Map 027-2: Caretaker's House
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 027-2.gat
+npc: npc/027-2/_mobs.txt
+npc: npc/027-2/_warps.txt
+npc: npc/027-2/alacrius.txt
+npc: npc/027-2/alacrius2.txt
+npc: npc/027-2/barman.txt
+npc: npc/027-2/caretaker.txt
+npc: npc/027-2/cerhan.txt
+npc: npc/027-2/crying_child.txt
+npc: npc/027-2/diary.txt
+npc: npc/027-2/door.txt
+npc: npc/027-2/evil_guard.txt
+npc: npc/027-2/golbenez.txt
+npc: npc/027-2/gy_inn_shops.txt
+npc: npc/027-2/headless_man.txt
+npc: npc/027-2/husband.txt
+npc: npc/027-2/innkeeper.txt
+npc: npc/027-2/lover.txt
+npc: npc/027-2/testnpcs.txt
+npc: npc/027-2/werewolf.txt
diff --git a/world/map/npc/027-2/_mobs.txt b/world/map/npc/027-2/_mobs.txt
new file mode 100644
index 00000000..b316be00
--- /dev/null
+++ b/world/map/npc/027-2/_mobs.txt
@@ -0,0 +1,29 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Caretaker's House mobs
+
+027-2.gat,81,41,11,9 monster DrunkenSkeleton 1077,1,100000,30000,Mob027-2::On1077
+027-2.gat,91,38,11,9 monster TipsySkeleton 1078,1,100000,30000,Mob027-2::On1078
+027-2.gat,110,26,11,11 monster TipsySkeleton 1078,1,100000,30000,Mob027-2::On1078
+027-2.gat,104,28,11,9 monster DrunkenSkeleton 1077,1,100000,30000,Mob027-2::On1077
+027-2.gat,89,34,11,9 monster DrunkenLadySkeleton 1079,1,100000,30000,Mob027-2::On1079
+027-2.gat,116,26,11,9 monster DrunkenLadySkeleton 1079,1,100000,30000,Mob027-2::On1079
+
+
+027-2.gat,0,0,0 script Mob027-2 -1,{
+On1077:
+ set @mobID, 1077;
+ callfunc "MobPoints";
+ break;
+
+On1078:
+ set @mobID, 1078;
+ callfunc "MobPoints";
+ break;
+
+On1079:
+ set @mobID, 1079;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/world/map/npc/027-2/_warps.txt b/world/map/npc/027-2/_warps.txt
new file mode 100644
index 00000000..fcc40b4d
--- /dev/null
+++ b/world/map/npc/027-2/_warps.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Caretaker's House warps
+
+027-2.gat,26,33 warp toGraveyard -1,-1,027-1.gat,88,85
+027-2.gat,128,35 warp To2ndFloor 0,-1,027-2.gat,75,93
+027-2.gat,75,95 warp To1stFloor 0,-1,027-2.gat,127,37
+027-2.gat,106,46 warp ToOutside 0,-1,027-1.gat,68,89
diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt
new file mode 100644
index 00000000..99714ebc
--- /dev/null
+++ b/world/map/npc/027-2/alacrius.txt
@@ -0,0 +1,40 @@
+// Starts the reaper quest
+
+//027-2.gat,107,29,0 script Alacrius 313,{
+ // if started, go to started
+ // if fail go to failed
+ // if complete go to complete
+ // if cooldown go to cooldown
+
+// start quest section
+ mes "Hi, want to fight the reaper?";
+ menu
+ "Let's go!",L_START,
+ "No, thank you.",-;
+ close;
+
+L_START:
+ monster "027-4.gat",40,55,"Reaper Quest",1067,1,"Reaper::OnDead";
+ enablenpc "#gatecontrol";
+ enablenpc "#closedgate";
+ disablenpc "#opengate";
+// Open doors to reaper level
+ warp "027-3.gat",41,70;
+ initnpctimer;
+ close;
+
+// 5 min mark for testing purposes, up it when finished.
+OnTimer300000:
+ mapwarp "027-3.gat", "027-2.gat",104,41;
+ mapwarp "027-4.gat", "027-2.gat",104,41;
+ killmonsterall "027-4.gat";
+ end;
+OnTimer301000:
+ npctalk "You have failed the mission.";
+ end;
+
+// cooldown before the quest can be restarted
+OnTimer360000:
+ // set quest var
+ end;
+}
diff --git a/world/map/npc/027-2/alacrius2.txt b/world/map/npc/027-2/alacrius2.txt
new file mode 100644
index 00000000..df1587ec
--- /dev/null
+++ b/world/map/npc/027-2/alacrius2.txt
@@ -0,0 +1,113 @@
+// Starts the reaper quest
+
+//027-2.gat,107,29,0 script Alacrius 313,{
+ if ($@FIGHT_ALACRIUS_STATUS != 0) goto L_Enjoy;
+
+
+ mes "[Alacrius]";
+ mes "\"Hello, I'm Alacrius. \"";
+ next;
+ mes "[Alacrius]";
+ mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \"";
+ next;
+ mes "[Alacrius]";
+ mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \"";
+ next;
+
+ mes "[Alacrius]";
+ mes "\"Being away from time and space doesn't allow me to try to save my beloved wife... I need your help. Do you think you have what it takes to handle the most powerful monsters over the world of Mana? \"";
+ next;
+
+ menu
+ "Let's go!",L_PLAY_OK,
+ "No, thank you.",-;
+ close;
+
+
+L_PLAY_OK:
+
+ if ($@FIGHT_ALACRIUS_STATUS != 0) goto L_AlreadyStarted;
+ set $@FIGHT_ALACRIUS_STATUS, 1;
+ set $@MO_REAPER, 0;
+ startnpctimer;
+ set @PRIZE, 1;
+
+ goto L_Exit;
+
+L_Enjoy:
+ if ($@MO_REAPER == 1) goto L_AllDead;
+ mes "[Alacrius]";
+ mes "\"...Please hurry up, the time is running...\"";
+ goto L_Exit;
+
+L_AlreadyStarted:
+ mes "[Alacrius]";
+ mes "\"The Reaper is alive.\"";
+ goto L_Exit;
+
+L_Exit:
+ close;
+ end;
+
+
+// Time to fight
+OnTimer10000:
+
+ monster "027-2.gat",0,0,"Reaper Quest",1111,1,"Alacrius::OnDeadReaper";
+ end;
+
+OnDeadReaper:
+ set $@MO_REAPER, $@MO_REAPER + 1;
+ killmonster "027-2.gat","All";
+ end;
+
+OnDeadLost:
+ set $@MO_LOST, $@MO_LOST + 1;
+ end;
+
+
+OnTimer120000:
+
+ set $@MO_REAPER,0;
+ set $@FIGHT_ALACRIUS_STATUS, 0;
+ killmonster "027-2.gat","All";
+ stopnpctimer;
+ setnpctimer 0;
+ set @PRIZE, 0;
+ npctalk "Oh my beloved wife, you could not be rescued! I will have to purge my mistakes again...";
+ npctalk "Please, help my beloved wife!!";
+
+ end;
+
+OnDead:
+ end;
+
+
+L_AllDead:
+ if(@PRIZE == 0) goto L_NOHERO;
+
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_TooMany;
+ getitem "CasinoCoins", 1;
+
+ mes "[Alacrius]";
+ mes "Thank you very much, you saved my love!! Here you are, a prize according to the dangers you've been exposed to.";
+ set @PRIZE , 0;
+ set $@MO_REAPER,0;
+ close;
+ end;
+
+L_TooMany:
+ mes "[Alacrius]";
+ mes "You have no room for the reward.";
+ close;
+
+L_NOHERO:
+ mes "[Alacrius]";
+ mes "Sorry, but you didn't save my love... Try it again when you're ready...";
+ close;
+ end;
+OnInit:
+ initnpctimer;
+ stopnpctimer;
+}
diff --git a/world/map/npc/027-2/barman.txt b/world/map/npc/027-2/barman.txt
new file mode 100644
index 00000000..616b761a
--- /dev/null
+++ b/world/map/npc/027-2/barman.txt
@@ -0,0 +1,9 @@
+027-2.gat,103,22,0 script Bennet 310,{
+ mes "[Bennet]";
+ mes "\"Hi there stranger! My name is Bennet, the bartender here.\"";
+ next;
+ mes "[Bennet]";
+ mes "\"If you are planning to stick around for a while, please check back with me later. I might have some work for you.\"";
+ mes "\"In the meanwhile, enjoy your stay!\"";
+ close;
+}
diff --git a/world/map/npc/027-2/caretaker.txt b/world/map/npc/027-2/caretaker.txt
new file mode 100644
index 00000000..bf4d35fc
--- /dev/null
+++ b/world/map/npc/027-2/caretaker.txt
@@ -0,0 +1,131 @@
+// Cemetary Caretaker
+// TODO: add dialog/code for giving more letters
+// Airlia supports receiving an infinate number of letters
+
+027-2.gat,24,25,0 script Caretaker 159,{
+ if (QUEST_Graveyard_Caretaker == 1) goto L_Return_Dialog;
+ if (QUEST_Graveyard_Caretaker == 2) goto L_Has_Letter;
+ if (QUEST_Graveyard_Caretaker == 3) goto L_Delivered_Letter;
+ if (QUEST_Graveyard_Caretaker == 4) goto L_Give_New_Letter;
+ if (QUEST_Graveyard_Caretaker == 5) goto L_Has_Letter;
+
+ mes "[Caretaker]";
+ mes "\"...Another adventurer comes to slay the already dead.\"";
+ next;
+ menu
+ "And what are you?", L_Who,
+ "Thats right, so move and let me kill that demon behind you.", -;
+ close;
+
+L_Who:
+ mes "[Caretaker]";
+ mes "\"I was once the caretaker to these cemetery grounds, but look at what they have become.";
+ mes "I now care only for my wife. I watch over her... make sure that nobody ever does her harm.\"";
+ next;
+
+ menu
+ "You guard her corpse day and night?", -;
+
+ mes "[Caretaker]";
+ mes "\"I am bound to this place by the very same spell that was cast to keep the undead from leaving. Until the day that this cemetery is cured of its curse, I remain within these gates.\"";
+ set QUEST_Graveyard_Caretaker, 1;
+ close;
+
+L_Return_Dialog:
+ mes "[Caretaker]";
+ mes "\"I am somewhat fortunate that adventurers like yourself frequent this place... despite your intentions.";
+ mes "Perhaps you can do me a favor?\"";
+ next;
+
+ menu
+ "What is the favor?", L_Favor,
+ "I'm sure I can, for a price.", L_Favor,
+ "Sorry, I am busy.", -;
+ close;
+
+L_Favor:
+ mes "[Caretaker]";
+ mes "\"I have not seen my daughter since I was cursed to stay in this cemetery 25 years ago.";
+ mes "We communicate now through letters. Would you please take this to her?";
+ mes "I am sure she will compensate you for your trouble.\"";
+ next;
+
+ menu
+ "I will take it to her.", L_Receive,
+ "I will help you. Where can I find your daughter?", L_Receive,
+ "Sorry, but I am too busy.", -;
+ close;
+
+L_Receive:
+ set QUEST_Graveyard_Caretaker, 2;
+ mes "You receive the letter and put it in a special place so it doesn't get lost among your inventory.";
+ if (@menu == 2) goto L_Location;
+ close;
+
+L_Location:
+ next;
+
+L_Location_Real:
+ mes "[Caretaker]";
+ mes "\"Her name is Airlia. She works at the city hall in Hurnscald. Thank you for your help.\"";
+ close;
+
+L_Has_Letter:
+ mes "[Caretaker]";
+ mes "\"Have you found my daughter?\"";
+ next;
+
+ menu
+ "Not Yet.", -,
+ "I'll get there when I get there.", -,
+ "Where did you say I could find her?", L_Location_Real;
+ close;
+
+L_Delivered_Letter:
+ mes "[Caretaker]";
+ mes "\"Have you found my daughter?\"";
+ next;
+
+ menu
+ "Yes.", -;
+
+ mes "[Caretaker]";
+ mes "\"Thank you for delivering my letter.\"";
+ set QUEST_Graveyard_Caretaker, 4;
+ close;
+
+L_Give_New_Letter:
+ mes "[Caretaker]";
+ mes "\"I have another letter, if you want to deliver it.\"";
+ next;
+
+ menu
+ "Sure.", L_Give_New_Letter_Real,
+ "I'm too busy right now.", -;
+
+ close;
+
+L_Give_New_Letter_Real:
+ set QUEST_Graveyard_Caretaker, 5;
+ mes "You receive the letter and put it in a special place so it doesn't get lost among your inventory.";
+ next;
+
+ mes "[Caretaker]";
+ mes "\"Thank you.\"";
+ close;
+
+OnTimer3000:
+ monster "027-2.gat", 29, 21, "Caretaker's Wife", 1044, 1, "Caretaker::OnWifeDeath";
+ end;
+
+OnWifeDeath:
+ mapannounce "027-2.gat", "NO! YOU KILLED MY WIFE!", 0;
+ gmcommand "@l I killed the caretaker's wife!";
+ gmcommand "@ban +5mn " + strcharinfo(0);
+ setnpctimer 0;
+ end;
+
+OnInit:
+ initnpctimer;
+ end;
+}
diff --git a/world/map/npc/027-2/cerhan.txt b/world/map/npc/027-2/cerhan.txt
new file mode 100644
index 00000000..33ee7895
--- /dev/null
+++ b/world/map/npc/027-2/cerhan.txt
@@ -0,0 +1,32 @@
+027-2.gat,70,77,0 script Cerhan 311,{
+ mes "[Cerhan]";
+ mes "\"Ah, hello! It is good to see another normal human at this strange place!\"";
+ next;
+ menu
+ "That's true. What are you doing here?",L_Story,
+ "Yes, this place is really strange. I'm going to have another look around.",-;
+ close;
+
+L_Story:
+ mes "[Cerhan]";
+ mes "\"I came from Thermin, a town in Kazei area.\"";
+ next;
+ mes "\"I'm an experienced weapon master and thinking about establishing a smithy here. But I'll need some more equipment.\"";
+ next;
+ if (countitem("MylarinDust") > 0)
+ menu
+ "Do you know something about 'Mylarin Dust'?", L_Mylarin,
+ "Good luck with that.",-;
+ mes "[Cerhan]";
+ mes "\"If you are interested in weapons and armor, you may want to come back later.\"";
+ close;
+
+L_Mylarin:
+ mes "[Cerhan]";
+ mes "\"Mylarin dust?! Where did you get that? That's amazing!\"";
+ next;
+ mes "\"I can craft you an amazing strong armor with that - uhm, well, I first need to set up my smithy here.\"";
+ next;
+ mes "\"Please come back, when I'm ready with that. Mylarin dust... amazing.\"";
+ close;
+}
diff --git a/world/map/npc/027-2/crying_child.txt b/world/map/npc/027-2/crying_child.txt
new file mode 100644
index 00000000..d7cbeac3
--- /dev/null
+++ b/world/map/npc/027-2/crying_child.txt
@@ -0,0 +1,186 @@
+// author: alastrim
+// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
+
+027-2.gat,50,92,0 script Aldred 314,{
+
+// Crying Child subquest
+// Variable states:
+// 1 = You agree to help the child to find the ring outside
+// 2 = You found the ring (see 027-1.../monsters.txt)
+// 3 = You gave the ring to the child
+// 4 = You decided to help the child again, by investigating what the ring means to them.
+// 5 = The father/husband told you what he thinks of the ring
+// 6 = The mother/wife told you what he thinks of the ring
+// 7 = The kid decided that the ring has no value to their parents, so you can have it.
+
+ set @Graveyard_Inn_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_2_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (Sex == 0) set @madamsir$, "Madam";
+ if (Sex == 1) set @madamsir$, "Sir";
+ if (@state == 7) goto L_return5;
+ if (@state == 6) goto L_return4;
+ if (@state == 4 || @state == 5) goto L_return3;
+ if (@state == 3) goto L_return2;
+ if (@state == 2) goto L_return1;
+ if (@state == 1) goto L_return;
+ if (BaseLevel >= 80) goto L_intro;
+
+L_cry:
+ mes "[Crying Child]";
+ mes "\"Waaahhhhh! *sniffle*\"";
+ close;
+
+L_intro:
+ mes "[Crying Child]";
+ mes "\"Waaah!\"";
+ next;
+ mes "\"*Sniffle*\"";
+ next;
+ mes "You bend your knees near the child, trying to gain his confidence and ask why he is crying. But looking closely, you are surprised to see that his skin color is an awful cadaveric grey...";
+ menu
+ "Calm down kid, what happened?",-,
+ "Leave the kid alone.",L_close;
+ mes "[Crying Child]";
+ mes "\"Oh, what? Who are you "+@madamsir$+", what are you doing here?\"";
+ next;
+ menu
+ "My name is "+strcharinfo(0)+". I heard you cry and decided to ask if you need help.",-;
+ mes "The child looks at you from head to toe and says: \"" +@madamsir$+ ", aren't you scared of me?\"";
+ next;
+ menu
+ "No... Why would I be scared of you?",-;
+ mes "[Crying Child]";
+ mes "\"I am, you know... dead. And Mom and dad, and a lot of people in this inn... But most of them don't like to talk about it.\"";
+ menu
+ "You are a brave and smart kid... I have nothing to be afraid of.",-;
+ mes "[Crying Child]";
+ mes "\"It is nice to talk to you. I don't have any friends and Mom is always sad and Dad is always angry with something I don't know... and... Did you see the man in the room next to me? The one with horns? Ohh, I don't like him! \"";
+ next;
+ mes "[Crying Child]";
+ mes "\"My parents told me not to talk to strangers... But you look nice... I guess I can trust you... I'm Aldred and we live here, my parents and me. This is our inn.\"";
+ next;
+ mes "[Aldred]";
+ mes "\"You asked why I was crying. My problem is... I don't know what to do... My dad will be so angry with me... He used to be very nice, but now... if you do something wrong... he... Waaaaa!\"";
+ next;
+ menu
+ "Here, here, don't cry... What did you do?",-;
+ mes "[Aldred]";
+ mes "\"Err.. I was looking at my parents stuff and I found this funny thing! It looked like a normal ring, but with a round empty space... I thought it would be fun to take it with me and maybe look for a stone or a gem to fill the empty space. But I... *sniffle*... I lost it...\"";
+ next;
+ mes "\"I don't know what happened. I was in this room and... I heard some very loud noises, people screaming, cracking sounds... and a smell, a terrible smell, like something rotten. And then I can't remember anything else!\"";
+ next;
+ mes "\"I think it was something very bad, because, after all that, I woke up the way I am now and I couldn't find the ring in my pocket. Oh, and my parents are acting like they are not themselves. I don't know what happened, maybe it was my fault... I shouldn't have played with that ring... *sniffle*... \"";
+ next;
+ menu
+ "Don't worry, I will look around. Maybe I can find it for you...",-,
+ "Hey, you messed up, now you deal with this.",L_close;
+
+ mes "[Aldred]";
+ mes "\"Thank you " +strcharinfo(0)+"! Find it for me, pleeeease! Ohh, and don't tell my parents I lost their ring, okay?\"";
+ set @state, 1;
+ callsub S_Update_Mask;
+ close;
+
+L_return:
+ mes "[Aldred]";
+ mes "\"Please, help me " +@madamsir$+ ". If you find that ring I think things can be a little better between me and my parents.\"";
+ close;
+
+
+L_return1:
+ menu
+ "Hi Aldred. I found the ring!",-;
+ mes "[Aldred]";
+ mes "\"Great! You are the best! Where did you find it?\"";
+ next;
+ menu
+ "It was easy, it was with one of the monsters outside.",-;
+ mes "[Aldred]";
+ mes "\"Ohh.. a monster? He must be a fine monster since he returned it so easily to you!\"";
+ next;
+ menu
+ "Err... kind of...",-;
+ mes "[Aldred]";
+ mes "\"Now I will put this thing back in its proper place... Thank you!\"";
+ set @state, 3;
+ callsub S_Update_Mask;
+ close;
+
+
+L_return2:
+ mes "[Aldred]";
+ mes "\"Hi "+strcharinfo(0)+ "! I was thinking... you were sooo nice helping me find the ring... I think I should give you a gift, but I'm just a dead kid, I have nothing to give you!\"";
+ next;
+ menu
+ "Don't worry, you don't need to give me anything...",-;
+ mes "[Aldred]";
+ mes "\"Are you serious? That is why you are so great! But hey, I have an idea. What if you talk to my parents about this thing? If it is not important or valuable, I don't think it would be a problem to let you keep it. And I really want to know if they are acting all weird because I lost it. Would you do this for me?\"";
+ next;
+ menu
+ "Sounds interesting... But who are your parents?",-,
+ "Bad idea, it will only bring more problems...",L_close;
+ set @state, 4;
+ callsub S_Update_Mask;
+ mes "[Aldred]";
+ mes "\"Ok, great... But please, don't tell them about it. I don't want my parents to know I was playing with their stuff. My father is always carrying a lantern... I guess he is still afraid of the dark. My mother is the innkeeper. She is very beautiful and she is wearing a red dress.\"";
+ next;
+ mes "\"Don't forget to come back with the ring after you talk to my parents.\"";
+ message strcharinfo(0), "Aldred hands you the ring and you keep it in a small pocket of your backpack";
+ close;
+
+L_return3:
+ mes "[Aldred]";
+ mes "\"I hope this ring doesn't mean a lot to my parents. This way you can keep it as a gift and I won't feel guilty about taking it.\"";
+ close;
+
+L_return4:
+ menu
+ "Hi, I talked to your parents.",-;
+ mes "[Aldred]";
+ mes "\"Really? What did my father say about it?\"";
+ menu
+ "He said it is just a cheap ring. And it does not belong to him.",-;
+ mes "[Aldred]";
+ mes "\"And what did my mother say?\"";
+ menu
+ "She said it was a gift to her, but she doesn't want it anymore.",-;
+ mes "[Aldred]";
+ mes "\"Really? A gift? And why she doesn't want it?\"";
+ next;
+ menu
+ "She said it makes her sad.",-;
+ mes "\"Ohh... really? I don't like when my mother gets sad... If this ring is making her feel bad, I should keep it away from her. \"";
+ next;
+ mes "\"Well, I guess you can keep it, but don't show it to my mother again, she is already very sad. But now I am really curious, who else would give a gift to my mother? There are so many strange things happening lately...\"";
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_full;
+ getitem "RingSimple", 1;
+ set @state, 7;
+ callsub S_Update_Mask;
+ mes "\"I will tell my parents how great and helpful you are. Maybe they can even let you stay here at the inn for free!\"";
+ close;
+
+L_return5:
+ mes "[Aldred]";
+ mes "\"Thank you for all your help.\"";
+ close;
+
+L_full:
+ mes "[Aldred]";
+ mes "\"I dont think you can carry this ring... Your backpack is full! Throw something away and come back to get it.\"";
+ close;
+
+
+L_close:
+ close;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+
+}
diff --git a/world/map/npc/027-2/diary.txt b/world/map/npc/027-2/diary.txt
new file mode 100644
index 00000000..15eaa85e
--- /dev/null
+++ b/world/map/npc/027-2/diary.txt
@@ -0,0 +1,43 @@
+027-2.gat,26,97,0 script #Diary 127, {
+ set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
+
+ set @reid, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@reid >= 6) goto L_Diary;
+ end;
+
+L_Diary:
+ mes "You pull out Reid's diary from behind a huge poem book. In the back of the book, you find some entries which seem to be about Savaric.";
+ next;
+ mes "'Savaric keeps confusing me - one time he is so flirty and slinky, another time he is cold and unfriendly. What is it with this man?'";
+ next;
+ mes "'I need to stay away from him! It's not right, what I am feeling. It seems Hamond doesn't suspect anything of my feelings - but I know, it's just a matter of time. I need to come to my senses again!'";
+ next;
+ mes "'Oh, this chaos between Savaric and me is getting serious. I was in his room today and he put his arms around me - I wanted to push him away, but I couldn't move. It was such a sweet feeling. I was torn between my brain saying 'No!' and my body wanting to feel his touch. Then Aldred showed up and Savaric let me go.'";
+ next;
+ mes "The next part is blurred - it seems Reid was crying while writing.";
+ mes "'Savaric was talking again about leaving, because he can't find the mana seed. The thought that I would never see him again made me feel like I was falling into a big black hole! I need to decide what to do. But Hamond - I owe him so much. And what about Aldred?'";
+ next;
+ mes "'We kissed each other - oh, I'm feeling so bad. I'm a disloyal slut. But I want it to happen again.'";
+ next;
+ mes "'I told Savaric we have to stop with it - he was very understanding. But then he started to hold me again and I couldn't resist. I completely don't know what to do! His touch at my waist, even though over my clothes, made me feel hotter than Hamonds touch ever did.'";
+ next;
+ mes "'I don't know if Hamond suspects us - he was holding me tight all through the night, whispering declarations of love in my ears. Oh, I'm feeling so bad.'";
+ next;
+ mes "'Hamond won't be here tomorrow night - he needs to visit our wine supplier to negotiate the prices. Savaric knows this. I'm feeling so excited - I should go with Hamond, but I told him I need to take care of the inn while he's away. Savaric.. '";
+ next;
+ mes "This is the last entry.";
+ if (@reid != 6) goto L_Close;
+
+ set @reid, 7;
+ callsub S_Update_Mask;
+L_Close:
+ close;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@reid << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-2/door.txt b/world/map/npc/027-2/door.txt
new file mode 100644
index 00000000..630e0ee2
--- /dev/null
+++ b/world/map/npc/027-2/door.txt
@@ -0,0 +1,19 @@
+027-2.gat,25,100,0 script #DoorIn 127,1,1,{
+ set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
+
+ set @reid, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ if (@reid >= 6) goto L_Warp;
+ message strcharinfo(0), "The door is locked.";
+ end;
+
+L_Warp:
+ warp "027-2.gat", 27, 99;
+ end;
+}
+
+027-2.gat,26,99,0 script #DoorOut 127,1,1,{
+ warp "027-2.gat", 23, 98;
+ end;
+}
diff --git a/world/map/npc/027-2/evil_guard.txt b/world/map/npc/027-2/evil_guard.txt
new file mode 100644
index 00000000..0ee91cfa
--- /dev/null
+++ b/world/map/npc/027-2/evil_guard.txt
@@ -0,0 +1,26 @@
+027-2.gat,100,43,0 script Blackwin 316,{
+ mes "...";
+ next;
+ mes "The guard glares at you, silently daring you to try something.";
+ next;
+ mes "[Evil Guard]";
+ mes "\"I give you warning young human. My master will suffer no fools here.\"";
+ next;
+ mes "[Evil Guard]";
+ mes "\"He created this as a place of leisure, and we are here to ensure that it stays that way.\"";
+ close;
+}
+
+027-2.gat,112,37,0 script Forwin 316,{
+ mes "[Evil Guard]";
+ mes "\"" + strcharinfo(0) + "...\"";
+ next;
+ mes "[Evil Guard]";
+ mes "\"I am your father...\"";
+ next;
+ mes "There is an awkward pause, and the guard bursts out laughing.";
+ mes "";
+ mes "[Evil Guard]";
+ mes "\"Just kidding! Can you imagine Golbanez' reaction if we had such puny offspring?\"";
+ close;
+}
diff --git a/world/map/npc/027-2/golbenez.txt b/world/map/npc/027-2/golbenez.txt
new file mode 100644
index 00000000..651ccac1
--- /dev/null
+++ b/world/map/npc/027-2/golbenez.txt
@@ -0,0 +1,574 @@
+// author: Jenalya
+// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
+// state 0: just talking, if lovers state is >= 2, go on
+// state 1: ignores you until lovers state is >= 3, player can ask about the inn. needs if woman >= 7, lover >= 3 and husband >= 4 to go on
+// state 2: shows reids memory if the player brings @ROTTENRAGS_AMOUNT rotten rags and an orange cake
+// state 3: shows hamonds memory if the player brings @UNDEADEAR_AMOUNT undead ears and a chocolate cake
+// state 4: shows savarics memory if the player brings @UNDEADEYE_AMOUNT undead eyes and an apple cake
+// state 5: shows all memories again if asked for them. if @lover == 6, player can ask for savarics soul
+// state 6: wants jackOsouls, random chance of 1/50 to success
+// state 7: done
+
+027-2.gat,39,91,0 script Golbenez 307,{
+
+ set @Graveyard_Inn_MASK, NIBBLE_4_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_4_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
+
+ set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
+
+ set @Graveyard_Inn_Lover_MASK, NIBBLE_1_MASK;
+ set @Graveyard_Inn_Lover_SHIFT, NIBBLE_1_SHIFT;
+
+ set @lover, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Lover_MASK) >> @Graveyard_Inn_Lover_SHIFT);
+
+ set @Graveyard_Inn_Husband_MASK, NIBBLE_3_MASK;
+ set @Graveyard_Inn_Husband_SHIFT, NIBBLE_3_SHIFT;
+
+ set @husband, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Husband_MASK) >> @Graveyard_Inn_Husband_SHIFT);
+
+ set @ROTTENRAGS_AMOUNT, 50;
+ set @ROTTENRAGS_EXP, 100000;
+ set @UNDEADEAR_AMOUNT, 25;
+ set @UNDEADEAR_EXP, 150000;
+ set @UNDEADEYE_AMOUNT, 20;
+ set @UNDEADEYE_EXP, 150000;
+
+ if (@state >= 7) goto L_Done;
+ if (@state == 6) goto L_Soul;
+ if (@state == 5) goto L_All;
+ if (@state == 4) goto L_Savaric;
+ if (@state == 3) goto L_Hamond;
+ if (@state == 2) goto L_Reid;
+ if (@state == 1) goto L_Back;
+
+ mes "[Golbenez]";
+ mes "\"How do you like my place of leisure, mortal?\"";
+ menu
+ "What is this place? Why is it full of dead people?",-,
+ "You look different here. Nice horns.",L_Horns,
+ "I'm enjoying myself, thanks for asking.",L_Close;
+
+ mes "[Golbenez]";
+ mes "\"Mortal, this is way over your head. Don't worry about that and enjoy your time.\"";
+
+ if (@lover < 2)
+ goto L_Close;
+ menu
+ "I want to know. Try me.",-;
+
+ mes "Golbenez takes a piercing look at you.";
+ mes "[Golbenez]";
+ mes "\"Fine.\"";
+ next;
+ mes "\"This place was a normal inn many, many of your years ago. I found it by chance and it became one of my most favorite playgrounds ever.\"";
+ next;
+ mes "Golbenez laughs in a way which really gives you the creeps.";
+ next;
+ mes "[Golbenez]";
+ mes "\"Unfortunately - it got destroyed. So I took the memories of the dead and recreated this place.\"";
+ menu
+ "What do you mean by 'playground?'",-,
+ "Recreated? What do you mean by that?",-;
+
+ mes "[Golbenez]";
+ mes "\"As I said, you don't understand. You start to bore me. Leave.\"";
+
+ set @state, 1;
+ callsub S_Update_Mask;
+
+ close;
+
+L_Back:
+ if (@lover >= 3)
+ goto L_Memory;
+ mes "Golbenez decides to ignore your presence.";
+ close;
+
+L_Memory:
+ mes "[Golbenez]";
+ mes "\"Mortal, you're back. Are you going to bore me with other stupid questions?\"";
+ menu
+ "I want to know what happened in the inn before it was destroyed.",-,
+ "Nevermind.",L_Close;
+ if ((@woman >= 7) && (@lover >= 3) && (@husband >= 4))
+ goto L_Detective;
+ mes "[Golbenez]";
+ mes "\"I was watching you playing detective. It is amusing. Play it a little longer and I may show you some of the memories from that time.\"";
+ close;
+
+L_Detective:
+ mes "[Golbenez]";
+ mes "\"Watching you digging into this dirty little love story of those foolish humans has certainly been amusing so far.\"";
+ next;
+ mes "\"I can show you all their memories. Would you like that?\"";
+ next;
+ mes "\"The only thing you'd have to do is promise me your soul.\"";
+ menu
+ "No!",-,
+ "That's too expensive. Make another offer.",-,
+ "My soul?!",-;
+ mes "Golbenez giggles, which looks strange on such an intimidating being as he is.";
+ mes "[Golbenez]";
+ mes "\"You should have seen your face. Really, mortals can be so funny.\"";
+ next;
+ mes "\"Ok, I'll show you the birdbrained womans memories if you bring me " + @ROTTENRAGS_AMOUNT + " Rotten Rags. And an Orange Cake.\"";
+ set @state, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_Reid:
+ mes "[Golbenez]";
+ mes "\"So, do you have the " + @ROTTENRAGS_AMOUNT + " Rotten Rags I want?\"";
+ if (countitem("RottenRags") < @ROTTENRAGS_AMOUNT)
+ menu
+ "What do you need them for?",L_Why_Stuff,
+ "I'm working on that.",L_Close;
+ menu
+ "Here you go.",-,
+ "I'm working on that.",L_Close;
+ if (countitem("OrangeCake") < 1)
+ goto L_No_Cake;
+ if (countitem("RottenRags") < @ROTTENRAGS_AMOUNT)
+ goto L_Betray;
+ delitem "RottenRags", @ROTTENRAGS_AMOUNT;
+ delitem "OrangeCake", 1;
+ getexp @ROTTENRAGS_EXP, 0;
+
+ mes "[Golbenez]";
+ mes "\"Very nice. I will show you the womans memories of that night. Come closer.\"";
+ next;
+ mes "\"You're hesitating but then take a step towards Golbenez. He grabs your head with his claw-like fingers.\"";
+ next;
+ callsub S_Reidsmem;
+ set @state, 3;
+ callsub S_Update_Mask;
+ menu
+ "Can I see it again?",-,
+ "Wow, that was interesting.",-,
+ "Why do you collect such personal memories?",-;
+ mes "Golbenez takes an amused look at you.";
+ next;
+ mes "[Golbenez]";
+ mes "\"I'll explain the deal to you. Once you have paid for a memory, you can come and see it again as often as you like. And I collect whatever memory I want to. Mortals can be very amusing.\"";
+ next;
+ mes "\"I have more memories you might want to see. Bring me "+ @UNDEADEAR_AMOUNT + " Undead Ears. And a Chocolate Cake.\"";
+ close;
+
+L_Hamond:
+ mes "[Golbenez]";
+ mes "\"Ah, mortal. Do you have the " + @UNDEADEAR_AMOUNT + " Undead Ears I want?\"";
+ if (countitem("UndeadEar") < @UNDEADEAR_AMOUNT)
+ menu
+ "I want to see Reids memory again.",L_R_Again,
+ "What will you do with them?",L_Why_Stuff,
+ "Not yet.",L_Close;
+ menu
+ "I want to see Reids memory again.",L_R_Again,
+ "I have what you want.",-,
+ "I'm working on that.",L_Close;
+ if (countitem("ChocolateCake") < 1)
+ goto L_No_Cake;
+ if (countitem("UndeadEar") < @UNDEADEAR_AMOUNT)
+ goto L_Betray;
+ delitem "UndeadEar", @UNDEADEAR_AMOUNT;
+ delitem "ChocolateCake", 1;
+ getexp @UNDEADEAR_EXP, 0;
+ mes "[Golbenez]";
+ mes "\"Good. I'll show you the memories of the dumb husband now. Come to me.\"";
+ next;
+ mes "You step closer to Golbenez and he holds your head again.";
+ callsub S_Hamondsmem;
+ set @state, 4;
+ callsub S_Update_Mask;
+ mes "[Golbenez]";
+ mes "It's really interesting how illogical humans behave.";
+ next;
+ mes "\"And how predictable they are. I can see in your eyes that you want to know how this drama went on.\"";
+ next;
+ mes "\"Bring me " + @UNDEADEYE_AMOUNT + " Undead Eyes and an Apple Cake.\"";
+ close;
+
+L_Savaric:
+ mes "[Golbenez]";
+ mes "\"I hope you are bringing me the " + @UNDEADEYE_AMOUNT + " Undead Eyes I want.\"";
+ if (countitem("UndeadEye") < @UNDEADEYE_AMOUNT)
+ menu
+ "I want to see Reids memory again.",L_R_Again,
+ "I want to see Hamonds memory again.",L_H_Again,
+ "I really wonder what you do with the stuff I bring you.",L_Why_Stuff,
+ "They're hard to get. I'm still working on that.",L_Close;
+ menu
+ "I want to see Reids memory again.",L_R_Again,
+ "I want to see Hamonds memory again.",L_H_Again,
+ "I got what you want.",-,
+ "I'm working on that.",L_Close;
+ if (countitem("AppleCake") < 1)
+ goto L_No_Cake;
+ if (countitem("UndeadEye") < @UNDEADEYE_AMOUNT)
+ goto L_Betray;
+ delitem "UndeadEye", @UNDEADEYE_AMOUNT;
+ delitem "AppleCake", 1;
+ getexp @UNDEADEYE_EXP, 0;
+ mes "[Golbenez]";
+ mes "\"Very Good. Now I'll show you the pitiful mages memory.\"";
+ next;
+ mes "He holds your head and everything grows black again.";
+ callsub S_Savaricsmem;
+ set @state, 5;
+ callsub S_Update_Mask;
+ mes "[Golbenez]";
+ mes "\"Humans can be so amusing!\"";
+ menu
+ "YOU CRUEL MONSTER!",-,
+ "I agree. What a bunch of idiots.",-;
+ mes "Golbenez smiles";
+ mes "[Golbenez]";
+ mes "\"Oh, thank you.\"";
+ close;
+
+L_All:
+ if (@lover == 6) goto L_Negotiate;
+ mes "[Golbenez]";
+ mes "\"Did you come back to see the memories again?\"";
+ menu
+ "I want to see Reids memory again.",L_R_Again,
+ "I want to see Hamonds memory again.",L_H_Again,
+ "I want to see Savarics memory again.",L_S_Again,
+ "Nevermind.",L_Close;
+ close;
+
+L_Negotiate:
+ mes "Golbenez eyes are glowing greedily";
+ mes "[Golbenez]";
+ mes "\"Did you come back to see the memories again? Or are you going to offer me another deal?\"";
+ menu
+ "I want Savarics soul back.",-,
+ "I want to see Reids memory again.",L_R_Again,
+ "I want to see Hamonds memory again.",L_H_Again,
+ "I want to see Savarics memory again.",L_S_Again,
+ "Nevermind.",L_Close;
+
+ mes "[Golbenez]";
+ mes "\"Savarics soul, yes. It is a pretty nice soul, you know. From a mage... no, even better... from a loving mage. It is valuable.\"";
+ next;
+ mes "\"Why do you think it would be easy to get it back? Do you have anything of equal worth to offer?\"";
+ next;
+ menu
+ "What about another cake?",L_Cake,
+ "I'm not sure. What do you want?",-,
+ "No.",L_Close;
+
+ mes "[Golbenez]";
+ mes "\"Bring me a soul of at least equal power to the mage. I don't care where you get it.\"";
+ set @state, 6;
+ callsub S_Update_Mask;
+ close;
+
+L_Soul:
+ mes "[Golbenez]";
+ mes "\"So, did you get a soul for me?\"";
+L_Soul_Try:
+ if (countitem("JackOSoul") < 1)
+ menu
+ "I'll go and get one.",L_Close;
+ menu
+ "What about this Jack O Soul?",-,
+ "I'll go and try to find a soul.",L_Close;
+
+ if (countitem("JackOSoul") < 1) goto L_Betray;
+ delitem "JackOSoul", 1;
+ set @soul, rand(50);
+ if (@soul == 0) goto L_Soul_Success;
+ mes "[Golbenez]";
+ mes "\"No, this one isn't as powerful as the mage. Bring me another one of them.\"";
+ goto L_Soul_Try;
+
+L_Soul_Success:
+ mes "Golbenez suddenly gets excited.";
+ mes "[Golbenez]";
+ mes "\"Yes! This one is full of energy.\"";
+ next;
+ mes "\"So be it, mortal. I'll release Savarics soul in exchange for this one.\"";
+ set @state, 7;
+ callsub S_Update_Mask;
+ close;
+
+L_Done:
+ mes "[Golbenez]";
+ mes "\"I hope you enjoyed your little detective game. I certainly did.\"";
+ close;
+
+L_Cake:
+ mes "Golbenez laughs.";
+ mes "[Golbenez]";
+ mes "\"That's why I like you - also you're a human, you have a nice sense of humor.\"";
+ close;
+
+L_S_Again:
+ callsub S_Savaricsmem;
+ mes "[Golbenez]";
+ mes "\"What a fool he was, even for a human.\"";
+ close;
+
+L_R_Again:
+ callsub S_Reidsmem;
+ mes "\"This memory seems to be exciting to you. Interesting.\"";
+ close;
+
+L_H_Again:
+ callsub S_Hamondsmem;
+ mes "[Golbenez]";
+ mes "\"Humans can be so stupid, can't they?\"";
+ close;
+
+L_Horns:
+ mes "Golbenez bursts out with laughter.";
+ next;
+ mes "[Golbenez]";
+ mes "\"Mortals! They never stop surprising me.\"";
+ close;
+
+L_Why_Stuff:
+ mes "[Golbenez]";
+ mes "\"That is not your concern.\"";
+ close;
+
+L_Betray:
+ mes "[Golbenez]";
+ mes "\"I'm warning you, mortal. Don't try to betray me!\"";
+ close;
+
+L_No_Cake:
+ mes "[Golbenez]";
+ mes "\"Fool! You forgot my cake!\"";
+ close;
+
+L_Close:
+ close;
+
+S_Reidsmem:
+ mes "[Golbenez]";
+ mes "\"I'll send her memories into your brain now. Don't collapse or do something similarly foolish.\"";
+ next;
+ mes "Everything turns black. Then, slowly, you see something. You're standing outside and watching an alive-looking Hamond ride away on a carriage drawn by a mouboo.\"";
+ next;
+ mes "\"You turn back and enter a nice looking building. It seems to be the inn.";
+ next;
+ mes "Obviously you are watching Reids memories out of her eyes. You're getting excited. Or is it Reid who feels excited? You're not sure.";
+ next;
+ mes "You-Reid walks up the stairs and stops in front of the door you recognize as Savarics room. You get a twisted feeling, something between desire, guilt and despair.";
+ next;
+ mes "It seems you're not only seeing Reids memories but also feeling them!";
+ next;
+ mes "Reid turns away from Savarics door and walks to her rooms quickly. She is shivering. You feel her heart pounding.";
+ next;
+ mes "She enters the room and pulls the red dress you already recognize from her ghost out of a chest and changes her clothes. Her heart is pounding even faster.";
+ next;
+ mes "She sits down on the bed holding her head in her hands.";
+ next;
+ mes "[Reid]";
+ mes "\"This is wrong...\"";
+ next;
+ mes "Then she stands up and returns to Savarics door. She is hesitating again. Suddenly the door opens, Savaric standing there, smiling.";
+ next;
+ mes "[Savaric]";
+ mes "\"I was hoping you would come.\"";
+ next;
+ mes "He reaches out his hands and you feel Reid getting dizzy.";
+ next;
+ mes "You enter his room together. There is only one candle on the table, so the light is dimmed.";
+ next;
+ mes "[Reid]";
+ mes "\"I- we- Savaric- this is not right- we shouldn't do this.\"";
+ next;
+ mes "[Savaric]";
+ mes "\"But you came. Sh, don't worry. Let me hold you.\"";
+ next;
+ mes "Savaric puts his arms around Reid and lead her to the bed. You feel a flush of sexual arousal.";
+ next;
+ mes "He starts to caress Reids face with his lips while his hands slip her dress from her shoulders.";
+ next;
+ mes "Reids feelings are like a firestorm and it's hard for you to concentrate on what is happening.";
+ next;
+ mes "Savaric touches her body and - you suddenly stand in front of Golbenez again, wobbling around and then fall to the ground.";
+ next;
+ mes "[Golbenez]";
+ mes "\"I told you not to collapse!\"";
+ next;
+ mes "\"It seems Reids feelings were too strong for you to withstand.\"";
+ next;
+ mes "Golbenez grins.";
+ next;
+ mes "[Golbenez]";
+ mes "\"But I guess you can imagine what followed.\"";
+ next;
+ return;
+
+S_Hamondsmem:
+ mes "The darkness vanishes and you see the back of a mouboo pulling the carriage you're sitting on. Or better to say, Hamond is sitting on.";
+ next;
+ mes "You feel very very nervous and worried.";
+ next;
+ mes "[Hamond]";
+ mes "\"I shouldn't leave her alone with that debaucher. But she loves me. She won't give in to such a dandy. I believe in her. I trust her.\"";
+ next;
+ mes "The carriage reaches a river, but it seems the bridge is damaged. A group of people is standing at the riverside. There is one little boat, taking the people across one by one.";
+ next;
+ mes "You feel a great surge of relief growing in Hamonds chest.";
+ next;
+ mes "He shakes the reins and gets his carriage turned around. Obviously this is a great excuse for him to return to Reid at once.";
+ next;
+ mes "When he returns to the inn, sunset is already near. He tells the stableboy to take care of the mouboo and carriage, then rushes up the stairs heading to his and Reids rooms. You can feel his heart pounding.";
+ next;
+ mes "He rips the door open and the room is empty. A cold feeling grows in his chest. He turns around and sees Reid standing in front of him, wearing her best dress. The red one which makes her look so beautiful - you feel a sharp sting in Hamonds heart.";
+ next;
+ mes "The dress is crumpled and seems to be put on in haste. Her hair is in total chaos on her head.";
+ next;
+ mes "[Reid]";
+ mes "\"Hamond! What are you doing here? Why are you already back?\"";
+ next;
+ mes "You feel a burning rage growing in Hamond.";
+ mes "[Hamond]";
+ mes "\"You're not happy to see me, are you? Would you prefer me to run this inn for you but not bother you about your cockish behavior?!\"";
+ next;
+ mes "The shocked and painful but guilty look on Reids face fills Hamond with a strange mixture of pain and gratification.";
+ next;
+ mes "He grabs her arm, pulls her into the room and slams the door shut behind them. You see a fearful look on Reids face.";
+ next;
+ mes "[Reid]";
+ mes "\"Hamond! Please, calm down!\"";
+ next;
+ mes "The feeling of broken trust and disappoinment seems to drive you..Hamond..crazy.";
+ next;
+ mes "Hamond slaps her across the face.";
+ next;
+ mes "[Hamond]";
+ mes "\"You are MY WIFE! I'll teach you what this means!\"";
+ next;
+ mes "As Hamond grabs Reid roughly and holds her tight, you can smell her sweat and fear, but under that is the smell of another man! Hamonds vision goes red.";
+ next;
+ mes "[Hamond]";
+ mes "\"You dirty slut! I did everything for you!\"";
+ next;
+ mes "Reid is struggling wildly to get out of Hamonds hold. She is surprisingly strong and both are falling against the table.";
+ next;
+ mes "The next thing you see is a teapot smashing into Hamonds face. He stumbles back.";
+ next;
+ mes "You see Reid running to the door, where she pauses and has a look back. Then she runs out of the room.";
+ next;
+ mes "Her face was drowned with tears, her lips bloody and her eye was already turning black.";
+ next;
+ mes "You feel shock and regret.";
+ mes "[Hamond]";
+ mes "\"What did I do? Reid... How could I ever hurt you?\"";
+ next;
+ mes "Your sight turns black and with your next blink you're standing in front of Golbenez again.";
+ next;
+ return;
+
+S_Savaricsmem:
+ mes "As you gain your eyesight again, you find yourself bustling back and forth in Savarics room.";
+ next;
+ mes "The mixture of feelings you sense is very confusing. Worry, guilt, craving and below all that a deep feeling of luck and satisfaction.";
+ next;
+ mes "Then you hear steps outside the room. Savaric turns to the door quickly, then Reid breaks into the room.";
+ next;
+ mes "She looks totally tattered, her dress is ripped, her lips are bleeding, she has a black eye and she is sobbing uncontrollably. It takes Savaric less than a second to reach her and put his arms around her carefully.";
+ next;
+ mes "You feel a deep, cold anger.";
+ next;
+ mes "[Savaric]";
+ mes "\"Reid, my love, what did he do to you? Please come and lay down.\"";
+ next;
+ mes "Savaric leads Reid to his bed and covers her gently. Then he holds and rocks her until she falls asleep. You notice Savaric is only wearing his underpants.";
+ next;
+ mes "After Reids breathing has calmed down and her oppressed face looks peaceful again, he stands up and his cold burning anger comes back.";
+ next;
+ mes "[Savaric]";
+ mes "\"I won't let him get away with that!\"";
+ next;
+ mes "Savaric pulls some things out of a chest and puts them on the table. He lights some candles and begins to mix together some powders and fluids. You can feel his concentration, but below that also a great anger which restrains you from clear thought.";
+ next;
+ mes "Savaric seems to be ready with his magic ingredients and takes what he mixed together. You feel rising power inside of you. The moment you think you can't stand it anymore, the tension disappears and a purple light fills the room for a moment.";
+ next;
+ mes "Golbenez is standing in front of you";
+ next;
+ mes "[Golbenez]";
+ mes "\"Mortal! It was very rude of you to force me to this place with that spell - are you aware of the power you are playing around with?!\"";
+ next;
+ mes "Fear is rising inside of you, but also excitement and a feeling of power.";
+ next;
+ mes "[Savaric]";
+ mes "\"I called you to get rid of the person who did this to this adorable woman.\"";
+ mes "He points at Reid";
+ next;
+ mes "[Savaric]";
+ mes "\"Tell me your charge.\"";
+ next;
+ mes "Golbenez' behavior changes immediately and he suddenly seems much friendlier.";
+ next;
+ mes "[Golbenez]";
+ mes "\"Ah, you're offering me a deal. That's something else. Let me see. I can free her from all pain and anything or anyone causing her trouble.\"";
+ next;
+ mes "You feel Savarics heart pounding.";
+ mes "[Savaric]";
+ mes "\"Yes. That's what I want. I want her to be safe from any harm.\"";
+ next;
+ mes "Golbenez' face turns into a smile.";
+ mes "[Golbenez]";
+ mes "\"This requires some effort. It will have a remarkable price. I want your soul in exchange.\"";
+ next;
+ mes "The feeling of power disappears and is replaced with uncertainty.";
+ mes "[Savaric]";
+ mes "\"My - soul? Can't it be something else?\"";
+ next;
+ mes "[Golbenez]";
+ mes "\"Think about what you get! This woman will never feel any pain again!\"";
+ next;
+ mes "Savarics hesitation vanishes.";
+ mes "[Golbenez]";
+ mes "\"So be it. Take my soul and prevent Reid from feeling pain ever again.\"";
+ next;
+ mes "Golbenez' smile changes to an ugly grin of malice. He reaches out to Savaric and seems to pull something out of him. Suddenly, you feel very weak and empty.";
+ next;
+ mes "In the next moment, you're laying on the ground and see Golbenez raising his arms. You sense an unbelievable magic force - what is he doing?";
+ next;
+ mes "Undead are entering the room and one of them steps to the bed and breaks Reid neck with a quick movement. A dark and black feeling of despair is rising inside of you.";
+ next;
+ mes "[Savaric]";
+ mes "\"NO!! What are you doing?\"";
+ next;
+ mes "[Golbenez]";
+ mes "\"She will never feel pain anymore. Just like everyone else in this inn - besides you, foolish mortal.\"";
+ next;
+ mes "Golbenez leaves the room and you feel Savaric giving in to his pain. He is laying on the floor and trying to understand what he did.";
+ next;
+ mes "After a few moments of only feeling his suffering, Savaric finally manages to stand up again. He can't stand to see Reids dead body anymore and stumbles out of the room.";
+ next;
+ mes "But what you can see in the rest of the inn isn't able to ease the suffering you're feeling. The undead have slaughtered every person in the inn, leaving only Savaric alive.";
+ next;
+ mes "Savaric seems stunned by shock. He slowly returns to his room and kneels in front of the bed, taking Reids hand.";
+ next;
+ mes "[Savaric]";
+ mes "\"Reid - I'm so sorry. My haughtiness was greater than my skills.\"";
+ next;
+ mes "The numb feeling gives way to a new feeling of determination.";
+ next;
+ mes "Savaric pulls a rope out of the chest beside the bed.";
+ mes "[Savaric]";
+ mes "\"Now there's only one thing left for me to do.\"";
+ next;
+ mes "Your vision turns black again and you're standing in front of Golbenez.";
+ return;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-2/gy_inn_shops.txt b/world/map/npc/027-2/gy_inn_shops.txt
new file mode 100644
index 00000000..a90d4301
--- /dev/null
+++ b/world/map/npc/027-2/gy_inn_shops.txt
@@ -0,0 +1,35 @@
+// chef: function,
+// barmaid: function,
+// shopkeeper: multiples and function,
+// magic undead shop: function,
+// chief barman: function,
+// receptionist: function,
+// banker: function
+
+
+027-2.gat,75,22,0 shop Chef 300,784:-1,785:-1,786:-1,787:-1
+027-2.gat,90,36,0 shop Estrilda 301,788:-1,789:-1,790:-1
+027-2.gat,93,22,0 shop Umfrey 302,1282:-1,1281:-1
+027-2.gat,56,99,0 shop Leofwin 304,501:-1,502:-1,518:100,566:2000,567:-1,568:-1,613:500,631:1000,740:-1,772:-1,773:-1,774:-1
+027-2.gat,106,22,0 shop Edwin 309,784:-1,785:-1,786:-1,787:-1,788:-1,789:-1,790:-1
+
+// Inn
+027-2.gat,107,39,0 script Barbara Grey 320,{
+ set @npcname$, "Barbara Grey";
+ set @cost, 1000;
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Don't be shy darling.";
+ mes "\"Come on in and have a nice long ... long slumber ...";
+ next;
+ callfunc "Inn";
+}
+
+// Bank and Storage
+027-2.gat,88,22,0 script J.P. Morbid 321,{
+ callfunc "ClearVariables";
+ set @npcname$, "J.P. Morbid";
+ callfunc "Banker";
+ close;
+}
+
diff --git a/world/map/npc/027-2/headless_man.txt b/world/map/npc/027-2/headless_man.txt
new file mode 100644
index 00000000..5e7454ca
--- /dev/null
+++ b/world/map/npc/027-2/headless_man.txt
@@ -0,0 +1,208 @@
+// author: TheKandiman, input from Jenalya and Pjotr Orial
+// simple quest for headless man in gy inn
+// state 0: first contact
+// state 1: quest accepted
+// state 2: items delivered, return for reward and followup story
+// state 3: quest completed
+
+027-2.gat,22,76,0 script Thurstan 318,{
+
+ if (Sex == 0) set @madamsir$, "Madam";
+ if (Sex == 1) set @madamsir$, "Sir";
+
+ set @Graveyard_Inn_MASK, NIBBLE_6_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_6_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @Wisp_Powder, 50;
+ set @Polt_Powder, 50;
+ set @Spec_Powder, 50;
+ set @Iron_Pot, 50;
+ set @Conc_Pot, 30;
+ set @Red_Dye, 50;
+ set @Yellow_Dye, 50;
+ set @LB_Dye, 50;
+
+ set @Glue_Exp, 50000;
+
+ if (@state >= 3) goto L_Final;
+ if (@state == 2) goto L_Quest_finished;
+ if (@state == 1) goto L_Quest_progress;
+
+ mes "You see a man, propped up against the foot of the bed.";
+ mes "In his hand, he is holding what you assume to be his own head.";
+ next;
+ mes "You jump back a bit, startled, as the head starts talking to you!";
+ mes "It's a little strange watching him talk, but it's better than looking at what's left of his neck.";
+ next;
+ if (baselevel < 85) goto L_greet;
+ mes "[Headless Man]";
+ mes "\"Hello " + @madamsir$ + ". My name is Thurstan. Could I ask your assistance with something? I seem to be in a spot of difficulty.\"";
+ menu
+ "I'll listen, just keep that thing from dripping on me.", L_Quest_ask,
+ "Ack, a bloody talking head! Gross, no way!", L_Quest_close;
+
+L_greet:
+
+ mes "[Headless Man]";
+ mes "\"Greetings " + @madamsir$ + "! Do you have any duck tape?\"";
+ close;
+
+L_Quest_ask:
+
+ mes "[Thurstan]";
+ mes "\"A little while ago there was a patron visiting the inn...I can't remember his name now. He noticed this predicament I am in and offered to help me. He told me that he was an alchemist and that he had a recipe for an adhesive that would keep my head where it's supposed to be. Unfortunately, he wasn't able to stay long enough to gather all the ingredients for the spell, so he gave me the recipe instead. However, it's rather hard to gather things when I have to carry it around all day.\"";
+ next;
+ mes "[Thurstan]";
+ mes "\"I have a list of items and how many of each are needed. Would you mind gathering them for me?\"";
+ menu
+ "Lay it on me, Mr. Noggin!", L_Quest_start,
+ "Sorry, I'm kinda busy with, you know, living.", L_Quest_no;
+
+L_Quest_close:
+
+ close;
+
+L_Quest_start:
+
+ mes "[Thurstan]";
+ mes "\"Great! I will need the following things.\"";
+ mes "\"" + @Wisp_Powder + " Wisp Powder,\"";
+ mes "\"" + @Polt_Powder + " Poltergeist Powder,\"";
+ mes "\"" + @Spec_Powder + " Spectre Powder,\"";
+ mes "\"" + @Iron_Pot + " Iron Potion,\"";
+ mes "\"" + @Conc_Pot + " Concentration Potion,\"";
+ mes "\"" + @Red_Dye + " vials of Red Dye,\"";
+ mes "\"" + @Yellow_Dye + " vials of Yellow Dye,\"";
+ mes "\"and...\"";
+ mes "\"" + @LB_Dye + " vials of Light Blue Dye,\"";
+ next;
+ mes "[Thurstan]";
+ mes "\"My friend also said that I should use a metal bowl instead of a wooden one. I don't have one and I think a cauldron from the kitchen would be too big. Perhaps we could use an Infantry Helmet to serve that task.\"";
+ next;
+ mes "[Thurstan]";
+ mes "\"I know it probably doesn't seem like that much to you, but it is a really big deal for me. I will try to find something to compensate you for your efforts.\"";
+ set @state, 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Quest_no:
+
+ mes "[Thurstan]";
+ mes "\"Very well. Just don't come looking to me when your own head falls off!\"";
+ close;
+
+L_Quest_progress:
+
+ mes "[Thurstan]";
+ mes "Have you managed to find those items yet?\"";
+ menu
+ "Yes, here you go!", L_Quest_check,
+ "What was I supposed to get again?", L_Quest_items,
+ "No, I'm still working on it.", L_Quest_close;
+
+L_Quest_check:
+
+ if (countitem("WispPowder") < @Wisp_Powder ||
+ countitem("PoltergeistPowder") < @Polt_Powder ||
+ countitem("SpectrePowder") < @Spec_Powder ||
+ countitem("IronPotion") < @Iron_Pot ||
+ countitem("ConcentrationPotion") < @Conc_Pot ||
+ countitem("RedDye") < @Red_Dye ||
+ countitem("YellowDye") < @Yellow_Dye ||
+ countitem("LightBlueDye") < @LB_Dye ||
+ countitem("InfantryHelmet") < 1) goto L_Quest_notenough;
+
+ delitem "WispPowder", @Wisp_Powder;
+ delitem "PoltergeistPowder", @Polt_Powder;
+ delitem "SpectrePowder", @Spec_Powder;
+ delitem "IronPotion", @Iron_Pot;
+ delitem "ConcentrationPotion", @Conc_Pot;
+ delitem "RedDye", @Red_Dye;
+ delitem "YellowDye", @Yellow_Dye;
+ delitem "LightBlueDye", @LB_Dye;
+ delitem "InfantryHelmet", 1;
+ getexp @Glue_Exp, 0;
+ mes "[Thurstan]";
+ mes "\"Excellent, excellent!\"";
+ mes "";
+ mes "Thurstan takes your ingredients and seperates them into little piles according to some complex formula he is reading, seemingly from the tops of his shoes.";
+ next;
+ mes "[Thurstan]";
+ mes "\"Now if I could prevail upon you to mix the ingredients according to the instructions I have here, I would be greatly indebted.\"";
+ next;
+ mes "You mix the powders together in the Infantry bowl, adding potions and dyes as instructed. Gradually, the concoction starts to get tacky and takes on a hue similar to Thurstan's skin.";
+ mes "You can see him starting to get excited beside you...";
+ next;
+ mes "[Thurstan]";
+ mes "\"Oh this is perfect! I'll be back in action in no time!\"";
+ next;
+ mes "Thurstan covers the base of his neck with a thick coat of the glue using his free hand. He then lifts his head in both hands, places it on the layer of adhesive, and makes some minor adjustments to the position. He mutters an incantation that you can't make out and the wound across his neck seems to fade away.";
+ misceffect sfx_magic_transmute;
+ next;
+ mes "Thurstan is practically jumping for joy now.";
+ mes "";
+ mes "[Thurstan]";
+ mes "\"Thank you so much! That is such a weight on my shoulders! Now that I have some mobility back, let me see what I can do to repay you. Would you mind coming back in a few minutes?\"";
+ set @state, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_Quest_notenough:
+
+ mes "Thurstan quickly looks through the items you've brought.";
+ mes "[Thurstan]";
+ mes "\"It seems you are missing a few things. Please come back once you have everything on the list.\"";
+ close;
+
+L_Quest_items:
+
+ mes "[Thurstan]";
+ mes "\"" + @Wisp_Powder + " Wisp Powder,\"";
+ mes "\"" + @Polt_Powder + " Poltergeist Powder,\"";
+ mes "\"" + @Spec_Powder + " Spectre Powder,\"";
+ mes "\"" + @Iron_Pot + " Iron Potion,\"";
+ mes "\"" + @Conc_Pot + " Concentration Potion,\"";
+ mes "\"" + @Red_Dye + " vials of Red Dye,\"";
+ mes "\"" + @Yellow_Dye + " vials of Yellow Dye,\"";
+ mes "\"" + @LB_Dye + " vials of Light Blue Dye,\"";
+ mes "\"We'll also need 1 Infantry Helmet to use as a bowl for mixing everything together.\"";
+ close;
+
+L_Quest_finished:
+
+ mes "[Thurstan]";
+ mes "\"Thank you for all your help.\"";
+ next;
+ mes "[Thurstan]";
+ mes "\"It worked well and the bond seemed to be holding for a while. Then I started feeling a strange tingling in my neck. I suppose that was the adhesive starting to dissolve. I was leaned over my trunk digging around for something appropriate to give you..Aaaand once again my head left it's proper place.\"";
+ next;
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+ mes "[Thurstan]";
+ mes "\"Please take this for your efforts. I got it in payment of some work I did protecting the pinkie population from a terrible scourge some time ago.\"";
+ getitem "pinkiehelmet", 1;
+ set @state, 3;
+ callsub S_Update_Mask;
+ close;
+
+L_Full_Inv:
+ mes "[Thurstan]";
+ mes "\"I'd like to give you something for your efforts, but you're carrying too much stuff.\"";
+ close;
+
+L_Final:
+
+ mes "[Thurstan]";
+ mes "\"I guess I will need to find another way to re-attach my cranium. If you come across any good alchemists who might be able to help, please let me know.\"";
+ close;
+
+S_Update_Mask:
+
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+
+}
diff --git a/world/map/npc/027-2/husband.txt b/world/map/npc/027-2/husband.txt
new file mode 100644
index 00000000..fef2bafd
--- /dev/null
+++ b/world/map/npc/027-2/husband.txt
@@ -0,0 +1,327 @@
+// author: Jenalya
+// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
+// state 0: if baselevel >= 85, he asks for something to cool the drinks (ice cubes)
+// state 1: can be asked about the ring. needs @ICE_CUBE_AMOUNT ice cubes, then asks for bones and skulls.
+// state 2: wants @BONE_AMOUNT and @SKULL_AMOUNT bones and skulls
+// state 3: can be asked about the ring. needs @woman > 5 to be asked about savaric, tells, if crying child quest is completed
+// state 4: if @golbanez < 5, can be told about the memories, then asks the player to bring @RUBY_AMOUNT rubies to reid
+// state 5: waiting
+// state 6: is set in reid, gives as reward a special bowler hat
+// state 7: done
+
+027-2.gat,22,84,0 script Hamond 319,{
+
+ set @Graveyard_Inn_MASK, NIBBLE_3_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_3_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
+
+ set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
+
+ set @Graveyard_Inn_Kid_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_Kid_SHIFT, NIBBLE_2_SHIFT;
+
+ set @kidstate, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Kid_MASK) >> @Graveyard_Inn_Kid_SHIFT);
+
+ set @ICE_CUBE_AMOUNT, 100;
+ set @ICE_CUBE_EXP, 75000;
+ set @BONE_AMOUNT, 100;
+ set @SKULL_AMOUNT, 75;
+ set @BONE_EXP, 100000;
+ set @RUBY_AMOUNT, 50; // caution, this value needs to be the same as in the innkeepers script!
+
+ if (@state >= 7) goto L_Thanks;
+ if (@state == 6) goto L_Apologize;
+ if (@state == 5) goto L_Waiting;
+ if (@state == 4) goto L_News;
+ if (@state == 3) goto L_Brought_Bones;
+ if (@state == 2) goto L_Check_Bones;
+ if (@state == 1) goto L_Ice_Cube;
+
+ mes "[Pale Man]";
+ mes "\"Hello, I hope you're enjoying your time in Reid's Inn. My name is Hamond, and I'm running this inn together with my beautiful wife Reid. If there is anything I can do for you, please let me know.\"";
+ if (baselevel < 85) goto L_Close;
+ next;
+ menu
+ "I'd like to know why all the people in here are dead.",-,
+ "Are you feeling well? You look very pale... In fact, deathly pale.",-,
+ "Thank you, but I'm fine.", L_Close;
+
+ mes "Hamond seems very confused. Then he notices the grey color of his hands and begins to shake his head in panic.";
+ mes "[Hamond]";
+ mes "\"WHAT IS THIS?\"";
+ next;
+ mes "Because of the fast movement of his head, it hinges back in his neck along a cut in his throat.. a deep cut you didn't notice before.";
+ next;
+ mes "You're trying hard not to run away screaming. Instead, you grab his hair and pull his head back into place.";
+ next;
+ mes "Hamond blinks a few times, with a puzzled look on his face.";
+ mes "[Hamond]";
+ mes "\"That was uncomfortable! I guess you are right. I am dead. Weird.\"";
+ next;
+ mes "\"How can I be dead if I am walking around and talking? This is very strange. \"";
+ next;
+ mes "\"But nevertheless, I will continue to run this inn and do my best to make all our patrons happy and satisfied - be they alive or dead.\"";
+ next;
+ menu
+ "Can I help with that?", -;
+ mes "[Hamond]";
+ mes "\"Help me? Normally I would never ask you for this, but actually, I do need something to cool the drinks. Maybe you can find something.\"";
+
+ set @state, 1;
+ callsub S_Update_Mask;
+
+ close;
+
+L_Ice_Cube:
+ mes "[Hamond]";
+ mes "\"Hello my friend! Good to see you again. Did you find something to cool the drinks?\"";
+ next;
+
+ if ((@kidstate == 4) && countitem("IceCube") > 0)
+ menu
+ "Maybe this never melting Ice Cube?", L_Check_Ice,
+ "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I'm still searching.", L_Close;
+
+ if (@kidstate == 4)
+ menu
+ "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I'm still searching.", L_Close;
+
+ if (countitem("IceCube") > 0)
+ menu
+ "Maybe this never melting Ice Cube?", L_Check_Ice,
+ "I'm still searching.", L_Close;
+
+ mes "\"You didn't? Too bad.\"";
+ close;
+
+L_Check_Ice:
+ if (countitem("IceCube") < @ICE_CUBE_AMOUNT)
+ goto L_Not_Enough_Cubes;
+ delitem "IceCube", @ICE_CUBE_AMOUNT;
+
+ getexp @ICE_CUBE_EXP, 0;
+
+ set @state, 2;
+ callsub S_Update_Mask;
+
+ mes "[Hamond]";
+ mes "\"Yes, wonderful! That's exactly what I need.\"";
+ next;
+ mes "\"I put all my effort in making this inn a well running place for my beloved Reid.\"";
+ next;
+ mes "\"You know, she had a very hard childhood.\"";
+ next;
+ mes "\"Her parents were the former owners of the inn. But they had some problems and the inn wasn't running well.\"";
+ next;
+ mes "\"Also they died very early and Reid was so lonely and sad. She is such a wonderful woman, I'd do anything for her.\"";
+ next;
+ mes "He mumbles the next sentence as if to himself.";
+ next;
+ mes "\"And I won't let a wannabe mage take her away from me...\"";
+ next;
+ menu
+ "What do you mean?",-;
+ mes "[Hamond]";
+ mes "\"Nevermind, nevermind. I'd like to ask you for another favor, if I might.\"";
+ next;
+ mes "\"A patron asked for - uhm, bones. He said he needed to replace some of his bones, which were damaged in a scuffle with mortals.\"";
+ next;
+ mes "\"I know, this is a bit strange - I'm still getting used to being dead. But a patron's wish is a patron's wish!\"";
+ next;
+ mes "\"Can you bring me a huge amount of bones and skulls? This way I can fulfill that peculiar wish and make another patron very happy!\"";
+ close;
+
+L_Check_Bones:
+ mes "[Hamond]";
+ mes "\"Welcome back! Let me see what you have.\"";
+ if ((countitem("Bone") < @BONE_AMOUNT) || (countitem("Skull") < @SKULL_AMOUNT))
+ goto L_Not_Enough_B;
+ delitem "Bone", @BONE_AMOUNT;
+ delitem "Skull", @SKULL_AMOUNT;
+
+ getexp @BONE_EXP, 0;
+
+ set @state, 3;
+ callsub S_Update_Mask;
+
+L_Brought_Bones:
+ mes "[Hamond]";
+ mes "\"Thanks for your help! Now I'll be able to satisfy another strange request from one of our patrons.\"";
+ next;
+
+ if ((@kidstate == 4) && (@woman > 5))
+ menu
+ "Would you tell me about this mage named Savaric?", L_Savaric,
+ "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "You're welcome.", L_Close;
+
+ if (@kidstate == 4)
+ menu
+ "I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "You're welcome.", L_Close;
+
+ if (@woman > 5)
+ menu
+ "Would you tell me about this mage named Savaric?", L_Savaric,
+ "You're welcome.",-;
+ mes "[Hamond]";
+ mes "\"Please make yourself at home.\"";
+
+ close;
+
+L_Savaric:
+ mes "Hamond's face turns into an ugly grimace.";
+ mes "[Hamond]";
+ mes "\"That cheeky egomaniac - \"";
+ next;
+
+ if ((Sex == 0) && (@kidstate < 7)) goto L_Woman;
+ if ((Sex == 1) && (@kidstate < 7)) goto L_Man;
+ mes "\"Well, I have been thinking about you. You seem to be a very helpful and wise person. Even my son told me good things about you, making a long speech about how great you are and your ability to comprehend and deal with delicate matters. I wonder how he reached that conclusion... But anyway, I'll tell you about Savaric.\"";
+ next;
+
+L_Jealousy:
+ mes "[Hamond]";
+ mes "\"Savaric calls himself the first apprentice of a great wizard and seems to hold his head very high because of that. Pah, that snooty-nosed little upstart.\"";
+ next;
+ mes "\"Don't get me wrong, usually I'm a very open minded man, everyone can live their life as ever they like. But I never saw a wizard do anything good. They're in their books and ancient riddles and speaking with demons and whatever else they might come up with.\"";
+ next;
+ mes "\"But do they care for normal people? I've never seen that. And not only that! This Savaric guy seems to think it is fun to play games with my wife.\"";
+ next;
+ mes "Hamond seems to nearly burst with anger.";
+ next;
+ mes "\"I guess, they think I don't see what they are doing! But they are flirting all the time, my poor Reid seems unable to have a straight thought anymore.\"";
+ next;
+ mes "\"I already thought about throwing him out of the inn - but he is a patron! I can't be rude to a patron.\"";
+ next;
+ mes "\"Ah, this is annoying.\"";
+ set @state, 4;
+ callsub S_Update_Mask;
+ close;
+
+L_Man:
+ mes "[Hamond]";
+ mes "\"You're a man - I think you would understand what is happening to me.\"";
+ mes "\"But, to be honest, I think I'd only be able to talk about such a complicated matter if I am sure I am sharing my feelings with a good, wise and understanding person. No offense, it is just that I barely know you...\"";
+ close;
+
+L_Woman:
+ mes "[Hamond]";
+ mes "\"Hrm - I don't think you'll understand. It is a problem between men.\"";
+ next;
+ mes "\"And, to be honest, I'd only be able to talk about such a complicated matter if I am sure I am sharing my feelings with a good, wise and understanding person. No offense, it is just that I barely know you...\"";
+ close;
+
+L_Ring:
+ mes "[Hamond]";
+ mes "\"Well.. this is just a cheap ring. It is very popular with the young kids, especially the magic students.\"";
+ next;
+ mes "\"They say the ring increases 'magic attack' if you add a sapphire gem to it... But, in fact, I think these kids are delusional. Magic, pah.\"";
+ next;
+ mes "\"Anyway, I remember you could easily find one of these in a lot of small shops in town. I am pretty sure that whoever lost it won't bother coming all the way back to get it.\"";
+ set @kidstate, 5;
+ callsub S_Update_Mask_Kid;
+ close;
+
+L_News:
+ mes "[Hamond]";
+ mes "\"Ah, dear friend. How are you?\"";
+ if (@golbanez < 5)
+ menu
+ "I'm enjoying myself.",L_Close;
+ menu
+ "I'm enjoying myself.",L_Close,
+ "I found out what happened to you and this place.",-;
+
+ mes "[Hamond]";
+ mes "\"You did? Amazing! Please tell me.\"";
+ next;
+ mes "You explain to him how you came here, the results of your research and what Golbanez showed to you.";
+ next;
+ mes "[Hamond]";
+ mes "\"WHAT? This is just crazy! But - you've shown me that you're trustworthy. This must be the truth.\"";
+ next;
+ mes "\"But still, it is hard to believe - I can't imagine I would ever hurt Reid and that she - that she would cheat on me.\"";
+ next;
+ mes "\"How did this come about? What did I do wrong? I should have shown her my love more. I should have protected her from the allurements of that sneaky mage. And I - I should have never ever hurt her.\"";
+ next;
+ mes "Hamond seems about to break down.";
+ menu
+ "Maybe it was just fate.",-,
+ "You got very upset, don't blame yourself",-,
+ "You're right. You were very violent. How could you do that if you love her?",-;
+
+ mes "[Hamond]";
+ mes "\"I- I need to apologize.\"";
+ next;
+ mes "\"" + strcharinfo(0) + "! Can you help me once more? Please get " + @RUBY_AMOUNT + " Rubies and bring them to her as a symbol of my love and my remorse.\"";
+ set @state, 5;
+ callsub S_Update_Mask;
+ close;
+
+L_Waiting:
+ mes "[Hamond]";
+ mes "\"Did you bring Reid the " + @RUBY_AMOUNT + " Rubies?\"";
+ close;
+
+L_Apologize:
+ mes "[Hamond]";
+ mes "\"I thank you! Reid came to me to talk about what happened.\"";
+ next;
+ mes "\"We talked about all the stuff that happened. It's hard for me, but I accepted her feelings for that mage. I mean - we are dead! And we have to stay in this place together for the rest of eternity! This is just perverted.\"";
+ next;
+ mes "\"But whatever, we need to get along with each other someway and I won't be the one who makes this difficult.\"";
+ next;
+ mes "\"And frankly, it gives me a bitter satisfaction that they long for each other but can't touch each other.\"";
+ next;
+ mes "\"However, you are a great friend and did a lot for me. I want you to have this.\"";
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+ getitem "BowlerHatBrown", 1;
+ set @state, 7;
+ callsub S_Update_Mask;
+ close;
+
+L_Thanks:
+ mes "[Hamond]";
+ mes "\"Good to see you, my friend! The inn is running well and I'm getting used to being dead.\"";
+ close;
+
+L_Not_Enough_B:
+ if (countitem("Bone") < @BONE_AMOUNT)
+ mes "\"I need more Bones than you have with you right now.\"";
+ if (countitem("Skull") < @SKULL_AMOUNT)
+ mes "\"Maybe you should come back with more Skulls than you have now. I don't think it is enough.\"";
+ close;
+
+L_Not_Enough_Cubes:
+ mes "[Hamond]";
+ mes "\"Yes, they look good! But I think I need more of them. Maybe " + @ICE_CUBE_AMOUNT + "?\"";
+ close;
+
+L_Full_Inv:
+ mes "[Hamond]";
+ mes "\"You have a really full backpack, haven't you? Come back when you have some room in there.\"";
+ close;
+
+L_Close:
+ close;
+
+S_Update_Mask_Kid:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Kid_MASK))
+ | (@kidstate << @Graveyard_Inn_Kid_SHIFT);
+ return;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-2/innkeeper.txt b/world/map/npc/027-2/innkeeper.txt
new file mode 100644
index 00000000..a8cd3778
--- /dev/null
+++ b/world/map/npc/027-2/innkeeper.txt
@@ -0,0 +1,438 @@
+// author: Jenalya
+// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
+// state 0: first talk
+// state 1: if baselevel >= 85 player can ask about the inn and dead
+// state 2: reid knows now she's dead, can be asked about the ring
+// state 3: can be asked about ring, player offered help to find out what happened, she wants something to represent her sadness (frozen yeti tears)
+// state 4: can be asked about ring, can be asked about her life
+// state 5: if crying child quest is completed she tells about savaric, and her rooms on the first floor can be entered now to read her diary
+// state 6: tells the player to read her diary
+// state 7: set in diary, if player has seen all memories (@golbanez < 5), can tell her about it
+// state 8: can bring rubies or diamonds, if hamond and savaric told so, set their state
+// state 9: can bring rubies or diamonds, if hamond and savaric told so, set their state
+// state 10: she spoke with hamond and savaric, gives reward mylarin dust (needed for a crafting quest in thermin)
+// state 11: done, can ask about mylarin dust again
+
+027-2.gat,104,39,0 script Reid's Ghost 315,{
+
+ set @Graveyard_Inn_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_0_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @Graveyard_Inn_Lover_MASK, NIBBLE_1_MASK;
+ set @Graveyard_Inn_Lover_SHIFT, NIBBLE_1_SHIFT;
+
+ set @lover, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Lover_MASK) >> @Graveyard_Inn_Lover_SHIFT);
+
+ set @Graveyard_Inn_Kid_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_Kid_SHIFT, NIBBLE_2_SHIFT;
+
+ set @kidstate, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Kid_MASK) >> @Graveyard_Inn_Kid_SHIFT);
+
+ set @Graveyard_Inn_Husband_MASK, NIBBLE_3_MASK;
+ set @Graveyard_Inn_Husband_SHIFT, NIBBLE_3_SHIFT;
+
+ set @husband, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Husband_MASK) >> @Graveyard_Inn_Husband_SHIFT);
+
+ set @Graveyard_Inn_Golbanez_MASK, NIBBLE_4_MASK;
+ set @Graveyard_Inn_Golbanez_SHIFT, NIBBLE_4_SHIFT;
+
+ set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbanez_MASK) >> @Graveyard_Inn_Golbanez_SHIFT);
+
+ set @YETI_TEAR_AMOUNT, 30;
+ set @YETI_TEAR_EXP, 100000;
+ set @DIAMOND_AMOUNT, 20; // caution, this value needs to be the same as in the lovers script!
+ set @RUBY_AMOUNT, 50; // caution, this value needs to be the same as in the husbands script!
+
+ if (@state >= 11) goto L_Happy;
+ if (@state == 10) goto L_Thanks;
+ if ((@state == 8) || (@state == 9)) goto L_Sorry;
+ if (@state == 7) goto L_Savaric;
+ if (@state == 6) goto L_Read_Diary;
+ if (@state == 5) goto L_Check_Kid;
+ if (@state == 4) goto L_Ask_Life;
+ if (@state == 3) goto L_Bring_Tears;
+ if (@state == 2) goto L_Offer_Help2;
+ if (@state == 1) goto L_After_Welcome;
+
+ mes "You see a dead woman lying on the floor and something that appears to be her ghost floating above her dead body.";
+ next;
+ mes "[Ghost]";
+ mes "\"He- I - What - Oh -\"";
+ mes "The womans ghost seems to be confused.";
+ next;
+ mes "[Ghost]";
+ mes "Oh, I'm sorry. Welcome to Reid's Inn. My name is Reid, I am the innkeeper of this wonderful place of leisure. Please enjoy your visit here!";
+ next;
+
+ set @state, 1;
+ callsub S_Update_Mask;
+
+ goto L_Ask_Dead;
+
+L_After_Welcome:
+ mes "[Reid's Ghost]";
+ mes "\"Please enjoy yourself!\"";
+ if (baselevel < 85) goto L_Close;
+
+L_Ask_Dead:
+ if (baselevel < 85) goto L_Close;
+
+ menu
+ "What happened to you?", - ,
+ "Thank you, I'll surely enjoy my visit.", L_Close;
+
+ mes "[Reid's Ghost]";
+ mes "\"What happened to me? What do you mean?\"";
+ menu
+ "Ahm, you don't look very well - actually, you look dead.",-,
+ "You don't seem to be in the best condition.",-,
+ "You are dead!",-;
+
+ mes "Reid looks down at her body and turns even more pale, if this is possible.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"OH?\"";
+ next;
+
+ menu
+ "I'm sorry. I didn't know you weren't aware of that.",-,
+ "Yes - do you understand my question now?",-,
+ "Shall I help you to find out what happened to you?", L_Offer_Help1;
+
+ mes "[Reid's Ghost]";
+ mes "\"I'm dead? But why? And why am I still here?\"";
+ next;
+ mes "She stares into space and doesn't seem to notice you anymore.";
+ set @state, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_Offer_Help2:
+ mes "Reid's Ghost is still staring into space.";
+
+ if (@kidstate == 5)
+ menu
+ "Shall I help you to find out what happened to you?", L_Offer_Help1,
+ "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I don't want to bother you.", L_Close;
+L_Skip1:
+ menu
+ "Shall I help you to find out what happened to you?", -,
+ "I don't want to bother you.", L_Close;
+
+L_Offer_Help1:
+ mes "\"I.. I don't know you. Why should you help me?\"";
+ next;
+ mes "\"Bring me proof that you are serious. My life seems to have ended in a terrible and sad way, I can see it very clearly. If you want to help me, please bring me something that represents this immeasurable sadness I am feeling!\"";
+
+ set @state, 3;
+ callsub S_Update_Mask;
+ close;
+
+L_Bring_Tears:
+ mes "[Reid's Ghost]";
+ mes "\"Did you find something that can represent my sadness?\"";
+ next;
+
+ if ((@kidstate == 5) && countitem("FrozenYetiTear") > 0)
+ menu
+ "I found this frozen tear to represent your sadness.", L_Check_Tears,
+ "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I'm still searching.", L_Close;
+
+ if (@kidstate == 5)
+ menu
+ "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I'm still searching.", L_Close;
+
+ if (countitem("FrozenYetiTear") > 0)
+ menu
+ "I found this frozen tear to represent your sadness.", L_Check_Tears,
+ "I'm still searching.", L_Close;
+
+ mes "\"You didn't? It seems you're not serious with your offer to help me.\"";
+ close;
+
+L_Check_Tears:
+ if (countitem("FrozenYetiTear") < @YETI_TEAR_AMOUNT)
+ goto L_Not_Enough_Tears;
+ delitem "FrozenYetiTear", @YETI_TEAR_AMOUNT;
+
+ getexp @YETI_TEAR_EXP, 0;
+
+ set @state, 4;
+ callsub S_Update_Mask;
+
+ mes "[Reid's Ghost]";
+ mes "\"These tears.. how they shimmer in the candle light. Yes, it seems you are serious about your offer. I think maybe you have the sensibility to help me find out the real meaning behind this terrible feeling.\"";
+ next;
+L_Ask_Life:
+ mes "[Reid's Ghost]";
+ mes "\"But how do you plan to help me?\"";
+ next;
+
+ if (@kidstate == 5)
+ menu
+ "Please tell me about your life. Maybe this will give us a clue about what happened.",L_Skip2,
+ "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring,
+ "I need to think about that.", L_Close;
+L_Skip2:
+ menu
+ "Please tell me about your life. Maybe this will give us a clue about what happened.",-,
+ "I need to think about that.", L_Close;
+
+ mes "[Reid's Ghost]";
+ mes "\"About my life? Well, ok.\"";
+ next;
+ mes "\"I'm the owner of this inn. I inherited it from my parents, who ran it while I was a child.\"";
+ next;
+ mes "\"My father - he was a very joyful man. But one day, when I was just ten years old, he had an accident while carrying a barrel of beer.\"";
+ next;
+ mes "\"The barrel smashed his legs and he wasn't able to walk anymore. He got very despondent about that and started to drink.\"";
+ next;
+ mes "\"My mother and I didn't know how to cheer him up, and he wouldn't listen to us. My mother tried her best to keep the inn running and I tried my best to help her, even though I was still a child.\"";
+ next;
+ mes "\"But a few years later, my mother lost her will to go on and the inn slowly went down the drain. Everything was dirty and we had less and less patrons.\"";
+ next;
+ mes "\"I don't blame my mother. She loved my father so much, she couldn't stand to see what was happening to him. When he died because of his drinking, she totally lost her will to live and just lay in bed and followed him.\"";
+ next;
+ mes "Reid seems to be tortured by her memories.";
+ next;
+ mes "\"That was a very hard time.\"";
+
+ menu
+ "Yes, yes, but what about your life shortly before you died?",-,
+ "I can imagine. I'm very sorry for you",-;
+
+ mes "She doesn't seem to pay much attention to what you say.";
+ next;
+ mes "\"But Hamond, my friend since I was a child, helped me in those bad times. We built up the inn again and we - we married.\"";
+ next;
+ mes "\"He was so kind and my only light in those dark times. And our little son Aldred gave me back my joy in life.\"";
+ next;
+ mes "\"Everything was peaceful and I thought I had found my place. But one day -\"";
+ next;
+
+ set @state, 5;
+ callsub S_Update_Mask;
+
+L_Check_Kid:
+
+ if (@kidstate == 5)
+ menu
+ "Hi. I found this in the main hall. Do you know to whom it belongs?", L_Ring;
+
+ if ((Sex == 1) && (@kidstate < 7)) goto L_Man;
+ if ((Sex == 0) && (@kidstate < 7)) goto L_Woman;
+
+ mes "\"What I'm going to tell you is very personal, but your acts have shown me that you're a person I can trust. You kindly asked me about that ring you have found... and also, even my son, who is always so reserved with strangers, came to me and spent a long time telling me a lot of nice things about you. So I will tell you about my sad love.\"";
+ next;
+
+L_Lovestory:
+ mes "[Reid's Ghost]";
+ mes "\"It began as a completely normal day. We were taking care of our overnight guests and preparing the inn for the evening rush.\"";
+ next;
+ mes "\"But that day, a very special patron checked in. His name was Savaric, and he was a student of magic. He came from far away to check some rumors about a legendary mana seed.\"";
+ next;
+ mes "Reid's Ghost has a completely enchanted look on her face.";
+ next;
+ mes "\"He really made me feel alive - when he was near, I was feeling like I never felt before. I started to search for reasons to be near him - I told myself that I liked him just because he was interesting, coming from so far away and being a mage.\"";
+ next;
+ mes "\"But I was lying to myself.\"";
+ next;
+ mes "\"I - oh, it is really hard to talk about this. Maybe - yes, I could let you read my diary. I'll give you the key to our rooms.\"";
+ next;
+ mes "She pulls a key out of her pocket as transparent as herself. As you try to grab it, your fingers just go through it.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"I keep forgetting! Please take the key out of my pocket.\"";
+ mes "She is pointing at her dead body with a sad look on her face. You take the key.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"This is the key to our personal room, it is located at the very end of the corridor upstairs. You will find my diary in the bookshelf, hidden behind a book with poems. Hamond doesn't like poems.\"";
+ next;
+ mes "\"Please go and read it.\"";
+
+ set @state, 6;
+ callsub S_Update_Mask;
+ close;
+
+L_Read_Diary:
+ mes "[Reid's Ghost]";
+ mes "\"Please go into my room and read the diary. You will find my diary in the bookshelf, hidden behind a book with poems.\"";
+ close;
+
+L_Savaric:
+ mes "[Reid's Ghost]";
+ mes "\"Now you know about my recent past and... and my twisted feelings.\"";
+ next;
+ menu
+ "Yes, I feel very sorry for you.",-,
+ "Savaric seems to be a really hot guy, making you so compliant.",L_Tease;
+
+ mes "[Reid's Ghost]";
+ mes "\"Oh, thank you.\"";
+ if (@golbanez < 5)
+ menu
+ "But I still didn't find out what happened. I'll return when I have news.",L_Close;
+ menu
+ "But I still didn't find out what happened. I'll return when I have news.",L_Close,
+ "I found out what happened to you and this place. I'll tell you.",-;
+
+ mes "You explain to her about Golbanez, Savaric and the memories you have seen.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"Oh, I always knew we weren't doing the right thing! But how could we have known it would end like this?\"";
+ next;
+ mes "\"I would never have expected Hamond to beat me - and Savaric... I trusted him with my life... And he carelessly wasted it. Mine and everyone else in the inn.\"";
+ next;
+ mes "\"I'm feeling hurt. And confused. Both Hamond and Savaric turned out not to be the persons I believed them to be.\"";
+ set @state, 8;
+ callsub S_Update_Mask;
+ close;
+
+L_Sorry:
+ mes "[Reid's Ghost]";
+ mes "\"Welcome back.\"";
+ if ((@lover == 4) && (countitem("GemRawWhite") >= @DIAMOND_AMOUNT) && (countitem("GemRawRed") >= @RUBY_AMOUNT) && (@husband == 5))
+ menu
+ "Savaric asked me to give you something.",L_Diamond,
+ "Hamond sent me to bring you this.",L_Ruby,
+ "Nevermind.",-;
+ if (@lover == 4 && (countitem("GemRawWhite") >= @DIAMOND_AMOUNT))
+ menu
+ "Savaric asked me to give you something.",L_Diamond,
+ "Nevermind.",-;
+ if (@husband == 5 && (countitem("GemRawRed") >= @RUBY_AMOUNT))
+ menu
+ "Hamond sent me to bring you this.",L_Ruby,
+ "Nevermind.",-;
+ close;
+
+L_Diamond:
+ if (countitem("GemRawWhite") < @DIAMOND_AMOUNT) goto L_Kidding;
+ delitem "GemRawWhite", @DIAMOND_AMOUNT;
+ mes "You explain how Savaric feels and what the diamonds mean.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"Oh Savaric. I just can't be angry at him. Thanks for your help. I'll go to talk with him.\"";
+ set @lover, 5;
+ callsub S_Update_Mask_Lover;
+ set @state, @state + 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Ruby:
+ if (countitem("GemRawRed") < @RUBY_AMOUNT) goto L_Kidding;
+ delitem "GemRawRed", @RUBY_AMOUNT;
+ mes "You tell her about Hamonds feelings.";
+ next;
+ mes "[Reid's Ghost]";
+ mes "\"I need to talk to him. Thanks for bringing me this.\"";
+ set @husband, 6;
+ callsub S_Update_Mask_Husband;
+ set @state, @state + 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Kidding:
+ mes "[Reid's Ghost]";
+ mes "\"Are you kidding? You don't have the items you are talking about. This is not funny.\"";
+
+L_Tease:
+ mes "[Reid's Ghost]";
+ mes "\"Don't be mean! I never felt like that before.\"";
+ close;
+
+L_Thanks:
+ mes "[Reid's Ghost]";
+ mes "\"I'm so glad, now I know what happened and spoke to both Savaric and Hamond. Thank you so much. Please take this.\"";
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+ getitem "MylarinDust", 1;
+ set @state, 11;
+ callsub S_Update_Mask;
+ next;
+L_Mylarin:
+ mes "[Reid's Ghost]";
+ mes "\"This is called mylarin dust. My mother gave it to me when my father had his accident. She said it is very valuable.\"";
+ next;
+ mes "\"I'm not sure what it is used for, but I remember her saying something about some special crafting tradition which uses it to make really strong armor.\"";
+ next;
+ mes "\"Maybe you should try to find someone who can use it.\"";
+ close;
+
+L_Happy:
+ mes "[Reid's Ghost]";
+ mes "\"Thank you for all you've done.\"";
+ menu
+ "Can you tell me again about the powder you gave me?",L_Mylarin,
+ "I'm glad I could help.",-;
+ close;
+
+L_Not_Enough_Tears:
+ mes "[Reid's Ghost]";
+ set @tears, countitem("FrozenYetiTear");
+ if (@tears == 1)
+ mes "\"This is beautiful! But one of them isn't enough to represent my sadness.\"";
+ if (@tears > 1)
+ mes "\"This is beautiful! But " + @tears + " of them aren't enough to represent my sadness.\"";
+ close;
+
+L_Man:
+ mes "[Reid's Ghost]";
+ mes "\"What I have to tell is very personal. You're a man - I'm not sure if I want to tell you. I know you helped me already and showed me you are a sensitive man, but I barely know you. I am sorry, but I have to think a little bit more. Maybe later, when I know you better, I can tell you more about it. \"";
+ close;
+
+L_Woman:
+ mes "[Reid's Ghost]";
+ mes "\"What I have to tell you is something very personal. You are a woman like me - I'm sure you would understand.\"";
+ next;
+ mes "\"But I'm not sure if I want to tell you. I know you helped me already and showed me you are a sensitive woman, but I barely know you. I am sorry, but I have to think a little bit more. Maybe later, when I know you better, I can tell you more about it. \"";
+ close;
+
+L_Ring:
+ mes "[Reid's Ghost]";
+ mes "\"Oh, this - I - it's mine. It was a present from a very precious person.\"";
+ next;
+ mes "She reaches out to take the ring, but it just go through her fingers. She looks sad.";
+ next;
+ mes "\"Ah, I forgot again. It pains me not being able to wear it. Please, take it with you, I don't want it anymore. It hurts too much.\"";
+ set @kidstate, 6;
+ callsub S_Update_Mask_Kid;
+ close;
+
+L_Full_Inv:
+ mes "[Reid's Ghost]";
+ mes "\"Dear, you're carrying so much stuff, you can't take my present. Come back later to take it.\"";
+ close;
+
+L_Close:
+ close;
+
+S_Update_Mask_Kid:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Kid_MASK))
+ | (@kidstate << @Graveyard_Inn_Kid_SHIFT);
+ return;
+
+S_Update_Mask_Husband:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Husband_MASK))
+ | (@husband << @Graveyard_Inn_Husband_SHIFT);
+ return;
+
+S_Update_Mask_Lover:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Lover_MASK))
+ | (@lover << @Graveyard_Inn_Lover_SHIFT);
+ return;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-2/lover.txt b/world/map/npc/027-2/lover.txt
new file mode 100644
index 00000000..70fe1dc8
--- /dev/null
+++ b/world/map/npc/027-2/lover.txt
@@ -0,0 +1,285 @@
+// author: Jenalya
+// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
+// state 0: if baselevel >= 85, tells he want dark crystals
+// state 1: needs @CRYSTAL_AMOUNT dark crystals to go on, tells the player to search the inn for source of magic (Golbenez)
+// state 2: if the player has talked to Golbenez, he tells you to negotiate with him to find out what happened
+// state 3: when player has seen all memories (@golbanez < 5), telling Savaric what happened. he asks the player to bring reid @DIAMOND_AMOUNT diamonds
+// state 4: waiting for reid
+// state 5: is set in reid, he thanks for help and asks to negotiate with golbanez for his soul
+// state 6: waiting for youl, if @golbanez >= 7 got it, giving sorcerer robe
+// state 7: done
+
+027-2.gat,43,73,0 script Savaric 317,{
+
+ set @Graveyard_Inn_MASK, NIBBLE_1_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_1_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
+
+ set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
+
+ set @Graveyard_Inn_Golbenez_MASK, NIBBLE_4_MASK;
+ set @Graveyard_Inn_Golbenez_SHIFT, NIBBLE_4_SHIFT;
+
+ set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbenez_MASK) >> @Graveyard_Inn_Golbenez_SHIFT);
+
+ set @CRYSTAL_AMOUNT, 500;
+ set @CRYSTAL_EXP, 200000;
+ set @CRYSTAL_EXTRA_EXP, 100;
+ set @CRYSTAL_MAX, 2000;
+ set @DIAMOND_AMOUNT, 20; // caution, this value needs to be the same as in the innkeepers script!
+
+ if (@state >= 7) goto L_Have_Soul;
+ if (@state == 6) goto L_Want_Soul;
+ if (@state == 5) goto L_Apologize;
+ if (@state == 4) goto L_Waiting;
+ if (@state == 3) goto L_Golb;
+ if (@state == 2) goto L_News;
+ if (@state == 1) goto L_Crystals;
+
+ mes "You see a dead man hanging. This place is creepy!";
+ next;
+ if (baselevel < 85) goto L_Close;
+ mes "Suddenly the man opens his eyes and looks at you.";
+ next;
+ mes "[Hanged Man]";
+ mes "\"Oh, hello. Nice to see you - I seem to be dead, but I don't know why and why I'm still consciousness. This is very interesting.\"";
+ menu
+ "INTERESTING? Are you crazy?",-;
+ mes "[Hanged Man]";
+ mes "\"Well, as you mention it, it is quite annoying and uncomfortable. Would you mind helping me down to the floor?\"";
+ next;
+ mes "You take a step towards him, but some invisible force holds you back.";
+ next;
+ mes "[Hanged Man]";
+ mes "\"Oh, someone is holding you back with magic! I sense a really dark and mighty power. What has happened!?\"";
+ next;
+ mes "\"Can I ask you for a favor? Can you bring me lots of Dark Crystals? You might need to ask a dark mage for it. I want to try to break the barrier.\"";
+ next;
+ mes "\"I'll need... well, at least " + @CRYSTAL_AMOUNT + ". But if you have more, I can use extras!\"";
+ set @state, 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Crystals:
+ mes "[Hanged Man]";
+ mes "\"Ah, you're back! Did you get the Dark Crystals?\"";
+
+ if (countitem("DarkCrystal") == 0)
+ menu
+ "Not yet.", L_Close;
+
+ if (countitem("DarkCrystal") < @CRYSTAL_AMOUNT)
+ goto L_Not_Enough_Crystals;
+
+ delitem "DarkCrystal", @CRYSTAL_AMOUNT;
+ getexp @CRYSTAL_EXP, 0;
+ next;
+ mes "\"Oh, I can feel them! Please lay them down on the floor.\"";
+ next;
+ mes "You lay "+ @CRYSTAL_AMOUNT + " dark crystals down on the floor and step back, nervously expecting the coming.";
+ next;
+ if (countitem("DarkCrystal") == 0) goto L_Skip;
+ mes "[Hanged Man]";
+ mes "\"You have more of them, haven't you? It will work better if you give them to me too.\"";
+ menu
+ "Ok, here you go.",-,
+ "I prefer to keep them.",L_Skip;
+ set @crystal, countitem("DarkCrystal");
+ if (@crystal > @CRYSTAL_MAX)
+ set @crystal, @CRYSTAL_MAX;
+ delitem "DarkCrystal", @crystal;
+ getexp @crystal*@CRYSTAL_EXTRA_EXP, 0;
+L_Skip:
+ mes "[Hanged Man]";
+ mes "\"Well, let's start now.\"";
+ next;
+ mes "The hanged man seems very concentrated now, which looks absurd with him hanging there.";
+ next;
+ mes "The dark crystals start to glow and buzz. You take another step back.";
+ next;
+ mes "The buzzing gets louder and louder, so you can't hear a word the hanged man is saying now.";
+ next;
+ set hp, 5;
+ mes "The crystals explode and hit you!";
+ next;
+ mes "You fall down on the floor and blink frantically to regain your eyesight.";
+ next;
+ mes "[Hanged Man]";
+ mes "\"Hello? You're ok? I'm sorry, something went wrong. It seems, not only is there a magical barrier, but also my manaflow is blocked. I don't know if this is because I'm dead or part of the barrier spell.\"";
+ next;
+ mes "\"I never was dead before, so I can't be sure. But I was able to access my magic - it just got out of control at the critical moment.\"";
+ next;
+ mes "\"This is fascinating!\"";
+ menu
+ "Ok, you are crazy!",-,
+ "Yes, it is very fascinating to be blown up!",-,
+ "I NEARLY DIED! AND YOU THINK THIS IS FASCINATING?!",-;
+ mes "[Hanged Man]";
+ mes "\"I sometimes forget the fact that not everybody is fascinated by the riddles of magic. Please forgive me.\"";
+ next;
+ mes "\"And I even didn't introduce myself! I am very sorry for my rude behavior!\"";
+ next;
+ mes "\"My name is Savaric, first apprentice of the Great Demon Summoner Ymbert.\"";
+ next;
+ mes "\"If you can forgive me my behaviour, may I ask you for another favor? Can you please search for someone or something in this inn that could be the source of this dark magic?\"";
+ set @state, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_News:
+ mes "[Savaric]";
+ mes "\"Welcome back. Did you find a possible source for the dark magic?\"";
+ if ((@woman < 6) && (@golbanez == 0))
+ menu
+ "Not yet, I'm still searching.",L_Close;
+
+ if ((@woman < 6) && (@golbanez > 0))
+ menu
+ "Yes, let me tell you.",L_Golbenez,
+ "I don't think so.",L_Close;
+
+ if ((@woman >= 6) && (@golbanez == 0))
+ menu
+ "Can you tell me about your relationship to Reid?",L_Reid,
+ "Not yet, I'm still searching.",L_Close;
+
+ if ((@woman >= 6) && (@golbanez >= 0))
+ menu
+ "Can you tell me about your relationship to Reid?",L_Reid,
+ "Yes, let me tell you.",L_Golbenez,
+ "I don't think so.",L_Close;
+
+L_Golbenez:
+ mes "You explain how you came to the inn and what Golbenez said to you.";
+ next;
+ mes "[Savaric]";
+ mes "\"This... this is very disturbing news. Playground he said? Mh.. \"";
+ next;
+ mes "\"Savaric seems to be completely absorbed in his thoughts.\"";
+ menu
+ "Hello? Are you still there?",-,
+ "Excuse me, I don't want to interrupt you, but can you explain to me what's going on? I'm confused",-,
+ "Hey! I'm talking with you!",-;
+ mes "Savaric winces.";
+ next;
+ mes "\"Oh, right - I was just thinking. It makes me feel uncomfortable to hear about Golbenez being involved in this.\"";
+ next;
+ mes "\"I told you I'm the apprentice of a demon summoner, remember? Well, this includes learning about the astral beings in this world.\"";
+ next;
+ mes "\"And Golbenez - he is a very powerful being, a Demi-God, with a very questionable sense of humor. He was worshipped by a group of cultists some hundred years ago - uhm, some hundred years ago from my lifetime, I mean.\"";
+ next;
+ mes "\"But most of his adherents died when he thought it would be funny to test their loyality by sending them on a journey over the sea to a paradise island he promised them - of course, there was no such island.\"";
+ next;
+ mes "\"Maybe now you understand what I mean about a questionable sense of humor.\"";
+ next;
+ mes "\"But on the other hand, he can grant great power to those who are capable of dealing with him and who offer him enough for his service. Trying to do that would be a risky undertaking in any case.\"";
+ next;
+ mes "\"He told you this inn was one of his favorite playgrounds - so it seems he was playing one of his evil games with the people in this inn. And now, he resurrected our memories to this parody of life!\"";
+ next;
+ mes "\"" + strcharinfo(0) + "! I need your help again! Please return to Golbenez and try to get out of him what was happening here. But be careful when negotiating.. he will demand a service in return.\"";
+ set @state, 3;
+ callsub S_Update_Mask;
+ close;
+
+L_Golb:
+ mes "[Savaric]";
+ mes "\"Good to see you back my friend. What did you find out?\"";
+ if (@golbanez < 5)
+ menu
+ "I'm still working on doing all the stuff Golbanez wants me to do.",L_Close;
+ menu
+ "Now I know what happened. I'll tell you.",-,
+ "I'm sorry to tell you, but this was all your fault.",-;
+
+ mes "You tell Savaric about what Golbenez showed to you.";
+ next;
+ mes "[Savaric]";
+ mes "\"I.. I can't believe.. My master told me, I need to be careful because of my temper - but I never thought it would lead me to make such a terrible mistake. Oh, Reid - and all the people in the inn! What have I done?!\"";
+ next;
+ mes "He seems pained by his guilt.";
+ next;
+ mes "[Savaric]";
+ mes "\"" + strcharinfo(0) + ", please, can you go to Reid and tell her about what I've done? And then ask her if she will ever be able to forgive me?\"";
+ next;
+ mes "\"But wait. It is not enough just to ask for forgiveness. Please, can you bring her " + @DIAMOND_AMOUNT + " Diamonds? They symbolize my pure feelings for her.\"";
+ set @state, 4;
+ callsub S_Update_Mask;
+ close;
+
+L_Waiting:
+ mes "[Savaric]";
+ mes "\"Have you already brought the Diamonds to Reid?\"";
+ close;
+
+L_Apologize:
+ mes "[Savaric]";
+ mes "\"Oh thank you! I thank you so much! Reid came here to talk to me.\"";
+ next;
+ mes "\"She forgave me! I'm so happy!\"";
+ next;
+ mes "\"You did so much for me, can I ask you for one last favor?\"";
+ next;
+ mes "\"Golbenez took my soul and I want it back. You were very clever with how you negotiated with him so far. Could you get my soul back for me?\"";
+ set @state, 6;
+ callsub S_Update_Mask;
+ close;
+
+L_Want_Soul:
+ if (@golbanez >= 7) goto L_Soul;
+ mes "[Savaric]";
+ mes "\"Welcome back! Are you still working on getting my soul back?\"";
+ menu
+ "I'm doing my best.",-,
+ "Yes, but it isn't easy.",-;
+
+ mes "[Savaric]";
+ mes "\"Thank you so much! I'm counting on you!\"";
+ close;
+
+L_Soul:
+ mes "[Savaric]";
+ mes "\"My soul came back! Oh thank you!\"";
+ next;
+ mes "\"Please take this as a symbol of my gratitude.\"";
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+ getitem "SorcererRobeRed", 1;
+ set @state, 7;
+ callsub S_Update_Mask;
+ mes "\"This is what mages and their apprentices wore when I lived. It is white because I wasn't a master yet.\"";
+ next;
+ mes "\"But I guess the old traditions have changed since then.\"";
+ close;
+
+L_Have_Soul:
+ mes "[Savaric]";
+ mes "\"I'll be in your debt forever. Thank you so much.\"";
+ close;
+
+L_Reid:
+ mes "[Savaric]";
+ mes "\"Relationship? Well, she is the innkeeper of this inn and I'm a patron. There is nothing more to say about this.\"";
+ close;
+
+L_Not_Enough_Crystals:
+ mes "It seems you managed to get some, but not enough. Can you bring me more?";
+ close;
+
+L_Full_Inv:
+ mes "[Savaric]";
+ mes "\"Oh, you can't carry anything more. Come back when you can take it.\"";
+ close;
+
+L_Close:
+ close;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}
diff --git a/world/map/npc/027-2/testnpcs.txt b/world/map/npc/027-2/testnpcs.txt
new file mode 100644
index 00000000..57dc1f7b
--- /dev/null
+++ b/world/map/npc/027-2/testnpcs.txt
@@ -0,0 +1,145 @@
+027-2.gat,80,34,0 script Lovers 303,{
+ mes "You see a man and a woman holding each other very tight.";
+ next;
+ mes "They are kissing and whispering things to each other you can't hear.";
+ next;
+ mes "Now the woman giggles. They don't notice you.";
+ next;
+ mes "Maybe it's better not to bother them.";
+ close;
+}
+
+//027-2.gat,110,30,0 script Debug 305,{
+ set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
+ set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;
+
+ set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);
+
+ set @Graveyard_Inn_Lover_MASK, NIBBLE_1_MASK;
+ set @Graveyard_Inn_Lover_SHIFT, NIBBLE_1_SHIFT;
+
+ set @Lover, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Lover_MASK) >> @Graveyard_Inn_Lover_SHIFT);
+
+ set @Graveyard_Inn_Child_MASK, NIBBLE_2_MASK;
+ set @Graveyard_Inn_Child_SHIFT, NIBBLE_2_SHIFT;
+
+ set @Child, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Child_MASK) >> @Graveyard_Inn_Child_SHIFT);
+
+ set @Graveyard_Inn_Husband_MASK, NIBBLE_3_MASK;
+ set @Graveyard_Inn_Husband_SHIFT, NIBBLE_3_SHIFT;
+
+ set @Husband, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Husband_MASK) >> @Graveyard_Inn_Husband_SHIFT);
+
+ set @Graveyard_Inn_Golb_MASK, NIBBLE_4_MASK;
+ set @Graveyard_Inn_Golb_SHIFT, NIBBLE_4_SHIFT;
+
+ set @Golb, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golb_MASK) >> @Graveyard_Inn_Golb_SHIFT);
+
+ mes "debug for the lovetriangle quest";
+ menu
+ "reset all",-,
+ "reset reid " + @woman,L_Reid,
+ "reset lover " + @Lover,L_Lover,
+ "reset child " + @Child,L_Child,
+ "reset husband " + @Husband,L_Husband,
+ "reset golbanez " + @Golb,L_Golb,
+ "leave", L_Close;
+
+set QUEST_Graveyard_Inn, 0;
+close;
+L_Reid:
+ set @woman, 0;
+ callsub S_Update_Mask_Woman;
+ close;
+L_Lover:
+ set @Lover, 0;
+ callsub S_Update_Mask_Lover;
+ close;
+L_Child:
+ set @Child, 0;
+ callsub S_Update_Mask_Child;
+ close;
+L_Husband:
+ set @Husband, 0;
+ callsub S_Update_Mask_Husband;
+ close;
+L_Golb:
+ set @Golb, 0;
+ callsub S_Update_Mask_Golb;
+ close;
+L_Close:
+ close;
+
+S_Update_Mask_Golb:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Golb_MASK))
+ | (@Golb << @Graveyard_Inn_Golb_SHIFT);
+ return;
+
+S_Update_Mask_Husband:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Husband_MASK))
+ | (@Husband << @Graveyard_Inn_Husband_SHIFT);
+ return;
+
+S_Update_Mask_Child:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Child_MASK))
+ | (@Child << @Graveyard_Inn_Child_SHIFT);
+ return;
+
+S_Update_Mask_Lover:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Lover_MASK))
+ | (@Lover << @Graveyard_Inn_Lover_SHIFT);
+ return;
+
+S_Update_Mask_Woman:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_Woman_MASK))
+ | (@woman << @Graveyard_Inn_Woman_SHIFT);
+ return;
+}
+
+027-2.gat,75,29,0 script Archibald 306,{
+// the broken grammar is intentional
+ mes "[Archibald]";
+ mes "\"Me need to prepare the food. Me helping the chef cook.\"";
+ next;
+ mes "\"Person doesn't disturb me when me is making the food\"";
+ close;
+}
+
+027-2.gat,77,40,0 script Darnel 308,{
+ set @drunker, rand(4);
+ if (@drunker == 0) goto L_0;
+ if (@drunker == 1) goto L_1;
+ if (@drunker == 2) goto L_2;
+ if (@drunker == 3) goto L_3;
+ end;
+L_0:
+ mes "[Darnel]";
+ mes "\"zzzZZZzzz...\"";
+ close;
+L_1:
+ mes "[Darnel]";
+ mes "\"Ish that a Zzombee?...\"";
+ close;
+L_2:
+ mes "[Darnel]";
+ mes "\"Auuu... Hiccup... Don't byte mee... \"";
+ close;
+L_3:
+ mes "[Darnel]";
+ mes "\"Moar Bearr...Pleash!\"";
+ close;
+}
+
+027-2.gat,110,23,0 script Nigel 312,{
+ mes "[Nigel]";
+ mes "\"Ohh... My head is killing me! I have to stop "
+ + "drinking too much or I will lose my job... But "
+ + "being a waiter... oh I can't resist a drink or two!\"";
+ close;
+}
+
diff --git a/world/map/npc/027-2/werewolf.txt b/world/map/npc/027-2/werewolf.txt
new file mode 100644
index 00000000..87d93173
--- /dev/null
+++ b/world/map/npc/027-2/werewolf.txt
@@ -0,0 +1,158 @@
+027-2.gat,118,23,0 script Wolfgang 305,{
+ set @Graveyard_Inn_MASK, NIBBLE_5_MASK;
+ set @Graveyard_Inn_SHIFT, NIBBLE_5_SHIFT;
+
+ set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);
+
+ set @ANIMALBONES_AMOUNT, 30;
+ set @ANIMALBONES_EXP, 40000;
+ set @money, 1000;
+
+ if (@state > 1) goto L_Happy;
+ if (@state == 1) goto L_Bones;
+
+ mes "[Wolfgang]";
+ mes "\"What a nice place here, isn't it?\"";
+ next;
+ mes "\"Just the stuff they call 'food' in here is awful, bah.\"";
+ if (baselevel < 80) goto L_Close;
+ next;
+ mes "\"I like bones from big animals, the best would be with some raw flesh on it. But just the bones are fine too.\"";
+ next;
+ mes "\"Can you bring me " + @ANIMALBONES_AMOUNT + " of them?\"";
+ set @state, 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Bones:
+ mes "[Wolfgang]";
+ mes "\"Do you have " + @ANIMALBONES_AMOUNT + " bones of an animal for me?\"";
+ next;
+ if ((countitem("Bone") > 0) && (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT))
+ menu
+ "Yes, here they are.",L_Bring,
+ "What about this normal bone?",L_Human,
+ "Not yet.",L_Close;
+ if (countitem("Bone") > 0)
+ menu
+ "What about this normal bone?",L_Human,
+ "Not yet.",L_Close;
+ if (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT)
+ menu
+ "Yes, here they are.",L_Bring,
+ "Not yet.",L_Close;
+ menu
+ "Not yet.",-;
+ close;
+
+L_Bring:
+ if (countitem("AnimalBones") < @ANIMALBONES_AMOUNT)
+ goto L_Not_Enough;
+ delitem "AnimalBones", @ANIMALBONES_AMOUNT;
+ getexp @ANIMALBONES_EXP, 0;
+ mes "[Wolfgang]";
+ mes "\"Ah! Wonderful! Thank you.\"";
+ set @state, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_Human:
+ mes "[Wolfgang]";
+ mes "\"What?! That's a humans bone! I don't eat humans. That brings only trouble.\"";
+ next;
+ mes "\"Besides, from that I heard, they taste bad.\"";
+ close;
+
+L_Not_Enough:
+ mes "[Wolfgang]";
+ mes "\"Are you trying to kid me? I can count.\"";
+ close;
+
+L_Happy:
+ mes "You see the werewolf happily crunching the bones you brought him.";
+ mes "[Wolfgang]";
+ mes "\"Delicious. Thanks again.\"";
+ next;
+ mes "\"By the way... would you be interested in a little round of blackjack?\"";
+ mes "He pulls a deck of cards out of his pocket.";
+ next;
+ mes "[Wolfgang]";
+ mes "\"You will need " + @money + " GP.\"";
+ menu
+ "Sure, why not?",L_Game,
+ "No, thanks.",-;
+ close;
+
+//The game mechanics is copied from casino.txt
+L_Game:
+ if(zeny < @money) goto L_No_Money;
+ mes "[Wolfgang]";
+ mes "\"Very nice. Let's start.\"";
+ mes "He shuffles the cards.";
+ next;
+ set zeny, zeny - @money;
+ set @croupier, rand(0, 4);
+ set @croupier, @croupier + 17;
+ set @player, rand(4, 21);
+ mes "\"You got " + @player + " with your cards.";
+ if(@player == 21) goto L_End;
+ mes "Do you want another card?\"";
+ next;
+
+ menu
+ "Yes.", L_Another,
+ "No.", L_End;
+
+L_Another:
+ set @tempace, rand(2, 11);
+ if (@tempace == 11) goto L_Ace;
+ set @player, @player + @tempace;
+ if (@player > 21) goto L_Lost;
+ if (@player == 21) goto L_End;
+ mes "\"You got " + @player + " with your cards.";
+ mes "Do you want another card?\"";
+ next;
+
+ menu
+ "Yes", L_Another,
+ "No", L_End;
+L_End:
+ if (@player <= @croupier) goto L_Lost;
+ mes "\"You won! Hrm, here is your money.\"";
+ set zeny, zeny + (3 * @money);
+ close;
+
+L_No_Money:
+ mes "\"You need at least " + @money + " GP.\"";
+ close;
+
+L_Lost:
+ mes "[Wolfgang]";
+ mes "\"Fine! I won!";
+ mes "You got " + @player + " with your cards.";
+ mes "I had " + @croupier + ".\"";
+ close;
+
+L_Ace:
+ set @player, @player + 11;
+ if (@player > 21) set @player, @player - 10;
+ if (@player > 21) goto L_Lost;
+ if (@player == 21) goto L_End;
+ mes "You got " + @player + " with your cards.";
+ mes "Do you want another card?";
+ next;
+
+ menu
+ "Yes", L_Another,
+ "No", L_End;
+ close;
+
+L_Close:
+ close;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}