Balance noise and add noise cancelling tower
This commit is contained in:
parent
157ce99e08
commit
da285e7ef1
13 changed files with 280 additions and 27 deletions
|
@ -80,3 +80,7 @@ Unsorted
|
|||
[Krastorio 2 Assets](https://mods.factorio.com/mod/Krastorio2Assets)
|
||||
|
||||
- Basic radar
|
||||
|
||||
[Icons8](https://icons8.com)
|
||||
|
||||
- [Mute icon](https://icons8.com/icon/9414/no-audio)
|
BIN
lignumis/graphics/icons/active-noise-cancelling.png
Normal file
BIN
lignumis/graphics/icons/active-noise-cancelling.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
BIN
lignumis/graphics/technology/active-noise-cancelling.png
Normal file
BIN
lignumis/graphics/technology/active-noise-cancelling.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.3 KiB |
|
@ -32,6 +32,7 @@ wood-transport-belt=Wood transport belt
|
|||
wood-underground-belt=Wood underground belt
|
||||
wood-splitter=Wood splitter
|
||||
basic-radar=Basic radar
|
||||
active-noise-cancelling-tower=Active noise cancelling tower
|
||||
|
||||
[equipment-name]
|
||||
basic-portable-generator-equipment-gold=Basic portable generator equipment (gold)
|
||||
|
@ -78,6 +79,7 @@ plastic-from-dead-cupriavidus-necator=Bioplastic
|
|||
low-density-structure-gold=Low density structure
|
||||
rocket-fuel-from-wood-pulp-and-peat=Bio-rocket-fuel
|
||||
nutrients-from-wood-pulp=Nutrients from wood pulp
|
||||
active-noise-cancelling=Active noise cancelling
|
||||
|
||||
[recipe-description]
|
||||
moist-stromatolite-remnant-desiccation-without-steam=Used for balancing the production of steam.
|
||||
|
@ -105,9 +107,11 @@ automation=Electric automation
|
|||
tree-seeding=Basic agriculture
|
||||
basic-repair-pack=Basic repair pack
|
||||
basic-radar=Basic radar
|
||||
active-noise-cancelling=Active noise cancelling
|
||||
|
||||
[technology-description]
|
||||
tree-seeding=[entity=burner-agricultural-tower] allows planting seeds into seedable soil. Planted seeds grow into trees that can be harvested.\n[entity=tree-plant] can grow on grass and dirt. [entity=gold-stromatolite] can grow on [tile=natural-gold-soil].
|
||||
active-noise-cancelling=Helps handling noise.
|
||||
|
||||
[modifier-description]
|
||||
basic-gun-turret-attack-bonus=Basic gun turret damage: +__1__
|
||||
|
@ -127,5 +131,11 @@ lignumis-inserter-progression=Enable progressive inserter recipes
|
|||
lignumis-belt-progression=Yellow belts will require wood belts to craft.
|
||||
lignumis-inserter-progression=Yellow electric inserter will require burner inserter to craft.
|
||||
|
||||
[surface-property-name]
|
||||
pollution-type=Pollution type
|
||||
|
||||
[surface-property-unit]
|
||||
pollution-type=__plural_for_parameter__1__{1=Pollution|2=Spores|3=Noise|rest=-}__
|
||||
|
||||
[lignumis]
|
||||
start-new-game=Lignumis is meant to be played in a fresh game as it extends the early game before Nauvis.
|
154
lignumis/prototypes/content/active-noise-cancelling-tower.lua
Normal file
154
lignumis/prototypes/content/active-noise-cancelling-tower.lua
Normal file
|
@ -0,0 +1,154 @@
|
|||
local hit_effects = require("__base__.prototypes.entity.hit-effects")
|
||||
local sounds = require("__base__.prototypes.entity.sounds")
|
||||
local item_sounds = require("__base__.prototypes.item_sounds")
|
||||
local item_tints = require("__base__.prototypes.item-tints")
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "recipe-category",
|
||||
name = "active-noise-cancelling"
|
||||
},
|
||||
{
|
||||
type = "assembling-machine",
|
||||
name = "active-noise-cancelling-tower",
|
||||
icons = {
|
||||
{ icon = "__base__/graphics/icons/programmable-speaker.png" },
|
||||
{ icon = "__lignumis__/graphics/icons/active-noise-cancelling.png", scale = 0.25, shift = { 8, 8 } }
|
||||
},
|
||||
icon_draw_specification = { shift = { 0, -1 }, scale = 0.75, scale_for_many = 0.5 },
|
||||
flags = { "placeable-neutral", "player-creation" },
|
||||
minable = { mining_time = 0.1, result = "active-noise-cancelling-tower" },
|
||||
fast_replaceable_group = "active-noise-cancelling-tower",
|
||||
max_health = 150,
|
||||
crafting_speed = 1,
|
||||
crafting_categories = { "active-noise-cancelling" },
|
||||
energy_usage = "6MW",
|
||||
energy_source = {
|
||||
type = "electric",
|
||||
usage_priority = "secondary-input",
|
||||
emissions_per_minute = { noise = -1000 },
|
||||
drain = "0W"
|
||||
},
|
||||
fixed_recipe = "active-noise-cancelling",
|
||||
is_military_target = true,
|
||||
show_recipe_icon_on_map = true,
|
||||
map_color = { r = 112, g = 61, b = 150, a = 1 },
|
||||
corpse = "programmable-speaker-remnants",
|
||||
dying_explosion = "programmable-speaker-explosion",
|
||||
collision_box = { { -0.3, -0.3 }, { 0.3, 0.3 } },
|
||||
selection_box = { { -0.5, -0.5 }, { 0.5, 0.5 } },
|
||||
damaged_trigger_effect = hit_effects.entity({ { -0.2, -2 }, { 0.2, 0.2 } }),
|
||||
drawing_box_vertical_extension = 2,
|
||||
open_sound = sounds.machine_open,
|
||||
close_sound = sounds.machine_close,
|
||||
graphics_set = {
|
||||
animation = {
|
||||
layers = {
|
||||
{
|
||||
filename = "__base__/graphics/entity/programmable-speaker/programmable-speaker.png",
|
||||
priority = "extra-high",
|
||||
width = 59,
|
||||
height = 178,
|
||||
shift = util.by_pixel(-2.25, -39.5),
|
||||
scale = 0.5
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/programmable-speaker/programmable-speaker-shadow.png",
|
||||
priority = "extra-high",
|
||||
width = 237,
|
||||
height = 50,
|
||||
shift = util.by_pixel(52.75, -3),
|
||||
draw_as_shadow = true,
|
||||
scale = 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
water_reflection = {
|
||||
pictures = {
|
||||
filename = "__base__/graphics/entity/programmable-speaker/programmable-speaker-reflection.png",
|
||||
priority = "extra-high",
|
||||
width = 12,
|
||||
height = 24,
|
||||
shift = util.by_pixel(0, 45),
|
||||
variation_count = 1,
|
||||
scale = 5
|
||||
},
|
||||
rotate = false,
|
||||
orientation_to_variation = false
|
||||
},
|
||||
surface_conditions = { { property = "pollution-type", min = 3, max = 3 } }
|
||||
},
|
||||
{
|
||||
type = "item",
|
||||
name = "active-noise-cancelling-tower",
|
||||
icons = {
|
||||
{ icon = "__base__/graphics/icons/programmable-speaker.png" },
|
||||
{ icon = "__lignumis__/graphics/icons/active-noise-cancelling.png", scale = 0.25, shift = { 8, 8 } }
|
||||
},
|
||||
subgroup = "circuit-network",
|
||||
order = "d[other]-c[active-noise-cancelling-tower]",
|
||||
inventory_move_sound = item_sounds.mechanical_inventory_move,
|
||||
pick_sound = item_sounds.mechanical_inventory_pickup,
|
||||
drop_sound = item_sounds.mechanical_inventory_move,
|
||||
place_result = "active-noise-cancelling-tower",
|
||||
stack_size = 10,
|
||||
random_tint_color = item_tints.iron_rust
|
||||
},
|
||||
{
|
||||
type = "recipe",
|
||||
name = "active-noise-cancelling-tower",
|
||||
enabled = false,
|
||||
energy_required = 20,
|
||||
ingredients = {
|
||||
{ type = "item", name = "gold-plate", amount = 6 },
|
||||
{ type = "item", name = "gold-cable", amount = 6 },
|
||||
{ type = "item", name = "low-density-structure", amount = 4 },
|
||||
{ type = "item", name = "processing-unit", amount = 8 }
|
||||
},
|
||||
results = { { type = "item", name = "active-noise-cancelling-tower", amount = 1 } }
|
||||
},
|
||||
{
|
||||
type = "recipe",
|
||||
name = "active-noise-cancelling",
|
||||
icons = { { icon = "__lignumis__/graphics/icons/active-noise-cancelling.png" } },
|
||||
enabled = false,
|
||||
energy_required = 1000000,
|
||||
ingredients = {},
|
||||
results = {},
|
||||
category = "active-noise-cancelling",
|
||||
hide_from_stats = true,
|
||||
hide_from_player_crafting = true,
|
||||
surface_conditions = { { property = "pollution-type", min = 3, max = 3 } }
|
||||
},
|
||||
{
|
||||
type = "technology",
|
||||
name = "active-noise-cancelling",
|
||||
icon = "__lignumis__/graphics/technology/active-noise-cancelling.png",
|
||||
icon_size = 128,
|
||||
effects = {
|
||||
{
|
||||
type = "unlock-recipe",
|
||||
recipe = "active-noise-cancelling-tower"
|
||||
},
|
||||
{
|
||||
type = "unlock-recipe",
|
||||
recipe = "active-noise-cancelling"
|
||||
}
|
||||
},
|
||||
prerequisites = { "utility-science-pack" },
|
||||
unit = {
|
||||
time = 60,
|
||||
count = 500,
|
||||
ingredients = {
|
||||
{ "wood-science-pack", 1 },
|
||||
{ "steam-science-pack", 1 },
|
||||
{ "automation-science-pack", 1 },
|
||||
{ "logistic-science-pack", 1 },
|
||||
{ "chemical-science-pack", 1 },
|
||||
{ "space-science-pack", 1 },
|
||||
{ "utility-science-pack", 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
|
@ -24,5 +24,6 @@ require("wood-logistics")
|
|||
require("basic-repair-pack")
|
||||
require("basic-radar")
|
||||
require("mid-game-recipes")
|
||||
require("active-noise-cancelling-tower")
|
||||
|
||||
require("noise")
|
||||
|
|
|
@ -5,8 +5,8 @@ local entity = DeepMiner.EntityBuilder:new():build({
|
|||
resource_searching_radius = 0.49,
|
||||
energy_usage = "25MW",
|
||||
mining_speed = 15,
|
||||
energySource = {
|
||||
emissions_per_minute = { noise = 500 }
|
||||
energy_source = {
|
||||
emissions_per_minute = { noise = 2000 }
|
||||
},
|
||||
resource_drain_rate_percent = 75
|
||||
})
|
||||
|
|
|
@ -16,6 +16,11 @@ local nauvis_lignumis = {
|
|||
}
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "surface-property",
|
||||
name = "pollution-type",
|
||||
default_value = 0
|
||||
},
|
||||
{
|
||||
type = "planet",
|
||||
name = "lignumis",
|
||||
|
@ -38,7 +43,8 @@ data:extend({
|
|||
departure = { "default-rocket-a" }
|
||||
},
|
||||
surface_properties = {
|
||||
["day-night-cycle"] = 1 * minute
|
||||
["day-night-cycle"] = 2 * minute,
|
||||
["pollution-type"] = 3
|
||||
},
|
||||
asteroid_spawn_influence = 1,
|
||||
asteroid_spawn_definitions = asteroid_util.spawn_definitions(nauvis_lignumis, 0.9),
|
||||
|
|
|
@ -1,3 +1,18 @@
|
|||
-- Entities added by Lignumis define noise emissions/absorption in their own file.
|
||||
|
||||
local function emit(type, name, amount)
|
||||
local entity = data.raw[type][name]
|
||||
entity.energy_source = entity.energy_source or {}
|
||||
entity.energy_source.emissions_per_minute = entity.energy_source.emissions_per_minute or {}
|
||||
entity.energy_source.emissions_per_minute.noise = amount
|
||||
end
|
||||
|
||||
local function emit_constant(type, name, amount)
|
||||
local entity = data.raw[type][name]
|
||||
entity.emissions_per_second = entity.emissions_per_second or {}
|
||||
entity.emissions_per_second.noise = amount / 60
|
||||
end
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "airborne-pollutant",
|
||||
|
@ -16,25 +31,30 @@ data:extend({
|
|||
}
|
||||
})
|
||||
|
||||
data.raw["unit-spawner"]["spitter-spawner"].absorptions_per_second.noise = { absolute = 20, proportional = 0.01 }
|
||||
data.raw["unit-spawner"]["biter-spawner"].absorptions_per_second.noise = { absolute = 20, proportional = 0.01 }
|
||||
data.raw["unit"]["small-biter"].absorptions_to_join_attack.noise = 4
|
||||
data.raw["unit"]["medium-biter"].absorptions_to_join_attack.noise = 20
|
||||
data.raw["unit"]["big-biter"].absorptions_to_join_attack.noise = 80
|
||||
data.raw["unit"]["behemoth-biter"].absorptions_to_join_attack.noise = 400
|
||||
data.raw["unit"]["small-spitter"].absorptions_to_join_attack.noise = 4
|
||||
data.raw["unit"]["medium-spitter"].absorptions_to_join_attack.noise = 12
|
||||
data.raw["unit"]["big-spitter"].absorptions_to_join_attack.noise = 30
|
||||
data.raw["unit"]["behemoth-spitter"].absorptions_to_join_attack.noise = 200
|
||||
|
||||
-- Nauvis enemies use noise
|
||||
|
||||
data.raw["unit-spawner"]["spitter-spawner"].absorptions_per_second.noise = { absolute = 200, proportional = 0.01 }
|
||||
data.raw["unit-spawner"]["biter-spawner"].absorptions_per_second.noise = { absolute = 200, proportional = 0.01 }
|
||||
data.raw["unit"]["small-biter"].absorptions_to_join_attack.noise = 1
|
||||
data.raw["unit"]["medium-biter"].absorptions_to_join_attack.noise = 5
|
||||
data.raw["unit"]["big-biter"].absorptions_to_join_attack.noise = 20
|
||||
data.raw["unit"]["behemoth-biter"].absorptions_to_join_attack.noise = 100
|
||||
data.raw["unit"]["small-spitter"].absorptions_to_join_attack.noise = 1
|
||||
data.raw["unit"]["medium-spitter"].absorptions_to_join_attack.noise = 3
|
||||
data.raw["unit"]["big-spitter"].absorptions_to_join_attack.noise = 8
|
||||
data.raw["unit"]["behemoth-spitter"].absorptions_to_join_attack.noise = 50
|
||||
|
||||
|
||||
-- All trees absorb noise
|
||||
|
||||
for _, tree in pairs(data.raw.tree) do
|
||||
if tree.emissions_per_second then
|
||||
tree.emissions_per_second.noise = -0.1
|
||||
end
|
||||
emit_constant("plant", "tree-plant", -6)
|
||||
end
|
||||
emit_constant("plant", "tree-plant", -6)
|
||||
|
||||
data.raw.furnace["stone-furnace"].energy_source.emissions_per_minute.noise = 10
|
||||
data.raw["mining-drill"]["burner-mining-drill"].energy_source.emissions_per_minute.noise = 50
|
||||
|
||||
-- Tiles absorb noise
|
||||
|
||||
local tiles = {"grass-1", "grass-2", "grass-3", "grass-4", "water", "deepwater", "natural-gold-soil"}
|
||||
for _, tile in pairs(tiles) do
|
||||
|
@ -43,3 +63,57 @@ for _, tile in pairs(tiles) do
|
|||
end
|
||||
data.raw.tile[tile].absorptions_per_second.noise = 0.001
|
||||
end
|
||||
|
||||
|
||||
-- Walls absorb noise
|
||||
|
||||
emit_constant("wall", "wooden-wall", -10)
|
||||
emit_constant("wall", "stone-wall", -20)
|
||||
emit_constant("gate", "gate", -10)
|
||||
|
||||
|
||||
-- Buildings emit noise
|
||||
|
||||
emit("furnace", "stone-furnace", 10)
|
||||
emit("furnace", "electric-furnace", 10)
|
||||
emit("mining-drill", "burner-mining-drill", 50)
|
||||
emit("mining-drill", "electric-mining-drill", 100)
|
||||
emit("mining-drill", "big-mining-drill", 200)
|
||||
--emit("mining-drill", "deep-miner", 2000)
|
||||
--emit("agricultural-tower", "burner-agricultural-tower", 100)
|
||||
emit("agricultural-tower", "agricultural-tower", 100)
|
||||
--emit("assembling-machine", "burner-assembling-machine", 50)
|
||||
--emit("assembling-machine", "steam-assembling-machine", 50)
|
||||
emit("assembling-machine", "assembling-machine-1", 10)
|
||||
emit("assembling-machine", "assembling-machine-2", 15)
|
||||
emit("assembling-machine", "assembling-machine-3", 20)
|
||||
emit("assembling-machine", "chemical-plant", 10)
|
||||
emit("boiler", "boiler", 5)
|
||||
emit("generator", "steam-engine", 10)
|
||||
emit("boiler", "heat-exchanger", 1)
|
||||
emit("generator", "steam-turbine", 20)
|
||||
--emit("rocket-silo", "provisional-rocket-silo", 10000)
|
||||
--emit_constant("rocket-silo", "provisional-rocket-silo", 1000)
|
||||
emit("rocket-silo", "rocket-silo", 10000)
|
||||
emit_constant("rocket-silo", "rocket-silo", 1000)
|
||||
--emit("lab", "wood-lab", 10)
|
||||
emit("lab", "lab", 5)
|
||||
emit("lab", "biolab", 20)
|
||||
emit("locomotive", "locomotive", 200)
|
||||
emit_constant("locomotive", "locomotive", 10)
|
||||
|
||||
--emit_constant("transport-belt", "wood-transport-belt", 3)
|
||||
emit_constant("transport-belt", "transport-belt", 4)
|
||||
emit_constant("transport-belt", "fast-transport-belt", 8)
|
||||
emit_constant("transport-belt", "express-transport-belt", 12)
|
||||
emit_constant("transport-belt", "turbo-transport-belt", 16)
|
||||
--emit_constant("underground-belt", "wood-underground-belt", 30)
|
||||
emit_constant("underground-belt", "underground-belt", 40)
|
||||
emit_constant("underground-belt", "fast-underground-belt", 50)
|
||||
emit_constant("underground-belt", "express-underground-belt", 60)
|
||||
emit_constant("underground-belt", "turbo-underground-belt", 80)
|
||||
--emit_constant("splitter", "wood-splitter", 60)
|
||||
emit_constant("splitter", "splitter", 70)
|
||||
emit_constant("splitter", "fast-splitter", 80)
|
||||
emit_constant("splitter", "express-splitter", 90)
|
||||
emit_constant("splitter", "turbo-splitter", 100)
|
|
@ -11,7 +11,7 @@ silo.energy_source = {
|
|||
fuel_categories = { "chemical" },
|
||||
effectivity = 1,
|
||||
fuel_inventory_size = 1,
|
||||
emissions_per_minute = { noise = 1000 },
|
||||
emissions_per_minute = { noise = 10000 },
|
||||
smoke = {
|
||||
{
|
||||
name = "smoke",
|
||||
|
@ -23,6 +23,7 @@ silo.energy_source = {
|
|||
}
|
||||
}
|
||||
}
|
||||
silo.emissions_per_second = { noise = 1000 / 60 }
|
||||
silo.energy_usage = "1MW"
|
||||
silo.rocket_entity = "provisional-rocket"
|
||||
silo.fixed_recipe = "provisional-rocket-part"
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
local recipe = data.raw.recipe["wooden-wall"]
|
||||
recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } }
|
||||
recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } }
|
||||
|
||||
local entity = data.raw.wall["wooden-wall"]
|
||||
entity.emissions_per_second = { noise = -1 }
|
|
@ -258,11 +258,11 @@ weapon_speed_technology_4.prerequisites = { "weapon-shooting-speed-3", "military
|
|||
|
||||
local production_science_pack_technology = Technology:new("production-science-pack")
|
||||
production_science_pack_technology:replacePrerequisite("advanced-material-processing-2", "space-platform-thruster")
|
||||
production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
|
||||
production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack", "space-science-pack" })
|
||||
|
||||
local utility_science_pack_technology = Technology:new("utility-science-pack")
|
||||
utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" })
|
||||
utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
|
||||
utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack", "space-science-pack" })
|
||||
|
||||
|
||||
-- Equipment
|
||||
|
@ -275,6 +275,12 @@ data.raw["equipment-grid"]["medium-equipment-grid"].width = 8
|
|||
data.raw["equipment-grid"]["medium-equipment-grid"].height = 8
|
||||
|
||||
|
||||
-- Add pollution as surface property
|
||||
|
||||
data.raw["planet"]["nauvis"].surface_properties["pollution-type"] = 1
|
||||
data.raw["planet"]["gleba"].surface_properties["pollution-type"] = 2
|
||||
|
||||
|
||||
-- Always show Nauvis icon
|
||||
|
||||
local nauvis = data.raw.planet["nauvis"]
|
||||
|
|
BIN
sources/icons/active-noise-cancelling.afphoto
Normal file
BIN
sources/icons/active-noise-cancelling.afphoto
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue