summaryrefslogtreecommitdiff
path: root/npc/007-1/torches.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/007-1/torches.txt')
-rw-r--r--npc/007-1/torches.txt147
1 files changed, 147 insertions, 0 deletions
diff --git a/npc/007-1/torches.txt b/npc/007-1/torches.txt
new file mode 100644
index 000000000..57a93a241
--- /dev/null
+++ b/npc/007-1/torches.txt
@@ -0,0 +1,147 @@
+// TMW-2 script.
+// Author:
+// Crazyfefe
+// Jesusalva
+// Description:
+// Torches
+// Variables:
+// TulimsharQuest_DarkInvocator
+// Values:
+// 0 Default.
+// 1 Quest Found.
+// 2 Quest Accepted.
+// 3 Bomb Defused.
+// 4 Quest Completed.
+
+
+function script CheckTorch {
+ @torch_count = 0;
+ @count_tmp = 0;
+ if (debug)
+ npctalk3 l("Hello, I am T-@@, of the @@ order.", @torch, $@TorchBits[@torch]);
+ if (getq2(TulimsharQuest_DarkInvocator) & $@TorchBits[@torch])
+ goto L_Empty;
+ if (countitem(EverburnPowder) <= 0) {
+ dispbottom(l("I do not have Everburn Powder to lit the torch."));
+ end;
+ }
+ setq2 TulimsharQuest_DarkInvocator, getq2(TulimsharQuest_DarkInvocator) | $@TorchBits[@torch];
+
+ goto L_Loop;
+
+L_TorchTally:
+ specialeffect(53);
+ specialeffect(54);
+ getmapxy(.@m, .@x, .@y, UNITTYPE_PC);
+
+ switch (@torch_count) {
+ case 1:
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 3, "Zarkor::OnMonster";
+ break;
+ case 2:
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 3, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 1, "Zarkor::OnMonster";
+ break;
+ case 3:
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 4, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 3, "Zarkor::OnMonster";
+ break;
+ case 4:
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Black Scorpion", BlackScorpion, 1, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 1, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 4, "Zarkor::OnMonster";
+ break;
+ case 5:
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Black Scorpion", BlackScorpion, 2, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 2, "Zarkor::OnMonster";
+ areamonster .@m, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 5, "Zarkor::OnMonster";
+ break;
+ }
+
+ delitem EverburnPowder, 1;
+ if (@torch_count == 5) {
+ message strcharinfo(0), l("All torches are lit!");
+ //killmonsterall("007-1");
+ setq1 TulimsharQuest_DarkInvocator, 6;
+ }
+
+ return;
+
+L_Loop:
+ while (@count_tmp < 5) {
+ @count_tmp = (@count_tmp + 1);
+ if (getq2(TulimsharQuest_DarkInvocator) & $@TorchBits[@count_tmp])
+ @torch_count = (@torch_count + 1);
+ }
+ goto L_TorchTally;
+
+L_Empty:
+ message strcharinfo(0), l("This torch is already lit.");
+ return;
+
+}
+
+007-1,166,145,0 script Torch#1 NPC_NO_SPRITE,{
+ @torch = 1;
+ .@q = getq(TulimsharQuest_DarkInvocator);
+ if (.@q == 5) {
+ CheckTorch();
+ }
+ end;
+OnInit:
+ // Remember: array start at zero, but barrels count start at 1. "Fixing" may break torch 5!
+ setarray $@TorchBits, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6);
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}
+
+007-1,65,116,0 script Torch#2 NPC_NO_SPRITE,{
+ @torch = 2;
+ .@q = getq(TulimsharQuest_DarkInvocator);
+ if (.@q == 5) {
+ CheckTorch();
+ }
+ end;
+OnInit:
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}
+
+007-1,62,133,0 script Torch#3 NPC_NO_SPRITE,{
+ @torch = 3;
+ .@q = getq(TulimsharQuest_DarkInvocator);
+ if (.@q == 5) {
+ CheckTorch();
+ }
+ end;
+OnInit:
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}
+007-1,35,125,0 script Torch#4 NPC_NO_SPRITE,{
+ @torch = 4;
+ .@q = getq(TulimsharQuest_DarkInvocator);
+ if (.@q == 5) {
+ CheckTorch();
+ }
+ end;
+OnInit:
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}
+007-1,139,24,0 script Torch#5 NPC_NO_SPRITE,{
+ @torch = 5;
+ .@q = getq(TulimsharQuest_DarkInvocator);
+ if (.@q == 5) {
+ CheckTorch();
+ }
+ end;
+OnInit:
+ .sex = G_OTHER;
+ .distance = 1;
+ end;
+}