1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/modules/scrap_towny_ffa/mining.lua
klugemonkey 29b3a89b33 Fixed issue with invalid force for limited radar
Fixed issue with determining if market is placeable
Allow entities to be placed within the initial town square
Fixed info to remove reference to small plane
Fixed issue with no messages when can't place item due to building restrictions
Fixed issue with inability to place new towns near enemy spawners or turrets
Fixed issue with market listings breaking when special features disabled due to deprecation of computer item
Fixed issue with mining sound missing for big-crash-site-# entities (in mod)
Default to showing entity info for players (alt-info on chests)
2021-02-07 23:01:20 -08:00

98 lines
2.8 KiB
Lua

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" })
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)