1.1.0
This commit is contained in:
14
README.md
14
README.md
@@ -1,7 +1,15 @@
|
|||||||
# no-stone-wall-alarm Factorio Mod
|
# no-stone-wall-alarm Factorio Mod
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
Disables the alarm sound and notifications for destroyed stone walls and construction robots.
|
Disables the alarm sound and notifications for destroyed entities (configurable).
|
||||||
|
Default entities:
|
||||||
|
- Stone walls
|
||||||
|
- Construction robots
|
||||||
|
- Land mines
|
||||||
|
|
||||||
|
Add more entities via the mod settings. It's a comma-separated list of entity names.
|
||||||
|
|
||||||
|
You can lookup those names here: https://wiki.factorio.com/Data.raw#item
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
Install via https://mods.factorio.com/mod/no-stone-wall-alarm or directly in-game.
|
Install via https://mods.factorio.com/mod/no-stone-wall-alarm or directly in-game.
|
||||||
@@ -10,6 +18,6 @@ Install via https://mods.factorio.com/mod/no-stone-wall-alarm or directly in-gam
|
|||||||
GPLv3 only.
|
GPLv3 only.
|
||||||
|
|
||||||
## Quirks
|
## Quirks
|
||||||
The ghosts for Stone Walls will look wrong (not like the wall was destroyed, but like you manually placed ghosts).
|
The ghosts for destroyed entities will look wrong (not like they were destroyed, but like you manually placed ghosts).
|
||||||
|
|
||||||
Note: This mod suppresses the `on_entity_died` events for stone walls and construction robots. If you have other mods that rely on these events for those items, then you shouldn't use this mod.
|
Note: This mod suppresses the `on_entity_died` events for your configured entities. If you have other mods that rely on these events for those items, then you shouldn't use this mod.
|
||||||
|
|||||||
45
control.lua
45
control.lua
@@ -1,8 +1,45 @@
|
|||||||
|
local function split_string_to_map(str, separator)
|
||||||
|
local parts = {}
|
||||||
|
for part in string.gmatch(str, "([^" .. separator .. "]+)") do
|
||||||
|
-- Trim leading/trailing whitespace:
|
||||||
|
part = part:gsub("^%s*(.-)%s*$", "%1")
|
||||||
|
parts[part] = true
|
||||||
|
end
|
||||||
|
return parts
|
||||||
|
end
|
||||||
|
|
||||||
|
local no_alarm_entities = {}
|
||||||
|
local no_ghost_possible_entities = {
|
||||||
|
["car"] = true,
|
||||||
|
["tank"] = true,
|
||||||
|
["construction-robot"] = true,
|
||||||
|
["logistic-robot"] = true,
|
||||||
|
["player"] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
local function build_no_alarm_table(setting_value)
|
||||||
|
no_alarm_entities = split_string_to_map(setting_value, ",")
|
||||||
|
end
|
||||||
|
|
||||||
|
script.on_init(function()
|
||||||
|
build_no_alarm_table(settings.global["no-alarm-entities"].value)
|
||||||
|
end)
|
||||||
|
|
||||||
|
script.on_load(function()
|
||||||
|
build_no_alarm_table(settings.global["no-alarm-entities"].value)
|
||||||
|
end)
|
||||||
|
|
||||||
|
script.on_event(defines.events.on_runtime_mod_setting_changed, function(event)
|
||||||
|
if event.setting == "no-alarm-entities" then
|
||||||
|
build_no_alarm_table(settings.global["no-alarm-entities"].value)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
script.on_event(defines.events.on_entity_damaged, function(event)
|
script.on_event(defines.events.on_entity_damaged, function(event)
|
||||||
local entity = event.entity
|
local entity = event.entity
|
||||||
|
|
||||||
-- Check if the damaged entity is a stone wall or a construction robot
|
-- Check if the damaged entity is in our list of no-alarm entities
|
||||||
if entity and entity.valid and (entity.name == "stone-wall" or entity.name == "construction-robot") then
|
if entity and entity.valid and no_alarm_entities[entity.name] then
|
||||||
-- Check if the damage would destroy the entity
|
-- Check if the damage would destroy the entity
|
||||||
if event.final_health <= 0 then
|
if event.final_health <= 0 then
|
||||||
local surface = entity.surface
|
local surface = entity.surface
|
||||||
@@ -17,8 +54,8 @@ script.on_event(defines.events.on_entity_damaged, function(event)
|
|||||||
-- Check if the force has researched ghost placement
|
-- Check if the force has researched ghost placement
|
||||||
if force.technologies["construction-robotics"] and force.technologies["construction-robotics"].researched then
|
if force.technologies["construction-robotics"] and force.technologies["construction-robotics"].researched then
|
||||||
|
|
||||||
-- Don't create a ghost for construction robots (not possible)
|
-- Don't create a ghost for entities that cannot have a ghost
|
||||||
if name == "construction-robot" then
|
if no_ghost_possible_entities[name] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "no-stone-wall-alarm",
|
"name": "no-stone-wall-alarm",
|
||||||
"version": "1.0.1",
|
"version": "1.1.0",
|
||||||
"title": "No Stone Wall and Construction Robot Alarm",
|
"title": "No Stone Wall, Construction Robot, Land Mine Alarm",
|
||||||
"author": "ddidderr",
|
"author": "ddidderr",
|
||||||
"description": "Disables the alarm sound and notifications for destroyed stone walls and construction robots.",
|
"description": "Disables the alarm sound and notifications for destroyed items (configurable).",
|
||||||
"factorio_version": "2.0"
|
"factorio_version": "2.0"
|
||||||
}
|
}
|
||||||
|
|||||||
5
locale/en/locale.cfg
Normal file
5
locale/en/locale.cfg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[mod-setting-name]
|
||||||
|
no-alarm-entities=Entities that don't trigger an alarm on destruction
|
||||||
|
|
||||||
|
[mod-setting-description]
|
||||||
|
no-alarm-entities=Comma-separated list of entity names that won't trigger an alarm when destroyed
|
||||||
10
settings.lua
Normal file
10
settings.lua
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
data:extend({
|
||||||
|
{
|
||||||
|
type = "string-setting",
|
||||||
|
name = "no-alarm-entities",
|
||||||
|
setting_type = "runtime-global",
|
||||||
|
default_value = "stone-wall,construction-robot,land-mine",
|
||||||
|
allow_blank = true,
|
||||||
|
order = "a"
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user