// Barrels
// Author: Wushin
042-2.gat,33,88,24,7|monster|HouseMaggot|1050,2,100000,30000,Barrel#0::OnMaggotDeath
-|script|#BarrelConfig|-1,
{
end;
OnInit:
set $@BarrelStartBit, (1 << 16);
set $@BarrelEndBit, (1 << 23);
set $@ZegasMetBit, (1 << 30);
setarray $@BarrelBits, (1 << 17), (1 << 18), (1 << 19), (1 << 20), (1 << 21), (1 << 22);
setarray $@BarrelRewards, 533, 507, 505, 518, 537, 526;
set $@BarrelSpawnCnt, 1;
set $@BarrelSpawnId, 1050;
set $@BarrelSpawnName$, "House Maggot";
set $@BarrelMax, getarraysize($@BarrelBits);
end;
}
function|script|CheckBarrelQuest|,
{
callfunc "CountBarrels";
set @barrel_quest, 0;
if (TUTORIAL & $@ZegasMetBit)
set @barrel_quest, 1;
if (TUTORIAL & $@BarrelStartBit)
set @barrel_quest, 2;
if (!(TUTORIAL & $@BarrelStartBit) && (@barrel_count))
set @barrel_quest, 3;
if (TUTORIAL & $@BarrelEndBit)
set @barrel_quest, 4;
return;
}
function|script|CountBarrels|,
{
set @barrel_count, 0;
set @barrel_tmp, 0;
goto L_Loop;
L_Loop:
if (TUTORIAL & $@BarrelBits[@barrel_tmp])
goto L_AddOne;
goto L_LoopAgain;
L_AddOne:
set @barrel_count, (@barrel_count + 1);
goto L_LoopAgain;
L_LoopAgain:
set @barrel_tmp, (@barrel_tmp + 1);
if (@barrel_tmp == getarraysize($@BarrelBits))
goto L_BarrelTally;
goto L_Loop;
L_BarrelTally:
return;
}
function|script|CheckBarrel|,
{
callfunc "PCtoNPCRange";
if (@npc_check)
goto L_Range;
callfunc "CheckBarrelQuest";
if (!(@barrel_quest))
goto L_NoI;
if (TUTORIAL & $@BarrelBits[@barrel])
goto L_Empty;
set TUTORIAL, TUTORIAL | $@BarrelBits[@barrel];
callfunc "CountBarrels";
if (@barrel_count == $@BarrelMax)
goto L_QuestReward;
set @player_random, rand(@barrel_count * 10);
set @barrel_random, rand(@barrel_count * $@BarrelMax);
if (@barrel_random > @player_random)
goto L_Spawn;
goto L_Reward;
L_Range:
message strcharinfo(0), "You'll need to get closer.";
goto L_Return;
L_NoI:
message strcharinfo(0), "Nothing interesting here.";
goto L_Return;
L_Empty:
message strcharinfo(0), "You've already searched this barrel.";
goto L_Return;
L_QuestReward:
message strcharinfo(0), "You found the bug bomb.";
misceffect 33;
set TUTORIAL, TUTORIAL &~ $@BarrelStartBit;
killmonster getmap() + ".gat", "Barrel#0::OnMaggotDeath";
goto L_Return;
L_Spawn:
areamonster getmap() + ".gat", @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
goto L_Return;
L_Reward:
getitem $@BarrelRewards[rand(getarraysize($@BarrelRewards))], 1;
goto L_Return;
L_Return:
return;
}