From 3f175b590d284ef413be0be25c7f74392523414b Mon Sep 17 00:00:00 2001 From: wushin Date: Thu, 21 Apr 2016 15:37:05 -0500 Subject: Deadmere - Undead Town --- world/map/data/002-2.wlk | Bin 23844 -> 23844 bytes world/map/data/015-1.wlk | Bin 16804 -> 16804 bytes world/map/data/016-1.wlk | Bin 16804 -> 16804 bytes world/map/data/025-1.wlk | Bin 18004 -> 18004 bytes world/map/data/026-1.wlk | Bin 18004 -> 18004 bytes world/map/data/026-2.wlk | Bin 0 -> 16646 bytes world/map/data/027-2.wlk | Bin 19504 -> 9494 bytes world/map/data/resnametable.txt | 1 + world/map/npc/001-2/_nodes.txt | 4 +- world/map/npc/002-2/_import.txt | 1 - world/map/npc/002-2/_warps.txt | 2 - world/map/npc/002-2/barber.txt | 2 +- world/map/npc/002-2/eurni.txt | 49 --- world/map/npc/002-2/mapflags.txt | 1 + world/map/npc/015-1/mapflags.txt | 1 + world/map/npc/016-1/_import.txt | 1 + world/map/npc/016-1/_mobs.txt | 1 - world/map/npc/016-1/gwendolyn.txt | 2 +- world/map/npc/016-1/mapflags.txt | 1 + world/map/npc/016-1/rossy.txt | 290 ++++++++++++++++ world/map/npc/025-1/_import.txt | 1 - world/map/npc/025-1/_mobs.txt | 8 +- world/map/npc/025-1/mapflags.txt | 3 +- world/map/npc/025-1/rossy.txt | 290 ---------------- world/map/npc/026-1/_import.txt | 7 +- world/map/npc/026-1/_mobs.txt | 17 +- world/map/npc/026-1/_nodes.txt | 2 +- world/map/npc/026-1/_warps.txt | 5 +- world/map/npc/026-1/evil_guard.txt | 28 ++ world/map/npc/026-1/headless_man.txt | 209 ++++++++++++ world/map/npc/026-1/husband.txt | 355 +++++++++++++++++++ world/map/npc/026-1/mapflags.txt | 3 +- world/map/npc/026-1/soul-menhir.txt | 17 + world/map/npc/026-1/traveler.txt | 11 + world/map/npc/026-2/_import.txt | 19 ++ world/map/npc/026-2/_mobs.txt | 3 + world/map/npc/026-2/_nodes.txt | 4 + world/map/npc/026-2/_warps.txt | 14 + world/map/npc/026-2/barman.txt | 10 + world/map/npc/026-2/cerhan.txt | 40 +++ world/map/npc/026-2/crying_child.txt | 219 ++++++++++++ world/map/npc/026-2/diary.txt | 55 +++ world/map/npc/026-2/door.txt | 23 ++ world/map/npc/026-2/eurni.txt | 17 + world/map/npc/026-2/golbenez.txt | 625 ++++++++++++++++++++++++++++++++++ world/map/npc/026-2/gy_inn_shops.txt | 46 +++ world/map/npc/026-2/innkeeper.txt | 472 +++++++++++++++++++++++++ world/map/npc/026-2/lover.txt | 318 +++++++++++++++++ world/map/npc/026-2/mapflags.txt | 2 + world/map/npc/026-2/testnpcs.txt | 63 ++++ world/map/npc/026-2/werewolf.txt | 179 ++++++++++ world/map/npc/027-1/_import.txt | 2 - world/map/npc/027-1/_mobs.txt | 1 - world/map/npc/027-1/_warps.txt | 2 +- world/map/npc/027-1/crypt.txt | 2 +- world/map/npc/027-1/golbenez.txt | 39 --- world/map/npc/027-1/mapflags.txt | 3 +- world/map/npc/027-1/traveler.txt | 11 - world/map/npc/027-2/_import.txt | 14 - world/map/npc/027-2/_mobs.txt | 14 +- world/map/npc/027-2/_nodes.txt | 14 +- world/map/npc/027-2/_warps.txt | 9 +- world/map/npc/027-2/alacrius.txt | 2 +- world/map/npc/027-2/barman.txt | 10 - world/map/npc/027-2/caretaker.txt | 4 +- world/map/npc/027-2/cerhan.txt | 40 --- world/map/npc/027-2/crying_child.txt | 219 ------------ world/map/npc/027-2/diary.txt | 51 --- world/map/npc/027-2/door.txt | 23 -- world/map/npc/027-2/evil_guard.txt | 28 -- world/map/npc/027-2/golbenez.txt | 625 ---------------------------------- world/map/npc/027-2/gy_inn_shops.txt | 46 --- world/map/npc/027-2/headless_man.txt | 209 ------------ world/map/npc/027-2/husband.txt | 355 ------------------- world/map/npc/027-2/innkeeper.txt | 472 ------------------------- world/map/npc/027-2/lover.txt | 318 ----------------- world/map/npc/027-2/mapflags.txt | 3 +- world/map/npc/027-2/testnpcs.txt | 63 ---- world/map/npc/027-2/thurston.txt | 2 +- world/map/npc/027-2/werewolf.txt | 179 ---------- world/map/npc/027-3/_warps.txt | 2 +- world/map/npc/055-1/_nodes.txt | 8 +- world/map/npc/_import.txt | 1 + world/map/npc/functions/travelers.txt | 6 +- 84 files changed, 3084 insertions(+), 3114 deletions(-) create mode 100644 world/map/data/026-2.wlk delete mode 100644 world/map/npc/002-2/eurni.txt create mode 100644 world/map/npc/016-1/rossy.txt delete mode 100644 world/map/npc/025-1/rossy.txt create mode 100644 world/map/npc/026-1/evil_guard.txt create mode 100644 world/map/npc/026-1/headless_man.txt create mode 100644 world/map/npc/026-1/husband.txt create mode 100644 world/map/npc/026-1/soul-menhir.txt create mode 100644 world/map/npc/026-1/traveler.txt create mode 100644 world/map/npc/026-2/_import.txt create mode 100644 world/map/npc/026-2/_mobs.txt create mode 100644 world/map/npc/026-2/_nodes.txt create mode 100644 world/map/npc/026-2/_warps.txt create mode 100644 world/map/npc/026-2/barman.txt create mode 100644 world/map/npc/026-2/cerhan.txt create mode 100644 world/map/npc/026-2/crying_child.txt create mode 100644 world/map/npc/026-2/diary.txt create mode 100644 world/map/npc/026-2/door.txt create mode 100644 world/map/npc/026-2/eurni.txt create mode 100644 world/map/npc/026-2/golbenez.txt create mode 100644 world/map/npc/026-2/gy_inn_shops.txt create mode 100644 world/map/npc/026-2/innkeeper.txt create mode 100644 world/map/npc/026-2/lover.txt create mode 100644 world/map/npc/026-2/mapflags.txt create mode 100644 world/map/npc/026-2/testnpcs.txt create mode 100644 world/map/npc/026-2/werewolf.txt delete mode 100644 world/map/npc/027-1/golbenez.txt delete mode 100644 world/map/npc/027-1/traveler.txt delete mode 100644 world/map/npc/027-2/barman.txt delete mode 100644 world/map/npc/027-2/cerhan.txt delete mode 100644 world/map/npc/027-2/crying_child.txt delete mode 100644 world/map/npc/027-2/diary.txt delete mode 100644 world/map/npc/027-2/door.txt delete mode 100644 world/map/npc/027-2/evil_guard.txt delete mode 100644 world/map/npc/027-2/golbenez.txt delete mode 100644 world/map/npc/027-2/gy_inn_shops.txt delete mode 100644 world/map/npc/027-2/headless_man.txt delete mode 100644 world/map/npc/027-2/husband.txt delete mode 100644 world/map/npc/027-2/innkeeper.txt delete mode 100644 world/map/npc/027-2/lover.txt delete mode 100644 world/map/npc/027-2/testnpcs.txt delete mode 100644 world/map/npc/027-2/werewolf.txt diff --git a/world/map/data/002-2.wlk b/world/map/data/002-2.wlk index 6528a49d..6fabf246 100644 Binary files a/world/map/data/002-2.wlk and b/world/map/data/002-2.wlk differ diff --git a/world/map/data/015-1.wlk b/world/map/data/015-1.wlk index 3d6b56ec..423858e6 100644 Binary files a/world/map/data/015-1.wlk and b/world/map/data/015-1.wlk differ diff --git a/world/map/data/016-1.wlk b/world/map/data/016-1.wlk index 0f295b52..c08298a4 100644 Binary files a/world/map/data/016-1.wlk and b/world/map/data/016-1.wlk differ diff --git a/world/map/data/025-1.wlk b/world/map/data/025-1.wlk index 3338087b..7f2e8c05 100644 Binary files a/world/map/data/025-1.wlk and b/world/map/data/025-1.wlk differ diff --git a/world/map/data/026-1.wlk b/world/map/data/026-1.wlk index d8beef9c..d232da71 100644 Binary files a/world/map/data/026-1.wlk and b/world/map/data/026-1.wlk differ diff --git a/world/map/data/026-2.wlk b/world/map/data/026-2.wlk new file mode 100644 index 00000000..6c76df0e Binary files /dev/null and b/world/map/data/026-2.wlk differ diff --git a/world/map/data/027-2.wlk b/world/map/data/027-2.wlk index bcf88a56..ec3dfafa 100644 Binary files a/world/map/data/027-2.wlk and b/world/map/data/027-2.wlk differ diff --git a/world/map/data/resnametable.txt b/world/map/data/resnametable.txt index 50a7b029..99852a33 100644 --- a/world/map/data/resnametable.txt +++ b/world/map/data/resnametable.txt @@ -61,6 +61,7 @@ 025-3#025-3.wlk# 025-4#025-4.wlk# 026-1#026-1.wlk# +026-2#026-2.wlk# 027-1#027-1.wlk# 027-2#027-2.wlk# 027-3#027-3.wlk# diff --git a/world/map/npc/001-2/_nodes.txt b/world/map/npc/001-2/_nodes.txt index 5a5cdeac..9d4b5dab 100644 --- a/world/map/npc/001-2/_nodes.txt +++ b/world/map/npc/001-2/_nodes.txt @@ -6,8 +6,8 @@ end; OnInit: setarray .m$, "_N-Alchemy", "001-2", "001-2", "001-2", "001-2"; - setarray .x1, "_N-Alchemy", 98, 92, 98, 92; - setarray .y1, "_N-Alchemy", 76, 76, 89, 89; + setarray .x1, "_N-Alchemy", 92, 98, 92, 98; + setarray .y1, "_N-Alchemy", 76, 89, 89, 76; setarray .x2, "_N-Alchemy", 0, 0, 0, 0; setarray .y2, "_N-Alchemy", 0, 0, 0, 0; setarray .id, "_N-Alchemy", 0, 0, 0, 0; diff --git a/world/map/npc/002-2/_import.txt b/world/map/npc/002-2/_import.txt index 3f90a1d8..e6688c6a 100644 --- a/world/map/npc/002-2/_import.txt +++ b/world/map/npc/002-2/_import.txt @@ -9,7 +9,6 @@ npc: npc/002-2/barber.txt npc: npc/002-2/bleacher.txt npc: npc/002-2/casino.txt npc: npc/002-2/dedication.txt -npc: npc/002-2/eurni.txt npc: npc/002-2/hetchel.txt npc: npc/002-2/imec.txt npc: npc/002-2/inya.txt diff --git a/world/map/npc/002-2/_warps.txt b/world/map/npc/002-2/_warps.txt index c1c72ce6..b3db1c6d 100644 --- a/world/map/npc/002-2/_warps.txt +++ b/world/map/npc/002-2/_warps.txt @@ -11,8 +11,6 @@ 002-2,37,20|warp|-1,-1,002-2,72,31 002-2,72,32|warp|-1,-1,002-2,37,21 002-2,79,70|warp|-1,-1,002-2,34,21 -002-2,40,20|warp|-1,-1,002-2,126,35 -002-2,126,36|warp|-1,-1,002-2,40,21 002-2,75,101|warp|-1,-1,002-1,109,46 002-2,83,101|warp|-1,-1,002-1,115,46 002-2,78,132|warp|-1,-1,002-1,114,36 diff --git a/world/map/npc/002-2/barber.txt b/world/map/npc/002-2/barber.txt index 0ed69626..3de89005 100644 --- a/world/map/npc/002-2/barber.txt +++ b/world/map/npc/002-2/barber.txt @@ -1,5 +1,5 @@ // A barber (later we can make it so certain styles need to come from him, for a price) -002-2,117,30,0|script|Issay|156 +002-2,22,77,0|script|Issay|156 { mes "[Issay the Barber]"; mes "\"Want to change your hairstyle?\""; diff --git a/world/map/npc/002-2/eurni.txt b/world/map/npc/002-2/eurni.txt deleted file mode 100644 index 7e7254ed..00000000 --- a/world/map/npc/002-2/eurni.txt +++ /dev/null @@ -1,49 +0,0 @@ -// - -002-2,22,77,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 sex?\""; - next; - - menu - "Please do.", L_Change_Menu, - "Leave my family treasures alone!", L_Close; - -L_Change_Menu: - menu - "Female.", L_Female, - "Male.", L_Male, - "Non-binary.", L_NonBinary; - -L_Female: - set @sex, 0; - goto L_Change; - -L_Male: - set @sex, 1; - goto L_Change; - -L_NonBinary: - set @sex, 3; - goto L_Change; - -L_Change: - if (Sex == @sex) - goto L_Already_Change; - set Sex, @sex; - close; - -L_Already_Change: - mes "[Eurni the Surgeon]"; - mes "\"Umm, you are that gender already.\""; - close; - -L_Close: - close; -} diff --git a/world/map/npc/002-2/mapflags.txt b/world/map/npc/002-2/mapflags.txt index b33ced4f..8f0bef6b 100644 --- a/world/map/npc/002-2/mapflags.txt +++ b/world/map/npc/002-2/mapflags.txt @@ -1 +1,2 @@ 002-2|mapflag|resave|001-1,60,105 +002-2|mapflag|town diff --git a/world/map/npc/015-1/mapflags.txt b/world/map/npc/015-1/mapflags.txt index 7e6513cf..fbf1ed0d 100644 --- a/world/map/npc/015-1/mapflags.txt +++ b/world/map/npc/015-1/mapflags.txt @@ -1 +1,2 @@ 015-1|mapflag|resave|010-1,27,97 +015-1|mapflag|outside diff --git a/world/map/npc/016-1/_import.txt b/world/map/npc/016-1/_import.txt index 63751660..45ca5d79 100644 --- a/world/map/npc/016-1/_import.txt +++ b/world/map/npc/016-1/_import.txt @@ -6,3 +6,4 @@ npc: npc/016-1/_nodes.txt npc: npc/016-1/_warps.txt npc: npc/016-1/gwendolyn.txt npc: npc/016-1/mapflags.txt +npc: npc/016-1/rossy.txt diff --git a/world/map/npc/016-1/_mobs.txt b/world/map/npc/016-1/_mobs.txt index 91c4d96c..f87db1cc 100644 --- a/world/map/npc/016-1/_mobs.txt +++ b/world/map/npc/016-1/_mobs.txt @@ -5,7 +5,6 @@ 016-1,0,0,0,0|monster|Butterfly|1055,10,30ms,20ms 016-1,0,0,0,0|monster|Squirrel|1038,30,20ms,10ms 016-1,0,0,0,0|monster|Mouboo|1028,5,0ms,0ms -016-1,0,0,0,0|monster|Scorpion|1003,15,0ms,0ms 016-1,0,0,0,0|monster|MauvePlant|1029,3,0ms,0ms 016-1,0,0,0,0|monster|MauvePlant|1029,4,270000ms,180000ms 016-1,0,0,0,0|monster|CobaltPlant|1030,3,0ms,0ms diff --git a/world/map/npc/016-1/gwendolyn.txt b/world/map/npc/016-1/gwendolyn.txt index 8276de08..a257e905 100644 --- a/world/map/npc/016-1/gwendolyn.txt +++ b/world/map/npc/016-1/gwendolyn.txt @@ -21,7 +21,7 @@ // 5, state5: you are ready to do the targeting minigame // 6, state6: you did the minigame -016-1,33,45,0|script|Gwendolyn|182 +016-1,91,54,0|script|Gwendolyn|182 { // schoolfee in gp set @SCHOOLFEE, 25000; diff --git a/world/map/npc/016-1/mapflags.txt b/world/map/npc/016-1/mapflags.txt index 4c31651b..90dc43f6 100644 --- a/world/map/npc/016-1/mapflags.txt +++ b/world/map/npc/016-1/mapflags.txt @@ -1 +1,2 @@ 016-1|mapflag|resave|010-1,27,97 +016-1|mapflag|outside diff --git a/world/map/npc/016-1/rossy.txt b/world/map/npc/016-1/rossy.txt new file mode 100644 index 00000000..126dd8b9 --- /dev/null +++ b/world/map/npc/016-1/rossy.txt @@ -0,0 +1,290 @@ +// Authors: alastrim, Ali-g, Dark Mage + +016-1,32,44,0|script|Rossy|114 +{ + set @child_number, 6; + callfunc "XmasList"; + + set @Cherry_Amount, 10; + set @Cherry_EXP, 2000; + + set @CactusDrink_Amount, 24; + set @MaggotSlime_Amount, 32; + set @GambodgeHerb_Amount, 50; + set @AlizarinHerb_Amount, 43; + set @BugLeg_Amount, 30; + set @Potion_EXP, 3000; + + set @RedRose_Amount, 15; + set @RedTulip_Amount, 15; + set @Flower_EXP, 2500; + + set @Finish_EXP, 5000; + set @Finish_Money, 5000; + + if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd; + if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End; + + if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia; + if (Rossy_Quest >= 13) goto L_Best; + if (Rossy_Quest >= 11) goto L_Allergic; + if (Rossy_Quest >= 8 && Rossy_Quest < 11) goto L_Donet; + if (Rossy_Quest == 7) goto L_BT; + if (Rossy_Quest == 6) goto L_Check2; + if (Rossy_Quest == 5) goto L_Let; + if (Rossy_Quest == 4 || Rossy_Quest == 5) goto L_Cherry_Done; + if (Rossy_Quest == 3) goto L_Check; + if (Rossy_Quest == 2) goto L_Mother; + + mes "A young girl looks at you in tears."; + if (Rossy_Quest < 1) + close; + next; + menu + "Hey there.... Why are you crying? Are you hurt?", L_Next, + "Sorry kid, I don't have time to play with children.", L_No; + +L_Next: + mes "[Young Girl]"; + mes "\"No. I'm crying because I lost all my fruits. My sister and I were collecting some near Dimond's Cove, but then I stumbled on a giant snail and it attacked us!"; + next; + mes "But we were lucky, because the snail is really slow and we ran away from it. Julia ran to the left and I ran to the right. The snail got pretty confused, because we are identical twins. The problem is that I dropped the basket full of fruits on the ground and that evil snail ate them all! And now I can't find Julia to help me collect more fruits.\""; + next; + menu + "Did you say \"Julia?\" I talked to your mother; she's very worried about you!", L_SheWorried; + +L_SheWorried: + mes "[Rossy]"; + mes "\"Really? But she let us play in the woods. There's no reason to be worried – unless....\""; + next; + mes "Rossy suddenly gets a strange look on her face, mumbling something about Julia."; + next; + mes "[Rossy]"; + mes "\"Could you do me a favor? Please, tell my mother that we're alright. There's ... well ... there's no reason to worry about us.\""; + next; + menu + "Very well, if you say so....", L_SaySo, + "Sorry, but I really don't have time for this.", L_No; + +L_SaySo: + mes "[Rossy]"; + mes "\"Thank you very much!\""; + set Rossy_Quest, 2; + close; + +L_No: + close; + +L_Mother: + mes "[Rossy]"; + mes "\"Please, tell my mother we are fine. If you feel like helping, come back after you talk to my mother. Maybe you could help us find some fruits.\""; + close; + +L_Get_Cherry: + mes "[Young Girl]"; + mes "\"No, you don't have " + @Cherry_Amount + " cherries. I know how to count. I hope you get them soon.\""; + close; + +L_Check: + mes "[Rossy]"; + mes "\"Hey, that is nice of you to come back. I was thinking about giving a basket full of cherries to my mother, to make her happy, you know. But we'd need at least " + @Cherry_Amount + " cherries, and it would take ages for me to get so many by myself!\""; + next; + menu + "That is no problem for me. Just wait and I will come back with the cherries.", L_No, + "Hey, I have some cherries in my backpack!", L_HaveSomeCherries, + "You should get them yourself.", L_No; + +L_HaveSomeCherries: + if(countitem("Cherry") < @Cherry_Amount) + goto L_Get_Cherry; + mes "[Rossy]"; + set Rossy_Quest, 4; + getexp @Cherry_EXP, 0; + mes "\"I can't believe it! You got all the cherries needed! Please give them to my mother. Tell her that it is a gift from me and Julia and that there's no reason to worry about us.\""; + next; + mes "Rossy mumbles to herself."; + mes "[Rossy]"; + mes "\"I hope....\""; + next; + mes "[Rossy]"; + mes "\"Oh, and after you give the cherries to my mother, please come back here. Err, if you have some free time, of course.\""; + close; + +L_Cherry_Done: + mes "[Rossy]"; + mes "\"Please, try to distract my mother. I don't want her to be worried about us. While you do this, I will try to find Julia.\""; + close; + +L_Let: + mes "[Rossy]"; + mes "\"Hello "+ strcharinfo(0) +", nice to see you again. Hey, what are you hiding behind your back? Is that a ... letter?\""; + next; + menu + "Your mother asked me to hand you this letter. She told me it was from your teacher.", L_Let2, + "Not at all. I need to go now, see you next time.", L_No; + +L_Let2: + mes "The little girl grabs the piece of paper and reads it quickly. Her face turns pale."; + menu + "What does it say?", L_PaperSays; + +L_PaperSays: + mes "[Rossy]"; + mes "\"Oh no, I completely forgot! My magic school exam! I need to make a potion and give it to my teacher today! But I haven't found Julia yet and I don't even have any of the ingredients required. Could you get them for me, please?\""; + next; + set Rossy_Quest, 6; + mes "\"I need " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\""; + next; + mes "\"Please come back to see me when you have the ingredients. I know the recipe by heart.\""; + close; + +L_NE: + mes "[Rossy]"; + mes "\"Please bring me " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\""; + next; + mes "\"Please hurry!\""; + close; + +L_Check2: + if(countitem("CactusDrink") < @CactusDrink_Amount) + goto L_NE; + if(countitem("MaggotSlime") < @MaggotSlime_Amount) + goto L_NE; + if(countitem("GambogeHerb") < @GambodgeHerb_Amount) + goto L_NE; + if(countitem("AlizarinHerb") < @AlizarinHerb_Amount) + goto L_NE; + if(countitem("BugLeg") < @BugLeg_Amount) + goto L_NE; + delitem "CactusDrink", @CactusDrink_Amount; + delitem "MaggotSlime", @MaggotSlime_Amount; + delitem "GambogeHerb", @GambodgeHerb_Amount; + delitem "AlizarinHerb", @AlizarinHerb_Amount; + delitem "BugLeg", @BugLeg_Amount; + mes "Rossy takes all the ingredients and places them on the ground. She starts to mix some herbs with the cactus drinks and appears to cast some spells. She seems to know what she is doing."; + next; + mes "[Rossy]"; + mes "\"Oh, thank you "+ strcharinfo(0) +"! It is done. If you don't mind, please give this potion to my teacher.\""; + set Rossy_Quest, 7; + getexp @Potion_EXP, 0; + message strcharinfo(0), "Rossy hands you the potion, holding the bottle very carefully."; + next; + mes "\"My teacher's name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\""; + next; + mes "\"Please, give it to him as soon as you can!\""; + close; + +L_BT: + mes "[Rossy]"; + mes "\"Great. Now if you could just give it to my teacher. His name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\""; + next; + mes "\"You should take the ferry, that'll be faster than swimming!\""; + close; + +L_Donet: + if (Rossy_Quest == 10 + && countitem("RedRose") >= @RedRose_Amount) + goto L_RG; + menu + "David took your potion and he tested it in front of me. It worked perfectly!", L_DavidPotion; + +L_DavidPotion: + mes "[Rossy]"; + mes "\"YPhew! That was close: I almost forgot about my exam. Please, tell my mother about my success for me. I'm sure she'll be pleased.\""; + close; + +L_RG: + if (countitem("RedRose") < @RedRose_Amount) + goto L_No; + delitem "RedRose", @RedRose_Amount; + menu + "Your mother was so happy that she asked me to bring you these flowers.", L_MotherFlowers; + +L_MotherFlowers: + mes "[Rossy]"; + mes "\"How nice!\""; + next; + mes "Rossy takes the flowers from your hands and suddenly throws them on the ground. She begins sneezing."; + set Rossy_Quest, 11; + menu + "I presume you don't like roses, right?", L_LikeRoses; + +L_LikeRoses: + mes "[Rossy]"; + mes "\"I am allergic to roses, my mother should already know that!\""; + close; + +L_Allergic: + mes "Rossy sneezes a lot."; + if (Rossy_Quest == 12 + && countitem("RedTulip") >= @RedTulip_Amount) + goto L_Sorry; + close; + +L_Sorry: + menu + "Your mother is sorry about the roses. Here are some beautiful red tulips instead.", L_See; + +L_See: + mes "[Rossy]"; + if (countitem("RedTulip") < @RedTulip_Amount) + goto L_No; + delitem "RedTulip", @RedTulip_Amount; + set Rossy_Quest, 13; + mes "\"That's better! Go and tell my mother that she is the nicest mother in the world.\""; + next; + mes "\"Now I should really find my sister. Come back later.\""; + getexp @Flower_EXP, 0; + close; + +L_Best: + mes "[Rossy]"; + mes "\"Thank you "+ strcharinfo(0) +", you helped me so much!\""; + next; + menu + "Did you find your sister? I am starting to get worried too.", L_FindMySister; + +L_FindMySister: + mes "\"I think I have an idea where she might be. Come back in a few minutes, I will tell you if she is ok.\""; + set Rossy_Quest, 14; + close; + +L_Julia: + mes "[Rossy]"; + mes "\"I saw Julia! She was running away from something and entered a cave not far from here. I heard her scream. Please can you enter the cave and save her? I'm so scared!\""; + close; + +L_End: + mes "[Rossy]"; + mes "\"Oh no! Julia ... why would you go to that scary place? ... Have you seen her yet?\""; + menu + "She'll be back soon, trust me. I saved her.", L_Found, + "I didn't see her yet, sorry.", L_No; + +L_Found: + mes "[Rossy]"; + if (Rossy_Quest == 17) + set Rossy_Quest, 18; + if (Rossy_Quest == 18) + set Rossy_Quest, 19; + mes "\"Oh, "+ strcharinfo(0) +", thank you very much! Take this, you deserve it!\""; + next; + mes "Rossy hands you a huge bag full of coins."; + getexp @Finish_EXP, 0; + set Zeny, Zeny + @Finish_Money; + if (Rossy_Quest == 19) + goto L_Clear; + close; + +L_Clear: + set Rossy_Quest, 0; + set cavefights, 0; + set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED; + close; + +L_FinalEnd: + mes "[Rossy]"; + mes "\"Julia and I are playing hide and seek right now. It is fun in the forest!\""; + mes "The young girl laughs quietly."; + close; +} diff --git a/world/map/npc/025-1/_import.txt b/world/map/npc/025-1/_import.txt index 9c4af1aa..d5e71948 100644 --- a/world/map/npc/025-1/_import.txt +++ b/world/map/npc/025-1/_import.txt @@ -7,4 +7,3 @@ npc: npc/025-1/_warps.txt npc: npc/025-1/barrier.txt npc: npc/025-1/mapflags.txt npc: npc/025-1/reset.txt -npc: npc/025-1/rossy.txt diff --git a/world/map/npc/025-1/_mobs.txt b/world/map/npc/025-1/_mobs.txt index 259f0568..64c4e62a 100644 --- a/world/map/npc/025-1/_mobs.txt +++ b/world/map/npc/025-1/_mobs.txt @@ -4,10 +4,10 @@ 025-1,100,60,56,79|monster|CloverPatch|1037,3,30000ms,10000ms 025-1,56,96,13,5|monster|CloverPatch|1037,1,1200000ms,10000ms 025-1,56,35,77,33|monster|AlizarinPlant|1032,2,240000ms,12000ms -025-1,55,62,24,13|monster|Snail|1041,7,30000ms,12000ms 025-1,38,84,37,31|monster|Silkworm|1035,18,40000ms,300ms 025-1,96,47,63,55|monster|LogHead|1025,14,18000ms,3000ms 025-1,0,0,0,0|monster|PinkFlower|1014,34,20000ms,5000ms -025-1,0,0,0,0|monster|SpikyMushroom|1019,40,90000ms,500ms -025-1,101,53,55,65|monster|Squirrel|1038,18,60000ms,9000ms -025-1,26,61,15,85|monster|Scorpion|1003,12,100000ms,50000ms +025-1,41,86,35,26|monster|GrassSnake|1034,3,100000ms,50000ms +025-1,78,46,23,28|monster|GrassSnake|1034,3,100000ms,50000ms +025-1,73,84,38,16|monster|GrassSnake|1034,3,100000ms,50000ms +025-1,53,33,59,17|monster|GrassSnake|1034,4,100000ms,50000ms diff --git a/world/map/npc/025-1/mapflags.txt b/world/map/npc/025-1/mapflags.txt index ec0bef1a..8e3a046f 100644 --- a/world/map/npc/025-1/mapflags.txt +++ b/world/map/npc/025-1/mapflags.txt @@ -1 +1,2 @@ -025-1|mapflag|resave|025-1,33,50 +025-1|mapflag|resave|016-1,94,30 +025-1|mapflag|outside diff --git a/world/map/npc/025-1/rossy.txt b/world/map/npc/025-1/rossy.txt deleted file mode 100644 index 139781b7..00000000 --- a/world/map/npc/025-1/rossy.txt +++ /dev/null @@ -1,290 +0,0 @@ -// Authors: alastrim, Ali-g, Dark Mage - -025-1,80,88,0|script|Rossy|114 -{ - set @child_number, 6; - callfunc "XmasList"; - - set @Cherry_Amount, 10; - set @Cherry_EXP, 2000; - - set @CactusDrink_Amount, 24; - set @MaggotSlime_Amount, 32; - set @GambodgeHerb_Amount, 50; - set @AlizarinHerb_Amount, 43; - set @BugLeg_Amount, 30; - set @Potion_EXP, 3000; - - set @RedRose_Amount, 15; - set @RedTulip_Amount, 15; - set @Flower_EXP, 2500; - - set @Finish_EXP, 5000; - set @Finish_Money, 5000; - - if (FLAGS & FLAG_ROSSI_COMPLETED) goto L_FinalEnd; - if (Rossy_Quest == 17 || Rossy_Quest == 18) goto L_End; - - if (Rossy_Quest >= 14 && Rossy_Quest <= 16) goto L_Julia; - if (Rossy_Quest >= 13) goto L_Best; - if (Rossy_Quest >= 11) goto L_Allergic; - if (Rossy_Quest >= 8 && Rossy_Quest < 11) goto L_Donet; - if (Rossy_Quest == 7) goto L_BT; - if (Rossy_Quest == 6) goto L_Check2; - if (Rossy_Quest == 5) goto L_Let; - if (Rossy_Quest == 4 || Rossy_Quest == 5) goto L_Cherry_Done; - if (Rossy_Quest == 3) goto L_Check; - if (Rossy_Quest == 2) goto L_Mother; - - mes "A young girl looks at you in tears."; - if (Rossy_Quest < 1) - close; - next; - menu - "Hey there.... Why are you crying? Are you hurt?", L_Next, - "Sorry kid, I don't have time to play with children.", L_No; - -L_Next: - mes "[Young Girl]"; - mes "\"No. I'm crying because I lost all my fruits. My sister and I were collecting some near Dimond's Cove, but then I stumbled on a giant snail and it attacked us!"; - next; - mes "But we were lucky, because the snail is really slow and we ran away from it. Julia ran to the left and I ran to the right. The snail got pretty confused, because we are identical twins. The problem is that I dropped the basket full of fruits on the ground and that evil snail ate them all! And now I can't find Julia to help me collect more fruits.\""; - next; - menu - "Did you say \"Julia?\" I talked to your mother; she's very worried about you!", L_SheWorried; - -L_SheWorried: - mes "[Rossy]"; - mes "\"Really? But she let us play in the woods. There's no reason to be worried – unless....\""; - next; - mes "Rossy suddenly gets a strange look on her face, mumbling something about Julia."; - next; - mes "[Rossy]"; - mes "\"Could you do me a favor? Please, tell my mother that we're alright. There's ... well ... there's no reason to worry about us.\""; - next; - menu - "Very well, if you say so....", L_SaySo, - "Sorry, but I really don't have time for this.", L_No; - -L_SaySo: - mes "[Rossy]"; - mes "\"Thank you very much!\""; - set Rossy_Quest, 2; - close; - -L_No: - close; - -L_Mother: - mes "[Rossy]"; - mes "\"Please, tell my mother we are fine. If you feel like helping, come back after you talk to my mother. Maybe you could help us find some fruits.\""; - close; - -L_Get_Cherry: - mes "[Young Girl]"; - mes "\"No, you don't have " + @Cherry_Amount + " cherries. I know how to count. I hope you get them soon.\""; - close; - -L_Check: - mes "[Rossy]"; - mes "\"Hey, that is nice of you to come back. I was thinking about giving a basket full of cherries to my mother, to make her happy, you know. But we'd need at least " + @Cherry_Amount + " cherries, and it would take ages for me to get so many by myself!\""; - next; - menu - "That is no problem for me. Just wait and I will come back with the cherries.", L_No, - "Hey, I have some cherries in my backpack!", L_HaveSomeCherries, - "You should get them yourself.", L_No; - -L_HaveSomeCherries: - if(countitem("Cherry") < @Cherry_Amount) - goto L_Get_Cherry; - mes "[Rossy]"; - set Rossy_Quest, 4; - getexp @Cherry_EXP, 0; - mes "\"I can't believe it! You got all the cherries needed! Please give them to my mother. Tell her that it is a gift from me and Julia and that there's no reason to worry about us.\""; - next; - mes "Rossy mumbles to herself."; - mes "[Rossy]"; - mes "\"I hope....\""; - next; - mes "[Rossy]"; - mes "\"Oh, and after you give the cherries to my mother, please come back here. Err, if you have some free time, of course.\""; - close; - -L_Cherry_Done: - mes "[Rossy]"; - mes "\"Please, try to distract my mother. I don't want her to be worried about us. While you do this, I will try to find Julia.\""; - close; - -L_Let: - mes "[Rossy]"; - mes "\"Hello "+ strcharinfo(0) +", nice to see you again. Hey, what are you hiding behind your back? Is that a ... letter?\""; - next; - menu - "Your mother asked me to hand you this letter. She told me it was from your teacher.", L_Let2, - "Not at all. I need to go now, see you next time.", L_No; - -L_Let2: - mes "The little girl grabs the piece of paper and reads it quickly. Her face turns pale."; - menu - "What does it say?", L_PaperSays; - -L_PaperSays: - mes "[Rossy]"; - mes "\"Oh no, I completely forgot! My magic school exam! I need to make a potion and give it to my teacher today! But I haven't found Julia yet and I don't even have any of the ingredients required. Could you get them for me, please?\""; - next; - set Rossy_Quest, 6; - mes "\"I need " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\""; - next; - mes "\"Please come back to see me when you have the ingredients. I know the recipe by heart.\""; - close; - -L_NE: - mes "[Rossy]"; - mes "\"Please bring me " + @CactusDrink_Amount + " Cactus Drinks, " + @MaggotSlime_Amount + " Maggot Slimes, " + @GambodgeHerb_Amount + " Gamboge Herbs, " + @AlizarinHerb_Amount + " Alizarin Herbs and " + @BugLeg_Amount + " Bug Legs.\""; - next; - mes "\"Please hurry!\""; - close; - -L_Check2: - if(countitem("CactusDrink") < @CactusDrink_Amount) - goto L_NE; - if(countitem("MaggotSlime") < @MaggotSlime_Amount) - goto L_NE; - if(countitem("GambogeHerb") < @GambodgeHerb_Amount) - goto L_NE; - if(countitem("AlizarinHerb") < @AlizarinHerb_Amount) - goto L_NE; - if(countitem("BugLeg") < @BugLeg_Amount) - goto L_NE; - delitem "CactusDrink", @CactusDrink_Amount; - delitem "MaggotSlime", @MaggotSlime_Amount; - delitem "GambogeHerb", @GambodgeHerb_Amount; - delitem "AlizarinHerb", @AlizarinHerb_Amount; - delitem "BugLeg", @BugLeg_Amount; - mes "Rossy takes all the ingredients and places them on the ground. She starts to mix some herbs with the cactus drinks and appears to cast some spells. She seems to know what she is doing."; - next; - mes "[Rossy]"; - mes "\"Oh, thank you "+ strcharinfo(0) +"! It is done. If you don't mind, please give this potion to my teacher.\""; - set Rossy_Quest, 7; - getexp @Potion_EXP, 0; - message strcharinfo(0), "Rossy hands you the potion, holding the bottle very carefully."; - next; - mes "\"My teacher's name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\""; - next; - mes "\"Please, give it to him as soon as you can!\""; - close; - -L_BT: - mes "[Rossy]"; - mes "\"Great. Now if you could just give it to my teacher. His name is David. He is a very young magician and lives near the magic school in the north of Tulimshar.\""; - next; - mes "\"You should take the ferry, that'll be faster than swimming!\""; - close; - -L_Donet: - if (Rossy_Quest == 10 - && countitem("RedRose") >= @RedRose_Amount) - goto L_RG; - menu - "David took your potion and he tested it in front of me. It worked perfectly!", L_DavidPotion; - -L_DavidPotion: - mes "[Rossy]"; - mes "\"YPhew! That was close: I almost forgot about my exam. Please, tell my mother about my success for me. I'm sure she'll be pleased.\""; - close; - -L_RG: - if (countitem("RedRose") < @RedRose_Amount) - goto L_No; - delitem "RedRose", @RedRose_Amount; - menu - "Your mother was so happy that she asked me to bring you these flowers.", L_MotherFlowers; - -L_MotherFlowers: - mes "[Rossy]"; - mes "\"How nice!\""; - next; - mes "Rossy takes the flowers from your hands and suddenly throws them on the ground. She begins sneezing."; - set Rossy_Quest, 11; - menu - "I presume you don't like roses, right?", L_LikeRoses; - -L_LikeRoses: - mes "[Rossy]"; - mes "\"I am allergic to roses, my mother should already know that!\""; - close; - -L_Allergic: - mes "Rossy sneezes a lot."; - if (Rossy_Quest == 12 - && countitem("RedTulip") >= @RedTulip_Amount) - goto L_Sorry; - close; - -L_Sorry: - menu - "Your mother is sorry about the roses. Here are some beautiful red tulips instead.", L_See; - -L_See: - mes "[Rossy]"; - if (countitem("RedTulip") < @RedTulip_Amount) - goto L_No; - delitem "RedTulip", @RedTulip_Amount; - set Rossy_Quest, 13; - mes "\"That's better! Go and tell my mother that she is the nicest mother in the world.\""; - next; - mes "\"Now I should really find my sister. Come back later.\""; - getexp @Flower_EXP, 0; - close; - -L_Best: - mes "[Rossy]"; - mes "\"Thank you "+ strcharinfo(0) +", you helped me so much!\""; - next; - menu - "Did you find your sister? I am starting to get worried too.", L_FindMySister; - -L_FindMySister: - mes "\"I think I have an idea where she might be. Come back in a few minutes, I will tell you if she is ok.\""; - set Rossy_Quest, 14; - close; - -L_Julia: - mes "[Rossy]"; - mes "\"I saw Julia! She was running away from something and entered a cave not far from here. I heard her scream. Please can you enter the cave and save her? I'm so scared!\""; - close; - -L_End: - mes "[Rossy]"; - mes "\"Oh no! Julia ... why would you go to that scary place? ... Have you seen her yet?\""; - menu - "She'll be back soon, trust me. I saved her.", L_Found, - "I didn't see her yet, sorry.", L_No; - -L_Found: - mes "[Rossy]"; - if (Rossy_Quest == 17) - set Rossy_Quest, 18; - if (Rossy_Quest == 18) - set Rossy_Quest, 19; - mes "\"Oh, "+ strcharinfo(0) +", thank you very much! Take this, you deserve it!\""; - next; - mes "Rossy hands you a huge bag full of coins."; - getexp @Finish_EXP, 0; - set Zeny, Zeny + @Finish_Money; - if (Rossy_Quest == 19) - goto L_Clear; - close; - -L_Clear: - set Rossy_Quest, 0; - set cavefights, 0; - set FLAGS, FLAGS | FLAG_ROSSI_COMPLETED; - close; - -L_FinalEnd: - mes "[Rossy]"; - mes "\"Julia and I are playing hide and seek right now. It is fun in the forest!\""; - mes "The young girl laughs quietly."; - close; -} diff --git a/world/map/npc/026-1/_import.txt b/world/map/npc/026-1/_import.txt index 72d1a275..ce06afc8 100644 --- a/world/map/npc/026-1/_import.txt +++ b/world/map/npc/026-1/_import.txt @@ -1,8 +1,13 @@ -// Map 026-1: Swamp +// Map 026-1: Deadmere // This file is generated automatically. All manually added changes will be removed when running the Converter. map: 026-1 npc: npc/026-1/_mobs.txt npc: npc/026-1/_nodes.txt npc: npc/026-1/_warps.txt +npc: npc/026-1/evil_guard.txt +npc: npc/026-1/headless_man.txt +npc: npc/026-1/husband.txt npc: npc/026-1/mapflags.txt npc: npc/026-1/sign.txt +npc: npc/026-1/soul-menhir.txt +npc: npc/026-1/traveler.txt diff --git a/world/map/npc/026-1/_mobs.txt b/world/map/npc/026-1/_mobs.txt index 9f4d8325..de57d933 100644 --- a/world/map/npc/026-1/_mobs.txt +++ b/world/map/npc/026-1/_mobs.txt @@ -1,14 +1,17 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. -// Swamp mobs +// Deadmere mobs 026-1,0,0,0,0|monster|Wisp|1040,34,120000ms,40000ms 026-1,0,0,0,0|monster|Spectre|1042,34,120000ms,40000ms 026-1,0,0,0,0|monster|Poltergeist|1047,34,120000ms,40000ms 026-1,0,0,0,0|monster|Silkworm|1035,10,300000ms,60000ms -026-1,0,0,0,0|monster|Scorpion|1003,15,300000ms,30000ms 026-1,0,0,0,0|monster|LogHead|1025,8,300000ms,40000ms -026-1,46,74,35,26|monster|GrassSnake|1034,2,100000ms,50000ms -026-1,88,36,35,26|monster|GrassSnake|1034,2,100000ms,50000ms -026-1,35,36,18,16|monster|GrassSnake|1034,2,100000ms,50000ms -026-1,66,33,73,17|monster|GrassSnake|1034,4,100000ms,50000ms -026-1,60,76,61,31|monster|GrassSnake|1034,4,100000ms,50000ms +026-1,49,31,56,14|monster|DrunkenSkeleton|1077,4,100000ms,30000ms +026-1,50,31,52,11|monster|TipsySkeleton|1078,4,100000ms,30000ms +026-1,56,77,66,30|monster|DrunkenSkeleton|1077,4,100000ms,30000ms +026-1,57,77,59,23|monster|TipsySkeleton|1078,4,100000ms,30000ms +026-1,110,59,31,74|monster|DrunkenSkeleton|1077,4,100000ms,30000ms +026-1,110,59,28,71|monster|TipsySkeleton|1078,4,100000ms,30000ms +026-1,110,59,31,74|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms +026-1,57,79,69,32|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms +026-1,48,31,54,12|monster|DrunkenLadySkeleton|1079,4,100000ms,30000ms diff --git a/world/map/npc/026-1/_nodes.txt b/world/map/npc/026-1/_nodes.txt index 47e3199f..0fb7a7bf 100644 --- a/world/map/npc/026-1/_nodes.txt +++ b/world/map/npc/026-1/_nodes.txt @@ -1,4 +1,4 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. -// Swamp nodes +// Deadmere nodes // (no nodes) diff --git a/world/map/npc/026-1/_warps.txt b/world/map/npc/026-1/_warps.txt index 7158b0cb..af945881 100644 --- a/world/map/npc/026-1/_warps.txt +++ b/world/map/npc/026-1/_warps.txt @@ -1,5 +1,8 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. -// Swamp warps +// Deadmere warps 026-1,63,16|warp|-1,-1,027-1,63,105 026-1,129,66|warp|-1,-1,025-1,20,66 +026-1,48,39|warp|-1,-1,026-2,29,33 +026-1,43,24|warp|-1,-1,026-2,31,128 +026-1,25,20|warp|-1,-1,026-2,22,95 diff --git a/world/map/npc/026-1/evil_guard.txt b/world/map/npc/026-1/evil_guard.txt new file mode 100644 index 00000000..22288b5c --- /dev/null +++ b/world/map/npc/026-1/evil_guard.txt @@ -0,0 +1,28 @@ +026-1,50,32,0|script|Blackwin|316 +{ + mes "..."; + next; + mes "The guard glares at you, silently daring you to try something."; + next; + mes "[Evil Guard]"; + mes "\"Heed my 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 remains undisturbed.\""; + close; +} + +026-1,29,28,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 then the guard bursts out laughing."; + mes ""; + mes "[Evil Guard]"; + mes "\"Just kidding! Can you imagine Golbenez's reaction if we had such puny offspring?\""; + close; +} diff --git a/world/map/npc/026-1/headless_man.txt b/world/map/npc/026-1/headless_man.txt new file mode 100644 index 00000000..f922406d --- /dev/null +++ b/world/map/npc/026-1/headless_man.txt @@ -0,0 +1,209 @@ +// 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 + +026-1,34,30,0|script|Thurstan|318 +{ + 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 tree."; + 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. 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_Close; + +L_greet: + mes "[Headless Man]"; + mes "\"Greetings! Do you have any duck tape?\""; + goto L_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_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; + goto L_Close; + +L_Quest_no: + mes "[Thurstan]"; + mes "\"Very well. Just don't come looking to me when your own head falls off!\""; + goto L_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_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; + goto L_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.\""; + goto L_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.\""; + goto L_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; + goto L_Close; + +L_Full_Inv: + mes "[Thurstan]"; + mes "\"I'd like to give you something for your efforts, but you're carrying too much stuff.\""; + goto L_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.\""; + goto L_Close; + +L_Close: + + set @Graveyard_Inn_MASK, 0; + set @Graveyard_Inn_SHIFT, 0; + set @state, 0; + set @Wisp_Powder, 0; + set @Polt_Powder, 0; + set @Spec_Powder, 0; + set @Iron_Pot, 0; + set @Conc_Pot, 0; + set @Red_Dye, 0; + set @Yellow_Dye, 0; + set @LB_Dye, 0; + set @Glue_Exp, 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-1/husband.txt b/world/map/npc/026-1/husband.txt new file mode 100644 index 00000000..6dac42a3 --- /dev/null +++ b/world/map/npc/026-1/husband.txt @@ -0,0 +1,355 @@ +// 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 + +026-1,40,41,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 @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 @ICE_CUBE_AMOUNT, 100; + set @ICE_CUBE_EXP, 75000; + set @BONE_AMOUNT, 100; + set @SKULL_AMOUNT, 75; + set @BONE_EXP, 100000; + set @RUBY_AMOUNT, 25; // 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, My name is Hamond. I run the inn together with my beautiful wife Reid. If there is anything I can do for you, please let me know.\""; + if (BaseLevel < @minLevel) + goto L_Close; + next; + menu + "I'd like to know why all the people in here are dead.",L_Next, + "Are you feeling well? You look very pale... In fact, deathly pale.",L_Next, + "Thank you, but I'm fine.", L_Close; + +L_Next: + 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 the 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?", L_Continue; + +L_Continue: + 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; + + goto L_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.\""; + goto L_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 the inn a run well 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?",L_More; + +L_More: + 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!\""; + goto L_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; + goto L_Brought_Bones; + +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.",L_Welcome; + goto L_Welcome; + +L_Welcome: + mes "[Hamond]"; + mes "\"Please make yourself at home.\""; + goto L_Close; + +L_Savaric: + mes "Hamond's face turns into an ugly grimace."; + mes "[Hamond]"; + mes "\"That cheeky egomaniac - \""; + next; + + if (@kidstate < 7) + goto L_Problem; + 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; + goto L_Jealousy; + +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; + goto L_Close; + +L_Problem: + mes "[Hamond]"; + mes "\"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...\""; + goto L_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; + goto L_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.",L_FoundOut; + +L_FoundOut: + 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 Golbenez 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.",L_HamondFate, + "You got very upset, don't blame yourself",L_HamondFate, + "You're right. You were very violent. How could you do that if you love her?",L_HamondFate; + +L_HamondFate: + 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; + goto L_Close; + +L_Waiting: + mes "[Hamond]"; + mes "\"Did you bring Reid the " + @RUBY_AMOUNT + " Rubies?\""; + goto L_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; + goto L_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.\""; + goto L_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.\""; + goto L_Close; + +L_Not_Enough_Cubes: + mes "[Hamond]"; + mes "\"Yes, they look good! But I think I need more of them. Maybe " + @ICE_CUBE_AMOUNT + "?\""; + goto L_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.\""; + 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_Kid_MASK, 0; + set @Graveyard_Inn_Kid_SHIFT, 0; + set @Graveyard_Inn_Golbenez_MASK, 0; + set @Graveyard_Inn_Golbenez_SHIFT, 0; + set @golbanez, 0; + set @kidstate, 0; + set @minLevel, 0; + set @ICE_CUBE_AMOUNT, 0; + set @ICE_CUBE_EXP, 0; + set @BONE_AMOUNT, 0; + set @SKULL_AMOUNT, 0; + set @BONE_EXP, 0; + set @RUBY_AMOUNT, 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: + set QUEST_Graveyard_Inn, + (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK)) + | (@state << @Graveyard_Inn_SHIFT); + return; +} diff --git a/world/map/npc/026-1/mapflags.txt b/world/map/npc/026-1/mapflags.txt index 137d6a1c..1a059118 100644 --- a/world/map/npc/026-1/mapflags.txt +++ b/world/map/npc/026-1/mapflags.txt @@ -1 +1,2 @@ -026-1|mapflag|resave|025-1,33,50 +026-1|mapflag|resave|026-1,28,35 +026-1|mapflag|outside diff --git a/world/map/npc/026-1/soul-menhir.txt b/world/map/npc/026-1/soul-menhir.txt new file mode 100644 index 00000000..9b1b87b4 --- /dev/null +++ b/world/map/npc/026-1/soul-menhir.txt @@ -0,0 +1,17 @@ +// + +026-1,29,34,0|script|Soul Menhir#deadmire|351 +{ + set @map$, "026-1"; + setarray @Xs, 28, 29, 30, 28, 30, 28, 30; + setarray @Ys, 32, 33, 34, 32, 34, 32, 34; + set @x, 0; + set @y, 0; + callfunc "SoulMenhir"; + set @map$, ""; + cleararray @Xs[0], 0, 7; + cleararray @Ys[0], 0, 7; + set @x, 0; + set @y, 0; + close; +} diff --git a/world/map/npc/026-1/traveler.txt b/world/map/npc/026-1/traveler.txt new file mode 100644 index 00000000..de743c14 --- /dev/null +++ b/world/map/npc/026-1/traveler.txt @@ -0,0 +1,11 @@ +// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world. +// Author: Wombat, wushin +// cost depending on level and adapted to new scripting guidelines: Jenalya + +026-1,49,46,0|script|Styx the Traveler|103 +{ + set @npcname$, "Styx"; + set @NpcTravelBit, $@graveyard_bit; + callfunc "Traveler"; + end; +} 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; +} diff --git a/world/map/npc/027-1/_import.txt b/world/map/npc/027-1/_import.txt index 66d24392..7a50aaf6 100644 --- a/world/map/npc/027-1/_import.txt +++ b/world/map/npc/027-1/_import.txt @@ -5,7 +5,5 @@ npc: npc/027-1/_mobs.txt npc: npc/027-1/_nodes.txt npc: npc/027-1/_warps.txt npc: npc/027-1/crypt.txt -npc: npc/027-1/golbenez.txt npc: npc/027-1/graves.txt npc: npc/027-1/mapflags.txt -npc: npc/027-1/traveler.txt diff --git a/world/map/npc/027-1/_mobs.txt b/world/map/npc/027-1/_mobs.txt index 51ce6174..4b422ea6 100644 --- a/world/map/npc/027-1/_mobs.txt +++ b/world/map/npc/027-1/_mobs.txt @@ -17,4 +17,3 @@ 027-1,104,64,31,20|monster|Skeleton|1043,2,60000ms,8000ms 027-1,104,64,31,21|monster|LadySkeleton|1044,2,60000ms,8000ms 027-1,70,40,100,20|monster|VampireBat|1066,15,100000ms,30000ms -027-1,99,90,34,16|monster|GrassSnake|1034,3,100000ms,50000ms diff --git a/world/map/npc/027-1/_warps.txt b/world/map/npc/027-1/_warps.txt index 583d6890..9922f47f 100644 --- a/world/map/npc/027-1/_warps.txt +++ b/world/map/npc/027-1/_warps.txt @@ -1,5 +1,5 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Graveyard warps -027-1,88,84|warp|-1,-1,027-2,26,33 +027-1,88,84|warp|-1,-1,027-2,46,33 027-1,63,106|warp|-1,-1,026-1,63,17 diff --git a/world/map/npc/027-1/crypt.txt b/world/map/npc/027-1/crypt.txt index c6f6a63f..2a67ff24 100644 --- a/world/map/npc/027-1/crypt.txt +++ b/world/map/npc/027-1/crypt.txt @@ -2,7 +2,7 @@ { if (BaseLevel < 60) goto L_Weak; - warp "027-2", 112, 110; + warp "027-2", 36, 110; end; L_Weak: diff --git a/world/map/npc/027-1/golbenez.txt b/world/map/npc/027-1/golbenez.txt deleted file mode 100644 index cfa09fdb..00000000 --- a/world/map/npc/027-1/golbenez.txt +++ /dev/null @@ -1,39 +0,0 @@ -027-1,68,89,0|script|#Golbenez#_M|204 -{ - set @fee, 666; - - mes "[Golbenez]"; - mes "\"Welcome mortal. I finished the creation of the place of leisure.\""; - next; - if (BaseLevel < 60) - goto L_Weak; - mes "\"I will bring you there for a small fee of " + @fee + "GP.\""; - menu - "What? You already got so much money!",L_SoMuchSwag, - "Ok, bring me there.",L_Warp; - -L_SoMuchSwag: - mes "[Golbenez]"; - mes "\"Come back when you've changed your mind. It's a wonderful place.\""; - close; - -L_Warp: - if (Zeny < @fee) - goto L_No_Money; - set Zeny, Zeny - @fee; - warp "027-2", 105, 44; - close; - -L_No_Money: - mes "[Golbenez]"; - mes "\"Don't try to betray me, pitiful human.\""; - next; - mes "\"Come back when you can pay my service.\""; - close; - -L_Weak: - mes "\"It is astonishing how WEAK you humans can be.\""; - next; - mes "\"Come back when you're a bit more experienced.\""; - close; -} diff --git a/world/map/npc/027-1/mapflags.txt b/world/map/npc/027-1/mapflags.txt index ed13545d..790b44a9 100644 --- a/world/map/npc/027-1/mapflags.txt +++ b/world/map/npc/027-1/mapflags.txt @@ -1 +1,2 @@ -027-1|mapflag|resave|025-1,33,50 +027-1|mapflag|resave|026-1,28,35 +027-1|mapflag|outside diff --git a/world/map/npc/027-1/traveler.txt b/world/map/npc/027-1/traveler.txt deleted file mode 100644 index 0c8bb753..00000000 --- a/world/map/npc/027-1/traveler.txt +++ /dev/null @@ -1,11 +0,0 @@ -// This is a teleportation (warp) NPC. Its purpose is to offer expensive, fast trips throughout the world. -// Author: Wombat, wushin -// cost depending on level and adapted to new scripting guidelines: Jenalya - -027-1,83,84,0|script|Styx the Traveler|103 -{ - set @npcname$, "Styx"; - set @NpcTravelBit, $@graveyard_bit; - callfunc "Traveler"; - end; -} diff --git a/world/map/npc/027-2/_import.txt b/world/map/npc/027-2/_import.txt index 4cacd2c1..b6bb21d8 100644 --- a/world/map/npc/027-2/_import.txt +++ b/world/map/npc/027-2/_import.txt @@ -5,20 +5,6 @@ npc: npc/027-2/_mobs.txt npc: npc/027-2/_nodes.txt npc: npc/027-2/_warps.txt npc: npc/027-2/alacrius.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/mapflags.txt -npc: npc/027-2/testnpcs.txt npc: npc/027-2/thurston.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 index 1c5a6d51..b0a3cb57 100644 --- a/world/map/npc/027-2/_mobs.txt +++ b/world/map/npc/027-2/_mobs.txt @@ -1,13 +1,7 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Graveyard Indoor mobs -027-2,81,41,11,9|monster|DrunkenSkeleton|1077,1,100000ms,30000ms -027-2,102,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms -027-2,110,26,11,11|monster|TipsySkeleton|1078,1,100000ms,30000ms -027-2,104,28,11,9|monster|DrunkenSkeleton|1077,1,100000ms,30000ms -027-2,89,34,11,9|monster|DrunkenLadySkeleton|1079,1,100000ms,30000ms -027-2,116,26,11,9|monster|DrunkenLadySkeleton|1079,1,100000ms,30000ms -027-2,112,88,28,39|monster|VampireBat|1066,15,100000ms,30000ms -027-2,102,99,9,19|monster|DrunkenSkeleton|1077,1,100000ms,30000ms -027-2,102,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms -027-2,89,34,11,9|monster|TipsySkeleton|1078,1,100000ms,30000ms +027-2,25,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms +027-2,35,88,28,39|monster|VampireBat|1066,15,100000ms,30000ms +027-2,25,99,9,19|monster|DrunkenSkeleton|1077,1,100000ms,30000ms +027-2,25,99,9,19|monster|TipsySkeleton|1078,1,100000ms,30000ms diff --git a/world/map/npc/027-2/_nodes.txt b/world/map/npc/027-2/_nodes.txt index 78bbb5b6..cbf43fea 100644 --- a/world/map/npc/027-2/_nodes.txt +++ b/world/map/npc/027-2/_nodes.txt @@ -1,16 +1,4 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Graveyard Indoor nodes -027-2,0,0,0|script|Node027-2|32767 -{ - end; -OnInit: - setarray .m$, "_N-Alchemy", "027-2"; - setarray .x1, "_N-Alchemy", 51; - setarray .y1, "_N-Alchemy", 100; - setarray .x2, "_N-Alchemy", 0; - setarray .y2, "_N-Alchemy", 0; - setarray .id, "_N-Alchemy", 0; - donpcevent "_N-Alchemy::OnMaybeStart"; - destroy; -} +// (no nodes) diff --git a/world/map/npc/027-2/_warps.txt b/world/map/npc/027-2/_warps.txt index f0ffbfc3..47aaef8b 100644 --- a/world/map/npc/027-2/_warps.txt +++ b/world/map/npc/027-2/_warps.txt @@ -1,9 +1,6 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Graveyard Indoor warps -027-2,26,34|warp|-1,-1,027-1,88,85 -027-2,128,35|warp|0,-1,027-2,75,93 -027-2,76,95|warp|0,-1,027-2,128,36 -027-2,106,46|warp|0,-1,027-1,68,89 -027-2,113,111|warp|4,-1,027-1,28,68 -027-2,113,78|warp|4,-1,027-3,25,68 +027-2,36,111|warp|4,-1,027-1,28,68 +027-2,36,78|warp|4,-1,027-3,25,68 +027-2,46,34|warp|-1,-1,027-1,88,85 diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt index d8025a2c..d05f9b54 100644 --- a/world/map/npc/027-2/alacrius.txt +++ b/world/map/npc/027-2/alacrius.txt @@ -1,7 +1,7 @@ // Author: wushin //Starts Crypt Quest -027-2,122,105,0|script|Alacrius|313 +027-2,45,105,0|script|Alacrius|313 { mes "[Alacrius]"; mes "\"Hello, I'm Alacrius. \""; diff --git a/world/map/npc/027-2/barman.txt b/world/map/npc/027-2/barman.txt deleted file mode 100644 index 6e6b2294..00000000 --- a/world/map/npc/027-2/barman.txt +++ /dev/null @@ -1,10 +0,0 @@ -027-2,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'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/027-2/caretaker.txt b/world/map/npc/027-2/caretaker.txt index 58d77489..d5e364d4 100644 --- a/world/map/npc/027-2/caretaker.txt +++ b/world/map/npc/027-2/caretaker.txt @@ -2,7 +2,7 @@ // TODO: add dialog/code for giving more letters // Airlia supports receiving an infinate number of letters -027-2,24,25,0|script|Caretaker|159 +027-2,44,25,0|script|Caretaker|159 { set @halloween_npc_id, $@halloween_npc_caretaker; callfunc "TrickOrTreat"; @@ -109,7 +109,7 @@ L_Give_New_Letter_Real: L_Close: close; } -027-2,28,22,0|script|Joan|409 +027-2,48,22,0|script|Joan|409 { mes "[Joan]"; mes "..."; diff --git a/world/map/npc/027-2/cerhan.txt b/world/map/npc/027-2/cerhan.txt deleted file mode 100644 index d2ca3e65..00000000 --- a/world/map/npc/027-2/cerhan.txt +++ /dev/null @@ -1,40 +0,0 @@ -// Author: Jenalya - -027-2,70,77,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/027-2/crying_child.txt b/world/map/npc/027-2/crying_child.txt deleted file mode 100644 index 0a7b2396..00000000 --- a/world/map/npc/027-2/crying_child.txt +++ /dev/null @@ -1,219 +0,0 @@ -// 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) - -027-2,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); - - 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/027-2/diary.txt b/world/map/npc/027-2/diary.txt deleted file mode 100644 index e660e992..00000000 --- a/world/map/npc/027-2/diary.txt +++ /dev/null @@ -1,51 +0,0 @@ -// Author: Jenalya - -027-2,26,97,0|script|#Diary|400 -{ - 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/027-2/door.txt b/world/map/npc/027-2/door.txt deleted file mode 100644 index 8452d118..00000000 --- a/world/map/npc/027-2/door.txt +++ /dev/null @@ -1,23 +0,0 @@ -027-2,25,100,0|script|#DoorIn|45,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", 27, 99; - set @reid, 0; - end; -} - -// TODO replace this with a plain warp -027-2,26,99,0|script|#DoorOut-gyinn|45,1,1 -{ - warp "027-2", 23, 98; - end; -} diff --git a/world/map/npc/027-2/evil_guard.txt b/world/map/npc/027-2/evil_guard.txt deleted file mode 100644 index d035295c..00000000 --- a/world/map/npc/027-2/evil_guard.txt +++ /dev/null @@ -1,28 +0,0 @@ -027-2,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 "\"Heed my 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 remains undisturbed.\""; - close; -} - -027-2,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 then the guard bursts out laughing."; - mes ""; - mes "[Evil Guard]"; - mes "\"Just kidding! Can you imagine Golbenez's 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 deleted file mode 100644 index 48e8f828..00000000 --- a/world/map/npc/027-2/golbenez.txt +++ /dev/null @@ -1,625 +0,0 @@ -// 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 - -027-2,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, 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/027-2/gy_inn_shops.txt b/world/map/npc/027-2/gy_inn_shops.txt deleted file mode 100644 index 20f03d3a..00000000 --- a/world/map/npc/027-2/gy_inn_shops.txt +++ /dev/null @@ -1,46 +0,0 @@ -// chef: function, -// barmaid: function, -// shopkeeper: multiples and function, -// magic undead shop: function, -// chief barman: function, -// receptionist: function, -// banker: function - - -027-2,75,22,0|shop|Chef#graveyard|300,ZombieNachos:*1,LadyFingers:*1,JellAhh:*1,Snapple:*1 -027-2,90,36,0|shop|Estrilda|301,BeetleJuice:*1,GutBuster:*1,BloodWine:*1 -027-2,93,22,0|shop|Umfrey|302,BoneArrows:*1,ShockSweet:*1 -027-2,56,99,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 - -027-2,106,22,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 -027-2,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"; - close; -} - -// Bank and Storage -027-2,88,22,0|script|J.P. Morbid|321 -{ - 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 deleted file mode 100644 index fafa17ef..00000000 --- a/world/map/npc/027-2/headless_man.txt +++ /dev/null @@ -1,209 +0,0 @@ -// 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,22,76,0|script|Thurstan|318 -{ - 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. 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_Close; - -L_greet: - mes "[Headless Man]"; - mes "\"Greetings! Do you have any duck tape?\""; - goto L_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_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; - goto L_Close; - -L_Quest_no: - mes "[Thurstan]"; - mes "\"Very well. Just don't come looking to me when your own head falls off!\""; - goto L_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_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; - goto L_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.\""; - goto L_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.\""; - goto L_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; - goto L_Close; - -L_Full_Inv: - mes "[Thurstan]"; - mes "\"I'd like to give you something for your efforts, but you're carrying too much stuff.\""; - goto L_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.\""; - goto L_Close; - -L_Close: - - set @Graveyard_Inn_MASK, 0; - set @Graveyard_Inn_SHIFT, 0; - set @state, 0; - set @Wisp_Powder, 0; - set @Polt_Powder, 0; - set @Spec_Powder, 0; - set @Iron_Pot, 0; - set @Conc_Pot, 0; - set @Red_Dye, 0; - set @Yellow_Dye, 0; - set @LB_Dye, 0; - set @Glue_Exp, 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/027-2/husband.txt b/world/map/npc/027-2/husband.txt deleted file mode 100644 index 8897e697..00000000 --- a/world/map/npc/027-2/husband.txt +++ /dev/null @@ -1,355 +0,0 @@ -// 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,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 @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 @ICE_CUBE_AMOUNT, 100; - set @ICE_CUBE_EXP, 75000; - set @BONE_AMOUNT, 100; - set @SKULL_AMOUNT, 75; - set @BONE_EXP, 100000; - set @RUBY_AMOUNT, 25; // 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 < @minLevel) - goto L_Close; - next; - menu - "I'd like to know why all the people in here are dead.",L_Next, - "Are you feeling well? You look very pale... In fact, deathly pale.",L_Next, - "Thank you, but I'm fine.", L_Close; - -L_Next: - 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?", L_Continue; - -L_Continue: - 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; - - goto L_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.\""; - goto L_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?",L_More; - -L_More: - 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!\""; - goto L_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; - goto L_Brought_Bones; - -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.",L_Welcome; - goto L_Welcome; - -L_Welcome: - mes "[Hamond]"; - mes "\"Please make yourself at home.\""; - goto L_Close; - -L_Savaric: - mes "Hamond's face turns into an ugly grimace."; - mes "[Hamond]"; - mes "\"That cheeky egomaniac - \""; - next; - - if (@kidstate < 7) - goto L_Problem; - 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; - goto L_Jealousy; - -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; - goto L_Close; - -L_Problem: - mes "[Hamond]"; - mes "\"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...\""; - goto L_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; - goto L_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.",L_FoundOut; - -L_FoundOut: - 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 Golbenez 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.",L_HamondFate, - "You got very upset, don't blame yourself",L_HamondFate, - "You're right. You were very violent. How could you do that if you love her?",L_HamondFate; - -L_HamondFate: - 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; - goto L_Close; - -L_Waiting: - mes "[Hamond]"; - mes "\"Did you bring Reid the " + @RUBY_AMOUNT + " Rubies?\""; - goto L_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; - goto L_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.\""; - goto L_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.\""; - goto L_Close; - -L_Not_Enough_Cubes: - mes "[Hamond]"; - mes "\"Yes, they look good! But I think I need more of them. Maybe " + @ICE_CUBE_AMOUNT + "?\""; - goto L_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.\""; - 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_Kid_MASK, 0; - set @Graveyard_Inn_Kid_SHIFT, 0; - set @Graveyard_Inn_Golbenez_MASK, 0; - set @Graveyard_Inn_Golbenez_SHIFT, 0; - set @golbanez, 0; - set @kidstate, 0; - set @minLevel, 0; - set @ICE_CUBE_AMOUNT, 0; - set @ICE_CUBE_EXP, 0; - set @BONE_AMOUNT, 0; - set @SKULL_AMOUNT, 0; - set @BONE_EXP, 0; - set @RUBY_AMOUNT, 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: - 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 deleted file mode 100644 index ac4e867a..00000000 --- a/world/map/npc/027-2/innkeeper.txt +++ /dev/null @@ -1,472 +0,0 @@ -// 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,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 @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/027-2/lover.txt b/world/map/npc/027-2/lover.txt deleted file mode 100644 index d1ab2a56..00000000 --- a/world/map/npc/027-2/lover.txt +++ /dev/null @@ -1,318 +0,0 @@ -// 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,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 @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/027-2/mapflags.txt b/world/map/npc/027-2/mapflags.txt index 09b5d28a..6f419bf4 100644 --- a/world/map/npc/027-2/mapflags.txt +++ b/world/map/npc/027-2/mapflags.txt @@ -1 +1,2 @@ -027-2|mapflag|resave|025-1,33,50 +027-2|mapflag|resave|026-1,28,35 +026-2|mapflag|town diff --git a/world/map/npc/027-2/testnpcs.txt b/world/map/npc/027-2/testnpcs.txt deleted file mode 100644 index 0d79ef88..00000000 --- a/world/map/npc/027-2/testnpcs.txt +++ /dev/null @@ -1,63 +0,0 @@ -//several NPCs in the Reid's Inn - -027-2,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,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,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...\""; - 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; -} - -027-2,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/thurston.txt b/world/map/npc/027-2/thurston.txt index ce72104c..a1865797 100644 --- a/world/map/npc/027-2/thurston.txt +++ b/world/map/npc/027-2/thurston.txt @@ -1,6 +1,6 @@ // Vampire Bat Wings Daily -027-2,100,105,0|script|Thurston|302 +027-2,23,105,0|script|Thurston|302 { set @dq_level, 60; set @dq_cost, 45; diff --git a/world/map/npc/027-2/werewolf.txt b/world/map/npc/027-2/werewolf.txt deleted file mode 100644 index 1ecb403c..00000000 --- a/world/map/npc/027-2/werewolf.txt +++ /dev/null @@ -1,179 +0,0 @@ -// author: Jenalya - -027-2,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; - 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; -} diff --git a/world/map/npc/027-3/_warps.txt b/world/map/npc/027-3/_warps.txt index 0cfb9f91..d2f23685 100644 --- a/world/map/npc/027-3/_warps.txt +++ b/world/map/npc/027-3/_warps.txt @@ -1,5 +1,5 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Crypt Basement warps -027-3,26,67|warp|2,-1,027-2,112,77 +027-3,26,67|warp|2,-1,027-2,36,77 027-3,126,98|warp|1,-1,027-4,125,18 diff --git a/world/map/npc/055-1/_nodes.txt b/world/map/npc/055-1/_nodes.txt index e6da33ea..4abefb02 100644 --- a/world/map/npc/055-1/_nodes.txt +++ b/world/map/npc/055-1/_nodes.txt @@ -6,10 +6,10 @@ end; OnInit: setarray .m$, "_N-Pumpkin", "055-1", "055-1", "055-1"; - setarray .x1, "_N-Pumpkin", 129, 133, 41; - setarray .y1, "_N-Pumpkin", 23, 27, 22; - setarray .x2, "_N-Pumpkin", 135, 139, 47; - setarray .y2, "_N-Pumpkin", 26, 33, 30; + setarray .x1, "_N-Pumpkin", 129, 41, 133; + setarray .y1, "_N-Pumpkin", 23, 22, 27; + setarray .x2, "_N-Pumpkin", 135, 47, 139; + setarray .y2, "_N-Pumpkin", 26, 30, 33; setarray .id, "_N-Pumpkin", 0, 0, 0; donpcevent "_N-Pumpkin::OnMaybeStart"; destroy; diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt index 3d4c89e2..66c59de1 100644 --- a/world/map/npc/_import.txt +++ b/world/map/npc/_import.txt @@ -63,6 +63,7 @@ import: npc/025-1/_import.txt import: npc/025-3/_import.txt import: npc/025-4/_import.txt import: npc/026-1/_import.txt +import: npc/026-2/_import.txt import: npc/027-1/_import.txt import: npc/027-2/_import.txt import: npc/027-3/_import.txt diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt index aec700d0..c1b7f3fd 100644 --- a/world/map/npc/functions/travelers.txt +++ b/world/map/npc/functions/travelers.txt @@ -121,9 +121,9 @@ L_TravelPlayer: L_TravelGraveyard: set @NextLocationBit, $@graveyard_bit; set @NextLocationCost, (@Cost * $@graveyard_cost); - set @NextLocationMap$, "027-1"; - set @NextLocationX, 84; - set @NextLocationY, 86; + set @NextLocationMap$, "026-1"; + set @NextLocationX, 49; + set @NextLocationY, 45; goto L_TravelChecks; L_TravelMagicHouse: -- cgit v1.2.3-70-g09d2