summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWombat <hpwombat@yahoo.com>2010-10-25 13:43:50 -0400
committerStefan Beller <stefanbeller@googlemail.com>2010-11-07 14:52:31 +0100
commit53bb3103e3a82c4f95b01b62449a0cec616871d5 (patch)
treec49868fc292590571ff40f5d7e419445baeb8e65
parent4bb4c388174c9efb583852d27a6d67f603376eb8 (diff)
downloadserverdata-53bb3103e3a82c4f95b01b62449a0cec616871d5.tar.gz
serverdata-53bb3103e3a82c4f95b01b62449a0cec616871d5.tar.bz2
serverdata-53bb3103e3a82c4f95b01b62449a0cec616871d5.tar.xz
serverdata-53bb3103e3a82c4f95b01b62449a0cec616871d5.zip
Added Orum quest and some files created via automapping
Orum quest on 009-4 and files created from converting 012-4.tmx
-rw-r--r--data/009-4.wlkbin0 -> 25604 bytes
-rw-r--r--data/012-4.wlkbin109204 -> 109204 bytes
-rw-r--r--data/resnametable.txt1
-rw-r--r--db/item_db.txt3
-rw-r--r--npc/009-4/_import.txt7
-rw-r--r--npc/009-4/_mobs.txt29
-rw-r--r--npc/009-4/_warps.txt46
-rw-r--r--npc/009-4/barriers.txt228
-rw-r--r--npc/009-4/orum.txt607
-rw-r--r--npc/009-4/torches.txt357
-rw-r--r--npc/009-4/waric.txt91
-rw-r--r--npc/_import.txt1
12 files changed, 1370 insertions, 0 deletions
diff --git a/data/009-4.wlk b/data/009-4.wlk
new file mode 100644
index 00000000..5044671d
--- /dev/null
+++ b/data/009-4.wlk
Binary files differ
diff --git a/data/012-4.wlk b/data/012-4.wlk
index affeafe9..31fcf7de 100644
--- a/data/012-4.wlk
+++ b/data/012-4.wlk
Binary files differ
diff --git a/data/resnametable.txt b/data/resnametable.txt
index e015f45a..3d45f566 100644
--- a/data/resnametable.txt
+++ b/data/resnametable.txt
@@ -19,6 +19,7 @@
009-1.gat#009-1.wlk#
009-2.gat#009-2.wlk#
009-3.gat#009-3.wlk#
+009-4.gat#009-4.wlk#
010-1.gat#010-1.wlk#
010-2.gat#010-2.wlk#
011-1.gat#011-1.wlk#
diff --git a/db/item_db.txt b/db/item_db.txt
index ce1d414e..c31395a8 100644
--- a/db/item_db.txt
+++ b/db/item_db.txt
@@ -531,3 +531,6 @@
4014, RingSimple, Simple Ring, 5, 5000, 2500, 1, , 0, , 0, 0, 2, 128, , 0, 0, {}, {}
4015, IngotIron, Iron Ingot, 3, 500, 250, 200, , , , , , , , , , , {}, {}
4016, BanditHood, Bandit Hood, 3, 100, 50, 50, , , , , , , , , , , {}, {}
+4017, RedPowder, Red Powder, 3, 3000, 5, 10, , , , , , 0, , , 0, , {}, {}
+4018, YellowPowder, Yellow Powder, 3, 3000, 5, 10, , , , , , 0, , , 0, , {}, {}
+4019, BluePowder, Blue Powder, 3, 3000, 5, 10, , , , , , 0, , , 0, , {}, {}
diff --git a/npc/009-4/_import.txt b/npc/009-4/_import.txt
new file mode 100644
index 00000000..0af62468
--- /dev/null
+++ b/npc/009-4/_import.txt
@@ -0,0 +1,7 @@
+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/torches.txt
+npc: npc/009-4/waric.txt
diff --git a/npc/009-4/_mobs.txt b/npc/009-4/_mobs.txt
new file mode 100644
index 00000000..df580666
--- /dev/null
+++ b/npc/009-4/_mobs.txt
@@ -0,0 +1,29 @@
+// 009-4 Cave mobs
+
+// Cavern
+009-4.gat,107,88,19,28 monster Silkworm 1035,3,20000,14000,Mob009-4::OnSilkworm
+009-4.gat,107,88,19,28 monster Cave Snake 1021,5,20000,14000,Mob009-4::OnCaveSnake
+
+009-4.gat,119,45,5,3 monster Silkworm 1035,3,20000,14000,Mob009-4::OnSilkworm
+009-4.gat,103,28,6,4 monster Cave Snake 1021,3,20000,14000,Mob009-4::OnCaveSnake
+009-4.gat,103,28,6,4 monster Silkworm 1035,2,20000,14000,Mob009-4::OnSilkworm
+
+009-4.gat,36,117,4,4 monster Maggot 1002,3,20000,14000,Mob009-4::OnMaggot
+009-4.gat,71,130,4,4 monster Maggot 1002,3,20000,14000,Mob009-4::OnMaggot
+
+009-4.gat,0,0,0 script Mob009-4 -1,{
+OnCaveSnake:
+ set @mobID, 1021;
+ callfunc "MobPoints";
+ break;
+OnMaggot:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ break;
+OnSilkworm:
+ set @mobID, 1035;
+ callfunc "MobPoints";
+ break;
+
+ end;
+} \ No newline at end of file
diff --git a/npc/009-4/_warps.txt b/npc/009-4/_warps.txt
new file mode 100644
index 00000000..37edd8a7
--- /dev/null
+++ b/npc/009-4/_warps.txt
@@ -0,0 +1,46 @@
+// 009-4 Cave Warps
+
+// Entrances
+009-4.gat,37,112 warp to Outside -1,-1,009-3.gat,162,114
+009-4.gat,37,123 warp to Lair -1,-1,009-4.gat,36,27
+
+009-4.gat,72,125 warp to Outside -1,-1,009-3.gat,162,114
+009-4.gat,72,136 warp to Lair -1,-1,009-4.gat,36,27
+
+// Caverns
+009-4.gat,103,22 warp to Lair -1,-1,009-4.gat,51,46
+009-4.gat,103,76 warp to Lair -1,-1,009-4.gat,51,46
+
+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;
+} \ No newline at end of file
diff --git a/npc/009-4/barriers.txt b/npc/009-4/barriers.txt
new file mode 100644
index 00000000..7dcb0b34
--- /dev/null
+++ b/npc/009-4/barriers.txt
@@ -0,0 +1,228 @@
+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, 1;
+ if (@secondary < 1) set @secondary, 12;
+
+ // Extract first 2 required colors
+ set @firstColor, @secondary - 2;
+ set @secondColor, @secondary + 2;
+ if (@firstColor > 12) set @firstColor, 1;
+ if (@firstColor < 1) set @firstColor, 12;
+ if (@secondColor > 12) set @secondColor, 1;
+ if (@secondColor < 1) set @secondColor, 12;
+
+ set @thirdColor, 12;
+ set @offsetOne, @BarrierColor + 1;
+ set @offsetTwo, @BarrierColor - 1;
+
+ // Make sure they in bounds
+ if (@offsetOne > 12) set @offsetOne, 1;
+ if (@offsetOne < 1) set @offsetOne, 12;
+ if (@offsetTwo > 12) set @offsetTwo, 1;
+ if (@offsetTwo < 1) set @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/npc/009-4/orum.txt b/npc/009-4/orum.txt
new file mode 100644
index 00000000..a90d65a8
--- /dev/null
+++ b/npc/009-4/orum.txt
@@ -0,0 +1,607 @@
+//**********************************************
+//** Orum/Waric Quest Part 1 - By Liana **
+//**********************************************
+
+009-4.gat,37,115,0 script Orum 158,{
+ 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 Woric, 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 inbued 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 Woric. 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 peice of paper from his pocket, smooths it out and writes a list on it before handing it to you..";
+ next;
+
+ mes "4 Wisp Powders,";
+ mes "2 Poltergeist Powders,";
+ mes "1 Spectre Powders,";
+ mes "2 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 peice of paper then writes a new list..";
+ next;
+
+ mes "4 Wisp Powders,";
+ mes "2 Poltergeist Powders,";
+ mes "1 Spectre Powders,";
+ mes "2 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") < 4 ||
+ countitem("PoltergeistPowder") < 2 ||
+ countitem("SpectrePowder") < 1 ||
+ countitem("HardSpike") < 2) goto L_Missing_Materials;
+
+ 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 mold together glowing brightly. He sprinkles in the powder you gathered and presses his hands together.";
+ delitem "WispPowder", 4;
+ delitem "PoltergeistPowder", 2;
+ delitem "SpectrePowder", 1;
+ delitem "HardSpike", 2;
+ 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 peice 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 Woric, 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 "10 Piles of Iron Powder,";
+ mes "10 Piles of Sand or Ash,";
+ mes "15 Gamboge Herbs,";
+ mes "15 Alizarin Herbs,";
+ mes "15 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! Waric's life is on the line here! Hurry up!\"";
+ close;
+
+L_List_Materials_More:
+ mes "He scavenges around in his pocket for another peice of paper then writes a new list..";
+ next;
+
+ mes "10 Piles of Iron Powder,";
+ mes "10 Piles of Sand or Ash,";
+ mes "15 Gamboge Herbs,";
+ mes "15 Alizarin Herbs,";
+ mes "15 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") < 10 ||
+ countitem("PileOfAsh") < 10 ||
+ countitem("GambogeHerb") < 15 ||
+ countitem("AlizarinHerb") < 15 ||
+ countitem("CobaltHerb") < 15) goto L_Missing_Materials_More;
+
+ 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;
+
+ delitem "IronPowder", 10;
+ delitem "PileOfAsh", 10;
+ delitem "GambogeHerb", 15;
+ delitem "AlizarinHerb", 15;
+ delitem "CobaltHerb", 15;
+
+ 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 metalic 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 metalic 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", 10;
+ getitem "YellowPowder", 10;
+ getitem "BluePowder", 10;
+ 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 "\"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") < 10 ||
+ countitem("PileOfAsh") < 10 ||
+ countitem("GambogeHerb") < 15 ||
+ countitem("AlizarinHerb") < 15 ||
+ countitem("CobaltHerb") < 15) goto L_Missing_Materials_More;
+
+ mes "[Orum]";
+ mes "\"Hmm all of the items appear to be here.. Give me a moment to make that powder for you.\"";
+ next;
+
+ delitem "IronPowder", 10;
+ delitem "PileOfAsh", 10;
+ delitem "GambogeHerb", 15;
+ delitem "AlizarinHerb", 15;
+ delitem "CobaltHerb", 15;
+
+ 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", 10;
+ getitem "YellowPowder", 10;
+ getitem "BluePowder", 10;
+ close;
+
+L_Finished_Up:
+ mes "As you approch you think you see Orum rolling his eyes.. maybe your 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 suddently thrown againt the wall behind him! Angered, he gets up, brushes himself off, and heads back to the entrance without speaking.";
+ close;
+
+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 makes it through without any problems and grins.";
+ next;
+
+ mes "[Orum]";
+ mes "\"Very good work you have done! Please take this for your efforts.\"";
+ next;
+
+ mes "[Insirt reward hir]";
+ 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;
+}
diff --git a/npc/009-4/torches.txt b/npc/009-4/torches.txt
new file mode 100644
index 00000000..d08e61db
--- /dev/null
+++ b/npc/009-4/torches.txt
@@ -0,0 +1,357 @@
+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 < 0 || @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 "Your too far away to do anything with that torch.";
+ close;
+}
+function script InRangeTorch2 {
+ if (isin("009-4.gat",65,41,69,46))
+ return;
+
+ mes "Your too far away to do anything with that torch.";
+ close;
+}
+function script InRangeTorch3 {
+ if (isin("009-4.gat",33,84,37,88))
+ return;
+
+ mes "Your 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;
+ 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 your 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 it's tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Intensity, @TorchIntensity + 1;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ if (@TorchIntensity > 2) goto L_Failed;
+ 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;
+ 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 your 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 it's tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Intensity, @TorchIntensity + 1;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ if (@TorchIntensity > 2) goto L_Failed;
+ 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 "Your 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 your 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 it's tint transform to a " + @intensities$[@TorchIntensity] + " " + @colors$[@TorchColor] + "..";
+ goto L_Color_Loop;
+
+L_Wrong_Color:
+ set @Itensity, @TorchIntensity + 1;
+ callfunc("SetTorchIntensity");
+ callfunc("GetTorchIntensity");
+ if (@TorchIntensity > 2) goto L_Failed;
+ 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;
+} \ No newline at end of file
diff --git a/npc/009-4/waric.txt b/npc/009-4/waric.txt
new file mode 100644
index 00000000..5fb9fd08
--- /dev/null
+++ b/npc/009-4/waric.txt
@@ -0,0 +1,91 @@
+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,{
+ 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..";
+ close;
+} \ No newline at end of file
diff --git a/npc/_import.txt b/npc/_import.txt
index f74feeb2..4349f76d 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -18,6 +18,7 @@ import: npc/008-1_Hurnscald_outskirts/_import.txt
import: npc/009-1_Hurnscald/_import.txt
import: npc/009-2_Hurnscald/_import.txt
import: npc/009-3_Cave_beneath_Hurnscald/_import.txt
+import: npc/009-4/_import.txt
import: npc/010-1_Woodland/_import.txt
import: npc/010-2_Dimonds_Cove/_import.txt
import: npc/011-1_Woodland/_import.txt