diff options
Diffstat (limited to 'world/map/npc/026-2')
-rw-r--r-- | world/map/npc/026-2/_import.txt | 19 | ||||
-rw-r--r-- | world/map/npc/026-2/_mobs.txt | 3 | ||||
-rw-r--r-- | world/map/npc/026-2/_nodes.txt | 4 | ||||
-rw-r--r-- | world/map/npc/026-2/_warps.txt | 14 | ||||
-rw-r--r-- | world/map/npc/026-2/barman.txt | 10 | ||||
-rw-r--r-- | world/map/npc/026-2/cerhan.txt | 40 | ||||
-rw-r--r-- | world/map/npc/026-2/crying_child.txt | 219 | ||||
-rw-r--r-- | world/map/npc/026-2/diary.txt | 55 | ||||
-rw-r--r-- | world/map/npc/026-2/door.txt | 23 | ||||
-rw-r--r-- | world/map/npc/026-2/eurni.txt | 17 | ||||
-rw-r--r-- | world/map/npc/026-2/golbenez.txt | 625 | ||||
-rw-r--r-- | world/map/npc/026-2/gy_inn_shops.txt | 46 | ||||
-rw-r--r-- | world/map/npc/026-2/innkeeper.txt | 472 | ||||
-rw-r--r-- | world/map/npc/026-2/lover.txt | 318 | ||||
-rw-r--r-- | world/map/npc/026-2/mapflags.txt | 2 | ||||
-rw-r--r-- | world/map/npc/026-2/testnpcs.txt | 63 | ||||
-rw-r--r-- | world/map/npc/026-2/werewolf.txt | 179 |
17 files changed, 2109 insertions, 0 deletions
diff --git a/world/map/npc/026-2/_import.txt b/world/map/npc/026-2/_import.txt new file mode 100644 index 00000000..7cca6e43 --- /dev/null +++ b/world/map/npc/026-2/_import.txt @@ -0,0 +1,19 @@ +// Map 026-2: Swamp Indoors +// This file is generated automatically. All manually added changes will be removed when running the Converter. +map: 026-2 +npc: npc/026-2/_mobs.txt +npc: npc/026-2/_nodes.txt +npc: npc/026-2/_warps.txt +npc: npc/026-2/barman.txt +npc: npc/026-2/cerhan.txt +npc: npc/026-2/crying_child.txt +npc: npc/026-2/diary.txt +npc: npc/026-2/door.txt +npc: npc/026-2/eurni.txt +npc: npc/026-2/golbenez.txt +npc: npc/026-2/gy_inn_shops.txt +npc: npc/026-2/innkeeper.txt +npc: npc/026-2/lover.txt +npc: npc/026-2/mapflags.txt +npc: npc/026-2/testnpcs.txt +npc: npc/026-2/werewolf.txt diff --git a/world/map/npc/026-2/_mobs.txt b/world/map/npc/026-2/_mobs.txt new file mode 100644 index 00000000..a467be33 --- /dev/null +++ b/world/map/npc/026-2/_mobs.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Swamp Indoors mobs + diff --git a/world/map/npc/026-2/_nodes.txt b/world/map/npc/026-2/_nodes.txt new file mode 100644 index 00000000..05780dcc --- /dev/null +++ b/world/map/npc/026-2/_nodes.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Swamp Indoors nodes + +// (no nodes) diff --git a/world/map/npc/026-2/_warps.txt b/world/map/npc/026-2/_warps.txt new file mode 100644 index 00000000..f9dd3e7e --- /dev/null +++ b/world/map/npc/026-2/_warps.txt @@ -0,0 +1,14 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Swamp Indoors warps + +026-2,30,35|warp|2,-1,026-1,48,40 +026-2,23,25|warp|0,-1,026-2,66,25 +026-2,66,26|warp|0,-1,026-2,23,27 +026-2,26,55|warp|0,-1,026-2,23,31 +026-2,23,33|warp|0,-1,026-2,26,56 +026-2,22,96|warp|-1,-1,026-1,25,21 +026-2,41,82|warp|0,-1,026-2,83,95 +026-2,84,96|warp|0,-1,026-2,41,83 +026-2,23,58|warp|-1,-1,026-2,81,57 +026-2,82,57|warp|-1,-1,026-2,24,58 +026-2,31,129|warp|-1,-1,026-1,43,25 diff --git a/world/map/npc/026-2/barman.txt b/world/map/npc/026-2/barman.txt new file mode 100644 index 00000000..87e28859 --- /dev/null +++ b/world/map/npc/026-2/barman.txt @@ -0,0 +1,10 @@ +026-2,37,24,0|script|Bennet|310 +{ + mes "[Bennet]"; + mes "\"Hi there, stranger! My name is Bennet, the bartender here.\""; + next; + mes "[Bennet]"; + mes "\"If you're planning to stick around for a while, please check back with me later. I might have some work for you.\""; + mes "\"In the meantime, enjoy your stay!\""; + close; +} diff --git a/world/map/npc/026-2/cerhan.txt b/world/map/npc/026-2/cerhan.txt new file mode 100644 index 00000000..3104e34f --- /dev/null +++ b/world/map/npc/026-2/cerhan.txt @@ -0,0 +1,40 @@ +// Author: Jenalya + +026-2,38,118,0|script|Cerhan|311 +{ + mes "[Cerhan]"; + mes "\"Ah, hello! It's 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.",L_Close; + +L_Story: + mes "[Cerhan]"; + mes "\"I came from Thermin, a town in the Kazei area.\""; + next; + mes "\"I'm an experienced weapon master and I was thinking about establishing a smithy here. I'll need some more equipment, though.\""; + next; + if (countitem("MylarinDust") > 0) + menu + "Do you know something about 'Mylarin Dust'?", L_Mylarin, + "Good luck with that.",L_GoodLuckWith; + goto L_GoodLuckWith; + +L_GoodLuckWith: + mes "[Cerhan]"; + mes "\"If you're interested in weapons and armor, you may want to come back later.\""; + goto L_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, first I need to set up my smithy here.\""; + next; + mes "\"Please come back, when I'm ready for that. Mylarin dust... amazing.\""; + goto L_Close; + +L_Close: + close; +} diff --git a/world/map/npc/026-2/crying_child.txt b/world/map/npc/026-2/crying_child.txt new file mode 100644 index 00000000..e65dc716 --- /dev/null +++ b/world/map/npc/026-2/crying_child.txt @@ -0,0 +1,219 @@ +// author: alastrim +// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez +// Jenalya: some changes about variables (setting to zero if only used locally, naming) + +026-2,67,86,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); + + set @minLevel, 85; + + 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 >= @minLevel) goto L_intro; + goto L_cry; + +L_cry: + mes "[Crying Child]"; + mes "\"Waaahhhhh!\""; + goto L_Close; + +L_intro: + mes "[Crying Child]"; + mes "\"Waaah!\""; + next; + mes "\"Waaahhhaaa!\""; + 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?",L_WhatHappen, + "Leave the kid alone.",L_Close; + +L_WhatHappen: + mes "[Crying Child]"; + mes "\"Oh, what? Who are you, what are you doing here?\""; + next; + menu + "My name is "+strcharinfo(0)+". I heard you cry and decided to check if you needed any help.",L_MyNameIs; + +L_MyNameIs: + mes "The child looks at you from head to toe and says: aren't you scared of me?\""; + next; + menu + "No... Why would I be scared of you?",L_NotScaredOf; + +L_NotScaredOf: + mes "[Crying Child]"; + mes "\"I am, you know... dead. Like Mom and Dad, and a lot of other 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.",L_BraveSmart; + +L_BraveSmart: + mes "[Crying Child]"; + mes "\"It's nice to talk to you. I don't have any friends and Mom is always sad and Dad is always angry about something I don't know... and... Did you see the man in the room next to me? The one with horns? Oh, 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 I. 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 + "There, there. Don't cry... What did you do?",L_DontCryWhat; + +L_DontCryWhat: + mes "[Aldred]"; + mes "\"Umm... 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 fit into the empty space. But I... 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're not themselves. I don't know what happened, maybe it was my fault... I shouldn't have played with that ring... \""; + next; + menu + "Don't worry, I will look around. Maybe I can find it for you...",L_DontWorryFind, + "Hey, you messed up. Deal with it.",L_Close; + +L_DontWorryFind: + mes "[Aldred]"; + mes "\"Thank you " +strcharinfo(0)+"! Find it for me, pleeeease! Oh, and don't tell my parents that I lost their ring, okay?\""; + set @state, 1; + callsub S_Update_Mask; + goto L_Close; + +L_return: + mes "[Aldred]"; + mes "\"Please, help me. If you find that ring, I think things will be a little better between me and my parents.\""; + goto L_Close; + + +L_return1: + menu + "Hi Aldred. I found the ring!",L_RingFoundHere; + +L_RingFoundHere: + mes "[Aldred]"; + mes "\"Great! You're the best! Where did you find it?\""; + next; + menu + "It was easy, I found it on one of the monsters outside.",L_RingMonstersOut; + +L_RingMonstersOut: + mes "[Aldred]"; + mes "\"Ohh.. a monster? It must've been a nice monster since it returned it so easily to you!\""; + next; + menu + "Err... kind of...",L_ErrKindOf; + +L_ErrKindOf: + mes "[Aldred]"; + mes "\"Now, I'll put this thing back in its proper place... Thank you!\""; + set @state, 3; + callsub S_Update_Mask; + goto L_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...",L_GiveMeAnything; + +L_GiveMeAnything: + mes "[Aldred]"; + mes "\"Are you sure? That's why you're so great! But hey, I have an idea. What if you talk to my parents about this thing? If it's 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're acting all weird because I lost it. Would you do this for me?\""; + next; + menu + "Sounds interesting... But who are your parents?",L_WhereParents, + "Bad idea, it will only bring more problems...",L_Close; + +L_WhereParents: + set @state, 4; + callsub S_Update_Mask; + mes "[Aldred]"; + mes "\"Okay, 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's still afraid of the dark. My mother is the innkeeper. She's very beautiful and she's wearing a red dress.\""; + next; + mes "\"Don't forget to come back with the ring after you've talked to my parents.\""; + message strcharinfo(0), "Aldred hands you the ring and you keep it in a small pocket on your backpack."; + goto L_Close; + +L_return3: + mes "[Aldred]"; + mes "\"I hope this ring doesn't mean a lot to my parents. That way you can keep it as a gift and I won't feel guilty about taking it.\""; + goto L_Close; + +L_return4: + menu + "Hi, I talked to your parents.",L_TalkParents; + +L_TalkParents: + mes "[Aldred]"; + mes "\"Really? What did my father say about it?\""; + menu + "He said it's just a cheap ring. And it doesn't belong to him.",L_JustCheapRing; + +L_JustCheapRing: + mes "[Aldred]"; + mes "\"And what did my mother say?\""; + menu + "She said it was a gift, but she doesn't want it anymore.",L_GiftNoWant; + +L_GiftNoWant: + mes "[Aldred]"; + mes "\"Really? A gift? And why doesn't she want it anymore?\""; + next; + menu + "She said it makes her sad.",L_MakesHerSad; + +L_MakesHerSad: + mes "\"Ohh... really? I don't like it 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's already very sad. But now I'm 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 "SimpleRing", 1; + set @state, 7; + callsub S_Update_Mask; + mes "\"I'll tell my parents how great and helpful you are. Maybe they can even let you stay here at the inn for free!\""; + goto L_Close; + +L_return5: + mes "[Aldred]"; + mes "\"Thank you for all your help.\""; + goto L_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.\""; + goto L_Close; + +L_Close: + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @minLevel, 0; + 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/026-2/diary.txt b/world/map/npc/026-2/diary.txt new file mode 100644 index 00000000..e5d18ad3 --- /dev/null +++ b/world/map/npc/026-2/diary.txt @@ -0,0 +1,55 @@ +// Author: Jenalya + +026-2,76,85,0|script|#Diary|400 +{ + set @npc_distance, 3; + callfunc "PCtoNPCRange"; + if(@npc_check) end; + + 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; + set @reid, 0; + end; + +L_Diary: + mes "You pull out Reid's diary from behind a huge poetry book. Towards the end of the diary, you find some entries which seem to be about Savaric."; + next; + mes "'Savaric keeps confusing me - one time he is so flirtatious and smooth, 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 about my feelings - but I know, it's just a matter of time. I need to come to my senses again!'"; + next; + mes "'Oh, this chaotic situation 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 it."; + 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 dark abyss! 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 an unfaithful slut. But I want it to happen again, so badly.'"; + next; + mes "'I told Savaric we have to stop with this - he was very understanding. But then he started to hold me again and I couldn't resist. I don't know what to do, at all! His touch on my waist, even through my clothes, made me feel more excited than Hamond's 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 feel 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; + goto L_Close; + +L_Close: + set @reid, 0; + 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/026-2/door.txt b/world/map/npc/026-2/door.txt new file mode 100644 index 00000000..12429a41 --- /dev/null +++ b/world/map/npc/026-2/door.txt @@ -0,0 +1,23 @@ +026-2,77,92,0|script|#DoorIn|45,0,0 +{ + 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 "026-2", 77, 89; + set @reid, 0; + end; +} + +// TODO replace this with a plain warp +026-2,77,90,0|script|#DoorOut-gyinn|45,0,0 +{ + warp "026-2", 77, 93; + end; +} diff --git a/world/map/npc/026-2/eurni.txt b/world/map/npc/026-2/eurni.txt new file mode 100644 index 00000000..d20b64e8 --- /dev/null +++ b/world/map/npc/026-2/eurni.txt @@ -0,0 +1,17 @@ +// + +026-2,20,124,0|script|Eurni|136 +{ + set @halloween_npc_id, $@halloween_npc_eurni; + callfunc "TrickOrTreat"; + + mes "[Eurni the Surgeon]"; + mes "\"Are you tired of who you are?\""; + next; + mes "\"Would you be interested in changing your appearance?\""; + next; + callfunc "Barber"; + mes "[Eurni the Surgeon]"; + mes "\"Come back any time!\""; + close; +} diff --git a/world/map/npc/026-2/golbenez.txt b/world/map/npc/026-2/golbenez.txt new file mode 100644 index 00000000..6cf76de1 --- /dev/null +++ b/world/map/npc/026-2/golbenez.txt @@ -0,0 +1,625 @@ +// 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, small amount of exp for fail +// state 7: done + +026-2,60,57,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, 15; + set @UNDEADEAR_EXP, 150000; + set @UNDEADEYE_AMOUNT, 10; + set @UNDEADEYE_EXP, 150000; + set @JACKOSOUL_EXP, 2000; + + 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?",L_WhatPlace, + "You look different here. Nice horns.",L_Horns, + "I'm enjoying myself, thanks for asking.",L_Close; + +L_WhatPlace: + mes "[Golbenez]"; + mes "\"Mortal, this is beyond your comprehension. Do not worry about it and enjoy your time.\""; + + if (@lover < 2) + goto L_Close; + menu + "I want to know. Try me.",L_WantKnow; + +L_WantKnow: + 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. Chance brought me here and it became one of my favorite playgrounds.\""; + next; + mes "Golbenez laughs in a way which really gives you the creeps."; + next; + mes "[Golbenez]"; + mes "\"Unfortunately, it got destroyed. I had no choice but to take the memories from the dead and recreate this place.\""; + menu + "What do you mean by 'playground?'",L_WantGoOn, + "Recreate? What do you mean by that?",L_WantGoOn; + +L_WantGoOn: + mes "[Golbenez]"; + mes "\"As I said, you do not understand. You are starting to bore me. Leave.\""; + + set @state, 1; + callsub S_Update_Mask; + goto L_Close; + +L_Back: + if (@lover >= 3) + goto L_Memory; + mes "Golbenez ignores your presence."; + goto L_Close; + +L_Memory: + mes "[Golbenez]"; + mes "\"Mortal, you are 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.",L_KnowDestroy, + "Nevermind.",L_Close; + +L_KnowDestroy: + if ((@woman >= 7) + && (@lover >= 3) + && (@husband >= 4)) + goto L_Detective; + mes "[Golbenez]"; + mes "\"I was watching you play detective. I find it amusing. Play it a little longer and I may show you some of the memories from that time.\""; + goto L_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 would have to do is promise me your soul.\""; + menu + "No!",L_WantsSoul, + "That's too expensive. Make another offer.",L_WantsSoul, + "My soul?!",L_WantsSoul; + +L_WantsSoul: + mes "Golbenez giggles, a strange and somewhat unnerving sound from such a being."; + mes "[Golbenez]"; + mes "\"You should have seen your face. Really, mortals can be so funny.\""; + next; + mes "\"Very well, I will show you the birdbrained woman's memories if you bring me " + @ROTTENRAGS_AMOUNT + " Rotten Rags. And an Orange Cake.\""; + set @state, 2; + callsub S_Update_Mask; + goto L_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.",L_GiveRags, + "I'm working on that.",L_Close; + +L_GiveRags: + 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 woman's memories of that night. Come closer.\""; + next; + mes "\"You hesitate 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?",L_CollectMem, + "Wow, that was interesting.",L_CollectMem, + "Why do you collect such personal memories?",L_CollectMem; + +L_CollectMem: + mes "Golbenez throws you an amused look."; + next; + mes "[Golbenez]"; + mes "\"I will 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 are a constant source of amusement for me.\""; + next; + mes "\"I have more memories you might want to see. Bring me "+ @UNDEADEAR_AMOUNT + " Undead Ears. And a Chocolate Cake.\""; + goto L_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 Reid's memory again.",L_R_Again, + "What will you do with them?",L_Why_Stuff, + "Not yet.",L_Close; + menu + "I want to see Reid's memory again.",L_R_Again, + "I have what you want.",L_GiveEar, + "I'm working on that.",L_Close; + +L_GiveEar: + 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 will 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 is 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.\""; + goto L_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 Reid's memory again.",L_R_Again, + "I want to see Hamond's 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 Reid's memory again.",L_R_Again, + "I want to see Hamond's memory again.",L_H_Again, + "I got what you want.",L_GiveEye, + "I'm working on that.",L_Close; + +L_GiveEye: + 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 will show you the pitiful mage's memory.\""; + next; + mes "He holds your head and everything goes black again."; + callsub S_Savaricsmem; + set @state, 5; + callsub S_Update_Mask; + mes "[Golbenez]"; + mes "\"Humans can be so amusing!\""; + menu + "YOU CRUEL MONSTER!",L_MonsterIdiots, + "I agree. What a bunch of idiots.",L_MonsterIdiots; + +L_MonsterIdiots: + mes "Golbenez's mouth twists into something resembling a smile."; + mes "[Golbenez]"; + mes "\"Oh, thank you.\""; + goto L_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 Reid's memory again.",L_R_Again, + "I want to see Hamond's memory again.",L_H_Again, + "I want to see Savaric's memory again.",L_S_Again, + "Nevermind.",L_Close; + +L_Negotiate: + mes "Golbenez's 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 Savaric's soul back.",L_WantSoulBack, + "I want to see Reid's memory again.",L_R_Again, + "I want to see Hamond's memory again.",L_H_Again, + "I want to see Savaric's memory again.",L_S_Again, + "Nevermind.",L_Close; + +L_WantSoulBack: + mes "[Golbenez]"; + mes "\"Savaric's soul, yes. It is a pretty nice soul, you know. From a mage... no, even better... from a lovestruck 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?",L_GetSoul, + "No.",L_Close; + +L_GetSoul: + mes "[Golbenez]"; + mes "\"Bring me a soul of at least equal power to the mage's. I do not care about its origin.\""; + set @state, 6; + callsub S_Update_Mask; + goto L_Close; + +L_Soul: + mes "[Golbenez]"; + mes "\"So, did you get a soul for me?\""; + goto L_Soul_Try; + +L_Soul_Try: + if (countitem("Soul") < 1) + menu + "I'll go and get one.",L_Close; + menu + "What about this Soul?",L_TryThisSoul, + "I'll go and try to find a soul.",L_Close; + +L_TryThisSoul: + if (countitem("Soul") < 1) + goto L_Betray; + delitem "Soul", 1; + set @soul, rand(50); + if (@soul == 0) + goto L_Soul_Success; + mes "[Golbenez]"; + mes "\"No, this one is not as powerful as the mage's. Bring me another one of those.\""; + getexp @JACKOSOUL_EXP, 0; + goto L_Soul_Try; + +L_Soul_Success: + mes "Golbenez suddenly gets excited."; + mes "[Golbenez]"; + mes "\"Yes! This one is full of energy.\""; + set @state, 7; + callsub S_Update_Mask; + next; + mes "\"So be it, mortal. I will release Savaric's soul in exchange for this one.\""; + goto L_Close; + +L_Done: + mes "[Golbenez]"; + mes "\"I hope you enjoyed your little detective game. I certainly did.\""; + menu + "You're cruel.",L_Close, + "I want to see Reid's memory again.",L_R_Again, + "I want to see Hamond's memory again.",L_H_Again, + "I want to see Savaric's memory again.",L_S_Again; + +L_Cake: + mes "Golbenez laughs."; + mes "[Golbenez]"; + mes "\"This is why I like you. Despite being human, you have a delightful sense of humor.\""; + goto L_Close; + +L_S_Again: + callsub S_Savaricsmem; + mes "[Golbenez]"; + mes "\"What a fool he was, even for a human.\""; + goto L_Close; + +L_R_Again: + callsub S_Reidsmem; + mes "\"This memory seems to excite you. Interesting.\""; + goto L_Close; + +L_H_Again: + callsub S_Hamondsmem; + mes "[Golbenez]"; + mes "\"Humans can be so stupid, have you noticed that?\""; + goto L_Close; + +L_Horns: + mes "Golbenez bursts out with laughter."; + next; + mes "[Golbenez]"; + mes "\"Mortals! They never stop surprising me.\""; + goto L_Close; + +L_Why_Stuff: + mes "[Golbenez]"; + mes "\"That is not your concern.\""; + goto L_Close; + +L_Betray: + mes "[Golbenez]"; + mes "\"I am warning you, mortal. Do not try to betray me!\""; + goto L_Close; + +L_No_Cake: + mes "[Golbenez]"; + mes "\"Fool! You forgot my cake!\""; + goto L_Close; + +L_Close: + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @Graveyard_Inn_Woman_MASK, 0; + set @Graveyard_Inn_Woman_SHIFT, 0; + set @woman, 0; + set @Graveyard_Inn_Lover_MASK, 0; + set @Graveyard_Inn_Lover_SHIFT, 0; + set @lover, 0; + set @Graveyard_Inn_Husband_MASK, 0; + set @Graveyard_Inn_Husband_SHIFT, 0; + set @husband, 0; + set @ROTTENRAGS_AMOUNT, 0; + set @ROTTENRAGS_EXP, 0; + set @UNDEADEAR_AMOUNT, 0; + set @UNDEADEAR_EXP, 0; + set @UNDEADEYE_AMOUNT, 0; + set @UNDEADEYE_EXP, 0; + set @JACKOSOUL_EXP, 0; + set @soul, 0; + close; + +S_Reidsmem: + mes "[Golbenez]"; + mes "\"I will send her memories into your brain now. Do not collapse or do something equally 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 Reid's memories through 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 Savaric's room. You get a twisting feeling, something between desire, guilt and despair."; + next; + mes "It seems you're not only seeing Reid's memories, but also feeling them!"; + next; + mes "Reid turns away from Savaric's door and walks to her rooms quickly. She is shivering. You feel her heart pounding."; + next; + mes "She enters the room and pulls a red dress out of a chest and changes into it. As you feel her heart pounding even faster, you recognize the dress as the one her ghost is wearing."; + 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 Savaric's door. She hesitates again. Suddenly the door opens, Savaric standing there, smiling."; + next; + mes "[Savaric]"; + mes "\"I was hoping you would come.\""; + next; + mes "He reaches out with his hands and you feel Reid getting dizzy."; + next; + mes "You enter his room together. There is only one candle on the table, providing a dim light."; + next; + mes "[Reid]"; + mes "\"I- we- Savaric- this is not right- we shouldn't do this.\""; + next; + mes "[Savaric]"; + mes "\"But you came. Shh, don't worry. Let me hold you.\""; + next; + mes "Savaric puts his arms around Reid and leads her to the bed. You feel a rush of sexual desire."; + next; + mes "He starts to caress Reid's face with his lips, as his hands slip the dress from her shoulders."; + next; + mes "Reid's 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 for a moment, before falling to the ground."; + next; + mes "[Golbenez]"; + mes "\"I told you not to collapse!\""; + next; + mes "\"It seems Reid's 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 on 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 Hamond's chest."; + next; + mes "He shakes the reins and turns his carriage around. Obviously this is a great excuse for him to return to Reid at once."; + next; + mes "When he returns to the inn, the sun is already low on the horizon. He tells the stableboy to take care of the mouboo and carriage, then rushes up the stairs heading to his and Reid's 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 have been put on in haste. Her hair is in a disarray."; + 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 ignore your cockish behavior?!\""; + next; + mes "The shocked, painful, and obviously guilty look on Reid's 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 Reid's 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 that 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! Hamond's 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 Hamond's hold. She is surprisingly strong and together they fall onto the table."; + next; + mes "The next thing you see is a teapot smashing into Hamond's face. He stumbles back."; + next; + mes "You see Reid running to the door, where she pauses and throws a look over her shoulder. Then she runs out of the room."; + next; + mes "Her face was wet 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 Savaric's 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 utterly tattered, her dress ripped and her lips 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 Reid's breathing has calmed down and her abused 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 is a great anger keeping clear thoughts at bay."; + next; + mes "Savaric seems to be done 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 accompanied by 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 price.\""; + next; + mes "Golbenez's behavior changes immediately and he suddenly seems much friendlier."; + next; + mes "[Golbenez]"; + mes "\"Ah, you are offering me a deal. That is something completely different. Let me see... I can free her from all pain and anything or anyone causing her trouble.\""; + next; + mes "You feel Savaric's heart pounding."; + mes "[Savaric]"; + mes "\"Yes. That's what I want. I want her to be safe from any harm.\""; + next; + mes "Golbenez's 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, giving place to 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 "Savaric's hesitation vanishes."; + mes "[Savaric]"; + mes "\"So be it. Take my soul and prevent Reid from feeling pain ever again.\""; + next; + mes "Golbenez's smile changes to an ugly grin filled with 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 lying on the ground and see Golbenez raising his arms. You sense an unbelievable magic force - what is he doing?"; + next; + mes "Undead enter the room and one of them walks to the bed and breaks Reid's neck with a quick movement. A dark and black feeling of despair rises 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 lying 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 Reid's 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 find yourself 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/026-2/gy_inn_shops.txt b/world/map/npc/026-2/gy_inn_shops.txt new file mode 100644 index 00000000..3663d15f --- /dev/null +++ b/world/map/npc/026-2/gy_inn_shops.txt @@ -0,0 +1,46 @@ +// chef: function, +// barmaid: function, +// shopkeeper: multiples and function, +// magic undead shop: function, +// chief barman: function, +// receptionist: function, +// banker: function + +026-2,30,56,0|shop|Chef#graveyard|300,ZombieNachos:*1,LadyFingers:*1,JellAhh:*1,Snapple:*1 +026-2,38,30,0|shop|Estrilda|301,BeetleJuice:*1,GutBuster:*1,BloodWine:*1 + +026-2,40,24,0|script|Edwin|309 +{ + set @npcname$, "Edwin"; + + mes "[" + @npcname$ + "]"; + mes "\"This place is always busy.\""; + next; + mes "\"Be careful about bumping into the patrons, they might not take it kindly if you spill their drink.\""; + close; +} + +// Inn +026-2,75,23,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"; + close; +} + +026-2,31,119,0|shop|Leofwin|304,CactusDrink:*1,CactusPotion:*1,BugLeg:*1,SmallMushroom:*1,IronPotion:*1,ConcentrationPotion:*1,HardSpike:*1,DarkCrystal:*1,Root:*1,WispPowder:*1,SpectrePowder:*1,PoltergeistPowder:*1 + +026-2,22,120,0|shop|Umfrey|302,BoneArrows:*1,ShockSweet:*1 +// Bank and Storage +026-2,25,120,0|script|J.P. Morbid|321 +{ + set @npcname$, "J.P. Morbid"; + callfunc "Banker"; + close; +} diff --git a/world/map/npc/026-2/innkeeper.txt b/world/map/npc/026-2/innkeeper.txt new file mode 100644 index 00000000..b0ff338c --- /dev/null +++ b/world/map/npc/026-2/innkeeper.txt @@ -0,0 +1,472 @@ +// 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 + +026-2,35,84,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 @minLevel, 85; + set @YETI_TEAR_AMOUNT, 15; + 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, 25; // 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 < @minLevel) + goto L_Close; + goto L_Ask_Dead; + +L_Ask_Dead: + if (BaseLevel < 85) + goto L_Close; + + menu + "What happened to you?", L_Next, + "Thank you, I'll surely enjoy my visit.", L_Close; + +L_Next: + 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.",L_Next1, + "You don't seem to be in the best condition.",L_Next1, + "You are dead!",L_Next1; + +L_Next1: + 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.",L_Next2, + "Yes - do you understand my question now?",L_Next2, + "Shall I help you to find out what happened to you?", L_Offer_Help1; + +L_Next2: + 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; + goto L_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; + goto L_Skip1; + +L_Skip1: + menu + "Shall I help you to find out what happened to you?", L_Offer_Help1, + "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; + goto L_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.\""; + goto L_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; + goto L_Ask_Life; + +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; + goto L_Skip2; + +L_Skip2: + menu + "Please tell me about your life. Maybe this will give us a clue about what happened.",L_Next4, + "I need to think about that.", L_Close; + +L_Next4: + 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?",L_Next5, + "I can imagine. I'm very sorry for you",L_Next5; + +L_Next5: + 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; + goto L_Check_Kid; + +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 (@kidstate < 7) + goto L_Problem; + + 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; + + 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; + goto L_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.\""; + goto L_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.",L_Next6, + "Savaric seems to be a really hot guy, making you so compliant.",L_Tease; + +L_Next6: + 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.",L_Next7; + +L_Next7: + mes "You explain to her about Golbenez, 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; + goto L_Close; + +L_Sorry: + mes "[Reid's Ghost]"; + mes "\"Welcome back.\""; + if ((@lover == 4) + && (countitem("Diamond") >= @DIAMOND_AMOUNT) + && (countitem("Ruby") >= @RUBY_AMOUNT) + && (@husband == 5)) + menu + "Savaric asked me to give you something.",L_Diamond, + "Hamond sent me to bring you this.",L_Ruby, + "Nevermind.",L_Close; + if (@lover == 4 && (countitem("Diamond") >= @DIAMOND_AMOUNT)) + menu + "Savaric asked me to give you something.",L_Diamond, + "Nevermind.",L_Close; + if (@husband == 5 && (countitem("Ruby") >= @RUBY_AMOUNT)) + menu + "Hamond sent me to bring you this.",L_Ruby, + "Nevermind.",L_Close; + goto L_Close; + +L_Diamond: + if (countitem("Diamond") < @DIAMOND_AMOUNT) + goto L_Kidding; + delitem "Diamond", @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; + goto L_Close; + +L_Ruby: + if (countitem("Ruby") < @RUBY_AMOUNT) + goto L_Kidding; + delitem "Ruby", @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; + goto L_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.\""; + goto L_Tease; + +L_Tease: + mes "[Reid's Ghost]"; + mes "\"Don't be mean! I never felt like that before.\""; + goto L_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; + goto L_Mylarin; + +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.\""; + goto L_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.",L_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.\""; + goto L_Close; + +L_Problem: + mes "[Reid's Ghost]"; + mes "\"What I have to tell is very personal. I'm not sure if I want to tell you. I know you helped me already and showed me you are a sensitive, 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. \""; + goto L_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; + goto L_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.\""; + goto L_Close; + +L_Close: + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @Graveyard_Inn_Lover_MASK, 0; + set @Graveyard_Inn_Lover_SHIFT, 0; + set @lover, 0; + set @Graveyard_Inn_Kid_MASK, 0; + set @Graveyard_Inn_Kid_SHIFT, 0; + set @kidstate, 0; + set @Graveyard_Inn_Husband_MASK, 0; + set @Graveyard_Inn_Husband_SHIFT, 0; + set @husband, 0; + set @Graveyard_Inn_Golbanez_MASK, 0; + set @Graveyard_Inn_Golbanez_SHIFT, 0; + set @golbanez, 0; + set @minLevel, 0; + set @YETI_TEAR_AMOUNT, 0; + set @YETI_TEAR_EXP, 0; + set @DIAMOND_AMOUNT, 0; + set @RUBY_AMOUNT, 0; + set @tears, 0; + 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/026-2/lover.txt b/world/map/npc/026-2/lover.txt new file mode 100644 index 00000000..f7d84ed5 --- /dev/null +++ b/world/map/npc/026-2/lover.txt @@ -0,0 +1,318 @@ +// 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 + +026-2,80,31,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 @minLevel, 85; + 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 < @minLevel) 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?",L_Next; + +L_Next: + 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; + goto L_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.",L_Next1, + "I prefer to keep them.",L_Skip; + +L_Next1: + set @crystal, countitem("DarkCrystal"); + if (@crystal > @CRYSTAL_MAX) + set @crystal, @CRYSTAL_MAX; + delitem "DarkCrystal", @crystal; + getexp @crystal*@CRYSTAL_EXTRA_EXP, 0; + goto L_Skip; + +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!",L_Next2, + "Yes, it is very fascinating to be blown up!",L_Next2, + "I NEARLY DIED! AND YOU THINK THIS IS FASCINATING?!",L_Next2; + +L_Next2: + 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; + goto L_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; + goto L_Golbenez; + +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?",L_Next3, + "Excuse me, I don't want to interrupt you, but can you explain to me what's going on? I'm confused.",L_Next3, + "Hey! I'm talking with you!",L_Next3; + +L_Next3: + 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; + goto L_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 Golbenez wants me to do.",L_Close; + menu + "Now I know what happened. I'll tell you.",L_Next4, + "I'm sorry to tell you, but this was all your fault.",L_Next4; + +L_Next4: + 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; + goto L_Close; + +L_Waiting: + mes "[Savaric]"; + mes "\"Have you already brought the Diamonds to Reid?\""; + goto L_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; + goto L_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.",L_NextEnd, + "Yes, but it isn't easy.",L_NextEnd; + +L_NextEnd: + mes "[Savaric]"; + mes "\"Thank you so much! I'm counting on you!\""; + goto L_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 "SorcererRed", 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.\""; + goto L_Close; + +L_Have_Soul: + mes "[Savaric]"; + mes "\"I'll be in your debt forever. Thank you so much.\""; + goto L_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.\""; + goto L_Close; + +L_Not_Enough_Crystals: + mes "It seems you managed to get some, but not enough. Can you bring me more?"; + goto L_Close; + +L_Full_Inv: + mes "[Savaric]"; + mes "\"Oh, you can't carry anything more. Come back when you can take it.\""; + goto L_Close; + +L_Close: + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @Graveyard_Inn_Woman_MASK, 0; + set @Graveyard_Inn_Woman_SHIFT, 0; + set @woman, 0; + set @Graveyard_Inn_Golbenez_MASK, 0; + set @Graveyard_Inn_Golbenez_SHIFT, 0; + set @golbanez, 0; + set @minLevel, 0; + set @CRYSTAL_AMOUNT, 0; + set @CRYSTAL_EXP, 0; + set @CRYSTAL_EXTRA_EXP, 0; + set @CRYSTAL_MAX, 0; + set @DIAMOND_AMOUNT, 0; + set @crystal, 0; + 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/026-2/mapflags.txt b/world/map/npc/026-2/mapflags.txt new file mode 100644 index 00000000..36cc5ce9 --- /dev/null +++ b/world/map/npc/026-2/mapflags.txt @@ -0,0 +1,2 @@ +026-1|mapflag|resave|026-1,28,35 +026-2|mapflag|town diff --git a/world/map/npc/026-2/testnpcs.txt b/world/map/npc/026-2/testnpcs.txt new file mode 100644 index 00000000..8bac0ab0 --- /dev/null +++ b/world/map/npc/026-2/testnpcs.txt @@ -0,0 +1,63 @@ +//several NPCs in the Reid's Inn + +026-2,64,32,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; +} + +026-2,34,59,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; +} + +026-2,41,30,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...\""; + goto L_Close; +L_1: + mes "[Darnel]"; + mes "\"Ish that a Zzombee?...\""; + goto L_Close; +L_2: + mes "[Darnel]"; + mes "\"Auuu... Hiccup... Don't byte mee... \""; + goto L_Close; +L_3: + mes "[Darnel]"; + mes "\"Moar Bearr...Pleash!\""; + goto L_Close; + +L_Close: + set @drunker, 0; + close; +} + +026-2,33,29,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/026-2/werewolf.txt b/world/map/npc/026-2/werewolf.txt new file mode 100644 index 00000000..79701dbb --- /dev/null +++ b/world/map/npc/026-2/werewolf.txt @@ -0,0 +1,179 @@ +// author: Jenalya + +026-2,30,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; + set @minLevel, 80; + + 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 < @minLevel) + 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; + goto L_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.",L_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; + goto L_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.\""; + goto L_Close; + +L_Not_Enough: + mes "[Wolfgang]"; + mes "\"Are you trying to kid me? I can count.\""; + goto L_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.",L_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); + goto L_Close; + +L_No_Money: + mes "\"You need at least " + @money + " GP.\""; + goto L_Close; + +L_Lost: + mes "[Wolfgang]"; + mes "\"Fine! I won!"; + mes "You got " + @player + " with your cards."; + mes "I had " + @croupier + ".\""; + goto L_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; + +L_Close: + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @ANIMALBONES_AMOUNT, 0; + set @ANIMALBONES_EXP, 0; + set @money, 0; + set @minLevel, 0; + + set @croupier, 0; + set @player, 0; + set @tempace, 0; + close; + +S_Update_Mask: + set QUEST_Graveyard_Inn, + (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK)) + | (@state << @Graveyard_Inn_SHIFT); + return; +} |