// Barrels // Author: Wushin 029-2,33,88,24,7|monster|HouseMaggot|1050,2,100000ms,30000ms,Barrel#0::OnMaggotDeath -|script|#BarrelConfig|32767 { end; OnInit: setarray $@BarrelBits, (1 << 20), (1 << 21), (1 << 22), (1 << 23), (1 << 24), (1 << 25), (1 << 26), (1 << 27); setarray $@BarrelRewards, 533, 507, 505, 518, 537, 526; set $@BarrelSpawnCnt, 1; set $@BarrelSpawnId, 1050; set $@BarrelMax, getarraysize($@BarrelBits); end; } function|script|CountBarrels { set @barrel_count, 0; set @count_tmp, 0; goto L_Loop; L_Loop: if (STARTAREA & $@BarrelBits[@barrel_count]) goto L_AddOne; goto L_LoopAgain; L_AddOne: set @barrel_count, (@barrel_count + 1); goto L_LoopAgain; L_LoopAgain: set @count_tmp, (@count_tmp + 1); if (@count_tmp == getarraysize($@BarrelBits)) goto L_BarrelTally; goto L_Loop; L_BarrelTally: return; } function|script|CheckBarrel { set @npc_distance, 2; callfunc "PCtoNPCRange"; if(@npc_check) goto L_Return; if (!(QL_ZEGAS == 2)) goto L_NoI; if (STARTAREA & $@BarrelBits[@barrel]) goto L_Empty; set STARTAREA, STARTAREA | $@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_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 QL_ZEGAS, 3; killmonster getmap() + "", "Barrel#0::OnMaggotDeath"; goto L_Return; L_Spawn: message strcharinfo(0), "Uck, More Maggots!"; setarray @npc_loc, getnpcx(), getnpcy(); areamonster getmap(), @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), "", $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath"; cleararray @npc_loc, 0, 2; goto L_Return; L_Reward: getitem $@BarrelRewards[rand(getarraysize($@BarrelRewards))], 1; goto L_Return; L_Return: return; }