1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-24 03:47:58 +02:00

98 lines
2.8 KiB
Lua
Raw Normal View History

2021-02-06 12:42:10 -08:00
local Table = require 'modules.scrap_towny_ffa.table'
local crash_site = {
-- simple entity with owner
"crash-site-spaceship-wreck-small-1",
"crash-site-spaceship-wreck-small-2",
"crash-site-spaceship-wreck-small-3",
"crash-site-spaceship-wreck-small-4",
"crash-site-spaceship-wreck-small-5",
"crash-site-spaceship-wreck-small-6",
-- containers
"big-ship-wreck-1",
"big-ship-wreck-2",
"big-ship-wreck-3",
"crash-site-chest-1",
"crash-site-chest-2",
"crash-site-spaceship-wreck-medium-1",
"crash-site-spaceship-wreck-medium-2",
"crash-site-spaceship-wreck-medium-3",
"crash-site-spaceship-wreck-big-1",
"crash-site-spaceship-wreck-big-2",
"crash-site-spaceship"
}
local function is_crash_site(entity)
if not entity.valid then return false end
local f = false
for i = 1, #crash_site, 1 do
if entity.name == crash_site[i] then f = true end
end
return f
end
local function mining_sound(player)
if game.tick % 15 ~= 0 then return end
local target = player.selected
if target == nil or not target.valid then return end
local surface = target.surface
local position = target.position
local path = "entity-mining/" .. target.name
surface.play_sound({path = path, position = position, volume_modifier = 1, override_sound_type = "game-effect" })
2021-02-06 12:42:10 -08:00
end
local function on_tick()
local ffatable = Table.get_table()
for index, player in pairs(game.players) do
if player.character ~= nil then
local mining = player.mining_state.mining
if ffatable.mining[index] ~= mining then
ffatable.mining[index] = mining
-- state change
if mining == true then
--log(player.name .. " started mining")
local target = player.selected
if target ~= nil and target.valid then
--log("target name = " .. target.prototype.name)
--log("position = " .. serpent.block(target.position))
--log("mineable_properties = " .. serpent.block(target.prototype.mineable_properties))
if is_crash_site(target) then
-- mining crash site
mining_sound(player)
ffatable.mining_target[index] = target
end
end
else
--log(player.name .. " stopped mining")
local target = ffatable.mining_target[index]
if target ~= nil then
ffatable.mining_target[index] = nil
end
end
else
if mining == true then
local target = player.selected
if target ~= nil and target.valid then
--local progress = player.character_mining_progress
--log("progress = " .. progress)
if is_crash_site(target) then
-- mining crash site
mining_sound(player)
end
end
end
end
end
end
end
local on_init = function ()
local ffatable = Table.get_table()
ffatable.mining = {}
ffatable.mining_entity = {}
ffatable.mining_target = {}
end
local Event = require 'utils.event'
Event.on_init(on_init)
Event.add(defines.events.on_tick, on_tick)