summaryrefslogtreecommitdiff
path: root/world/map/npc/030-2
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/030-2')
-rw-r--r--world/map/npc/030-2/_import.txt13
-rw-r--r--world/map/npc/030-2/_warps.txt1
-rw-r--r--world/map/npc/030-2/avalia.txt221
-rw-r--r--world/map/npc/030-2/basic_npcs.txt81
-rw-r--r--world/map/npc/030-2/bedding_helper.txt102
-rw-r--r--world/map/npc/030-2/chief_helper.txt90
-rw-r--r--world/map/npc/030-2/eljas.txt212
-rw-r--r--world/map/npc/030-2/empty_boxes_helper.txt68
-rw-r--r--world/map/npc/030-2/gaurds.txt33
-rw-r--r--world/map/npc/030-2/glitter_helper.txt99
-rw-r--r--world/map/npc/030-2/present_helper.txt87
-rw-r--r--world/map/npc/030-2/roasted_acrons_helper.txt82
-rw-r--r--world/map/npc/030-2/shipping_helper.txt119
-rw-r--r--world/map/npc/030-2/storage_helper.txt104
-rw-r--r--world/map/npc/030-2/wrapping_paper_helper.txt142
15 files changed, 1454 insertions, 0 deletions
diff --git a/world/map/npc/030-2/_import.txt b/world/map/npc/030-2/_import.txt
index 9c5c854d..e2ca2bfa 100644
--- a/world/map/npc/030-2/_import.txt
+++ b/world/map/npc/030-2/_import.txt
@@ -3,3 +3,16 @@
map: 030-2.gat
npc: npc/030-2/_mobs.txt
npc: npc/030-2/_warps.txt
+npc: npc/030-2/avalia.txt
+npc: npc/030-2/basic_npcs.txt
+npc: npc/030-2/bedding_helper.txt
+npc: npc/030-2/chief_helper.txt
+npc: npc/030-2/eljas.txt
+npc: npc/030-2/empty_boxes_helper.txt
+npc: npc/030-2/gaurds.txt
+npc: npc/030-2/glitter_helper.txt
+npc: npc/030-2/present_helper.txt
+npc: npc/030-2/roasted_acrons_helper.txt
+npc: npc/030-2/shipping_helper.txt
+npc: npc/030-2/storage_helper.txt
+npc: npc/030-2/wrapping_paper_helper.txt
diff --git a/world/map/npc/030-2/_warps.txt b/world/map/npc/030-2/_warps.txt
index edcb7e1b..98dd5ce0 100644
--- a/world/map/npc/030-2/_warps.txt
+++ b/world/map/npc/030-2/_warps.txt
@@ -15,3 +15,4 @@
030-2.gat,94,73|warp|To Third Floor|0,-1,030-2.gat,41,104
030-2.gat,102,73|warp|To Fifth Floor|0,-1,030-2.gat,127,104
030-2.gat,127,105|warp|To Fourth Floor|0,-1,030-2.gat,102,74
+030-2.gat,78,87|warp|To Private Room|-1,-1,030-2.gat,194,67
diff --git a/world/map/npc/030-2/avalia.txt b/world/map/npc/030-2/avalia.txt
new file mode 100644
index 00000000..1cb58e37
--- /dev/null
+++ b/world/map/npc/030-2/avalia.txt
@@ -0,0 +1,221 @@
+// Annual Xmas
+// Author: cinderweb, wushin
+
+030-2.gat,198,61,0|script|Avalia|356,
+{
+ callfunc "XmasStates";
+
+ if(($@xmas_time) && !(@xmas_side))
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Avalia]";
+ mes "\"What are you doing in here? Get out!\"";
+ warp "030-2.gat",88,80;
+ close;
+
+L_XmasMain:
+ if(@xmas_reward_done_state) goto L_Thanks;
+ if(@xmas_reward1_done_state) goto L_Thanks;
+ if(@xmas_reward_start_state) goto L_Reward;
+ if(@xmas_reward2_done_state) goto L_Reward;
+ if(@xmas_boss_door_state) goto L_Quick;
+ if(@xmas_reagent_done_state) goto L_PowerReagents;
+ if(@xmas_reagent_start_state) goto L_PowerReagents;
+ if(@xmas_helper_done_state) goto L_HelperQuest;
+ if(@xmas_helper_start_state) goto L_HelperQuest;
+ if(@xmas_list_deliver) goto L_ListReturn;
+ goto L_OffSeason;
+
+L_ListReturn:
+ mes "[Avalia]";
+ mes "\"This had better be important, I have got enough to worry about.\"";
+ menu
+ "Sorry for interrupting, but I have been sent up here with the List", -;
+ mes "She stares blankly at you for a bit...";
+ next;
+ mes "\"YAHOO!!\"";
+ next;
+ mes "\"One problem down, only a few more to go.\"";
+ next;
+ mes "\"Since you have already been so helpful, I was wondering if you could continue to do so?\"";
+ mes "\"I do have the power to reward you handsomely.\"";
+ next;
+ mes "\"You see this nutcracker here beside me? He is different from the rest. He had a will of his own. It started shortly after we installed the new power core.\"";
+ next;
+ mes "\"At first, it was just magical research that had me keep him close to me. As time wore on, mine and his interactions became more intimate. I was hoping to get my research done before the Holidays.\"";
+ next;
+ mes "\"I wanted to show Santa and ask to if he knew how to help make it permanent, but Someone didn't approve. Took away our central spell power core. Now all the nutcrackers are back to being mindless automatons. Now the Christmas Sages must use magic to animate them.\"";
+ next;
+ mes "\"Please you must help me find a way to restore our power core before Christmas. I want to show Santa Millis, so he can give him life permanently for me.\"";
+ mes "\"First I need time to do some more reaserch. Which means I need to spend less time helping with the holidays. Can you check with the helpers and make sure everything is going smoothly.\"";
+ menu
+ "Sure.", L_Start;
+
+L_Start:
+ mes "\"Ok, go check in with Chief Warrick. You might have to persist a bit but he will let you help.\"";
+ mes "\"Once you have completed this task come back and talk to me. As he reports to me.\"";
+ set @xmas_state, $@xmas_helpers_start_state;
+ callfunc "XmasSetState";
+ goto L_Close;
+
+L_HelperQuest:
+ mes "[Avalia]";
+ mes "\"Welcome Back!\"";
+ mes "\"So how are the Holiday Preparations coming along?\"";
+ menu
+ "It's a mess but they got things handle.", L_Continue,
+ "I'd better get back to helping.", L_Close;
+
+L_Continue:
+ callfunc "XmasHelperPoints";
+ callfunc "XmasStates";
+ if(@xmas_helper_done_state)
+ goto L_ManaBattery;
+ goto L_NotHelpEnough;
+
+L_NotHelpEnough:
+ mes "\"Hrmm... I'm still getting bugged. You better go back there and see whats going on.\"";
+ goto L_Close;
+
+L_ManaBattery:
+ mes "\"Now that we are caught up on the holidays and I've finished my research, I know what is needed to make the spell permanent.\"";
+ next;
+ callfunc "ListReagents";
+ mes "\"When you have gathered the required materials please come back and see me.\"";
+ set @xmas_state, $@xmas_reagents_start;
+ callfunc "XmasSetState";
+ callfunc "XmasXpReward";
+ goto L_Close;
+
+L_IngredientList:
+ callfunc "ListReagents";
+ mes "\"When you have gathered the required materials please come back and see me.\"";
+ goto L_Close;
+
+L_PowerReagents:
+ mes "[Avalia]";
+ mes "\"Welcome Back!\"";
+ mes "\"Have you gotten the reagents?\"";
+ menu
+ "Yes.", L_CheckReagents,
+ "What were they again?", L_IngredientList,
+ "No.", L_NotEnough;
+
+L_CheckReagents:
+ callfunc "CheckReagents";
+ callfunc "XmasStates";
+ if(!(@xmas_reagent_done_state))
+ goto L_NotEnough;
+ callfunc "DeleteReagents";
+ mes "\"Huzzah!, you have all the required components!\"";
+ mes "\"Now I can create a ManaBattery to power the Nutcrackers from a central location.\"";
+ mes "\"Our sages will now be free to perform other tasks. Oh boy the holidays are going to get easy again!\"";
+ mes "\"Stand back, this spell could backfire.\"";
+ next;
+ mes "You watch as she puts equal amounts of emerald powder into each of the empty bottles.";
+ mes "She methodically crushes up the shock sweet and speads it amongst the empty bottles.";
+ mes "She posisitions the four bottles in a stand so all the openings are mostly facing each other.";
+ mes "She Begins to chant.";
+ next;
+ mes "[Avalia]";
+ mes "O";
+ next;
+ mes "wat";
+ next;
+ mes "goo";
+ next;
+ mes "siam";
+ next;
+ mes "The bottles begin to pulse with mana.";
+ mes "She continues to chant";
+ next;
+ mes "[Avalia]";
+ mes "Aye";
+ next;
+ mes "Am";
+ next;
+ mes "Knot";
+ next;
+ mes "Phunee";
+ next;
+ mes "Mana surges to life in the bottles making a peel of thunder.";
+ next;
+ mes "[Avalia]";
+ mes "\"Phew! That takes alot out of a person.\"";
+ mes "\"I'm in no condition to go anywhere.\"";
+ mes "\"Take the Mana Battery and install it in the warehouse.\"";
+ mes "\"It's found behind Chief Warrick\"";
+ set @xmas_state, $@xmas_boss_door_open_state;
+ callfunc "XmasSetState";
+ callfunc "XmasXpReward";
+ goto L_Close;
+
+L_NotEnough:
+ mes "\"I need all the reagents before Santa visits. Come back and see me when you have them.\"";
+ goto L_Close;
+
+L_Quick:
+ mes "[Avalia]";
+ mes "\"What are you still doing here?\"";
+ mes "\"Quickly, to the warehouse.\"";
+ goto L_Close;
+
+L_Reward:
+ mes "[Avalia]";
+ mes "\"Thanks for all the help.\"";
+ mes "\"Take this as a token of my gratitude.\"";
+ if @xmas_reward2_done_state
+ set @xmas_state, $@xmas_reward_done;
+ if @xmas_reward_start_state
+ set @xmas_state, $@xmas_reward1_done;
+ callfunc "XmasSetState";
+ callfunc "XmasMainXpBpReward";
+ goto L_Close;
+
+L_Thanks:
+ mes "[Avalia]";
+ mes "\"Please feel free to continue to help us while we prepare your reward.\"";
+ goto L_Close;
+
+L_ThankYou:
+ mes "\"We can't thank you enough for restoring the nutcrackers humanity.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+030-2.gat,190,64,0|script|Milis|330,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Milis]";
+ mes "\"What are you doing in here, get out!\"";
+ warp "030-2.gat",88,80;
+ close;
+
+L_XmasMain:
+ if(@xmas_reward_start_state)
+ goto L_Reward;
+ goto L_NoResponse;
+
+L_Reward:
+ mes "[Milis]";
+ mes "\"Thanks for you help! I a REAL MAN, once again.\"";
+ goto L_Close;
+
+L_NoResponse:
+ mes "[Milis]";
+ mes "...";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/basic_npcs.txt b/world/map/npc/030-2/basic_npcs.txt
new file mode 100644
index 00000000..f3a25f6b
--- /dev/null
+++ b/world/map/npc/030-2/basic_npcs.txt
@@ -0,0 +1,81 @@
+// Added for flavor
+// author: Jenalya, wushin, Chayenne
+
+// In the office
+
+030-2.gat,37,81,0|script|Oswal|328,
+{
+ mes "[Oswal]";
+ mes "\"Welcome. I hope you enjoy your visit in Santa's residence. You already saw the workshop where the Christmas presents are crafted, right?\"";
+ next;
+ mes "\"Well, here you are in the office. We're taking care of various administrative tasks. Some are related to Christmas, but we also need to keep the everyday business running.";
+ mes "Santa, as one of the most powerful Sages, has a lot of issues to pay attention to.\"";
+ close;
+}
+
+030-2.gat,37,85,0|script|Taito|328,
+{
+ mes "[Taito]";
+ mes "\"Hello. I'm sorry, but I'm very busy at the moment and want to concentrate. If you have any questions, ask one of the other helpers.\"";
+ close;
+}
+
+030-2.gat,31,77,0|script|Rikhard|329,
+{
+ mes "[Rikhard]";
+ mes "\"I'm really glad that this year's Christmas preparations are going well. You know, last year nearly everything went wrong, so we all had to work really hard on that, and the everyday issues had to be neglected.\"";
+ next;
+ mes "\"But there are very important topics we have to take care on as Santa's helpers. The Sages have an important role in the politics of Kaizei.\"";
+ next;
+ mes "\"As an example, currently I'm working on analyzing a trade regulation proposal from Tulimshar's Wizard Council. I can't get into the details about this, obviously. But, let me tell you, those Tulimshar people try to get everything under their control.\"";
+ next;
+ mes "\"It's part of our work to maintain Kaizei's independency. In my opinion the Sages should be much more reluctant about this anyway. But well, I'm only a mere helper, this isn't up to me. I can only do my best to deliver an analysis as accurate as possible.\"";
+ next;
+ mes "\"Which is why I should go back to work now.\"";
+ close;
+}
+
+030-2.gat,31,85,0|script|Akseli|329,
+{
+ mes "[Akseli]";
+ mes "\"Ah, a visitor! Do you enjoy your time in Santa's residence?\"";
+ menu
+ "Yes, it's really interesting.", L_Interesting,
+ "It's ok.", L_Rage,
+ "I'm confused, it's much bigger than from the outside.", -;
+ mes "[Akseli]";
+ mes "\"Ah, yes, that's a magic technique almost all of the Sages use. The house is located in a shifted dimension.\"";
+ goto L_Close;
+
+L_Interesting:
+ mes "[Akseli]";
+ mes "\"Good to hear that! Go look around, talk with the other guys and girls, we have an open house policy all year.\"";
+ goto L_Close;
+
+L_Rage:
+ mes "[Akseli]";
+ mes "\"tsss... you young people can't get no satisfaction eh?\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+// In the workshop
+
+030-2.gat,78,34,0|script|Aaron|328,
+{
+ mes "[Aaron]";
+ mes "\"Welcome to Santa's famous Christmas workshop. Feel free to have a look around and talk to the craftsmen.\"";
+ next;
+ mes "\"You have to know, Santa is a great promoter for skilled craftsmen. He's always looking out for talented persons who can join our team and get an excellent apprenticeship here.\"";
+ close;
+}
+
+030-2.gat,154,33,0|script|Iivo|329,
+{
+ mes "You see a helper cutting some leather pieces. He looks very focused on his work. Then he notices you.";
+ mes "[Iivo]";
+ mes "\"Hu? Oh, hello. Feel free to watch.\"";
+ close;
+}
diff --git a/world/map/npc/030-2/bedding_helper.txt b/world/map/npc/030-2/bedding_helper.txt
new file mode 100644
index 00000000..62fa6b34
--- /dev/null
+++ b/world/map/npc/030-2/bedding_helper.txt
@@ -0,0 +1,102 @@
+// Annual Xmas
+// author: Jenalya, wushin, Chayenne
+// Osmo asks for some White Fur which is used for bedding some presents in the boxes
+// can be sabotaged by given Cloth instead
+
+030-2.gat,37,77,0|script|Osmo|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Osmo]";
+ mes "\"It's nice to relax and not have to worry about Xmas.\"";
+ mes "\"All that rush to gather those furs kills me every year.\"";
+ goto L_Close;
+
+L_XmasMain:
+ if (XMASTIME & $@xmas_helper_bit_bed_ends) goto L_Done;
+ if (XMASTIME & $@xmas_helper_bit_bed_starts) goto L_Bedding;
+ if (@xmas_helper_bit) goto L_Helping;
+
+ mes "[Osmo]";
+ mes "\"What? Uh, excuse me, I have some work to do.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "[Osmo]";
+ mes "\"You came in at just the right moment. I was informed that our bedding material for fragile presents is nearly depleted.";
+ mes "Could you bring me " + $@xmas_bedding_amount + " White Furs?\"";
+ next;
+ mes "[Osmo]";
+ mes "\"Take care that it's real White Fur.";
+ mes "Other materials tend to go out of place in the present box, leaving the fragile content unprotected from any pushes.\"";
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_starts;
+ goto L_Close;
+
+L_Bedding:
+ mes "[Osmo]";
+ mes "\"Ah, you're back. Do you have the " + $@xmas_bedding_amount + " White Fur needed as bedding for fragile presents?\"";
+ if ((countitem("WhiteFur") >= $@xmas_bedding_amount) && (countitem("CottonCloth") >= $@xmas_bedding_amount))
+ menu
+ "Yeah, here it is. (Give the White Fur.)",L_Fur,
+ "Sure, here it is. (Give the Cotton Cloth.)",L_Cloth,
+ "No, I'm still working on that.",L_Close;
+ if (countitem("WhiteFur") >= $@xmas_bedding_amount)
+ menu
+ "Yeah, here it is. (Give the White Fur.)",L_Fur,
+ "No, I'm still working on that.",L_Close;
+ if (countitem("CottonCloth") >= $@xmas_bedding_amount)
+ menu
+ "Sure, here it is. (Give the Cotton Cloth.)",L_Cloth,
+ "No, I'm still working on that.",L_Close;
+ if ((countitem("WhiteFur") < $@xmas_bedding_amount) && (countitem("CottonCloth") < $@xmas_bedding_amount))
+ menu
+ "No.", L_Close;
+ goto L_Close;
+
+L_Fur:
+ if (countitem("WhiteFur") < $@xmas_bedding_amount)
+ goto L_NoItems;
+ delitem "WhiteFur", $@xmas_bedding_amount;
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_ends;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNice";
+ callfunc "XmasXpReward";
+ mes "[Osmo]";
+ mes "\"Wonderful! Thanks for your effort.\"";
+ goto L_Close;
+
+L_Cloth:
+ if (countitem("CottonCloth") < $@xmas_bedding_amount)
+ goto L_NoItems;
+ delitem "CottonCloth", $@xmas_bedding_amount;
+ set XMASTIME, XMASTIME &~ $@xmas_helper_bit_bed_starts;
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_bed_ends;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNaughty";
+ callfunc "XmasXpReward";
+ mes "He doesn't notice that you're giving him Cotton Cloth.";
+ mes "[Osmo]";
+ mes "\"Wonderful! Thanks for your effort.\"";
+ goto L_Close;
+
+L_Done:
+ mes "[Osmo]";
+ if (!(@xmas_helper_bedding))
+ mes "\"The Fur you brought me isn't working very well.\"";
+ if (@xmas_helper_bedding)
+ mes "\"Thanks for helping out with the bedding material.\"";
+ goto L_Close;
+
+L_NoItems:
+ mes "[Osmo]";
+ mes "\"Where do you have it? Is this a joke?\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/chief_helper.txt b/world/map/npc/030-2/chief_helper.txt
new file mode 100644
index 00000000..3cecfd6a
--- /dev/null
+++ b/world/map/npc/030-2/chief_helper.txt
@@ -0,0 +1,90 @@
+// Annual Xmas
+// author: Jenalya, wushin
+// Warrick is the Chief of Santa's helpers
+
+030-2.gat,127,42,0|script|Chief Warrick|329,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Chief Warrick]";
+ mes "\"Things run a lot smoother in the offseason. Why don't you check back when it gets closer to the holiday?\"";
+ goto L_Close;
+
+L_XmasMain:
+ if (@xmas_helper_bit)
+ goto L_HelpStatus;
+ if (@xmas_helper_start_state)
+ goto L_Helping;
+ if (@xmas_list_deliver)
+ goto L_Avalia;
+ goto L_NoHelp;
+
+L_Helping:
+ mes "[Chief Warrick]";
+ mes "\"Welcome to the home of Santa! My name is Warrick, I'm the chief of Santa's helpers.";
+ mes "As you certainly know Christmas is near. Therefore we're very very busy.\"";
+ next;
+ mes "\"For this reason I have to ask you to leave and come back some at some more convenient time.\"";
+ menu
+ "Availa Sent me. She said you should have me help out.",-;
+ mes "Warrick sighs.";
+ next;
+ mes "[Chief Warrick]";
+ mes "\"Everything is going wrong, we're missing ingredients for the Christmas candy and material for the toys.";
+ mes "The lists got lost, we are running low on supplies, everything is in utter confusion.";
+ mes "And to make matters worse some of the presents are missing!\"";
+ next;
+ mes "\"Oh, please excuse me. I didn't mean to moan.";
+ mes "However, as you can see we have to deal with some serious problems here.";
+ mes "So I'd appreciate if you could just leave and not interfere.\"";
+ menu
+ "But I can help!",-;
+ mes "He hesitates.";
+ next;
+ mes "[Chief Warrick]";
+ mes "\"I'm not sure...\"";
+ menu
+ "Really, I can do a lot of things.",-;
+ mes "[Chief Warrick]";
+ mes "\"Well, alright. I suppose it can't get worse than it already is.";
+ mes "Go to the helpers all over the house and ask them what is needed.";
+ mes "This will show you're hired as a co-helper.\"";
+ mes "He stabs your chest with his finger and leaves a blinking mark.";
+ set XMASTIME, XMASTIME | $@xmas_helper_bit;
+ goto L_Close;
+
+L_HelpStatus:
+ mes "[Chief Warrick]";
+ if (@xmas_karma)
+ mes "\"It seems we're catching up with the tasks to do, thanks to your help.\"";
+ if (!(@xmas_karma))
+ mes "\"I hope you're doing well.\"";
+ if (@xmas_all_helpers)
+ mes "\"The helpers are happy for the extra help.\"";
+ if (!(@xmas_all_helpers))
+ mes "\"My workers are so stressed.\"";
+ if (@xmas_all_lists)
+ mes "\"I think all the children will be happy this year.\"";
+ if (!(@xmas_all_lists))
+ mes "\"I wonder how this season will turn out.\"";
+ goto L_Close;
+
+L_Avalia:
+ mes "\"Wow, this can't be. The Missing Lists. You should go see Avalia right away. She can be found on the other side of the work shop. To the Room to the West of the Nutcracker.\"";
+ goto L_Close;
+
+L_NoHelp:
+ mes "[Chief Warrick]";
+ mes "\"Hello young one. Welcome to Santa's house.\"";
+ mes "\"Have a look around and enjoy your visit, but please don't interrupt the busy helpers.\"";
+ mes "He smiles at you.";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/eljas.txt b/world/map/npc/030-2/eljas.txt
new file mode 100644
index 00000000..beaefaad
--- /dev/null
+++ b/world/map/npc/030-2/eljas.txt
@@ -0,0 +1,212 @@
+// Annual Xmas and Year round info
+// Author: Jenalya, wushin
+
+030-2.gat,87,41,0|script|Eljas|328,5,1,
+{
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+
+L_Start:
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_XmasMain:
+ if (@xmas_state > $@xmas_list_deliver_state)
+ goto L_OffSeason;
+ if (@xmas_list_deliver)
+ goto L_SeeChief;
+ if (@xmas_list_complete)
+ goto L_HaveList1;
+ if (@xmas_list_both)
+ goto L_HaveList1;
+ if (@xmas_list_path1)
+ goto L_HaveList2;
+ if (@xmas_list_path2)
+ goto L_NeedList1;
+ goto L_NeedList2;
+
+L_Broken:
+ mes "If you somehow reached this label this means the quest is broken, your quest state is reset to zero, however you do not have to collect lists again.";
+ set @xmas_state, 0;
+ callfunc "XmasSetState";
+ goto L_Close;
+
+L_HaveList1:
+ mes "[Eljas]";
+ mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic happen.\"";
+ next;
+ mes "\"What brings you here?\"";
+ next;
+ mes "...";
+ menu
+ "What were the childrens names again?", L_ListNames,
+ "Look, I have Santa's List.", L_SantasList,
+ "I have Santa's List.(follow Orum and his evil deeds)", L_SantasFakeList,
+ "Christmas?", L_Christmas,
+ "I am interested in magical research.", L_Research,
+ "Nothing, I have to go.", L_Close;
+ goto L_Close;
+
+L_HaveList2:
+ mes "Mmmmh he probably won't notice what lists you will bring him (Did you ever notice that he does not move at all?)";
+ mes "Haven't you always wondered what happens if you simply cheat?";
+ mes "Well ... It's a story as ancient as mankind.";
+ mes "If you break the rules that are tied to an environment you live in, you are likely to be punished";
+ mes "by them. So be careful what you do next, you might regret it...";
+ next;
+ menu
+ "What were the childrens names again?", L_ListNames,
+ "Look, I have Santa's List.", L_SantasList,
+ "I have Santa's List. (replace every wish with \"Christmas would die\" )", L_SantasFakeList,
+ "Christmas?", L_Christmas,
+ "I am interested in magical research.", L_Research,
+ "Nothing, I have to go.", L_Close;
+ goto L_Close;
+
+L_NeedList1:
+ mes "[Eljas]";
+ mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
+ next;
+ mes "\"So what brings you here my dear?\"";
+ menu
+ "Mmh? Nothing, I have to go.", L_Close,
+ "I heard you need help with some Wish lists?", -;
+ mes "\"True...\"";
+ next;
+ mes "\"It appears we are missing some of the wish list from the children from all over the Mana World.\"";
+ mes "\"Let me check here...\"";
+ next;
+ mes "\"Ah ha, here we go.\"";
+ mes "\"The missing wish lists are:";
+ callfunc "XmasListList";
+ mes "\"If you can find these children, please bring their lists back to me.\"";
+ mes "\"Thank you for helping out!\"";
+ mes "He looks up from his notes and gives you a broad smile";
+
+ set @xmas_state, $@xmas_list_both_state;
+ callfunc "XmasSetState";
+ goto L_Close;
+
+
+L_NeedList2:
+ mes "[Eljas]";
+ mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
+ next;
+ mes "\"So what brings you here my dear?\"";
+ menu
+ "Do you need any help this year?", L_StartQuest,
+ "Mmh? Nothing, I have to go.", L_Close;
+
+L_OffSeason:
+ mes "[Eljas]";
+ mes "\"Hello! Welcome to the Christmas Inn. We work all year around to make the magic of the holidays happen.\"";
+ next;
+ mes "\"And what brings you here?\"";
+ menu
+ "Christmas.", L_Christmas,
+ "Magical research.", L_Research,
+ "Och, nothing. I have to go.", L_Close;
+
+L_StartQuest:
+ mes "\"Why yes! Of course we do!\"";
+ next;
+ mes "\"It appears we are missing some of the wish list from the children from all over the Mana World.\"";
+ mes "\"Let me check here...\"";
+ next;
+ mes "\"Ah ha, here we go.\"";
+ mes "\"The missing wish lists are:";
+ callfunc "XmasListList";
+ mes "\"If you can find these children, please bring their lists back to me.\"";
+ mes "\"Thank you for helping out!\"";
+ mes "He looks up from his notes and gives you a broad smile";
+ next;
+ set @xmas_state, $@xmas_list_path1_state;
+ callfunc "XmasSetState";
+ goto L_Close;
+
+L_ListNames:
+ mes "He checks a piece of paper on his desk...";
+ mes "\"Mmh... the missing lists are:";
+ callfunc "XmasListList";
+ mes "\"If you can find these children, please bring their lists back.\"";
+ goto L_Close;
+
+L_SantasList:
+ callfunc "XmasCheckList";
+ callfunc "XmasStates";
+ if(!(@xmas_list_complete))
+ goto L_NotComplete;
+ mes "\"Awesome! Now please take those lists to Chief Warrick on the next floor.\"";
+ set @karma_bonus, @xmas_list_count;
+ callfunc "XmasNice";
+ set @xmas_state, $@xmas_list_deliver_state;
+ callfunc "XmasSetState";
+ callfunc "XmasXpReward";
+ goto L_Close;
+
+L_SantasFakeList:
+ callfunc "XmasCheckList";
+ callfunc "XmasStates";
+ if(!(@xmas_list_complete))
+ goto L_NotComplete;
+ mes "\"Wait a second... whats that aura...\"";
+ mes "\"THESE ARE NOT THE REAL LISTS!\"";
+ mes "\"Guards! Toss this naughty one outside!\"";
+ next;
+ set @karma_bonus, @xmas_list_count;
+ callfunc "XmasNaughty";
+ callfunc "XmasSetSide";
+ callfunc "XmasThrowOut";
+ set @xmas_state, $@xmas_list_deliver_state;
+ callfunc "XmasSetState";
+ callfunc "XmasXpReward";
+ goto L_NotWelcome;
+
+L_NotComplete:
+ mes "\"Hrmm... Even I can tell that you did not bring all the lists we are missing.\"";
+ goto L_ListNames;
+
+L_SeeChief:
+ mes "\"Please take those lists to Chief Warrick on the next floor.\"";
+ goto L_Close;
+
+L_Christmas:
+ mes "\"All year round we work hard to make toys and repair our help for each years event.\"";
+ mes "\"Ask Chief Warrick on the next floor, He is the shop foreman, people are always looking to him to find extra help.\"";
+ next;
+ goto L_Close;
+
+L_Research:
+ mes "\"Well, the most astonishing discovery in our recent researches is a complex combination of Transmutation, Astral and Nature Magic to animate wooden figurines.\"";
+ mes "\"Did you notice the Guards around the house? Originally those were simple nutcrackers, carved out of wood by our talented carpenters.\"";
+ next;
+ mes "\"With the results of our magic researches, we were able to transform them into animated beings, acting rudimentary self-determined and capable to perform simple tasks.\"";
+ mes "\"At the moment we can keep them animated for an unlimited time, as long as the caster stays in range.\"";
+ next;
+ mes "\"If you want to learn more about the magic used speak with Avalia she is on the 4th floor in her private room.\"";
+ next;
+ goto L_Close;
+
+L_NotWelcome:
+ mes "... You hear a voice calling your name ... ";
+ mes "[Orum's Homunculus]";
+ mes "\"Come See me in the caves below.\"";
+ mes "\"go north till you reach the snoman. Then head into the cave to the east.\"";
+ warp "030-1",99,55;
+ close;
+
+L_Close:
+ mes"\"Goodbye\"";
+ close;
+
+L_End:
+ end;
+
+OnTouch:
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+ if((@xmas_list_gather) || !($@xmas_time))
+ goto L_End;
+ goto L_Start;
+}
diff --git a/world/map/npc/030-2/empty_boxes_helper.txt b/world/map/npc/030-2/empty_boxes_helper.txt
new file mode 100644
index 00000000..248fb9d1
--- /dev/null
+++ b/world/map/npc/030-2/empty_boxes_helper.txt
@@ -0,0 +1,68 @@
+// Annual Xmas
+// author: Jenalya, wushin
+// Urmas asks for raw logs to make empty presents boxes
+// later he can be asked for those boxes to put toys in
+
+030-2.gat,140,41,0|script|Urmas|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Urmas]";
+ mes "\"It's nice to not need to find logs in such a hurry. I always seem to have problems every year.\"";
+ goto L_Close;
+
+L_XmasMain:
+ if (@xmas_helper_bit) goto L_Helping;
+
+ mes "[Urmas]";
+ mes "\"Don't stand in the way! We have some serious problems here.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "[Urmas]";
+ mes "\"Ah, I see you're one of the seasonal helpers. Ok, listen to me.";
+ mes "\"We have a shortage on the empty present boxes. Don't ask me how that can happen!";
+ mes "Those paper-shufflers up there probably messed up the ordering or something. Pah.\"";
+ next;
+ mes "\"However, we need to fix it. I have only a few boxes left.";
+ mes "Bring me some wood, so I can make new boxes out of it.";
+ mes $@xmas_log_amount + " Raw Logs will do for one box.\"";
+ mes "";
+ if (countitem("RawLog") < $@xmas_log_amount)
+ mes "\"But I see you do not have enough with you anyway. Come back with some material please.\"";
+ if (countitem("RawLog") < $@xmas_log_amount) goto L_Close;
+ next;
+ mes "\"How many boxes do you need?\"";
+ input @amount;
+ if (@amount <= 0)
+ goto L_Close;
+ if (countitem("RawLog") < (@amount * $@xmas_log_amount))
+ goto L_NoItems;
+ getinventorylist;
+ if (@inventorylist_count > 100)
+ goto L_FullInv;
+ delitem "RawLog", (@amount * $@xmas_log_amount);
+ mes "[Urmas]";
+ mes "\"Alright! Good job, kid. I'll start to make some more boxes now.";
+ mes "Here, take this in the meanwhile and put some toys in it.\"";
+ getitem "OpenPresentBox", @amount;
+ goto L_Close;
+
+L_FullInv:
+ mes "\"You need some space to put the empty boxes.\"";
+ goto L_Close;
+
+L_NoItems:
+ mes "[Urmas]";
+ mes "\"Eh? Are you kidding?\"";
+ goto L_Close;
+
+L_Close:
+ set @amount, 0;
+ close;
+}
diff --git a/world/map/npc/030-2/gaurds.txt b/world/map/npc/030-2/gaurds.txt
new file mode 100644
index 00000000..c0f30e76
--- /dev/null
+++ b/world/map/npc/030-2/gaurds.txt
@@ -0,0 +1,33 @@
+// Annual Xmas Bouncers
+
+030-2.gat,85,43,0|script|Valjas|330,
+{
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+ mes "[Valjas]";
+ mes "\"...\"";
+ close;
+}
+
+030-2.gat,89,43,0|script|Halas|330,
+{
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+ mes "[Halas]";
+ mes "\"...\"";
+ close;
+}
+
+030-2.gat,89,84,0|script|Kilis|330,5,2,
+{
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+ mes "[Kilis]";
+ mes "\"...\"";
+ close;
+
+OnTouch:
+ callfunc "XmasStates";
+ callfunc "ThrowOutTheBum";
+ end;
+}
diff --git a/world/map/npc/030-2/glitter_helper.txt b/world/map/npc/030-2/glitter_helper.txt
new file mode 100644
index 00000000..c4ee84bb
--- /dev/null
+++ b/world/map/npc/030-2/glitter_helper.txt
@@ -0,0 +1,99 @@
+// Annual Xmas
+// author: Jenalya, wushin
+// Veneri asks for Diamond Powder and Ruby Powder for decoration
+// can be sabotaged with Red Powder and Yellow Powder, Saboteur can make that out of Wisp and Spectre Powder
+
+030-2.gat,31,81,0|script|Veneri|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Veneri]";
+ mes "\"I should take this time off to go see the doctor in Hurnscald about whether or not I have glitter lung.\"";
+ goto L_Close;
+
+L_XmasMain:
+ if (XMASTIME & $@xmas_helper_bit_glitter_ends) goto L_Done;
+ if (XMASTIME & $@xmas_helper_bit_glitter_starts) goto L_Powder;
+ if (@xmas_helper_bit) goto L_Helping;
+
+ mes "[Veneri]";
+ mes "\"Mh? Excuse me, I'm very busy right now.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "[Veneri]";
+ mes "\"Hello. We have some problems here. Something went wrong with the shipment of the ingredients for our decoration glitter.";
+ mes "Would you be so kind and get me " + $@xmas_red_amount + " Ruby Powders and " + $@xmas_yellow_amount + " Topaz Powders?\"";
+ next;
+ mes "[Veneri]";
+ mes "\"This material has proven to have the quality we need to make our christmas magic last until it can sparkle under every christmas tree. Sadly we made some bad experience in the past. Please make sure you only bring class A powders.\"";
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_starts;
+ goto L_Close;
+
+L_Powder:
+ mes "[Veneri]";
+ mes "\"Welcome back. Do you have the " + $@xmas_red_amount + " Ruby Powders and " + $@xmas_yellow_amount + " Topaz Powders needed for the decoration glitter?\"";
+ if ((countitem("RubyPowder") >= $@xmas_red_amount) && (countitem("TopazPowder") >= $@xmas_yellow_amount) && (countitem("RedPowder") >= $@xmas_red_amount) && (countitem("YellowPowder") >= $@xmas_yellow_amount))
+ menu
+ "Yeah, here it is. (Give the gem powders.)",L_GemPowders,
+ "Sure, here you go. (Give the fake powders.)",L_FakePowders,
+ "No, I am still working on that.",L_Close;
+ if ((countitem("RubyPowder") >= $@xmas_red_amount) && (countitem("TopazPowder") >= $@xmas_yellow_amount))
+ menu
+ "Yeah, here it is. (Give the gem powders.)",L_GemPowders,
+ "No, I am still working on that.",L_Close;
+ if ((countitem("RedPowder") >= $@xmas_red_amount) && (countitem("YellowPowder") >= $@xmas_yellow_amount))
+ menu
+ "Sure, here it is. (Give the fake powders.)",L_FakePowders,
+ "No, I am still working on that.",L_Close;
+ goto L_Close;
+
+L_GemPowders:
+ if ((countitem("RubyPowder") < $@xmas_red_amount) || (countitem("TopazPowder") < $@xmas_yellow_amount))
+ goto L_NoItems;
+ delitem "RubyPowder", $@xmas_red_amount;
+ delitem "TopazPowder", $@xmas_yellow_amount;
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_ends;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNice";
+ callfunc "XmasXpReward";
+ mes "[Veneri]";
+ mes "\"Excellent! Thank you very much.\"";
+ goto L_Close;
+
+L_FakePowders:
+ if ((countitem("RedPowder") < $@xmas_red_amount) || (countitem("YellowPowder") < $@xmas_yellow_amount))
+ goto L_NoItems;
+ delitem "RedPowder", $@xmas_red_amount;
+ delitem "YellowPowder", $@xmas_yellow_amount;
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_glitter_ends;
+ set XMASTIME, XMASTIME &~ $@xmas_helper_bit_glitter_starts;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNaughty";
+ callfunc "XmasXpReward";
+ mes "It seems like he didn't notice that the powder you gave him is bogus.";
+ mes "[Veneri]";
+ mes "\"Excellent! Thank you very much.\"";
+ goto L_Close;
+
+L_Done:
+ mes "[Veneri]";
+ if (!(@xmas_helper_glitter))
+ mes "\"Even after your help, the powder still isn't working right. Maybe it got wet.\"";
+ if (@xmas_helper_glitter)
+ mes "\"Thanks for bringing the powders.\"";
+ goto L_Close;
+
+L_NoItems:
+ mes "[Veneri]";
+ mes "\"Eh? Are you kidding?\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/present_helper.txt b/world/map/npc/030-2/present_helper.txt
new file mode 100644
index 00000000..9637b778
--- /dev/null
+++ b/world/map/npc/030-2/present_helper.txt
@@ -0,0 +1,87 @@
+// Annual Xmas
+// Author: wushin
+// Present Reclaimation
+
+030-2.gat,47,82,0|script|Jonanthan|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Jonathan]";
+ mes "\"Hello! Welcome to the reclamation department.\"";
+ mes "\"Lucky all the presents stolen have been replaced. Save any you find. You never know what we will need to replace next year.\"";
+ goto L_Close;
+
+L_XmasMain:
+ mes "[Jonathan]";
+ mes "\"Hello! Welcome to the reclamation department.\"";
+
+ if(@xmas_helper_bit) goto L_Helping;
+
+ mes "\"We are incredibly busy right now, monsters have stolen some of our presents.\"";
+ mes "\"I must go inform Chief Warrick immediately.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "\"Here we take back any presents stolen from us by those nasty creatures.\"";
+ next;
+
+L_Main:
+ mes "\"Did you find any presents you would like to return?\"";
+ next;
+ menu
+ "No, I just wanted to say hello.",-,
+ $@xmas_present_amount + " Purple present boxes.",L_Purple,
+ $@xmas_present_amount + " Blue present boxes.",L_Blue,
+ $@xmas_present_amount + " Green present boxes.",L_Green,
+ $@xmas_present_amount + " Yellow present boxes.",L_Yellow,
+ $@xmas_present_amount + " White present boxes.",L_White;
+ goto L_Close;
+
+L_Purple:
+ set @karma_bonus, $@xmas_karma_bonus;
+ set @present_name$, "PurplePresentBox";
+ goto L_RewardIncrease;
+
+L_Blue:
+ set @karma_bonus, $@xmas_karma_bonus;
+ set @present_name$, "BluePresentBox";
+ goto L_RewardIncrease;
+
+L_Green:
+ set @karma_bonus, $@xmas_karma_bonus;
+ set @present_name$, "GreenPresentBox";
+ goto L_RewardIncrease;
+
+L_Yellow:
+ set @karma_bonus, 2;
+ set @present_name$, "YellowPresentBox";
+ goto L_RewardIncrease;
+
+L_White:
+ set @karma_bonus, 2;
+ set @present_name$, "WhitePresentBox";
+ goto L_RewardIncrease;
+
+L_RewardIncrease:
+ if ($@xmas_present_amount > countitem(@present_name$))
+ goto L_NotEnough;
+ mes "\"Oh, thank you!\"";
+ delitem @present_name$, $@xmas_present_amount;
+ callfunc "XmasNice";
+ goto L_Close;
+
+L_NotEnough:
+ mes "\"I am sorry, but you don't have enough presents to return.\"";
+ goto L_Main;
+
+L_Close:
+ mes "\"See You later!\"";
+ set @present_name$, "";
+ close;
+}
+
diff --git a/world/map/npc/030-2/roasted_acrons_helper.txt b/world/map/npc/030-2/roasted_acrons_helper.txt
new file mode 100644
index 00000000..61975e2c
--- /dev/null
+++ b/world/map/npc/030-2/roasted_acrons_helper.txt
@@ -0,0 +1,82 @@
+// Annual Xmas
+// author: Jenalya, wushin
+
+030-2.gat,89,23,0|script|Verneri|334,
+{
+ callfunc "XmasStates";
+
+ if((@xmas_state >= $@xmas_helpers_start_state) && ($@xmas_time))
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Verneri]";
+ mes "\"Nothing like the getting past the holiday rush to make you dread next season.\"";
+ goto L_Close;
+
+L_XmasMain:
+ mes "[Verneri]";
+ mes "\"Hm? I'm currently having a break. It's really nice here at the fireplace, isn't it?\"";
+ next;
+ mes "\"Ah, I remember when I was a child we used to roast acorns at the fireplace. We dunked them into Iron Potion and then put them over the fire for a while. That gave a tasty icing.\"";
+ menu
+ "Let's roast some.", -,
+ "Children's stuff...", L_Close;
+
+ mes "[Verneri]";
+ mes "\"Well, if you get some Acorns and Iron Potions, we can do that.\"";
+ mes "\"With one Iron Potion we can ice about " + $@xmas_acorn_amount + " Acorns.\"";
+ next;
+ mes "[Verneri]";
+ mes "\"Do you have everything we need? Shall we start?\"";
+ menu
+ "Sure!", L_Roast,
+ "I need to get the ingredients.", L_Close;
+
+L_Roast:
+ if (countitem("Acorn") < $@xmas_acorn_amount || countitem("IronPotion") < $@xmas_iron_potion_amount)
+ goto L_NoItems;
+
+ getinventorylist;
+ if (@inventorylist_count > 100)
+ goto L_FullInv;
+ delitem "IronPotion", $@xmas_iron_potion_amount;
+ delitem "Acorn", $@xmas_acorn_amount;
+
+ mes "Verneri takes the Iron Potion and the Acorns from you. He pours the potion into some bowl and adds the Acorns.";
+ mes "Then he puts the bowl over the fire, stirring it every now and then. After a while it starts to smell really tasty.";
+ next;
+ mes "[Verneri]";
+ mes "\"Here we are! Let me take one of them, ok?\"";
+ mes "He carefully takes one of the roasted acorns and eats it.";
+ next;
+
+ mes "[Verneri]";
+ mes "\"Ouch, hot. But tasty! Some of them might be burnt, I'll throw those away.\"";
+ set XMASTIME, XMASTIME | $@xmas_helper_bit_acorns;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNice";
+ getitem "RoastedAcorn", rand($@xmas_acorn_amount);
+ menu
+ "Let's roast some more.", L_Roast,
+ "Thank you.", L_Close;
+
+L_RoastAcornAgain:
+ mes "[Verneri]";
+ mes "\"Hello again. Do you want to roast some more acorns? They're delicious, right? Maybe we should do this every year.\"";
+ menu
+ "Not now.", L_Close,
+ "Yes, I brought the ingredients.", L_Roast;
+
+L_FullInv:
+ mes "\"You need some space to put the roasted acorns.\"";
+ goto L_Close;
+
+L_NoItems:
+ mes "[Verneri]";
+ mes "\"You need to bring at least one Iron Potion and " + $@xmas_acorn_amount + " Acorns.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/shipping_helper.txt b/world/map/npc/030-2/shipping_helper.txt
new file mode 100644
index 00000000..573ed2fc
--- /dev/null
+++ b/world/map/npc/030-2/shipping_helper.txt
@@ -0,0 +1,119 @@
+// Annual Xmas
+// Author: Jenalya, wushin
+
+030-2.gat,30,88,0|script|Mo|328,
+{
+ set $@npc_name$, "Mo";
+ callfunc "helpersPacking";
+ close;
+}
+
+030-2.gat,33,88,0|script|Lorrie|329,
+{
+ set $@npc_name$, "Lorrie";
+ callfunc "helpersPacking";
+ close;
+}
+
+030-2.gat,37,88,0|script|Curlee|329,
+{
+ set $@npc_name$, "Curlee";
+ callfunc "helpersPacking";
+ close;
+}
+
+function|script|helpersPacking|,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[" + $@npc_name$ + "]";
+ mes "\"Boy it sure is grand to goof off all day with no presents to wrap.\"";
+ goto L_Close;
+
+L_XmasMain:
+ mes "[" + $@npc_name$ + "]";
+ mes "Hello, hello, hello!";
+
+ if(@xmas_helper_bit) goto L_Helping;
+
+ mes "\"Real busy now, gotta go or the boss will have my head. Back to work knuckleheads!\"";
+ goto L_Close;
+
+L_Helping:
+ mes "\"I am " + $@npc_name$ + ". We are in charge of getting all the presents together, but we messed up and now all our supplies are ruined. Can you help us out?\"";
+ mes "\"We need wrapping paper and empty boxes! We can provide the gifts!\"";
+ next;
+
+L_Main:
+ mes "\"Do you have any supplies we can use?\"";
+ next;
+ menu
+ "What? err... I just wanted to say hello.",-,
+ "Purple Wrapping Paper and an empty box.",L_Purple,
+ "Blue Wrapping Paper and an empty box.",L_Blue,
+ "Green Wrapping Paper and an empty box.",L_Green,
+ "Yellow Wrapping Paper and an empty box.",L_Yellow,
+ "White Wrapping Paper and an empty box.",L_White;
+ goto L_Close;
+
+L_Purple:
+ set @wrap$, "PurpleWrap";
+ set @present_name$, "PurplePresentBox";
+ goto L_Gift;
+
+L_Blue:
+ set @wrap$, "BlueWrap";
+ set @present_name$, "BluePresentBox";
+ goto L_Gift;
+
+L_Green:
+ set @wrap$, "GreenWrap";
+ set @present_name$, "GreenPresentBox";
+ goto L_Gift;
+
+L_Yellow:
+ set @wrap$, "YellowWrap";
+ set @present_name$, "YellowPresentBox";
+ goto L_Gift;
+
+L_White:
+ set @wrap$, "WhiteWrap";
+ set @present_name$, "WhitePresentBox";
+ goto L_Gift;
+
+L_Gift:
+ if ($@xmas_wrap_amount > countitem(@wrap$))
+ goto L_NotEnough;
+ if ($@xmas_empty_box_amount > countitem("OpenPresentBox"))
+ goto L_NotEnough;
+ getinventorylist;
+ if ((@inventorylist_count == 100) || (checkweight(@present_name$, $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ delitem "OpenPresentBox", $@xmas_empty_box_amount;
+ delitem @wrap$, $@xmas_wrap_amount;
+ getitem @present_name$, $@xmas_ship_present_amount;
+ goto L_Give;
+
+L_Give:
+ mes "\"Ok, here is the present. Make sure to drop these off at the warehouse.\"";
+ goto L_Main;
+
+L_NotEnough:
+ mes "\"O wiseguy, huh? Why don't you come back when you got all the supplies you knucklehead.\"";
+ goto L_Main;
+
+L_FullInv:
+ mes "\"Where you going to put this? In your ear? Come back when you have more space in your inventory.\"";
+ goto L_Main;
+
+L_Close:
+ mes "\"Ok, back to work you two, we have to make up lost time for your antics.\"";
+ set @wrap$, "";
+ set @present_name$, "";
+ close;
+}
diff --git a/world/map/npc/030-2/storage_helper.txt b/world/map/npc/030-2/storage_helper.txt
new file mode 100644
index 00000000..37f7ee2d
--- /dev/null
+++ b/world/map/npc/030-2/storage_helper.txt
@@ -0,0 +1,104 @@
+// Annual Christmas
+// author: Jenalya, wushin
+
+030-2.gat,25,35,0|script|Vellamo|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Vellamo]";
+ mes "\"Candy Stock is built back up. Though... the more we store the more they want...\"";
+ goto L_Close;
+
+L_XmasMain:
+ if (XMASTIME & $@xmas_helper_bit_storage) goto L_Candy;
+ if (@xmas_helper_bit) goto L_Helping;
+
+ mes "[Vellamo]";
+ mes "\"Sorry, too busy to chat right now. The chief has got me working overtime for the holidays.\"";
+ close;
+
+L_Helping:
+ mes "[Vellamo]";
+ mes "\"Oh, hello. Visitors usually don't come down here in the basement. Here we store several things, materials for the presents, the finished presents, supplies.\"";
+ menu
+ "Nice. I have to go.", L_Close,
+ "Do you need help with anything?", -;
+ mes "[Vellamo]";
+ mes "\"Oh? You want to help us? Actually, there is one thing you could do. Did you see those weird slimes out there on the snow fields? Argh, I hate those creatures, last year they invaded the entire basement...\"";
+ next;
+ mes "\"However, this year they tried again, but I was able to hold them off. They just managed to devour most of our candy supplies.\"";
+ next;
+ mes "\"So in case you find some of the Candies, feel free to bring them back. Ismo will give you some reward for them.\"";
+ set XMASTIME, XMASTIME | ($@xmas_helper_bit_storage);
+ goto L_Close;
+
+L_Candy:
+ mes "[Vellamo]";
+ mes "\"Ah, welcome back. When you have found some of the candy, please give it to Ismo.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+
+030-2.gat,33,29,0|script|Ismo|329,
+{
+ callfunc "XmasStates";
+
+ if(($@xmas_time) && (XMASTIME & $@xmas_helper_bit_storage))
+ goto L_Helping;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Ismo]";
+ mes "\"Hello. I'm helping Vellamo. He's the storage administrator.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "[Ismo]";
+ mes "\"Did you get back some candy from the slimes?\"";
+ next;
+ menu
+ "Give " + $@xmas_good_friendly_name$, L_GoodCandy,
+ "Give " + $@xmas_bad_friendly_name$ + "(What? how mean!).", L_BadCandy;
+
+L_BadCandy:
+ set @dq_level, $@xmas_bad_level;
+ set @dq_cost, $@xmas_bad_cost;
+ set @dq_count, $@xmas_bad_count;
+ set @dq_name$, $@xmas_bad_name$;
+ set @dq_friendly_name$, $@xmas_bad_friendly_name$;
+ set @dq_money, $@xmas_bad_money;
+ set @dq_exp, $@xmas_bad_exp;
+
+ callfunc "DailyQuest";
+ if (countitem(@dq_name$) < @dq_count)
+ goto L_Close;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNaughty";
+ goto L_Close;
+
+L_GoodCandy:
+ set @dq_level, $@xmas_good_level;
+ set @dq_cost, $@xmas_good_cost;
+ set @dq_count, $@xmas_good_count;
+ set @dq_name$, $@xmas_good_name$;
+ set @dq_friendly_name$, $@xmas_good_friendly_name$;
+ set @dq_money, $@xmas_good_money;
+ set @dq_exp, $@xmas_good_exp;
+
+ callfunc "DailyQuest";
+ if (countitem(@dq_name$) < @dq_count)
+ goto L_Close;
+ set @karma_bonus, $@xmas_karma_bonus;
+ callfunc "XmasNice";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/030-2/wrapping_paper_helper.txt b/world/map/npc/030-2/wrapping_paper_helper.txt
new file mode 100644
index 00000000..48e23f45
--- /dev/null
+++ b/world/map/npc/030-2/wrapping_paper_helper.txt
@@ -0,0 +1,142 @@
+// author: Jenalya, wushin
+// Reino asks for reed bundles and water to make wrapping paper
+// also for some dyes to make them colorful
+// later he can be asked for those papers to wrap boxes
+
+030-2.gat,140,31,0|script|Reino|328,
+{
+ callfunc "XmasStates";
+
+ if($@xmas_time)
+ goto L_XmasMain;
+ goto L_OffSeason;
+
+L_OffSeason:
+ mes "[Reino]";
+ mes "\"Hrmm... I forgot what the real color of my hand was... \"";
+ goto L_Close;
+
+L_XmasMain:
+ if (@xmas_helper_bit) goto L_Helping;
+
+ mes "[Reino]";
+ mes "\"Excuse me, but please don't interrupt. We're all very busy.\"";
+ goto L_Close;
+
+L_Helping:
+ mes "[Reino]";
+ mes "\"Oh, I see you're here to help. Maybe you can assist me with a problem we have.";
+ mes "We're nearly out of wrapping paper for the present boxes.";
+ mes "That's very very bad. Can you imagine how it would look if the presents didn't have wrapping paper?\"";
+ next;
+ mes "\"So, eh, I can only give you some of the remaining wrapping paper if you bring me the needed material to make new wrapping paper.";
+ mes "For making one roll of wrapping paper, I need " + $@xmas_reed_amount + " Reed Bundles, " + $@xmas_water_amount + " Bottle of Water and some dye to make it colored.\"";
+ next;
+L_Again:
+ mes "\"Let's see... These are the regulations for wrapping paper colors and designs for this year. Tell me which you want.\"";
+ mes "He shows you an official looking piece of paper.";
+ menu
+ "White dotted (" + $@xmas_poa_amount +" Piles of Ash)", L_White,
+ "Yellow dotted (" + $@xmas_wrap_yellow_amount + " Yellow Dyes)", L_Yellow,
+ "Blue dotted (" + $@xmas_wrap_ltblue_amount + " Light Blue Dyes)", L_Blue,
+ "Purple striped (" + $@xmas_wrap_purple_amount + " Purple Dye)", L_Purple,
+ "Green (" + $@xmas_wrap_green_amount + " Green Dye)", L_Green,
+ "Why do you have a regulation for wrapping papers?!", L_Regulation,
+ "I'm on my way.",L_Close;
+
+L_White:
+getinventorylist;
+ if (@inventorylist_count == 100 || (checkweight("WhiteWrap", $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PileOfAsh") < $@xmas_poa_amount))
+ goto L_NoItems;
+ delitem "ReedBundle", $@xmas_reed_amount;
+ delitem "BottleOfWater", $@xmas_water_amount;
+ delitem "PileOfAsh", $@xmas_poa_amount;
+ getitem "WhiteWrap", $@xmas_wrap_reward;
+ mes "[Reino]";
+ mes "\"This one is classical.\"";
+ goto L_MadePaper;
+
+L_Yellow:
+ getinventorylist;
+ if (@inventorylist_count == 100 || (checkweight("YellowWrap", $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("YellowDye") < $@xmas_wrap_yellow_amount))
+ goto L_NoItems;
+ delitem "ReedBundle", $@xmas_reed_amount;
+ delitem "BottleOfWater", $@xmas_water_amount;
+ delitem "YellowDye", $@xmas_wrap_yellow_amount;
+ getitem "YellowWrap", $@xmas_wrap_reward;
+ mes "[Reino]";
+ mes "\"Right, bright paper brings good vibes.\"";
+ goto L_MadePaper;
+
+L_Blue:
+ getinventorylist;
+ if (@inventorylist_count == 100 || (checkweight("BlueWrap", $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("LightBlueDye") < $@xmas_wrap_ltblue_amount))
+ goto L_NoItems;
+ delitem "ReedBundle", $@xmas_reed_amount;
+ delitem "BottleOfWater", $@xmas_water_amount;
+ delitem "LightBlueDye", $@xmas_wrap_ltblue_amount;
+ getitem "BlueWrap", $@xmas_wrap_reward;
+ mes "[Reino]";
+ mes "\"Plain and simple. Here.\"";
+ goto L_MadePaper;
+
+L_Purple:
+ getinventorylist;
+ if (@inventorylist_count == 100 || (checkweight("PurpleWrap", $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PurpleDye") < $@xmas_wrap_purple_amount))
+ goto L_NoItems;
+ delitem "ReedBundle", $@xmas_reed_amount;
+ delitem "BottleOfWater", $@xmas_water_amount;
+ delitem "PurpleDye", $@xmas_wrap_purple_amount;
+ getitem "PurpleWrap", $@xmas_wrap_reward;
+ mes "[Reino]";
+ mes "\"Mh, personally I don't like it that much, but here you go.\"";
+ goto L_MadePaper;
+
+L_Green:
+ getinventorylist;
+ if (@inventorylist_count == 100 || (checkweight("GreenWrap", $@xmas_wrap_reward) == 0))
+ goto L_FullInv;
+ if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("GreenDye") < $@xmas_wrap_green_amount))
+ goto L_NoItems;
+ delitem "ReedBundle", $@xmas_reed_amount;
+ delitem "BottleOfWater", $@xmas_water_amount;
+ delitem "GreenDye", $@xmas_wrap_green_amount;
+ getitem "GreenWrap", $@xmas_wrap_reward;
+ mes "[Reino]";
+ mes "\"Yeah, this is really Christmas-styled.\"";
+ goto L_MadePaper;
+
+L_MadePaper:
+ next;
+ mes "\"Do you need more wrapping paper?\"";
+ menu
+ "Yes.",L_Again,
+ "No, I have all I need.",L_Close;
+
+L_Regulation:
+ mes "Reino seems irritated.";
+ mes "[Reino]";
+ mes "\"Well, because, ah - there would be total chaos without regulations!";
+ mes "You know, this Christmas business requires a lot of coordination. Things have to be well-ordered.\"";
+ goto L_Close;
+
+L_FullInv:
+ mes "\"You need some space to put the wrapping paper.\"";
+ goto L_Close;
+
+L_NoItems:
+ mes "[Reino]";
+ mes "\"Oh? It seems you don't have the required items.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}