mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-10 00:43:27 +02:00
29b3a89b33
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)
98 lines
2.8 KiB
Lua
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) |