--This will add a new game mechanic so that containers with explosives actually go boom when they get damaged. --Made by MewMew local math_min = math.min local math_random = math.random local ScenarioTable = require 'maps.scrap_towny_ffa.table' local Pollution = require 'maps.scrap_towny_ffa.pollution' local Event = require 'utils.event' --local damage_per_explosive = 100 local damage_per_explosive = 50 local empty_tile_damage_decay = 100 local out_of_map_tile_health = 1500 local max_volatility = 20 local explosive_items = { ['explosives'] = 1, ['land-mine'] = 1, ['grenade'] = 1, ['cluster-grenade'] = 3, ['artillery-shell'] = 5, ['cannon-shell'] = 3, ['explosive-cannon-shell'] = 5, ['explosive-uranium-cannon-shell'] = 5, ['uranium-cannon-shell'] = 5, -- ["atomic-bomb"] = 100, ['explosive-rocket'] = 5, ['rocket'] = 2, ['flamethrower-ammo'] = 2, ['petroleum-gas-barrel'] = 2, -- ["crude-oil-barrel"] = 2, -- ["light-oil-barrel"] = 2, -- ["heavy-oil-barrel"] = 2, -- ["lubricant-barrel"] = 1, -- ["shotgun-shell"] = 1, -- ["piercing-shotgun-shell"] = 1, -- ["firearm-magazine"] = 1, -- ["piercing-rounds-magazine"] = 1, -- ["uranium-rounds-magazine"] = 1, ['cliff-explosives'] = 2 -- ["solid-fuel"] = 1 } local circle_coordinates = { [1] = {{x = 0, y = 0}}, [2] = {{x = -1, y = -1}, {x = 1, y = -1}, {x = 0, y = -1}, {x = -1, y = 0}, {x = -1, y = 1}, {x = 0, y = 1}, {x = 1, y = 1}, {x = 1, y = 0}}, [3] = { {x = -2, y = -1}, {x = -1, y = -2}, {x = 1, y = -2}, {x = 0, y = -2}, {x = 2, y = -1}, {x = -2, y = 1}, {x = -2, y = 0}, {x = 2, y = 1}, {x = 2, y = 0}, {x = -1, y = 2}, {x = 1, y = 2}, {x = 0, y = 2} }, [4] = { {x = -1, y = -3}, {x = 1, y = -3}, {x = 0, y = -3}, {x = -3, y = -1}, {x = -2, y = -2}, {x = 3, y = -1}, {x = 2, y = -2}, {x = -3, y = 0}, {x = -3, y = 1}, {x = 3, y = 1}, {x = 3, y = 0}, {x = -2, y = 2}, {x = -1, y = 3}, {x = 0, y = 3}, {x = 1, y = 3}, {x = 2, y = 2} }, [5] = { {x = -3, y = -3}, {x = -2, y = -3}, {x = -1, y = -4}, {x = -2, y = -4}, {x = 1, y = -4}, {x = 0, y = -4}, {x = 2, y = -3}, {x = 3, y = -3}, {x = 2, y = -4}, {x = -3, y = -2}, {x = -4, y = -1}, {x = -4, y = -2}, {x = 3, y = -2}, {x = 4, y = -1}, {x = 4, y = -2}, {x = -4, y = 1}, {x = -4, y = 0}, {x = 4, y = 1}, {x = 4, y = 0}, {x = -3, y = 3}, {x = -3, y = 2}, {x = -4, y = 2}, {x = -2, y = 3}, {x = 2, y = 3}, {x = 3, y = 3}, {x = 3, y = 2}, {x = 4, y = 2}, {x = -2, y = 4}, {x = -1, y = 4}, {x = 0, y = 4}, {x = 1, y = 4}, {x = 2, y = 4} }, [6] = { {x = -1, y = -5}, {x = -2, y = -5}, {x = 1, y = -5}, {x = 0, y = -5}, {x = 2, y = -5}, {x = -3, y = -4}, {x = -4, y = -3}, {x = 3, y = -4}, {x = 4, y = -3}, {x = -5, y = -1}, {x = -5, y = -2}, {x = 5, y = -1}, {x = 5, y = -2}, {x = -5, y = 1}, {x = -5, y = 0}, {x = 5, y = 1}, {x = 5, y = 0}, {x = -5, y = 2}, {x = -4, y = 3}, {x = 4, y = 3}, {x = 5, y = 2}, {x = -3, y = 4}, {x = -2, y = 5}, {x = -1, y = 5}, {x = 0, y = 5}, {x = 1, y = 5}, {x = 3, y = 4}, {x = 2, y = 5} }, [7] = { {x = -4, y = -5}, {x = -3, y = -5}, {x = -2, y = -6}, {x = -1, y = -6}, {x = 0, y = -6}, {x = 1, y = -6}, {x = 3, y = -5}, {x = 2, y = -6}, {x = 4, y = -5}, {x = -5, y = -4}, {x = -5, y = -3}, {x = -4, y = -4}, {x = 4, y = -4}, {x = 5, y = -4}, {x = 5, y = -3}, {x = -6, y = -1}, {x = -6, y = -2}, {x = 6, y = -1}, {x = 6, y = -2}, {x = -6, y = 1}, {x = -6, y = 0}, {x = 6, y = 1}, {x = 6, y = 0}, {x = -5, y = 3}, {x = -6, y = 2}, {x = 5, y = 3}, {x = 6, y = 2}, {x = -5, y = 4}, {x = -4, y = 4}, {x = -4, y = 5}, {x = -3, y = 5}, {x = 3, y = 5}, {x = 4, y = 4}, {x = 5, y = 4}, {x = 4, y = 5}, {x = -1, y = 6}, {x = -2, y = 6}, {x = 1, y = 6}, {x = 0, y = 6}, {x = 2, y = 6} }, [8] = { {x = -1, y = -7}, {x = -2, y = -7}, {x = 1, y = -7}, {x = 0, y = -7}, {x = 2, y = -7}, {x = -5, y = -5}, {x = -4, y = -6}, {x = -3, y = -6}, {x = 3, y = -6}, {x = 4, y = -6}, {x = 5, y = -5}, {x = -6, y = -3}, {x = -6, y = -4}, {x = 6, y = -4}, {x = 6, y = -3}, {x = -7, y = -1}, {x = -7, y = -2}, {x = 7, y = -1}, {x = 7, y = -2}, {x = -7, y = 1}, {x = -7, y = 0}, {x = 7, y = 1}, {x = 7, y = 0}, {x = -7, y = 2}, {x = -6, y = 3}, {x = 6, y = 3}, {x = 7, y = 2}, {x = -5, y = 5}, {x = -6, y = 4}, {x = 5, y = 5}, {x = 6, y = 4}, {x = -3, y = 6}, {x = -4, y = 6}, {x = -2, y = 7}, {x = -1, y = 7}, {x = 0, y = 7}, {x = 1, y = 7}, {x = 3, y = 6}, {x = 2, y = 7}, {x = 4, y = 6} }, [9] = { {x = -4, y = -7}, {x = -3, y = -7}, {x = -2, y = -8}, {x = -1, y = -8}, {x = 0, y = -8}, {x = 1, y = -8}, {x = 3, y = -7}, {x = 2, y = -8}, {x = 4, y = -7}, {x = -5, y = -6}, {x = -6, y = -6}, {x = -6, y = -5}, {x = 5, y = -6}, {x = 6, y = -5}, {x = 6, y = -6}, {x = -7, y = -4}, {x = -7, y = -3}, {x = 7, y = -4}, {x = 7, y = -3}, {x = -8, y = -2}, {x = -8, y = -1}, {x = 8, y = -1}, {x = 8, y = -2}, {x = -8, y = 0}, {x = -8, y = 1}, {x = 8, y = 1}, {x = 8, y = 0}, {x = -7, y = 3}, {x = -8, y = 2}, {x = 7, y = 3}, {x = 8, y = 2}, {x = -7, y = 4}, {x = -6, y = 5}, {x = 6, y = 5}, {x = 7, y = 4}, {x = -5, y = 6}, {x = -6, y = 6}, {x = -4, y = 7}, {x = -3, y = 7}, {x = 3, y = 7}, {x = 5, y = 6}, {x = 4, y = 7}, {x = 6, y = 6}, {x = -2, y = 8}, {x = -1, y = 8}, {x = 0, y = 8}, {x = 1, y = 8}, {x = 2, y = 8} }, [10] = { {x = -3, y = -9}, {x = -1, y = -9}, {x = -2, y = -9}, {x = 1, y = -9}, {x = 0, y = -9}, {x = 3, y = -9}, {x = 2, y = -9}, {x = -5, y = -7}, {x = -6, y = -7}, {x = -5, y = -8}, {x = -4, y = -8}, {x = -3, y = -8}, {x = 3, y = -8}, {x = 5, y = -7}, {x = 5, y = -8}, {x = 4, y = -8}, {x = 6, y = -7}, {x = -7, y = -5}, {x = -7, y = -6}, {x = -8, y = -5}, {x = 7, y = -5}, {x = 7, y = -6}, {x = 8, y = -5}, {x = -9, y = -3}, {x = -8, y = -4}, {x = -8, y = -3}, {x = 8, y = -4}, {x = 8, y = -3}, {x = 9, y = -3}, {x = -9, y = -1}, {x = -9, y = -2}, {x = 9, y = -1}, {x = 9, y = -2}, {x = -9, y = 1}, {x = -9, y = 0}, {x = 9, y = 1}, {x = 9, y = 0}, {x = -9, y = 3}, {x = -9, y = 2}, {x = -8, y = 3}, {x = 8, y = 3}, {x = 9, y = 3}, {x = 9, y = 2}, {x = -7, y = 5}, {x = -8, y = 5}, {x = -8, y = 4}, {x = 7, y = 5}, {x = 8, y = 5}, {x = 8, y = 4}, {x = -7, y = 6}, {x = -6, y = 7}, {x = -5, y = 7}, {x = 5, y = 7}, {x = 7, y = 6}, {x = 6, y = 7}, {x = -5, y = 8}, {x = -4, y = 8}, {x = -3, y = 8}, {x = -3, y = 9}, {x = -2, y = 9}, {x = -1, y = 9}, {x = 0, y = 9}, {x = 1, y = 9}, {x = 3, y = 8}, {x = 2, y = 9}, {x = 3, y = 9}, {x = 5, y = 8}, {x = 4, y = 8} }, [11] = { {x = -5, y = -9}, {x = -4, y = -9}, {x = -3, y = -10}, {x = -1, y = -10}, {x = -2, y = -10}, {x = 1, y = -10}, {x = 0, y = -10}, {x = 3, y = -10}, {x = 2, y = -10}, {x = 5, y = -9}, {x = 4, y = -9}, {x = -7, y = -7}, {x = -6, y = -8}, {x = 7, y = -7}, {x = 6, y = -8}, {x = -9, y = -5}, {x = -8, y = -6}, {x = 9, y = -5}, {x = 8, y = -6}, {x = -9, y = -4}, {x = -10, y = -3}, {x = 9, y = -4}, {x = 10, y = -3}, {x = -10, y = -2}, {x = -10, y = -1}, {x = 10, y = -1}, {x = 10, y = -2}, {x = -10, y = 0}, {x = -10, y = 1}, {x = 10, y = 1}, {x = 10, y = 0}, {x = -10, y = 2}, {x = -10, y = 3}, {x = 10, y = 3}, {x = 10, y = 2}, {x = -9, y = 4}, {x = -9, y = 5}, {x = 9, y = 5}, {x = 9, y = 4}, {x = -8, y = 6}, {x = -7, y = 7}, {x = 7, y = 7}, {x = 8, y = 6}, {x = -6, y = 8}, {x = -5, y = 9}, {x = -4, y = 9}, {x = 4, y = 9}, {x = 5, y = 9}, {x = 6, y = 8}, {x = -3, y = 10}, {x = -2, y = 10}, {x = -1, y = 10}, {x = 0, y = 10}, {x = 1, y = 10}, {x = 2, y = 10}, {x = 3, y = 10} }, [12] = { {x = -3, y = -11}, {x = -2, y = -11}, {x = -1, y = -11}, {x = 0, y = -11}, {x = 1, y = -11}, {x = 2, y = -11}, {x = 3, y = -11}, {x = -7, y = -9}, {x = -6, y = -9}, {x = -5, y = -10}, {x = -4, y = -10}, {x = 5, y = -10}, {x = 4, y = -10}, {x = 7, y = -9}, {x = 6, y = -9}, {x = -9, y = -7}, {x = -7, y = -8}, {x = -8, y = -8}, {x = -8, y = -7}, {x = 7, y = -8}, {x = 8, y = -7}, {x = 8, y = -8}, {x = 9, y = -7}, {x = -9, y = -6}, {x = -10, y = -5}, {x = 9, y = -6}, {x = 10, y = -5}, {x = -11, y = -3}, {x = -10, y = -4}, {x = 10, y = -4}, {x = 11, y = -3}, {x = -11, y = -2}, {x = -11, y = -1}, {x = 11, y = -1}, {x = 11, y = -2}, {x = -11, y = 0}, {x = -11, y = 1}, {x = 11, y = 1}, {x = 11, y = 0}, {x = -11, y = 2}, {x = -11, y = 3}, {x = 11, y = 3}, {x = 11, y = 2}, {x = -10, y = 5}, {x = -10, y = 4}, {x = 10, y = 5}, {x = 10, y = 4}, {x = -9, y = 7}, {x = -9, y = 6}, {x = -8, y = 7}, {x = 8, y = 7}, {x = 9, y = 7}, {x = 9, y = 6}, {x = -8, y = 8}, {x = -7, y = 8}, {x = -7, y = 9}, {x = -6, y = 9}, {x = 7, y = 8}, {x = 7, y = 9}, {x = 6, y = 9}, {x = 8, y = 8}, {x = -5, y = 10}, {x = -4, y = 10}, {x = -3, y = 11}, {x = -2, y = 11}, {x = -1, y = 11}, {x = 0, y = 11}, {x = 1, y = 11}, {x = 2, y = 11}, {x = 3, y = 11}, {x = 4, y = 10}, {x = 5, y = 10} }, [13] = { {x = -5, y = -11}, {x = -4, y = -11}, {x = -3, y = -12}, {x = -1, y = -12}, {x = -2, y = -12}, {x = 1, y = -12}, {x = 0, y = -12}, {x = 3, y = -12}, {x = 2, y = -12}, {x = 4, y = -11}, {x = 5, y = -11}, {x = -8, y = -9}, {x = -7, y = -10}, {x = -6, y = -10}, {x = 6, y = -10}, {x = 7, y = -10}, {x = 8, y = -9}, {x = -10, y = -7}, {x = -9, y = -8}, {x = 9, y = -8}, {x = 10, y = -7}, {x = -11, y = -5}, {x = -10, y = -6}, {x = 10, y = -6}, {x = 11, y = -5}, {x = -11, y = -4}, {x = -12, y = -3}, {x = 11, y = -4}, {x = 12, y = -3}, {x = -12, y = -1}, {x = -12, y = -2}, {x = 12, y = -1}, {x = 12, y = -2}, {x = -12, y = 1}, {x = -12, y = 0}, {x = 12, y = 1}, {x = 12, y = 0}, {x = -12, y = 3}, {x = -12, y = 2}, {x = 12, y = 3}, {x = 12, y = 2}, {x = -11, y = 5}, {x = -11, y = 4}, {x = 11, y = 4}, {x = 11, y = 5}, {x = -10, y = 7}, {x = -10, y = 6}, {x = 10, y = 6}, {x = 10, y = 7}, {x = -9, y = 8}, {x = -8, y = 9}, {x = 9, y = 8}, {x = 8, y = 9}, {x = -7, y = 10}, {x = -5, y = 11}, {x = -6, y = 10}, {x = -4, y = 11}, {x = 5, y = 11}, {x = 4, y = 11}, {x = 7, y = 10}, {x = 6, y = 10}, {x = -3, y = 12}, {x = -2, y = 12}, {x = -1, y = 12}, {x = 0, y = 12}, {x = 1, y = 12}, {x = 2, y = 12}, {x = 3, y = 12} }, [14] = { {x = -3, y = -13}, {x = -1, y = -13}, {x = -2, y = -13}, {x = 1, y = -13}, {x = 0, y = -13}, {x = 3, y = -13}, {x = 2, y = -13}, {x = -7, y = -11}, {x = -6, y = -11}, {x = -5, y = -12}, {x = -6, y = -12}, {x = -4, y = -12}, {x = 5, y = -12}, {x = 4, y = -12}, {x = 7, y = -11}, {x = 6, y = -11}, {x = 6, y = -12}, {x = -10, y = -9}, {x = -9, y = -9}, {x = -9, y = -10}, {x = -8, y = -10}, {x = 9, y = -9}, {x = 9, y = -10}, {x = 8, y = -10}, {x = 10, y = -9}, {x = -11, y = -7}, {x = -10, y = -8}, {x = 11, y = -7}, {x = 10, y = -8}, {x = -11, y = -6}, {x = -12, y = -6}, {x = -12, y = -5}, {x = 11, y = -6}, {x = 12, y = -6}, {x = 12, y = -5}, {x = -13, y = -3}, {x = -12, y = -4}, {x = 12, y = -4}, {x = 13, y = -3}, {x = -13, y = -2}, {x = -13, y = -1}, {x = 13, y = -1}, {x = 13, y = -2}, {x = -13, y = 0}, {x = -13, y = 1}, {x = 13, y = 1}, {x = 13, y = 0}, {x = -13, y = 2}, {x = -13, y = 3}, {x = 13, y = 3}, {x = 13, y = 2}, {x = -12, y = 5}, {x = -12, y = 4}, {x = 12, y = 5}, {x = 12, y = 4}, {x = -11, y = 6}, {x = -11, y = 7}, {x = -12, y = 6}, {x = 11, y = 7}, {x = 11, y = 6}, {x = 12, y = 6}, {x = -10, y = 8}, {x = -10, y = 9}, {x = -9, y = 9}, {x = 9, y = 9}, {x = 10, y = 9}, {x = 10, y = 8}, {x = -9, y = 10}, {x = -8, y = 10}, {x = -7, y = 11}, {x = -6, y = 11}, {x = 7, y = 11}, {x = 6, y = 11}, {x = 8, y = 10}, {x = 9, y = 10}, {x = -6, y = 12}, {x = -5, y = 12}, {x = -4, y = 12}, {x = -3, y = 13}, {x = -2, y = 13}, {x = -1, y = 13}, {x = 0, y = 13}, {x = 1, y = 13}, {x = 2, y = 13}, {x = 3, y = 13}, {x = 5, y = 12}, {x = 4, y = 12}, {x = 6, y = 12} }, [15] = { {x = -5, y = -13}, {x = -6, y = -13}, {x = -4, y = -13}, {x = -3, y = -14}, {x = -1, y = -14}, {x = -2, y = -14}, {x = 1, y = -14}, {x = 0, y = -14}, {x = 3, y = -14}, {x = 2, y = -14}, {x = 5, y = -13}, {x = 4, y = -13}, {x = 6, y = -13}, {x = -9, y = -11}, {x = -8, y = -11}, {x = -8, y = -12}, {x = -7, y = -12}, {x = 7, y = -12}, {x = 8, y = -12}, {x = 8, y = -11}, {x = 9, y = -11}, {x = -11, y = -9}, {x = -10, y = -10}, {x = 10, y = -10}, {x = 11, y = -9}, {x = -12, y = -7}, {x = -11, y = -8}, {x = -12, y = -8}, {x = 11, y = -8}, {x = 12, y = -8}, {x = 12, y = -7}, {x = -13, y = -5}, {x = -13, y = -6}, {x = 13, y = -5}, {x = 13, y = -6}, {x = -13, y = -4}, {x = -14, y = -3}, {x = 13, y = -4}, {x = 14, y = -3}, {x = -14, y = -2}, {x = -14, y = -1}, {x = 14, y = -1}, {x = 14, y = -2}, {x = -14, y = 0}, {x = -14, y = 1}, {x = 14, y = 1}, {x = 14, y = 0}, {x = -14, y = 2}, {x = -14, y = 3}, {x = 14, y = 3}, {x = 14, y = 2}, {x = -13, y = 4}, {x = -13, y = 5}, {x = 13, y = 5}, {x = 13, y = 4}, {x = -13, y = 6}, {x = -12, y = 7}, {x = 12, y = 7}, {x = 13, y = 6}, {x = -11, y = 9}, {x = -11, y = 8}, {x = -12, y = 8}, {x = 11, y = 8}, {x = 11, y = 9}, {x = 12, y = 8}, {x = -9, y = 11}, {x = -10, y = 10}, {x = -8, y = 11}, {x = 9, y = 11}, {x = 8, y = 11}, {x = 10, y = 10}, {x = -7, y = 12}, {x = -8, y = 12}, {x = -6, y = 13}, {x = -5, y = 13}, {x = -4, y = 13}, {x = 5, y = 13}, {x = 4, y = 13}, {x = 7, y = 12}, {x = 6, y = 13}, {x = 8, y = 12}, {x = -3, y = 14}, {x = -2, y = 14}, {x = -1, y = 14}, {x = 0, y = 14}, {x = 1, y = 14}, {x = 2, y = 14}, {x = 3, y = 14} }, [16] = { {x = -3, y = -15}, {x = -1, y = -15}, {x = -2, y = -15}, {x = 1, y = -15}, {x = 0, y = -15}, {x = 3, y = -15}, {x = 2, y = -15}, {x = -7, y = -13}, {x = -8, y = -13}, {x = -5, y = -14}, {x = -6, y = -14}, {x = -4, y = -14}, {x = 5, y = -14}, {x = 4, y = -14}, {x = 7, y = -13}, {x = 6, y = -14}, {x = 8, y = -13}, {x = -9, y = -12}, {x = -10, y = -11}, {x = 9, y = -12}, {x = 10, y = -11}, {x = -11, y = -10}, {x = -12, y = -9}, {x = 11, y = -10}, {x = 12, y = -9}, {x = -13, y = -7}, {x = -13, y = -8}, {x = 13, y = -7}, {x = 13, y = -8}, {x = -14, y = -6}, {x = -14, y = -5}, {x = 14, y = -5}, {x = 14, y = -6}, {x = -15, y = -3}, {x = -14, y = -4}, {x = 15, y = -3}, {x = 14, y = -4}, {x = -15, y = -2}, {x = -15, y = -1}, {x = 15, y = -1}, {x = 15, y = -2}, {x = -15, y = 0}, {x = -15, y = 1}, {x = 15, y = 1}, {x = 15, y = 0}, {x = -15, y = 2}, {x = -15, y = 3}, {x = 15, y = 3}, {x = 15, y = 2}, {x = -14, y = 5}, {x = -14, y = 4}, {x = 14, y = 5}, {x = 14, y = 4}, {x = -13, y = 7}, {x = -14, y = 6}, {x = 13, y = 7}, {x = 14, y = 6}, {x = -13, y = 8}, {x = -12, y = 9}, {x = 12, y = 9}, {x = 13, y = 8}, {x = -11, y = 10}, {x = -10, y = 11}, {x = 10, y = 11}, {x = 11, y = 10}, {x = -9, y = 12}, {x = -8, y = 13}, {x = -7, y = 13}, {x = 7, y = 13}, {x = 8, y = 13}, {x = 9, y = 12}, {x = -6, y = 14}, {x = -5, y = 14}, {x = -4, y = 14}, {x = -3, y = 15}, {x = -2, y = 15}, {x = -1, y = 15}, {x = 0, y = 15}, {x = 1, y = 15}, {x = 2, y = 15}, {x = 3, y = 15}, {x = 4, y = 14}, {x = 5, y = 14}, {x = 6, y = 14} }, [17] = { {x = -5, y = -15}, {x = -6, y = -15}, {x = -3, y = -16}, {x = -4, y = -16}, {x = -4, y = -15}, {x = -1, y = -16}, {x = -2, y = -16}, {x = 1, y = -16}, {x = 0, y = -16}, {x = 3, y = -16}, {x = 2, y = -16}, {x = 5, y = -15}, {x = 4, y = -15}, {x = 4, y = -16}, {x = 6, y = -15}, {x = -9, y = -13}, {x = -10, y = -13}, {x = -8, y = -14}, {x = -7, y = -14}, {x = 7, y = -14}, {x = 9, y = -13}, {x = 8, y = -14}, {x = 10, y = -13}, {x = -11, y = -12}, {x = -11, y = -11}, {x = -12, y = -11}, {x = -10, y = -12}, {x = 11, y = -11}, {x = 11, y = -12}, {x = 10, y = -12}, {x = 12, y = -11}, {x = -13, y = -10}, {x = -13, y = -9}, {x = -12, y = -10}, {x = 13, y = -9}, {x = 13, y = -10}, {x = 12, y = -10}, {x = -14, y = -7}, {x = -14, y = -8}, {x = 14, y = -7}, {x = 14, y = -8}, {x = -15, y = -6}, {x = -15, y = -5}, {x = 15, y = -5}, {x = 15, y = -6}, {x = -15, y = -4}, {x = -16, y = -4}, {x = -16, y = -3}, {x = 15, y = -4}, {x = 16, y = -3}, {x = 16, y = -4}, {x = -16, y = -2}, {x = -16, y = -1}, {x = 16, y = -1}, {x = 16, y = -2}, {x = -16, y = 0}, {x = -16, y = 1}, {x = 16, y = 1}, {x = 16, y = 0}, {x = -16, y = 2}, {x = -16, y = 3}, {x = 16, y = 3}, {x = 16, y = 2}, {x = -16, y = 4}, {x = -15, y = 4}, {x = -15, y = 5}, {x = 15, y = 5}, {x = 15, y = 4}, {x = 16, y = 4}, {x = -15, y = 6}, {x = -14, y = 7}, {x = 14, y = 7}, {x = 15, y = 6}, {x = -13, y = 9}, {x = -14, y = 8}, {x = 13, y = 9}, {x = 14, y = 8}, {x = -13, y = 10}, {x = -12, y = 10}, {x = -12, y = 11}, {x = -11, y = 11}, {x = 11, y = 11}, {x = 12, y = 11}, {x = 12, y = 10}, {x = 13, y = 10}, {x = -11, y = 12}, {x = -10, y = 12}, {x = -10, y = 13}, {x = -9, y = 13}, {x = 9, y = 13}, {x = 10, y = 13}, {x = 10, y = 12}, {x = 11, y = 12}, {x = -8, y = 14}, {x = -7, y = 14}, {x = -6, y = 15}, {x = -5, y = 15}, {x = -4, y = 15}, {x = 4, y = 15}, {x = 5, y = 15}, {x = 7, y = 14}, {x = 6, y = 15}, {x = 8, y = 14}, {x = -4, y = 16}, {x = -3, y = 16}, {x = -2, y = 16}, {x = -1, y = 16}, {x = 0, y = 16}, {x = 1, y = 16}, {x = 2, y = 16}, {x = 3, y = 16}, {x = 4, y = 16} }, [18] = { {x = -3, y = -17}, {x = -4, y = -17}, {x = -1, y = -17}, {x = -2, y = -17}, {x = 1, y = -17}, {x = 0, y = -17}, {x = 3, y = -17}, {x = 2, y = -17}, {x = 4, y = -17}, {x = -9, y = -15}, {x = -8, y = -15}, {x = -7, y = -15}, {x = -7, y = -16}, {x = -6, y = -16}, {x = -5, y = -16}, {x = 5, y = -16}, {x = 7, y = -15}, {x = 7, y = -16}, {x = 6, y = -16}, {x = 9, y = -15}, {x = 8, y = -15}, {x = -11, y = -13}, {x = -10, y = -14}, {x = -9, y = -14}, {x = 9, y = -14}, {x = 11, y = -13}, {x = 10, y = -14}, {x = -13, y = -11}, {x = -12, y = -12}, {x = 13, y = -11}, {x = 12, y = -12}, {x = -15, y = -9}, {x = -14, y = -10}, {x = -14, y = -9}, {x = 14, y = -10}, {x = 14, y = -9}, {x = 15, y = -9}, {x = -15, y = -8}, {x = -15, y = -7}, {x = -16, y = -7}, {x = 15, y = -8}, {x = 15, y = -7}, {x = 16, y = -7}, {x = -16, y = -6}, {x = -16, y = -5}, {x = 16, y = -5}, {x = 16, y = -6}, {x = -17, y = -3}, {x = -17, y = -4}, {x = 17, y = -3}, {x = 17, y = -4}, {x = -17, y = -1}, {x = -17, y = -2}, {x = 17, y = -1}, {x = 17, y = -2}, {x = -17, y = 1}, {x = -17, y = 0}, {x = 17, y = 1}, {x = 17, y = 0}, {x = -17, y = 3}, {x = -17, y = 2}, {x = 17, y = 3}, {x = 17, y = 2}, {x = -17, y = 4}, {x = -16, y = 5}, {x = 16, y = 5}, {x = 17, y = 4}, {x = -15, y = 7}, {x = -16, y = 7}, {x = -16, y = 6}, {x = 15, y = 7}, {x = 16, y = 7}, {x = 16, y = 6}, {x = -15, y = 9}, {x = -15, y = 8}, {x = -14, y = 9}, {x = 14, y = 9}, {x = 15, y = 9}, {x = 15, y = 8}, {x = -14, y = 10}, {x = -13, y = 11}, {x = 13, y = 11}, {x = 14, y = 10}, {x = -12, y = 12}, {x = -11, y = 13}, {x = 11, y = 13}, {x = 12, y = 12}, {x = -10, y = 14}, {x = -9, y = 14}, {x = -9, y = 15}, {x = -8, y = 15}, {x = -7, y = 15}, {x = 7, y = 15}, {x = 9, y = 14}, {x = 9, y = 15}, {x = 8, y = 15}, {x = 10, y = 14}, {x = -7, y = 16}, {x = -6, y = 16}, {x = -5, y = 16}, {x = -4, y = 17}, {x = -3, y = 17}, {x = -2, y = 17}, {x = -1, y = 17}, {x = 0, y = 17}, {x = 1, y = 17}, {x = 2, y = 17}, {x = 3, y = 17}, {x = 4, y = 17}, {x = 5, y = 16}, {x = 6, y = 16}, {x = 7, y = 16} }, [19] = { {x = -7, y = -17}, {x = -6, y = -17}, {x = -5, y = -17}, {x = -3, y = -18}, {x = -4, y = -18}, {x = -1, y = -18}, {x = -2, y = -18}, {x = 1, y = -18}, {x = 0, y = -18}, {x = 3, y = -18}, {x = 2, y = -18}, {x = 5, y = -17}, {x = 4, y = -18}, {x = 7, y = -17}, {x = 6, y = -17}, {x = -10, y = -15}, {x = -9, y = -16}, {x = -8, y = -16}, {x = 9, y = -16}, {x = 8, y = -16}, {x = 10, y = -15}, {x = -13, y = -13}, {x = -11, y = -14}, {x = -12, y = -14}, {x = -12, y = -13}, {x = 11, y = -14}, {x = 13, y = -13}, {x = 12, y = -13}, {x = 12, y = -14}, {x = -13, y = -12}, {x = -14, y = -12}, {x = -14, y = -11}, {x = 13, y = -12}, {x = 14, y = -11}, {x = 14, y = -12}, {x = -15, y = -10}, {x = -16, y = -9}, {x = 15, y = -10}, {x = 16, y = -9}, {x = -17, y = -7}, {x = -16, y = -8}, {x = 16, y = -8}, {x = 17, y = -7}, {x = -17, y = -5}, {x = -17, y = -6}, {x = 17, y = -6}, {x = 17, y = -5}, {x = -18, y = -3}, {x = -18, y = -4}, {x = 18, y = -4}, {x = 18, y = -3}, {x = -18, y = -1}, {x = -18, y = -2}, {x = 18, y = -2}, {x = 18, y = -1}, {x = -18, y = 1}, {x = -18, y = 0}, {x = 18, y = 0}, {x = 18, y = 1}, {x = -18, y = 3}, {x = -18, y = 2}, {x = 18, y = 2}, {x = 18, y = 3}, {x = -17, y = 5}, {x = -18, y = 4}, {x = 17, y = 5}, {x = 18, y = 4}, {x = -17, y = 7}, {x = -17, y = 6}, {x = 17, y = 7}, {x = 17, y = 6}, {x = -16, y = 9}, {x = -16, y = 8}, {x = 16, y = 9}, {x = 16, y = 8}, {x = -15, y = 10}, {x = -14, y = 11}, {x = 14, y = 11}, {x = 15, y = 10}, {x = -14, y = 12}, {x = -13, y = 12}, {x = -13, y = 13}, {x = -12, y = 13}, {x = 12, y = 13}, {x = 13, y = 13}, {x = 13, y = 12}, {x = 14, y = 12}, {x = -12, y = 14}, {x = -11, y = 14}, {x = -10, y = 15}, {x = 10, y = 15}, {x = 11, y = 14}, {x = 12, y = 14}, {x = -9, y = 16}, {x = -7, y = 17}, {x = -8, y = 16}, {x = -5, y = 17}, {x = -6, y = 17}, {x = 5, y = 17}, {x = 7, y = 17}, {x = 6, y = 17}, {x = 8, y = 16}, {x = 9, y = 16}, {x = -3, y = 18}, {x = -4, y = 18}, {x = -1, y = 18}, {x = -2, y = 18}, {x = 1, y = 18}, {x = 0, y = 18}, {x = 3, y = 18}, {x = 2, y = 18}, {x = 4, y = 18} }, [20] = { {x = -3, y = -19}, {x = -4, y = -19}, {x = -1, y = -19}, {x = -2, y = -19}, {x = 1, y = -19}, {x = 0, y = -19}, {x = 3, y = -19}, {x = 2, y = -19}, {x = 4, y = -19}, {x = -9, y = -17}, {x = -7, y = -18}, {x = -8, y = -17}, {x = -5, y = -18}, {x = -6, y = -18}, {x = 5, y = -18}, {x = 7, y = -18}, {x = 6, y = -18}, {x = 9, y = -17}, {x = 8, y = -17}, {x = -11, y = -16}, {x = -11, y = -15}, {x = -12, y = -15}, {x = -10, y = -16}, {x = 11, y = -15}, {x = 11, y = -16}, {x = 10, y = -16}, {x = 12, y = -15}, {x = -13, y = -14}, {x = -14, y = -13}, {x = 13, y = -14}, {x = 14, y = -13}, {x = -15, y = -12}, {x = -15, y = -11}, {x = -16, y = -11}, {x = 15, y = -11}, {x = 15, y = -12}, {x = 16, y = -11}, {x = -17, y = -9}, {x = -16, y = -10}, {x = 16, y = -10}, {x = 17, y = -9}, {x = -17, y = -8}, {x = -18, y = -7}, {x = 17, y = -8}, {x = 18, y = -7}, {x = -18, y = -6}, {x = -18, y = -5}, {x = 18, y = -5}, {x = 18, y = -6}, {x = -19, y = -4}, {x = -19, y = -3}, {x = 19, y = -3}, {x = 19, y = -4}, {x = -19, y = -2}, {x = -19, y = -1}, {x = 19, y = -1}, {x = 19, y = -2}, {x = -19, y = 0}, {x = -19, y = 1}, {x = 19, y = 1}, {x = 19, y = 0}, {x = -19, y = 2}, {x = -19, y = 3}, {x = 19, y = 3}, {x = 19, y = 2}, {x = -19, y = 4}, {x = -18, y = 5}, {x = 18, y = 5}, {x = 19, y = 4}, {x = -18, y = 7}, {x = -18, y = 6}, {x = 18, y = 7}, {x = 18, y = 6}, {x = -17, y = 9}, {x = -17, y = 8}, {x = 17, y = 9}, {x = 17, y = 8}, {x = -16, y = 10}, {x = -16, y = 11}, {x = -15, y = 11}, {x = 15, y = 11}, {x = 16, y = 11}, {x = 16, y = 10}, {x = -15, y = 12}, {x = -14, y = 13}, {x = 14, y = 13}, {x = 15, y = 12}, {x = -13, y = 14}, {x = -12, y = 15}, {x = -11, y = 15}, {x = 11, y = 15}, {x = 12, y = 15}, {x = 13, y = 14}, {x = -11, y = 16}, {x = -10, y = 16}, {x = -9, y = 17}, {x = -8, y = 17}, {x = 9, y = 17}, {x = 8, y = 17}, {x = 10, y = 16}, {x = 11, y = 16}, {x = -7, y = 18}, {x = -5, y = 18}, {x = -6, y = 18}, {x = -4, y = 19}, {x = -3, y = 19}, {x = -2, y = 19}, {x = -1, y = 19}, {x = 0, y = 19}, {x = 1, y = 19}, {x = 2, y = 19}, {x = 3, y = 19}, {x = 4, y = 19}, {x = 5, y = 18}, {x = 7, y = 18}, {x = 6, y = 18} }, [21] = { {x = -7, y = -19}, {x = -5, y = -19}, {x = -6, y = -19}, {x = -3, y = -20}, {x = -4, y = -20}, {x = -1, y = -20}, {x = -2, y = -20}, {x = 1, y = -20}, {x = 0, y = -20}, {x = 3, y = -20}, {x = 2, y = -20}, {x = 5, y = -19}, {x = 4, y = -20}, {x = 7, y = -19}, {x = 6, y = -19}, {x = -11, y = -17}, {x = -10, y = -17}, {x = -9, y = -18}, {x = -8, y = -18}, {x = 9, y = -18}, {x = 8, y = -18}, {x = 10, y = -17}, {x = 11, y = -17}, {x = -13, y = -15}, {x = -14, y = -15}, {x = -12, y = -16}, {x = 13, y = -15}, {x = 12, y = -16}, {x = 14, y = -15}, {x = -15, y = -14}, {x = -15, y = -13}, {x = -14, y = -14}, {x = 15, y = -13}, {x = 15, y = -14}, {x = 14, y = -14}, {x = -17, y = -11}, {x = -16, y = -12}, {x = 16, y = -12}, {x = 17, y = -11}, {x = -17, y = -10}, {x = -18, y = -9}, {x = 17, y = -10}, {x = 18, y = -9}, {x = -19, y = -7}, {x = -18, y = -8}, {x = 18, y = -8}, {x = 19, y = -7}, {x = -19, y = -6}, {x = -19, y = -5}, {x = 19, y = -6}, {x = 19, y = -5}, {x = -20, y = -4}, {x = -20, y = -3}, {x = 20, y = -3}, {x = 20, y = -4}, {x = -20, y = -2}, {x = -20, y = -1}, {x = 20, y = -1}, {x = 20, y = -2}, {x = -20, y = 0}, {x = -20, y = 1}, {x = 20, y = 1}, {x = 20, y = 0}, {x = -20, y = 2}, {x = -20, y = 3}, {x = 20, y = 3}, {x = 20, y = 2}, {x = -20, y = 4}, {x = -19, y = 5}, {x = 19, y = 5}, {x = 20, y = 4}, {x = -19, y = 7}, {x = -19, y = 6}, {x = 19, y = 7}, {x = 19, y = 6}, {x = -18, y = 9}, {x = -18, y = 8}, {x = 18, y = 9}, {x = 18, y = 8}, {x = -17, y = 11}, {x = -17, y = 10}, {x = 17, y = 11}, {x = 17, y = 10}, {x = -16, y = 12}, {x = -15, y = 13}, {x = 15, y = 13}, {x = 16, y = 12}, {x = -15, y = 14}, {x = -14, y = 14}, {x = -14, y = 15}, {x = -13, y = 15}, {x = 13, y = 15}, {x = 14, y = 15}, {x = 14, y = 14}, {x = 15, y = 14}, {x = -12, y = 16}, {x = -11, y = 17}, {x = -10, y = 17}, {x = 11, y = 17}, {x = 10, y = 17}, {x = 12, y = 16}, {x = -9, y = 18}, {x = -8, y = 18}, {x = -7, y = 19}, {x = -5, y = 19}, {x = -6, y = 19}, {x = 5, y = 19}, {x = 6, y = 19}, {x = 7, y = 19}, {x = 9, y = 18}, {x = 8, y = 18}, {x = -4, y = 20}, {x = -3, y = 20}, {x = -2, y = 20}, {x = -1, y = 20}, {x = 0, y = 20}, {x = 1, y = 20}, {x = 2, y = 20}, {x = 3, y = 20}, {x = 4, y = 20} }, [22] = { {x = -3, y = -21}, {x = -4, y = -21}, {x = -1, y = -21}, {x = -2, y = -21}, {x = 1, y = -21}, {x = 0, y = -21}, {x = 3, y = -21}, {x = 2, y = -21}, {x = 4, y = -21}, {x = -10, y = -19}, {x = -9, y = -19}, {x = -8, y = -19}, {x = -7, y = -20}, {x = -5, y = -20}, {x = -6, y = -20}, {x = 5, y = -20}, {x = 7, y = -20}, {x = 6, y = -20}, {x = 9, y = -19}, {x = 8, y = -19}, {x = 10, y = -19}, {x = -13, y = -17}, {x = -12, y = -17}, {x = -11, y = -18}, {x = -10, y = -18}, {x = 11, y = -18}, {x = 10, y = -18}, {x = 13, y = -17}, {x = 12, y = -17}, {x = -15, y = -15}, {x = -13, y = -16}, {x = -14, y = -16}, {x = 13, y = -16}, {x = 15, y = -15}, {x = 14, y = -16}, {x = -17, y = -13}, {x = -16, y = -14}, {x = -16, y = -13}, {x = 17, y = -13}, {x = 16, y = -13}, {x = 16, y = -14}, {x = -17, y = -12}, {x = -18, y = -11}, {x = 17, y = -12}, {x = 18, y = -11}, {x = -19, y = -10}, {x = -19, y = -9}, {x = -18, y = -10}, {x = 18, y = -10}, {x = 19, y = -10}, {x = 19, y = -9}, {x = -19, y = -8}, {x = -20, y = -7}, {x = 19, y = -8}, {x = 20, y = -7}, {x = -20, y = -6}, {x = -20, y = -5}, {x = 20, y = -6}, {x = 20, y = -5}, {x = -21, y = -4}, {x = -21, y = -3}, {x = 21, y = -3}, {x = 21, y = -4}, {x = -21, y = -2}, {x = -21, y = -1}, {x = 21, y = -1}, {x = 21, y = -2}, {x = -21, y = 0}, {x = -21, y = 1}, {x = 21, y = 1}, {x = 21, y = 0}, {x = -21, y = 2}, {x = -21, y = 3}, {x = 21, y = 3}, {x = 21, y = 2}, {x = -21, y = 4}, {x = -20, y = 5}, {x = 20, y = 5}, {x = 21, y = 4}, {x = -20, y = 7}, {x = -20, y = 6}, {x = 20, y = 7}, {x = 20, y = 6}, {x = -19, y = 9}, {x = -19, y = 8}, {x = 19, y = 9}, {x = 19, y = 8}, {x = -19, y = 10}, {x = -18, y = 11}, {x = -18, y = 10}, {x = 18, y = 11}, {x = 18, y = 10}, {x = 19, y = 10}, {x = -17, y = 13}, {x = -17, y = 12}, {x = -16, y = 13}, {x = 16, y = 13}, {x = 17, y = 13}, {x = 17, y = 12}, {x = -16, y = 14}, {x = -15, y = 15}, {x = 15, y = 15}, {x = 16, y = 14}, {x = -14, y = 16}, {x = -13, y = 16}, {x = -13, y = 17}, {x = -12, y = 17}, {x = 13, y = 16}, {x = 13, y = 17}, {x = 12, y = 17}, {x = 14, y = 16}, {x = -11, y = 18}, {x = -10, y = 18}, {x = -10, y = 19}, {x = -9, y = 19}, {x = -8, y = 19}, {x = 9, y = 19}, {x = 8, y = 19}, {x = 11, y = 18}, {x = 10, y = 18}, {x = 10, y = 19}, {x = -7, y = 20}, {x = -6, y = 20}, {x = -5, y = 20}, {x = -3, y = 21}, {x = -4, y = 21}, {x = -1, y = 21}, {x = -2, y = 21}, {x = 1, y = 21}, {x = 0, y = 21}, {x = 3, y = 21}, {x = 2, y = 21}, {x = 4, y = 21}, {x = 5, y = 20}, {x = 7, y = 20}, {x = 6, y = 20} }, [23] = { {x = -8, y = -21}, {x = -7, y = -21}, {x = -6, y = -21}, {x = -5, y = -21}, {x = -3, y = -22}, {x = -4, y = -22}, {x = -1, y = -22}, {x = -2, y = -22}, {x = 1, y = -22}, {x = 0, y = -22}, {x = 3, y = -22}, {x = 2, y = -22}, {x = 5, y = -21}, {x = 4, y = -22}, {x = 7, y = -21}, {x = 6, y = -21}, {x = 8, y = -21}, {x = -12, y = -19}, {x = -11, y = -19}, {x = -10, y = -20}, {x = -9, y = -20}, {x = -8, y = -20}, {x = 9, y = -20}, {x = 8, y = -20}, {x = 11, y = -19}, {x = 10, y = -20}, {x = 12, y = -19}, {x = -14, y = -17}, {x = -13, y = -18}, {x = -12, y = -18}, {x = 13, y = -18}, {x = 12, y = -18}, {x = 14, y = -17}, {x = -15, y = -16}, {x = -16, y = -15}, {x = 15, y = -16}, {x = 16, y = -15}, {x = -17, y = -14}, {x = -18, y = -13}, {x = 17, y = -14}, {x = 18, y = -13}, {x = -19, y = -12}, {x = -19, y = -11}, {x = -18, y = -12}, {x = 18, y = -12}, {x = 19, y = -12}, {x = 19, y = -11}, {x = -20, y = -10}, {x = -20, y = -9}, {x = 20, y = -10}, {x = 20, y = -9}, {x = -21, y = -8}, {x = -21, y = -7}, {x = -20, y = -8}, {x = 20, y = -8}, {x = 21, y = -8}, {x = 21, y = -7}, {x = -21, y = -6}, {x = -21, y = -5}, {x = 21, y = -6}, {x = 21, y = -5}, {x = -22, y = -4}, {x = -22, y = -3}, {x = 22, y = -3}, {x = 22, y = -4}, {x = -22, y = -2}, {x = -22, y = -1}, {x = 22, y = -1}, {x = 22, y = -2}, {x = -22, y = 0}, {x = -22, y = 1}, {x = 22, y = 1}, {x = 22, y = 0}, {x = -22, y = 2}, {x = -22, y = 3}, {x = 22, y = 3}, {x = 22, y = 2}, {x = -22, y = 4}, {x = -21, y = 5}, {x = 21, y = 5}, {x = 22, y = 4}, {x = -21, y = 7}, {x = -21, y = 6}, {x = 21, y = 7}, {x = 21, y = 6}, {x = -21, y = 8}, {x = -20, y = 9}, {x = -20, y = 8}, {x = 20, y = 8}, {x = 20, y = 9}, {x = 21, y = 8}, {x = -19, y = 11}, {x = -20, y = 10}, {x = 19, y = 11}, {x = 20, y = 10}, {x = -19, y = 12}, {x = -18, y = 13}, {x = -18, y = 12}, {x = 18, y = 13}, {x = 18, y = 12}, {x = 19, y = 12}, {x = -17, y = 14}, {x = -16, y = 15}, {x = 16, y = 15}, {x = 17, y = 14}, {x = -15, y = 16}, {x = -14, y = 17}, {x = 14, y = 17}, {x = 15, y = 16}, {x = -13, y = 18}, {x = -12, y = 18}, {x = -12, y = 19}, {x = -11, y = 19}, {x = 11, y = 19}, {x = 13, y = 18}, {x = 12, y = 18}, {x = 12, y = 19}, {x = -10, y = 20}, {x = -9, y = 20}, {x = -8, y = 20}, {x = -8, y = 21}, {x = -7, y = 21}, {x = -6, y = 21}, {x = -5, y = 21}, {x = 5, y = 21}, {x = 7, y = 21}, {x = 6, y = 21}, {x = 8, y = 20}, {x = 9, y = 20}, {x = 8, y = 21}, {x = 10, y = 20}, {x = -4, y = 22}, {x = -3, y = 22}, {x = -2, y = 22}, {x = -1, y = 22}, {x = 0, y = 22}, {x = 1, y = 22}, {x = 2, y = 22}, {x = 3, y = 22}, {x = 4, y = 22} } } local function process_explosion_tile(pos, explosion_index, current_radius) local this = ScenarioTable.get_table() local surface = game.surfaces[this.explosion_schedule[explosion_index].surface] local target_entities = surface.find_entities_filtered({area = {{pos.x - 0.5, pos.y - 0.5}, {pos.x + 0.499, pos.y + 0.499}}}) local explosion_animation = 'explosion' local tile = surface.get_tile(pos) if tile.name == 'out-of-map' then if this.explosion_schedule[explosion_index].damage_remaining >= out_of_map_tile_health then explosion_animation = 'big-explosion' surface.set_tiles({{name = 'dirt-5', position = pos}}, true) end this.explosion_schedule[explosion_index].damage_remaining = this.explosion_schedule[explosion_index].damage_remaining - out_of_map_tile_health else local decay_explosion = true for _, entity in pairs(target_entities) do if entity.health then decay_explosion = false end end if decay_explosion then this.explosion_schedule[explosion_index].damage_remaining = this.explosion_schedule[explosion_index].damage_remaining - empty_tile_damage_decay end end for _, entity in pairs(target_entities) do if entity.valid then if entity.health then if entity.health < this.explosion_schedule[explosion_index].damage_remaining then explosion_animation = 'big-explosion' if entity.health > 500 then explosion_animation = 'big-artillery-explosion' end this.explosion_schedule[explosion_index].damage_remaining = this.explosion_schedule[explosion_index].damage_remaining - entity.health if entity.name ~= 'character' then entity.damage(2097152, 'player', 'explosion') else entity.die('player') end else entity.damage(this.explosion_schedule[explosion_index].damage_remaining, 'player', 'explosion') if entity.valid then this.explosion_schedule[explosion_index].damage_remaining = this.explosion_schedule[explosion_index].damage_remaining - entity.health end end end end end if this.explosion_schedule[explosion_index].damage_remaining > 5000 and current_radius < 2 then if math_random(1, 2) == 1 then explosion_animation = 'big-explosion' else explosion_animation = 'big-artillery-explosion' end end surface.create_entity({name = explosion_animation, position = pos}) Pollution.explosion(pos, surface, explosion_animation) if this.explosion_schedule[explosion_index].damage_remaining <= 0 then return false end return true end local function volatility(inventory) local result = 0 for item, v in pairs(explosive_items) do local c = inventory.get_item_count(item) result = result + (c * v) end return math_min(max_volatility, result) end local function create_explosion_schedule(entity) local this = ScenarioTable.get_table() local inventory = defines.inventory.chest if entity.type == 'car' then inventory = defines.inventory.car_trunk end local i = entity.get_inventory(inventory) local explosives_amount = volatility(i) if explosives_amount < 1 then return end local center_position = entity.position if not this.explosion_schedule then this.explosion_schedule = {} end this.explosion_schedule[#this.explosion_schedule + 1] = {} this.explosion_schedule[#this.explosion_schedule].surface = entity.surface.name this.explosion_schedule[#this.explosion_schedule].damage_remaining = damage_per_explosive * explosives_amount for current_radius = 1, 23, 1 do this.explosion_schedule[#this.explosion_schedule][current_radius] = {} this.explosion_schedule[#this.explosion_schedule][current_radius].trigger_tick = game.tick + (current_radius * 8) local circle_coords = circle_coordinates[current_radius] for index, tile_position in pairs(circle_coords) do local pos = {x = center_position.x + tile_position.x, y = center_position.y + tile_position.y} this.explosion_schedule[#this.explosion_schedule][current_radius][index] = {x = pos.x, y = pos.y} end end entity.die('player') end local function on_entity_damaged(event) local entity = event.entity if not entity.valid then return end if not entity.health then return end if entity.health > entity.prototype.max_health * 0.75 then return end if entity.type == 'container' or entity.type == 'logistic-container' then if math_random(1, 3) == 1 or entity.health <= 0 then create_explosion_schedule(event.entity) return end end if entity.type == 'cargo-wagon' or entity.type == 'car' then if entity.health <= 0 then create_explosion_schedule(entity) return end if entity.health < 150 and math_random(1, 3) == 1 then create_explosion_schedule(entity) return end end end local function on_tick(event) local this = ScenarioTable.get_table() local tick = event.tick if this.explosion_schedule then local explosion_schedule_is_alive = false for explosion_index = 1, #this.explosion_schedule, 1 do if #this.explosion_schedule[explosion_index] > 0 then explosion_schedule_is_alive = true for radius = 1, #this.explosion_schedule[explosion_index], 1 do if this.explosion_schedule[explosion_index][radius].trigger_tick == tick then for tile_index = 1, #this.explosion_schedule[explosion_index][radius], 1 do local continue_explosion = process_explosion_tile(this.explosion_schedule[explosion_index][radius][tile_index], explosion_index, radius) if not continue_explosion then this.explosion_schedule[explosion_index] = {} break end end if radius == #this.explosion_schedule[explosion_index] then this.explosion_schedule[explosion_index] = {} end break end end end end if not explosion_schedule_is_alive then this.explosion_schedule = nil end end end Event.add(defines.events.on_entity_damaged, on_entity_damaged) Event.add(defines.events.on_tick, on_tick)