summaryrefslogtreecommitdiff
path: root/world/map/npc/009-4
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2011-06-18 21:58:47 -0700
committerBen Longbons <b.r.longbons@gmail.com>2011-06-19 14:19:55 -0700
commitbae4b92e560c2694eaaf0e8b4d9e95e56204471b (patch)
tree4acc120f6a94cfbf9694bf344658493de5aaa67b /world/map/npc/009-4
parent319f80526f8585ecadaec986e37c9bd326f4d363 (diff)
downloadserverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.gz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.bz2
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.xz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.zip
Move to a subdirectory
Diffstat (limited to 'world/map/npc/009-4')
-rw-r--r--world/map/npc/009-4/_import.txt10
-rw-r--r--world/map/npc/009-4/_mobs.txt30
-rw-r--r--world/map/npc/009-4/_warps.txt9
-rw-r--r--world/map/npc/009-4/barriers.txt229
-rw-r--r--world/map/npc/009-4/orum.txt655
-rw-r--r--world/map/npc/009-4/orum_warps.txt33
-rw-r--r--world/map/npc/009-4/torches.txt365
-rw-r--r--world/map/npc/009-4/waric.txt95
8 files changed, 1426 insertions, 0 deletions
diff --git a/world/map/npc/009-4/_import.txt b/world/map/npc/009-4/_import.txt
new file mode 100644
index 00000000..db91605c
--- /dev/null
+++ b/world/map/npc/009-4/_import.txt
@@ -0,0 +1,10 @@
+// Map 009-4:
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 009-4.gat
+npc: npc/009-4/_mobs.txt
+npc: npc/009-4/_warps.txt
+npc: npc/009-4/barriers.txt
+npc: npc/009-4/orum.txt
+npc: npc/009-4/orum_warps.txt
+npc: npc/009-4/torches.txt
+npc: npc/009-4/waric.txt
diff --git a/world/map/npc/009-4/_mobs.txt b/world/map/npc/009-4/_mobs.txt
new file mode 100644
index 00000000..f4c9140e
--- /dev/null
+++ b/world/map/npc/009-4/_mobs.txt
@@ -0,0 +1,30 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// mobs
+
+009-4.gat,117,97,24,15 monster Silkworm 1035,3,20000,14000,Mob009-4::On1035
+009-4.gat,115,98,24,15 monster Cave Snake 1021,5,20000,14000,Mob009-4::On1021
+009-4.gat,103,28,24,15 monster Cave Snake 1021,3,20000,14000,Mob009-4::On1021
+009-4.gat,106,27,24,15 monster Silkworm 1035,3,20000,14000,Mob009-4::On1035
+009-4.gat,119,44,12,10 monster Silkworm 1035,3,20000,14000,Mob009-4::On1035
+009-4.gat,72,130,24,15 monster Maggot 1002,3,20000,14000,Mob009-4::On1002
+009-4.gat,38,116,24,15 monster Maggot 1002,3,20000,14000,Mob009-4::On1002
+
+
+009-4.gat,0,0,0 script Mob009-4 -1,{
+On1002:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ break;
+
+On1021:
+ set @mobID, 1021;
+ callfunc "MobPoints";
+ break;
+
+On1035:
+ set @mobID, 1035;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/world/map/npc/009-4/_warps.txt b/world/map/npc/009-4/_warps.txt
new file mode 100644
index 00000000..e666d8ca
--- /dev/null
+++ b/world/map/npc/009-4/_warps.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// warps
+
+009-4.gat,37,112 warp to 009-3 -1,-1,009-3.gat,162,114
+009-4.gat,72,136 warp to Cavern -1,-1,009-4.gat,36,27
+009-4.gat,37,123 warp to Cavern -1,-1,009-4.gat,36,27
+009-4.gat,72,125 warp to 009-3 -1,-1,009-3.gat,162,114
+009-4.gat,103,22 warp to Cavern -1,-1,009-4.gat,51,46
+009-4.gat,103,76 warp to torches -1,-1,009-4.gat,51,46
diff --git a/world/map/npc/009-4/barriers.txt b/world/map/npc/009-4/barriers.txt
new file mode 100644
index 00000000..349ec44e
--- /dev/null
+++ b/world/map/npc/009-4/barriers.txt
@@ -0,0 +1,229 @@
+//# see detailed description at orum.txt
+function script GetBarrierColor {
+ if (@Barrier < 0 || @Barrier > 2) goto L_Error;
+
+ set @Mask, 15;
+ set @Shift, 4 * @Barrier;
+ set @BarrierColor, (OrumQuestBarrier >> @Shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Barrier number is out of range.";
+ close;
+}
+
+function script SetBarrierColor {
+ if (@Barrier < 0 || @Barrier > 2) goto L_Error;
+ if (@Color < 0 || @Color > 12) goto L_Error2;
+
+ set @Mask, (15 << (4 * @Barrier));
+ set OrumQuestBarrier, (OrumQuestBarrier & (~(@Mask))) | @Color << (4 * @Barrier);
+ return;
+
+L_Error:
+ mes "Barrier number is out of range.";
+ close;
+
+L_Error2:
+ mes "Barrier color is out of range.";
+ close;
+}
+
+
+// Starting Barrier / Quest Entrance
+009-4.gat,37,120,0 script #OrumCaveStartBarrier 0,1,0,{
+
+ if (OrumQuest >= 3) close;
+ if (OrumQuest == 2) goto L_Started;
+
+ warp "009-4.gat", 37, 118;
+ mes "As you try to pass, two torches begin to flare and push you back. They seem to form some kind of barrier..";
+ close;
+
+L_Started:
+ message strcharinfo(0), "The torches dim as you approach, granting you passage.";
+ set OrumQuest, 3;
+ close;
+}
+
+// First Barrier
+009-4.gat,57,29,0 script #OrumCaveFirstBarrier 0,1,0,{
+
+ if (OrumQuest >= 5) close;
+
+ message strcharinfo(0), "Nothing seems to happen as you enter this room.. The barrier must need both of its torches to function properly..";
+ set OrumQuest, 5;
+ close;
+}
+
+// Second Barrier
+009-4.gat,61,54,0 script #OrumCaveSecondBarrier 0,1,0,{
+
+ if (OrumQuest == 3) set OrumQuest, 4;
+
+ set @Barrier, 0;
+ callfunc("GetBarrierColor");
+ set @Torch, 0;
+ callfunc("GetTorchColor");
+ if (OrumQuest > 7 && @TorchColor == @BarrierColor) goto L_Allow_Second_Passage;
+
+ warp "009-4.gat", 61, 56;
+ mes "As you try to pass, the torches begin to flare and push you back. Perhaps there's a way to get past it..";
+ mes "";
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ mes "Looking closely between the two torches you can see the barrier has a " + @colors$[@BarrierColor] + " tint to it..";
+ close;
+
+L_Allow_Second_Passage:
+ if (OrumQuest < 9) goto L_Advance_Quest;
+ close;
+
+L_Advance_Quest:
+ message strcharinfo(0), "The torches dim as you enter like the first. You must be on the right trail..";
+ set OrumQuest, 9;
+ close;
+}
+
+// Third Barrier
+009-4.gat,24,66,0 script #OrumCaveThirdBarrier 0,1,0,{
+
+ if (OrumQuest == 3) set OrumQuest, 4;
+
+ set @Barrier, 1;
+ callfunc("GetBarrierColor");
+
+ set @Torch, 0;
+ callfunc("GetTorchColor");
+ set @Torch1Color, @TorchColor;
+
+ set @Torch, 1;
+ callfunc("GetTorchColor");
+ set @Torch2Color, @TorchColor;
+
+ set @firstColor, @BarrierColor - 2;
+ set @secondColor, @BarrierColor + 2;
+ if (@firstColor < 1) set @firstColor, 12;
+ if (@secondColor > 12) set @secondColor, 1;
+
+ if (OrumQuest > 8 && @Torch1Color == @firstColor && @Torch2Color == @secondColor)
+ goto L_Allow_Third_Passage;
+ if (OrumQuest > 8 && @Torch2Color == @firstColor && @Torch1Color == @secondColor)
+ goto L_Allow_Third_Passage;
+
+ warp "009-4.gat", 24, 64;
+ mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it..";
+ mes "";
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ mes "Looking closely between the two torches you can see the barrier has a " + @colors$[@BarrierColor] + " tint to it..";
+ close;
+
+L_Allow_Third_Passage:
+if (OrumQuest < 10) goto L_Advance_Quest;
+ close;
+
+L_Advance_Quest:
+ set OrumQuest, 10;
+ close;
+}
+
+// Ending Barrier
+009-4.gat,48,38,0 script #OrumCaveEndBarrier 0,1,0,{
+
+ if (OrumQuest >= 11) close;
+ if (OrumQuest == 3) set OrumQuest, 4;
+
+ set @Barrier, 2;
+ callfunc("GetBarrierColor");
+
+ if (OrumQuest < 10) goto L_Deny_Final_Passage;
+
+ set @Torch, 0;
+ callfunc("GetTorchColor");
+ set @Torch1Color, @TorchColor;
+
+ set @Torch, 1;
+ callfunc("GetTorchColor");
+ set @Torch2Color, @TorchColor;
+
+ set @Torch, 2;
+ callfunc("GetTorchColor");
+ set @Torch3Color, @TorchColor;
+
+ // Extract the secondary color
+ set @secondary, @BarrierColor - 1;
+ if (@secondary != 3 && @secondary != 7 && @secondary != 11)
+ set @secondary, @BarrierColor + 1;
+
+ // Make sure it's in bounds
+ if (@secondary > 12) set @secondary, @secondary - 12;
+ if (@secondary < 1) set @secondary, @secondary + 12;
+
+ // Extract first 2 required colors
+ set @firstColor, @secondary - 2;
+ set @secondColor, @secondary + 2;
+ if (@firstColor > 12) set @firstColor, @firstColor - 12;
+ if (@firstColor < 1) set @firstColor, @firstColor + 12;
+ if (@secondColor > 12) set @secondColor, @secondColor - 12;
+ if (@secondColor < 1) set @secondColor, @secondColor + 12;
+
+ set @thirdColor, 12;
+ set @offsetOne, @BarrierColor + 1;
+ set @offsetTwo, @BarrierColor - 1;
+
+ // Make sure they in bounds
+ if (@offsetOne > 12) set @offsetOne, @offsetOne - 12;
+ if (@offsetOne < 1) set @offsetOne, @offsetOne + 12;
+ if (@offsetTwo > 12) set @offsetTwo, @offsetTwo - 12;
+ if (@offsetTwo < 1) set @offsetTwo, @offsetTwo + 12;
+
+ // Extract third needed color
+ if (@secondary == @offsetOne)
+ set @thirdColor, @firstColor;
+ if (@secondary == @offsetTwo)
+ set @thirdColor, @secondColor;
+
+ set @firstDone, 0;
+ set @secondDone, 0;
+ set @thirdDone, 0;
+
+ if (@firstDone == 0 && @secondDone != 1 && @thirdDone != 1 && @Torch1Color == @firstColor)
+ set @firstDone, 1;
+ if (@firstDone != 1 && @secondDone == 0 && @thirdDone != 1 && @Torch1Color == @secondColor)
+ set @secondDone, 1;
+ if (@firstDone != 1 && @secondDone != 1 && @thirdDone == 0 && @Torch1Color == @thirdColor)
+ set @thirdDone, 1;
+
+ if (@firstDone == 0 && @secondDone != 2 && @thirdDone != 2 && @Torch2Color == @firstColor)
+ set @firstDone, 2;
+ if (@firstDone != 2 && @secondDone == 0 && @thirdDone != 2 && @Torch2Color == @secondColor)
+ set @secondDone, 2;
+ if (@firstDone != 2 && @secondDone != 2 && @thirdDone == 0 && @Torch2Color == @thirdColor)
+ set @thirdDone, 2;
+
+ if (@firstDone == 0 && @secondDone != 3 && @thirdDone != 3 && @Torch3Color == @firstColor)
+ set @firstDone, 3;
+ if (@firstDone != 3 && @secondDone == 0 && @thirdDone != 3 && @Torch3Color == @secondColor)
+ set @secondDone, 3;
+ if (@firstDone != 3 && @secondDone != 3 && @thirdDone == 0 && @Torch3Color == @thirdColor)
+ set @thirdDone, 3;
+
+ if (@firstDone != 0 && @secondDone != 0 && @thirdDone != 0) goto L_Allow_Final_Passage;
+ goto L_Deny_Final_Passage;
+
+L_Deny_Final_Passage:
+ warp "009-4.gat", 48, 36;
+ mes "As you try to pass, the torches begin to flare and push you back. Perhaps there is a way to get past it..";
+ mes "";
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ mes "Looking closely between the two torches you can see the barrier has a " + @colors$[@BarrierColor] + " tint to it..";
+ close;
+
+L_Allow_Final_Passage:
+ if (OrumQuest < 11) goto L_Advance_Quest;
+ close;
+
+L_Advance_Quest:
+ message strcharinfo(0), "The torches dim as you enter. At last you finally have access!";
+ set OrumQuest, 11;
+ close;
+}
diff --git a/world/map/npc/009-4/orum.txt b/world/map/npc/009-4/orum.txt
new file mode 100644
index 00000000..fae4dad7
--- /dev/null
+++ b/world/map/npc/009-4/orum.txt
@@ -0,0 +1,655 @@
+//#################################################################################
+//# Orum/Waric Quest Part 1 - By Liana, reviewed by Stefan Beller #
+//# GPL v.2 #
+//# #
+//# The first quest is to find Waric in the Caves with lots of torches. #
+//# These torches must be set in the right color to have access to the next #
+//# room, guarded by a magical barrier of other torches. #
+//# #
+//# The second quest is an easy, but background-story telling quest. #
+//# Just visit the cave again, find what is really in there. #
+//# #
+//# #
+//# Used variables: #
+//# #
+//# OrumQuest stores the progress of the quest #
+//# OrumQuestTorch In nibble (0,1,2) the color of the torches is stored #
+//# In nibble (3,4,5) the intensity of the torches is stored #
+//# OrumQuestBarrier nibble (0,1,2) stores the color of the barriers #
+//#################################################################################
+
+009-4.gat,37,115,0 script Orum 158,{
+ // needed to pass the very first barrier
+ set @B0_WISPPOWDER, 4;
+ set @B0_POLTERGEISTPOWDER, 2;
+ set @B0_SPECTREPOWDER, 1;
+ set @B0_HARDSPIKES, 1;
+
+ // needed stuff to get colorful powders
+ set @BT_IRONPOWDER, 10;
+ set @BT_PILESOFASH, 10;
+ set @BT_HERBS, 15;
+
+ // how many colorful powders each do you get as reward?
+ set @BT_REWARDCOUNT, 10;
+
+ // no exp for breaking the barrier ?
+ set @EXP_BREAK_BARRIERS, 0;
+
+ if (OrumQuest > 0) goto L_Started;
+
+ mes "[Orum]";
+ mes "\"It's not wise to venture around this place! Well hmm.. I guess since you're here, maybe you can lend a little help?\"";
+ next;
+
+ menu
+ "What exactly is 'this place'?", L_Explain,
+ "Umm.. what kind of help?", L_Explain,
+ "You're right, I'll be on my way.", -;
+
+ mes "[Orum]";
+ mes "\"Very smart thinking!\"";
+ close;
+
+L_Explain:
+ mes "[Orum]";
+ mes "\"Recently a woman claiming to be a witch came to my village seeking help from my mentor Waric, who is a very powerful wizard, but he refused and she left. But..\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"The next day he went missing! I'm no wizard yet, but from what I overheard.. I think that witch is attempting some very foul magic and has kidnapped him for some reason!\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"I traveled in the direction she left until I came accross this cave, but it appears to be protected by some type of magical barrier and I haven't been able to get further than this room.\"";
+ next;
+
+ menu
+ "So where would I come in?", L_Explain_Barriers,
+ "I'd like to help but I have to go..", -;
+
+ mes "[Orum]";
+ mes "\"Thats too bad.. well, if you ever have some free time, I probably won't figure this out any time soon.\"";
+ close;
+
+L_Explain_Barriers:
+ mes "[Orum]";
+ mes "\"I've examined this room and it appears that the barrier is made up of two torches on each side. The flame on them has a strange glow.. They must be imbued with magical properties.\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"I've never come across anything like this barrier before.. It must be drawing it's power from the torches. I tried putting them out with conventional means but I had no luck..\"";
+ next;
+
+ menu
+ "Have any other ideas on how we get past it?", L_Explain_Note,
+ "I think its meant to keep us out.. bye.", -;
+
+ mes "[Orum]";
+ mes "\"You may be right.. but she kidnapped Waric. I know it! So I must do something! If you ever change your mind I could sure use the help.\"";
+ close;
+
+L_Explain_Note:
+ mes "[Orum]";
+ mes "\"Actually! After Woric went missing I looked around at his house a bit and came across a note the witch must have dropped. I skimmed over it and didn't pay much attention but I think it mentioned something about this barrier!\"";
+ next;
+
+ mes "He pulls it out of his pocket and begins examining it..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Ah! Here it is! If I'm reading this right we may have found a way past it after all. I guess she would need a way to come and go unaffected while everyone else is kept from entering.\"";
+ next;
+
+ menu
+ "What does it say??", L_Explain_Aura,
+ "Looks like you can do this without me.", -;
+
+ mes "[Orum]";
+ mes "\"Eh... well I guess I can't force you to stay..\"";
+ close;
+
+L_Explain_Aura:
+ mes "[Orum]";
+ mes "\"Appears to be some kind of spell to place a magical aura around someone... Hmm, with these materials listed on here I'm going to guess this aura makes the wearer partly incorporeal..\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"It looks like the barrier requires substances from 3 different incorporeal creatures.. I've heard of Wisps, Poltergeists, and Spectres before but I've never seen such a thing.\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"Luckily I happen to be skilled in this field of magic! I'm pretty sure if I can get my hands on the materials listed on here I'll be able to cast this aura on us, and hopefully then we can get past this barrier!\"";
+ next;
+
+ menu
+ "Let me guess.. that is my job?", L_Offer_Quest,
+ "I think someone is calling me.. Bye", -;
+ close;
+
+L_Offer_Quest:
+ mes "[Orum]";
+ mes "\"Well you would probably do better than me since I don't know this area very well.. It's not too much stuff so I'm sure you won't have any trouble at all.\"";
+ next;
+
+ menu
+ "Alright alright, just give me a list.", L_Start_Quest,
+ "I'm not your servant! Bye.", -;
+
+ mes "[Orum]";
+ mes "\"Everyone answers to someone.. that's just how the world is. If you ever change your mind I'll probably be here forever gathering these materials on my own..\"";
+ close;
+
+L_Start_Quest:
+ mes "He pulls a crumpled piece of paper from his pocket, smooths it out and writes a list on it before handing it to you..";
+ next;
+
+ mes "" + @B0_WISPPOWDER + " Wisp Powders,";
+ mes "" + @B0_POLTERGEISTPOWDER + " Poltergeist Powders,";
+ mes "" + @B0_SPECTREPOWDER + " Spectre Powders,";
+ mes "" + @B0_HARDSPIKES + " Hard Spikes";
+ next;
+
+ menu
+ "Alright, I'll go get these.", L_Start_Gathering,
+ "You can forget it! I quit!", -;
+
+ mes "[Orum]";
+ mes "\"I know you'll be back... they always come back!\"";
+ close;
+
+L_Start_Gathering:
+ mes "[Orum]";
+ mes "\"That's the spirit! But try not to take too long.\"";
+ set OrumQuest, 1;
+ close;
+
+L_Started:
+ if (OrumQuest == 1) goto L_Gathering;
+ if (OrumQuest == 2) goto L_Use_First_Barrier;
+ if (OrumQuest == 3) goto L_Explore;
+ if (OrumQuest == 4) goto L_Found_Barriers;
+ if (OrumQuest == 5) goto L_Found_Barriers;
+ if (OrumQuest == 6) goto L_Found_Torches;
+ if (OrumQuest == 7) goto L_Still_Gathering;
+ if (OrumQuest == 8) goto L_Finish_Up;
+ if (OrumQuest >= 9) goto L_Finished_Up;
+ close;
+
+L_Gathering:
+ mes "[Orum]";
+ mes "\"Got all the things I asked for yet?\"";
+ next;
+
+ menu
+ "Yep I have every last one of them!", L_Check_Materials,
+ "Can I get another list?", L_List_Materials,
+ "I still need a few things..", -;
+
+ mes "Orum shakes his head in frustration..";
+ next;
+
+ mes "[Orum]";
+ mes "\"You'd better get that stuff soon!\"";
+ close;
+
+L_List_Materials:
+ mes "He scavenges around in his pocket for another piece of paper then writes a new list..";
+ next;
+
+ mes @B0_WISPPOWDER + " Wisp Powders,";
+ mes @B0_POLTERGEISTPOWDER + " Poltergeist Powders,";
+ mes @B0_SPECTREPOWDER + " Spectre Powders,";
+ mes @B0_HARDSPIKES + " Hard Spikes";
+ next;
+
+ mes "[Orum]";
+ mes "\"And try not to lose this one.. I'm running out of stuff to write on!\"";
+ close;
+
+L_Check_Materials:
+ if (countitem("WispPowder") < @B0_WISPPOWDER ||
+ countitem("PoltergeistPowder") < @B0_POLTERGEISTPOWDER ||
+ countitem("SpectrePowder") < @B0_SPECTREPOWDER ||
+ countitem("HardSpike") < @B0_HARDSPIKES) goto L_Missing_Materials;
+
+ // check directly before deleting the objects.
+ delitem "WispPowder", @B0_WISPPOWDER;
+ delitem "PoltergeistPowder", @B0_POLTERGEISTPOWDER;
+ delitem "SpectrePowder", @B0_SPECTREPOWDER;
+ delitem "HardSpike", @B0_HARDSPIKES;
+
+ mes "Orum carefully looks over all of the items then grins..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Well done! And you did not even take as long as I thought you would!\"";
+ next;
+
+ mes "Orum takes the hard spikes in his hand and begins chanting some words..";
+ next;
+
+ mes "You watch as they begin to mold together, glowing brightly. He sprinkles in the powder you gathered and presses his hands together.";
+
+ misceffect sfx_magic_transmute;
+ next;
+
+ mes "Suddenly a feeling of dizzyness hits you and you begin to feel weightless.. It passes after a moment..";
+ misceffect sfx_magic_nature;
+ misceffect 11, strcharinfo(0);
+ next;
+
+ mes "[Orum]";
+ mes "\"Well we are both still in one piece so that is a good sign! Now we'll have to see if I did it right.. mind going first?\"";
+ goto L_Setup_Lair;
+ close;
+
+L_Missing_Materials:
+ mes "Orum carefully looks over all of the items then squints his eyes at you..";
+ next;
+
+ mes "[Orum]";
+ mes "\"I'm not going to attempt this spell until I have ALL the items on this note.. Go gather the missing materials!\"";
+ close;
+
+L_Setup_Lair:
+ set OrumQuest, 2;
+
+ // Second Barrier
+ set @temp, rand(1,6);
+ set @Color, 1;
+ if (@temp == 1 || @temp == 4) set @Color, 1;
+ if (@temp == 2 || @temp == 5) set @Color, 5;
+ if (@temp == 3 || @temp == 6) set @Color, 9;
+ set @Barrier, 0;
+ callfunc("SetBarrierColor");
+
+ set @Torch, 0;
+ set @Color, rand(1, 12);
+ set @Intensity, 0;
+ callfunc("SetTorchColor");
+ callfunc("SetTorchIntensity");
+
+ // Third Barrier
+ set @temp, rand(1,6);
+ set @Color, 3;
+ if (@temp == 1 || @temp == 4) set @Color, 3;
+ if (@temp == 2 || @temp == 5) set @Color, 7;
+ if (@temp == 3 || @temp == 6) set @Color, 11;
+ set @Barrier, 1;
+ callfunc("SetBarrierColor");
+
+ set @Torch, 1;
+ set @Color, rand(1, 12);
+ callfunc("SetTorchColor");
+ callfunc("SetTorchIntensity");
+
+ // End Barrier
+ set @temp, rand(1,12);
+ set @Color, 2;
+ if (@temp == 1 || @temp == 7) set @Color, 2;
+ if (@temp == 2 || @temp == 8) set @Color, 4;
+ if (@temp == 3 || @temp == 9) set @Color, 6;
+ if (@temp == 4 || @temp == 10) set @Color, 8;
+ if (@temp == 5 || @temp == 11) set @Color, 10;
+ if (@temp == 6 || @temp == 12) set @Color, 12;
+ set @Barrier, 2;
+ callfunc("SetBarrierColor");
+
+ set @Torch, 2;
+ set @Color, rand(1, 12);
+ callfunc("SetTorchColor");
+ callfunc("SetTorchIntensity");
+ close;
+
+L_Use_First_Barrier:
+ mes "[Orum]";
+ mes "\"Casting that aura took a lot out of me.. Why don't you go explore the cave a bit while I rest?\"";
+ close;
+
+L_Explore:
+ mes "Orum looks up as you approach..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Find anything interesting in this place?\"";
+ next;
+
+ menu
+ "Yep.. a whole mess of torches!", L_Explain_Objective,
+ "I'm not sure what to look for..", L_Explain_Objective,
+ "Going to explore more, bye.", -;
+
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything. I've almost gained my energy back.\"";
+ close;
+
+L_Explain_Objective:
+ mes "[Orum]";
+ mes "\"I'm positive this is where that witch took Waric, so this cave must lead to somewhere. Try looking around for another exit. I've almost gained my energy back and then I can help.\"";
+ close;
+
+L_Found_Barriers:
+ mes "Orum looks up as you approach..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Find anything interesting in this place?\"";
+ next;
+
+ menu
+ "Yep.. a whole mess of torches!", L_Explain_Objective,
+ "I'm not sure what to look for..", L_Explain_Objective,
+ "I found more barriers.. but..", L_Explain_Barriers_More,
+ "Going to explore more, bye.", -;
+
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything. I'm still gaining my energy back.\"";
+ close;
+
+L_Explain_Barriers_More:
+ mes "[Orum]";
+ mes "\"Hm let me guess.. the aura is ineffective on the rest of the barriers here?\"";
+ next;
+
+ menu
+ "How did you know..?", L_Explain_Note_More,
+ "I'm not sure, I'll go try again.", -;
+
+ mes "[Orum]";
+ mes "\"Always a good idea to double check things!\"";
+ close;
+
+L_Explain_Note_More:
+ mes "[Orum]";
+ mes "\"Well while I was resting I spent more time looking over the note that witch dropped.. And I think the aura is only to get past the entrance..\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"It mentions some sort of security system to keep people from entering the actual lair but it doesn't explain in great detail. Try exploring more; maybe we will find some answers.\"";
+ next;
+
+ mes "Orum continues examining the note..";
+ close;
+
+L_Found_Torches:
+ mes "Orum looks up as you approach..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Find something interesting?\"";
+ next;
+
+ menu
+ "Yep.. a whole mess of torches!", L_Explain_Objective,
+ "I'm not sure what to look for..", L_Explain_Objective,
+ "I found more barriers.. but..", L_Explain_Barriers_More,
+ "I found a strange torch by itself.", L_Explain_Torches,
+ "Going to explore more, bye.", -;
+
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything new.\"";
+ close;
+
+L_Explain_Torches:
+ mes "Orum has you direct him to the torch and he walks off to examine it before returning shortly after..";
+ next;
+
+ mes "[Orum]";
+ mes "\"Ah yes! I was hoping we would find something like this!\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"While examining the note I found another set of spells to create some type of powder and with them was a few notes on using it with some type of torch..\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"I'll bet this torch has something to do with the rest of these barriers which are probably the security system this note mentions.\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"We will probably need to transmute this powder before we can get any further past these barriers.. Would you mind gathering a few more materials?\"";
+ next;
+
+ menu
+ "It better be the last time.", L_Gather_More,
+ "I'm done doing stuff for you!", -;
+
+ mes "[Orum]";
+ mes "\"I'm surprised you give up after we've gotten so far.. Shame.\"";
+ close;
+
+L_Gather_More:
+ mes "Orum begins writing down another list of materials..";
+ next;
+
+ mes @BT_IRONPOWDER + " Piles of Iron Powder,";
+ mes @BT_PILESOFASH + " Piles of Sand or Ash,";
+ mes @BT_HERBS + " Gamboge Herbs,";
+ mes @BT_HERBS + " Alizarin Herbs,";
+ mes @BT_HERBS + " Cobalt Herbs";
+ next;
+
+ menu
+ "Yikes! I'll try..", L_Gathering_More,
+ "No way! Too much stuff!", -;
+
+ mes "[Orum]";
+ mes "\"The note says to get these and I'm not going to attempt this spell until I have what the note says.\"";
+ close;
+
+L_Gathering_More:
+ set OrumQuest, 7;
+ mes "[Orum]";
+ mes "\"Wonderful! Try to make it quick, we must save Waric!\"";
+ close;
+
+L_Still_Gathering:
+ mes "[Orum]";
+ mes "\"Have you finished gathering those things yet?\"";
+ next;
+
+ menu
+ "I believe I have!", L_Finished_Gathering_More,
+ "I lost my list.. again..", L_List_Materials_More,
+ "I've almost got them all..", -;
+
+ mes "[Orum]";
+ mes "\"Don't make me remind you again! Warics life is on the line here! Hurry up!\"";
+ close;
+
+L_List_Materials_More:
+ mes "He scavenges around in his pocket for another piece of paper then writes a new list..";
+ next;
+
+ mes @BT_IRONPOWDER + " Piles of Iron Powder,";
+ mes @BT_PILESOFASH + " Piles of Sand or Ash,";
+ mes @BT_HERBS + " Gamboge Herbs,";
+ mes @BT_HERBS + " Alizarin Herbs,";
+ mes @BT_HERBS + " Cobalt Herbs";
+ next;
+
+ mes "[Orum]";
+ mes "\"And try not to lose this one.. I don't have much more to write on!\"";
+ close;
+
+L_Finished_Gathering_More:
+ if (countitem("IronPowder") < @BT_IRONPOWDER ||
+ countitem("PileOfAsh") < @BT_PILESOFASH ||
+ countitem("GambogeHerb") < @BT_HERBS ||
+ countitem("AlizarinHerb") < @BT_HERBS ||
+ countitem("CobaltHerb") < @BT_HERBS) goto L_Missing_Materials_More;
+
+ delitem "IronPowder", @BT_IRONPOWDER;
+ delitem "PileOfAsh", @BT_PILESOFASH;
+ delitem "GambogeHerb", @BT_HERBS;
+ delitem "AlizarinHerb", @BT_HERBS;
+ delitem "CobaltHerb", @BT_HERBS;
+
+ mes "[Orum]";
+ mes "\"Excellent work! And once again you did not take as long as I was expecting. I guess I will get started..\"";
+ next;
+
+ mes "You watch as Orum takes the iron powder and ash and begins chanting some words.. The two start to glow and mold together turning into a light, metallic looking powder..";
+ next;
+ misceffect sfx_magic_transmute;
+
+ mes "He then splits the powder into three piles and performs separate spells on each using the herbs. After he finishes you see 3 piles of colored metallic powder that appear to be red, yellow, and blue..";
+ next;
+ misceffect sfx_magic_transmute;
+
+ mes "[Orum]";
+ mes "\"Well if I did it right.. These three powders are hopefully the key to getting past these barriers!\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"I'm weary, I must take some time to rest. Why don't you go ahead and experiment with these powders on that torch and let me know if you figure what they have to do with it.\"";
+
+ getitem "RedPowder", @BT_REWARDCOUNT;
+ getitem "YellowPowder", @BT_REWARDCOUNT;
+ getitem "BluePowder", @BT_REWARDCOUNT;
+ set OrumQuest, 8;
+ close;
+
+L_Missing_Materials_More:
+ mes "Orum carefully looks over all of the items then squints his eyes at you..";
+ next;
+
+ mes "[Orum]";
+ mes "\"You really enjoy playing games with Warics life, don't you! Come back when you have ALL of the items I told you.\"";
+ close;
+
+L_Finish_Up:
+ mes "Orum seems to be sitting around doing nothing as you approach.";
+ next;
+
+ mes "[Orum]";
+ mes "\"Did you find a way past any of the barriers yet?\"";
+ next;
+
+ menu
+ "No, I'm still not sure how..", L_Explain_Torches_More,
+ "I need more of that powder.", L_More_Powder,
+ "I'm still trying..", -;
+
+ mes "[Orum]";
+ mes "\"Excellent! Let me know when you've made any progress.\"";
+ close;
+
+L_Explain_Torches_More:
+ mes "[Orum]";
+ mes "\"Most of the barriers here have a certain color radiating from them and so do the torches. The torches seem to react with this powder so maybe we have to make these torches turn a certain color in order to lower the barriers.\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"It seems that the powders are only in these 3 colors, so you may have to experiment a bit to get the colors right.\"";
+ next;
+
+ mes "[Orum]";
+ mes "\"Also while looking around I saw that behind one of the barriers was a cave. Maybe Waric is in there.. we should try to get that barrier dropped.\"";
+ close;
+
+L_More_Powder:
+ mes "[Orum]";
+ mes "\"You really used up that powder fast.. Luckily I can make more as long as you can bring me those materials again.\"";
+ next;
+
+ menu
+ "I have them right here!", L_More_Powder_Make,
+ "Hmmm.. what are they again?", L_List_Materials_More,
+ "I'll go get those for you..", -;
+
+ mes "[Orum]";
+ mes "\"You better not waste any time gathering those materials!\"";
+ close;
+
+L_More_Powder_Make:
+ if (countitem("IronPowder") < @BT_IRONPOWDER ||
+ countitem("PileOfAsh") < @BT_PILESOFASH ||
+ countitem("GambogeHerb") < @BT_HERBS ||
+ countitem("AlizarinHerb") < @BT_HERBS ||
+ countitem("CobaltHerb") < @BT_HERBS) goto L_Missing_Materials_More;
+
+ delitem "IronPowder", @BT_IRONPOWDER;
+ delitem "PileOfAsh", @BT_PILESOFASH;
+ delitem "GambogeHerb", @BT_HERBS;
+ delitem "AlizarinHerb", @BT_HERBS;
+ delitem "CobaltHerb", @BT_HERBS;
+
+ mes "[Orum]";
+ mes "\"Hmm all of the items appear to be here.. Give me a moment to make that powder for you.\"";
+ next;
+
+ mes "Orum begins chanting the same words as he did when he made the powder before.. He seems to be quicker at it this time..";
+ misceffect sfx_magic_transmute;
+ next;
+
+ mes "[Orum]";
+ mes "\"Here you are. And try to conserve this time! The more powder I have to make, the more time and resources we use up that we could be using to save Waric!\"";
+
+ getitem "RedPowder", @BT_REWARDCOUNT;
+ getitem "YellowPowder", @BT_REWARDCOUNT;
+ getitem "BluePowder", @BT_REWARDCOUNT;
+ close;
+
+L_Finished_Up:
+ mes "As you approch you think you see Orum rolling his eyes.. maybe you're imagining it..";
+ next;
+
+ mes "[Orum]";
+ mes "\"I hope you finally dropped that barrier we need to get past!\"";
+ next;
+
+ menu
+ "Actually.. I have!", L_Enter_Cavern,
+ "I need more of that powder.", L_More_Powder,
+ "Cut me some slack! I'm working on it!", -;
+
+ mes "[Orum]";
+ mes "\"Just hurry it up! Warics life is on the line here!\"";
+ close;
+
+L_Enter_Cavern:
+ if (OrumQuest >= 10) goto L_Ready_Cavern;
+
+ mes "Orum heads to the barrier then gives you a look as if he does not believe you before walking forward..";
+ next;
+
+ mes "He is suddenly thrown against the wall behind him! Angered, he gets up, brushes himself off, and heads back to the entrance without speaking.";
+ close;
+
+L_Ready_Cavern:
+ // you should not get that twice ;)
+ if (OrumQuest == 12) goto L_Got_Reward;
+
+ mes "Orum heads to the barrier then gives you a look as if he does not believe you before walking forward..";
+ next;
+
+ mes "He makes it through without any problems and grins.";
+ next;
+
+ mes "[Orum]";
+ mes "\"Very good work you have done! Please take this for your efforts. It has helped me in a bind.\"";
+ next;
+
+ getexp @EXP_BREAK_BARRIERS, 0;
+ getitem "CandleHelmet", 1;
+ mes "You receive the Candle Helmet";
+ next;
+
+ mes "\"You've done enough here to help. I will go the rest of the way alone so that your life is not endangered.. You must promise me not to go any further!\"";
+ next;
+
+ menu
+ "Sure, I promise!", -,
+ "I thought this would never be over!", -;
+
+ mes "[Orum]";
+ mes "\"Well I guess this is farewell!\"";
+ set OrumQuest, 12;
+ close;
+
+L_Got_Reward:
+ mes "\"You've done enough here to help. I will go the rest of the way alone so that your life is not endangered..\"";
+ close;
+}
diff --git a/world/map/npc/009-4/orum_warps.txt b/world/map/npc/009-4/orum_warps.txt
new file mode 100644
index 00000000..ebeaa857
--- /dev/null
+++ b/world/map/npc/009-4/orum_warps.txt
@@ -0,0 +1,33 @@
+009-3.gat,162,113,0 script #OrumQuestEnter 0,0,0,{
+ if (OrumQuest >= 12) goto L_Second_Entrance;
+ warp "009-4.gat", 37, 113;
+ close;
+
+L_Second_Entrance:
+ warp "009-4.gat", 72, 126;
+ close;
+}
+009-4.gat,36,26,0 script #LairExit 0,0,0,{
+ if (OrumQuest >= 12) goto L_Second_Entrance;
+ warp "009-4.gat", 37, 122;
+ close;
+
+L_Second_Entrance:
+ warp "009-4.gat", 72, 135;
+ close;
+}
+
+009-4.gat,51,47,0 script #CavernEnter 0,0,0,{
+ if (OrumQuest >= 14) goto L_Second_Cavern;
+ if (OrumQuest < 12) goto L_See_Orum;
+ warp "009-4.gat", 103, 23;
+ close;
+
+L_Second_Cavern:
+ warp "009-4.gat", 103, 77;
+ close;
+
+L_See_Orum:
+ mes "Right as you are entering you hear Orum call out for you.. Perhaps you should see what he wants first..";
+ close;
+}
diff --git a/world/map/npc/009-4/torches.txt b/world/map/npc/009-4/torches.txt
new file mode 100644
index 00000000..f4d2cede
--- /dev/null
+++ b/world/map/npc/009-4/torches.txt
@@ -0,0 +1,365 @@
+//# see detailed description at orum.txt
+function script GetTorchColor {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+
+ set @Mask, 15;
+ set @Shift, 4 * @Torch;
+ set @TorchColor, (OrumQuestTorch >> @Shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close;
+}
+
+function script SetTorchColor {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+ if (@Color < 1 || @Color > 12) goto L_Error2;
+
+ set @Mask, (15 << (4 * @Torch));
+ set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Color << (4 * @Torch);
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close;
+
+L_Error2:
+ mes "Torch color is out of range.";
+ close;
+}
+
+function script GetTorchIntensity {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+
+ set @Mask, 15;
+ set @Shift, 4 * (@Torch + 3);
+ set @TorchIntensity, (OrumQuestTorch >> @Shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close;
+}
+
+function script SetTorchIntensity {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+ if (@Intensity < 0 || @Intensity > 2) goto L_Error2;
+
+ set @Mask, (15 << (4 * (@Torch + 3)));
+ set OrumQuestTorch, (OrumQuestTorch & (~(@Mask))) | @Intensity << (4 * (@Torch + 3));
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close;
+
+L_Error2:
+ mes "Torch intensity is out of range.";
+ close;
+}
+
+function script DoneWithTorches {
+ if (OrumQuest < 11 && OrumQuest >= 8)
+ return;
+
+ if (OrumQuest < 7) goto L_Different;
+
+ if (OrumQuest >= 11)
+ mes "The flame on the torch looks ordinary.. Lowering the final barrier seems to have drained them of their magic.";
+
+ if (OrumQuest < 8)
+ mes "Without that powder the note mentions there isn't much you can do with this torch..";
+
+ close;
+
+L_Different:
+ mes "The flame on this torch looks different than the rest.. You better tell Orum about it before doing anything.";
+ set OrumQuest, 6;
+ close;
+}
+
+// To make sure in range of torches
+function script InRangeTorch1 {
+ if (isin("009-4.gat",67,20,69,25))
+ return;
+
+ mes "You're too far away to do anything with that torch.";
+ close;
+}
+function script InRangeTorch2 {
+ if (isin("009-4.gat",65,41,69,46))
+ return;
+
+ mes "You're too far away to do anything with that torch.";
+ close;
+}
+function script InRangeTorch3 {
+ if (isin("009-4.gat",33,84,37,88))
+ return;
+
+ mes "You're too far away to do anything with that torch.";
+ close;
+}
+
+// First Torch
+009-4.gat,68,21,0 script Torch 127,{
+ callfunc "InRangeTorch1";
+ callfunc "DoneWithTorches";
+
+ set @Torch, 0;
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+
+ set @lastColor, @TorchColor;
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ setarray @intensities$,"calm","bright","blinding";
+ mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
+ goto L_Color_Loop;
+
+L_Color_Loop:
+ callfunc("GetTorchColor");
+ menu
+ "Add Red Powder", L_Use_Red,
+ "Add Yellow Powder", L_Use_Yellow,
+ "Add Blue Powder", L_Use_Blue,
+ "Leave it alone.", -;
+
+ mes "The flame flickers as if it's laughing at you..";
+ close;
+
+L_Use_Red:
+ if (countitem("RedPowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
+ if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
+ if (@TorchColor == 12) set @Color, 1;
+ if (@TorchColor == 0) set @Color, 1;
+ callfunc("SetTorchColor");
+ delitem "RedPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Yellow:
+ if (countitem("YellowPowder") < 1) goto L_No_Powder;
+ if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
+ if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
+ if (@TorchColor == 0) set @Color, 5;
+ callfunc("SetTorchColor");
+ delitem "YellowPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Blue:
+ if (countitem("BluePowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
+ if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
+ if (@TorchColor == 1) set @Color, 12;
+ if (@TorchColor == 0) set @Color, 9;
+ callfunc("SetTorchColor");
+ delitem "BluePowder", 1;
+ goto L_Show_Color;
+
+L_No_Powder:
+ mes "You notice you're all out of that color of powder.. Perhaps Orum can make you some more.";
+ close;
+
+L_Show_Color:
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+ if (@TorchColor == @lastColor) goto L_Wrong_Color;
+ misceffect 5;
+ set @lastColor, @TorchColor;
+ mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Intensity, @TorchIntensity + 1;
+ if (@Intensity > 2) goto L_Failed;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ misceffect 5;
+ mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Failed:
+ mes "As you pour the powder into the flame it flares violently before bursting into your face!";
+ misceffect 5;
+ misceffect 16;
+ set @Intensity, 0;
+ callfunc("SetTorchIntensity");
+ heal -Hp, 0;
+ close;
+}
+
+// Second Torch
+009-4.gat,67,42,0 script Torch 127,{
+ callfunc "InRangeTorch2";
+ callfunc "DoneWithTorches";
+
+ set @Torch, 1;
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+
+ set @lastColor, @TorchColor;
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
+ goto L_Color_Loop;
+
+L_Color_Loop:
+ callfunc("GetTorchColor");
+ menu
+ "Add Red Powder", L_Use_Red,
+ "Add Yellow Powder", L_Use_Yellow,
+ "Add Blue Powder", L_Use_Blue,
+ "Leave it alone.", -;
+
+ mes "The flame flickers as if it's laughing at you..";
+ close;
+
+L_Use_Red:
+ if (countitem("RedPowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
+ if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
+ if (@TorchColor == 12) set @Color, 1;
+ if (@TorchColor == 0) set @Color, 1;
+ callfunc("SetTorchColor");
+ delitem "RedPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Yellow:
+ if (countitem("YellowPowder") < 1) goto L_No_Powder;
+ if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
+ if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
+ if (@TorchColor == 0) set @Color, 5;
+ callfunc("SetTorchColor");
+ delitem "YellowPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Blue:
+ if (countitem("BluePowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
+ if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
+ if (@TorchColor == 1) set @Color, 12;
+ if (@TorchColor == 0) set @Color, 9;
+ callfunc("SetTorchColor");
+ delitem "BluePowder", 1;
+ goto L_Show_Color;
+
+L_No_Powder:
+ mes "You notice you're all out of that color powder.. Perhaps Orum can make you some more.";
+ close;
+
+L_Show_Color:
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+ if (@TorchColor == @lastColor) goto L_Wrong_Color;
+ misceffect 5;
+ set @lastColor, @TorchColor;
+ mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Intensity, @TorchIntensity + 1;
+ if (@Intensity > 2) goto L_Failed;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ misceffect 5;
+ mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Failed:
+ mes "As you pour the powder into the flame it flares violently before bursting into your face!";
+ misceffect 5;
+ misceffect 16;
+ set @Intensity, 0;
+ callfunc("SetTorchIntensity");
+ heal -Hp, 0;
+ close;
+}
+
+
+// Third Torch
+009-4.gat,33,86,0 script Torch 127,{
+ callfunc "InRangeTorch3";
+ callfunc "DoneWithTorches";
+
+ set @Torch, 2;
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+
+ set @lastColor, @TorchColor;
+ setarray @colors$,"transparent","red","dark orange","orange","light orange","yellow","light green","green","dark green","blue","dark purple","purple","light purple";
+ setarray @intensities$,"calm","bright","blinding";
+ mes "Looking closely you notice that this torch is not like the others.. This one has a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + " tint to it.";
+ goto L_Color_Loop;
+
+L_Too_Far:
+ mes "You're too far away to do anything with that torch.";
+ close;
+
+L_Color_Loop:
+ callfunc("GetTorchColor");
+ menu
+ "Add Red Powder", L_Use_Red,
+ "Add Yellow Powder", L_Use_Yellow,
+ "Add Blue Powder", L_Use_Blue,
+ "Leave it alone.", -;
+
+ mes "The flame flickers as if it's laughing at you..";
+ close;
+
+L_Use_Red:
+ if (countitem("RedPowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 6 && @TorchColor < 12) set @Color, @TorchColor + 1;
+ if (@TorchColor < 6 && @TorchColor > 1) set @Color, @TorchColor - 1;
+ if (@TorchColor == 12) set @Color, 1;
+ callfunc("SetTorchColor");
+ delitem "RedPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Yellow:
+ if (countitem("YellowPowder") < 1) goto L_No_Powder;
+ if (@TorchColor < 10 && @TorchColor > 5) set @Color, @TorchColor - 1;
+ if (@TorchColor >= 1 && @TorchColor < 5) set @Color, @TorchColor + 1;
+ callfunc("SetTorchColor");
+ delitem "YellowPowder", 1;
+ goto L_Show_Color;
+
+L_Use_Blue:
+ if (countitem("BluePowder") < 1) goto L_No_Powder;
+ if (@TorchColor > 4 && @TorchColor < 9) set @Color, @TorchColor + 1;
+ if (@TorchColor <= 12 && @TorchColor > 9) set @Color, @TorchColor - 1;
+ if (@TorchColor == 1) set @Color, 12;
+ callfunc("SetTorchColor");
+ delitem "BluePowder", 1;
+ goto L_Show_Color;
+
+L_No_Powder:
+ mes "You notice you're all out of that color powder.. Perhaps Orum can make you some more.";
+ close;
+
+L_Show_Color:
+ callfunc("GetTorchColor");
+ callfunc("GetTorchIntensity");
+ if (@TorchColor == @lastColor) goto L_Wrong_Color;
+ misceffect 5;
+ set @lastColor, @TorchColor;
+ mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Intensity, @TorchIntensity + 1;
+ if (@Intensity > 2) goto L_Failed;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ misceffect 5;
+ mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Failed:
+ mes "As you pour the powder into the flame it flares violently before bursting into your face!";
+ misceffect 5;
+ misceffect 16;
+ set @Intensity, 0;
+ callfunc("SetTorchIntensity");
+ heal -Hp, 0;
+ close;
+}
diff --git a/world/map/npc/009-4/waric.txt b/world/map/npc/009-4/waric.txt
new file mode 100644
index 00000000..9eb8e0b2
--- /dev/null
+++ b/world/map/npc/009-4/waric.txt
@@ -0,0 +1,95 @@
+//# see detailed description at orum.txt
+
+009-4.gat,99,33,0 script #WizardTrap 0,2,1,{
+ set @gender$, "They're";
+ if (Sex == 0) set @gender$, "She's";
+ if (Sex == 1) set @gender$, "He's";
+
+ mes "As you explore further into the cave you see a figure looking at you who appears angry.. but as you begin to speak, he quickly chants some words and you start to lose conciousness!";
+ next;
+ warp "009-4.gat", 117, 40;
+ mes "When you awake you find yourself unable to move.. You seem to be held in place by something.. As your eyes regain focus you see Orum talking with the figure you saw earlier.. Orum looks over at you and mumbles";
+ mes "";
+ mes "[Orum]";
+ mes "\"Be quiet Waric.. " + @gender$ + " awake..\"";
+ close;
+}
+
+009-4.gat,120,43,0 script Orum 158,{
+ mes "[Orum]";
+ mes "\"I told you to forget about this place but you did not heed my advice!\"";
+ next;
+ mes "[Orum]";
+ mes "\"Your fate is up to Waric now.. don't expect me to do anything else for you.\"";
+ close;
+}
+
+009-4.gat,118,42,0 script Waric 153,{
+ set @EXP_LEARNED_ALOT, 10000;
+ if (OrumQuest >= 13) goto L_Behave;
+ mes "Waric looks toward you rubbing his chin..";
+ next;
+ mes "[Waric]";
+ mes "\"So... Orum tells me your the one that helped him break me out of this dreadful place, so I guess I must thank you for that.\"";
+ next;
+ menu
+ "My pleasure! Mind letting me out of here?", L_Explain,
+ "This doesn't look like a thank you!", L_Explain,
+ "Let me out of here at once!", -;
+
+ mes "Waric turns toward Orum..";
+ next;
+ mes "[Waric]";
+ mes "\"We've got a feisty one here Orum!\"";
+ next;
+ mes "They begin discussing plans of some sort..";
+ set OrumQuest, 13;
+ close;
+
+L_Behave:
+ mes "Waric looks toward you shaking his finger..";
+ next;
+ mes "[Waric]";
+ mes "\"So... are you ready to behave yourself now?\"";
+ next;
+ menu
+ "Yes mister..", L_Explain,
+ "No I'm not ready yet!", -;
+
+ mes "[Waric]";
+ mes "\"Having fun I take it?\"";
+ next;
+ mes "They continue discussing their plans..";
+ close;
+
+L_Explain:
+ mes "[Waric]";
+ mes "\"I'm not sure what Orum told you but I was not kidnapped and brought here.. I was in fact imprisoned here very long ago by a witch for practicing spells on the insignificant forest life.\"";
+ next;
+ mes "[Waric]";
+ mes "\"She cared about the forest and all of that stuff you see. Now this cave is not bad.. I actually enjoyed it the first nights, but after a few years...\"";
+ next;
+ mes "Waric gets a bitter look and his face and pauses for a moment..";
+ next;
+ mes "[Waric]";
+ mes "\"So now you can see my motive to get out of here. The only air and water I get is what's given to me through that cave over there. And as for food.. theres only so many recipes for cave snakes and silk worms...\"";
+ next;
+ mes "Waric shivers in disgust..";
+ next;
+ mes "[Woric]";
+ mes "\"I'm sorry I had to constrain you like this but now that I'm free, I'm not about to let anyone stand in my way!\"";
+ next;
+ mes "[Waric]";
+ mes "\"Now if you'll excuse us, Orum and I have some things to attend to.. And don't bother coming back to stop us because we'll be long gone.\"";
+ next;
+ mes "Waric raises his hands and begins chanting some words.. You watch as streams of energy begin swirling around you..";
+ next;
+ mes "Once more you start to lose conciousness as your surroundings begin to fade..";
+ next;
+ set OrumQuest, 14;
+ misceffect 10;
+ warp "008-1.gat", 65, 90;
+ mes "You awake on your back with a squrrel sitting on top of you arranging it's acorns.. It quickly gathers them up and runs off as it sees you looking at it them..";
+ getexp @EXP_LEARNED_ALOT, 0;
+ close;
+}