diff options
Diffstat (limited to 'world')
-rw-r--r-- | world/map/npc/031-1/angelaOutside.txt | 13 | ||||
-rw-r--r-- | world/map/npc/031-4/cindyCave.txt | 4 | ||||
-rw-r--r-- | world/map/npc/annuals/halloween/debug.txt | 16 | ||||
-rw-r--r-- | world/map/npc/annuals/halloween/gak.txt | 1278 | ||||
-rw-r--r-- | world/map/npc/magic/_procedures.txt | 64 | ||||
-rw-r--r-- | world/map/npc/magic/level1-experience.txt | 5 | ||||
-rw-r--r-- | world/map/npc/magic/level1-lesser-heal.txt | 7 | ||||
-rw-r--r-- | world/map/npc/magic/level2-lay-on-hands.txt | 14 | ||||
-rw-r--r-- | world/map/npc/scripts.conf | 1 |
9 files changed, 1356 insertions, 46 deletions
diff --git a/world/map/npc/031-1/angelaOutside.txt b/world/map/npc/031-1/angelaOutside.txt index 322cbfb0..2ffd0804 100644 --- a/world/map/npc/031-1/angelaOutside.txt +++ b/world/map/npc/031-1/angelaOutside.txt @@ -36,8 +36,6 @@ OnInit: 031-1,79,24,0|script|Angela|195,15,15 { - set @minlevel, 70; - if (QL_CINDY == 3) goto L_Please_Visit_Again; if (QL_CINDY > 1 && QL_CINDY < 5) goto L_Please_Visit; if (QL_CINDY == 1) goto L_Please_Help; @@ -47,7 +45,7 @@ OnInit: next; mes "\"It's terrible, oh my dear child!\""; next; - if (countitem("ConcentrationPotion") > 0 && BaseLevel >= @minlevel && QL_CINDY == 6) + if (countitem("ConcentrationPotion") > 0 && BaseLevel >= .minlevel && QL_CINDY == 6) goto L_Menu_Potion; menu @@ -55,7 +53,7 @@ OnInit: "Leave", L_Close; OnTouch: - if(BaseLevel >= @minlevel && !QL_CINDY) + if(BaseLevel >= .minlevel && QL_CINDY < 1) set QL_CINDY, 5; end; @@ -80,7 +78,7 @@ L_Whining: mes "She is crying and sobbing."; next; mes "It seems she is too upset to tell you anything helpful. If she would just calm down and concentrate a bit..."; - if(BaseLevel >= @minlevel) goto L_GetQuest; + if(BaseLevel >= .minlevel) goto L_GetQuest; goto L_Close; L_GetQuest: @@ -139,6 +137,9 @@ L_Please_Visit_Again: goto L_Close; L_Close: - set @minlevel, 0; close; + +OnInit: + set .minlevel, 70; + end; } diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt index c97b166d..1655205f 100644 --- a/world/map/npc/031-4/cindyCave.txt +++ b/world/map/npc/031-4/cindyCave.txt @@ -86,7 +86,7 @@ L_Reward: L_Wizard_Hat: // get a wizard hat in one of the ten colors - no white - setarray @wizardhats, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209; + setarray @wizardhats[0], 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209; getitem @wizardhats[@reward], 1; set QL_CINDY, 3; goto L_Visit; @@ -215,7 +215,7 @@ L_End: end; OnInit: - setarray $@FIGHT_YETI_MESSAGES$, + setarray $@FIGHT_YETI_MESSAGES$[0], "", // unused // " : " is magic so that it says "global announcement from" "Cindy : Yetis!", diff --git a/world/map/npc/annuals/halloween/debug.txt b/world/map/npc/annuals/halloween/debug.txt index 8f3d066e..d633ed00 100644 --- a/world/map/npc/annuals/halloween/debug.txt +++ b/world/map/npc/annuals/halloween/debug.txt @@ -13,6 +13,7 @@ L_Live: "Set Old Event Flag.", L_LastReset, "Halloween Time Key Change.", L_HalloweenTimeKey, "Reset NPC's mask memory", L_ResetMask, + "Set HWEEN16 value", L_HalloweenValue, "Nothing.", L_Close; L_Debug: @@ -24,6 +25,7 @@ L_Debug: "Set NPC trick or treat flag", L_SetTrickOrTreats, "Reset my quest state", L_ResetMe, "Reset NPC's mask memory", L_ResetMask, + "Set HWEEN16 value", L_HalloweenValue, "Nothing.", L_Close; L_DebugTime: @@ -41,6 +43,20 @@ L_LastReset: set HALLOWEENYEAR, 2012; goto L_Debug; +L_HalloweenValue: + mes "$hween16 value"; + mes "0 is first phase"; + mes "1 is seconde phase"; + mes "2 is event finish"; + mes "Set value"; + input @hweenvalue; + + if ((@hweenvalue < 0) || (@hweenvalue >2)) + goto L_HalloweenError; + + set HWEEN16, @hweenvalue; + goto L_Debug; + L_HalloweenTimeKey: mes "Halloween Time Key Change."; mes "Start Month?"; diff --git a/world/map/npc/annuals/halloween/gak.txt b/world/map/npc/annuals/halloween/gak.txt new file mode 100644 index 00000000..23eb4b14 --- /dev/null +++ b/world/map/npc/annuals/halloween/gak.txt @@ -0,0 +1,1278 @@ +010-1.gat,29,48,0|script|Gak|188
+{
+ set $hween16, HWEEN16;
+
+ if ($hween16 == 2) goto L_Event_Over;
+
+ if (hween16 > 4 && hween16 < 9) goto L_Collecting_Sweets;
+ if (hween16 == 9) goto L_Hunger_Sated;
+ if (hween16 == 10) goto L_Reward_Returning;
+ if (hween16 == 11) goto L_Miscount_Bugfix;
+ if (hween16 == 12) goto L_Gaks_Little_Shop;
+
+ if ($hween16 == 1) goto L_Event_Over_2;
+
+ if (hween16 == 1) goto L_Knows_Gak;
+ if (hween16 == 2) goto L_Gak_Has_Tongue;
+ if (hween16 == 3) goto L_Bones_Check;
+ if (hween16 == 4) goto L_Request_Sweets;
+
+ mes "[Broken Skeleton]";
+ set hween16, 1;
+ mes "";
+ mes "\"Gak... gak, gak! Gak gak gak gak!\"";
+ close;
+
+L_Knows_Gak:
+ if (countitem("Tongue") > 0) goto L_Has_Tongue;
+ mes "[Gak]";
+ mes "";
+ mes "\"Gak gak! Gak gak, gak gak gak!\"";
+ close;
+
+L_Has_Tongue:
+ mes "[Gak]";
+ mes "";
+ mes "The skeleton notices a slimy, dead tongue you have with you, and eyes it eagerly.";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "At least, you assume he is eager. \"Gak gak gak! Gak gak gak gak GAK GAK!\"";
+ next;
+ menu
+ "Give the tongue to him", L_Give_Tongue,
+ "Taunt him by showing him the tongue, but not giving it", L_Give_Tongue_Die,
+ "Walk away", L_Close;
+
+L_Give_Tongue:
+ if (countitem("Tongue") < 1) goto L_Tongue_Gone_Die;
+ delitem "Tongue", 1;
+ set hween16, 2;
+ mes "[Gak]";
+ mes "";
+ mes "The skeleton grabs the tongue from you and shoves it into his mouth. After stretching his jaw for some moments, he grins at you unpleasantly.";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Ssso! What bringsss you here, mortal?\"";
+ next;
+ menu
+ "I just chanced upon you here, and figured you could use a tongue.", L_Thanks,
+ "The Hallowe'en event is FINALLY here, of course I'm going to play it.", L_Whut,
+ "Nothing.", L_Close;
+
+L_Tongue_Gone_Die:
+ mes "[Gak]";
+ mes "";
+ mes "He reaches out for the tongue, but then realises you don't have it. With an angry a look on his face as a skeleton can have, he slashes at you with his remaining arm.";
+ goto L_Die;
+
+L_Give_Tongue_Die:
+ mes "[Gak]";
+ mes "";
+ mes "Angrily, the skeleton reaches out and claws you with his remaining arm.";
+ if (countitem("Tongue") < 1) goto L_Die;
+ next;
+ delitem "Tongue", 1;
+ mes "[Gak]";
+ mes "";
+ mes "As you fall, he takes the tongue from you anyway.";
+ set hween16, 2;
+ goto L_Die;
+
+L_Die:
+ close2;
+ set Hp, 0;
+ end;
+
+L_Thanks:
+ mes "[Gak]";
+ mes "";
+ mes "\"Well, that wasss mighty thoughtful of you, friend... I wonder if perhapsss you could do me another favour?\"";
+ next;
+ menu
+ "Sure! Anything you want.", L_Sure,
+ "I'll be right, thanks.", L_Close;
+
+L_Whut:
+ mes "[Gak]";
+ mes "";
+ mes "\"What?\"";
+ close;
+
+L_Gak_Has_Tongue:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hello again, little friend. Could you posssibly do me another favour?\"";
+ next;
+ menu
+ "I sure can, what is it?", L_Sure,
+ "Uh, no thanks.", L_Close;
+
+L_Sure:
+ mes "[Gak]";
+ mes "";
+ mes "\"It wasss nice if you to bring me thisss tongue, but asss you can sssee I still have a few things missing.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Maybe you could bring me a few bonesss so I could patch myssself up?\"";
+ next;
+ menu
+ "I'm on it!", L_Bones,
+ "Nah, that sounds a bit boring.", L_Close;
+
+L_Bones:
+ set hween16, 3;
+ mes "[Gak]";
+ mes "";
+ mes "\"Wonderful! I can't wait until I can properly walk around attacking thingsss again.\"";
+ close;
+
+L_Bones_Check:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hallo again. Have you brought me any bonesss?\"";
+ next;
+ setarray @menuitems$, "", "", "", "", "";
+ set @c, 0;
+
+ if (countitem("Bone") < 5) goto L_bones_four;
+ set @menuitems$[@c], "Take five bones.";
+ set @menuid[@c], 0;
+ set @c, @c + 1;
+ goto L_bones_four;
+
+L_bones_four:
+ if (countitem("Bone") < 4) goto L_bones_three;
+ set @menuitems$[@c], "Take four bones.";
+ set @menuid[@c], 1;
+ set @c, @c + 1;
+ goto L_bones_three;
+
+L_bones_three:
+ if (countitem("Bone") < 3) goto L_bones_two;
+ set @menuitems$[@c], "Take three bones.";
+ set @menuid[@c], 2;
+ set @c, @c + 1;
+ goto L_bones_two;
+
+L_bones_two:
+ if (countitem("Bone") < 2) goto L_bones_one;
+ set @menuitems$[@c], "Take two bones.";
+ set @menuid[@c], 3;
+ set @c, @c + 1;
+ goto L_bones_one;
+
+L_bones_one:
+ if (countitem("Bone") < 1) goto L_bones_menu;
+ set @menuitems$[@c], "Take one bone.";
+ set @menuid[@c], 4;
+ set @c, @c + 1;
+ goto L_bones_menu;
+
+L_bones_menu:
+ set @menuitems$[@c], "I don't have any bones.";
+ set @menuid[@c], 5;
+ set @c, @c + 1;
+ menu
+ @menuitems$[0], L_bones_menu_select,
+ @menuitems$[1], L_bones_menu_select,
+ @menuitems$[2], L_bones_menu_select,
+ @menuitems$[3], L_bones_menu_select,
+ @menuitems$[4], L_bones_menu_select,
+ @menuitems$[5], L_bones_menu_select,
+ @menuitems$[6], L_bones_menu_select;
+
+L_bones_menu_select:
+ set @menu, @menu -1;
+ if (@menu >= @c) close;
+ if (@menuid[@menu] == 5) goto L_offer_no_items;
+ mes "[Gak]";
+ mes "";
+ mes "Ssso many? Jussst what I needed. Let me sssee if they are sssuitable...";
+ next;
+
+ if (@menuid[@menu] == 0) set @bonecount, 5;
+ if (@menuid[@menu] == 1) set @bonecount, 4;
+ if (@menuid[@menu] == 2) set @bonecount, 3;
+ if (@menuid[@menu] == 3) set @bonecount, 2;
+ if (@menuid[@menu] == 4) set @bonecount, 1;
+ if (countitem("Bone") < @bonecount) goto L_Not_Enough_Bones;
+
+ delitem "Bone", @bonecount;
+ set @bonecount, @bonecount + 1;
+ set @hween16_givebones, 0;
+ goto L_Bone_Loop;
+// in a rush, raising and then lowering is the best thing I can think of to make the loop work properly.
+
+L_Bone_Loop:
+ set @bonecount, @bonecount - 1;
+ if @bonecount < 1 goto L_Bones_Feedback;
+ set @temp1, rand(@bonecount + 5);
+ if @temp1 > @bonecount goto L_Bone_Loop;
+ set @hween16_givebones, @hween16_givebones + 1;
+ goto L_Bone_Loop;
+
+L_Not_Enough_Bones:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hey... you don't have that many bonesss!\"";
+ close;
+
+L_offer_no_items:
+ mes "[Gak]";
+ mes "";
+ mes "\"Sssucch a pity...\"";
+ close;
+
+L_Bones_Feedback:
+ if (@hween16_givebones == 0) goto L_Bones_Feedback_None;
+ mes "[Gak]";
+ mes "";
+ mes "\"Hmm... I think I can ussse " + @hween16_givebones + " of thessse bonesss.\"";
+ next;
+ set hween16_bonecount, hween16_bonecount + @hween16_givebones;
+ if (hween16_bonecount > 7) goto L_Enough_Bones;
+ mes "[Gak]";
+ mes "";
+ mes "\"But I ssstill need more! Pleassse bring them to me.\"";
+ close;
+
+L_Bones_Feedback_None:
+ mes "[Gak]";
+ mes "";
+ mes "\"I can't ussse any of theesse boness. I need more!\"";
+ close;
+
+L_Enough_Bones:
+ set hween16, 4;
+ mes "[Gak]";
+ mes "";
+ mes "\"And that should be enough for my dark purposssesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Now... I wonder...\" He flicks his tongue around his dry and ancient teeth. \"I wonder if you could get me sssomething to eat?\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"All thisss hard work gathering bonesss hasss made me...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"HUNGRY!\"";
+ next;
+ menu
+ "Uh, what would you like to eat?", L_Request_Sweets,
+ "This is a burial site, I'm sure there are plenty of worms around.", L_Worms,
+ "Me too, actually. I gotta eat. Bye!", L_Close;
+
+L_Worms:
+ mes "[Gak]";
+ mes "";
+ mes "\"True... but they are sssmall, and not asss sssweet asss what I'd like!\"";
+ next;
+ goto L_Request_Sweets;
+
+L_Request_Sweets:
+ mes "[Gak]";
+ mes "";
+ mes "\"Asss I'm sssure you know, it wasss Hallowe'en recently. I'll bet you had great time collecting sssweetsss with your friendsss, hm?\"";
+ next;
+ menu
+ "The guy organising that was too lazy - it never happened.", L_Time_Management,
+ "Well, what's it to you?", L_Leftover_Sweets,
+ "You're creeping me out.", L_Close;
+
+L_Time_Management:
+ mes "[Gak]";
+ mes "";
+ mes "\"That'sss jussst too bad. People with poor time management shouldn't be put in charge of important thingsss like that.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But never mind. Even if you didn't get to go trick-or-treating, there will ssstill be plenty of dropped sssweets lying around.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"People are ssso carelesss! To my benefit, of courssse. Ssso what do you sssay? Can you bring me asss many sssweetsss as you can find?\"";
+ menu
+ "I guess so.", L_Confirm_Sweethunting,
+ "No, I'd rather eat 'em myself.", L_Close;
+
+L_Leftover_Sweets:
+ mes "[Gak]";
+ mes "";
+ mes "\"Each year at Hallowe'en, all you little girlsss and boysss run about begging for candy. And each year, ssso much of it is dropped, and wasssted!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But I don't mind eating sssweetsss just becaussse they're a couple of weeksss old! Bring me lotsss, and you shall have a reward.\"";
+ next;
+ menu
+ "Well, okay then.", L_Confirm_Sweethunting,
+ "Wait, free sweets!? Why did no one tell me?", L_Close;
+
+L_Confirm_Sweethunting:
+ set hween16, 5;
+ mes "[Gak]";
+ mes "";
+ mes "\"My ssstomach groansss with anticipa - uh, well, my bonesss creak with anticipation. Tell all your little friendsss to bring my any sssweetsss they find, too: I really am VERY hungry!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Remember, though, and thisss isss important: the more sssweetsss YOU PERSSSONALLY bring me, the better YOUR reward will be!\"";
+ close;
+
+L_Collecting_Sweets:
+ mes "[Gak]";
+ mes "";
+ mes "\"Ssso, do you have any sssweetsss for me?\"";
+ next;
+ setarray @menuitems$, "", "", "", "", "";
+ set @c, 0;
+
+ if (countitem("TonoriDelight") < 1) goto L_Sweets_Marshmallow;
+ set @menuitems$[@c], "Tonori Delight.";
+ set @menuid[@c], 0;
+ set @c, @c + 1;
+ goto L_Sweets_Marshmallow;
+
+L_Sweets_Marshmallow:
+ if (countitem("Marshmallow") < 1) goto L_Sweets_JellySkull;
+ set @menuitems$[@c], "Marshmallow.";
+ set @menuid[@c], 1;
+ set @c, @c + 1;
+ goto L_Sweets_JellySkull;
+
+L_Sweets_JellySkull:
+ if (countitem("JellySkull") < 1) goto L_Sweets_CandyPumpkin;
+ set @menuitems$[@c], "Jelly Skull.";
+ set @menuid[@c], 2;
+ set @c, @c + 1;
+ goto L_Sweets_CandyPumpkin;
+
+L_Sweets_CandyPumpkin:
+ if (countitem("CandyPumpkin") < 1) goto L_Sweets_Menu;
+ set @menuitems$[@c], "Candy Pumpkin.";
+ set @menuid[@c], 3;
+ set @c, @c + 1;
+ goto L_Sweets_Menu;
+
+L_Sweets_Menu:
+ set @menuitems$[@c], "I don't have any sweets.";
+ set @menuid[@c], 4;
+ set @c, @c + 1;
+ menu
+ @menuitems$[0], L_Sweets_Menu_Select,
+ @menuitems$[1], L_Sweets_Menu_Select,
+ @menuitems$[2], L_Sweets_Menu_Select,
+ @menuitems$[3], L_Sweets_Menu_Select,
+ @menuitems$[4], L_Sweets_Menu_Select,
+ @menuitems$[5], L_Sweets_Menu_Select;
+
+L_Sweets_Menu_Select:
+ set @menu, @menu -1;
+ if (@menu >= @c) close;
+
+ if (@menuid[@menu] == 0) set @giveitem$, "TonoriDelight";
+ if (@menuid[@menu] == 1) set @giveitem$, "Marshmallow";
+ if (@menuid[@menu] == 2) set @giveitem$, "JellySkull";
+ if (@menuid[@menu] == 3) set @giveitem$, "CandyPumpkin";
+ // We need something to handle what happens when we select that the character does not have any sweets
+ if (@menuid[@menu] == 4) goto L_offer_no_items;
+
+ mes "[Gak]";
+ mes "";
+ mes "\"How many of those do you have for me?\"";
+ next;
+ menu
+ "Take all of them.", L_Nb_Sweets_Menu_Select,
+ "One hundred of them.", L_Nb_Sweets_Menu_Select,
+ "Fifty of them.", L_Nb_Sweets_Menu_Select,
+ "Ten of them.", L_Nb_Sweets_Menu_Select,
+ "Five of them.", L_Nb_Sweets_Menu_Select,
+ "One of them.", L_Nb_Sweets_Menu_Select,
+ "This many...", L_Nb_Sweets_Menu_Select;
+
+L_Nb_Sweets_Menu_Select:
+ set @menu, @menu - 1;
+
+ if (@menu == 0) set @givecounter, countitem(@giveitem$);
+ if (@menu == 1) set @givecounter, 100;
+ if (@menu == 2) set @givecounter, 50;
+ if (@menu == 3) set @givecounter, 10;
+ if (@menu == 4) set @givecounter, 5;
+ if (@menu == 5) set @givecounter, 1;
+ if (@menu == 6) input @givecounter;
+ if (@menu > 6) close;
+ if (countitem(@giveitem$) < @givecounter) goto L_Not_Enough_Sweeties;
+ delitem @giveitem$, @givecounter;
+ if ($hween16 == 1) set hween16, hween16 + 1;
+ if (@giveitem$ == "TonoriDelight") set $hween16_tondel, $hween16_tondel + @givecounter;
+ if (@giveitem$ == "Marshmallow") set $hween16_mmallow, $hween16_mmallow + @givecounter;
+ if (@giveitem$ == "JellySkull") set $hween16_jelskul, $hween16_jelskul + @givecounter;
+ if (@giveitem$ == "CandyPumpkin") set $hween16_canpump, $hween16_canpump + @givecounter;
+ if (@giveitem$ == "TonoriDelight") set hween16_collect_tondel, hween16_collect_tondel + @givecounter;
+ if (@giveitem$ == "Marshmallow") set hween16_collect_mmallow, hween16_collect_mmallow + @givecounter;
+ if (@giveitem$ == "JellySkull") set hween16_collect_jelskul, hween16_collect_jelskul + @givecounter;
+ if (@giveitem$ == "CandyPumpkin") set hween16_collect_canpump, hween16_collect_canpump + @givecounter;
+
+ set hween16_collect, hween16_collect + @givecounter;
+
+ mes "[Gak]";
+ mes "";
+ mes "\"Thank you for your generousss donation to my caussse. Ssso far, you and your friendsss have brought me " + $hween16_tondel + " Tonori Delightsss, " + $hween16_mmallow + " Marshmallowsss, " + $hween16_jelskul + " Jelly Ssskullsss, and " + $hween16_canpump + " Candy Pumpkinsss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"You persssonally have brought me " + hween16_collect + " sssweetsss.\"";
+ next;
+ if (hween16 > 8) goto L_Hunger_Sated;
+ mes "[Gak]";
+ mes "";
+ if (hween16 == 5) mes "\"But I ssstill need more! I'm ssstill HUNGRY!\"";
+ if (hween16 == 6) mes "\"I ssstill need a few more, however... I'm ssstill HUNGRY!\"";
+ if (hween16 == 7) mes "\"I'd like more, though. I'm ssstill hungry.\"";
+ if (hween16 == 8) mes "\"Hmm... what a meal! Although, jussst a couple more sssweetsss wouldn't hurt. I'm ssstill a bit peckish.\"";
+ close;
+
+L_Not_Enough_Sweeties:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hey! Don't teassse me; you know very well that you don't have that many sssweetsss.\"";
+ close;
+
+L_Hunger_Sated:
+ set hween16, 10;
+ mes "[Gak]";
+ mes "";
+ mes "The last of the sweets falls out the bottom of the skeleton's skull, bouncing down between his ribs before tumbling out to join the countless thousands that lie in a vast mound of them beside him.";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Buuurp!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Now that, my friend, was a DELICIOUSSS meal, if I do sssay ssso myssself. It'sss not every day I get to feassst upon sssuch delectable treatsss.\"";
+ next;
+ menu
+ "Okay, whatever. Now how about my reward?", L_Reward,
+ "I'm pleased to hear it. Now... a reward, perhaps?", L_Polite_Request,
+ "It was my pleasure.", L_My_Pleasure;
+
+L_Reward_Returning:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hello again, friend.\"";
+ next;
+ menu
+ "Can I have a reward now?", L_Reward,
+ "Hello.", L_Close;
+
+L_Polite_Request:
+ mes "[Gak]";
+ mes "\"Of courssse a reward! Jussst who do you think I am, not to giving rewardsss to people who were kind enough to give me a bit of a hand?\"";
+ next;
+ goto L_Reward;
+
+L_My_Pleasure:
+ mes "[Gak]";
+ mes "";
+ mes "\"Good, good!\"";
+ close;
+
+L_Reward:
+ mes "[Gak]";
+ mes "";
+ // took out here a lot
+ mes "\"Well, you DID bring me an awful lot of sssweetsss. I have with me a sssmall collection of preciousss itemsss, thingsss I've acquired in variousss waysss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I can let you have sssome thingsss out of thisss collection. You brought me " + hween16_collect + " sssweetsss, ssso I will give you itemsss worth twice that amount of gold piecesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"For example, if you had given me 1,000 sssweetsss I would give you 2,000GP worth of itemsss. Except actually, I don't like marshmallowsss that much. Thossse are equivalent to jussst 1GP each.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Not to say that I'm sure of your currencccy here... but it sssshould give you an idea, yessss?\"";
+ next;
+ set hween16, 12;
+ set hween16_credits, hween16_collect_tondel + hween16_collect_jelskul + hween16_collect_canpump;
+ set hween16_credits, hween16_credits * 2;
+ set hween16_credits, hween16_credits + hween16_collect_mmallow;
+ mes "[Gak]";
+ mes "";
+ mes "\"Looksss like you have " + hween16_credits + " ... 'creditsss', shall we call them? Now, let'ss have a look at my waresss.\"";
+ next;
+ goto L_Shop_Inventory;
+
+L_Gaks_Little_Shop:
+ mes "[Gak]";
+ mes "";
+ mes "\"You have " + hween16_credits + " creditsss. Tell me what you'd like to buy - or asssk me about it. Sssome of thessse itemsss have very interesssting ssstories attached to them.\"";
+ next;
+ goto L_Shop_Inventory;
+
+L_Shop_Inventory:
+ menu
+ "Opera Mask (9,000 credits)", L_Buy_OperaMask,
+ "Tell me about the Opera Mask.", L_Info_OperaMask,
+ "Jester Mask (7,000 credits)", L_Buy_JesterMask,
+ "Tell me about the Jester Mask.", L_Info_JesterMask,
+ "Witch's Hat (4,500 credits)", L_Buy_WitchsHat,
+ "Tell me about the Witch's Hat.", L_Info_WitchsHat,
+ "Goblin Mask (2,500 credits)", L_Buy_GoblinMask,
+ "Tell me about the Goblin Mask.", L_Info_GoblinMask,
+ "Guy Fawkes Mask (800 credits)", L_Buy_GuyFawkesMask,
+ "Tell me about the Guy Fawkes Mask.", L_Info_GuyFawkesMask,
+ "Scissors (500 credits)", L_Buy_Scissors,
+ "Tell me about the Scissors.", L_Info_Scissors,
+ "Shock Sweet (200 credits)", L_Buy_ShockSweet,
+ "Tell me about Shock Sweets.", L_Info_ShockSweet,
+ "Bone Arrow (1 credit)", L_Buy_BoneArrow,
+ "Tell me about Bone Arrows.", L_Info_BoneArrow,
+ "Nothing today, thanks.", L_Close;
+
+L_Buy_OperaMask:
+ if (hween16_credits < 9000) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"Ah, yesss! A friend of mine usssed to wear that masssk. He wasss very famousss in hisss time - had quite a fandom.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Opera Masssk?\"";
+ next;
+ menu
+ "Yes.", L_Buy_OperaMask_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_OperaMask_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 9000) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 9000;
+ set hween16_paid, hween16_paid + 9000;
+ getitem "OperaMask", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_JesterMask:
+ if (hween16_credits < 7000) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"I'm sssure you'll have fun with thisss masssk. 'Fun', get it?\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Jessster Masssk?\"";
+ next;
+ menu
+ "Yes.", L_Buy_JesterMask_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_JesterMask_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 7000) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 7000;
+ set hween16_paid, hween16_paid + 7000;
+ getitem "JesterMask", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_WitchsHat:
+ if (hween16_credits < 4500) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"I was wondering witch one you would take.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Witch'sss Hat?\"";
+ next;
+ menu
+ "Yes.", L_Buy_WitchsHat_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_WitchsHat_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 4500) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 4500;
+ set hween16_paid, hween16_paid + 4500;
+ getitem "WitchHat", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_GoblinMask:
+ if (hween16_credits < 2500) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"Hmm, I never much liked that one myssself.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Goblin Masssk?\"";
+ next;
+ menu
+ "Yes.", L_Buy_GoblinMask_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_GoblinMask_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 2500) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 2500;
+ set hween16_paid, hween16_paid + 2500;
+ getitem "GoblinMask", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_GuyFawkesMask:
+ if (hween16_credits < 800) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"Cheap, huh? Barely more than a penny for thisss guy.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Guy Fawkesss Masssk?\"";
+ next;
+ menu
+ "Yes.", L_Buy_GuyFawkesMask_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_GuyFawkesMask_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 800) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 800;
+ set hween16_paid, hween16_paid + 800;
+ getitem "GuyFawkesMask", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_Scissors:
+ if (hween16_credits < 500) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"My own pair of ssscissssorsss! But I haven't been needing them lately asss much asss I usssed to.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you sssure you want to buy the Scissors?\"";
+ next;
+ menu
+ "Yes.", L_Buy_Scissors_Yes,
+ "No.", L_Gaks_Little_Shop;
+
+L_Buy_Scissors_Yes:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inventory;
+ if (hween16_credits < 500) goto L_Too_Few_Credits;
+ set hween16_credits, hween16_credits - 500;
+ set hween16_paid, hween16_paid + 500;
+ getitem "Scissors", 1;
+ mes "[Gak]";
+ mes "";
+ mes "\"Enjoy it!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_ShockSweet:
+ if (hween16_credits < 200) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"I'll be glad to be rid of sssome of thessse terrifying sssweetsss...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"How many would you like to buy?\"";
+ next;
+ menu
+ "1", L_Buy_Nb_ShockSweet,
+ "2", L_Buy_Nb_ShockSweet,
+ "3", L_Buy_Nb_ShockSweet,
+ "4", L_Buy_Nb_ShockSweet,
+ "5", L_Buy_Nb_ShockSweet,
+ "None", L_Buy_Nb_ShockSweet;
+
+L_Buy_Nb_ShockSweet:
+ if (@menu < 0 || @menu > 6) close;
+ if (@menu == 6) goto L_Gaks_Little_Shop;
+ set @shocksweets, @menu;
+ set @cost, @shocksweets * 200;
+ if (hween16_credits < @cost) goto L_Too_Few_Credits;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("ShockSweet") < 1) goto L_Full_Inventory;
+ set hween16_credits, hween16_credits - @cost;
+ set hween16_paid, hween16_paid + @cost;
+ getitem "ShockSweet", @shocksweets;
+ mes "[Gak]";
+ mes "";
+ mes "\"I would sssay 'enjoy them', but I doubt you will.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Buy_BoneArrow:
+ if (hween16_credits < 1) goto L_Too_Few_Credits;
+ mes "[Gak]";
+ mes "";
+ mes "\"Deadly, but nearly weightlessss. A good choice!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"How many would you like to buy?\"";
+ next;
+ menu
+ "1", L_Buy_Nb_BoneArrow,
+ "5", L_Buy_Nb_BoneArrow,
+ "10", L_Buy_Nb_BoneArrow,
+ "50", L_Buy_Nb_BoneArrow,
+ "100", L_Buy_Nb_BoneArrow,
+ "500", L_Buy_Nb_BoneArrow,
+ "1000", L_Buy_Nb_BoneArrow,
+ "None", L_Buy_Nb_BoneArrow;
+
+L_Buy_Nb_BoneArrow:
+ if (@menu < 1 || @menu > 8) close;
+ if (@menu == 1) set @bonearrows, 1;
+ if (@menu == 2) set @bonearrows, 5;
+ if (@menu == 3) set @bonearrows, 10;
+ if (@menu == 4) set @bonearrows, 50;
+ if (@menu == 5) set @bonearrows, 100;
+ if (@menu == 6) set @bonearrows, 500;
+ if (@menu == 7) set @bonearrows, 1000;
+ if (@menu == 8) goto L_Gaks_Little_Shop;
+ if (hween16_credits < @bonearrows) goto L_Too_Few_Credits;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("BoneArrows") < 1) goto L_Full_Inventory;
+ set hween16_credits, hween16_credits - @bonearrows;
+ set hween16_paid, hween16_paid + @bonearrows;
+ getitem "BoneArrows", @bonearrows;
+ mes "[Gak]";
+ mes "";
+ mes "\"Usse them wisssely. They're hard to come by.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Too_Few_Credits:
+ mes "[Gak]";
+ mes "";
+ mes "\"Are you trying to kid me? You haven't enough creditsss for that!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_OperaMask:
+ mes "[Gak]";
+ mes "";
+ mes "\"Ah, yesss. My Opera Masssk. There'sss quite a ssstory sssurrounding thisss one...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"One day in Tonori, many yearsss ago, the Princessss Azura mysssteriousssly vanished. The King'sss men sssearched high and low, but found no trace of her.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"It wasss assssumed - correctly - that she mussst have been kidnapped. Ssso the King put a hefty reward on her safe return - a hundred thousssand gold piecesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"However, the Princessss wasss not returned. One year after she had disssappeared, the King raisssed the reward by fifty thousssand gold - and each year after, too, for ssstill the Princessss wasss not returned.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Asss time went by, the King became more and more sssure that hisss daughter mussst be dead. He wasss, however, wrong...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"At that very moment, a pirate galleon wasss sssailing merrily along the Rivalry Coassst. Itsss crew sssang ssea-shantiesss and bounced around the rigging.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Sssuddenly, though, the pirate captain ssspied sssomething terrible ahead of them. Water ssswirled around and around like a giant bathtub being emptied....\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"A maelssstrom!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The captain tried to tell hisss crew to turn the ship around, but they couldn't hear him over their sssinging. They were ssswept, ssspiraling, into the cavernousss hole in the sssea.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The piratesss realisssed, then, what was happening, and ssstopped sssinging at once. The captain ordered them to remove the sssailsss and tie them down like parachutesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The plan worked. Asss they fell, the air caught under the sssailsss and ssslowed the falling of the ship. Sssoon they landed gently on the bottom of the ocean.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Peering around in the gloom, the pirate captain sssaw a prone figure on a rock nearby. He climbed out of the ship and hurried over.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But before he could reach them, a jet of flame ssstreaked passst above him, and a great ssslimy creature emerged from the sssea in front of him...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"A dragon!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The captain jumped out of the way asss the dragon once again breathed fire. The captain turned to sssee hisss ship in flamesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The dragon sssmiled evilly and opened itsss mouth to eat the captain. But when it had ssset the ship on fire it had accidentally lit the fusssesss of the cannonsss, and at thisss moment they fired.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Cannonball after cannonball thudded into the dragon, sssending it reeling back into the sssea. The captain picked up the figure from the rock, and looked about to sssee how he might essscape.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"And asss he did, it grew very dark; looking above him, he sssaw that the maelssstorm wasss collapsssing. He held the figure tightly to keep them sssafe, and braced himssself.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The water hit them from either ssside asss though Triton, the god of the sssea, had clapped hisss handsss upon them. They were lifted from the bottom and carried with great ssspeed to the sssurface.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"They rossse bessside a ship of the King'sss navy, aboard it a mage - who had closssed the maelssstorm - and the King himssself, who had come to watch.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"And asss both he and the pirate captain looked down to the figure whom the latter had found on the bottom of the sssea, they gasssped at who it wasss...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The Princessss!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"In return for finding her, the pirate captain was given sssix hundred thousssand gold piecesss, a Royal Pardon for Piracy, a Pirate Permit and the Princessss'sss hand in marriage.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "The skeleton pausssesss for a moment to sssigh in rememberance. \"It wasss a very good opera,\" he continues.";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"After it had ended, I went backssstage and bought an opera masssk sssigned by the lead actor, and alssso a nice cossstume that I needed for work.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Thisss isss, of courssse, that very masssk. It'sss worth a lot becausssse of the autograph.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_JesterMask:
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Ah, yesss. Quite a ssscary little thing, isssn't it? And it hasss quite a hissstory, too.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Back in the lassst daysss of the Tonorian King Efeniunkanduiti Khan there were many plotsss to remove him from the throne, and the biggessst sssource of thessse plotsss wasss the Bell Sssociety.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The King wasss quite worried about all thisss, asss you would imagine, ssso he hired a jessster to make light of any misssfortune.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The jessster wasss undoubtedly funny, and the ssscary yet sssilly cossstume he wore ssseemed to emphasssissse the hilarity of him. The King cheered consssiderably with the jessster juggling, doing sssomersssaults and telling punsss in hisss court.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But there wasss one man who didn't like the jessster at all: Prince Akhendo-Al Mosssesssmuchasssdad Khan. The jessster'sss masssk concealed hisss experessssion, which disssconcerted Akhendo-Al greatly.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"He tried to explain hisss feelingsss to hisss father, but the King wasssn't paying attention. He wasss too busssy laughing at the joke the jessster had jussst made about Akhendo-Al'sss sssour face.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But the King should have lissstened before it wasss too late. One night a piercing ssscream woke the palace, and ssservants came hurrying to the King'sss chamber: but he wasss already dead. A long, wicked knife had been thrussst into hisss heart.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Akhendo-Al looked around at the gathered ssservantsss and guardsss, and ssaw what he had sssussspected from the firssst: the jessster wasss gone!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"He raced back the way he had come, and down to the entrance hall. Asss he reached the main doorsss, a voice behind him laughed. He turned to sssee the jessster at the top of the ssstairsss he had jussst dessscended!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The chassse wasss on. Akhendo-Al ran asss fassst asss he could back up the ssstairsss, and down a passssage which the jessster had disssappeared down. Laughter echoed around him asss he ran through the palace, occassssionally catching a glimpssse of the jessster ahead.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Sssoon, Akhendo-Al found himssself at the top of the palace'sss bell tower. On the other ssside of the great bellsss he sssaw the jessster, sssilhouetted againssst the moon, and sssmiling cruelly.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"'There's no escape for you now,' Akhendo-Al told him, and drew hisss sssabre. 'Try to run, and I shall cut you down.'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But the jessster sssmiled, and turned to ssstand at the edge of the tower, looking down at the moat that lay far below.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Akhendo-Al ssstared asss the jessster opened hisss armsss wide...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Then the jessster turned, and shrugged. 'But I've already accomplished my tasssk. The tyrant king isss dead.'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The Prince tied the jessster'sss handsss with sssome ssspare bell-rope, and took him down to a group of palace guards. Together, they led the jessster to the dungeonsss and sssecured him. Angrily, the Prince removed the man'sss masssk. Then he and the guardsss gasssped in sssurprissse.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The man wasss Gorrik, captain of the palace guard!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Gorrik gave a mossst long-winded explanation of why he wasss dressssed asss a jessster, and assssurred Akhendo-Al that he had certainly not killed the king. But the prince wasss now king, and he knew that Gorrik wasss the murderer. He sssentenced the man to execution.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"To hisss disssapointment, the old guard captain essscaped and fled the country. He came here, and thisss isss the very jessster masssk he wore.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_WitchsHat:
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Which? Ah, yesss, that one. Hmm. Well, many yearsss ago thessse foressstsss usssed to be home to witchesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I came upon one myssself sssoon after I arrived in Argaes, many yearsss ago, while I wasss alive. I had recently been forced to leave my mother country, where we had not many treesss - the vassst foressstsss were very ssstrange to me.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I wasss ssstranded far to the Sssouth of here - that area isss ssstill wildernesss today. For daysss I travelled through the thick foressstsss, looking for civilation or - at leassst - sssomething to eat.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Eventually I came upon a sssmall cottage in a clearing. Overcome with hunger, I thought I might knock and asssk if they had anything to eat. But asss I approached, I noticed sssomething very ssstrange...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The entire houssse wasss made of sssweeetsss! The walls were bricksss of tonori delight, the wallsss were translucent jelly ssskullsss sssquished into a pane, the roof wasss thatched with marshmallow and the ground wasss paved with flattened candy pumpkinsss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I quickly forgot about asssking for food and ssset about eating the houssse. I took great handfulsss from the wallsss and jammed them into my mouth. It lessss than a minute my face wasss sssmeared all over, and my handsss ssso covered in sssticky sssweetsss that you couldn't sssee any ssskin.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Then the door sssuddenly opened, and out ssstepped what I knew at once wasss a witch. The long black cloak, the pointy black hat, and the broomssstick she clutched in one hand aided me in thisss deduction.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Well, there'sss really only one thing you can do when a witch catchesss you eating her wallsss. You run for it. But I barely had time to move before she cassst an evil ssspell. I fell forward on my face, and felt myssself being dragged back toward her by invisssible forcesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Thessse sssame forcesss then flipped me over onto my back. The witch looked furiousssly angry. 'Why,' she sssaid, 'are you eating my wall?'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The anssswer 'Becaussse I wasss hungry' ssseemed a fairly obviousss one to me, but you don't act sssmart to a witch. I told her I had been unaware that the cottage wasss inhabited.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Well, that ssset her glaring even more. 'You didn't see the smoke coming from the chimney? You didn't stop to consider that sweets left lying around in a wood are hardly likely to be so clean and fresh and... well... there?'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I complimented her on how fine her sssweetsss were. She sssighed wearily.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"'But you've no idea,' she told me, 'how tiresome it is to keep them looking like that. I'm always cooking up more sweets for repairs, which I need to do constantly because my walls are always getting eaten by vermin.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"'I have a large store of sweets underneath my house, to which I add and from which I take every morning. Patching holes, shaving away layers of sweets that have grown mouldy and replacing with a thin layer of new sweets... and when it rains! You wouldn't believe!'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"She glanced up at the roof of her houssse. 'I have a huge big sheet of waterproof canvas,' she went on. 'And as soon as it looks like rain I have to rush out here and tie it over my roof - if this house gets rained on, that's the end of it, I tell you. I'd have to rebuild from scratch.'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I hadn't realisssed what hard work the upkeep for a houssse made from sssweetsss wasss. I wasss now very sssorry for eating ssso much of her houssse without even asssking, and I told her ssso. But she glared again.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"'Never you mind MY worries,' she told me. 'You should be more concerned about your own!'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I remember ssswallowing nervousssly. 'My worriesss?'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"'I hope you don't think you're leaving here,' sssaid the witch. 'You're staying and working for me until you've repaid what you ate.'\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Thisss wasssn't ssso bad asss I'd firssst thought it would be. I had three mealssss a day of the witch'sss cooking - not sssweetsss, but real mealsss and they were ever ssso much nicer. The work wasss hard, but I had many interesssting conversssationsss with the witch.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"It took sssome time to repay my debt, but finally I had worked enough. The witch - whossse name wasss Alissssa - gave me a bag of sssweetsss to take with me when I left. But I didn't want to go - what wasss there for me in the North?\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Ssso I ssstayed, in fact. We ate that bag of sssweetsss together, and from then on we did half the choresss each. Thossse were great daysss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But it wasss dangerousss, living down there in the Sssouth, back then. One night were were attacked by a tribe of goblinsss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I tried to protect Alissssa, but I wasss killed. I don't know what happened to her, becaussse it wasss many yearsss before I returned from the dead.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"When I did, I found myssself lying in a clearing in the foressst. The bracken wasss thickly growing and there were many young treesss, but sssearching around I dissscovered a trapdoor leading into a cellar. I wasss in the remainsss of our houssse.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"When I returned from the cellar, I ssspotted sssomething black lying in the grassss. It wasss Alissssa's pointy hat - unharmed by the yearsss becaussse of itsss magic.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "The skeleton sighs as well as he can without lungs. \"Thisss witch'sss hat isss, of courssse, that very one. I've hung on to it for sssuch a long time - you couldn't imagine how long. I think it'sss time to let it go. If you truly want it, you can have it.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_GoblinMask:
+ mes "[Gak]";
+ mes "";
+ mes "\"Aha, yesss. There usssed to be a village far to the Sssouth where they wore thossse.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"In thossse daysss there were many goblin tribesss down there, who would regularly attack human villagesss. No one really knew why, it wasss jussst what goblinsss did.\" He looks sad for a moment. \"Well, in thisss village - which wasss called Turnap - they devisssed a clever ssscheme to protect themssselvesss from the goblinsss...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"They made themssselvesss masssksss, like thisss one, to look like goblinsss. They figured the goblinsss wouldn't attack them if they did thisss.\" He grins like only a skeleton can. ";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Of courssse, thossse goblinsss jussst thought the people of Turnap were another tribe that wasss invading there territory. They attacked and killed everyone.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I had lived nearby for sssome time, and had been given thisss masssk to protect myssself on one of my visssitsss there. It did me asss much good asss it did them...\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"You can have it, if you want, but jussst remember: it won't protect you from the goblinsss!\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_GuyFawkesMask:
+ mes "[Gak]";
+ mes "";
+ mes "\"Over in Tonori there isss a traditional celebration known asss 'Guy Fawkesss Day'. Sssee, many yearsss ago there wasss a guy named Fawkesss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"He wasss a member of a sssecret sssociety. The Bell Sssociety, it wasss called. Their aim wasss to rid Tonori of itsss king, Efeniunkanduiti Khan.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Now, Fawkesss was a pretty exciteable guy. He had thessse visssionsss of blowing up the entire palace. The other membersss of the sssociety thought thisss wasss unnecessssary, but would neverthelessss be pretty cool.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Ssso, over time, they acquired enough explosssivesss to put Fawkesss' plansss into action. One dark night in late Autumn they gained entry to the palace, and placed great barrelsss of explosssivesss in ssstrategic locationsss.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Then came the time to light the fussse. The othersss went outssside to watch the show, and Fawkesss crept back down the cellarsss, where the ten-minute fussse lay waiting to be lit.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Unfortunately, it wasss at that moment that sssome of the Palace Guard showed up. They were a disssobient pair - they rarely lissstened to the commandsss of their ssseniorsss, and were currently sssneaking down to the cellarsss to sssteal themssselves sssome wine.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Of courssse, when they sssaw Fawkesss about to light the fussse they quickly ssseized him and tied him to a possst. After they had poured themssselvesss a drink, they ssstarted to interrogate him.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But dessspite their tauntsss and no matter how many timesss they hit him, Fawkesss sssaid nothing. He wasss a brave guy.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Eventually, the guardsss told him that even if he didn't ssspeak, they could sssee that he had been trying to blow up the palace. They were completely drunk by thisss time, and sssaid that once they had gone to relieve themssselvesss they would hang him right there in the cellar.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Asss it isss tradional to do before executing sssomeone, the guardsss gave Fawkesss a pipe for hisss lassst sssmoke. They then left to ussse the toilet.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"It'sss rather obviousss what happened next. Once he wasss sssure they had gone, Fawkesss rolled himssself over in hisss bondsss and pressssed the sssmoking pipe againssst the fussse.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The ressst of the Bell Sssociety, ssstanding outssside the palace, had a magnificent view asss the centre of the palace was blown into the sssky and the wallsss crumpled outwardsss. Asss Fawkesss had not returned, they guessssed that he mussst not have been able to essscape.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The two palace guardsss, unfortunately, sssurvived. Asss the wall collapsssed they crashed into the moat along with the ressst of the rubble, but managed to free themssselves.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The Bell Sssociety essscaped, sssad for their lossss of Fawkesss but jubilant that they had sssuccesssfully killed the King. Unfortunately, the newssspaper next day revealed that he had not even been in the palace at the time! He wasss not even hurt!\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"The people of Tulimshar thought it very funny that sssuch a lot of effort had come to nothing. The palace was of courssse dessstroyed, but the Bell Sssociety had failed. Now we celebrate Guy Fawkesss day, in a lasssting jessst at the wasssted effort of the Bell Society.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Thisss masssk is meant to look like Fawkesss, but it doesssn't really. He wasssn't sssuch a smiley guy.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"I don't like Guy Fawkesss Day myssself, ssso I'm ssselling it cheaply.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_Scissors:
+ mes "[Gak]";
+ mes "";
+ mes "\"Yesss, my old ssscissssorsss. I had to cut my own hair with them once, to disssguissse myssself - which I had to do to essscape the country unnoticed.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"It'sss rather a long ssstory, but... well, I wasss in fact running from my execution. I came to Argaesss ssso that I didn't have to lossse my head.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"But that'sss long in the passst. Here and now, they're very good for changing your hairssstyle without bothering to go all the way to the barber.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Info_ShockSweet:
+ mes "[Gak]";
+ mes "";
+ mes "\"Thossse? Shocking thingsss...\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+
+L_Info_BoneArrow:
+ mes "[Gak]";
+ mes "";
+ mes "\"Ahh, yessss. I happen to have sssso many leftover bonesss from what people have been giving me. I couldn't take them all, of courssse... there were very few that were responsssive enough for I needed, and now, I have the bessst.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Would be ssssssuch a pity to wassste the leftoverss though... I've been enchanting the ressst for usse as weaponssss. Nothing too ssspecial, but they are verry light.\"";
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Event_Over:
+ if (hween16 < 5) goto L_Event_Over_1;
+ if (hween16 < 13) goto L_Event_Over_2;
+ mes "[Gak]";
+ mes "";
+ mes "\"Well, it'sss been very nice meeting you, friend, but I think I'll be heading off sssoon. I hear the Northern farmsss are pleasssant at this time of year.\"";
+ close;
+
+L_Event_Over_1:
+ mes "[Gak]";
+ mes "";
+ mes "\"Hmm, hello. And goodbye.\"";
+ close;
+
+L_Event_Over_2:
+ mes "[Gak]";
+ mes "";
+ mes "\"Thank you for thossse sssweetsss, they were quite deliciousss. But I think I'll be leaving sssoon.\"";
+ close;
+
+L_Full_Inventory:
+ mes "[Gak]";
+ mes "";
+ mes "\"Ssseems you don't have room for thisss.\"";
+ close;
+
+L_Miscount_Bugfix:
+ if (hween16_collect_canpump != 0) goto L_Do_Miscount_Bugfix;
+ set hween16, 12;
+ goto L_Gaks_Little_Shop;
+
+L_Do_Miscount_Bugfix:
+ mes "[Gak]";
+ mes "";
+ mes "\"Er.\" While his expression is as stony as ever, he sounds quite embarrassed.";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Seems I forgot some thingsss earlier... you should actually have " + (hween16_collect_canpump << 1) + " more creditsss than I calculated before.\"";
+ next;
+ mes "[Gak]";
+ mes "";
+ mes "\"Sssorry.\"";
+ next;
+
+ menu
+ "\"Hmph. Well, you can correct that now, right?", L_Do_Miscount_Bugfix_Continue;
+
+L_Do_Miscount_Bugfix_Continue:
+ mes "[Gak]";
+ mes "";
+ mes "\"Of courssse. It is done. Sssorry about that\"";
+ set hween16_credits, hween16_credits + (hween16_collect_canpump << 1);
+ set hween16, 12;
+ next;
+ goto L_Gaks_Little_Shop;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/magic/_procedures.txt b/world/map/npc/magic/_procedures.txt index 5d7e5c8a..c7ae2cd7 100644 --- a/world/map/npc/magic/_procedures.txt +++ b/world/map/npc/magic/_procedures.txt @@ -15,6 +15,9 @@ function|script|magic_register OnLogin: set @_M_BLOCK, 2; + //if (MAGIC_EXPERIENCE < 0) + // set MAGIC_EXPERIENCE, 0; // bug fix + // ^ XXX: check if negative MAGIC_EXPERIENCE is desirable addtimer 10000, "Magic Timer::OnClear"; end; @@ -118,10 +121,20 @@ L_Perfect: return; } +function|script|bit +{ + //0 name + //1 mask + //2 shift + //3 value + + return ((getarg(0) & ~(getarg(1) << getarg(2))) | ((getarg(3) & getarg(1)) << getarg(2))); +} + function|script|magic_exp { - set @last_index, (MAGIC_EXPERIENCE & BYTE_2_MASK) >> BYTE_2_SHIFT; - set @last_exp, (MAGIC_EXPERIENCE & (BYTE_0_MASK | BYTE_1_MASK)) >> BYTE_0_SHIFT; + set @last_index, (MAGIC_EXPERIENCE >> 16) & 0xFF; + set @last_exp, MAGIC_EXPERIENCE & 0xFFFF; //debugmes "old spell index: " + @last_index; //debugmes "new spell index: " + .index; @@ -136,12 +149,11 @@ L_Gain: // remove this line then players can cast a spell with // no cost, then a spell with a reagents, then another // spell with no costs and still get the exp - set @new_exp, @last_exp + .exp_gain; - if(@new_exp > (BYTE_0_MASK | BYTE_1_MASK)) set @new_exp, (BYTE_0_MASK | BYTE_1_MASK); + set @new_exp, min(0xFFFF, @last_exp + .exp_gain); //debugmes "old magic exp: "+ @last_exp; //debugmes "new magic exp: "+ @new_exp; - set MAGIC_EXPERIENCE, (MAGIC_EXPERIENCE &~ (BYTE_0_MASK | BYTE_1_MASK)) | (@new_exp << BYTE_0_SHIFT); - set MAGIC_EXPERIENCE, (MAGIC_EXPERIENCE &~ BYTE_2_MASK) | (.index << BYTE_2_SHIFT); + set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFFFF, 0, @new_exp); + set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFF, 16, .index); goto L_Return; L_Return: @@ -168,25 +180,29 @@ L_Return: function|script|gain_heal_xp { - set @last_heal_xp, ((SCRIPT_XP & SCRIPT_HEALSPELL_MASK) >> SCRIPT_HEALSPELL_SHIFT); - if ((@target_id != BL_ID) && ((.@heal_value / .heal_xp_value_divisor) > (((10 + @last_heal_xp) + rand(@last_heal_xp + 1)) + rand(@last_heal_xp + 1)))) - goto L_Block; - goto L_Return; + set .@value, getarg(0); + set .@gain, getarg(1); + set .@value_divisor, getarg(2); + set .@base_xp_factor, getarg(3); -L_Block: - set @heal_xp, (@last_heal_xp + @mexp); - if (@heal_xp > SCRIPT_HEALSPELL_MASK) - set @heal_xp, SCRIPT_HEALSPELL_MASK; - set SCRIPT_XP, (SCRIPT_XP & ~(SCRIPT_HEALSPELL_MASK) | (@heal_xp << SCRIPT_HEALSPELL_SHIFT)); - goto L_Gain_Xp; - -L_Gain_Xp: - set @heal_exp, .@heal_value; - if (.@heal_value > get(HEALXP, @target_id)) - set @heal_exp, get(HEALXP, @target_id); - getexp (.base_exp_factor * @heal_exp), 0; - goto L_Return; + set .@last_heal_xp, ((MAGIC_EXPERIENCE >> 24) & 0xFF); + + if ((.@value / .@value_divisor) <= (10 + .@last_heal_xp + rand(.@last_heal_xp + 1) + rand(.@last_heal_xp + 1))) + goto L_Return; + + set .@heal_xp, min(0xFF, .@last_heal_xp + .@gain); // XXX: maybe switch to 7F + + getexp (.@base_xp_factor * .@heal_xp), 0; + + // FIXME: extract_heal_xp + + //debugmes "old heal exp: "+ .@last_heal_xp; + + set MAGIC_EXPERIENCE, call("bit", MAGIC_EXPERIENCE, 0xFF, 24, .@heal_xp); + + //debugmes "new heal exp: "+ ((MAGIC_EXPERIENCE >> 24) & 0xFF); + return 1; L_Return: - return; + return 0; } diff --git a/world/map/npc/magic/level1-experience.txt b/world/map/npc/magic/level1-experience.txt index 36ad8179..94b07ad0 100644 --- a/world/map/npc/magic/level1-experience.txt +++ b/world/map/npc/magic/level1-experience.txt @@ -1,5 +1,10 @@ -|script|spell-experience|32767 { + //debugmes MAGIC_EXPERIENCE; + //debugmes (MAGIC_EXPERIENCE >> 0) & 0xFFFF; // magic exp + //debugmes (MAGIC_EXPERIENCE >> 16) & 0xFF; // last spell index + //debugmes (MAGIC_EXPERIENCE >> 24) & 0xFF; // heal exp + if(call("magic_checks")) end; if (Sp < 1) end; set @_M_BLOCK, 1; // block casting, until the timer clears it diff --git a/world/map/npc/magic/level1-lesser-heal.txt b/world/map/npc/magic/level1-lesser-heal.txt index d195956f..37d081dc 100644 --- a/world/map/npc/magic/level1-lesser-heal.txt +++ b/world/map/npc/magic/level1-lesser-heal.txt @@ -17,18 +17,14 @@ callfunc "adjust_spellpower"; set Sp, Sp - 6; misceffect FX_MAGIC_WHITE, strcharinfo(0); - set .@heal_value, get(HEALXP, @target_id); - set @mexp, .exp_gain; callfunc "magic_exp"; - if (.@heal_value > 200) - set .@heal_value, 200; if (@args$ == "Mouboo" || @args$ == "mouboo") goto L_Mouboo; if (@target_id != BL_ID) goto L_NotMe; goto L_Continue; L_NotMe: misceffect FX_MAGIC_WHITE, @target_id; - callfunc "gain_heal_xp"; + void call("gain_heal_xp", min(200, (get(MaxHp, @target_id) - get(Hp, @target_id))), 1, 2, 2); goto L_Continue; L_Continue: @@ -51,6 +47,5 @@ OnInit: void call("magic_register"); set .level, 1; set .exp_gain, 1; - set .heal_xp_value_divisor, 2; end; } diff --git a/world/map/npc/magic/level2-lay-on-hands.txt b/world/map/npc/magic/level2-lay-on-hands.txt index 0affb210..1f9d7389 100644 --- a/world/map/npc/magic/level2-lay-on-hands.txt +++ b/world/map/npc/magic/level2-lay-on-hands.txt @@ -12,7 +12,7 @@ if (distance(BL_ID, @target_id) >= (((sqrt(@spellpower)*12)+@spellpower)/100)+2) end; if (sc_check(SC_HALT_REGENERATE,@target_id)) end; if (getequipid(equip_head, @args$) == 888) end; // magic gm top hat - set .@needed, get(MaxHp, @target_id) - get(Hp, @target_id); + set @needed, get(MaxHp, @target_id) - get(Hp, @target_id); goto L_Pay; L_Pay: @@ -23,14 +23,14 @@ L_Pay: misceffect FX_MAGIC_WHITE, @args$; // on target set .@fraction, max(80, 200 - (Vit + (@spellpower/10))); // pay at least 40% - set .@payment, (.@needed * .@fraction) / 200; + set .@payment, (@needed * .@fraction) / 200; set .@available, Hp - (MaxHp / 20); - set .@heal_value, if_then_else(.@payment < .@available, .@needed+1-1, (.@available * 200) / .@fraction); // FIXME / XXX why the f do I need to do +1-1 ? + set @heal_value, if_then_else(.@payment < .@available, @needed+1-1, (.@available * 200) / .@fraction); // FIXME / XXX why the f do I need to do +1-1 ? if (.@payment > .@available) set .@payment, .@available; set @mexp, min(.exp_gain, .@payment/100); - callfunc "gain_heal_xp"; + void call("gain_heal_xp", @heal_value, 1, 1, 3); callfunc "magic_exp"; set .@dark, getskilllv(SKILL_MAGIC_DARK) >= 2; // true if dark magic user @@ -40,13 +40,13 @@ L_Pay: set .@thp, get(Hp, @target_id); if (.@thp < 1) end; - set Hp, .@thp + .@heal_value, @target_id; + set Hp, .@thp + @heal_value, @target_id; end; L_Mouboo: set @spell, 1; callfunc "QuestMoubooHeal"; - set .@needed, 1000; + set @needed, 1000; goto L_Pay; OnInit: @@ -55,7 +55,5 @@ OnInit: void call("magic_register"); set .level, 2; set .exp_gain, 1; // this is MAX possible exp - set .heal_xp_value_divisor, 1; - set .base_exp_factor, 3; end; } diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf index 25fba83b..89336e87 100644 --- a/world/map/npc/scripts.conf +++ b/world/map/npc/scripts.conf @@ -73,3 +73,4 @@ npc: npc/annuals/halloween/config.txt npc: npc/annuals/halloween/debug.txt npc: npc/annuals/halloween/munro.txt npc: npc/annuals/halloween/trick_or_treat.txt +npc: npc/annuals/halloween/gak.txt |