1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-06 00:23:49 +02:00
ComfyFactorio/modules/biters_yield_ore.lua
2020-04-04 10:21:39 +02:00

68 lines
2.1 KiB
Lua

local table_insert = table.insert
local table_remove = table.remove
local math_random = math.random
local drop_raffle = {}
for _ = 1, 64, 1 do table_insert(drop_raffle, "iron-ore") end
for _ = 1, 40, 1 do table_insert(drop_raffle, "copper-ore") end
for _ = 1, 32, 1 do table_insert(drop_raffle, "stone") end
for _ = 1, 32, 1 do table_insert(drop_raffle, "coal") end
for _ = 1, 6, 1 do table_insert(drop_raffle, "wood") end
for _ = 1, 2, 1 do table_insert(drop_raffle, "landfill") end
for _ = 1, 3, 1 do table_insert(drop_raffle, "uranium-ore") end
local size_of_drop_raffle = #drop_raffle
local drop_vectors = {}
for x = -2, 2, 0.1 do
for y = -2, 2, 0.1 do
table_insert(drop_vectors, {x, y})
end
end
local size_of_drop_vectors = #drop_vectors
local drop_values = {
["small-spitter"] = 8,
["small-biter"] = 8,
["medium-spitter"] = 16,
["medium-biter"] = 16,
["big-spitter"] = 32,
["big-biter"] = 32,
["behemoth-spitter"] = 96,
["behemoth-biter"] = 96,
["small-worm-turret"] = 128,
["medium-worm-turret"] = 160,
["big-worm-turret"] = 196,
["behemoth-worm-turret"] = 256,
["biter-spawner"] = 512,
["spitter-spawner"] = 512
}
local function on_tick()
for key, entry in pairs(global.biters_drop_ore) do
local surface = game.surfaces[entry[3]]
for _ = 1, 3, 1 do
local vector = drop_vectors[math_random(1, size_of_drop_vectors)]
surface.spill_item_stack({entry[1][1] + vector[1], entry[1][2] + vector[2]}, {name = drop_raffle[math_random(1, size_of_drop_raffle)], count = 1}, true)
global.biters_drop_ore[key][2] = global.biters_drop_ore[key][2] - 1
if global.biters_drop_ore[key][2] <= 0 then
table_remove(global.biters_drop_ore, key)
break
end
end
end
end
local function on_entity_died(event)
local entity = event.entity
if not drop_values[entity.name] then return end
table_insert(global.biters_drop_ore, {{entity.position.x, entity.position.y}, drop_values[entity.name], entity.surface.index})
end
local function on_init()
global.biters_drop_ore = {}
end
local Event = require 'utils.event'
Event.on_init(on_init)
Event.add(defines.events.on_entity_died, on_entity_died)
Event.add(defines.events.on_tick, on_tick)