summaryrefslogtreecommitdiff
path: root/npc/009-4
diff options
context:
space:
mode:
Diffstat (limited to 'npc/009-4')
-rw-r--r--npc/009-4/_import.txt10
-rw-r--r--npc/009-4/_mobs.txt9
-rw-r--r--npc/009-4/_warps.txt8
-rwxr-xr-xnpc/009-4/barriers.txt268
-rwxr-xr-xnpc/009-4/mapflags.txt1
-rwxr-xr-xnpc/009-4/orum.txt607
-rwxr-xr-xnpc/009-4/orum_warps.txt33
-rwxr-xr-xnpc/009-4/torches.txt286
-rwxr-xr-xnpc/009-4/waric.txt93
9 files changed, 1315 insertions, 0 deletions
diff --git a/npc/009-4/_import.txt b/npc/009-4/_import.txt
new file mode 100644
index 00000000..761cbf7e
--- /dev/null
+++ b/npc/009-4/_import.txt
@@ -0,0 +1,10 @@
+// Map 009-4: Orum Caves
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/009-4/_mobs.txt",
+"npc/009-4/_warps.txt",
+"npc/009-4/barriers.txt",
+"npc/009-4/mapflags.txt",
+"npc/009-4/orum.txt",
+"npc/009-4/orum_warps.txt",
+"npc/009-4/torches.txt",
+"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..c0080978
--- /dev/null
+++ b/npc/009-4/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 009-4: Orum Caves mobs
+009-4,117,97,12,7 monster Mana Bug 1035,3,20000,14000
+009-4,115,98,12,7 monster Dummy 1021,5,20000,14000
+009-4,103,28,12,7 monster Dummy 1021,3,20000,14000
+009-4,106,27,12,7 monster Mana Bug 1035,3,20000,14000
+009-4,119,45,6,5 monster Mana Bug 1035,3,20000,14000
+009-4,72,130,12,7 monster Piou 1002,3,20000,14000
+009-4,38,116,12,7 monster Piou 1002,3,20000,14000
diff --git a/npc/009-4/_warps.txt b/npc/009-4/_warps.txt
new file mode 100644
index 00000000..42d12c0c
--- /dev/null
+++ b/npc/009-4/_warps.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 009-4: Orum Caves warps
+009-4,37,112,0 warp #009-4_37_112 0,0,009-3,163,114
+009-4,72,136,0 warp #009-4_72_136 0,0,009-4,36,27
+009-4,37,123,0 warp #009-4_37_123 0,0,009-4,36,27
+009-4,72,125,0 warp #009-4_72_125 0,0,009-3,163,114
+009-4,103,22,0 warp #009-4_103_22 0,0,009-4,51,46
+009-4,103,76,0 warp #009-4_103_76 0,0,009-4,51,46
diff --git a/npc/009-4/barriers.txt b/npc/009-4/barriers.txt
new file mode 100755
index 00000000..08998e94
--- /dev/null
+++ b/npc/009-4/barriers.txt
@@ -0,0 +1,268 @@
+function script GetBarrierColor {
+ if (@Barrier < 0 || @Barrier > 2)
+ goto L_Error;
+ if (@BarrierColor <= 0 || @BarrierColor > 12)
+ goto L_Error2;
+ goto L_GetBarrierColor;
+
+L_GetBarrierColor:
+ @Mask = 15;
+ @shift = 4 * @Barrier;
+ @BarrierColor = (OrumQuestBarrier >> @shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Barrier number is out of range.";
+ close2;
+ return;
+
+L_Error2:
+ callfunc "SetUpOrumQuest";
+ goto L_GetBarrierColor;
+}
+
+function script SetBarrierColor {
+ if (@Barrier < 0 || @Barrier > 2)
+ goto L_Error;
+ if (@BarrierColor <= 0 || @BarrierColor > 12)
+ goto L_Error2;
+
+ @Mask = (15 << (4 * @Barrier));
+ OrumQuestBarrier = (OrumQuestBarrier & (~(@Mask))) | @BarrierColor << (4 * @Barrier);
+ return;
+
+L_Error:
+ mes "Barrier number is out of range.";
+ close2;
+ return;
+
+L_Error2:
+ mes "Barrier color is out of range.";
+ close2;
+ return;
+}
+
+
+009-4,37,119,0 script #OrumCaveStartMessage NPC32767,0,0,{
+ if (OrumQuest >= 3) end;
+ if (OrumQuest == 2) goto L_Started;
+
+ 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.";
+ OrumQuest = 3;
+ end;
+}
+
+009-4,37,120,0 script #OrumCaveStartBarrier NPC32767,0,0,{
+ if (OrumQuest >= 3) end;
+ warp "009-4", 37, 118;
+ end;
+}
+
+009-4,57,29,0 script #OrumCaveFirstBarrier NPC32767,0,0,{
+ if (OrumQuest >= 5) end;
+
+ message strcharinfo(0), "Nothing seems to happen as you enter this room. The barrier must need both of its torches to function properly.";
+ OrumQuest = 5;
+ end;
+}
+
+009-4,61,55,0 script #OrumCaveSecondMessage NPC32767,0,0,{
+ if (OrumQuest >= 9) end;
+ if (OrumQuest == 3) set OrumQuest, 4;
+
+ @Barrier = 0;
+ callfunc("GetBarrierColor");
+ @Torch = 0;
+ callfunc("GetTorchColor");
+ if (OrumQuest > 7 && @TorchColor == @BarrierColor)
+ goto L_Allow_Second_Passage;
+
+ 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 ##B" + @colors$[@BarrierColor] + "##b tint to it.";
+ close;
+
+L_Allow_Second_Passage:
+ if (OrumQuest < 9) goto L_Advance_Quest;
+ end;
+
+L_Advance_Quest:
+ message strcharinfo(0), "The torches dim as you enter like the first. You must be on the right trail.";
+ OrumQuest = 9;
+ end;
+}
+
+009-4,61,54,0 script #OrumCaveSecondBarrier NPC32767,0,0,{
+ if (OrumQuest >= 9) end;
+ warp "009-4", 60, 56;
+ end;
+}
+
+009-4,24,65,0 script #OrumCaveThirdMessage NPC32767,0,0,{
+ if (OrumQuest >= 10) end;
+ if (OrumQuest == 3) set OrumQuest, 4;
+ if (OrumQuest > 8 && @Torch1Color == @firstColor && @Torch2Color == @secondColor)
+ goto L_Allow_Third_Passage;
+ if (OrumQuest > 8 && @Torch2Color == @firstColor && @Torch1Color == @secondColor)
+ goto L_Allow_Third_Passage;
+
+ @Barrier = 1;
+ callfunc("GetBarrierColor");
+
+ @Torch = 0;
+ callfunc("GetTorchColor");
+ @Torch1Color = @TorchColor;
+
+ @Torch = 1;
+ callfunc("GetTorchColor");
+ @Torch2Color = @TorchColor;
+
+ @firstColor = @BarrierColor - 2;
+ @secondColor = @BarrierColor + 2;
+ if (@firstColor < 1)
+ @firstColor = 12;
+ if (@secondColor > 12)
+ @secondColor = 1;
+
+ 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 ##B" + @colors$[@BarrierColor] + "##b tint to it.";
+ close;
+
+L_Allow_Third_Passage:
+ if (OrumQuest < 10) goto L_Advance_Quest;
+ end;
+
+L_Advance_Quest:
+ OrumQuest = 10;
+ end;
+}
+
+009-4,24,66,0 script #OrumCaveThirdBarrier NPC32767,0,0,{
+ if (OrumQuest >= 10) end;
+ warp "009-4", 23, 64;
+ end;
+}
+
+009-4,48,37,0 script #OrumCaveEndMessage NPC32767,0,0,{
+ if (OrumQuest >= 11) end;
+ if (OrumQuest == 3) set OrumQuest, 4;
+
+ @Barrier = 2;
+ callfunc("GetBarrierColor");
+
+ if (OrumQuest < 10)
+ goto L_Deny_Final_Passage;
+
+ @Torch = 0;
+ callfunc("GetTorchColor");
+ @Torch1Color = @TorchColor;
+
+ @Torch = 1;
+ callfunc("GetTorchColor");
+ @Torch2Color = @TorchColor;
+
+ @Torch = 2;
+ callfunc("GetTorchColor");
+ @Torch3Color = @TorchColor;
+
+ // Extract the secondary color
+ @secondary = @BarrierColor - 1;
+ if (@secondary != 3 && @secondary != 7 && @secondary != 11)
+ @secondary = @BarrierColor + 1;
+
+ // Make sure it's in bounds
+ if (@secondary > 12)
+ @secondary = @secondary - 12;
+ if (@secondary < 1)
+ @secondary = @secondary + 12;
+
+ // Extract first 2 required colors
+ @firstColor = @secondary - 2;
+ @secondColor = @secondary + 2;
+ if (@firstColor > 12)
+ @firstColor = @firstColor - 12;
+ if (@firstColor < 1)
+ @firstColor = @firstColor + 12;
+ if (@secondColor > 12)
+ @secondColor = @secondColor - 12;
+ if (@secondColor < 1)
+ @secondColor = @secondColor + 12;
+
+ @thirdColor = 12;
+ @offsetOne = @BarrierColor + 1;
+ @offsetTwo = @BarrierColor - 1;
+
+ // Make sure they in bounds
+ if (@offsetOne > 12)
+ @offsetOne = @offsetOne - 12;
+ if (@offsetOne < 1)
+ @offsetOne = @offsetOne + 12;
+ if (@offsetTwo > 12)
+ @offsetTwo = @offsetTwo - 12;
+ if (@offsetTwo < 1)
+ @offsetTwo = @offsetTwo + 12;
+
+ // Extract third needed color
+ if (@secondary == @offsetOne)
+ @thirdColor = @firstColor;
+ if (@secondary == @offsetTwo)
+ @thirdColor = @secondColor;
+
+ @firstDone = 0;
+ @secondDone = 0;
+ @thirdDone = 0;
+
+ if (@firstDone == 0 && @secondDone != 1 && @thirdDone != 1 && @Torch1Color == @firstColor)
+ @firstDone = 1;
+ if (@firstDone != 1 && @secondDone == 0 && @thirdDone != 1 && @Torch1Color == @secondColor)
+ @secondDone = 1;
+ if (@firstDone != 1 && @secondDone != 1 && @thirdDone == 0 && @Torch1Color == @thirdColor)
+ @thirdDone = 1;
+
+ if (@firstDone == 0 && @secondDone != 2 && @thirdDone != 2 && @Torch2Color == @firstColor)
+ @firstDone = 2;
+ if (@firstDone != 2 && @secondDone == 0 && @thirdDone != 2 && @Torch2Color == @secondColor)
+ @secondDone = 2;
+ if (@firstDone != 2 && @secondDone != 2 && @thirdDone == 0 && @Torch2Color == @thirdColor)
+ @thirdDone = 2;
+
+ if (@firstDone == 0 && @secondDone != 3 && @thirdDone != 3 && @Torch3Color == @firstColor)
+ @firstDone = 3;
+ if (@firstDone != 3 && @secondDone == 0 && @thirdDone != 3 && @Torch3Color == @secondColor)
+ @secondDone = 3;
+ if (@firstDone != 3 && @secondDone != 3 && @thirdDone == 0 && @Torch3Color == @thirdColor)
+ @thirdDone = 3;
+
+ if (@firstDone != 0 && @secondDone != 0 && @thirdDone != 0)
+ goto L_Allow_Final_Passage;
+ goto L_Deny_Final_Passage;
+
+L_Deny_Final_Passage:
+ 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 ##B" + @colors$[@BarrierColor] + "##b tint to it.";
+ close;
+
+L_Allow_Final_Passage:
+ if (OrumQuest < 11) goto L_Advance_Quest;
+ end;
+
+L_Advance_Quest:
+ message strcharinfo(0), "The torches dim as you enter. At last you finally have access!";
+ OrumQuest = 11;
+ end;
+}
+
+009-4,48,38,0 script #OrumCaveEndBarrier NPC32767,0,0,{
+ if (OrumQuest >= 11) end;
+ warp "009-4", 47, 36;
+ end;
+}
diff --git a/npc/009-4/mapflags.txt b/npc/009-4/mapflags.txt
new file mode 100755
index 00000000..458eb60f
--- /dev/null
+++ b/npc/009-4/mapflags.txt
@@ -0,0 +1 @@
+//009-4 mapflag resave 009-4,37,118
diff --git a/npc/009-4/orum.txt b/npc/009-4/orum.txt
new file mode 100755
index 00000000..42ae60d9
--- /dev/null
+++ b/npc/009-4/orum.txt
@@ -0,0 +1,607 @@
+
+009-4,35,115,0 script OrumDebug NPC158,{
+ mes "[Orum Debug]";
+ menu
+ "Set Quest State", L_SetQuest,
+ "Reset Quest", L_ResetQuest,
+ "Display Quest", L_Display;
+
+L_SetQuest:
+ input @quest_state;
+ OrumQuest = @quest_state;
+ goto L_close;
+
+L_ResetQuest:
+ OrumQuest = 0;
+ OrumQuestBarrier = 0;
+ OrumQuestTorch = 0;
+ goto L_close;
+
+L_Display:
+ mes OrumQuest;
+ goto L_close;
+
+L_close:
+ end;
+
+OnInit:
+ if (!debug)
+ disablenpc "OrumDebug";
+ end;
+}
+009-4,37,115,0 script Orum#barrier NPC158,{
+ // needed to pass the very first barrier
+ @B0_WISPPOWDER = 4;
+ @B0_POLTERGEISTPOWDER = 2;
+ @B0_SPECTREPOWDER = 1;
+ @B0_HARDSPIKES = 1;
+
+ // needed stuff to get colorful powders
+ @BT_IRONPOWDER = 10;
+ @BT_PILESOFASH = 10;
+ @BT_HERBS = 15;
+
+ // how many colorful powders each do you get as reward?
+ @BT_REWARDCOUNT = 10;
+
+ @Exp_BREAK_BARRIERS = 5000;
+
+ 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?\"";
+ menu
+ "What exactly is 'this place'?", L_Explain,
+ "Umm... what kind of help?", L_Explain,
+ "You're right, I'll be on my way.", L_Next;
+
+L_Next:
+ mes "[Orum]";
+ mes "\"Very smart thinking!\"";
+ goto L_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 "\"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 "\"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.\"";
+ menu
+ "So where would I come in?", L_Explain_Barriers,
+ "I'd like to help but I have to go...", L_Next1;
+
+L_Next1:
+ mes "[Orum]";
+ mes "\"Thats too bad... well, if you ever have some free time, I probably won't figure this out any time soon.\"";
+ goto L_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 "\"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.\"";
+ menu
+ "Have any other ideas on how we get past it?", L_Explain_Note,
+ "I think its meant to keep us out... Bye.", L_Next2;
+
+L_Next2:
+ 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 surely use the help.\"";
+ goto L_close;
+
+L_Explain_Note:
+ mes "[Orum]";
+ mes "\"Actually! After Waric 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.\"";
+ menu
+ "What does it say?", L_Explain_Aura,
+ "Looks like you can do this without me.", L_Next3;
+
+L_Next3:
+ mes "[Orum]";
+ mes "\"Eh... well I guess I can't force you to stay.\"";
+ goto L_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 "\"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 "\"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!\"";
+ menu
+ "Let me guess... that is my job?", L_Offer_Quest,
+ "I think someone is calling me... Bye!", L_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.\"";
+ menu
+ "Alright alright, just give me a list.", L_Start_Quest,
+ "I'm not your servant! Bye.", L_Leave1;
+
+L_Leave1:
+ 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.\"";
+ goto L_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";
+ menu
+ "Alright, I'll go get these.", L_Start_Gathering,
+ "You can forget it! I quit!", L_Next4;
+
+L_Next4:
+ mes "[Orum]";
+ mes "\"I know you'll be back... they always come back!\"";
+ goto L_close;
+
+L_Start_Gathering:
+ mes "[Orum]";
+ mes "\"That's the spirit! But try not to take too long.\"";
+ OrumQuest = 1;
+ goto L_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;
+ goto L_close;
+
+L_Gathering:
+ mes "[Orum]";
+ mes "\"Got all the things I asked for yet?\"";
+ 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...", L_Next5;
+
+L_Next5:
+ mes "Orum shakes his head in frustration.";
+ next;
+ mes "[Orum]";
+ mes "\"You'd better get that stuff soon!\"";
+ goto L_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!\"";
+ goto L_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;
+
+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!\"";
+ goto L_close;
+
+L_Setup_Lair:
+ OrumQuest = 2;
+ callfunc "SetUpOrumQuest";
+ goto L_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?\"";
+ goto L_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.", L_Leave2;
+
+L_Leave2:
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything. I've almost gained my energy back.\"";
+ goto L_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.\"";
+ goto L_close;
+
+L_Found_Barriers:
+ mes "Orum looks up as you approach.";
+ next;
+ mes "[Orum]";
+ mes "\"Find anything interesting in this place?\"";
+ 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.", L_Leave3;
+
+L_Leave3:
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything. I'm still gaining my energy back.\"";
+ goto L_close;
+
+L_Explain_Barriers_More:
+ mes "[Orum]";
+ mes "\"Hm let me guess... the aura is ineffective on the rest of the barriers here?\"";
+ menu
+ "How did you know?", L_Explain_Note_More,
+ "I'm not sure, I'll go try again.", L_Next6;
+
+L_Next6:
+ mes "[Orum]";
+ mes "\"Always a good idea to double check things!\"";
+ goto L_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.";
+ goto L_close;
+
+L_Found_Torches:
+ mes "Orum looks up as you approach.";
+ next;
+ mes "[Orum]";
+ mes "\"Did you 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.", L_Leave4;
+
+L_Leave4:
+ mes "[Orum]";
+ mes "\"Be sure to let me know if you find anything new.\"";
+ goto L_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 "\"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 "\"I bet this torch has something to do with the rest of these barriers which are probably the security system this note mentions.\"";
+ next;
+ 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?\"";
+ menu
+ "It better be the last time.", L_Gather_More,
+ "I'm done doing stuff for you!", L_Next61;
+
+L_Next61:
+ mes "[Orum]";
+ mes "\"I'm surprised you give up after we've gotten so far. Shame.\"";
+ goto L_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";
+ menu
+ "Yikes! I'll try...", L_Gathering_More,
+ "No way! Too much stuff!", L_Next7;
+
+L_Next7:
+ 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.\"";
+ goto L_close;
+
+L_Gathering_More:
+ OrumQuest = 7;
+ mes "[Orum]";
+ mes "\"Wonderful! Try to make it quick, we must save Waric!\"";
+ goto L_close;
+
+L_Still_Gathering:
+ mes "[Orum]";
+ mes "\"Have you finished gathering those things yet?\"";
+ menu
+ "I believe I have!", L_F_Gather_More,
+ "I lost my list... again.", L_List_Materials_More,
+ "I've almost got them all.", L_Next8;
+
+L_Next8:
+ mes "[Orum]";
+ mes "\"Don't make me remind you again! Warics life is on the line here! Hurry up!\"";
+ goto L_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!\"";
+ goto L_close;
+
+L_F_Gather_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_Mats_M;
+
+ 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 "\"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;
+ OrumQuest = 8;
+ goto L_close;
+
+L_Missing_Mats_M:
+ 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.\"";
+ goto L_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?\"";
+ 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...", L_Next9;
+
+L_Next9:
+ mes "[Orum]";
+ mes "\"Excellent! Let me know when you've made any progress.\"";
+ goto L_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 "\"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 "\"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.\"";
+ goto L_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.\"";
+ 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.", L_Next10;
+
+L_Next10:
+ mes "[Orum]";
+ mes "\"You better not waste any time gathering those materials!\"";
+ goto L_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_Mats_M;
+
+ 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 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;
+ goto L_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!\"";
+ 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!", L_Next11;
+
+L_Next11:
+ mes "[Orum]";
+ mes "\"Just hurry it up! Warics life is on the line here!\"";
+ goto L_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.";
+ goto L_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;
+ getinventorylist;
+ if ((checkweight("CandleHelmet", 1) == 0) || (@inventorylist_count == 100))
+ goto L_Inventory;
+ getexp @Exp_BREAK_BARRIERS, 0;
+ getitem "CandleHelmet", 1;
+ OrumQuest = 12;
+ 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!\"";
+ menu
+ "Sure, I promise!", L_Next12,
+ "I thought this would never be over!", L_Next12;
+
+L_Next12:
+ mes "[Orum]";
+ mes "\"Well I guess this is farewell!\"";
+ goto L_close;
+
+L_Inventory:
+ mes "\"You're carrying too much. Come back to me after you got rid of some stuff. And hurry, I don't want to spent all day waiting on you.\"";
+ goto L_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.\"";
+ goto L_close;
+
+L_close:
+ @B0_WISPPOWDER = 0;
+ @B0_POLTERGEISTPOWDER = 0;
+ @B0_SPECTREPOWDER = 0;
+ @B0_HARDSPIKES = 0;
+
+ @BT_IRONPOWDER = 0;
+ @BT_PILESOFASH = 0;
+ @BT_HERBS = 0;
+
+ @BT_REWARDCOUNT = 0;
+
+ @Exp_BREAK_BARRIERS = 0;
+
+ @Barrier = 0;
+ @BarrierColor = 0;
+ @Torch = 0;
+ @TorchColor = 0;
+ close;
+}
+function script SetUpOrumQuest {
+ // Second Barrier
+ @BarrierColor = 1 + rand(3) * 4;
+ @Barrier = 0;
+ callfunc "SetBarrierColor";
+
+ @TorchIntensity = 0;
+
+ @Torch = 0;
+ @TorchColor = rand(1, 12);
+ callfunc "SetTorchColor";
+ callfunc "SetTorchIntensity";
+
+ // Third Barrier
+ @BarrierColor = 3 + rand(3) * 4;
+ @Barrier = 1;
+ callfunc "SetBarrierColor";
+
+ @Torch = 1;
+ @TorchColor = rand(1, 12);
+ callfunc "SetTorchColor";
+ callfunc "SetTorchIntensity";
+
+ // End Barrier
+ @BarrierColor = 2 + rand(6) * 2;
+ @Barrier = 2;
+ callfunc "SetBarrierColor";
+
+ @Torch = 2;
+ @TorchColor = rand(1, 12);
+ callfunc "SetTorchColor";
+ callfunc "SetTorchIntensity";
+ return;
+}
diff --git a/npc/009-4/orum_warps.txt b/npc/009-4/orum_warps.txt
new file mode 100755
index 00000000..8cf74919
--- /dev/null
+++ b/npc/009-4/orum_warps.txt
@@ -0,0 +1,33 @@
+009-3,162,113,0 script #OrumQuestEnter NPC45,0,0,{
+ if (OrumQuest >= 12) goto L_Second_Entrance;
+ warp "009-4", 37, 113;
+ close;
+
+L_Second_Entrance:
+ warp "009-4", 72, 126;
+ close;
+}
+009-4,36,26,0 script #LairExit NPC45,0,0,{
+ if (OrumQuest >= 12) goto L_Second_Entrance;
+ warp "009-4", 37, 122;
+ close;
+
+L_Second_Entrance:
+ warp "009-4", 72, 135;
+ close;
+}
+
+009-4,51,47,0 script #CavernEnter NPC45,0,0,{
+ if (OrumQuest >= 14) goto L_Second_Cavern;
+ if (OrumQuest < 12) goto L_See_Orum;
+ warp "009-4", 103, 23;
+ close;
+
+L_Second_Cavern:
+ warp "009-4", 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/npc/009-4/torches.txt b/npc/009-4/torches.txt
new file mode 100755
index 00000000..fe1fc187
--- /dev/null
+++ b/npc/009-4/torches.txt
@@ -0,0 +1,286 @@
+function script GetTorchColor {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+
+ @Mask = 15;
+ @shift = 4 * @Torch;
+ @TorchColor = (OrumQuestTorch >> @shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close2;
+ return;
+}
+
+function script SetTorchColor {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+ if (@TorchColor < 1 || @TorchColor > 12) goto L_Error2;
+
+ @Mask = (15 << (4 * @Torch));
+ OrumQuestTorch = (OrumQuestTorch & (~(@Mask))) | @TorchColor << (4 * @Torch);
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close2;
+ return;
+
+L_Error2:
+ mes "Torch color is out of range.";
+ close2;
+ return;
+}
+
+function script GetTorchIntensity {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+
+ @Mask = 15;
+ @shift = 4 * (@Torch + 3);
+ @TorchIntensity = (OrumQuestTorch >> @shift) & @Mask;
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close2;
+ return;
+}
+
+function script SetTorchIntensity {
+ if (@Torch < 0 || @Torch > 2) goto L_Error;
+ if (@TorchIntensity < 0 || @TorchIntensity > 2) goto L_Error2;
+
+ @Mask = (15 << (4 * (@Torch + 3)));
+ OrumQuestTorch = (OrumQuestTorch & (~(@Mask))) | @TorchIntensity << (4 * (@Torch + 3));
+ return;
+
+L_Error:
+ mes "Torch number is out of range.";
+ close2;
+ return;
+
+L_Error2:
+ mes "Torch intensity is out of range.";
+ close2;
+ return;
+}
+
+function script DoneWithTorches {
+ if (OrumQuest < 11 && OrumQuest >= 8)
+ goto L_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.";
+ close2;
+ goto L_Return;
+
+L_Different:
+ mes "The flame on this torch looks different than the rest. You better tell Orum about it before doing anything.";
+ OrumQuest = 6;
+ close2;
+ goto L_Return;
+
+L_Return:
+ return;
+}
+
+function script TorchLoop {
+ // Variables used here:
+ // @Torch - pass before calling
+ // @TorchColor - initialized here, updated throughout
+ // @TorchIntensity - initialized here, updated throughout
+ callfunc "GetTorchColor";
+ callfunc "GetTorchIntensity";
+
+ 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] + " ##B" + @colors$[@TorchColor] + "##b tint to it.";
+ goto L_Color_Loop;
+
+L_Color_Loop:
+ menu
+ "Add Red Powder", L_Use_Red,
+ "Add Yellow Powder", L_Use_Yellow,
+ "Add Blue Powder", L_Use_Blue,
+ "Leave it alone.", L_Leave;
+
+L_Leave:
+ mes "The flame flickers as if it's laughing at you.";
+ close2;
+ return;
+
+L_Use_Red:
+ if (countitem("RedPowder") < 1)
+ goto L_No_Powder;
+ delitem "RedPowder", 1;
+
+ // 0 1 2 3 4 5 6 7 8 9 a b c
+ // T R o Y g B p
+ // ^ < < < < , X . > > > >
+ if (@TorchColor == 1)
+ goto L_WrongColor;
+ if (2 <= @TorchColor && @TorchColor <= 5)
+ goto L_Color_Dec;
+ if (@TorchColor == 6)
+ goto L_Color_Dec_Wrong;
+ if (@TorchColor == 7)
+ goto L_WrongColor;
+ if (@TorchColor == 8)
+ goto L_Color_Inc_Wrong;
+ if (9 <= @TorchColor && @TorchColor <= 12)
+ goto L_Color_Inc;
+
+ // work around an old bug
+ if (@TorchColor == 0)
+ @TorchColor = 1;
+ goto L_Show_Color;
+
+L_Use_Yellow:
+ if (countitem("YellowPowder") < 1)
+ goto L_No_Powder;
+ delitem "YellowPowder", 1;
+
+ // 0 1 2 3 4 5 6 7 8 9 a b c
+ // T R o Y g B p
+ // > > > > ^ < < < < , X .
+ if (1 <= @TorchColor && @TorchColor <= 4)
+ goto L_Color_Inc;
+ if (@TorchColor == 5)
+ goto L_WrongColor;
+ if (6 <= @TorchColor && @TorchColor <= 9)
+ goto L_Color_Dec;
+ if (@TorchColor == 10)
+ goto L_Color_Dec_Wrong;
+ if (@TorchColor == 11)
+ goto L_WrongColor;
+ if (@TorchColor == 12)
+ goto L_Color_Inc_Wrong;
+
+ // work around an old bug
+ if (@TorchColor == 0)
+ @TorchColor = 5;
+ goto L_Show_Color;
+
+L_Use_Blue:
+ if (countitem("BluePowder") < 1)
+ goto L_No_Powder;
+ delitem "BluePowder", 1;
+
+ // 0 1 2 3 4 5 6 7 8 9 a b c
+ // T R o Y g B p
+ // < , X . > > > > ^ < < <
+ if (@TorchColor == 1)
+ goto L_Color_Dec;
+ if (@TorchColor == 2)
+ goto L_Color_Dec_Wrong;
+ if (@TorchColor == 3)
+ goto L_WrongColor;
+ if (@TorchColor == 4)
+ goto L_Color_Inc_Wrong;
+ if (5 <= @TorchColor && @TorchColor <= 8)
+ goto L_Color_Inc;
+ if (@TorchColor == 9)
+ goto L_WrongColor;
+ if (10 <= @TorchColor && @TorchColor <= 12)
+ goto L_Color_Dec;
+
+ // work around an old bug
+ if (@TorchColor == 0)
+ @TorchColor = 9;
+ 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.";
+ close2;
+ return;
+
+L_Color_Dec:
+ @TorchColor = @TorchColor - 1;
+ if (@TorchColor == 0)
+ @TorchColor = 12;
+ goto L_Show_Color;
+
+L_Color_Dec_Wrong:
+ @TorchColor = @TorchColor - 1;
+ if (@TorchColor == 0)
+ @TorchColor = 12;
+ goto L_WrongColor;
+
+L_Color_Inc_Wrong:
+ @TorchColor = @TorchColor + 1;
+ if (@TorchColor == 13)
+ @TorchColor = 1;
+ goto L_WrongColor;
+
+L_Color_Inc:
+ @TorchColor = @TorchColor + 1;
+ if (@TorchColor == 13)
+ @TorchColor = 1;
+ goto L_Show_Color;
+
+L_Show_Color:
+ callfunc "SetTorchColor";
+ misceffect 5;
+ mes "As your pour the powder into the flame you can see its tint transform to a " + @intensities$[@TorchIntensity] + " ##B" + @colors$[@TorchColor] + "##b.";
+ goto L_Color_Loop;
+
+L_WrongColor:
+ callfunc "SetTorchColor";
+ @TorchIntensity = @TorchIntensity + 1;
+ if (@TorchIntensity > 2)
+ goto L_Failed;
+ callfunc "SetTorchIntensity";
+ misceffect 5;
+ mes "As you pour the powder into the flame it flares violently for a moment and then turns into a " + @intensities$[@TorchIntensity] + " ##B" + @colors$[@TorchColor] + "##b.";
+ 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;
+ @TorchIntensity = 0;
+ callfunc "SetTorchIntensity";
+ heal -Hp, 0;
+ close2;
+ return;
+}
+
+009-4,68,21,0 script Torch#1 NPC400,{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ callfunc "DoneWithTorches";
+
+ @Torch = 0;
+ callfunc "TorchLoop";
+ // unreachable
+ end;
+}
+
+009-4,67,42,0 script Torch#2 NPC400,{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ callfunc "DoneWithTorches";
+
+ @Torch = 1;
+ callfunc "TorchLoop";
+ // unreachable
+ end;
+}
+
+009-4,33,86,0 script Torch#3 NPC400,{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ callfunc "DoneWithTorches";
+
+ @Torch = 2;
+ callfunc "TorchLoop";
+ // unreachable
+ end;
+}
diff --git a/npc/009-4/waric.txt b/npc/009-4/waric.txt
new file mode 100755
index 00000000..dee2787f
--- /dev/null
+++ b/npc/009-4/waric.txt
@@ -0,0 +1,93 @@
+
+009-4,99,33,0 script #WizardTrap NPC32767,2,1,{
+ 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", 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... They're awake...\"";
+ close;
+}
+
+009-4,120,43,0 script Orum#trap NPC158,{
+ mes "[Orum]";
+ mes "\"I told you to forget about this place but you did not heed my advice!\"";
+ next;
+ mes "\"Your fate is up to Waric now... don't expect me to do anything else for you.\"";
+ close;
+}
+
+009-4,118,42,0 script Waric#trap NPC153,{
+ @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.\"";
+ 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!", L_Next;
+
+L_Next:
+ 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...";
+ OrumQuest = 13;
+ goto L_close;
+
+L_Behave:
+ mes "Waric looks toward you shaking his finger.";
+ next;
+ mes "[Waric]";
+ mes "\"So... are you ready to behave yourself now?\"";
+ menu
+ "Yes mister...", L_Explain,
+ "Let me out here!", L_Next1;
+
+L_Next1:
+ mes "[Waric]";
+ mes "\"Having fun I take it?\"";
+ next;
+ mes "They continue discussing their plans.";
+ goto L_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 "\"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 "[Waric]";
+ 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 "\"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;
+ OrumQuest = 14;
+ misceffect 10;
+ warp "008-1", 65, 90;
+ getexp @Exp_LEARNED_ALOT, 0;
+ mes "You awake on your back with a squirrel 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.";
+ monster "008-1", 65, 90, "Squirrel", 1038, 1;
+ goto L_close;
+
+L_close:
+ @Exp_LEARNED_ALOT = 0;
+ close;
+}