mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-06 00:23:49 +02:00
85 lines
2.3 KiB
Lua
85 lines
2.3 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)
|