// 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 ($@GM_OVERRIDE)
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(62);
specialeffect(54);
getmapxy(@m$, .@x, .@y, 0);
switch (@torch_count) {
case 1:
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 4, "Zarkor::OnMonster";
break;
case 2:
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 5, "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, 6, "Zarkor::OnMonster";
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 5, "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, 6, "Zarkor::OnMonster";
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 7, "Zarkor::OnMonster";
break;
case 5:
areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Black Scorpion", BlackScorpion, 3, "Zarkor::OnMonster";
areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Magic Maggot", CaveMaggot, 8, "Zarkor::OnMonster";
areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Magic Goblin", MagicGoblin, 10, "Zarkor::OnMonster";
break;
default:
dispbottom l("BUG, Please report: TorchTally, err_val @@", @torch_count);
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Black Scorpion", BlackScorpion, rand(1,2), "Zarkor::OnMonster";
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, rand(1,3), "Zarkor::OnMonster";
areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, rand(1,5), "Zarkor::OnMonster";
}
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,171,145,0 script Torch#1 NPC_NO_SPRITE,{
@torch = 1;
.@q = getq(TulimsharQuest_DarkInvocator);
if (.@q == 5) {
CheckTorch();
npctalk(l("What is @@ doing?", strcharinfo(0)), "Miner#SkyDG");
}
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,70,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,67,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,40,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,144,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;
}