update to 0.17.0

pull/4/head
Tom Mason 2019-02-28 14:34:13 +01:00
parent 32db68b285
commit fa3f9510a9
145 changed files with 29338 additions and 12817 deletions

View File

@ -33,11 +33,6 @@ local fluid_per_barrel = 50
local energy_per_fill = 0.2
-- Crafting energy per barrel empty recipe
local energy_per_empty = 0.2
-- If the fill/empty recipes effect production statistics
local hide_barreling_from_production_stats = true
-- If the fill/empty recipes should be included in the list of valid recipes things can use when calculating raw materials
local allow_barreling_decomposition = false
local function get_technology(name)
local technologies = data.raw["technology"]
@ -95,7 +90,6 @@ local function create_barrel_item(name, fluid, empty_barrel_item)
localised_name = {"item-name.filled-barrel", {"fluid-name." .. fluid.name}},
icons = generate_barrel_item_icons(fluid, empty_barrel_item),
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "fill-barrel",
order = "b[" .. name .. "]",
stack_size = empty_barrel_item.stack_size
@ -186,15 +180,14 @@ local function create_fill_barrel_recipe(item, fluid)
icon_size = 32,
ingredients =
{
{type = "fluid", name = fluid.name, amount = fluid_per_barrel},
{type = "item", name = empty_barrel_name, amount = 1},
{type = "fluid", name = fluid.name, amount = fluid_per_barrel, catalyst_amount = fluid_per_barrel},
{type = "item", name = empty_barrel_name, amount = 1, catalyst_amount = 1}
},
results=
{
{type = "item", name = item.name, amount = 1}
{type = "item", name = item.name, amount = 1, catalyst_amount = 1}
},
hide_from_stats = hide_barreling_from_production_stats,
allow_decomposition = allow_barreling_decomposition
allow_decomposition = false
}
data:extend({recipe})
@ -217,15 +210,14 @@ local function create_empty_barrel_recipe(item, fluid)
icon_size = 32,
ingredients =
{
{type = "item", name = item.name, amount = 1}
{type = "item", name = item.name, amount = 1, catalyst_amount = 1}
},
results=
{
{type = "fluid", name = fluid.name, amount = fluid_per_barrel},
{type = "item", name = empty_barrel_name, amount = 1}
{type = "fluid", name = fluid.name, amount = fluid_per_barrel, catalyst_amount = fluid_per_barrel},
{type = "item", name = empty_barrel_name, amount = 1, catalyst_amount = 1}
},
hide_from_stats = hide_barreling_from_production_stats,
allow_decomposition = allow_barreling_decomposition
allow_decomposition = false
}
data:extend({recipe})
@ -298,6 +290,7 @@ end
local function process_fluids(fluids, technology, empty_barrel_item)
if not fluids or not technology or not empty_barrel_item or not empty_barrel_item.icon then
log("Auto barrel generation is disabled: " .. get_disabled_reason(fluids, technology, empty_barrel_item) .. ".")
return
end
for name,fluid in pairs(fluids) do

View File

@ -5,7 +5,7 @@ require("prototypes.ambient-sounds")
require("prototypes.entity.demo-entities")
require("prototypes.entity.demo-mining-drill")
require("prototypes.entity.demo-particles")
require("prototypes.entity.demo-projectiles")
require("prototypes.entity.demo-spitter-projectiles")
require("prototypes.entity.demo-resources")
require("prototypes.entity.demo-turrets")
require("prototypes.entity.demo-enemies")
@ -15,7 +15,6 @@ require("prototypes.item.demo-ammo")
require("prototypes.item.demo-armor")
require("prototypes.item.demo-gun")
require("prototypes.item.demo-item")
require("prototypes.item.demo-mining-tools")
require("prototypes.item.demo-turret")
require("prototypes.item.demo-item-groups")
require("prototypes.recipe.demo-furnace-recipe")
@ -39,6 +38,10 @@ require("prototypes.categories.resource-category")
require("prototypes.categories.module-category")
require("prototypes.equipment-grid")
require("prototypes.categories.equipment-category")
require("prototypes.technology.demo-technology")
require("prototypes.shortcuts")
require("prototypes.campaign_sprites")
require("prototypes.campaign_gui")
if not data.is_demo then
require("prototypes.achievements")
@ -70,6 +73,7 @@ if not data.is_demo then
require("prototypes.fluid.fluid")
require("prototypes.signal.signal")
require("prototypes.entity.resources")
require("prototypes.technology.military-upgrades")
require("prototypes.technology.technology")
require("prototypes.technology.inserter")
require("prototypes.tutorials")

View File

@ -1,7 +1,6 @@
{
"name": "base",
"version": "0.16.52",
"version": "0.17.0",
"title": "Base Mod",
"author": "Factorio team",
"contact": "dev@factorio.com",

View File

@ -1,7 +0,0 @@
{
"item":
[
["straight-rail", "rail"],
["curved-rail", "rail"]
]
}

View File

@ -1,69 +0,0 @@
{
"item":
[
["basic-transport-belt", "transport-belt"],
["basic-splitter", "splitter"],
["basic-transport-belt-to-ground", "underground-belt"],
["fast-transport-belt-to-ground", "fast-underground-belt"],
["express-transport-belt-to-ground", "express-underground-belt"],
["basic-inserter", "inserter"],
["basic-mining-drill", "electric-mining-drill"],
["basic-beacon", "beacon"],
["basic-bullet-magazine", "firearm-magazine"],
["piercing-bullet-magazine", "piercing-rounds-magazine"],
["basic-accumulator", "accumulator"],
["basic-electric-discharge-defense-equipment", "discharge-defense-equipment"],
["basic-electric-discharge-defense-remote", "discharge-defense-remote"],
["basic-armor", "light-armor"],
["basic-modular-armor", "modular-armor"],
["basic-laser-defense-equipment", "personal-laser-defense-equipment"],
["basic-exoskeleton-equipment", "exoskeleton-equipment"],
["smart-chest", "steel-chest"],
["smart-inserter", "filter-inserter"]
],
"entity":
[
["basic-transport-belt", "transport-belt"],
["basic-splitter", "splitter"],
["basic-transport-belt-to-ground", "underground-belt"],
["fast-transport-belt-to-ground", "fast-underground-belt"],
["express-transport-belt-to-ground", "express-underground-belt"],
["basic-inserter", "inserter"],
["basic-mining-drill", "electric-mining-drill"],
["basic-beacon", "beacon"],
["basic-accumulator", "accumulator"],
["smart-chest", "steel-chest"],
["smart-inserter", "filter-inserter"]
],
"equipment":
[
["basic-electric-discharge-defense-equipment", "discharge-defense-equipment"],
["basic-laser-defense-equipment", "personal-laser-defense-equipment"],
["basic-exoskeleton-equipment", "exoskeleton-equipment"]
],
"recipe":
[
["basic-transport-belt", "transport-belt"],
["basic-splitter", "splitter"],
["basic-transport-belt-to-ground", "underground-belt"],
["fast-transport-belt-to-ground", "fast-underground-belt"],
["express-transport-belt-to-ground", "express-underground-belt"],
["basic-inserter", "inserter"],
["basic-mining-drill", "electric-mining-drill"],
["basic-beacon", "beacon"],
["basic-bullet-magazine", "firearm-magazine"],
["piercing-bullet-magazine", "piercing-rounds-magazine"],
["basic-accumulator", "accumulator"],
["basic-electric-discharge-defense-equipment", "discharge-defense-equipment"],
["basic-electric-discharge-defense-remote", "discharge-defense-remote"],
["basic-armor", "light-armor"],
["basic-modular-armor", "modular-armor"],
["smart-inserter", "filter-inserter"]
],
"technology":
[
["basic-electric-discharge-defense-equipment", "discharge-defense-equipment"],
["basic-laser-defense-equipment", "personal-laser-defense-equipment"],
["basic-exoskeleton-equipment", "exoskeleton-equipment"]
]
}

View File

@ -1,26 +0,0 @@
game.reload_script()
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
local recipes = force.recipes;
if technologies["railway"].researched then
recipes["rail"].enabled = true
end
if technologies["concrete"].researched then
recipes["hazard-concrete"].enabled = true
end
if technologies["logistics-2"].researched then
recipes["stack-inserter"].enabled = true
recipes["stack-filter-inserter"].enabled = true
end
if technologies["construction-robotics"].researched then
force.ghost_time_to_live = force.ghost_time_to_live + 60 * 60 * 25
end
end

View File

@ -1,9 +0,0 @@
{
"technology":
[
["research-effectivity-1", "research-speed-1"],
["research-effectivity-2", "research-speed-2"],
["research-effectivity-3", "research-speed-3"],
["research-effectivity-4", "research-speed-4"]
]
}

View File

@ -1,13 +0,0 @@
{
"technology":
[
[ "logistic-robot-speed-1", "worker-robots-speed-1" ],
[ "logistic-robot-speed-2", "worker-robots-speed-2" ],
[ "logistic-robot-speed-3", "worker-robots-speed-3" ],
[ "logistic-robot-speed-4", "worker-robots-speed-4" ],
[ "logistic-robot-speed-5", "worker-robots-speed-5" ],
[ "logistic-robot-storage-1", "worker-robots-storage-1" ],
[ "logistic-robot-storage-2", "worker-robots-storage-2" ],
[ "logistic-robot-storage-3", "worker-robots-storage-3" ]
]
}

View File

@ -1,15 +0,0 @@
{
"item":
[
[ "basic-grenade", "grenade" ]
],
"recipe":
[
[ "smart-chest", "steel-chest" ],
[ "straight-rail", "rail" ],
[ "curved-rail", "rail" ],
[ "basic-grenade", "grenade" ],
[ "basic-laser-defense-equipment", "personal-laser-defense-equipment" ],
[ "basic-exoskeleton-equipment", "exoskeleton-equipment" ]
]
}

View File

@ -1,12 +0,0 @@
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
local recipes = force.recipes;
if technologies["circuit-network"].researched then
recipes["power-switch"].enabled = true
end
end

View File

@ -1,9 +0,0 @@
{
"technology":
[
[ "inserter-stack-size-bonus-1", "inserter-capacity-bonus-1" ],
[ "inserter-stack-size-bonus-2", "inserter-capacity-bonus-2" ],
[ "inserter-stack-size-bonus-3", "inserter-capacity-bonus-3" ],
[ "inserter-stack-size-bonus-4", "inserter-capacity-bonus-4" ]
]
}

View File

@ -1,32 +0,0 @@
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
local recipes = force.recipes;
if technologies["inserter-capacity-bonus-4"].researched then
if force.inserter_stack_size_bonus <= 4 then
force.inserter_stack_size_bonus = 1
end
force.stack_inserter_capacity_bonus = 5
elseif technologies["inserter-capacity-bonus-3"].researched then
if force.inserter_stack_size_bonus <= 3 then
force.inserter_stack_size_bonus = 1
end
force.stack_inserter_capacity_bonus = 4
elseif technologies["inserter-capacity-bonus-2"].researched then
if force.inserter_stack_size_bonus <= 2 then
force.inserter_stack_size_bonus = 1
end
force.stack_inserter_capacity_bonus = 3
elseif technologies["inserter-capacity-bonus-1"].researched then
if force.inserter_stack_size_bonus <= 1 then
force.inserter_stack_size_bonus = 0
end
force.stack_inserter_capacity_bonus = 2
end
recipes["stack-inserter"].reload()
end

View File

@ -1,24 +0,0 @@
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
local recipes = force.recipes;
if technologies["flame-thrower"] then
if technologies["flame-thrower"].researched then
recipes["flame-thrower"].enabled = true
recipes["flame-thrower-ammo"].enabled = true
recipes["flamethrower-turret"].enabled = true
end
elseif technologies["flamethrower"] then
if technologies["flamethrower"].researched then
recipes["flamethrower"].enabled = true
recipes["flamethrower-ammo"].enabled = true
recipes["flamethrower-turret"].enabled = true
end
end
if technologies["steel-processing"].enabled then
recipes["steel-chest"].enabled = true
end
end

View File

@ -1,5 +0,0 @@
for j, surface in pairs(game.surfaces) do
for k, resource in pairs(surface.find_entities_filtered({name="crude-oil"})) do
resource.amount = resource.amount * 10
end
end

View File

@ -1,19 +0,0 @@
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
for i=1,6 do
if technologies["character-logistic-slots-" .. tostring(i)].researched then
force.character_logistic_slot_count = force.character_logistic_slot_count + 1
end
end
for i=1,2 do
if technologies["character-logistic-trash-slots-" .. tostring(i)].researched then
force.character_trash_slot_count = force.character_trash_slot_count + 1
end
end
end

View File

@ -1,22 +0,0 @@
if game.is_demo() then
return
end
for index, force in pairs(game.forces) do
local technologies = force.technologies;
local recipes = force.recipes;
if technologies["military-2"].researched then
recipes["military-science-pack"].enabled = true
recipes["piercing-rounds-magazine"].enabled = true
recipes["grenade"].enabled = true
end
if technologies["advanced-material-processing-2"].enabled then
recipes["electric-furnace"].enabled = true
recipes["production-science-pack"].enabled = true
end
if technologies["advanced-electronics-2"].enabled then
recipes["processing-unit"].enabled = true
recipes["high-tech-science-pack"].enabled = true
end
end

View File

@ -1,7 +0,0 @@
if game.is_demo() then
return
end
if game.entity_prototypes["uranium-ore"].autoplace_specification then
game.surfaces[1].regenerate_entity("uranium-ore")
end

View File

@ -1,7 +0,0 @@
{
"technology":
[
[ "armor-making-2", "heavy-armor" ],
[ "armor-making-3", "modular-armor" ]
]
}

View File

@ -1,17 +0,0 @@
{
"technology":
[
[ "flame-thrower", "flamethrower" ]
],
"item":
[
[ "flame-thrower", "flamethrower" ],
[ "flame-thrower-ammo", "flamethrower-ammo"]
],
"recipe":
[
[ "flame-thrower", "flamethrower" ],
[ "flame-thrower-ammo", "flamethrower-ammo" ]
]
}

View File

@ -1,6 +0,0 @@
{
"ammo-category":
[
[ "flame-thrower", "flamethrower" ]
]
}

View File

@ -1 +0,0 @@
game.reload_script()

View File

@ -1,14 +0,0 @@
{
"recipe":
[
[ "diesel-locomotive", "locomotive" ]
],
"item":
[
[ "diesel-locomotive", "locomotive" ]
],
"entity":
[
[ "diesel-locomotive", "locomotive" ]
]
}

View File

@ -1,21 +0,0 @@
if game.is_demo() then
return
end
for k,force in pairs(game.forces) do
force.reset_recipes()
force.reset_technologies()
force.reset_technology_effects()
local effect_key = "unlock-recipe"
local fluid_handling = force.technologies["fluid-handling"]
local recipes = force.recipes
if fluid_handling and fluid_handling.researched then
for _,effect in pairs(fluid_handling.effects) do
if effect.type == effect_key then
recipes[effect.recipe].enabled = true
end
end
end
end

View File

@ -1,7 +0,0 @@
if game.is_demo() then
return
end
for k,force in pairs(game.forces) do
force.rechart()
end

View File

@ -1,17 +0,0 @@
{
"recipe":
[
[ "small-pump", "pump" ],
[ "heat-boiler", "heat-exchanger" ]
],
"item":
[
[ "small-pump", "pump" ],
[ "heat-boiler", "heat-exchanger" ]
],
"entity":
[
[ "heat-boiler", "heat-exchanger" ],
[ "small-pump", "pump" ]
]
}

View File

@ -1,7 +0,0 @@
if game.is_demo() then
return
end
for k,force in pairs(game.forces) do
force.reset_technologies()
end

View File

@ -1,7 +0,0 @@
if game.is_demo() then
return
end
for k,force in pairs(game.forces) do
force.recipes["explosive-uranium-cannon-shell"].enabled = force.technologies["uranium-ammo"].researched
end

View File

@ -0,0 +1,6 @@
{
"item":
[
[ "raw-wood", "wood" ]
]
}

View File

@ -0,0 +1,14 @@
{
"recipe":
[
[ "wall", "stone-wall" ]
],
"item":
[
[ "wall", "stone-wall" ]
],
"entity":
[
[ "wall", "stone-wall" ]
]
}

View File

@ -0,0 +1,3 @@
for k, force in pairs (game.forces) do
force.reset_technology_effects()
end

View File

@ -0,0 +1 @@
game.reload_script()

View File

@ -0,0 +1,3 @@
for k, force in pairs (game.forces) do
force.reset_technology_effects()
end

View File

@ -0,0 +1,38 @@
{
"technology":
[
[ "laser-turret-damage-1", "energy-weapons-damage-1" ],
[ "laser-turret-damage-2", "energy-weapons-damage-2" ],
[ "laser-turret-damage-3", "energy-weapons-damage-3" ],
[ "laser-turret-damage-4", "energy-weapons-damage-4" ],
[ "laser-turret-damage-5", "energy-weapons-damage-5" ],
[ "laser-turret-damage-6", "energy-weapons-damage-6" ],
[ "laser-turret-damage-7", "energy-weapons-damage-7" ],
[ "laser-turret-damage-8", "energy-weapons-damage-8" ],
[ "cannon-shell-damage-1", "stronger-explosives-1" ],
[ "cannon-shell-damage-2", "stronger-explosives-2" ],
[ "cannon-shell-damage-3", "stronger-explosives-3" ],
[ "cannon-shell-damage-4", "stronger-explosives-4" ],
[ "cannon-shell-damage-5", "stronger-explosives-5" ],
[ "cannon-shell-damage-6", "stronger-explosives-9" ],
[ "bullet-damage-1", "physical-projectile-damage-1" ],
[ "bullet-damage-2", "physical-projectile-damage-2" ],
[ "bullet-damage-3", "physical-projectile-damage-3" ],
[ "bullet-damage-4", "physical-projectile-damage-4" ],
[ "bullet-damage-5", "physical-projectile-damage-5" ],
[ "bullet-damage-6", "physical-projectile-damage-6" ],
[ "bullet-damage-7", "physical-projectile-damage-7" ],
[ "bullet-speed-1", "weapon-shooting-speed-1" ],
[ "bullet-speed-2", "weapon-shooting-speed-2" ],
[ "bullet-speed-3", "weapon-shooting-speed-3" ],
[ "bullet-speed-4", "weapon-shooting-speed-4" ],
[ "bullet-speed-5", "weapon-shooting-speed-5" ],
[ "bullet-speed-6", "weapon-shooting-speed-6" ],
[ "flamethrower-damage-1", "refined-flammables-1" ],
[ "flamethrower-damage-2", "refined-flammables-2" ],
[ "flamethrower-damage-3", "refined-flammables-3" ],
[ "flamethrower-damage-4", "refined-flammables-4" ],
[ "flamethrower-damage-5", "refined-flammables-5" ],
[ "flamethrower-damage-6", "refined-flammables-6" ]
]
}

View File

@ -0,0 +1,23 @@
{
"item":
[
[ "science-pack-1", "automation-science-pack" ],
[ "science-pack-2", "logistic-science-pack" ],
[ "science-pack-3", "chemical-science-pack" ],
[ "high-tech-science-pack", "utility-science-pack" ]
],
"recipe":
[
[ "science-pack-1", "automation-science-pack" ],
[ "science-pack-2", "logistic-science-pack" ],
[ "science-pack-3", "chemical-science-pack" ],
[ "high-tech-science-pack", "utility-science-pack" ]
],
"technology":
[
[ "science-pack-1", "automation-science-pack" ],
[ "science-pack-2", "logistic-science-pack" ],
[ "science-pack-3", "chemical-science-pack" ],
[ "high-tech-science-pack", "utility-science-pack" ]
]
}

View File

@ -250,5 +250,14 @@ data:extend(
filename = "__base__/sound/ambient/world-ambience-6.ogg",
volume = 1.0
}
},
{
type = "wind-sound",
name = "wind-1",
sound =
{
filename = "__base__/sound/wind/wind.ogg",
volume = 1.0
}
}
})

View File

@ -42,7 +42,8 @@ data:extend(
order = "b-f",
category = "resource"
},
{
--[[ {
type = "autoplace-control",
name = "grass",
order = "c-a",
@ -66,6 +67,7 @@ data:extend(
order = "c-d",
category = "terrain"
},
]]--
{
type = "autoplace-control",
name = "trees",
@ -76,9 +78,9 @@ data:extend(
{
type = "autoplace-control",
name = "enemy-base",
richness = true,
richness = false,
order = "c-z",
category = "terrain"
category = "enemy"
}
}
)

View File

@ -0,0 +1,181 @@
local add_styles = function(styles)
local default_styles = data.raw["gui-style"].default
for name, style in pairs(styles) do
default_styles[name] = style
end
end
add_styles(
{
quest_item_description =
{
type = "label_style",
font = "default",
font_color = {r=1, g=1, b=1},
rich_text_setting = "enabled",
single_line = false,
maximal_width = 250,
left_padding = 3,
horizontal_align = "left"
},
quest_item_subheading =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=255, g=230, b=192},
font = "default-semibold",
},
quest_item_description_uncomplete =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=1, g=1, b=1},
},
quest_item_description_progressing =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=255, g=204, b=0},
},
quest_item_description_complete =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=210, g=253, b=145},
},
quest_item_description_failed =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=250, g=90, b=90},
},
quest_item_description_info =
{
type = "label_style",
parent = "quest_item_description",
font_color = {r=128, g=206, b=240},
},
quest_vertical_flow =
{
type = "vertical_flow_style",
vertical_spacing = 0,
},
quest_gui_frame =
{
type = "frame_style",
parent = "frame",
title_top_padding = 0,
title_left_padding = 0,
title_bottom_padding = 8,
title_right_padding = 0,
padding = 0,
use_header_filler = false,
horizontally_stretchable = "on"
},
quest_item_table =
{
type = "table_style",
parent = "table",
cell_padding = 0,
top_padding = 0,
left_padding = 4,
right_padding = 4,
bottom_padding = 4,
vertical_spacing = 0,
horizontally_stretchable = "on",
odd_row_graphical_set =
{
base = {position = {43, 8}, size = {1, 1}},
}
},
quest_gui_entry_wrapper_common =
{
type = "horizontal_flow_style",
horizontal_spacing = 2,
minimal_height = 26,
vertical_align = 'top'
},
quest_hint_row =
{
type = "horizontal_flow_style",
horizontal_spacing = 2,
top_padding = 0,
bottom_padding = 0,
left_padding = 0,
right_padding = 0,
vertically_stretchable = "off",
horizontally_stretchable = "on",
},
quest_hint_wrapper =
{
type = "horizontal_flow_style",
parent = "quest_gui_entry_wrapper_common",
minimal_width = 30,
horizontal_align = "center"
},
quest_hint_icon_label =
{
type = "label_style",
parent = "label",
font = 'default'
},
quest_hint_description_wrapper =
{
type = "horizontal_flow_style",
parent = 'quest_gui_entry_wrapper_common'
},
quest_hint_description =
{
type = "label_style",
font = "default",
font_color = { r = 128, g = 206, b = 240 },
rich_text_setting = "enabled",
single_line = false,
left_padding = 3,
horizontal_align = "left",
maximal_width = 350
},
quest_item_description_wrapper =
{
type = "horizontal_flow_style",
parent = 'quest_gui_entry_wrapper_common',
},
quest_item_count_wrapper =
{
type = "horizontal_flow_style",
parent = 'quest_gui_entry_wrapper_common',
left_padding = 4
},
quest_item_icons_wrapper =
{
type = "horizontal_flow_style",
parent = 'quest_gui_entry_wrapper_common',
horizontal_align = "left",
left_padding = 4
},
quest_item_icons_label =
{
type = "label_style",
parent = "label",
font = 'default'
},
quest_item_state_icon_wrapper =
{
type = "horizontal_flow_style",
parent = 'quest_gui_entry_wrapper_common',
horizontal_align = 'center',
left_padding = 4
},
quest_item_state_icon_label =
{
type = "label_style",
parent = "label",
font = 'default'
},
}
)

View File

@ -0,0 +1,13 @@
data:extend
{
{
type = "sound",
name = "worm-sends-biters",
variations = { filename = "__base__/sound/creatures/worm-roar-alt-3.ogg", volume = 1}
},
{
type = "sound",
name = "mainframe-activated",
variations = { filename = "__core__/sound/wire-pickup.ogg", volume = 2}
},
}

View File

@ -0,0 +1,102 @@
local tree_view_tileset_scale = 0.5
data:extend(
{
{
type = "sprite",
name = "tree_view_tileset-square_l_d",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 5,
y = 5,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-square_l",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 58,
y = 5,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-square_d",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 111,
y = 5,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-square_no_lines",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 164,
y = 5,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-empty",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 5,
y = 58,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-u_d_r_line",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 58,
y = 58,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-u_r_line",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 111,
y = 58,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
{
type = "sprite",
name = "tree_view_tileset-vertical_line",
filename = "__base__/graphics/tree_view_tileset.png",
priority = "extra-high-no-scale",
x = 164,
y = 58,
width = 48,
height = 48,
flags = {"no-crop"},
scale = tree_view_tileset_scale
},
}
)

View File

@ -31,5 +31,9 @@ data:extend(
{
type = "recipe-category",
name = "centrifuging"
},
{
type = "recipe-category",
name = "basic-crafting"
}
})

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
return {
return
{
{0.0,util.by_pixel(-0.0,-145.0)},
{0.004,util.by_pixel(3.5,-144.5)},
{0.008,util.by_pixel(6.5,-144.5)},

View File

@ -1,4 +1,5 @@
local beam_blend_mode = "additive-soft"
local laser_beam_blend_mode = "additive"
function make_beam(sound)
local result =
@ -7,6 +8,8 @@ function make_beam(sound)
flags = {"not-on-map"},
width = 0.5,
damage_interval = 20,
random_target_offset = true,
target_offset_y = -0.3,
action =
{
type = "direct",
@ -22,14 +25,13 @@ function make_beam(sound)
}
}
},
start =
{
start =
{
filename = "__base__/graphics/entity/beam/tileable-beam-START.png",
line_length = 4,
width = 52,
height = 40,
frame_count = 16,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.03125, 0},
hr_version =
@ -39,20 +41,18 @@ function make_beam(sound)
width = 94,
height = 66,
frame_count = 16,
axially_symmetrical = false,
direction_count = 1,
shift = {0.53125, 0},
scale = 0.5
}
},
ending =
{
ending =
{
filename = "__base__/graphics/entity/beam/tileable-beam-END.png",
line_length = 4,
width = 49,
height = 54,
frame_count = 16,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.046875, 0},
hr_version =
@ -62,11 +62,10 @@ function make_beam(sound)
width = 91,
height = 93,
frame_count = 16,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.078125, -0.046875},
scale = 0.5
}
}
},
head =
{
@ -155,9 +154,89 @@ function make_beam(sound)
return result;
end
function make_laser_beam(sound)
local result =
{
type = "beam",
flags = {"not-on-map"},
width = 0.5,
damage_interval = 20,
random_target_offset = true,
action =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "damage",
damage = { amount = 10, type = "laser"}
}
}
}
},
head =
{
filename = "__base__/graphics/entity/laser-turret/hr-laser-body.png",
flags = {"mipmap"},
line_length = 8,
width = 64,
height = 12,
frame_count = 8,
scale = 0.5,
animation_speed = 0.5,
blend_mode = laser_beam_blend_mode
},
tail =
{
filename = "__base__/graphics/entity/laser-turret/hr-laser-end.png",
flags = { "no-crop", "mipmap" },
width = 110,
height = 62,
frame_count = 8,
shift = util.by_pixel(11.5, 1),
scale = 0.5,
animation_speed = 0.5,
blend_mode = laser_beam_blend_mode
},
body =
{
{
filename = "__base__/graphics/entity/laser-turret/hr-laser-body.png",
flags = {"mipmap"},
line_length = 8,
width = 64,
height = 12,
frame_count = 8,
scale = 0.5,
animation_speed = 0.5,
blend_mode = laser_beam_blend_mode
}
}
}
if sound then
result.working_sound =
{
{
filename = "__base__/sound/fight/electric-beam.ogg",
volume = 0.7
}
}
result.name = "laser-beam"
else
result.name = "laser-beam-no-sound"
end
return result;
end
data:extend(
{
make_beam(true),
make_beam(false)
make_beam(false),
make_laser_beam(true)
}
)

View File

@ -0,0 +1,73 @@
function assembler1pipepictures()
return
{
north =
{
filename = "__base__/graphics/entity/assembling-machine-1/assembling-machine-1-pipe-N.png",
priority = "extra-high",
width = 35,
height = 18,
shift = util.by_pixel(2.5, 14),
hr_version =
{
filename = "__base__/graphics/entity/assembling-machine-1/hr-assembling-machine-1-pipe-N.png",
priority = "extra-high",
width = 71,
height = 38,
shift = util.by_pixel(2.25, 13.5),
scale = 0.5
}
},
east =
{
filename = "__base__/graphics/entity/assembling-machine-1/assembling-machine-1-pipe-E.png",
priority = "extra-high",
width = 20,
height = 38,
shift = util.by_pixel(-25, 1),
hr_version =
{
filename = "__base__/graphics/entity/assembling-machine-1/hr-assembling-machine-1-pipe-E.png",
priority = "extra-high",
width = 42,
height = 76,
shift = util.by_pixel(-24.5, 1),
scale = 0.5
}
},
south =
{
filename = "__base__/graphics/entity/assembling-machine-1/assembling-machine-1-pipe-S.png",
priority = "extra-high",
width = 44,
height = 31,
shift = util.by_pixel(0, -31.5),
hr_version =
{
filename = "__base__/graphics/entity/assembling-machine-1/hr-assembling-machine-1-pipe-S.png",
priority = "extra-high",
width = 88,
height = 61,
shift = util.by_pixel(0, -31.25),
scale = 0.5
}
},
west =
{
filename = "__base__/graphics/entity/assembling-machine-1/assembling-machine-1-pipe-W.png",
priority = "extra-high",
width = 19,
height = 37,
shift = util.by_pixel(25.5, 1.5),
hr_version =
{
filename = "__base__/graphics/entity/assembling-machine-1/hr-assembling-machine-1-pipe-W.png",
priority = "extra-high",
width = 39,
height = 73,
shift = util.by_pixel(25.75, 1.25),
scale = 0.5
}
}
}
end

View File

@ -0,0 +1 @@
biter_ai_settings = { destroy_when_commands_fail = true, allow_try_return_to_spawner = true }

View File

@ -1,3 +1,4 @@
require ("util")
function biterrunanimation(scale, tint1, tint2)
return
@ -5,50 +6,160 @@ function biterrunanimation(scale, tint1, tint2)
layers=
{
{
width = 169,
height = 114,
filenames =
{
"__base__/graphics/entity/biter/biter-run-01.png",
"__base__/graphics/entity/biter/biter-run-02.png",
"__base__/graphics/entity/biter/biter-run-03.png",
"__base__/graphics/entity/biter/biter-run-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 202,
height = 158,
frame_count = 16,
direction_count = 16,
shift = {scale * 0.714844, scale * -0.246094},
shift = util.mul_shift(util.by_pixel(-2, -6), scale),
scale = scale,
stripes =
hr_version =
{
{
filename = "__base__/graphics/entity/biter/biter-run-1.png",
width_in_frames = 8,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/biter/biter-run-2.png",
width_in_frames = 8,
height_in_frames = 16
}
filenames =
{
"__base__/graphics/entity/biter/hr-biter-run-01.png",
"__base__/graphics/entity/biter/hr-biter-run-02.png",
"__base__/graphics/entity/biter/hr-biter-run-03.png",
"__base__/graphics/entity/biter/hr-biter-run-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 398,
height = 310,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(-1, -5), scale),
direction_count = 16,
scale = 0.5 * scale,
}
},
{
filename = "__base__/graphics/entity/biter/biter-run-mask1.png",
filenames =
{
"__base__/graphics/entity/biter/biter-run-mask1-01.png",
"__base__/graphics/entity/biter/biter-run-mask1-02.png",
"__base__/graphics/entity/biter/biter-run-mask1-03.png",
"__base__/graphics/entity/biter/biter-run-mask1-04.png",
},
slice = 8,
lines_per_file = 8,
flags = { "mask" },
width = 105,
height = 81,
line_length = 8,
width = 118,
height = 94,
frame_count = 16,
direction_count = 16,
shift = {scale * 0.117188, scale * -0.867188},
shift = util.mul_shift(util.by_pixel(0, -38), scale),
scale = scale,
tint = tint1
tint = tint1,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-run-mask1-01.png",
"__base__/graphics/entity/biter/hr-biter-run-mask1-02.png",
"__base__/graphics/entity/biter/hr-biter-run-mask1-03.png",
"__base__/graphics/entity/biter/hr-biter-run-mask1-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 238,
height = 182,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(-1, -37), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filename = "__base__/graphics/entity/biter/biter-run-mask2.png",
filenames =
{
"__base__/graphics/entity/biter/biter-run-mask2-01.png",
"__base__/graphics/entity/biter/biter-run-mask2-02.png",
"__base__/graphics/entity/biter/biter-run-mask2-03.png",
"__base__/graphics/entity/biter/biter-run-mask2-04.png",
},
slice = 8,
lines_per_file = 8,
flags = { "mask" },
line_length = 16,
width = 95,
height = 81,
line_length = 8,
width = 120,
height = 92,
frame_count = 16,
direction_count = 16,
shift = {scale * 0.117188, scale * -0.855469},
shift = util.mul_shift(util.by_pixel(-2, -38), scale),
scale = scale,
tint = tint2
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-run-mask2-01.png",
"__base__/graphics/entity/biter/hr-biter-run-mask2-02.png",
"__base__/graphics/entity/biter/hr-biter-run-mask2-03.png",
"__base__/graphics/entity/biter/hr-biter-run-mask2-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 232,
height = 184,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(0, -38), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-run-shadow-01.png",
"__base__/graphics/entity/biter/biter-run-shadow-02.png",
"__base__/graphics/entity/biter/biter-run-shadow-03.png",
"__base__/graphics/entity/biter/biter-run-shadow-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 216,
height = 144,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(8, 0), scale),
direction_count = 16,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-run-shadow-01.png",
"__base__/graphics/entity/biter/hr-biter-run-shadow-02.png",
"__base__/graphics/entity/biter/hr-biter-run-shadow-03.png",
"__base__/graphics/entity/biter/hr-biter-run-shadow-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 432,
height = 292,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(8, -1), scale),
direction_count = 16,
scale = 0.5 * scale,
draw_as_shadow = true,
}
}
}
}
@ -60,61 +171,334 @@ function biterattackanimation(scale, tint1, tint2)
layers=
{
{
width = 279,
height = 184,
filenames =
{
"__base__/graphics/entity/biter/biter-attack-01.png",
"__base__/graphics/entity/biter/biter-attack-02.png",
"__base__/graphics/entity/biter/biter-attack-03.png",
"__base__/graphics/entity/biter/biter-attack-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 182,
height = 176,
frame_count = 11,
direction_count = 16,
shift = {scale * 1.74609, scale * -0.644531},
animation_speed = 0.3,
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(-2, -26), scale),
scale = scale,
stripes =
hr_version =
{
{
filename = "__base__/graphics/entity/biter/biter-attack-1.png",
width_in_frames = 6,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/biter/biter-attack-2.png",
width_in_frames = 5,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/biter/biter-attack-3.png",
width_in_frames = 6,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/biter/biter-attack-4.png",
width_in_frames = 5,
height_in_frames = 8
}
filenames =
{
"__base__/graphics/entity/biter/hr-biter-attack-01.png",
"__base__/graphics/entity/biter/hr-biter-attack-02.png",
"__base__/graphics/entity/biter/hr-biter-attack-03.png",
"__base__/graphics/entity/biter/hr-biter-attack-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 356,
height = 348,
frame_count = 11,
shift = util.mul_shift(util.by_pixel(0, -25), scale),
direction_count = 16,
animation_speed = 0.4,
scale = 0.5 * scale,
}
},
{
filename = "__base__/graphics/entity/biter/biter-attack-mask1.png",
filenames =
{
"__base__/graphics/entity/biter/biter-attack-mask1-01.png",
"__base__/graphics/entity/biter/biter-attack-mask1-02.png",
"__base__/graphics/entity/biter/biter-attack-mask1-03.png",
"__base__/graphics/entity/biter/biter-attack-mask1-04.png",
},
slice = 11,
lines_per_file = 4,
flags = { "mask" },
width = 125,
line_length = 16,
width = 178,
height = 144,
frame_count = 11,
direction_count = 16,
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(0, -42), scale),
scale = scale,
tint = tint1,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-attack-mask1-01.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask1-02.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask1-03.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask1-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 360,
height = 282,
frame_count = 11,
shift = util.mul_shift(util.by_pixel(-1, -41), scale),
direction_count = 16,
animation_speed = 0.4,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-attack-mask2-01.png",
"__base__/graphics/entity/biter/biter-attack-mask2-02.png",
"__base__/graphics/entity/biter/biter-attack-mask2-03.png",
"__base__/graphics/entity/biter/biter-attack-mask2-04.png",
},
slice = 11,
lines_per_file = 4,
flags = { "mask" },
line_length = 16,
width = 182,
height = 144,
frame_count = 11,
direction_count = 16,
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(-2, -42), scale),
scale = scale,
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-attack-mask2-01.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask2-02.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask2-03.png",
"__base__/graphics/entity/biter/hr-biter-attack-mask2-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 358,
height = 282,
frame_count = 11,
shift = util.mul_shift(util.by_pixel(-1, -41), scale),
direction_count = 16,
animation_speed = 0.4,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-attack-shadow-01.png",
"__base__/graphics/entity/biter/biter-attack-shadow-02.png",
"__base__/graphics/entity/biter/biter-attack-shadow-03.png",
"__base__/graphics/entity/biter/biter-attack-shadow-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 240,
height = 128,
frame_count = 11,
shift = util.mul_shift(util.by_pixel(30, 0), scale),
direction_count = 16,
animation_speed = 0.4,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-attack-shadow-01.png",
"__base__/graphics/entity/biter/hr-biter-attack-shadow-02.png",
"__base__/graphics/entity/biter/hr-biter-attack-shadow-03.png",
"__base__/graphics/entity/biter/hr-biter-attack-shadow-04.png",
},
slice = 11,
lines_per_file = 4,
line_length = 16,
width = 476,
height = 258,
frame_count = 11,
shift = util.mul_shift(util.by_pixel(31, -1), scale),
direction_count = 16,
animation_speed = 0.4,
scale = 0.5 * scale,
draw_as_shadow = true,
}
},
}
}
end
function biteridleanimation(scale, tint1, tint2)
return
{
layers=
{
{
filenames =
{
"__base__/graphics/entity/biter/biter-idle-01.png",
"__base__/graphics/entity/biter/biter-idle-02.png",
"__base__/graphics/entity/biter/biter-idle-03.png",
"__base__/graphics/entity/biter/biter-idle-04.png",
},
line_length = 11,
width = 154,
height = 132,
frame_count = 11,
slice = 11,
lines_per_file = 4,
direction_count = 16,
shift = util.mul_shift(util.by_pixel(-2, -12), scale),
scale = scale,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-idle-01.png",
"__base__/graphics/entity/biter/hr-biter-idle-02.png",
"__base__/graphics/entity/biter/hr-biter-idle-03.png",
"__base__/graphics/entity/biter/hr-biter-idle-04.png",
},
line_length = 11,
width = 304,
height = 258,
frame_count = 11,
slice = 11,
lines_per_file = 4,
shift = util.mul_shift(util.by_pixel(-1, -11), scale),
direction_count = 16,
scale = 0.5 * scale,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-idle-mask1-01.png",
"__base__/graphics/entity/biter/biter-idle-mask1-02.png",
"__base__/graphics/entity/biter/biter-idle-mask1-03.png",
"__base__/graphics/entity/biter/biter-idle-mask1-04.png",
},
flags = { "mask" },
line_length = 11,
width = 124,
height = 110,
frame_count = 11,
slice = 11,
lines_per_file = 4,
direction_count = 16,
shift = util.mul_shift(util.by_pixel(-2, -24), scale),
scale = scale,
tint = tint1,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-idle-mask1-01.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask1-02.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask1-03.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask1-04.png",
},
line_length = 11,
width = 244,
height = 214,
frame_count = 11,
slice = 11,
lines_per_file = 4,
shift = util.mul_shift(util.by_pixel(-1, -23), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-idle-mask2-01.png",
"__base__/graphics/entity/biter/biter-idle-mask2-02.png",
"__base__/graphics/entity/biter/biter-idle-mask2-03.png",
"__base__/graphics/entity/biter/biter-idle-mask2-04.png",
},
flags = { "mask" },
line_length = 11,
width = 124,
height = 108,
frame_count = 11,
slice = 11,
lines_per_file = 4,
direction_count = 16,
shift = {scale * 0.117188, scale * -1.11328},
shift = util.mul_shift(util.by_pixel(-2, -24), scale),
scale = scale,
tint = tint1
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-idle-mask2-01.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask2-02.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask2-03.png",
"__base__/graphics/entity/biter/hr-biter-idle-mask2-04.png",
},
line_length = 11,
width = 242,
height = 212,
frame_count = 11,
slice = 11,
lines_per_file = 4,
shift = util.mul_shift(util.by_pixel(-1, -23), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filename = "__base__/graphics/entity/biter/biter-attack-mask2.png",
flags = { "mask" },
width = 114,
height = 100,
filenames =
{
"__base__/graphics/entity/biter/biter-idle-shadow-01.png",
"__base__/graphics/entity/biter/biter-idle-shadow-02.png",
"__base__/graphics/entity/biter/biter-idle-shadow-03.png",
"__base__/graphics/entity/biter/biter-idle-shadow-04.png",
},
line_length = 11,
width = 184,
height = 110,
frame_count = 11,
slice = 11,
lines_per_file = 4,
shift = util.mul_shift(util.by_pixel(14, -2), scale),
direction_count = 16,
shift = {scale * 0.117188, scale * -1.06641},
scale = scale,
tint = tint2
}
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-idle-shadow-01.png",
"__base__/graphics/entity/biter/hr-biter-idle-shadow-02.png",
"__base__/graphics/entity/biter/hr-biter-idle-shadow-03.png",
"__base__/graphics/entity/biter/hr-biter-idle-shadow-04.png",
},
line_length = 11,
width = 362,
height = 216,
frame_count = 11,
slice = 11,
lines_per_file = 4,
shift = util.mul_shift(util.by_pixel(15, -1), scale),
direction_count = 16,
scale = 0.5 * scale,
draw_as_shadow = true,
}
},
}
}
end
@ -125,60 +509,313 @@ function biterdieanimation(scale, tint1, tint2)
layers=
{
{
width = 190,
height = 129,
filenames =
{
"__base__/graphics/entity/biter/biter-die-01.png",
"__base__/graphics/entity/biter/biter-die-02.png",
"__base__/graphics/entity/biter/biter-die-03.png",
"__base__/graphics/entity/biter/biter-die-04.png",
"__base__/graphics/entity/biter/biter-die-05.png",
"__base__/graphics/entity/biter/biter-die-06.png",
"__base__/graphics/entity/biter/biter-die-07.png",
"__base__/graphics/entity/biter/biter-die-08.png",
"__base__/graphics/entity/biter/biter-die-09.png",
"__base__/graphics/entity/biter/biter-die-10.png",
"__base__/graphics/entity/biter/biter-die-11.png",
"__base__/graphics/entity/biter/biter-die-12.png",
"__base__/graphics/entity/biter/biter-die-13.png",
"__base__/graphics/entity/biter/biter-die-14.png",
"__base__/graphics/entity/biter/biter-die-15.png",
"__base__/graphics/entity/biter/biter-die-16.png",
"__base__/graphics/entity/biter/biter-die-17.png",
},
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 276,
height = 202,
frame_count = 17,
direction_count = 16,
shift = {scale * 0.621094, scale * -0.1875},
shift= util.mul_shift(util.by_pixel(-2, -4), scale),
scale = scale,
stripes =
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/biter/biter-die-1.png",
width_in_frames = 9,
height_in_frames = 8
"__base__/graphics/entity/biter/hr-biter-die-01.png",
"__base__/graphics/entity/biter/hr-biter-die-02.png",
"__base__/graphics/entity/biter/hr-biter-die-03.png",
"__base__/graphics/entity/biter/hr-biter-die-04.png",
"__base__/graphics/entity/biter/hr-biter-die-05.png",
"__base__/graphics/entity/biter/hr-biter-die-06.png",
"__base__/graphics/entity/biter/hr-biter-die-07.png",
"__base__/graphics/entity/biter/hr-biter-die-08.png",
"__base__/graphics/entity/biter/hr-biter-die-09.png",
"__base__/graphics/entity/biter/hr-biter-die-10.png",
"__base__/graphics/entity/biter/hr-biter-die-11.png",
"__base__/graphics/entity/biter/hr-biter-die-12.png",
"__base__/graphics/entity/biter/hr-biter-die-13.png",
"__base__/graphics/entity/biter/hr-biter-die-14.png",
"__base__/graphics/entity/biter/hr-biter-die-15.png",
"__base__/graphics/entity/biter/hr-biter-die-16.png",
"__base__/graphics/entity/biter/hr-biter-die-17.png",
},
{
filename = "__base__/graphics/entity/biter/biter-die-2.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/biter/biter-die-3.png",
width_in_frames = 9,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/biter/biter-die-4.png",
width_in_frames = 8,
height_in_frames = 8
}
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 544,
height = 402,
frame_count = 17,
shift = util.mul_shift(util.by_pixel(0, -4), scale),
direction_count = 16,
scale = 0.5 * scale,
}
},
{
filename = "__base__/graphics/entity/biter/biter-die-mask1.png",
filenames =
{
"__base__/graphics/entity/biter/biter-die-mask1-01.png",
"__base__/graphics/entity/biter/biter-die-mask1-02.png",
"__base__/graphics/entity/biter/biter-die-mask1-03.png",
"__base__/graphics/entity/biter/biter-die-mask1-04.png",
"__base__/graphics/entity/biter/biter-die-mask1-05.png",
"__base__/graphics/entity/biter/biter-die-mask1-06.png",
"__base__/graphics/entity/biter/biter-die-mask1-07.png",
"__base__/graphics/entity/biter/biter-die-mask1-08.png",
"__base__/graphics/entity/biter/biter-die-mask1-09.png",
"__base__/graphics/entity/biter/biter-die-mask1-10.png",
"__base__/graphics/entity/biter/biter-die-mask1-11.png",
"__base__/graphics/entity/biter/biter-die-mask1-12.png",
"__base__/graphics/entity/biter/biter-die-mask1-13.png",
"__base__/graphics/entity/biter/biter-die-mask1-14.png",
"__base__/graphics/entity/biter/biter-die-mask1-15.png",
"__base__/graphics/entity/biter/biter-die-mask1-16.png",
"__base__/graphics/entity/biter/biter-die-mask1-17.png",
},
slice = 4,
lines_per_file = 4,
flags = { "mask" },
width = 120,
height = 109,
line_length = 4,
width = 198,
height = 166,
frame_count = 17,
direction_count = 16,
shift = {scale * 0.117188, scale * -0.574219},
shift = util.mul_shift(util.by_pixel(0, -22), scale),
scale = scale,
tint = tint1
tint = tint1,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-die-mask1-01.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-02.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-03.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-04.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-05.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-06.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-07.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-08.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-09.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-10.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-11.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-12.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-13.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-14.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-15.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-16.png",
"__base__/graphics/entity/biter/hr-biter-die-mask1-17.png",
},
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 398,
height = 328,
frame_count = 17,
shift = util.mul_shift(util.by_pixel(-1, -21), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filename = "__base__/graphics/entity/biter/biter-die-mask2.png",
filenames =
{
"__base__/graphics/entity/biter/biter-die-mask2-01.png",
"__base__/graphics/entity/biter/biter-die-mask2-02.png",
"__base__/graphics/entity/biter/biter-die-mask2-03.png",
"__base__/graphics/entity/biter/biter-die-mask2-04.png",
"__base__/graphics/entity/biter/biter-die-mask2-05.png",
"__base__/graphics/entity/biter/biter-die-mask2-06.png",
"__base__/graphics/entity/biter/biter-die-mask2-07.png",
"__base__/graphics/entity/biter/biter-die-mask2-08.png",
"__base__/graphics/entity/biter/biter-die-mask2-09.png",
"__base__/graphics/entity/biter/biter-die-mask2-10.png",
"__base__/graphics/entity/biter/biter-die-mask2-11.png",
"__base__/graphics/entity/biter/biter-die-mask2-12.png",
"__base__/graphics/entity/biter/biter-die-mask2-13.png",
"__base__/graphics/entity/biter/biter-die-mask2-14.png",
"__base__/graphics/entity/biter/biter-die-mask2-15.png",
"__base__/graphics/entity/biter/biter-die-mask2-16.png",
"__base__/graphics/entity/biter/biter-die-mask2-17.png",
},
slice = 4,
lines_per_file = 4,
flags = { "mask" },
width = 115,
height = 108,
line_length = 4,
width = 200,
height = 166,
frame_count = 17,
direction_count = 16,
shift = {scale * 0.128906, scale * -0.585938},
shift = util.mul_shift(util.by_pixel(-2, -22), scale),
scale = scale,
tint = tint2
}
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-die-mask2-01.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-02.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-03.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-04.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-05.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-06.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-07.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-08.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-09.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-10.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-11.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-12.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-13.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-14.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-15.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-16.png",
"__base__/graphics/entity/biter/hr-biter-die-mask2-17.png",
},
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 396,
height = 330,
frame_count = 17,
shift = util.mul_shift(util.by_pixel(-1, -22), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/biter/biter-die-shadow-01.png",
"__base__/graphics/entity/biter/biter-die-shadow-02.png",
"__base__/graphics/entity/biter/biter-die-shadow-03.png",
"__base__/graphics/entity/biter/biter-die-shadow-04.png",
"__base__/graphics/entity/biter/biter-die-shadow-05.png",
"__base__/graphics/entity/biter/biter-die-shadow-06.png",
"__base__/graphics/entity/biter/biter-die-shadow-07.png",
"__base__/graphics/entity/biter/biter-die-shadow-08.png",
"__base__/graphics/entity/biter/biter-die-shadow-09.png",
"__base__/graphics/entity/biter/biter-die-shadow-10.png",
"__base__/graphics/entity/biter/biter-die-shadow-11.png",
"__base__/graphics/entity/biter/biter-die-shadow-12.png",
"__base__/graphics/entity/biter/biter-die-shadow-13.png",
"__base__/graphics/entity/biter/biter-die-shadow-14.png",
"__base__/graphics/entity/biter/biter-die-shadow-15.png",
"__base__/graphics/entity/biter/biter-die-shadow-16.png",
"__base__/graphics/entity/biter/biter-die-shadow-17.png",
},
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 282,
height = 192,
frame_count = 17,
shift = util.mul_shift(util.by_pixel(4, 0), scale),
direction_count = 16,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/biter/hr-biter-die-shadow-01.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-02.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-03.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-04.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-05.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-06.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-07.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-08.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-09.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-10.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-11.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-12.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-13.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-14.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-15.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-16.png",
"__base__/graphics/entity/biter/hr-biter-die-shadow-17.png",
},
slice = 4,
lines_per_file = 4,
line_length = 4,
width = 564,
height = 384,
frame_count = 17,
shift = util.mul_shift(util.by_pixel(4, 0), scale),
direction_count = 16,
scale = 0.5 * scale,
draw_as_shadow = true,
}
},
}
}
end
function add_biter_die_animation(scale, tint1, tint2, corpse)
corpse.animation = biterdieanimation(scale, tint1, tint2)
corpse.dying_speed = 0.04
corpse.time_before_removed = 15 * 60 * 60
corpse.direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }
corpse.shuffle_directions_at_frame = 7
corpse.final_render_layer = "lower-object-above-shadow"
corpse.ground_patch_render_layer = "decals" -- "transport-belt-integration"
corpse.ground_patch_fade_in_delay = 1 / 0.02 -- in ticks; 1/dying_speed to delay the animation until dying animation finishes
corpse.ground_patch_fade_in_speed = 0.002
corpse.ground_patch_fade_out_start = 50 * 60
corpse.ground_patch_fade_out_duration = 20 * 60
local a = 1
local d = 0.9
corpse.ground_patch =
{
sheet =
{
filename = "__base__/graphics/entity/biter/blood-puddle-var-main.png",
flags = { "low-object" },
line_length = 4,
variation_count = 4,
frame_count = 1,
width = 84,
height = 68,
shift = util.by_pixel(1, 0),
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
scale = scale,
hr_version =
{
filename = "__base__/graphics/entity/biter/hr-blood-puddle-var-main.png",
flags = { "low-object" },
line_length = 4,
variation_count = 4,
frame_count = 1,
width = 164,
height = 134,
shift = util.by_pixel(-0.5,-0.5),
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
scale = 0.5 * scale
}
}
}
return corpse
end

View File

@ -1,14 +1,14 @@
require ("prototypes.entity.demo-spawner-animation")
require ("prototypes.entity.demo-biter-animations")
require ("prototypes.entity.demo-enemy-sounds")
require ("prototypes.entity.demo-enemy-autoplace-utils")
local enemy_autoplace = require ("prototypes.entity.demo-enemy-autoplace-utils")
require ("prototypes.entity.demo-biter-ai-settings")
smallbiterscale = 0.5
small_biter_tint1 = {r=0.56, g=0.46, b=0.42, a=0.65}
small_biter_tint2 = {r=1, g=0.63, b=0, a=0.4}
small_biter_scale = 0.5
small_biter_tint1 = {r=0.60, g=0.58, b=0.51, a=1}
small_biter_tint2 = {r=0.9 , g=0.83, b=0.54, a=1}
--biter_spawner_tint = {r=0.92, g=0.54, b=0, a=0.5}
biter_spawner_tint = {r=1.0, g=1.0, b=1.0, a=1.0}
biter_spawner_tint = {r=0.92, g=0.54, b=0, a=0.5}
data:extend(
{
@ -21,6 +21,13 @@ data:extend(
max_health = 15,
order = "b-b-a",
subgroup="enemies",
resistances =
{
{
type = "acid",
percent = 100
}
},
healing_per_tick = 0.01,
collision_box = {{-0.2, -0.2}, {0.2, 0.2}},
selection_box = {{-0.4, -0.7}, {0.7, 0.4}},
@ -29,14 +36,13 @@ data:extend(
type = "projectile",
range = 0.5,
cooldown = 35,
ammo_category = "melee",
ammo_type = make_unit_melee_ammo_type(7),
sound = make_biter_roars(0.4),
animation = biterattackanimation(smallbiterscale, small_biter_tint1, small_biter_tint2)
animation = biterattackanimation(small_biter_scale, small_biter_tint1, small_biter_tint2)
},
vision_distance = 30,
movement_speed = 0.2,
distance_per_frame = 0.1,
distance_per_frame = 0.125,
pollution_to_join_attack = 200,
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
@ -45,9 +51,12 @@ data:extend(
dying_explosion = "blood-explosion-small",
dying_sound = make_biter_dying_sounds(0.4),
working_sound = make_biter_calls(0.3),
run_animation = biterrunanimation(smallbiterscale, small_biter_tint1, small_biter_tint2)
run_animation = biterrunanimation(small_biter_scale, small_biter_tint1, small_biter_tint2),
--idle_animation = biteridleanimation(small_biter_scale, small_biter_tint1, small_biter_tint2),
ai_settings = biter_ai_settings
},
add_biter_die_animation(small_biter_scale, small_biter_tint1, small_biter_tint2,
{
type = "corpse",
name = "small-biter-corpse",
@ -57,12 +66,9 @@ data:extend(
selectable_in_game = false,
subgroup="corpses",
order = "c[corpse]-a[biter]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-repairable", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = biterdieanimation(smallbiterscale, small_biter_tint1, small_biter_tint2)
},
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-repairable", "not-on-map"}
}),
{
type = "unit-spawner",
@ -115,6 +121,7 @@ data:extend(
},
healing_per_tick = 0.02,
collision_box = {{-3.2, -2.2}, {2.2, 2.2}},
map_generator_bounding_box = {{-4.2, -3.2}, {3.2, 3.2}},
selection_box = {{-3.5, -2.5}, {2.5, 2.5}},
-- in ticks per 1 pu
pollution_absorbtion_absolute = 20,
@ -130,6 +137,10 @@ data:extend(
spawner_idle_animation(2, biter_spawner_tint),
spawner_idle_animation(3, biter_spawner_tint)
},
integration =
{
sheet = spawner_integration()
},
result_units = (function()
local res = {}
res[1] = {"small-biter", {{0.0, 0.3}, {0.6, 0.0}}}
@ -150,7 +161,7 @@ data:extend(
spawning_spacing = 3,
max_spawn_shift = 0,
max_richness_for_spawn_shift = 100,
autoplace = enemy_spawner_autoplace(0),
autoplace = enemy_autoplace.enemy_spawner_autoplace(0),
call_for_help_radius = 50
},
@ -174,6 +185,10 @@ data:extend(
spawner_die_animation(1, biter_spawner_tint),
spawner_die_animation(2, biter_spawner_tint),
spawner_die_animation(3, biter_spawner_tint)
},
ground_patch =
{
sheet = spawner_integration()
}
}
})

View File

@ -1,87 +1,193 @@
function enemy_autoplace(distance, order, is_turret)
-- tier_from_start where biters will be at max size
local optimal_tier = 21 + 2.6 * distance
local ret =
{
sharpness = 0.4,
control = "enemy-base",
order = order,
richness_multiplier = 1,
richness_base = 0,
--richness_multiplier_distance_bonus = 1,
force = "enemy",
random_probability_penalty = 0.05,
peaks =
{
{
influence = 0,
richness_influence = 40,
tier_from_start_optimal = optimal_tier,
tier_from_start_top_property_limit = optimal_tier,
tier_from_start_max_range = 2 * optimal_tier
},
{
influence = -1,
starting_area_weight_optimal = 1,
starting_area_weight_range = 0,
starting_area_weight_max_range = 2
},
{
influence = 0.1,
noise_layer = "enemy-base",
noise_octaves_difference = -1.7,
noise_persistence = 0.5
},
-- increase the size when moving further away
{
influence = 0.2,
noise_layer = "enemy-base",
noise_octaves_difference = -1.7,
noise_persistence = 0.5,
tier_from_start_optimal = optimal_tier,
tier_from_start_top_property_limit = optimal_tier,
tier_from_start_max_range = 2 * optimal_tier
},
{
influence = 0.001 * distance -- tieberaker
}
local noise = require("noise")
local control_name = "enemy-base"
local enemy_base_control_setting = noise.get_control_setting(control_name)
local tne = noise.to_noise_expression
local litexp = noise.literal_expression
local onehalf_exp = tne(1)/2
local onethird_exp = tne(1)/3
local function generate_enemy_base_probability_expression()
local seed1 = 123
local pi_over_3 = tne(math.pi)/3
-- enemy_base_border_width gives the width of the border in which probability ramps up from 0 to 1.
-- i.e. slope = 1 / border_width, and height = radius / border_width
-- In practice, a probabilty of about 1/9 will result in a solid carpet of biter bases,
-- which is why this border width is so high (ignoring blobbiness, most of the inner part of the 'border' would be solid biter bases)
local enemy_base_border_width = 30
-- Spots per square meter (should be a very small fraction):
local frequency_expression = noise.max(0, noise.var("enemy-base-frequency"))
local spot_radius_expression = noise.max(0, noise.var("enemy-base-radius"))
-- multiply by spot_radius_expression to keep slope constant:
local spot_height_expression = spot_radius_expression / enemy_base_border_width
local spot_quantity_expression = pi_over_3 * spot_radius_expression * spot_radius_expression * spot_height_expression
-- spot_quantity_expression = noise.compile_time_log("Spot quantity: ", spot_quantity_expression)
local density_expression = spot_quantity_expression * frequency_expression
-- density_expression = noise.compile_time_log("Density: ", density_expression)
local basement_value = -1000
local spots = tne{
type = "function-application",
function_name = "spot-noise",
arguments = {
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
region_size = tne(512),
candidate_point_count = tne(100),
density_expression = litexp(density_expression), -- low-frequency noise evaluate for an entire region
spot_quantity_expression = litexp(spot_quantity_expression), -- used to figure out where spots go
hard_region_target_quantity = tne(false), -- it's fine for large spots to push region quantity past the target
spot_radius_expression = litexp(spot_radius_expression),
spot_favorability_expression = litexp(1),
basement_value = tne(basement_value),
maximum_spot_basement_radius = tne(128)
}
}
-- Prefer bases on resources
-- for i, resource in ipairs({"copper-ore", "iron-ore", "coal"}) do
-- ret.peaks[#ret.peaks + 1] =
-- {
-- influence = 0.04,
-- noise_layer = resource,
-- noise_octaves_difference = -0.85,
-- noise_persistence = 0.4,
-- min_influence = 0,
-- }
-- end
local blob_amplitude_multiplier = 0.2 * spot_height_expression * (0.1 + 0.9 * noise.clamp(noise.var("distance") / 3000, 0, 1))
local blobs = tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments = {
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/8),
output_scale = tne(1)
}
} + tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments = {
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/24),
output_scale = tne(1)
}
} + tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments = {
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/64),
output_scale = tne(2)
}
}
-- if data.is_demo then
-- ret.peaks[#ret.peaks + 1] =
-- {
-- influence = 0.04,
-- noise_layer = "crude-oil",
-- noise_octaves_difference = -1,
-- noise_persistence = 0.4,
-- min_influence = 0,
-- }
-- end
blobs = (blobs - 0.5) * blob_amplitude_multiplier - 0.3
if is_turret then
ret.max_probability = 0.2;
end
local starting_area_sharpness = 20
local starting_area_hole = noise.min(0, starting_area_sharpness * (noise.var("distance") / noise.var("starting_area_radius") - 1))
return ret
return spots + blobs + starting_area_hole
end
function enemy_spawner_autoplace(distance)
return enemy_autoplace(distance, "b[enemy]-a[spawner]", false)
data:extend{
{
type = "noise-expression",
name = "enemy-base-intensity",
expression = noise.define_noise_function( function(x,y,tile,map)
-- biter placement stops increasing in "intensity" after 75 chunks
return noise.clamp(tile.distance, 0, 75*32) / 325
end)
},
{
type = "noise-expression",
name = "enemy-base-radius",
expression = noise.define_noise_function( function(x,y,tile,map)
--return enemy_base_control_setting.size_multiplier ^ onehalf_exp * 20
return enemy_base_control_setting.size_multiplier ^ onehalf_exp * (tne(15) + 4 * noise.var("enemy-base-intensity"))
end)
},
{
type = "noise-expression",
name = "enemy-base-frequency",
expression = noise.define_noise_function( function(x,y,tile,map)
local bases_per_km2 = 10 + 3 * noise.var("enemy-base-intensity")
return enemy_base_control_setting.frequency_multiplier * bases_per_km2 / 1000000
end)
},
{
type = "noise-expression",
name = "enemy_base_probability",
expression = generate_enemy_base_probability_expression()
},
}
local enemy_random_seed = 1
local function new_random_seed()
enemy_random_seed = enemy_random_seed + 1
return enemy_random_seed
end
function enemy_worm_autoplace(distance)
return enemy_autoplace(distance, "b[enemy]-b[worm]", true)
local function enemy_autoplace(params)
distance_factor = params.distance_factor or 1
order = params.order or "b[enemy]-misc"
is_turret = params.is_turret or false
local distance_unit = 312
local distance_outside_starting_area = noise.var("distance") - noise.var("starting_area_radius")
-- Units with a higher distance_factor will appear farther out by one
-- distance_unit per distance_factor
local distance_height_multiplier = noise.max(0, 1 + (distance_outside_starting_area - distance_unit * distance_factor) * 0.002 * distance_factor)
local probability_expression = noise.var("enemy_base_probability") * distance_height_multiplier
-- limit probability so that it never quite reaches 1,
-- because that would result in stupid-looking squares of biter bases:
probability_expression = noise.min(probability_expression, 0.25 + distance_factor * 0.05)
-- Add randomness to the probability so that there's a little bit of a gradient
-- between different units:
probability_expression = noise.random_penalty(probability_expression, 0.1, {
x = noise.var("x") + new_random_seed() -- Include distance_factor in random seed!
})
-- log("Probability expression for " .. params.order .. "#" .. distance_factor .. ":")
-- log(tostring(expression_to_ascii_math(probability_expression)))
local richness_expression = tne(1)
return
{
control = control_name,
order = order,
force = "enemy",
probability_expression = probability_expression,
richness_expression = richness_expression
}
end
local function enemy_spawner_autoplace(distance)
return enemy_autoplace{
distance_factor = distance,
order = "b[enemy]-a[spawner]"
}
end
local function enemy_worm_autoplace(distance)
return enemy_autoplace{
distance_factor = distance,
order = "b[enemy]-b[worm]",
is_turret = true
}
end
return
{
sharpness = sharpness,
control_name = control_name,
enemy_autoplace = enemy_autoplace,
enemy_spawner_autoplace = enemy_spawner_autoplace,
enemy_worm_autoplace = enemy_worm_autoplace
}

View File

@ -84,37 +84,54 @@ end
function make_spitter_roars(volume)
return
{
layers =
{
filename = "__base__/sound/creatures/spitter-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-3.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-4.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-5.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-6.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-7.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/spitter-8.ogg",
volume = volume
[0] =
{
{
filename = "__base__/sound/creatures/Spiters_1_1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_2_1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_3_1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_4_1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_5_1.ogg",
volume = volume
}
},
[1] =
{
{
filename = "__base__/sound/creatures/Spiters_1_2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_2_2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_3_2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_4_2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/Spiters_5_2.ogg",
volume = volume
}
}
}
}
end
@ -149,22 +166,82 @@ end
function make_worm_roars(volume)
return
{
variations =
{
filename = "__base__/sound/creatures/worm-roar-1.ogg",
volume = volume
{
filename = "__base__/sound/creatures/worm-roar-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-3.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-4.ogg",
volume = volume
}
},
audible_distance_modifier = 2.0
}
end
function make_worm_roar_alternative(volume)
return
{
variations =
{
filename = "__base__/sound/creatures/worm-roar-2.ogg",
volume = volume
{
filename = "__base__/sound/creatures/worm-roar-alt-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-alt-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-alt-3.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-alt-4.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-roar-alt-5.ogg",
volume = volume
}
},
audible_distance_modifier = 2.0
}
end
function make_worm_breath(volume)
return
{
variations =
{
filename = "__base__/sound/creatures/worm-roar-3.ogg",
volume = volume
{
filename = "__base__/sound/creatures/worm-breathe-01.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-breathe-02.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-breathe-03.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-breathe-04.ogg",
volume = volume
}
},
{
filename = "__base__/sound/creatures/worm-roar-4.ogg",
volume = volume
}
audible_distance_modifier = 2.0
}
end
@ -190,6 +267,98 @@ function make_worm_dying_sounds(volume)
{
filename = "__base__/sound/creatures/worm-death-5.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-death-6.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-death-7.ogg",
volume = volume
}
}
end
function make_worm_dying_small_sounds(volume)
return
{
{
filename = "__base__/sound/creatures/worm-death-small-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-death-small-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-death-small-3.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-death-small-4.ogg",
volume = volume
}
}
end
function make_worm_fold_sounds(volume)
return
{
{
filename = "__base__/sound/creatures/worm-folding-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-folding-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-folding-3.ogg",
volume = volume
}
}
end
function make_worm_standup_sounds(volume)
return
{
{
filename = "__base__/sound/creatures/worm-standup-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-3.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-4.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-5.ogg",
volume = volume
}
}
end
function make_worm_standup_small_sounds(volume)
return
{
{
filename = "__base__/sound/creatures/worm-standup-small-1.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-small-2.ogg",
volume = volume
},
{
filename = "__base__/sound/creatures/worm-standup-small-3.ogg",
volume = volume
}
}
end

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ data:extend(
icon = "__base__/graphics/icons/electric-mining-drill.png",
icon_size = 32,
flags = {"placeable-neutral", "player-creation"},
minable = {mining_time = 1, result = "electric-mining-drill"},
minable = {mining_time = 0.3, result = "electric-mining-drill"},
max_health = 300,
resource_categories = {"basic-solid"},
corpse = "big-remnants",
@ -168,6 +168,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1.5, -7.5),
draw_as_shadow = true,
run_mode = "forward-then-backward",
hr_version =
{
@ -181,6 +182,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1.25, -7.25),
draw_as_shadow = true,
run_mode = "forward-then-backward",
scale = 0.5
}
@ -197,6 +199,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(6, -0.5),
draw_as_shadow = true,
run_mode = "forward-then-backward",
hr_version =
{
@ -210,6 +213,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(6.25, -0.25),
draw_as_shadow = true,
run_mode = "forward-then-backward",
scale = 0.5
}
@ -226,6 +230,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1, 2.5),
draw_as_shadow = true,
run_mode = "forward-then-backward",
hr_version =
{
@ -239,6 +244,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1, 2.5),
draw_as_shadow = true,
run_mode = "forward-then-backward",
scale = 0.5
}
@ -255,6 +261,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1, -0.5),
draw_as_shadow = true,
run_mode = "forward-then-backward",
hr_version =
{
@ -268,6 +275,7 @@ data:extend(
animation_speed = 0.5,
direction_count = 1,
shift = util.by_pixel(1.25, -0.25),
draw_as_shadow = true,
run_mode = "forward-then-backward",
scale = 0.5
}
@ -279,7 +287,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-patch.png",
line_length = 1,
width = 100,
height = 111,
frame_count = 1,
@ -289,7 +296,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-N-patch.png",
line_length = 1,
width = 200,
height = 222,
frame_count = 1,
@ -302,7 +308,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-patch.png",
line_length = 1,
width = 100,
height = 110,
frame_count = 1,
@ -312,7 +317,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-E-patch.png",
line_length = 1,
width = 200,
height = 219,
frame_count = 1,
@ -325,7 +329,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-patch.png",
line_length = 1,
width = 100,
height = 113,
frame_count = 1,
@ -335,7 +338,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-S-patch.png",
line_length = 1,
width = 200,
height = 226,
frame_count = 1,
@ -348,7 +350,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-patch.png",
line_length = 1,
width = 100,
height = 108,
frame_count = 1,
@ -358,7 +359,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-W-patch.png",
line_length = 1,
width = 200,
height = 220,
frame_count = 1,
@ -375,7 +375,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 110,
height = 98,
frame_count = 1,
@ -386,7 +385,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-N-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 220,
height = 197,
frame_count = 1,
@ -400,7 +398,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 112,
height = 98,
frame_count = 1,
@ -411,7 +408,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-E-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 224,
height = 198,
frame_count = 1,
@ -425,7 +421,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 110,
height = 98,
frame_count = 1,
@ -436,7 +431,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-S-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 220,
height = 197,
frame_count = 1,
@ -450,7 +444,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 110,
height = 98,
frame_count = 1,
@ -461,7 +454,6 @@ data:extend(
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-W-patch-shadow.png",
flags = { "shadow" },
line_length = 1,
width = 220,
height = 197,
frame_count = 1,
@ -596,7 +588,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-window-background.png",
line_length = 1,
width = 72,
height = 54,
frame_count = 1,
@ -606,7 +597,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-N-window-background.png",
line_length = 1,
width = 142,
height = 107,
frame_count = 1,
@ -619,7 +609,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-window-background.png",
line_length = 1,
width = 51,
height = 74,
frame_count = 1,
@ -629,7 +618,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-E-window-background.png",
line_length = 1,
width = 104,
height = 147,
frame_count = 1,
@ -642,7 +630,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-window-background.png",
line_length = 1,
width = 71,
height = 44,
frame_count = 1,
@ -652,7 +639,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-S-window-background.png",
line_length = 1,
width = 141,
height = 86,
frame_count = 1,
@ -665,7 +651,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-window-background.png",
line_length = 1,
width = 41,
height = 69,
frame_count = 1,
@ -675,7 +660,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-W-window-background.png",
line_length = 1,
width = 80,
height = 137,
frame_count = 1,
@ -693,7 +677,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-fluid-flow.png",
line_length = 1,
width = 68,
height = 50,
frame_count = 1,
@ -703,7 +686,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-N-fluid-flow.png",
line_length = 1,
width = 136,
height = 99,
frame_count = 1,
@ -716,7 +698,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-fluid-flow.png",
line_length = 1,
width = 41,
height = 70,
frame_count = 1,
@ -726,7 +707,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-E-fluid-flow.png",
line_length = 1,
width = 82,
height = 139,
frame_count = 1,
@ -739,7 +719,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-fluid-flow.png",
line_length = 1,
width = 68,
height = 40,
frame_count = 1,
@ -749,7 +728,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-S-fluid-flow.png",
line_length = 1,
width = 136,
height = 80,
frame_count = 1,
@ -762,7 +740,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-fluid-flow.png",
line_length = 1,
width = 42,
height = 70,
frame_count = 1,
@ -772,7 +749,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-W-fluid-flow.png",
line_length = 1,
width = 83,
height = 140,
frame_count = 1,
@ -790,7 +766,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-N-fluid-background.png",
line_length = 1,
width = 70,
height = 48,
frame_count = 1,
@ -800,7 +775,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-N-fluid-background.png",
line_length = 1,
width = 138,
height = 94,
frame_count = 1,
@ -813,7 +787,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-E-fluid-background.png",
line_length = 1,
width = 42,
height = 70,
frame_count = 1,
@ -823,7 +796,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-E-fluid-background.png",
line_length = 1,
width = 84,
height = 138,
frame_count = 1,
@ -836,7 +808,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-S-fluid-background.png",
line_length = 1,
width = 70,
height = 40,
frame_count = 1,
@ -846,7 +817,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-S-fluid-background.png",
line_length = 1,
width = 138,
height = 80,
frame_count = 1,
@ -859,7 +829,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/electric-mining-drill-W-fluid-background.png",
line_length = 1,
width = 42,
height = 69,
frame_count = 1,
@ -869,7 +838,6 @@ data:extend(
{
priority = "extra-high",
filename = "__base__/graphics/entity/electric-mining-drill/hr-electric-mining-drill-W-fluid-background.png",
line_length = 1,
width = 83,
height = 137,
frame_count = 1,
@ -890,7 +858,6 @@ data:extend(
usage_priority = "secondary-input"
},
energy_usage = "90kW",
mining_power = 3,
resource_searching_radius = 2.49,
vector_to_place_result = {0, -1.85},
module_specification =
@ -905,7 +872,7 @@ data:extend(
},
monitor_visualization_tint = {r=78, g=173, b=255},
fast_replaceable_group = "mining-drill",
circuit_wire_connection_points = circuit_connector_definitions["electric-mining-drill"].points,
circuit_connector_sprites = circuit_connector_definitions["electric-mining-drill"].sprites,
circuit_wire_max_distance = default_circuit_wire_max_distance
@ -917,12 +884,12 @@ data:extend(
icon_size = 32,
flags = {"placeable-neutral", "player-creation"},
resource_categories = {"basic-solid"},
minable = {mining_time = 1, result = "burner-mining-drill"},
minable = {mining_time = 0.3, result = "burner-mining-drill"},
max_health = 150,
corpse = "medium-remnants",
collision_box = {{ -0.7, -0.7}, {0.7, 0.7}},
selection_box = {{ -1, -1}, {1, 1}},
mining_speed = 0.35,
mining_speed = 0.25,
working_sound =
{
sound =
@ -932,6 +899,7 @@ data:extend(
}
},
vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
allowed_effects = {}, -- no beacon effects on the burner drill
energy_source =
{
type = "burner",
@ -948,8 +916,7 @@ data:extend(
}
}
},
energy_usage = "300kW",
mining_power = 2.5,
energy_usage = "150kW",
animations =
{
north =
@ -967,7 +934,7 @@ data:extend(
animation_speed = 0.5,
run_mode = "forward-then-backward",
hr_version =
{
{
priority = "high",
width = 173,
height = 188,
@ -992,7 +959,7 @@ data:extend(
run_mode = "forward-then-backward",
draw_as_shadow = true,
hr_version =
{
{
priority = "high",
width = 217,
height = 150,
@ -1023,7 +990,7 @@ data:extend(
animation_speed = 0.5,
run_mode = "forward-then-backward",
hr_version =
{
{
priority = "high",
width = 185,
height = 168,
@ -1048,7 +1015,7 @@ data:extend(
run_mode = "forward-then-backward",
draw_as_shadow = true,
hr_version =
{
{
priority = "high",
width = 185,
height = 128,
@ -1079,7 +1046,7 @@ data:extend(
animation_speed = 0.5,
run_mode = "forward-then-backward",
hr_version =
{
{
priority = "high",
width = 174,
height = 174,
@ -1104,7 +1071,7 @@ data:extend(
run_mode = "forward-then-backward",
draw_as_shadow = true,
hr_version =
{
{
priority = "high",
width = 174,
height = 137,
@ -1135,7 +1102,7 @@ data:extend(
animation_speed = 0.5,
run_mode = "forward-then-backward",
hr_version =
{
{
priority = "high",
width = 180,
height = 176,
@ -1160,7 +1127,7 @@ data:extend(
run_mode = "forward-then-backward",
draw_as_shadow = true,
hr_version =
{
{
priority = "high",
width = 176,
height = 130,
@ -1181,7 +1148,7 @@ data:extend(
resource_searching_radius = 0.99,
vector_to_place_result = {-0.5, -1.3},
fast_replaceable_group = "mining-drill",
circuit_wire_connection_points = circuit_connector_definitions["burner-mining-drill"].points,
circuit_connector_sprites = circuit_connector_definitions["burner-mining-drill"].sprites,
circuit_wire_max_distance = default_circuit_wire_max_distance

View File

@ -10,6 +10,14 @@ function bloodparticlescale()
return 1
end
function watertint()
return {r = 0.1, g = 0.6, b = 0.85}
end
function waterparticlescale()
return 1
end
data:extend(
{
{
@ -33,7 +41,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-2.png",
@ -49,7 +57,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-3.png",
@ -65,7 +73,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-4.png",
@ -81,7 +89,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
},
shadows =
@ -100,7 +108,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-shadow-2.png",
@ -116,7 +124,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-shadow-3.png",
@ -132,7 +140,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/iron-ore-particle/iron-ore-particle-shadow-4.png",
@ -148,7 +156,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
}
},
@ -173,7 +181,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-2.png",
@ -189,7 +197,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-3.png",
@ -205,7 +213,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-4.png",
@ -221,7 +229,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
},
shadows =
@ -240,7 +248,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-shadow-2.png",
@ -256,7 +264,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-shadow-3.png",
@ -272,7 +280,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/copper-ore-particle/copper-ore-particle-shadow-4.png",
@ -288,7 +296,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
}
},
@ -313,7 +321,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-2.png",
@ -329,7 +337,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-3.png",
@ -345,7 +353,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-4.png",
@ -361,7 +369,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
},
shadows =
@ -380,7 +388,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-shadow-2.png",
@ -396,7 +404,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-shadow-3.png",
@ -412,7 +420,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/stone-particle/stone-particle-shadow-4.png",
@ -428,7 +436,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
}
},
@ -453,7 +461,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-2.png",
@ -469,7 +477,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-3.png",
@ -485,7 +493,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-4.png",
@ -501,7 +509,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
},
shadows =
@ -520,7 +528,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-shadow-2.png",
@ -536,7 +544,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-shadow-3.png",
@ -552,7 +560,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
},
{
filename = "__base__/graphics/entity/coal-particle/coal-particle-shadow-4.png",
@ -568,7 +576,7 @@ data:extend(
height = 32,
frame_count = 1,
scale = 0.5
}
}
}
}
},
@ -1486,119 +1494,274 @@ data:extend(
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-01.png",
priority = "extra-high",
width = 5,
height = 6,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(0,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-01.png",
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-02.png",
priority = "extra-high",
width = 4,
height = 3,
frame_count = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-02.png",
line_length = 6,
width = 8,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-03.png",
priority = "extra-high",
width = 4,
height = 7,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-03.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-04.png",
priority = "extra-high",
width = 3,
height = 3,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-04.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,-0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-05.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-05.png",
line_length = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-06.png",
priority = "extra-high",
width = 7,
height = 3,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-06.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-07.png",
priority = "extra-high",
width = 5,
height = 5,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-07.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-08.png",
priority = "extra-high",
width = 9,
height = 10,
frame_count = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(2,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-08.png",
line_length = 6,
width = 10,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(1.5,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-09.png",
priority = "extra-high",
width = 7,
height = 4,
frame_count = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(2,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-09.png",
width = 10,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(1.5,-0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-10.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-10.png",
width = 10,
height = 10,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0.5,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-11.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-11.png",
width = 8,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(1,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-12.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint()
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-13.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
scale = bloodparticlescale(),
tint = bloodtint()
tint = bloodtint(),
shift = util.by_pixel(0,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-12.png",
line_length = 6,
width = 8,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = bloodtint(),
shift = util.by_pixel(0,0)
}
}
},
shadows =
@ -1606,119 +1769,272 @@ data:extend(
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-01.png",
priority = "extra-high",
width = 5,
height = 6,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(0,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-01.png",
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-02.png",
priority = "extra-high",
width = 4,
height = 3,
frame_count = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-02.png",
line_length = 6,
width = 8,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-03.png",
priority = "extra-high",
width = 4,
height = 7,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-03.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-04.png",
priority = "extra-high",
width = 3,
height = 3,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-04.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,-0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-05.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-05.png",
line_length = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-06.png",
priority = "extra-high",
width = 7,
height = 3,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-06.png",
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-07.png",
priority = "extra-high",
width = 5,
height = 5,
frame_count = 6,
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,1),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-07.png",
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-08.png",
priority = "extra-high",
width = 9,
height = 10,
frame_count = 6,
width = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(2,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-08.png",
line_length = 6,
width = 10,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(1.5,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-09.png",
priority = "extra-high",
width = 7,
width = 6,
height = 4,
frame_count = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(2,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-09.png",
width = 10,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(1.5,-0.5)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-10.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
width = 6,
height = 6,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-10.png",
width = 10,
height = 10,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0.5,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-11.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(1,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-11.png",
width = 8,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(1,0)
}
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-12.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
height = 4,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint()
},
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-13.png",
priority = "extra-high",
width = 4,
height = 5,
frame_count = 6,
scale = bloodparticlescale(),
tint = shadowtint()
tint = shadowtint(),
shift = util.by_pixel(0,0),
hr_version =
{
filename = "__base__/graphics/entity/blood-particle/hr-blood-particle-12.png",
line_length = 6,
width = 8,
height = 8,
line_length = 6,
frame_count = 12,
scale = bloodparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0,0)
}
}
}
},
@ -2803,6 +3119,45 @@ data:extend(
}
}
}
},
{
type = "particle",
name = "shallow-water-droplet-particle",
flags = {"not-on-map"},
life_time = 60,
pictures =
{
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-01.png",
priority = "extra-high",
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = waterparticlescale(),
tint = watertint(),
shift = util.by_pixel(0,1)
}
},
shadows =
{
{
filename = "__base__/graphics/entity/blood-particle/blood-particle-01.png",
priority = "extra-high",
width = 4,
height = 4,
line_length = 6,
frame_count = 12,
scale = waterparticlescale(),
tint = shadowtint(),
shift = util.by_pixel(0,1)
}
},
-- ended_in_water_trigger_effect =
-- {
-- type = "create-entity",
-- entity_name = "water-splash"
-- }
}
}
)

View File

@ -1,5 +1,6 @@
pipecoverspictures = function()
return {
return
{
north =
{
layers =

View File

@ -1,4 +1,4 @@
playeranimations =
playeranimations =
{
level1 =
{
@ -191,73 +191,6 @@ playeranimations =
scale = 0.5
}
},
mining_hands =
{
filename = "__base__/graphics/entity/player/level1_mining_hands.png",
width = 48,
height = 54,
shift = util.by_pixel(0.0,-12.0),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
hr_version =
{
filename = "__base__/graphics/entity/player/hr-level1_mining_hands.png",
width = 94,
height = 106,
shift = util.by_pixel(0.0,-12.5),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
scale = 0.5
}
},
mining_hands_mask =
{
filename = "__base__/graphics/entity/player/level1_mining_hands_mask.png",
width = 38,
height = 46,
shift = util.by_pixel(0.0,-16.0),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/player/hr-level1_mining_hands_mask.png",
width = 76,
height = 90,
shift = util.by_pixel(0.0,-16.0),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
apply_runtime_tint = true,
scale = 0.5
}
},
mining_hands_shadow =
{
filename = "__base__/graphics/entity/player/level1_mining_hands_shadow.png",
width = 48,
height = 34,
shift = util.by_pixel(0.0,1.0),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
draw_as_shadow = true,
hr_version =
{
filename = "__base__/graphics/entity/player/hr-level1_mining_hands_shadow.png",
width = 94,
height = 66,
shift = util.by_pixel(0.0,1.0),
frame_count = 14,
direction_count = 8,
animation_speed = 0.6,
draw_as_shadow = true,
scale = 0.5
}
},
mining_tool =
{
stripes =

View File

@ -1,70 +0,0 @@
data:extend(
{
{
type = "projectile",
name = "acid-projectile-purple",
flags = {"not-on-map"},
acceleration = 0.005,
action =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "play-sound",
sound =
{
{
filename = "__base__/sound/creatures/projectile-acid-burn-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-2.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-1.ogg",
volume = 0.8
},
{
filename = "__base__/sound/creatures/projectile-acid-burn-long-2.ogg",
volume = 0.8
}
}
},
{
type = "create-entity",
entity_name = "acid-splash-purple"
},
{
type = "damage",
damage = {amount = 10, type = "acid"}
}
}
}
},
animation =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple.png",
line_length = 5,
width = 16,
height = 18,
frame_count = 33,
priority = "high"
},
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
line_length = 5,
width = 28,
height = 16,
frame_count = 33,
priority = "high",
shift = {-0.09, 0.395}
},
rotatable = false
}
})

View File

@ -25,7 +25,7 @@ rail_pictures_internal = function(elems)
{
filename = string.format("__base__/graphics/entity/%s/%s-%s-%s.png", dashkey, dashkey, key[2], elem[2]),
priority = elem.priority or "extra-high",
flags = elem.mipmap and { "icon" } or { "low-object" },
flags = elem.mipmap and { "trilinear-filtering" } or { "low-object" },
width = key[3],
height = key[4],
shift = {key[5], key[6]},
@ -34,7 +34,7 @@ rail_pictures_internal = function(elems)
{
filename = string.format("__base__/graphics/entity/%s/hr-%s-%s-%s.png", dashkey, dashkey, key[2], elem[2]),
priority = elem.priority or "extra-high",
flags = elem.mipmap and { "icon" } or { "low-object" },
flags = elem.mipmap and { "trilinear-filtering" } or { "low-object" },
width = key[3]*2,
height = key[4]*2,
shift = {key[5], key[6]},
@ -66,17 +66,17 @@ rail_pictures_internal = function(elems)
scale = 0.5
}
},
{
{
filename = "__base__/graphics/entity/rail-endings/rail-endings-metals.png",
priority = "high",
flags = { "icon" },
flags = { "trilinear-filtering" },
width = 128,
height = 128,
hr_version =
{
filename = "__base__/graphics/entity/rail-endings/hr-rail-endings-metals.png",
priority = "high",
flags = { "icon" },
flags = { "trilinear-filtering" },
width = 256,
height = 256,
scale = 0.5

View File

@ -24,6 +24,8 @@ data:extend(
final_render_layer = "remnants",
subgroup = "remnants",
order="d[remnants]-a[generic]-c[big]",
remove_on_entity_placement = false,
remove_on_tile_placement = false,
animation =
{
{
@ -74,6 +76,8 @@ data:extend(
order="d[remnants]-a[generic]-b[medium]",
time_before_removed = 60 * 60 * 15, -- 15 minutes
final_render_layer = "remnants",
remove_on_entity_placement = false,
remove_on_tile_placement = false,
animation =
{
{
@ -124,6 +128,8 @@ data:extend(
order="d[remnants]-a[generic]-a[small]",
time_before_removed = 60 * 60 * 15, -- 15 minutes
final_render_layer = "remnants",
remove_on_entity_placement = false,
remove_on_tile_placement = false,
animation =
{
{
@ -167,7 +173,8 @@ data:extend(
flags = {"placeable-neutral", "building-direction-8-way", "not-on-map"},
subgroup = "remnants",
order="d[remnants]-b[rail]-a[straight]",
selection_box = {{-0.6, -0.8}, {0.6, 0.8}},
collision_box = {{-0.7, -0.8}, {0.7, 0.8}},
selection_box = {{-0.7, -0.8}, {0.7, 0.8}},
selectable_in_game = false,
tile_width = 2,
tile_height = 2,
@ -184,7 +191,8 @@ data:extend(
flags = {"placeable-neutral", "building-direction-8-way", "not-on-map"},
subgroup = "remnants",
order="d[remnants]-b[rail]-b[curved]",
collision_box = {{-1, -1}, {1, 1}},
collision_box = {{-0.75, -0.55}, {0.75, 1.6}},
secondary_collision_box = {{-0.65, -2.43}, {0.65, 2.43}},
selection_box = {{-1.7, -0.8}, {1.7, 0.8}},
selectable_in_game = false,
tile_width = 4,
@ -204,6 +212,7 @@ data:extend(
flags = {"placeable-neutral"},
subgroup = "wrecks",
order = "d[remnants]-d[ship-wreck]-a[big]-a",
map_color = {r = 0, g = 0.365, b = 0.58, a = 1},
max_health = 50,
collision_box = {{-2.2, -1.5}, {2.2, 1.5}},
selection_box = {{-2.7, -1.5}, {2.7, 1.5}},
@ -226,6 +235,7 @@ data:extend(
flags = {"placeable-neutral"},
subgroup = "wrecks",
order = "d[remnants]-d[ship-wreck]-a[big]-b",
map_color = {r = 0, g = 0.365, b = 0.58, a = 1},
max_health = 50,
collision_box = {{-1.4, -1.2}, {1.4, 1.2}},
selection_box = {{-2, -1.5}, {2, 1.5}},
@ -248,6 +258,7 @@ data:extend(
flags = {"placeable-neutral"},
subgroup = "wrecks",
order = "d[remnants]-d[ship-wreck]-a[big]-c",
map_color = {r = 0, g = 0.365, b = 0.58, a = 1},
max_health = 50,
collision_box = {{-0.9, -0.9}, {0.9, 0.9}},
selection_box = {{-2, -1.5}, {2, 1.5}},
@ -364,14 +375,15 @@ data:extend(
final_render_layer = "ground-patch-higher2",
subgroup = "remnants",
order="d[remnants]-b[scorchmark]-a[small]",
remove_on_entity_placement = false,
remove_on_tile_placement = true,
animation =
{
width = 110,
height = 90,
frame_count = 1,
direction_count = 1,
filename = "__base__/graphics/entity/scorchmark/small-scorchmark.png",
variation_count = 3
filename = "__base__/graphics/entity/scorchmark/small-scorchmark.png"
},
ground_patch =
{
@ -380,7 +392,6 @@ data:extend(
width = 110,
height = 90,
frame_count = 1,
direction_count = 1,
x = 110 * 2,
filename = "__base__/graphics/entity/scorchmark/small-scorchmark.png",
variation_count = 3
@ -393,7 +404,6 @@ data:extend(
width = 110,
height = 90,
frame_count = 1,
direction_count = 1,
x = 110,
filename = "__base__/graphics/entity/scorchmark/small-scorchmark.png",
variation_count = 3

View File

@ -0,0 +1,357 @@
local noise = require("noise")
local expression_to_ascii_math = require("noise.expression-to-ascii-math")
local tne = noise.to_noise_expression
local litexp = noise.literal_expression
local starting_resource_count = 4
local regular_resource_count = 6 -- add oil and uranium
local next_resource_index = 0
function get_next_resource_index()
local resource_index = next_resource_index
next_resource_index = next_resource_index + 1
return resource_index
end
local pointillist_mode = false
local patch_blobbiness_enabled = true
local function dump_expression(name, expr)
log(name..":\n"..tostring(expression_to_ascii_math(expr)))
end
local onethird = tne(1)/3 -- Looks nicer in output than 0.333333
local function resource_autoplace_settings(params)
local name = params.name
local order = params.order or "d"
-- How much of this stuff (probability * richness) should occur per tile on average near the starting area?
local base_density = params.base_density
-- Random probability that this stuff is placed when probability is otherwise positive
-- This IS automatically compensated for by richness, so you don't need to adjust base_density
local random_probability = params.random_probability or 1
local base_spots_per_km2 = params.base_spots_per_km2 or 2.5
local random_spot_size_minimum = params.random_spot_size_minimum or 0.25
local random_spot_size_maximum = params.random_spot_size_maximum or 2.00
-- Amplitude of spot 'blob noise' relative to typical spot amplitude
local regular_blob_amplitude_multiplier = 1/8 * (params.regular_blob_amplitude_multiplier or 1)
local starting_blob_amplitude_multiplier = 1/8 * (params.starting_blob_amplitude_multiplier or 1)
local control_setting = noise.get_control_setting(name)
local frequency_multiplier = control_setting.frequency_multiplier
local size_multiplier = control_setting.size_multiplier
local density_multiplier = frequency_multiplier * size_multiplier
-- The following are more dangerous, since they'll throw total quantities off if you don't compensate for them:
-- additional_richness will be added to richness but does not affect probability of anything being placed at all.
-- This is NOT automatically compensated for, because that would be difficult to calculate.
-- The caller will need to compensate for any additional_richness by adjusting base_density.
local additional_richness = params.additional_richness or 0
-- richness will be clamped to minimum_richness at the low end anywhere the stuff is otherwise placed
-- Not automatically compensated for.
local minimum_richness = params.minimum_richness or 0
-- 'post' as in multiplied after everything else is calculated, including additional_richness
-- and minimum_richness.
local richness_post_multiplier = (params.richness_post_multiplier or 1) * control_setting.richness_multiplier
local seed1 = 100
-- rq_factor is the ratio of the radius of a patch to the cube root of its quantity,
-- i.e. radius of a quantity=1 patch; higher values = fatter, shallower patches
-- Watch out! Shallower patches are more heavily thrown off by noise,
-- so adjust noise amplitude accordingly!
-- (this is automatically done -- se *_blob_amplitude, below)
local regular_rq_factor = (params.regular_rq_factor_multiplier or 1) * 1 / 10
local starting_rq_factor = (params.starting_rq_factor_multiplier or 1) * 1 / 7
local elevation = noise.var("elevation")
local distance = noise.var("distance")
-- > I just realized because of the new rule of "keep ores outside the
-- > starting area", the starting area size setting should not affect ore
-- > placement. The ore's starting area should be it's own fixed value
-- > that ignores the setting.
-- Twinsen, August 2018
local starting_resource_placement_radius = 120
local regular_modulation
-- has_starting_area_placement values:
-- - true - place in starting area and outside starting area independently
-- - false - place outside starting area but not inside
-- - nil - place everywhere as if there is no starting area
local regular_patch_fade_in_distance = 300
local regular_ns_multiplier_at
if params.has_starting_area_placement == nil then
regular_ns_multiplier_at = function(dist) return 1 end
else
regular_ns_multiplier_at = function(dist)
return noise.clamp((dist - starting_resource_placement_radius) / regular_patch_fade_in_distance, 0, 1)
end
end
local double_density_distance = 1300 -- distance at which patches have twice as much stuff in them
-- Maximum distance at which blob amplitude should keep increasing along with spot height
local regular_blob_amplitude_maximum_distance = double_density_distance
local spot_enlargement_maximum_distance = regular_blob_amplitude_maximum_distance
-- Get distance for purposes of calculating regular ore density, patch size, and richness
local function size_effective_distance_at(dist)
if params.has_starting_area_placement == nil then
return dist
else
-- If there's a starting area measure from the edge of the fade-in radius
return dist - regular_patch_fade_in_distance
end
end
local function regular_density_at(dist)
-- Don't increase density beyond spot_enlargement_maximum_distance
-- because large spots get unwieldy. We'll increase richness after that, instead.
effective_distance = noise.clamp(size_effective_distance_at(dist), 0, spot_enlargement_maximum_distance)
local distance_density_multiplier = 1 + effective_distance / double_density_distance
return base_density * density_multiplier * distance_density_multiplier * regular_ns_multiplier_at(dist)
end
local spots_per_km2_near_start = base_spots_per_km2 * frequency_multiplier
local candidate_point_count = tne(128)
if pointillist_mode then
-- Split ore into lots and lots and lots of little patches
-- so that we can get a better idea of the underlying distribution
candidate_point_count = 10000 -- hardcoded max so we don't melt the player's CPU
spots_per_km2_near_start = candidate_point_count / regular_resource_count
end
-- Regular spot quantity without randomization added
local function regular_spot_quantity_base_at(dist)
return regular_density_at(dist) * 1000000 / spots_per_km2_near_start
end
-- Regular spot quantity averaging over randomization
local function regular_spot_quantity_typical_at(dist)
local average_random_size_multiplier = (random_spot_size_minimum + random_spot_size_maximum) / 2
return average_random_size_multiplier * regular_spot_quantity_base_at(dist)
end
local function regular_spot_height_typical_at(dist)
return regular_spot_quantity_typical_at(dist)^(onethird) / ((math.pi/3) * regular_rq_factor^2)
end
local regular_density_expression = regular_density_at(distance)
local regular_spot_quantity_expression = noise.random_between(random_spot_size_minimum, random_spot_size_maximum) * regular_spot_quantity_base_at(distance)
local regular_spot_radius_expression = noise.min(32, regular_rq_factor * regular_spot_quantity_expression ^ (onethird))
if params.has_starting_area_placement ~= nil then
regular_blob_amplitude_maximum_distance = regular_blob_amplitude_maximum_distance + regular_patch_fade_in_distance
end
local function regular_blob_amplitude_at(dist)
return regular_blob_amplitude_multiplier * noise.min(
regular_spot_height_typical_at(regular_blob_amplitude_maximum_distance),
regular_spot_height_typical_at(dist)
)
end
local regular_blob_amplitude_maximum = regular_blob_amplitude_at(regular_blob_amplitude_maximum_distance)
local regular_blob_amplitude_expression = regular_blob_amplitude_at(distance)
-- Values for starting spots.
-- Simpler calculations than for regular spots because they are only placed
-- in one place and therefore there are fewer variables!
local starting_amount = 40000 * base_density * density_multiplier
--local starting_amount = 1000000 -- nicer for testing - just check that all spots have ~1.0M
local starting_area_sharpness = tne(math.huge)
local starting_resource_placement_area = math.pi*starting_resource_placement_radius*starting_resource_placement_radius
local starting_density = starting_amount / starting_resource_placement_area
-- Goes < 0 outside of starting area and at negative elevations
local starting_modulation =
noise.clamp((starting_resource_placement_radius - distance) * starting_area_sharpness, 0, 1)
local starting_feasibility =
noise.clamp((elevation - 1) / 10, 0, 1) * starting_modulation
-- Allow resources at lower elevations for starting
-- Set minimum_favorability_for_full_placement to lower numbers to decrease the likelihood that the starting patches get split.
-- Quantity will automatically be clamped by the spot noise function
-- and radius will be automatically adjusted, too,
-- so it's fine for the spot quantity to be more than the region target quantity.
local minimum_favorability_for_full_placement = 1/2
local starting_spot_count = frequency_multiplier
local starting_area_spot_quantity = starting_amount / minimum_favorability_for_full_placement / starting_spot_count
local starting_spot_height = starting_area_spot_quantity ^ (1/3) / ((math.pi/3) * starting_rq_factor^2)
local starting_blob_amplitude = starting_blob_amplitude_multiplier * starting_spot_height
-- since starting and regular spots get maxed together,
-- the basement value should be the lower of the two.
-- This value needs to be low enough that any noise added to it is still below zero
-- so that we don't get bits of ores sticking out between spot noise spots.
-- It also needs to be constant because that's how the spot noise op works.
-- Simply using -infinity would work, but calculating it based on blob amplitude:
-- a) looks nicer if you render the value on a map preview
-- b) acts as a check on our blob_amplitude calculations
local basement_value = noise.min(-6 * regular_blob_amplitude_maximum,
-6 * starting_blob_amplitude)
local regular_spots = tne{
type = "function-application",
function_name = "spot-noise",
arguments =
{
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
region_size = tne(1024),
candidate_point_count = tne(candidate_point_count),
skip_span = tne(regular_resource_count),
skip_offset = tne(params.resource_index or 0),
density_expression = litexp(regular_density_expression), -- low-frequency noise evaluate for an entire region
spot_quantity_expression = litexp(regular_spot_quantity_expression), -- used to figure out where spots go
hard_region_target_quantity = tne(false), -- it's fine for large spots to push region quantity past the target
spot_radius_expression = litexp(regular_spot_radius_expression),
spot_favorability_expression = litexp(1),
basement_value = basement_value,
maximum_spot_basement_radius = tne(128)
}
}
-- If you change starting area region size,
-- also change the default starting area position in MapGenSettings
local starting_spots = tne{
type = "function-application",
function_name = "spot-noise",
arguments =
{
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1+1),
skip_span = tne(starting_resource_count),
skip_offset = tne(params.resource_index or 0),
region_size = tne(starting_resource_placement_radius * 2),
candidate_point_count = tne(128),
minimum_candidate_point_spacing = tne(32),
density_expression = litexp(starting_density * starting_modulation),
spot_quantity_expression = litexp(starting_area_spot_quantity),
hard_region_target_quantity = tne(true), -- Since there's [usually] only one spot, clamp its quantity to the target quantity
spot_radius_expression = litexp(starting_rq_factor * starting_area_spot_quantity ^ (onethird)),
spot_favorability_expression = litexp(
starting_feasibility * 2 -
1 * distance / starting_resource_placement_radius +
noise.random(0.5)
),
basement_value = basement_value,
maximum_spot_basement_radius = tne(128) -- does making this huge make a difference?
}
}
if pointillist_mode or not patch_blobbiness_enabled then
regular_blob_amplitude_expression = 0
end
if not patch_blobbiness_enabled then
starting_blob_amplitude = 0
end
-- Add some blobbiness
local blobs0 = tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments =
{
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/8),
output_scale = tne(1)
}
} + tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments =
{
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/24),
output_scale = tne(1)
}
}
local blobs0f = blobs0 - 1/4
local blobs1 = blobs0 + tne{
type = "function-application",
function_name = "factorio-basis-noise",
arguments =
{
x = noise.var("x"),
y = noise.var("y"),
seed0 = noise.var("map_seed"),
seed1 = tne(seed1),
input_scale = tne(1/64),
output_scale = tne(1.5)
}
}
local blobs1f = blobs1 - onethird -- attempt to remove positive bias
local regular_patches = regular_spots + blobs1f * regular_blob_amplitude_expression
local starting_patches = starting_spots + blobs0f * starting_blob_amplitude
local all_patches
if params.has_starting_area_placement == true then
all_patches = noise.max(starting_patches, regular_patches)
elseif params.has_starting_area_placement == false then
all_patches = regular_patches
else -- nil or unspecified means just make it uniform everywhere
all_patches = regular_patches
end
local richness_expression = noise.delimit_procedure(all_patches) -- Re-use all that stuff between richness/probability!
local probability_expression = noise.clamp(richness_expression, 0, 1)
if random_probability < 1 then
richness_expression = richness_expression / random_probability
probability_expression = probability_expression * tne{
type = "function-application",
function_name = "random-penalty",
arguments =
{
source = tne(1),
x = noise.var("x"),
y = noise.var("y"),
amplitude = tne(1/random_probability) -- put random_probability points with probability < 0
}
}
end
if additional_richness > 0 then
richness_expression = richness_expression + additional_richness
end
if minimum_richness > 0 then
richness_expression = noise.max(richness_expression, minimum_richness)
end
-- sed = size-effective distance
local function post_semd_richness_distance_multiplier_at(sed)
local ddd = double_density_distance
local semd = spot_enlargement_maximum_distance
-- density = pre-richness-mutliplied density * richness_distance_multiplier.
-- Since pre-richness-multiplied density plateaus at semd,
-- richness needs to increase at that point, and by this much:
return (ddd + sed)/(ddd + semd)
end
local richness_distance_multiplier = noise.max(1, post_semd_richness_distance_multiplier_at(size_effective_distance_at(distance)))
richness_expression = richness_expression * richness_distance_multiplier * richness_post_multiplier
local ret =
{
order = order,
control = name,
probability_expression = probability_expression,
richness_expression = richness_expression
}
return ret
end
return
{
get_next_resource_index = get_next_resource_index,
resource_autoplace_settings = resource_autoplace_settings
}

View File

@ -1,3 +1,7 @@
local noise = require("noise");
local tne = noise.to_noise_expression;
local resource_autoplace = require("prototypes.entity.demo-resource-autoplace");
local function autoplace_settings(name, order, coverage)
return
{
@ -21,64 +25,122 @@ local function autoplace_settings(name, order, coverage)
}
end
local function resource(name, order, map_color, hardness, coverage)
if hardness == nil then hardness = 0.9 end
local function resource(resource_parameters, autoplace_parameters)
if coverage == nil then coverage = 0.02 end
return
{
type = "resource",
name = name,
icon = "__base__/graphics/icons/" .. name .. ".png",
name = resource_parameters.name,
icon = "__base__/graphics/icons/" .. resource_parameters.name .. ".png",
icon_size = 32,
flags = {"placeable-neutral"},
order="a-b-"..order,
order="a-b-"..resource_parameters.order,
tree_removal_probability = 0.8,
tree_removal_max_distance = 32 * 32,
minable =
{
hardness = hardness,
mining_particle = name .. "-particle",
mining_time = 2,
result = name
mining_particle = resource_parameters.name .. "-particle",
mining_time = resource_parameters.mining_time,
result = resource_parameters.name
},
collision_box = {{ -0.1, -0.1}, {0.1, 0.1}},
selection_box = {{ -0.5, -0.5}, {0.5, 0.5}},
autoplace = autoplace_settings(name, order, coverage),
stage_counts = {15000, 8000, 4000, 2000, 1000, 500, 200, 80},
-- autoplace = autoplace_settings(name, order, coverage),
autoplace = resource_autoplace.resource_autoplace_settings{
name = resource_parameters.name,
order = resource_parameters.order,
base_density = autoplace_parameters.base_density,
has_starting_area_placement = true,
resource_index = resource_autoplace.get_next_resource_index(),
regular_rq_factor_multiplier = autoplace_parameters.regular_rq_factor_multiplier;
starting_rq_factor_multiplier = autoplace_parameters.starting_rq_factor_multiplier;
},
stage_counts = {15000, 9500, 5500, 2900, 1300, 400, 150, 80},
stages =
{
sheet =
{
filename = "__base__/graphics/entity/" .. name .. "/" .. name .. ".png",
filename = "__base__/graphics/entity/" .. resource_parameters.name .. "/" .. resource_parameters.name .. ".png",
priority = "extra-high",
width = 64,
height = 64,
size = 64,
frame_count = 8,
variation_count = 8,
hr_version =
{
filename = "__base__/graphics/entity/" .. name .. "/hr-" .. name .. ".png",
{
filename = "__base__/graphics/entity/" .. resource_parameters.name .. "/hr-" .. resource_parameters.name .. ".png",
priority = "extra-high",
width = 128,
height = 128,
size = 128,
frame_count = 8,
variation_count = 8,
scale = 0.5
}
}
}
},
map_color = map_color
map_color = resource_parameters.map_color
}
end
data:extend(
{
--trees are "a", so resources can delete trees when placed
--oil is "b"
--uranium is "c"
resource("iron-ore", "d", {r=0.415, g=0.525, b=0.580}, nil, (0.006 / 3) / 1.1 * 1.49 ), -- 1.1 compensates for overlapping. 1.49 is the expected ratio of iron to copper
resource("copper-ore", "e", {r=0.803, g=0.388, b=0.215}, nil, 0.006 / 3),
resource("coal", "f", {r=0, g=0, b=0}, nil, 0.0045 / 3),
resource("stone", "g", {r=0.690, g=0.611, b=0.427}, 0.4, 0.0023 / 3)
-- Usually earlier order takes priority, but there's some special
-- case buried in the code about resources removing other things
-- (though maybe there shouldn't be, and we should just place things in a different order).
-- Trees are "a", and resources will delete trees when placed.
-- Oil is "c" so won't be placed if another resource is already there.
-- "d" is available for another resource, but isn't used for now.
resource(
{
name = "iron-ore",
order = "b",
map_color = {r=0.415, g=0.525, b=0.580},
mining_time = 1
},
{
base_density = 10,
regular_rq_factor_multiplier = 1.10,
starting_rq_factor_multiplier = 1.5
}
),
resource(
{
name = "copper-ore",
order = "b",
map_color = {r=0.803, g=0.388, b=0.215},
mining_time = 1
},
{
base_density = 8,
regular_rq_factor_multiplier = 1.10,
starting_rq_factor_multiplier = 1.2
}
),
resource(
{
name = "coal",
order = "b",
map_color = {r=0, g=0, b=0},
mining_time = 1
},
{
base_density = 8,
regular_rq_factor_multiplier = 1.0,
starting_rq_factor_multiplier = 1.1
}
),
resource(
{
name = "stone",
order = "b",
map_color = {r=0.690, g=0.611, b=0.427},
mining_time = 1
},
{
base_density = 4,
regular_rq_factor_multiplier = 1.0,
starting_rq_factor_multiplier = 1.1
}
)
}
)

View File

@ -1,4 +1,28 @@
function spawner_integration()
return
{
filename = "__base__/graphics/entity/spawner/spawner-idle-integration.png",
variation_count = 4,
width = 258,
height = 188,
shift = util.by_pixel(2, -2),
frame_count = 1,
line_length = 1,
hr_version =
{
filename = "__base__/graphics/entity/spawner/hr-spawner-idle-integration.png",
variation_count = 4,
width = 522,
height = 380,
shift = util.by_pixel(3, -3),
frame_count = 1,
line_length = 1,
scale = 0.5
}
}
end
function spawner_idle_animation(variation, tint)
return
{
@ -6,28 +30,57 @@ return
{
{
filename = "__base__/graphics/entity/spawner/spawner-idle.png",
line_length = 8,
width = 243,
height = 181,
line_length = 4,
width = 248,
height = 180,
frame_count = 8,
animation_speed = 0.18,
direction_count = 1,
run_mode = "forward-then-backward",
shift = {0.140625 - 0.65, -0.234375},
y = variation * 181
shift = util.by_pixel(2, -4),
y = variation * 180 * 2,
hr_version =
{
filename = "__base__/graphics/entity/spawner/hr-spawner-idle.png",
line_length = 4,
width = 490,
height = 354,
frame_count = 8,
animation_speed = 0.18,
direction_count = 1,
run_mode = "forward-then-backward",
shift = util.by_pixel(3, -2),
y = variation * 354 * 2,
scale = 0.5
}
},
{
filename = "__base__/graphics/entity/spawner/spawner-idle-mask.png",
flags = { "mask" },
width = 166,
height = 148,
width = 140,
height = 118,
frame_count = 8,
animation_speed = 0.18,
run_mode = "forward-then-backward",
shift = {-0.34375 - 0.65, -0.375},
line_length = 8,
shift = util.by_pixel(-2, -14),
line_length = 4,
tint = tint,
y = variation * 148
y = variation * 118 * 2,
hr_version =
{
filename = "__base__/graphics/entity/spawner/hr-spawner-idle-mask.png",
flags = { "mask" },
width = 276,
height = 234,
frame_count = 8,
animation_speed = 0.18,
run_mode = "forward-then-backward",
shift = util.by_pixel(-1, -14),
line_length = 4,
tint = tint,
y = variation * 234 * 2,
scale = 0.5
}
}
}
}
@ -39,55 +92,51 @@ return
layers =
{
{
width = 255,
height = 184,
frame_count = 20,
filename = "__base__/graphics/entity/spawner/spawner-die.png",
line_length = 8,
width = 248,
height = 178,
frame_count = 8,
direction_count = 1,
shift = {-0.015625 - 0.65, -0.28125},
stripes =
shift = util.by_pixel(2, -2),
y = variation * 178,
hr_version =
{
{
filename = "__base__/graphics/entity/spawner/spawner-die-01.png",
width_in_frames = 7,
height_in_frames = 4,
y = variation * 184
},
{
filename = "__base__/graphics/entity/spawner/spawner-die-02.png",
width_in_frames = 7,
height_in_frames = 4,
y = variation * 184
},
{
filename = "__base__/graphics/entity/spawner/spawner-die-03.png",
width_in_frames = 6,
height_in_frames = 4,
y = variation * 184
}
filename = "__base__/graphics/entity/spawner/hr-spawner-die.png",
line_length = 8,
width = 490,
height = 354,
frame_count = 8,
direction_count = 1,
shift = util.by_pixel(3, -2),
y = variation * 354,
scale = 0.5
}
},
{
filename = "__base__/graphics/entity/spawner/spawner-die-mask.png",
flags = { "mask" },
width = 166,
height = 148,
frame_count = 20,
width = 140,
height = 118,
frame_count = 8,
direction_count = 1,
shift = {-0.34375 - 0.65, -0.375},
shift = util.by_pixel(-2, -14),
line_length = 8,
tint = tint,
stripes =
y = variation * 118,
he_version =
{
{
filename = "__base__/graphics/entity/spawner/spawner-die-mask-01.png",
width_in_frames = 10,
height_in_frames = 4,
y = variation * 148
},
{
filename = "__base__/graphics/entity/spawner/spawner-die-mask-02.png",
width_in_frames = 10,
height_in_frames = 4,
y = variation * 148
}
filename = "__base__/graphics/entity/spawner/hr-spawner-die-mask.png",
flags = { "mask" },
width = 276,
height = 234,
frame_count = 8,
direction_count = 1,
shift = util.by_pixel(-1, -14),
line_length = 8,
tint = tint,
y = variation * 234,
scale = 0.5
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,40 +1,76 @@
-- Specifies set of pictures and animations used by more entities, to avoid duplication.
-- The standard set of transport belt pictures (vertical/horizontal + endings + startings)
-- are used in transport belt, transport belt to ground and splitter.
ending_patch_prototype =
basic_belt_animation_set =
{
animation_set =
{
sheet =
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 64,
height = 64,
frame_count = 16,
direction_count = 20,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/start-end-integration-patches.png",
width = 40,
height = 40,
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-start-end-integration-patches.png",
width = 80,
height = 80,
priority = "extra-high",
scale = 0.5
}
width = 128,
height = 128,
scale = 0.5,
frame_count = 16,
direction_count = 20
}
}
},
east_index = 1,
west_index = 2,
north_index = 3,
south_index = 4,
east_to_north_index = 5,
north_to_east_index = 6,
west_to_north_index = 7,
north_to_west_index = 8,
south_to_east_index = 9,
east_to_south_index = 10,
south_to_west_index = 11,
west_to_south_index = 12,
starting_south_index = 13,
ending_south_index = 14,
starting_west_index = 15,
ending_west_index = 16,
starting_north_index = 17,
ending_north_index = 18,
starting_east_index = 19,
ending_east_index = 20,
--ending_patch = ending_patch_prototype
--ends_with_stopper = false
}
---------------------- BASIC BELT PICTURES
basic_belt_horizontal =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
scale = 0.5,
frame_count = 16
}
@ -43,37 +79,37 @@ basic_belt_vertical =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 40,
y = 64,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
scale = 0.5,
y = 80
y = 128
}
}
basic_belt_ending_top =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 80,
y = 64*2,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 160,
y = 128*2,
scale = 0.5
}
}
@ -81,18 +117,18 @@ basic_belt_ending_bottom =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 120,
y = 64*3,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 240,
y = 128*3,
scale = 0.5
}
}
@ -100,18 +136,18 @@ basic_belt_ending_side =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 160,
y = 64*4,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 320,
y = 128*4,
scale = 0.5
}
}
@ -120,18 +156,18 @@ basic_belt_starting_top =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 200,
y = 64*5,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 400,
y = 128*5,
scale = 0.5
}
}
@ -139,18 +175,18 @@ basic_belt_starting_bottom =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 240,
y = 64*6,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 480,
y = 128*6,
scale = 0.5
}
}
@ -158,18 +194,18 @@ basic_belt_starting_side =
{
filename = "__base__/graphics/entity/transport-belt/transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 16,
y = 280,
y = 64*7,
hr_version =
{
filename = "__base__/graphics/entity/transport-belt/hr-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
frame_count = 16,
y = 560,
y = 128*7,
scale = 0.5
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +1,98 @@
require ("prototypes.entity.demo-spitter-projectiles")
require ("prototypes.entity.demo-worm-animations")
require ("prototypes.entity.demo-enemy-sounds")
require ("prototypes.entity.demo-gunshot-sounds")
require ("prototypes.entity.demo-enemy-autoplace-utils")
enemy_autoplace = require ("prototypes.entity.demo-enemy-autoplace-utils")
function gun_turret_extension(inputs)
return
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-extension.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-raising.png",
priority = "medium",
width = 65,
height = 63,
width = 66,
height = 64,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = {0.015625, -0.859375},
axially_symmetrical = false
shift = util.by_pixel(0, -26),
axially_symmetrical = false,
hr_version =
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-raising.png",
priority = "medium",
width = 130,
height = 126,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = util.by_pixel(0, -26.5),
axially_symmetrical = false,
scale = 0.5
}
}
end
function gun_turret_extension_mask(inputs)
return
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-extension-mask.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-raising-mask.png",
flags = { "mask" },
width = 24,
height = 31,
height = 32,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = {0, -0.890625},
shift = util.by_pixel(0, -28),
axially_symmetrical = false,
apply_runtime_tint = true
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-raising-mask.png",
flags = { "mask" },
width = 48,
height = 62,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = util.by_pixel(0, -28),
axially_symmetrical = false,
apply_runtime_tint = true,
scale = 0.5
}
}
end
function gun_turret_extension_shadow(inputs)
return
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-extension-shadow.png",
width = 89,
height = 49,
filename = "__base__/graphics/entity/gun-turret/gun-turret-raising-shadow.png",
width = 126,
height = 62,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = {1.20313, 0.015625},
shift = util.by_pixel(19, 2),
axially_symmetrical = false,
draw_as_shadow = true
draw_as_shadow = true,
hr_version =
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-raising-shadow.png",
width = 250,
height = 124,
direction_count = 4,
frame_count = inputs.frame_count or 5,
line_length = inputs.line_length or 0,
run_mode = inputs.run_mode or "forward",
shift = util.by_pixel(19, 2.5),
axially_symmetrical = false,
draw_as_shadow = true,
scale = 0.5
}
}
end
@ -59,57 +103,202 @@ return
{
{
width = 66,
height = 64,
height = 66,
frame_count = inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = {0, -0.875},
shift = util.by_pixel(0, -27),
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-1.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-1.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 32
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-2.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-2.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 32
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-3.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-4.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
}
},
hr_version =
{
width = 132,
height = 130,
frame_count = inputs.frame_count and inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(0, -27.5),
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-1.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-2.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-3.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-4.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
}
},
scale = 0.5
}
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-mask.png",
flags = { "mask" },
line_length = inputs.frame_count or 2,
width = 29,
height = 27,
width = 30,
height = 28,
frame_count = inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = {0.015625, -1.01563},
apply_runtime_tint = true
shift = util.by_pixel(0, -32),
apply_runtime_tint = true,
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-mask-1.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-mask-2.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-mask-3.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-mask-4.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
}
},
hr_version =
{
flags = { "mask" },
line_length = inputs.frame_count or 2,
width = 58,
height = 54,
frame_count = inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(0, -32.5),
apply_runtime_tint = true,
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-mask-1.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-mask-2.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-mask-3.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-mask-4.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
}
},
scale = 0.5
}
},
{
width = 91,
height = 50,
frame_count = inputs.frame_count or 2,
width = 126,
height = 62,
frame_count = inputs.frame_count and inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = {1.23438, 0},
shift = util.by_pixel(23, 2),
draw_as_shadow = true,
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-shadow-1.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-shadow-1.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 32
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-gun-shadow-2.png",
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-shadow-2.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 32
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-shadow-3.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-shooting-shadow-4.png",
width_in_frames = inputs.frame_count or 2,
height_in_frames = 16
}
},
hr_version =
{
width = 250,
height = 124,
frame_count = inputs.frame_count and inputs.frame_count or 2,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(22, 2.5),
draw_as_shadow = true,
stripes =
{
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-shadow-1.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-shadow-2.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-shadow-3.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
},
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-shooting-shadow-4.png",
width_in_frames = inputs.frame_count and inputs.frame_count or 2,
height_in_frames = 16
}
},
scale = 0.5
}
}
}
@ -120,9 +309,6 @@ function shift_small_worm(shiftx, shifty)
return {shiftx - 0.1, shifty + 0.1}
end
small_worm_scale = 0.65
small_worm_tint = {r=1, g=0.63, b=0, a=1.0}
data:extend(
{
{
@ -130,39 +316,79 @@ data:extend(
name = "small-worm-turret",
icon = "__base__/graphics/icons/small-worm.png",
icon_size = 32,
flags = {"placeable-enemy", "not-repairable", "breaths-air"},
flags = {"placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air"},
order="b-b-d",
max_health = 200,
subgroup="enemies",
resistances =
{
{
type = "acid",
percent = 100
}
},
healing_per_tick = 0.01,
collision_box = {{-0.9, -0.8 }, {0.9, 0.8}},
map_generator_bounding_box = {{-1.9, -1.8}, {1.9, 1.8}},
selection_box = {{-0.9, -0.8 }, {0.9, 0.8}},
shooting_cursor_size = 3,
corpse = "small-worm-corpse",
dying_explosion = "blood-explosion-big",
dying_sound = make_worm_dying_sounds(0.8),
dying_sound = make_worm_dying_small_sounds(0.8),
folded_speed = 0.01,
folded_animation = worm_folded_animation(small_worm_scale, small_worm_tint),
prepare_range = 30,
preparing_speed = 0.025,
preparing_animation = worm_preparing_animation(small_worm_scale, small_worm_tint, "forward"),
prepared_speed = 0.015,
prepared_animation = worm_prepared_animation(small_worm_scale, small_worm_tint),
starting_attack_speed = 0.03,
starting_attack_animation = worm_attack_animation(small_worm_scale, small_worm_tint, "forward"),
folded_speed_secondary = 0.024,
folded_animation = worm_folded_animation(scale_worm_small, tint_worm_small),
preparing_speed = 0.024,
preparing_animation = worm_preparing_animation(scale_worm_small, tint_worm_small, "forward"),
preparing_sound = make_worm_standup_small_sounds(1),
prepared_speed = 0.024,
prepared_speed_secondary = 0.012,
prepared_sound = make_worm_breath(0.8),
prepared_animation = worm_prepared_animation(scale_worm_small, tint_worm_small),
prepared_alternative_speed = 0.024,
prepared_alternative_speed_secondary = 0.018,
prepared_alternative_chance = 0.2,
prepared_alternative_animation = worm_prepared_alternative_animation(scale_worm_small, tint_worm_small),
prepared_alternative_sound = make_worm_roar_alternative(0.8),
starting_attack_speed = 0.034,
starting_attack_animation = worm_start_attack_animation(scale_worm_small, tint_worm_small),
starting_attack_sound = make_worm_roars(0.75),
ending_attack_speed = 0.03,
ending_attack_animation = worm_attack_animation(small_worm_scale, small_worm_tint, "backward"),
ending_attack_speed = 0.016,
ending_attack_animation = worm_end_attack_animation(scale_worm_small, tint_worm_small),
folding_speed = 0.015,
folding_animation = worm_preparing_animation(small_worm_scale, small_worm_tint, "backward"),
folding_animation = worm_preparing_animation(scale_worm_small, tint_worm_small, "backward"),
folding_sound = make_worm_fold_sounds(1),
secondary_animation = true,
random_animation_offset = true,
attack_from_start_frame = true,
integration = worm_integration(scale_worm_small),
prepare_range = range_worm_small + prepare_range_worm_small,
allow_turning_when_starting_attack = true,
attack_parameters =
{
type = "projectile",
ammo_category = "bullet",
cooldown = 15,
range = 21,
projectile_creation_distance = 1.8,
damage_modifier = 2.5,
type = "stream",
cooldown = 4,
range = range_worm_small,--defined in demo-spitter-projectiles.lua
damage_modifier = damage_modifier_worm_small,--defined in demo-spitter-projectiles.lua
min_range = 0,
projectile_creation_parameters = worm_shoot_shiftings(scale_worm_small, scale_worm_small * scale_worm_stream),
use_shooter_direction = true,
--turn_range = 1.0 / 3.0,
--fire_penalty = 15,
lead_target_for_projectile_speed = 0.2* 0.75 * 1.5 *1.5, -- this is same as particle horizontal speed of flamethrower fire stream
fluids =
{
{type = "crude-oil"},
{type = "heavy-oil", damage_modifier = 1.05},
{type = "light-oil", damage_modifier = 1.1}
},
fluid_consumption = 0.2,
ammo_type =
{
category = "biological",
@ -171,15 +397,64 @@ data:extend(
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "acid-projectile-purple",
starting_speed = 0.5,
max_range = 34
type = "stream",
stream = "acid-stream-worm-small",
duration = 160,
source_offset = {0.15, -0.5}
}
}
},
cyclic_sound =
{
begin_sound =
{
{
filename = "__base__/sound/fight/flamethrower-start.ogg",
volume = 0.7
}
},
middle_sound =
{
{
filename = "__base__/sound/fight/flamethrower-mid.ogg",
volume = 0.7
}
},
end_sound =
{
{
filename = "__base__/sound/fight/flamethrower-end.ogg",
volume = 0.7
}
}
}
},
autoplace = enemy_worm_autoplace(0),
--{
-- type = "stream",
-- ammo_category = "bullet",
-- cooldown = 15,
-- range = 21,
-- projectile_creation_parameters = worm_shoot_shiftings(scale_worm_small),
-- use_shooter_direction = true,
-- damage_modifier = 2.5,
-- ammo_type =
-- {
-- category = "biological",
-- action =
-- {
-- type = "direct",
-- action_delivery =
-- {
-- type = "stream",
-- stream = "acid-stream-small",
-- starting_speed = 0.5,
-- max_range = 50,
-- }
-- }
-- }
--},
autoplace = enemy_autoplace.enemy_worm_autoplace(0),
call_for_help_radius = 40
},
{
@ -239,25 +514,76 @@ data:extend(
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-base.png",
priority = "high",
width = 90,
height = 75,
width = 76,
height = 60,
axially_symmetrical = false,
direction_count = 1,
frame_count = 1,
shift = {0, -0.046875}
shift = util.by_pixel(1, -1),
hr_version =
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-base.png",
priority = "high",
width = 150,
height = 118,
axially_symmetrical = false,
direction_count = 1,
frame_count = 1,
shift = util.by_pixel(0.5, -1),
scale = 0.5
}
},
--{
-- filename = "__base__/graphics/entity/gun-turret/gun-turret-base-shadow.png",
-- line_length = 1,
-- width = 78,
-- height = 62,
-- axially_symmetrical = false,
-- direction_count = 1,
-- frame_count = 1,
-- shift = util.by_pixel(5, 3),
-- draw_as_shadow = true,
-- hr_version =
-- {
-- filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-base-shadow.png",
-- line_length = 1,
-- width = 154,
-- height = 122,
-- axially_symmetrical = false,
-- direction_count = 1,
-- frame_count = 1,
-- shift = util.by_pixel(5, 2.5),
-- draw_as_shadow = true,
-- scale = 0.5
-- }
--},
{
filename = "__base__/graphics/entity/gun-turret/gun-turret-base-mask.png",
flags = { "mask" },
line_length = 1,
width = 52,
height = 47,
width = 62,
height = 52,
axially_symmetrical = false,
direction_count = 1,
frame_count = 1,
shift = {0, -0.234375},
apply_runtime_tint = true
shift = util.by_pixel(0, -4),
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/gun-turret/hr-gun-turret-base-mask.png",
flags = { "mask" },
line_length = 1,
width = 122,
height = 102,
axially_symmetrical = false,
direction_count = 1,
frame_count = 1,
shift = util.by_pixel(0, -4.5),
apply_runtime_tint = true,
scale = 0.5
}
}
}
},
vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
@ -298,8 +624,12 @@ data:extend(
subgroup="corpses",
order = "c[corpse]-c[worm]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-repairable", "not-on-map"},
final_render_layer = "corpse",
animation = worm_die_animation(small_worm_scale, small_worm_tint)
final_render_layer = "lower-object-above-shadow",
animation = worm_die_animation(scale_worm_small, tint_worm_small),
ground_patch =
{
sheet = worm_integration(scale_worm_small)
}
}
}
)

File diff suppressed because it is too large Load Diff

View File

@ -2,64 +2,24 @@ require ("prototypes.entity.demo-spawner-animation")
require ("prototypes.entity.demo-biter-animations")
require ("prototypes.entity.demo-enemy-sounds")
require ("prototypes.entity.spitter-animations")
require ("prototypes.entity.demo-enemy-autoplace-utils")
enemy_autoplace = require ("prototypes.entity.demo-enemy-autoplace-utils")
require ("prototypes.entity.demo-biter-ai-settings")
spitter_spawner_tint = {r=0.99, g=0.09, b=0.09, a=1}
function spitter_attack_parameters(data)
return
{
type = "projectile",
ammo_category = "rocket",
cooldown = data.cooldown,
range = data.range,
min_attack_distance = data.min_attack_distance,
projectile_creation_distance = 1.9,
damage_modifier = data.damage_modifier,
warmup = 30,
ammo_type =
{
category = "biological",
action =
{
type = "direct",
action_delivery =
{
type = "projectile",
projectile = "acid-projectile-purple",
starting_speed = 0.5,
max_range = data.range*2
}
}
},
sound = make_spitter_roars(data.roarvolume),
animation = spitterattackanimation(data.scale, data.tint)
}
end
smallspitterscale = 0.5
smallspittertint = {r=0.68, g=0.4, b=0, a=1}
medium_biter_scale = 0.7
medium_biter_tint1 = {r=0.49, g=0.46, b=0.51, a=1}
medium_biter_tint2 = {r=0.93, g=0.72, b=0.72, a=1}
mediumspitterscale = 0.7
mediumspittertint = {r=0.83, g=0.39, b=0.36, a=0.75}
big_biter_scale = 1.0
big_biter_tint1 = {r=0.37, g=0.40, b=0.72, a=1}
big_biter_tint2 = {r=0.55, g=0.76, b=0.75, a=1}
bigspitterscale = 1
bigspittertint = {r=0.54, g=0.58, b=0.85, a=0.6}
behemoth_biter_scale = 1.2
behemoth_biter_tint1 = {r=0.21, g=0.19, b=0.25, a=1}
behemoth_biter_tint2 = {r = 0.657, g = 0.95, b = 0.432, a = 1.000}
behemothspitterscale = 1.2
behemothspittertint = {r=0.3, g=0.9, b=0.3, a=0.75}
mediumbiterscale = 0.7
medium_biter_tint1 = {r=0.78, g=0.15, b=0.15, a=0.6}
medium_biter_tint2 = {r=0.9, g=0.3, b=0.3, a=0.75}
bigbiterscale = 1.0
big_biter_tint1 = {r=0.34, g=0.68, b=0.90, a=0.6}
big_biter_tint2 = {r=0.31, g=0.61, b=0.95, a=0.85}
behemothbiterscale = 1.2
behemoth_biter_tint1 = {r=0.3, g=0.9, b=0.3, a=0.75}
behemoth_biter_tint2 = {r=0.88, g=0.24, b=0.24, a=0.9}
data:extend(
{
@ -82,6 +42,10 @@ data:extend(
{
type = "explosion",
percent = 10
},
{
type = "acid",
percent = 100
}
},
healing_per_tick = 0.01,
@ -94,23 +58,24 @@ data:extend(
attack_parameters =
{
type = "projectile",
ammo_category = "melee",
ammo_type = make_unit_melee_ammo_type(15),
range = 1,
cooldown = 35,
sound = make_biter_roars(0.5),
animation = biterattackanimation(mediumbiterscale, medium_biter_tint1, medium_biter_tint2)
animation = biterattackanimation(medium_biter_scale, medium_biter_tint1, medium_biter_tint2)
},
vision_distance = 30,
movement_speed = 0.185,
distance_per_frame = 0.15,
movement_speed = 0.24,
distance_per_frame = 0.188,
-- in pu
pollution_to_join_attack = 1000,
corpse = "medium-biter-corpse",
dying_explosion = "blood-explosion-small",
working_sound = make_biter_calls(0.4),
dying_sound = make_biter_dying_sounds(0.5),
run_animation = biterrunanimation(mediumbiterscale, medium_biter_tint1, medium_biter_tint2)
run_animation = biterrunanimation(medium_biter_scale, medium_biter_tint1, medium_biter_tint2),
--idle_animation = biteridleanimation(medium_biter_scale, small_biter_tint1, small_biter_tint2),
ai_settings = biter_ai_settings
},
{
@ -132,6 +97,10 @@ data:extend(
{
type = "explosion",
percent = 10
},
{
type = "acid",
percent = 100
}
},
spawning_time_modifier = 3,
@ -147,21 +116,22 @@ data:extend(
type = "projectile",
range = 1.5,
cooldown = 35,
ammo_category = "melee",
ammo_type = make_unit_melee_ammo_type(30),
sound = make_biter_roars(0.6),
animation = biterattackanimation(bigbiterscale, big_biter_tint1, big_biter_tint2)
animation = biterattackanimation(big_biter_scale, big_biter_tint1, big_biter_tint2)
},
vision_distance = 30,
movement_speed = 0.17,
distance_per_frame = 0.2,
movement_speed = 0.23,
distance_per_frame = 0.30,
-- in pu
pollution_to_join_attack = 4000,
corpse = "big-biter-corpse",
dying_explosion = "blood-explosion-big",
working_sound = make_biter_calls(0.5),
dying_sound = make_biter_dying_sounds(0.6),
run_animation = biterrunanimation(bigbiterscale, big_biter_tint1, big_biter_tint2)
run_animation = biterrunanimation(big_biter_scale, big_biter_tint1, big_biter_tint2),
--idle_animation = biteridleanimation(big_biter_scale, small_biter_tint1, small_biter_tint2),
ai_settings = biter_ai_settings
},
{
@ -199,21 +169,22 @@ data:extend(
type = "projectile",
range = 1.5,
cooldown = 50,
ammo_category = "melee",
ammo_type = make_unit_melee_ammo_type(90),
sound = make_biter_roars(0.8),
animation = biterattackanimation(behemothbiterscale, behemoth_biter_tint1, behemoth_biter_tint2)
animation = biterattackanimation(behemoth_biter_scale, behemoth_biter_tint1, behemoth_biter_tint2)
},
vision_distance = 30,
movement_speed = 0.17,
distance_per_frame = 0.2,
movement_speed = 0.3,
distance_per_frame = 0.32,
-- in pu
pollution_to_join_attack = 20000,
corpse = "behemoth-biter-corpse",
dying_explosion = "blood-explosion-big",
working_sound = make_biter_calls(0.7),
dying_sound = make_biter_dying_sounds(0.8),
run_animation = biterrunanimation(behemothbiterscale, behemoth_biter_tint1, behemoth_biter_tint2)
run_animation = biterrunanimation(behemoth_biter_scale, behemoth_biter_tint1, behemoth_biter_tint2),
--idle_animation = biteridleanimation(behemoth_biter_scale, small_biter_tint1, small_biter_tint2),
ai_settings = biter_ai_settings
},
{
@ -225,6 +196,13 @@ data:extend(
max_health = 10,
order="b-b-d",
subgroup="enemies",
resistances =
{
{
type = "acid",
percent = 100
}
},
healing_per_tick = 0.01,
collision_box = {{-0.3, -0.3}, {0.3, 0.3}},
selection_box = {{-0.4, -0.4}, {0.4, 0.4}},
@ -232,18 +210,23 @@ data:extend(
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
max_pursue_distance = 50,
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence,
attack_parameters = spitter_attack_parameters(
{
range=13,
acid_stream_name = "acid-stream-spitter-small",
range=range_spitter_small,
min_attack_distance=10,
cooldown=100,
damage_modifier=1,
scale=smallspitterscale,
tint=smallspittertint,
damage_modifier=damage_modifier_spitter_small,
scale=scale_spitter_small,
tint1=tint_1_spitter_small,
tint2=tint_2_spitter_small,
roarvolume=0.4
}),
vision_distance = 30,
movement_speed = 0.185,
distance_per_frame = 0.04,
-- in pu
pollution_to_join_attack = 200,
@ -251,7 +234,8 @@ data:extend(
dying_explosion = "blood-explosion-small",
working_sound = make_biter_calls(0.3),
dying_sound = make_spitter_dying_sounds(0.4),
run_animation = spitterrunanimation(smallspitterscale, smallspittertint)
run_animation = spitterrunanimation(scale_spitter_small, tint_1_spitter_small, tint_2_spitter_small),
ai_settings = biter_ai_settings
},
{
@ -268,6 +252,10 @@ data:extend(
{
type = "explosion",
percent = 10
},
{
type = "acid",
percent = 100
}
},
healing_per_tick = 0.01,
@ -277,14 +265,17 @@ data:extend(
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
max_pursue_distance = 50,
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence,
attack_parameters = spitter_attack_parameters(
{
range=14,
acid_stream_name = "acid-stream-spitter-medium",
range=range_spitter_medium,
min_attack_distance=10,
cooldown=100,
damage_modifier=2,
scale=mediumspitterscale,
tint=mediumspittertint,
damage_modifier=damage_modifier_spitter_medium,
scale=scale_spitter_medium,
tint1=tint_1_spitter_medium,
tint2=tint_2_spitter_medium,
roarvolume=0.5
}),
vision_distance = 30,
@ -296,7 +287,8 @@ data:extend(
dying_explosion = "blood-explosion-small",
working_sound = make_biter_calls(0.4),
dying_sound = make_spitter_dying_sounds(0.5),
run_animation = spitterrunanimation(mediumspitterscale, mediumspittertint)
run_animation = spitterrunanimation(scale_spitter_medium, tint_1_spitter_medium, tint_2_spitter_medium),
ai_settings = biter_ai_settings
},
{
@ -313,24 +305,31 @@ data:extend(
{
type = "explosion",
percent = 15
},
{
type = "acid",
percent = 100
}
},
spawning_time_modifier = 3,
healing_per_tick = 0.01,
collision_box = {{-0.5, -0.5}, {0.5, 0.5}},
collision_box = {{-0.4, -0.4}, {0.4, 0.4}},
selection_box = {{-0.7, -1.0}, {0.7, 1.0}},
sticker_box = {{-0.3, -0.5}, {0.3, 0.1}},
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
max_pursue_distance = 50,
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence,
attack_parameters = spitter_attack_parameters(
{
range=15,
acid_stream_name = "acid-stream-spitter-big",
range=range_spitter_big,
min_attack_distance=10,
cooldown=100,
damage_modifier=3,
scale=bigspitterscale,
tint=bigspittertint,
damage_modifier=damage_modifier_spitter_big,
scale=scale_spitter_big,
tint1=tint_1_spitter_big,
tint2=tint_2_spitter_big,
roarvolume=0.6
}),
vision_distance = 30,
@ -342,9 +341,13 @@ data:extend(
dying_explosion = "blood-explosion-big",
working_sound = make_biter_calls(0.5),
dying_sound = make_spitter_dying_sounds(0.6),
run_animation = spitterrunanimation(bigspitterscale, bigspittertint)
run_animation = spitterrunanimation(scale_spitter_big, tint_1_spitter_big, tint_2_spitter_big),
ai_settings = biter_ai_settings
},
scale_worm_behemoth = 1.2,
tint_worm_behemoth = {r=0.53, g=0.89, b=0.61, a=1},
{
type = "unit",
name = "behemoth-spitter",
@ -359,24 +362,31 @@ data:extend(
{
type = "explosion",
percent = 30
},
{
type = "acid",
percent = 100
}
},
spawning_time_modifier = 12,
healing_per_tick = 0.1,
collision_box = {{-0.5, -0.5}, {0.5, 0.5}},
collision_box = {{-0.4, -0.4}, {0.4, 0.4}},
selection_box = {{-0.7, -1.0}, {0.7, 1.0}},
sticker_box = {{-0.3, -0.5}, {0.3, 0.1}},
distraction_cooldown = 300,
min_pursue_time = 10 * 60,
max_pursue_distance = 50,
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence,
attack_parameters = spitter_attack_parameters(
{
range=16,
acid_stream_name = "acid-stream-spitter-behemoth",
range=range_spitter_behemoth,
min_attack_distance=10,
cooldown=100,
damage_modifier=5,
scale=behemothspitterscale,
tint=behemothspittertint,
damage_modifier=damage_modifier_spitter_behemoth,
scale=scale_spitter_behemoth,
tint1=tint_1_spitter_behemoth,
tint2=tint_2_spitter_behemoth,
roarvolume=0.8
}),
vision_distance = 30,
@ -387,9 +397,11 @@ data:extend(
dying_explosion = "blood-explosion-big",
working_sound = make_biter_calls(0.7),
dying_sound = make_spitter_dying_sounds(0.8),
run_animation = spitterrunanimation(behemothspitterscale, behemothspittertint)
run_animation = spitterrunanimation(scale_spitter_behemoth, tint_1_spitter_behemoth, tint_2_spitter_behemoth),
ai_settings = biter_ai_settings
},
add_biter_die_animation(medium_biter_scale, medium_biter_tint1, medium_biter_tint2,
{
type = "corpse",
name = "medium-biter-corpse",
@ -397,15 +409,12 @@ data:extend(
icon_size = 32,
selectable_in_game = false,
selection_box = {{-1, -1}, {1, 1}},
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
subgroup="corpses",
order = "c[corpse]-a[biter]-b[medium]",
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = biterdieanimation(mediumbiterscale, medium_biter_tint1, medium_biter_tint2)
},
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"}
}),
add_biter_die_animation(big_biter_scale, big_biter_tint1, big_biter_tint2,
{
type = "corpse",
name = "big-biter-corpse",
@ -415,13 +424,10 @@ data:extend(
selection_box = {{-1, -1}, {1, 1}},
subgroup="corpses",
order = "c[corpse]-a[biter]-c[big]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = biterdieanimation(bigbiterscale, big_biter_tint1, big_biter_tint2)
},
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"}
}),
add_biter_die_animation(behemoth_biter_scale, behemoth_biter_tint1, behemoth_biter_tint2,
{
type = "corpse",
name = "behemoth-biter-corpse",
@ -431,13 +437,10 @@ data:extend(
selection_box = {{-1, -1}, {1, 1}},
subgroup="corpses",
order = "c[corpse]-a[biter]-c[big]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.02,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = biterdieanimation(behemothbiterscale, behemoth_biter_tint1, behemoth_biter_tint2)
},
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"}
}),
add_spitter_die_animation(scale_spitter_small, tint_1_spitter_small, tint_2_spitter_small,
{
type = "corpse",
name = "small-spitter-corpse",
@ -448,12 +451,9 @@ data:extend(
subgroup="corpses",
order = "c[corpse]-b[spitter]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = spitterdyinganimation(smallspitterscale, smallspittertint)
},
}),
add_spitter_die_animation(scale_spitter_medium, tint_1_spitter_medium, tint_2_spitter_medium,
{
type = "corpse",
name = "medium-spitter-corpse",
@ -462,47 +462,35 @@ data:extend(
selectable_in_game = false,
selection_box = {{-1, -1}, {1, 1}},
subgroup="corpses",
order = "c[corpse]-b[spitter]-b[medium]",
order = "c[corpse]-b[spitter]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = spitterdyinganimation(mediumspitterscale, mediumspittertint)
},
}),
add_spitter_die_animation(scale_spitter_big, tint_1_spitter_big, tint_2_spitter_big,
{
type = "corpse",
name = "big-spitter-corpse",
icon = "__base__/graphics/icons/big-biter-corpse.png",
icon_size = 32,
selectable_in_game = false,
collision_box = {{-0.7, -0.7}, {0.7, 0.7}},
selection_box = {{-0.7, -1}, {0.7, 1}},
selection_box = {{-1, -1}, {1, 1}},
subgroup="corpses",
order = "c[corpse]-b[spitter]-c[big]",
order = "c[corpse]-b[spitter]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = spitterdyinganimation(bigspitterscale, bigspittertint)
},
}),
add_spitter_die_animation(scale_spitter_behemoth, tint_1_spitter_behemoth, tint_2_spitter_behemoth,
{
type = "corpse",
name = "behemoth-spitter-corpse",
icon = "__base__/graphics/icons/big-biter-corpse.png",
icon_size = 32,
selectable_in_game = false,
collision_box = {{-0.7, -0.7}, {0.7, 0.7}},
selection_box = {{-0.7, -1}, {0.7, 1}},
selection_box = {{-1, -1}, {1, 1}},
subgroup="corpses",
order = "c[corpse]-b[spitter]-d[behemoth]",
order = "c[corpse]-b[spitter]-a[small]",
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
dying_speed = 0.04,
time_before_removed = 15 * 60 * 60,
final_render_layer = "corpse",
animation = spitterdyinganimation(behemothspitterscale, behemothspittertint)
},
}),
{
type = "unit-spawner",
@ -555,6 +543,7 @@ data:extend(
},
healing_per_tick = 0.02,
collision_box = {{-3.2, -2.2}, {2.2, 2.2}},
map_generator_bounding_box = {{-4.2, -3.2}, {3.2, 3.2}},
selection_box = {{-3.5, -2.5}, {2.5, 2.5}},
pollution_absorbtion_absolute = 20,
pollution_absorbtion_proportional = 0.01,
@ -569,7 +558,7 @@ data:extend(
spawner_idle_animation(2, spitter_spawner_tint),
spawner_idle_animation(3, spitter_spawner_tint)
},
integration = spawner_integration(),
result_units = (function()
local res = {}
res[1] = {"small-biter", {{0.0, 0.3}, {0.35, 0}}}
@ -585,7 +574,10 @@ data:extend(
spawning_spacing = 3,
max_spawn_shift = 0,
max_richness_for_spawn_shift = 100,
autoplace = enemy_spawner_autoplace(1),
-- distance_factor used to be 1, but Twinsen says:
-- "The number or spitter spwners should be roughly equal to the number of biter spawners(regardless of difficulty)."
-- (2018-12-07)
autoplace = enemy_autoplace.enemy_spawner_autoplace(0),
call_for_help_radius = 50
},
@ -609,6 +601,10 @@ data:extend(
spawner_die_animation(1, spitter_spawner_tint),
spawner_die_animation(2, spitter_spawner_tint),
spawner_die_animation(3, spitter_spawner_tint)
},
ground_patch =
{
sheet = spawner_integration()
}
}
})

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,12 @@ end
local fireutil = {}
function fireutil.foreach(table_, fun_)
for k, tab in pairs(table_) do fun_(tab) end
for k, tab in pairs(table_) do
fun_(tab)
if tab.hr_version then
fun_(tab.hr_version)
end
end
return table_
end
@ -24,11 +29,25 @@ function fireutil.flamethrower_turret_extension_animation(shft, opts)
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 78,
height = 65,
width = 80,
height = 64,
direction_count = 1,
axially_symmetrical = false,
shift = {0, -0.796875}
shift = util.by_pixel(-2, -26),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-extension.png",
priority = "medium",
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 152,
height = 128,
direction_count = 1,
axially_symmetrical = false,
shift = util.by_pixel(0, -26),
scale = 0.5
}
},
-- mask
{
@ -37,12 +56,27 @@ function fireutil.flamethrower_turret_extension_animation(shft, opts)
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 74,
height = 61,
width = 76,
height = 60,
direction_count = 1,
axially_symmetrical = false,
shift = {0, -0.796875},
apply_runtime_tint = true
shift = util.by_pixel(-2, -26),
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-extension-mask.png",
flags = { "mask" },
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 144,
height = 120,
direction_count = 1,
axially_symmetrical = false,
shift = util.by_pixel(0, -26),
apply_runtime_tint = true,
scale = 0.5
}
},
-- shadow
{
@ -50,12 +84,26 @@ function fireutil.flamethrower_turret_extension_animation(shft, opts)
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 91,
height = 56,
width = 92,
height = 60,
direction_count = 1,
axially_symmetrical = false,
shift = {1.04688, 0},
draw_as_shadow = true
shift = util.by_pixel(32, -2),
draw_as_shadow = true,
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-extension-shadow.png",
frame_count = opts and opts.frame_count or m_frame_count,
line_length = opts and opts.line_length or m_line_length,
run_mode = opts and opts.run_mode or "forward",
width = 180,
height = 114,
direction_count = 1,
axially_symmetrical = false,
shift = util.by_pixel(33, -1),
draw_as_shadow = true,
scale = 0.5
}
}
}
@ -70,10 +118,10 @@ end
fireutil.turret_gun_shift =
{
north = {0, -0.3125},
east = {0.625, 0.3125},
south = {0, 0.625},
west = { -0.46875, 0.3125}
north = util.by_pixel(0.0, -6.0),
east = util.by_pixel(18.5, 9.5),
south = util.by_pixel(0.0, 19.0),
west = util.by_pixel(-12.0, 5.5)
}
fireutil.turret_model_info =
@ -136,7 +184,8 @@ function fireutil.flamethrower_turret_extension(opts)
return opts
end
return {
return
{
north = fireutil.flamethrower_turret_extension_animation(fireutil.turret_gun_shift.north, set_direction(opts, "north")),
east = fireutil.flamethrower_turret_extension_animation(fireutil.turret_gun_shift.east, set_direction(opts, "east")),
south = fireutil.flamethrower_turret_extension_animation(fireutil.turret_gun_shift.south, set_direction(opts, "south")),
@ -151,26 +200,55 @@ function fireutil.flamethrower_turret_prepared_animation(shft, opts)
priority = "medium",
counterclockwise = true,
line_length = 8,
width = 78,
height = 64,
width = 82,
height = 66,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = {0, -0.75}
shift = util.by_pixel(-2, -26),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun.png",
priority = "medium",
counterclockwise = true,
line_length = 8,
width = 158,
height = 128,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(-1, -25),
scale = 0.5
}
}
local glow_layer =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-gun-active.png",
counterclockwise = true,
line_length = 8,
width = 78,
height = 63,
width = 82,
height = 66,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = {0, -0.765625},
shift = util.by_pixel(-2, -26),
tint = make_color(1, 1, 1, 0.5),
blend_mode = "additive"
blend_mode = "additive",
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-active.png",
counterclockwise = true,
line_length = 8,
width = 158,
height = 126,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(-1, -25),
tint = make_color(1, 1, 1, 0.5),
blend_mode = "additive",
scale = 0.5
}
}
local mask_layer =
{
@ -178,26 +256,55 @@ function fireutil.flamethrower_turret_prepared_animation(shft, opts)
flags = { "mask" },
counterclockwise = true,
line_length = 8,
width = 72,
height = 57,
width = 74,
height = 56,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = {0, -0.859375},
apply_runtime_tint = true
shift = util.by_pixel(-2, -28),
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-mask.png",
flags = { "mask" },
counterclockwise = true,
line_length = 8,
width = 144,
height = 112,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(-1, -28),
apply_runtime_tint = true,
scale = 0.5
}
}
local shadow_layer =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-gun-shadow.png",
counterclockwise = true,
line_length = 8,
width = 91,
height = 57,
width = 90,
height = 56,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = {0.984375, 0.015625},
draw_as_shadow = true
shift = util.by_pixel(32, 0),
draw_as_shadow = true,
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-gun-shadow.png",
counterclockwise = true,
line_length = 8,
width = 182,
height = 116,
frame_count = 1,
axially_symmetrical = false,
direction_count = 64,
shift = util.by_pixel(31, -1),
draw_as_shadow = true,
scale = 0.5
}
}
local ret_layers = opts and opts.attacking and { diffuse_layer, glow_layer, mask_layer, shadow_layer }
@ -209,7 +316,8 @@ function fireutil.flamethrower_turret_prepared_animation(shft, opts)
end
function fireutil.flamethrower_prepared_animation(opts)
return {
return
{
north = fireutil.flamethrower_turret_prepared_animation(fireutil.turret_gun_shift.north, opts),
east = fireutil.flamethrower_turret_prepared_animation(fireutil.turret_gun_shift.east, opts),
south = fireutil.flamethrower_turret_prepared_animation(fireutil.turret_gun_shift.south, opts),
@ -542,7 +650,8 @@ end
function fireutil.flamethrower_turret_pipepictures()
local pipe_sprites = pipepictures()
return {
return
{
north = set_shift({0, 1}, util.table.deepcopy(pipe_sprites.straight_vertical)),
south = set_shift({0, -1}, util.table.deepcopy(pipe_sprites.straight_vertical)),
east = set_shift({-1, 0}, util.table.deepcopy(pipe_sprites.straight_horizontal)),
@ -647,8 +756,6 @@ data:extend({
width = 101,
height = 138,
frame_count = 31,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.109375, -1.1875},
animation_speed = 0.5
},
@ -658,8 +765,6 @@ data:extend({
width = 99,
height = 138,
frame_count = 31,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.203125, -1.21875},
animation_speed = 0.5
}
@ -755,8 +860,6 @@ data:extend({
width = 101,
height = 138,
frame_count = 31,
axially_symmetrical = false,
direction_count = 1,
scale = 0.6,
shift = {-0.109375 * 0.6, -1.1875 * 0.6},
animation_speed = 0.5,
@ -768,8 +871,6 @@ data:extend({
width = 99,
height = 138,
frame_count = 31,
axially_symmetrical = false,
direction_count = 1,
scale = 0.6,
shift = {-0.203125 * 0.6, -1.21875 * 0.6},
animation_speed = 0.5,
@ -777,7 +878,7 @@ data:extend({
}
},
trivial_smoke =
smoke =
{
{
name = "fire-smoke-without-glow",
@ -806,45 +907,93 @@ local indicator_pictures =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-led-indicator-north.png",
line_length = 2,
width = 5,
height = 9,
width = 4,
height = 10,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = {0.234375, 0.640625}
shift = util.by_pixel(8, 20),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-led-indicator-north.png",
line_length = 2,
width = 10,
height = 18,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(7, 20),
scale = 0.5
}
},
east =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-led-indicator-east.png",
line_length = 2,
width = 10,
width = 12,
height = 6,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = {-1.03125, -0.15625}
shift = util.by_pixel(-34, -6),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-led-indicator-east.png",
line_length = 2,
width = 18,
height = 8,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-33, -5),
scale = 0.5
}
},
south =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-led-indicator-south.png",
line_length = 2,
width = 5,
height = 8,
width = 4,
height = 12,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.234375, -1.375}
shift = util.by_pixel(-8, -46),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-led-indicator-south.png",
line_length = 2,
width = 8,
height = 18,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-8, -45),
scale = 0.5
}
},
west =
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-led-indicator-west.png",
line_length = 2,
width = 10,
height = 6,
height = 10,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = {1.03125, -0.46875}
shift = util.by_pixel(32, -22),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-led-indicator-west.png",
line_length = 2,
width = 20,
height = 10,
frame_count = 2,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(32, -20),
scale = 0.5
}
}
}
@ -866,9 +1015,6 @@ data:extend({
attacking_speed = 1,
ending_attack_speed = 0.2,
dying_explosion = "medium-explosion",
inventory_size = 1,
automated_ammo_count = 10,
attacking_animation_fade_out = 10,
turret_base_has_direction = true,
resistances =
@ -884,7 +1030,7 @@ data:extend({
--production_type = "input",
secondary_draw_order = 0,
render_layer = "lower-object",
pipe_picture = fireutil.flamethrower_turret_pipepictures(),
--pipe_picture = fireutil.flamethrower_turret_pipepictures(),
pipe_covers = pipecoverspictures(),
base_area = 1,
pipe_connections =
@ -912,7 +1058,7 @@ data:extend({
gun_animation_render_layer = "object",
gun_animation_secondary_draw_order = 1,
base_picture_render_layer = "lower-object",
base_picture_render_layer = "lower-object-above-shadow",
base_picture_secondary_draw_order = 1,
base_picture =
{
@ -924,37 +1070,76 @@ data:extend({
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-north.png",
line_length = 1,
width = 69,
height = 86,
width = 80,
height = 96,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.015625, 0.34375}
shift = util.by_pixel(-2, 14),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-north.png",
line_length = 1,
width = 158,
height = 196,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-1, 13),
scale = 0.5
}
},
-- mask
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-north-mask.png",
flags = { "mask" },
line_length = 1,
width = 37,
height = 37,
width = 36,
height = 38,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.015625, 1.04688},
apply_runtime_tint = true
shift = util.by_pixel(0, 32),
apply_runtime_tint = true,
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-north-mask.png",
flags = { "mask" },
line_length = 1,
width = 74,
height = 70,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-1, 33),
apply_runtime_tint = true,
scale = 0.5
}
},
-- shadow
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-north-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 71,
width = 70,
height = 78,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.140625, 0.46875}
shift = util.by_pixel(2, 14),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-north-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 134,
height = 152,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(3, 15),
scale = 0.5
}
}
}
},
@ -966,12 +1151,24 @@ data:extend({
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-east.png",
line_length = 1,
width = 95,
height = 60,
width = 106,
height = 72,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {-0.140625, 0.125}
shift = util.by_pixel(-6, 2),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-east.png",
line_length = 1,
width = 216,
height = 146,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-6, 3),
scale = 0.5
}
},
-- mask
{
@ -979,24 +1176,51 @@ data:extend({
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 33,
width = 32,
height = 42,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {-1.01563, 0.03125}
shift = util.by_pixel(-32, 0),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-east-mask.png",
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 66,
height = 82,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(-33, 1),
scale = 0.5
}
},
-- shadow
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-east-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 100,
height = 44,
width = 72,
height = 46,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.03125, 0.28125}
shift = util.by_pixel(14, 8),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-east-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 144,
height = 86,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(14, 9),
scale = 0.5
}
}
}
},
@ -1008,12 +1232,24 @@ data:extend({
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-south.png",
line_length = 1,
width = 70,
height = 90,
width = 64,
height = 84,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0, -0.15625}
shift = util.by_pixel(0, -8),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-south.png",
line_length = 1,
width = 128,
height = 166,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(0, -8),
scale = 0.5
}
},
-- mask
{
@ -1021,24 +1257,51 @@ data:extend({
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 37,
height = 37,
width = 36,
height = 38,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.015625, -0.953125}
shift = util.by_pixel(0, -32),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-south-mask.png",
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 72,
height = 72,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(0, -31),
scale = 0.5
}
},
-- shadow
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-south-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 67,
height = 70,
width = 70,
height = 52,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.140625, -0.0625}
shift = util.by_pixel(2, 8),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-south-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 134,
height = 98,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(3, 9),
scale = 0.5
}
}
}
@ -1051,12 +1314,24 @@ data:extend({
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-west.png",
line_length = 1,
width = 93,
height = 59,
width = 100,
height = 74,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.140625, 0.203125}
shift = util.by_pixel(8, -2),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-west.png",
line_length = 1,
width = 208,
height = 144,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(7, -1),
scale = 0.5
}
},
-- mask
{
@ -1064,24 +1339,51 @@ data:extend({
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 33,
width = 32,
height = 40,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {1.01563, 0.09375}
shift = util.by_pixel(32, -2),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-west-mask.png",
flags = { "mask" },
apply_runtime_tint = true,
line_length = 1,
width = 64,
height = 74,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(32, -1),
scale = 0.5
}
},
-- shadow
{
filename = "__base__/graphics/entity/flamethrower-turret/flamethrower-turret-base-west-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 103,
height = 45,
width = 104,
height = 44,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = {0.484375, 0.296875}
shift = util.by_pixel(14, 4),
hr_version =
{
filename = "__base__/graphics/entity/flamethrower-turret/hr-flamethrower-turret-base-west-shadow.png",
draw_as_shadow = true,
line_length = 1,
width = 206,
height = 88,
frame_count = 1,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(15, 4),
scale = 0.5
}
}
}
}
@ -1117,7 +1419,6 @@ data:extend({
attack_parameters =
{
type = "stream",
ammo_category = "flamethrower",
cooldown = 4,
range = 30,
min_range = 6,
@ -1125,6 +1426,8 @@ data:extend({
turn_range = 1.0 / 3.0,
fire_penalty = 15,
lead_target_for_projectile_speed = 0.2* 0.75 * 1.5, -- this is same as particle horizontal speed of flamethrower fire stream
fluids =
{
{type = "crude-oil"},
@ -1152,7 +1455,6 @@ data:extend({
{
type = "stream",
stream = "flamethrower-fire-stream",
duration = 160,
source_offset = {0.15, -0.5}
}
}
@ -1188,7 +1490,8 @@ data:extend({
})
local function trivial_firesmoke(opts)
return {
return
{
type = "trivial-smoke",
name = opts.name,
flags = {"not-on-map"},
@ -1342,8 +1645,6 @@ data:extend(
width = 60,
height = 118,
frame_count = 25,
axially_symmetrical = false,
direction_count = 1,
blend_mode = "normal",
animation_speed = 1,
scale = 0.2,
@ -1450,7 +1751,7 @@ data:extend(
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
filename = "__base__/graphics/entity/acid-projectile/projectile-shadow.png",
line_length = 5,
width = 28,
height = 16,
@ -1478,13 +1779,6 @@ data:extend(
type = "stream",
name = "handheld-flamethrower-fire-stream",
flags = {"not-on-map"},
working_sound_disabled =
{
{
filename = "__base__/sound/fight/electric-beam.ogg",
volume = 0.7
}
},
smoke_sources =
{
@ -1568,7 +1862,7 @@ data:extend(
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
filename = "__base__/graphics/entity/acid-projectile/projectile-shadow.png",
line_length = 5,
width = 28,
height = 16,
@ -1593,13 +1887,6 @@ data:extend(
type = "stream",
name = "tank-flamethrower-fire-stream",
flags = {"not-on-map"},
working_sound_disabled =
{
{
filename = "__base__/sound/fight/electric-beam.ogg",
volume = 0.7
}
},
smoke_sources =
{
@ -1664,7 +1951,7 @@ data:extend(
shadow =
{
filename = "__base__/graphics/entity/acid-projectile-purple/acid-projectile-purple-shadow.png",
filename = "__base__/graphics/entity/acid-projectile/projectile-shadow.png",
line_length = 5,
width = 28,
height = 16,

View File

@ -6,7 +6,7 @@ data:extend(
icon = "__base__/graphics/icons/pumpjack.png",
icon_size = 32,
flags = {"placeable-neutral", "player-creation"},
minable = {mining_time = 1, result = "pumpjack"},
minable = {mining_time = 0.5, result = "pumpjack"},
resource_categories = {"basic-fluid"},
max_health = 200,
corpse = "big-remnants",
@ -35,7 +35,6 @@ data:extend(
},
energy_usage = "90kW",
mining_speed = 1,
mining_power = 2,
resource_searching_radius = 0.49,
vector_to_place_result = {0, 0},
module_specification =
@ -60,7 +59,7 @@ data:extend(
width = 131,
height = 137,
shift = util.by_pixel(-2.5, -4.5),
hr_version =
hr_version =
{
filename = "__base__/graphics/entity/pumpjack/hr-pumpjack-base.png",
priority = "extra-high",
@ -93,7 +92,7 @@ data:extend(
{
north =
{
layers =
layers =
{
{
priority = "high",
@ -104,7 +103,7 @@ data:extend(
frame_count = 40,
shift = util.by_pixel(-4, -24),
animation_speed = 0.5,
hr_version =
hr_version =
{
priority = "high",
filename = "__base__/graphics/entity/pumpjack/hr-pumpjack-horsehead.png",
@ -127,7 +126,7 @@ data:extend(
height = 41,
frame_count = 40,
shift = util.by_pixel(17.5, 14.5),
hr_version =
hr_version =
{
priority = "high",
filename = "__base__/graphics/entity/pumpjack/hr-pumpjack-horsehead-shadow.png",
@ -151,7 +150,7 @@ data:extend(
apparent_volume = 1.5
},
fast_replaceable_group = "pumpjack",
circuit_wire_connection_points = circuit_connector_definitions["pumpjack"].points,
circuit_connector_sprites = circuit_connector_definitions["pumpjack"].sprites,
circuit_wire_max_distance = default_circuit_wire_max_distance

View File

@ -1,3 +1,5 @@
acid_tint_medium = {r = 0.35, g = 0.56, b = 0.04, a = 1}
acid_tint_big = {r = 0.35, g = 0.56, b = 0.04, a = 1}
capsule_smoke =
{
@ -48,8 +50,7 @@ data:extend(
height = 33,
priority = "high",
blend_mode = "additive"
},
speed = 0.15
}
},
{
type = "projectile",
@ -83,8 +84,7 @@ data:extend(
width = 7,
height = 14,
priority = "high"
},
speed = 0.15
}
},
{
type = "projectile",
@ -178,13 +178,11 @@ data:extend(
type = "create-trivial-smoke",
smoke_name = "nuclear-smoke",
offset_deviation = {{-1, -1}, {1, 1}},
slow_down_factor = 1,
starting_frame = 3,
starting_frame_deviation = 5,
starting_frame_speed = 0,
starting_frame_speed_deviation = 5,
speed_from_center = 0.5,
speed_deviation = 0.2
speed_from_center = 0.5
},
{
type = "create-entity",
@ -205,6 +203,7 @@ data:extend(
{
type = "area",
target_entities = false,
trigger_from_target = true,
repeat_count = 2000,
radius = 35,
action_delivery =

View File

@ -1,4 +1,5 @@
return {
return
{
load_animations =
{
west =

View File

@ -1,3 +1,30 @@
local noise = require("noise");
local tne = noise.to_noise_expression;
local resource_autoplace = require("prototypes.entity.demo-resource-autoplace");
-- Pre-spot noise
local oil_old_autoplace =
{
order = "b",
control = "crude-oil",
-- probability_expression = oil_probability,
-- richness_expression = (oil_probability + 240000) * 300000,
-- richness_expression should be probability_expression + some amount probably
sharpness = 0.99,
max_probability = 0.02,
richness_base = 240000,
richness_multiplier = 300000,
richness_multiplier_distance_bonus = 1500,
coverage = 0.001 / 3,
peaks =
{
{
noise_layer = "crude-oil",
noise_octaves_difference = -0.5,
noise_persistence = 0.4
}
}
};
data:extend(
{
@ -19,7 +46,6 @@ data:extend(
tree_removal_max_distance = 32 * 32,
minable =
{
hardness = 1,
mining_time = 1,
results =
{
@ -34,24 +60,19 @@ data:extend(
},
collision_box = {{ -1.4, -1.4}, {1.4, 1.4}},
selection_box = {{ -0.5, -0.5}, {0.5, 0.5}},
autoplace =
{
order = "b",
control = "crude-oil",
sharpness = 0.99,
max_probability = 0.02,
richness_base = 240000,
richness_multiplier = 300000,
richness_multiplier_distance_bonus = 1500,
coverage = 0.001 / 3,
peaks =
{
{
noise_layer = "crude-oil",
noise_octaves_difference = -0.5,
noise_persistence = 0.4
}
}
-- autoplace = oil_old_autoplace,
autoplace = resource_autoplace.resource_autoplace_settings{
name = "crude-oil",
order = "c", -- Other resources are "b"; oil won't get placed if something else is already there.
base_density = 8.2,
base_spots_per_km2 = 1.8,
random_probability = 1/48,
random_spot_size_minimum = 1,
random_spot_size_maximum = 1, -- don't randomize spot size
additional_richness = 220000, -- this increases the total everywhere, so base_density needs to be decreased to compensate
has_starting_area_placement = false,
resource_index = resource_autoplace.get_next_resource_index(),
regular_rq_factor_multiplier = 1
},
stage_counts = {0},
stages =
@ -80,44 +101,26 @@ data:extend(
tree_removal_max_distance = 32 * 32,
minable =
{
hardness = 0.9,
mining_particle = "stone-particle",
mining_time = 4,
mining_time = 2,
result = "uranium-ore",
fluid_amount = 10,
required_fluid = "sulfuric-acid"
},
collision_box = {{ -0.1, -0.1}, {0.1, 0.1}},
selection_box = {{ -0.5, -0.5}, {0.5, 0.5}},
autoplace =
{
autoplace = resource_autoplace.resource_autoplace_settings{
name = "uranium-ore",
order = "c",
control = "uranium-ore",
sharpness = 1,
richness_multiplier = 3000,
richness_multiplier_distance_bonus = 30,
richness_base = 500,
coverage = 0.0003 / 2,
peaks =
{
{
noise_layer = "uranium-ore",
noise_octaves_difference = -0.85,
noise_persistence = 0.4
},
--no uranium in the starting area
{
influence = -1.0,
starting_area_weight_optimal = 1,
starting_area_weight_range = 0,
starting_area_weight_max_range = 2
},
},
--starting_area_size = 600 * 0.005,
--starting_area_amount = 600
base_density = 0.9,
base_spots_per_km2 = 1.25,
has_starting_area_placement = false,
random_spot_size_minimum = 2,
random_spot_size_maximum = 4,
resource_index = resource_autoplace.get_next_resource_index(),
regular_rq_factor_multiplier = 1
},
stage_counts = {10000, 5200, 2600, 1800, 1200, 800, 400, 80},
stage_counts = {10000, 6330, 3670, 1930, 870, 270, 100, 50},
stages =
{
sheet =

View File

@ -1,214 +1,597 @@
function spitterattackanimation(scale, tint)
function spitterattackanimation(scale, tint1, tint2)
return
{
layers =
layers=
{
{
width = 199,
height = 164,
frame_count = 22,
direction_count = 16,
scale=scale,
shift = {scale * 0.765625, scale * 0.0625},
animation_speed = 0.4,
stripes =
filenames =
{
"__base__/graphics/entity/spitter/spitter-attack-01.png",
"__base__/graphics/entity/spitter/spitter-attack-02.png",
"__base__/graphics/entity/spitter/spitter-attack-03.png",
"__base__/graphics/entity/spitter/spitter-attack-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 156,
height = 132,
frame_count = 14,
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(0, -18), scale),
scale = scale,
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-attack-1.png",
width_in_frames = 8,
height_in_frames = 8
"__base__/graphics/entity/spitter/hr-spitter-attack-01.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-02.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-03.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-04.png",
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-2.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-3.png",
width_in_frames = 6,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-4.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-5.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-6.png",
width_in_frames = 6,
height_in_frames = 8
}
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 312,
height = 264,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(0, -18), scale),
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
scale = 0.5 * scale,
}
},
{
flags = { "mask" },
width = 108,
height = 90,
frame_count = 22,
direction_count = 16,
shift = {scale * 0, scale * -0.625},
scale = scale,
tint = tint,
animation_speed = 0.4,
stripes =
filenames =
{
"__base__/graphics/entity/spitter/spitter-attack-mask1-01.png",
"__base__/graphics/entity/spitter/spitter-attack-mask1-02.png",
"__base__/graphics/entity/spitter/spitter-attack-mask1-03.png",
"__base__/graphics/entity/spitter/spitter-attack-mask1-04.png",
},
slice = 7,
lines_per_file = 8,
flags = { "mask" },
line_length = 7,
width = 156,
height = 126,
frame_count = 14,
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(0, -14), scale),
scale = scale,
tint = tint1,
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-attack-mask-1.png",
width_in_frames = 11,
height_in_frames = 16
"__base__/graphics/entity/spitter/hr-spitter-attack-mask1-01.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask1-02.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask1-03.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask1-04.png",
},
{
filename = "__base__/graphics/entity/spitter/spitter-attack-mask-2.png",
width_in_frames = 11,
height_in_frames = 16
}
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 316,
height = 246,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(-1, -13), scale),
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
scale = 0.5 * scale,
tint = tint1,
}
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-attack-mask2-01.png",
"__base__/graphics/entity/spitter/spitter-attack-mask2-02.png",
"__base__/graphics/entity/spitter/spitter-attack-mask2-03.png",
"__base__/graphics/entity/spitter/spitter-attack-mask2-04.png",
},
slice = 7,
lines_per_file = 8,
flags = { "mask" },
line_length = 7,
width = 160,
height = 124,
frame_count = 14,
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
shift = util.mul_shift(util.by_pixel(-2, -14), scale),
scale = scale,
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-attack-mask2-01.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask2-02.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask2-03.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-mask2-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 310,
height = 244,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(0, -13), scale),
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-attack-shadow-01.png",
"__base__/graphics/entity/spitter/spitter-attack-shadow-02.png",
"__base__/graphics/entity/spitter/spitter-attack-shadow-03.png",
"__base__/graphics/entity/spitter/spitter-attack-shadow-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 188,
height = 110,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(22, 0), scale),
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-attack-shadow-01.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-shadow-02.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-shadow-03.png",
"__base__/graphics/entity/spitter/hr-spitter-attack-shadow-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 370,
height = 224,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(23, -1), scale),
direction_count = 16,
run_mode = "forward-then-backward",
animation_speed = 0.4,
scale = 0.5 * scale,
draw_as_shadow = true,
}
},
}
}
end
function spitterrunanimation(scale, tint)
return
{
layers =
{
{
width = 193,
height = 164,
priority="very-low",
frame_count = 24,
direction_count = 16,
shift = {scale * 1.01562, 0},
scale = scale,
still_frame = 4,
stripes =
{
{
filename = "__base__/graphics/entity/spitter/spitter-run-1.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-run-2.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-run-3.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-run-4.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-run-5.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-run-6.png",
width_in_frames = 8,
height_in_frames = 8
}
}
},
{
width = 81,
height = 90,
frame_count = 24,
direction_count = 16,
shift = {scale * 0.015625, scale * -0.6875},
scale = scale,
filename = "__base__/graphics/entity/spitter/spitter-run-mask.png",
flags = { "mask" },
tint = tint
}
}
}
end
spitter_alternative_attacking_animation_sequence =
{
warmup_frame_sequence = { 1, 2, 3, 4, 5, 6 },
warmup2_frame_sequence = { 7, 7, 7, 7, 7, 7 },
attacking_frame_sequence = { 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 13, 12, 11, 10, 9, 8 },
cooldown_frame_sequence = { 7 },
prepared_frame_sequence = { 7 },
back_to_walk_frame_sequence = { 6, 5, 4, 3, 2, 1 },
function spitterdyinganimation(scale, tint)
warmup_animation_speed = 1 / 6 * 0.4,
attacking_animation_speed = 1 / 16 * 0.4,
cooldown_animation_speed = 1 / 1 * 0.4 * 0.125;
prepared_animation_speed = 1 / 1 * 0.5 * 0.4,
back_to_walk_animation_speed = 1 / 6 * 0.4,
}
function spitterrunanimation(scale, tint1, tint2)
return
{
layers =
layers=
{
{
width = 225,
height = 174,
filenames =
{
"__base__/graphics/entity/spitter/spitter-run-01.png",
"__base__/graphics/entity/spitter/spitter-run-02.png",
"__base__/graphics/entity/spitter/spitter-run-03.png",
"__base__/graphics/entity/spitter/spitter-run-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 124,
height = 110,
frame_count = 16,
direction_count = 16,
shift = {scale * 0.546875, scale * 0.21875},
priority = "very-low",
shift = util.mul_shift(util.by_pixel(0, -12), scale),
scale = scale,
stripes =
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-die-1.png",
width_in_frames = 8,
height_in_frames = 8
"__base__/graphics/entity/spitter/hr-spitter-run-01.png",
"__base__/graphics/entity/spitter/hr-spitter-run-02.png",
"__base__/graphics/entity/spitter/hr-spitter-run-03.png",
"__base__/graphics/entity/spitter/hr-spitter-run-04.png",
},
{
filename = "__base__/graphics/entity/spitter/spitter-die-2.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-die-3.png",
width_in_frames = 8,
height_in_frames = 8
},
{
filename = "__base__/graphics/entity/spitter/spitter-die-4.png",
width_in_frames = 8,
height_in_frames = 8
}
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 248,
height = 220,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(0, -12), scale),
direction_count = 16,
scale = 0.5 * scale,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-run-mask1-01.png",
"__base__/graphics/entity/spitter/spitter-run-mask1-02.png",
"__base__/graphics/entity/spitter/spitter-run-mask1-03.png",
"__base__/graphics/entity/spitter/spitter-run-mask1-04.png",
},
slice = 8,
lines_per_file = 8,
flags = { "mask" },
width = 166,
height = 144,
line_length = 8,
width = 124,
height = 100,
frame_count = 16,
direction_count = 16,
shift = {scale * 0, scale * -0.0625},
priority = "very-low",
tint = tint,
shift = util.mul_shift(util.by_pixel(0, -18), scale),
scale = scale,
stripes =
tint = tint1,
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-die-mask-1.png",
width_in_frames = 8,
height_in_frames = 8
"__base__/graphics/entity/spitter/hr-spitter-run-mask1-01.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask1-02.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask1-03.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask1-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 248,
height = 194,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(0, -17), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-run-mask2-01.png",
"__base__/graphics/entity/spitter/spitter-run-mask2-02.png",
"__base__/graphics/entity/spitter/spitter-run-mask2-03.png",
"__base__/graphics/entity/spitter/spitter-run-mask2-04.png",
},
slice = 8,
lines_per_file = 8,
flags = { "mask" },
line_length = 8,
width = 124,
height = 98,
frame_count = 16,
direction_count = 16,
shift = util.mul_shift(util.by_pixel(0, -18), scale),
scale = scale,
tint = tint2,
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-die-mask-2.png",
width_in_frames = 8,
height_in_frames = 8
"__base__/graphics/entity/spitter/hr-spitter-run-mask2-01.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask2-02.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask2-03.png",
"__base__/graphics/entity/spitter/hr-spitter-run-mask2-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 252,
height = 196,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(-1, -18), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-run-shadow-01.png",
"__base__/graphics/entity/spitter/spitter-run-shadow-02.png",
"__base__/graphics/entity/spitter/spitter-run-shadow-03.png",
"__base__/graphics/entity/spitter/spitter-run-shadow-04.png",
},
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 154,
height = 88,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(16, 0), scale),
direction_count = 16,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
filename = "__base__/graphics/entity/spitter/spitter-die-mask-3.png",
width_in_frames = 8,
height_in_frames = 8
"__base__/graphics/entity/spitter/hr-spitter-run-shadow-01.png",
"__base__/graphics/entity/spitter/hr-spitter-run-shadow-02.png",
"__base__/graphics/entity/spitter/hr-spitter-run-shadow-03.png",
"__base__/graphics/entity/spitter/hr-spitter-run-shadow-04.png",
},
{
filename = "__base__/graphics/entity/spitter/spitter-die-mask-4.png",
width_in_frames = 8,
height_in_frames = 8
}
slice = 8,
lines_per_file = 8,
line_length = 8,
width = 306,
height = 180,
frame_count = 16,
shift = util.mul_shift(util.by_pixel(16, -1), scale),
direction_count = 16,
scale = 0.5 * scale,
draw_as_shadow = true,
}
}
}
}
end
function spitterdyinganimation(scale, tint1, tint2)
return
{
layers=
{
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-die-01.png",
"__base__/graphics/entity/spitter/spitter-die-02.png",
"__base__/graphics/entity/spitter/spitter-die-03.png",
"__base__/graphics/entity/spitter/spitter-die-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 142,
height = 128,
frame_count = 14,
direction_count = 16,
shift= util.mul_shift(util.by_pixel(0, -16), scale),
scale = scale,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-die-01.png",
"__base__/graphics/entity/spitter/hr-spitter-die-02.png",
"__base__/graphics/entity/spitter/hr-spitter-die-03.png",
"__base__/graphics/entity/spitter/hr-spitter-die-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 282,
height = 254,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(0, -15), scale),
direction_count = 16,
scale = 0.5 * scale,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-die-mask1-01.png",
"__base__/graphics/entity/spitter/spitter-die-mask1-02.png",
"__base__/graphics/entity/spitter/spitter-die-mask1-03.png",
"__base__/graphics/entity/spitter/spitter-die-mask1-04.png",
},
slice = 7,
lines_per_file = 8,
flags = { "mask" },
line_length = 7,
width = 130,
height = 114,
frame_count = 14,
direction_count = 16,
shift = util.mul_shift(util.by_pixel(0, -16), scale),
scale = scale,
tint = tint1,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-die-mask1-01.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask1-02.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask1-03.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask1-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 258,
height = 228,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(0, -16), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint1,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-die-mask2-01.png",
"__base__/graphics/entity/spitter/spitter-die-mask2-02.png",
"__base__/graphics/entity/spitter/spitter-die-mask2-03.png",
"__base__/graphics/entity/spitter/spitter-die-mask2-04.png",
},
slice = 7,
lines_per_file = 8,
flags = { "mask" },
line_length = 7,
width = 128,
height = 114,
frame_count = 14,
direction_count = 16,
shift = util.mul_shift(util.by_pixel(0, -16), scale),
scale = scale,
tint = tint2,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-die-mask2-01.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask2-02.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask2-03.png",
"__base__/graphics/entity/spitter/hr-spitter-die-mask2-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 260,
height = 228,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(-1, -16), scale),
direction_count = 16,
scale = 0.5 * scale,
tint = tint2,
}
},
{
filenames =
{
"__base__/graphics/entity/spitter/spitter-die-shadow-01.png",
"__base__/graphics/entity/spitter/spitter-die-shadow-02.png",
"__base__/graphics/entity/spitter/spitter-die-shadow-03.png",
"__base__/graphics/entity/spitter/spitter-die-shadow-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 180,
height = 104,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(18, -2), scale),
direction_count = 16,
scale = scale,
draw_as_shadow = true,
hr_version =
{
filenames =
{
"__base__/graphics/entity/spitter/hr-spitter-die-shadow-01.png",
"__base__/graphics/entity/spitter/hr-spitter-die-shadow-02.png",
"__base__/graphics/entity/spitter/hr-spitter-die-shadow-03.png",
"__base__/graphics/entity/spitter/hr-spitter-die-shadow-04.png",
},
slice = 7,
lines_per_file = 8,
line_length = 7,
width = 356,
height = 204,
frame_count = 14,
shift = util.mul_shift(util.by_pixel(19, -1), scale),
direction_count = 16,
scale = 0.5 * scale,
draw_as_shadow = true,
}
},
}
}
end
function add_spitter_die_animation(scale, tint1, tint2, corpse)
corpse.animation = spitterdyinganimation(scale, tint1, tint2)
corpse.dying_speed = 0.04
corpse.time_before_removed = 15 * 60 * 60
corpse.direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }
corpse.shuffle_directions_at_frame = 4
corpse.final_render_layer = "lower-object-above-shadow"
corpse.ground_patch_render_layer = "decals" -- "transport-belt-integration"
corpse.ground_patch_fade_in_delay = 1 / 0.02 -- in ticks; 1/dying_speed to delay the animation until dying animation finishes
corpse.ground_patch_fade_in_speed = 0.002
corpse.ground_patch_fade_out_start = 50 * 60
corpse.ground_patch_fade_out_duration = 20 * 60
local a = 1
local d = 0.9
corpse.ground_patch =
{
sheet =
{
filename = "__base__/graphics/entity/biter/blood-puddle-var-main.png",
flags = { "low-object" },
line_length = 4,
variation_count = 4,
frame_count = 1,
width = 84,
height = 68,
shift = util.by_pixel(1, 0),
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
scale = scale,
hr_version =
{
filename = "__base__/graphics/entity/biter/hr-blood-puddle-var-main.png",
flags = { "low-object" },
line_length = 4,
variation_count = 4,
frame_count = 1,
width = 164,
height = 134,
shift = util.by_pixel(-0.5,-0.5),
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
scale = 0.5 * scale
}
}
}
return corpse
end
function spitter_shoot_shiftings(scale, offset)
return
{
{0.0625 * 0, util.add_shift(util.mul_shift(util.by_pixel( 0, -135), scale * 0.5), util.by_pixel( offset * 0, -offset * 1))},
{0.0625 * 1, util.add_shift(util.mul_shift(util.by_pixel( 24, -133), scale * 0.5), util.by_pixel( offset * 0.38, -offset * 0.92))},
{0.0625 * 2, util.add_shift(util.mul_shift(util.by_pixel( 48, -121), scale * 0.5), util.by_pixel( offset * 0.71, -offset * 0.71))},
{0.0625 * 3, util.add_shift(util.mul_shift(util.by_pixel( 76, -105), scale * 0.5), util.by_pixel( offset * 0.92, -offset * 0.38))},
{0.0625 * 4, util.add_shift(util.mul_shift(util.by_pixel( 86, -73), scale * 0.5), util.by_pixel( offset * 1, offset * 0))},
{0.0625 * 5, util.add_shift(util.mul_shift(util.by_pixel( 74, -43), scale * 0.5), util.by_pixel( offset * 0.92, offset * 0.38))},
{0.0625 * 6, util.add_shift(util.mul_shift(util.by_pixel( 52, -25), scale * 0.5), util.by_pixel( offset * 0.71, offset * 0.71))},
{0.0625 * 7, util.add_shift(util.mul_shift(util.by_pixel( 26, -17), scale * 0.5), util.by_pixel( offset * 0.38, offset * 0.92))},
{0.0625 * 8, util.add_shift(util.mul_shift(util.by_pixel( 1, -13), scale * 0.5), util.by_pixel( offset * 0, offset * 1))},
{0.0625 * 9, util.add_shift(util.mul_shift(util.by_pixel( -27, -16), scale * 0.5), util.by_pixel( -offset * 0.38, offset * 0.92))},
{0.0625 * 10, util.add_shift(util.mul_shift(util.by_pixel( -51, -23), scale * 0.5), util.by_pixel( -offset * 0.71, offset * 0.71))},
{0.0625 * 11, util.add_shift(util.mul_shift(util.by_pixel( -71, -41), scale * 0.5), util.by_pixel( -offset * 0.92, offset * 0.38))},
{0.0625 * 12, util.add_shift(util.mul_shift(util.by_pixel( -85, -71), scale * 0.5), util.by_pixel( -offset * 1, offset * 0))},
{0.0625 * 13, util.add_shift(util.mul_shift(util.by_pixel( -71, -103), scale * 0.5), util.by_pixel( -offset * 0.92, -offset * 0.38))},
{0.0625 * 14, util.add_shift(util.mul_shift(util.by_pixel( -49, -119), scale * 0.5), util.by_pixel( -offset * 0.71, -offset * 0.71))},
{0.0625 * 15, util.add_shift(util.mul_shift(util.by_pixel( -23, -125), scale * 0.5), util.by_pixel( -offset * 0.38, -offset * 0.92))}
}
end

View File

@ -1,321 +1,105 @@
-- @see demo-transport-belt-pictures
---------------------- FAST BELT PICTURES
fast_belt_horizontal =
fast_belt_animation_set =
{
animation_set =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 32,
direction_count = 20,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
scale = 0.5,
frame_count = 32,
line_length = 16,
scale = 0.5
direction_count = 20
}
}
fast_belt_vertical =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 40,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 160,
scale = 0.5
}
}
fast_belt_ending_top =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 80,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 320,
scale = 0.5
}
}
fast_belt_ending_bottom =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 120,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 480,
scale = 0.5
}
}
fast_belt_ending_side =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 160,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 640,
scale = 0.5
}
}
fast_belt_starting_top =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 200,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 800,
scale = 0.5
}
}
fast_belt_starting_bottom =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 240,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 960,
scale = 0.5
}
}
fast_belt_starting_side =
{
filename = "__base__/graphics/entity/fast-transport-belt/fast-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 280,
hr_version =
{
filename = "__base__/graphics/entity/fast-transport-belt/hr-fast-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 1120,
scale = 0.5
}
}
},
---------------------- EXPRESS BELT PICTURES
express_belt_horizontal =
east_index = 1,
west_index = 2,
north_index = 3,
south_index = 4,
east_to_north_index = 5,
north_to_east_index = 6,
west_to_north_index = 7,
north_to_west_index = 8,
south_to_east_index = 9,
east_to_south_index = 10,
south_to_west_index = 11,
west_to_south_index = 12,
starting_south_index = 13,
ending_south_index = 14,
starting_west_index = 15,
ending_west_index = 16,
starting_north_index = 17,
ending_north_index = 18,
starting_east_index = 19,
ending_east_index = 20
}
express_belt_animation_set =
{
animation_set =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
width = 64,
height = 64,
frame_count = 32,
direction_count = 20,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
width = 128,
height = 128,
scale = 0.5,
frame_count = 32,
line_length = 16,
scale = 0.5
direction_count = 20
}
}
express_belt_vertical =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 40,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 160,
scale = 0.5
}
}
express_belt_ending_top =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 80,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 320,
scale = 0.5
}
}
express_belt_ending_bottom =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 120,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 480,
scale = 0.5
}
}
express_belt_ending_side =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 160,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 640,
scale = 0.5
}
}
express_belt_starting_top =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 200,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 800,
scale = 0.5
}
}
express_belt_starting_bottom =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 240,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 960,
scale = 0.5
}
}
express_belt_starting_side =
{
filename = "__base__/graphics/entity/express-transport-belt/express-transport-belt.png",
priority = "extra-high",
width = 40,
height = 40,
frame_count = 32,
y = 280,
hr_version =
{
filename = "__base__/graphics/entity/express-transport-belt/hr-express-transport-belt.png",
priority = "extra-high",
width = 80,
height = 80,
frame_count = 32,
line_length = 16,
y = 1120,
scale = 0.5
}
}
},
east_index = 1,
west_index = 2,
north_index = 3,
south_index = 4,
east_to_north_index = 5,
north_to_east_index = 6,
west_to_north_index = 7,
north_to_west_index = 8,
south_to_east_index = 9,
east_to_south_index = 10,
south_to_west_index = 11,
west_to_south_index = 12,
starting_south_index = 13,
ending_south_index = 14,
starting_west_index = 15,
ending_west_index = 16,
starting_north_index = 17,
ending_north_index = 18,
starting_east_index = 19,
ending_east_index = 20
}

File diff suppressed because it is too large Load Diff

View File

@ -120,7 +120,7 @@ data:extend(
buffer_capacity = "20MJ",
input_flow_limit = "200MW",
output_flow_limit = "200MW",
usage_priority = "terciary"
usage_priority = "tertiary"
},
categories = {"armor"}
},
@ -146,7 +146,7 @@ data:extend(
buffer_capacity = "100MJ",
input_flow_limit = "1GW",
output_flow_limit = "1GW",
usage_priority = "terciary"
usage_priority = "tertiary"
},
categories = {"armor"}
},
@ -171,7 +171,7 @@ data:extend(
type = "electric",
usage_priority = "primary-output"
},
power = "10kW",
power = "30kW",
categories = {"armor"}
},
{
@ -220,39 +220,34 @@ data:extend(
usage_priority = "secondary-input",
buffer_capacity = "220kJ"
},
attack_parameters =
{
type = "projectile",
ammo_category = "electric",
type = "beam",
cooldown = 20,
damage_modifier = 15,
projectile_center = {0, 0},
projectile_creation_distance = 0.6,
range = 15,
sound = make_laser_sounds(),
--source_direction_count = 64,
--source_offset = {0, -3.423489 / 4},
damage_modifier = 4,
ammo_type =
{
type = "projectile",
category = "electric",
energy_consumption = "200kJ",
projectile = "laser",
speed = 1,
category = "laser-turret",
energy_consumption = "50kJ",
action =
{
type = "direct",
action_delivery =
{
type = "direct",
action_delivery =
{
{
type = "projectile",
projectile = "laser",
starting_speed = 0.28
}
}
type = "beam",
beam = "laser-beam",
max_length = 15,
duration = 20,
source_offset = {0, -1.31439 }
}
}
}
},
automatic = true,
categories = {"armor"}
},

View File

@ -11,9 +11,7 @@ data:extend(
flow_color = {r=0.7, g=0.7, b=0.7},
icon = "__base__/graphics/icons/fluid/water.png",
icon_size = 32,
order = "a[fluid]-a[water]",
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59
order = "a[fluid]-a[water]"
},
{
type = "fluid",
@ -26,9 +24,7 @@ data:extend(
base_color = {r=0.5, g=0.5, b=0.5},
flow_color = {r=1.0, g=1.0, b=1.0},
order = "a[fluid]-b[steam]",
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
gas_temperature = 15,
auto_barrel = false
}
},
})

View File

@ -11,9 +11,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/crude-oil.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
-- fuel_value = "8MJ",
order = "a[fluid]-b[crude-oil]"
},
@ -27,8 +24,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/heavy-oil.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
order = "a[fluid]-c[heavy-oil]"
},
@ -42,8 +37,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/light-oil.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
order = "a[fluid]-d[light-oil]"
},
@ -57,8 +50,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/petroleum-gas.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
order = "a[fluid]-e[petroleum-gas]"
},
@ -72,8 +63,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/lubricant.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
order = "e[lubricant]"
},
@ -87,8 +76,6 @@ data:extend(
max_temperature = 100,
icon = "__base__/graphics/icons/fluid/sulfuric-acid.png",
icon_size = 32,
pressure_to_speed_ratio = 0.4,
flow_to_energy_ratio = 0.59,
order = "a[fluid]-f[sulfuric-acid]"
}
})

View File

@ -5,7 +5,6 @@ data:extend(
name = "piercing-rounds-magazine",
icon = "__base__/graphics/icons/piercing-rounds-magazine.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "bullet",
@ -44,7 +43,6 @@ data:extend(
name = "uranium-rounds-magazine",
icon = "__base__/graphics/icons/uranium-rounds-magazine.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "bullet",
@ -83,7 +81,6 @@ data:extend(
name = "flamethrower-ammo",
icon = "__base__/graphics/icons/flamethrower-ammo.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
{
@ -134,7 +131,6 @@ data:extend(
name = "rocket",
icon = "__base__/graphics/icons/rocket.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "rocket",
@ -163,7 +159,6 @@ data:extend(
name = "explosive-rocket",
icon = "__base__/graphics/icons/explosive-rocket.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "rocket",
@ -192,7 +187,6 @@ data:extend(
name = "atomic-bomb",
icon = "__base__/graphics/icons/atomic-bomb.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
range_modifier = 3,
@ -224,7 +218,6 @@ data:extend(
name = "shotgun-shell",
icon = "__base__/graphics/icons/shotgun-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "shotgun-shell",
@ -271,7 +264,6 @@ data:extend(
name = "piercing-shotgun-shell",
icon = "__base__/graphics/icons/piercing-shotgun-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "shotgun-shell",
@ -318,7 +310,7 @@ data:extend(
name = "railgun-dart",
icon = "__base__/graphics/icons/railgun-ammo.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
ammo_type =
{
category = "railgun",
@ -356,7 +348,6 @@ data:extend(
name = "cannon-shell",
icon = "__base__/graphics/icons/cannon-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "cannon-shell",
@ -390,7 +381,6 @@ data:extend(
name = "explosive-cannon-shell",
icon = "__base__/graphics/icons/explosive-cannon-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "cannon-shell",
@ -424,7 +414,6 @@ data:extend(
name = "uranium-cannon-shell",
icon = "__base__/graphics/icons/uranium-cannon-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "cannon-shell",
@ -457,7 +446,6 @@ data:extend(
name = "explosive-uranium-cannon-shell",
icon = "__base__/graphics/icons/explosive-uranium-cannon-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "cannon-shell",
@ -473,6 +461,7 @@ data:extend(
direction_deviation = 0.1,
range_deviation = 0.1,
max_range = 30,
min_range = 5,
source_effects =
{
type = "create-explosion",
@ -490,7 +479,6 @@ data:extend(
name = "artillery-shell",
icon = "__base__/graphics/icons/artillery-shell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "artillery-shell",

View File

@ -5,7 +5,6 @@ data:extend(
name = "heavy-armor",
icon = "__base__/graphics/icons/heavy-armor.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
resistances =
{
{
@ -20,8 +19,8 @@ data:extend(
},
{
type = "acid",
decrease = 3,
percent = 30
decrease = 0,
percent = 40
},
{
type = "fire",
@ -29,17 +28,16 @@ data:extend(
percent = 30
}
},
durability = 5000,
subgroup = "armor",
order = "b[heavy-armor]",
stack_size = 10
stack_size = 1,
infinite = true
},
{
type = "armor",
name = "modular-armor",
icon = "__base__/graphics/icons/modular-armor.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
resistances =
{
{
@ -49,8 +47,8 @@ data:extend(
},
{
type = "acid",
decrease = 5,
percent = 30
decrease = 0,
percent = 50
},
{
type = "explosion",
@ -63,10 +61,10 @@ data:extend(
percent = 40
}
},
durability = 10000,
subgroup = "armor",
order = "c[modular-armor]",
stack_size = 1,
infinite = true,
equipment_grid = "small-equipment-grid",
inventory_size_bonus = 10
},
@ -75,7 +73,6 @@ data:extend(
name = "power-armor",
icon = "__base__/graphics/icons/power-armor.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
resistances =
{
{
@ -85,8 +82,8 @@ data:extend(
},
{
type = "acid",
decrease = 7,
percent = 30
decrease = 0,
percent = 60
},
{
type = "explosion",
@ -99,10 +96,10 @@ data:extend(
percent = 60
}
},
durability = 15000,
subgroup = "armor",
order = "d[power-armor]",
stack_size = 1,
infinite = true,
equipment_grid = "medium-equipment-grid",
inventory_size_bonus = 20
},
@ -111,7 +108,6 @@ data:extend(
name = "power-armor-mk2",
icon = "__base__/graphics/icons/power-armor-mk2.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
resistances =
{
{
@ -121,8 +117,8 @@ data:extend(
},
{
type = "acid",
decrease = 10,
percent = 40
decrease = 0,
percent = 70
},
{
type = "explosion",
@ -135,10 +131,10 @@ data:extend(
percent = 70
}
},
durability = 20000,
subgroup = "armor",
order = "e[power-armor-mk2]",
stack_size = 1,
infinite = true,
equipment_grid = "large-equipment-grid",
inventory_size_bonus = 30
}

View File

@ -5,7 +5,6 @@ data:extend(
name = "grenade",
icon = "__base__/graphics/icons/grenade.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -42,7 +41,6 @@ data:extend(
name = "cluster-grenade",
icon = "__base__/graphics/icons/cluster-grenade.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -79,7 +77,6 @@ data:extend(
name = "poison-capsule",
icon = "__base__/graphics/icons/poison-capsule.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -116,7 +113,6 @@ data:extend(
name = "slowdown-capsule",
icon = "__base__/graphics/icons/slowdown-capsule.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -153,7 +149,6 @@ data:extend(
name = "defender-capsule",
icon = "__base__/graphics/icons/defender.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -190,7 +185,6 @@ data:extend(
name = "distractor-capsule",
icon = "__base__/graphics/icons/distractor.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -227,7 +221,6 @@ data:extend(
name = "destroyer-capsule",
icon = "__base__/graphics/icons/destroyer.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "throw",
@ -264,7 +257,6 @@ data:extend(
name = "discharge-defense-remote",
icon = "__base__/graphics/equipment/discharge-defense-equipment-ability.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "equipment-remote",
@ -279,7 +271,7 @@ data:extend(
name = "cliff-explosives",
icon = "__base__/graphics/icons/cliff-explosives.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hide-from-bonus-gui"},
flags = {"hide-from-bonus-gui"},
capsule_action =
{
type = "destroy-cliffs",
@ -308,6 +300,32 @@ data:extend(
}
}
},
robot_action =
{
type = "direct",
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "ground-explosion"
},
{
type = "create-entity",
entity_name = "small-scorchmark",
check_buildability = true
},
{
type = "destroy-cliffs",
radius = 1.5,
explosion = "explosion"
}
}
}
},
subgroup = "terrain",
order = "d[cliff-explosives]",
stack_size = 20
@ -317,7 +335,6 @@ data:extend(
name = "artillery-targeting-remote",
icon = "__base__/graphics/icons/artillery-targeting-remote.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
capsule_action =
{
type = "artillery-remote",

View File

@ -5,7 +5,6 @@ data:extend(
name = "firearm-magazine",
icon = "__base__/graphics/icons/firearm-magazine.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
ammo_type =
{
category = "bullet",

View File

@ -5,7 +5,6 @@ data:extend(
name = "light-armor",
icon = "__base__/graphics/icons/light-armor.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
resistances =
{
{
@ -16,7 +15,7 @@ data:extend(
{
type = "acid",
decrease = 0,
percent = 10
percent = 20
},
{
type = "explosion",
@ -29,10 +28,10 @@ data:extend(
percent = 10
}
},
durability = 1000,
subgroup = "armor",
order = "a[light-armor]",
stack_size = 10
stack_size = 1,
infinite = true
}
}
)

View File

@ -7,7 +7,6 @@ data:extend(
name = "pistol",
icon = "__base__/graphics/icons/pistol.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "a[basic-clips]-a[pistol]",
attack_parameters =
@ -38,7 +37,6 @@ data:extend(
name = "submachine-gun",
icon = "__base__/graphics/icons/submachine-gun.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "a[basic-clips]-b[submachine-gun]",
attack_parameters =

View File

@ -5,7 +5,6 @@ data:extend(
name = "stone-brick",
icon = "__base__/graphics/icons/stone-brick.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "a[stone-brick]",
stack_size = 100,
@ -18,14 +17,13 @@ data:extend(
},
{
type = "item",
name = "raw-wood",
icon = "__base__/graphics/icons/raw-wood.png",
name = "wood",
icon = "__base__/graphics/icons/wood.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
fuel_value = "4MJ",
fuel_value = "2MJ",
fuel_category = "chemical",
subgroup = "raw-resource",
order = "a[raw-wood]",
order = "a[wood]",
stack_size = 100
},
{
@ -34,9 +32,8 @@ data:extend(
icon = "__base__/graphics/icons/coal.png",
icon_size = 32,
dark_background_icon = "__base__/graphics/icons/coal-dark-background.png",
flags = {"goes-to-main-inventory"},
fuel_category = "chemical",
fuel_value = "8MJ",
fuel_value = "4MJ",
subgroup = "raw-resource",
order = "b[coal]",
stack_size = 50
@ -46,7 +43,6 @@ data:extend(
name = "stone",
icon = "__base__/graphics/icons/stone.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-resource",
order = "d[stone]",
stack_size = 50
@ -56,7 +52,6 @@ data:extend(
name = "iron-ore",
icon = "__base__/graphics/icons/iron-ore.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-resource",
order = "e[iron-ore]",
stack_size = 50
@ -66,29 +61,15 @@ data:extend(
name = "copper-ore",
icon = "__base__/graphics/icons/copper-ore.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-resource",
order = "f[copper-ore]",
stack_size = 50
},
{
type = "item",
name = "wood",
icon = "__base__/graphics/icons/wood.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
fuel_category = "chemical",
fuel_value = "2MJ",
subgroup = "raw-material",
order = "a[wood]",
stack_size = 50
},
{
type = "item",
name = "iron-plate",
icon = "__base__/graphics/icons/iron-plate.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "b[iron-plate]",
stack_size = 100
@ -98,7 +79,6 @@ data:extend(
name = "copper-plate",
icon = "__base__/graphics/icons/copper-plate.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "c[copper-plate]",
stack_size = 100
@ -108,17 +88,16 @@ data:extend(
name = "copper-cable",
icon = "__base__/graphics/icons/copper-cable.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "a[copper-cable]",
stack_size = 200
stack_size = 200,
wire_count = 1
},
{
type = "item",
name = "iron-stick",
icon = "__base__/graphics/icons/iron-stick.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "b[iron-stick]",
stack_size = 100
@ -128,7 +107,6 @@ data:extend(
name = "iron-gear-wheel",
icon = "__base__/graphics/icons/iron-gear-wheel.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "c[iron-gear-wheel]",
stack_size = 100
@ -138,7 +116,6 @@ data:extend(
name = "electronic-circuit",
icon = "__base__/graphics/icons/electronic-circuit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "e[electronic-circuit]",
stack_size = 200
@ -148,9 +125,6 @@ data:extend(
name = "wooden-chest",
icon = "__base__/graphics/icons/wooden-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
fuel_category = "chemical",
fuel_value = "4MJ",
subgroup = "storage",
order = "a[items]-a[wooden-chest]",
place_result = "wooden-chest",
@ -161,7 +135,6 @@ data:extend(
name = "stone-furnace",
icon = "__base__/graphics/icons/stone-furnace.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "smelting-machine",
order = "a[stone-furnace]",
place_result = "stone-furnace",
@ -172,7 +145,6 @@ data:extend(
name = "burner-mining-drill",
icon = "__base__/graphics/icons/burner-mining-drill.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "extraction-machine",
order = "a[items]-a[burner-mining-drill]",
place_result = "burner-mining-drill",
@ -183,7 +155,6 @@ data:extend(
name = "electric-mining-drill",
icon = "__base__/graphics/icons/electric-mining-drill.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "extraction-machine",
order = "a[items]-b[electric-mining-drill]",
place_result = "electric-mining-drill",
@ -194,7 +165,6 @@ data:extend(
name = "transport-belt",
icon = "__base__/graphics/icons/transport-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "a[transport-belt]-a[transport-belt]",
place_result = "transport-belt",
@ -205,7 +175,6 @@ data:extend(
name = "burner-inserter",
icon = "__base__/graphics/icons/burner-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "a[burner-inserter]",
place_result = "burner-inserter",
@ -216,7 +185,6 @@ data:extend(
name = "inserter",
icon = "__base__/graphics/icons/inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "b[inserter]",
place_result = "inserter",
@ -227,7 +195,6 @@ data:extend(
name = "offshore-pump",
icon = "__base__/graphics/icons/offshore-pump.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "extraction-machine",
order = "b[fluids]-a[offshore-pump]",
place_result = "offshore-pump",
@ -238,7 +205,6 @@ data:extend(
name = "pipe",
icon = "__base__/graphics/icons/pipe.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[pipe]-a[pipe]",
place_result = "pipe",
@ -249,7 +215,6 @@ data:extend(
name = "boiler",
icon = "__base__/graphics/icons/boiler.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "b[steam-power]-a[boiler]",
place_result = "boiler",
@ -260,7 +225,6 @@ data:extend(
name = "steam-engine",
icon = "__base__/graphics/icons/steam-engine.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "b[steam-power]-b[steam-engine]",
place_result = "steam-engine",
@ -271,12 +235,9 @@ data:extend(
name = "small-electric-pole",
icon = "__base__/graphics/icons/small-electric-pole.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[energy]-a[small-electric-pole]",
place_result = "small-electric-pole",
fuel_category = "chemical",
fuel_value = "4MJ",
stack_size = 50
},
{
@ -284,7 +245,6 @@ data:extend(
name = "radar",
icon = "__base__/graphics/icons/radar.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "d[radar]-a[radar]",
place_result = "radar",
@ -295,7 +255,7 @@ data:extend(
name = "computer",
icon = "__base__/graphics/icons/computer.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "defensive-structure",
order = "g[computer]",
stack_size = 1
@ -305,7 +265,7 @@ data:extend(
name = "small-plane",
icon = "__base__/graphics/icons/small-plane.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "transport",
order = "b[personal-transport]-c[small-plane]",
stack_size = 1
@ -315,7 +275,6 @@ data:extend(
name = "small-lamp",
icon = "__base__/graphics/icons/small-lamp.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "circuit-network",
order = "a[light]-a[small-lamp]",
place_result = "small-lamp",
@ -326,7 +285,6 @@ data:extend(
name = "pipe-to-ground",
icon = "__base__/graphics/icons/pipe-to-ground.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[pipe]-b[pipe-to-ground]",
place_result = "pipe-to-ground",
@ -337,7 +295,6 @@ data:extend(
name = "assembling-machine-1",
icon = "__base__/graphics/icons/assembling-machine-1.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "a[assembling-machine-1]",
place_result = "assembling-machine-1",
@ -348,27 +305,26 @@ data:extend(
name = "red-wire",
icon = "__base__/graphics/icons/red-wire.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "circuit-network",
order = "b[wires]-a[red-wire]",
stack_size = 200
stack_size = 200,
wire_count = 1
},
{
type = "item",
name = "green-wire",
icon = "__base__/graphics/icons/green-wire.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "circuit-network",
order = "b[wires]-b[green-wire]",
stack_size = 200
stack_size = 200,
wire_count = 1
},
{
type = "capsule",
name = "raw-fish",
icon = "__base__/graphics/icons/fish.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "raw-resource",
capsule_action =
{
@ -407,7 +363,6 @@ data:extend(
name = "repair-pack",
icon = "__base__/graphics/icons/repair-pack.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "tool",
order = "b[repair]-a[repair-pack]",
speed = 2,
@ -417,13 +372,133 @@ data:extend(
{
type = "item",
name = "stone-wall",
icon = "__base__/graphics/icons/stone-wall.png",
icon = "__base__/graphics/icons/wall.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "a[stone-wall]-a[stone-wall]",
place_result = "stone-wall",
stack_size = 100
}
},
{
type = "item",
name = "escape-pod-assembler",
icon = "__base__/graphics/icons/assembling-machine-0.png",
icon_size = 32,
flags = {'hidden'},
subgroup = "production-machine",
order = "a[assembling-machine-0]",
place_result = "escape-pod-assembler",
stack_size = 50
},
{
type = "item",
name = "lab",
icon = "__base__/graphics/icons/lab.png",
icon_size = 32,
subgroup = "production-machine",
order = "g[lab]",
place_result = "lab",
stack_size = 10
},
{
type = "item",
name = "escape-pod-lab",
icon = "__base__/graphics/icons/lab.png",
icon_size = 32,
flags = {'hidden'},
subgroup = "production-machine",
order = "g[lab]",
place_result = "escape-pod-lab",
stack_size = 10
},
{
type = "item",
name = "pollution",
icon = "__base__/graphics/icons/fluid/pollution.png",
icon_size = 32,
flags = {'hidden'},
subgroup = "intermediate-product",
order = "a[fluid]-b[pollution]",
stack_size = 500,
},
{
type = "item",
name = "escape-pod-power",
icons = { {icon = "__base__/graphics/icons/accumulator.png", tint = {r=1, g=0.8, b=1, a=1}} },
icon_size = 32,
flags = {"hidden"},
subgroup = "energy",
order = "e[electric-energy-interface]-b[electric-energy-interface]",
place_result = "escape-pod-power",
stack_size = 50
},
{
type = "copy-paste-tool",
name = "copy-paste-tool",
icon = "__base__/graphics/icons/copy-paste-tool.png",
icon_size = 32,
flags = {"only-in-cursor", "hidden"},
subgroup = "tool",
order = "c[automated-construction]-x",
stack_size = 1,
stackable = false,
draw_label_for_cursor_render = true,
selection_color = {0, 1, 0},
alt_selection_color = {0, 1, 1},
selection_mode = {"blueprint"},
alt_selection_mode = {"blueprint"},
selection_cursor_box_type = "copy",
alt_selection_cursor_box_type = "copy",
-- mouse_cursor = "selection-tool-cursor"
},
{
type = "copy-paste-tool",
name = "cut-paste-tool",
icon = "__base__/graphics/icons/cut-paste-tool.png",
icon_size = 32,
flags = {"only-in-cursor", "hidden"},
subgroup = "tool",
order = "c[automated-construction]-x",
stack_size = 1,
stackable = false,
draw_label_for_cursor_render = true,
selection_color = {1, 0, 0},
alt_selection_color = {1, 1, 0},
selection_mode = {"deconstruct"},
alt_selection_mode = {"deconstruct"},
selection_cursor_box_type = "copy",
alt_selection_cursor_box_type = "copy",
cuts = true
},
{
type = "blueprint",
name = "blueprint",
icon = "__base__/graphics/icons/blueprint.png",
icon_size = 32,
subgroup = "tool",
order = "c[automated-construction]-a[blueprint]",
stack_size = 1,
stackable = false,
draw_label_for_cursor_render = true,
item_to_clear = "electronic-circuit",
selection_color = {0, 1, 0},
alt_selection_color = {0, 1, 0},
selection_mode = {"blueprint"},
alt_selection_mode = {"blueprint"},
selection_cursor_box_type = "copy",
alt_selection_cursor_box_type = "copy"
-- mouse_cursor = "selection-tool-cursor"
},
{
type = "item",
name = "compilatron-chest",
icon = "__base__/graphics/icons/compilatron-chest.png",
icon_size = 32,
flags = {"hidden"},
subgroup = "storage",
order = "a[items]-d[compilatron-chest]",
place_result = "compilatron-chest",
stack_size = 50,
},
}
)

View File

@ -1,30 +0,0 @@
data:extend(
{
{
type = "mining-tool",
name = "iron-axe",
localised_description = {"item-description.mining-tool"},
icon = "__base__/graphics/icons/iron-axe.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
action =
{
type="direct",
action_delivery =
{
type = "instant",
target_effects =
{
type = "damage",
damage = { amount = 5 , type = "physical"}
}
}
},
durability = 4000,
subgroup = "tool",
order = "a[mining]-a[iron-axe]",
speed = 2.5,
stack_size = 20
}
}
)

View File

@ -5,7 +5,6 @@ data:extend(
name = "gun-turret",
icon = "__base__/graphics/icons/gun-turret.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "b[turret]-a[gun-turret]",
place_result = "gun-turret",

View File

@ -6,7 +6,6 @@ data:extend(
icon = "__base__/graphics/icons/solar-panel-equipment.png",
icon_size = 32,
placed_as_equipment_result = "solar-panel-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "a[energy-source]-a[solar-panel]",
stack_size = 20
@ -17,7 +16,6 @@ data:extend(
icon = "__base__/graphics/icons/fusion-reactor-equipment.png",
icon_size = 32,
placed_as_equipment_result = "fusion-reactor-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "a[energy-source]-b[fusion-reactor]",
stack_size = 20
@ -28,11 +26,9 @@ data:extend(
icon = "__base__/graphics/icons/energy-shield-equipment.png",
icon_size = 32,
placed_as_equipment_result = "energy-shield-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "b[shield]-a[energy-shield-equipment]",
stack_size = 50,
default_request_amount = 10
stack_size = 20
},
{
type = "item",
@ -41,11 +37,9 @@ data:extend(
icon = "__base__/graphics/icons/energy-shield-mk2-equipment.png",
icon_size = 32,
placed_as_equipment_result = "energy-shield-mk2-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "b[shield]-b[energy-shield-equipment-mk2]",
stack_size = 50,
default_request_amount = 10
stack_size = 20
},
{
type = "item",
@ -53,11 +47,9 @@ data:extend(
icon = "__base__/graphics/icons/battery-equipment.png",
icon_size = 32,
placed_as_equipment_result = "battery-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "c[battery]-a[battery-equipment]",
stack_size = 50,
default_request_amount = 10
stack_size = 20
},
{
type = "item",
@ -66,11 +58,9 @@ data:extend(
icon = "__base__/graphics/icons/battery-mk2-equipment.png",
icon_size = 32,
placed_as_equipment_result = "battery-mk2-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "c[battery]-b[battery-equipment-mk2]",
stack_size = 50,
default_request_amount = 10
stack_size = 20
},
{
type = "item",
@ -78,7 +68,6 @@ data:extend(
icon = "__base__/graphics/icons/personal-laser-defense-equipment.png",
icon_size = 32,
placed_as_equipment_result = "personal-laser-defense-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "d[active-defense]-a[personal-laser-defense-equipment]",
stack_size = 20
@ -89,66 +78,60 @@ data:extend(
icon = "__base__/graphics/icons/discharge-defense-equipment.png",
icon_size = 32,
placed_as_equipment_result = "discharge-defense-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "d[active-defense]-b[discharge-defense-equipment]",
stack_size = 20
},
{
type = "item",
name = "exoskeleton-equipment",
icon = "__base__/graphics/icons/exoskeleton-equipment.png",
icon_size = 32,
placed_as_equipment_result = "exoskeleton-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "e[exoskeleton]-a[exoskeleton-equipment]",
stack_size = 10
},
{
type = "item",
name = "personal-roboport-equipment",
icon = "__base__/graphics/icons/personal-roboport-equipment.png",
icon_size = 32,
placed_as_equipment_result = "personal-roboport-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "e[robotics]-a[personal-roboport-equipment]",
stack_size = 5
},
{
type = "item",
name = "personal-roboport-mk2-equipment",
localised_description = {"item-description.personal-roboport-equipment"},
icon = "__base__/graphics/icons/personal-roboport-mk2-equipment.png",
icon_size = 32,
placed_as_equipment_result = "personal-roboport-mk2-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "e[robotics]-b[personal-roboport-mk2-equipment]",
stack_size = 5
},
{
type = "item",
name = "night-vision-equipment",
icon = "__base__/graphics/icons/night-vision-equipment.png",
icon_size = 32,
placed_as_equipment_result = "night-vision-equipment",
flags = {"goes-to-main-inventory"},
subgroup = "equipment",
order = "f[night-vision]-a[night-vision-equipment]",
stack_size = 20
},
{
type = "item",
name = "belt-immunity-equipment",
icon = "__base__/graphics/icons/belt-immunity-equipment.png",
icon_size = 32,
placed_as_equipment_result = "belt-immunity-equipment",
flags = {"goes-to-main-inventory", "hidden"},
subgroup = "equipment",
order = "a[belt-immunity]-a[belt-immunity]",
stack_size = 1
order = "e[belt-immunity]-a[belt-immunity]",
stack_size = 20
},
{
type = "item",
name = "exoskeleton-equipment",
icon = "__base__/graphics/icons/exoskeleton-equipment.png",
icon_size = 32,
placed_as_equipment_result = "exoskeleton-equipment",
subgroup = "equipment",
order = "e[exoskeleton]-a[exoskeleton-equipment]",
stack_size = 20
},
{
type = "item",
name = "personal-roboport-equipment",
icon = "__base__/graphics/icons/personal-roboport-equipment.png",
icon_size = 32,
placed_as_equipment_result = "personal-roboport-equipment",
subgroup = "equipment",
order = "e[robotics]-a[personal-roboport-equipment]",
stack_size = 20
},
{
type = "item",
name = "personal-roboport-mk2-equipment",
localised_description = {"item-description.personal-roboport-equipment"},
icon = "__base__/graphics/icons/personal-roboport-mk2-equipment.png",
icon_size = 32,
placed_as_equipment_result = "personal-roboport-mk2-equipment",
subgroup = "equipment",
order = "e[robotics]-b[personal-roboport-mk2-equipment]",
stack_size = 20
},
{
type = "item",
name = "night-vision-equipment",
icon = "__base__/graphics/icons/night-vision-equipment.png",
icon_size = 32,
placed_as_equipment_result = "night-vision-equipment",
subgroup = "equipment",
order = "f[night-vision]-a[night-vision-equipment]",
stack_size = 20
}
}
)

View File

@ -7,7 +7,6 @@ data:extend(
name = "flamethrower",
icon = "__base__/graphics/icons/flamethrower.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "e[flamethrower]",
attack_parameters =
@ -53,7 +52,7 @@ data:extend(
name = "vehicle-machine-gun",
icon = "__base__/graphics/icons/submachine-gun.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "a[basic-clips]-b[vehicle-machine-gun]",
attack_parameters =
@ -84,7 +83,7 @@ data:extend(
name = "tank-machine-gun",
icon = "__base__/graphics/icons/submachine-gun.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "a[basic-clips]-b[tank-machine-gun]",
attack_parameters =
@ -93,7 +92,6 @@ data:extend(
ammo_category = "bullet",
cooldown = 4,
movement_slow_down_factor = 0.7,
damage_modifier = 2,
shell_particle =
{
name = "shell-particle",
@ -117,7 +115,7 @@ data:extend(
name = "tank-flamethrower",
icon = "__base__/graphics/icons/flamethrower.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "b[flamethrower]-b[tank-flamethrower]",
attack_parameters =
@ -162,7 +160,6 @@ data:extend(
name = "land-mine",
icon = "__base__/graphics/icons/land-mine.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
damage_radius = 5,
subgroup = "gun",
order = "f[land-mine]",
@ -175,7 +172,6 @@ data:extend(
name = "rocket-launcher",
icon = "__base__/graphics/icons/rocket-launcher.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "d[rocket-launcher]",
attack_parameters =
@ -185,7 +181,7 @@ data:extend(
movement_slow_down_factor = 0.8,
cooldown = 60,
projectile_creation_distance = 0.6,
range = 22,
range = 36,
projectile_center = {-0.17, 0},
sound =
{
@ -202,7 +198,6 @@ data:extend(
name = "shotgun",
icon = "__base__/graphics/icons/shotgun.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "b[shotgun]-a[basic]",
attack_parameters =
@ -229,7 +224,6 @@ data:extend(
name = "combat-shotgun",
icon = "__base__/graphics/icons/combat-shotgun.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "gun",
order = "b[shotgun]-a[combat]",
attack_parameters =
@ -256,7 +250,7 @@ data:extend(
name = "railgun",
icon = "__base__/graphics/icons/railgun.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "c[railgun]",
attack_parameters =
@ -282,7 +276,7 @@ data:extend(
name = "tank-cannon",
icon = "__base__/graphics/icons/tank-cannon.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "z[tank]-a[cannon]",
attack_parameters =
@ -309,7 +303,7 @@ data:extend(
name = "artillery-wagon-cannon",
icon = "__base__/graphics/icons/tank-cannon.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "gun",
order = "z[artillery]-a[cannon]",
attack_parameters =

View File

@ -5,7 +5,6 @@ data:extend(
name = "iron-chest",
icon = "__base__/graphics/icons/iron-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "storage",
order = "a[items]-b[iron-chest]",
place_result = "iron-chest",
@ -16,7 +15,6 @@ data:extend(
name = "steel-chest",
icon = "__base__/graphics/icons/steel-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "storage",
order = "a[items]-c[steel-chest]",
place_result = "steel-chest",
@ -27,7 +25,6 @@ data:extend(
name = "fast-transport-belt",
icon = "__base__/graphics/icons/fast-transport-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "a[transport-belt]-b[fast-transport-belt]",
place_result = "fast-transport-belt",
@ -38,7 +35,6 @@ data:extend(
name = "express-transport-belt",
icon = "__base__/graphics/icons/express-transport-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "a[transport-belt]-c[express-transport-belt]",
place_result = "express-transport-belt",
@ -49,7 +45,6 @@ data:extend(
name = "long-handed-inserter",
icon = "__base__/graphics/icons/long-handed-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "c[long-handed-inserter]",
place_result = "long-handed-inserter",
@ -60,7 +55,6 @@ data:extend(
name = "fast-inserter",
icon = "__base__/graphics/icons/fast-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "d[fast-inserter]",
place_result = "fast-inserter",
@ -71,7 +65,6 @@ data:extend(
name = "filter-inserter",
icon = "__base__/graphics/icons/filter-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "e[filter-inserter]",
place_result = "filter-inserter",
@ -82,7 +75,6 @@ data:extend(
name = "stack-inserter",
icon = "__base__/graphics/icons/stack-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "f[stack-inserter]",
place_result = "stack-inserter",
@ -93,7 +85,6 @@ data:extend(
name = "stack-filter-inserter",
icon = "__base__/graphics/icons/stack-filter-inserter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "inserter",
order = "g[stack-filter-inserter]",
place_result = "stack-filter-inserter",
@ -104,7 +95,6 @@ data:extend(
name = "assembling-machine-2",
icon = "__base__/graphics/icons/assembling-machine-2.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "b[assembling-machine-2]",
place_result = "assembling-machine-2",
@ -115,7 +105,6 @@ data:extend(
name = "assembling-machine-3",
icon = "__base__/graphics/icons/assembling-machine-3.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "c[assembling-machine-3]",
place_result = "assembling-machine-3",
@ -126,7 +115,6 @@ data:extend(
name = "solar-panel",
icon = "__base__/graphics/icons/solar-panel.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "d[solar-panel]-a[solar-panel]",
place_result = "solar-panel",
@ -137,7 +125,6 @@ data:extend(
name = "locomotive",
icon = "__base__/graphics/icons/diesel-locomotive.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-f[diesel-locomotive]",
place_result = "locomotive",
@ -148,7 +135,6 @@ data:extend(
name = "cargo-wagon",
icon = "__base__/graphics/icons/cargo-wagon.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-g[cargo-wagon]",
place_result = "cargo-wagon",
@ -159,7 +145,6 @@ data:extend(
name = "fluid-wagon",
icon = "__base__/graphics/icons/fluid-wagon.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-h[fluid-wagon]",
place_result = "fluid-wagon",
@ -170,7 +155,6 @@ data:extend(
name = "artillery-wagon",
icon = "__base__/graphics/icons/artillery-wagon.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-i[artillery-wagon]",
place_result = "artillery-wagon",
@ -181,7 +165,7 @@ data:extend(
name = "rail",
icon = "__base__/graphics/icons/rail.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
localised_name = {"item-name.rail"},
subgroup = "transport",
order = "a[train-system]-a[rail]",
place_result = "straight-rail",
@ -194,7 +178,7 @@ data:extend(
name = "player-port",
icon = "__base__/graphics/icons/player-port.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "defensive-structure",
order = "z[not-used]",
place_result = "player-port",
@ -205,7 +189,6 @@ data:extend(
name = "gate",
icon = "__base__/graphics/icons/gate.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "a[wall]-b[gate]",
place_result = "gate",
@ -216,7 +199,6 @@ data:extend(
name = "car",
icon = "__base__/graphics/icons/car.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "b[personal-transport]-a[car]",
place_result = "car",
@ -227,7 +209,6 @@ data:extend(
name = "tank",
icon = "__base__/graphics/icons/tank.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "b[personal-transport]-b[tank]",
place_result = "tank",
@ -235,13 +216,12 @@ data:extend(
},
{
type = "tool",
name = "science-pack-1",
name = "automation-science-pack",
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/science-pack-1.png",
icon = "__base__/graphics/icons/automation-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "a[science-pack-1]",
order = "a[automation-science-pack]",
stack_size = 200,
durability = 1,
durability_description_key = "description.science-pack-remaining-amount-key",
@ -249,13 +229,12 @@ data:extend(
},
{
type = "tool",
name = "science-pack-2",
name = "logistic-science-pack",
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/science-pack-2.png",
icon = "__base__/graphics/icons/logistic-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "b[science-pack-2]",
order = "b[logistic-science-pack]",
stack_size = 200,
durability = 1,
durability_description_key = "description.science-pack-remaining-amount-key",
@ -263,13 +242,12 @@ data:extend(
},
{
type = "tool",
name = "science-pack-3",
name = "chemical-science-pack",
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/science-pack-3.png",
icon = "__base__/graphics/icons/chemical-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "c[science-pack-3]",
order = "d[chemical-science-pack]",
stack_size = 200,
durability = 1,
durability_description_key = "description.science-pack-remaining-amount-key",
@ -281,9 +259,8 @@ data:extend(
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/military-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "d[military-science-pack]",
order = "c[military-science-pack]",
stack_size = 200,
durability = 1,
durability_description_key = "description.science-pack-remaining-amount-key",
@ -295,7 +272,6 @@ data:extend(
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/production-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "e[production-science-pack]",
stack_size = 200,
@ -305,13 +281,12 @@ data:extend(
},
{
type = "tool",
name = "high-tech-science-pack",
name = "utility-science-pack",
localised_description = {"item-description.science-pack"},
icon = "__base__/graphics/icons/high-tech-science-pack.png",
icon = "__base__/graphics/icons/utility-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "f[high-tech-science-pack]",
order = "f[utility-science-pack]",
stack_size = 200,
durability = 1,
durability_description_key = "description.science-pack-remaining-amount-key",
@ -322,7 +297,6 @@ data:extend(
name = "space-science-pack",
icon = "__base__/graphics/icons/space-science-pack.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "science-pack",
order = "g[space-science-pack]",
stack_size = 2000,
@ -330,23 +304,11 @@ data:extend(
durability_description_key = "description.science-pack-remaining-amount-key",
durability_description_value = "description.science-pack-remaining-amount-value"
},
{
type = "item",
name = "lab",
icon = "__base__/graphics/icons/lab.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "g[lab]",
place_result = "lab",
stack_size = 10
},
{
type = "item",
name = "train-stop",
icon = "__base__/graphics/icons/train-stop.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-c[train-stop]",
place_result = "train-stop",
@ -357,7 +319,6 @@ data:extend(
name = "rail-signal",
icon = "__base__/graphics/icons/rail-signal.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-d[rail-signal]",
place_result = "rail-signal",
@ -368,7 +329,6 @@ data:extend(
name = "rail-chain-signal",
icon = "__base__/graphics/icons/rail-chain-signal.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "transport",
order = "a[train-system]-e[rail-signal-chain]",
place_result = "rail-chain-signal",
@ -379,7 +339,6 @@ data:extend(
name = "steel-plate",
icon = "__base__/graphics/icons/steel-plate.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "d[steel-plate]",
stack_size = 100
@ -389,7 +348,6 @@ data:extend(
name = "underground-belt",
icon = "__base__/graphics/icons/underground-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "b[underground-belt]-a[underground-belt]",
place_result = "underground-belt",
@ -400,7 +358,6 @@ data:extend(
name = "fast-underground-belt",
icon = "__base__/graphics/icons/fast-underground-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "b[underground-belt]-b[fast-underground-belt]",
place_result = "fast-underground-belt",
@ -411,7 +368,6 @@ data:extend(
name = "express-underground-belt",
icon = "__base__/graphics/icons/express-underground-belt.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "b[underground-belt]-c[express-underground-belt]",
place_result = "express-underground-belt",
@ -422,7 +378,6 @@ data:extend(
name = "splitter",
icon = "__base__/graphics/icons/splitter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "c[splitter]-a[splitter]",
place_result = "splitter",
@ -433,7 +388,6 @@ data:extend(
name = "fast-splitter",
icon = "__base__/graphics/icons/fast-splitter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "c[splitter]-b[fast-splitter]",
place_result = "fast-splitter",
@ -444,7 +398,6 @@ data:extend(
name = "express-splitter",
icon = "__base__/graphics/icons/express-splitter.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "belt",
order = "c[splitter]-c[express-splitter]",
place_result = "express-splitter",
@ -455,7 +408,7 @@ data:extend(
name = "loader",
icon = "__base__/graphics/icons/loader.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "belt",
order = "d[loader]-a[basic-loader]",
place_result = "loader",
@ -466,7 +419,7 @@ data:extend(
name = "fast-loader",
icon = "__base__/graphics/icons/fast-loader.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "belt",
order = "d[loader]-b[fast-loader]",
place_result = "fast-loader",
@ -477,7 +430,7 @@ data:extend(
name = "express-loader",
icon = "__base__/graphics/icons/express-loader.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "belt",
order = "d[loader]-c[express-loader]",
place_result = "express-loader",
@ -488,7 +441,6 @@ data:extend(
name = "advanced-circuit",
icon = "__base__/graphics/icons/advanced-circuit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "f[advanced-circuit]",
stack_size = 200
@ -498,7 +450,6 @@ data:extend(
name = "processing-unit",
icon = "__base__/graphics/icons/processing-unit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "g[processing-unit]",
stack_size = 100
@ -508,7 +459,6 @@ data:extend(
name = "logistic-robot",
icon = "__base__/graphics/icons/logistic-robot.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "a[robot]-a[logistic-robot]",
place_result = "logistic-robot",
@ -519,7 +469,6 @@ data:extend(
name = "construction-robot",
icon = "__base__/graphics/icons/construction-robot.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "logistic-network",
order = "a[robot]-b[construction-robot]",
place_result = "construction-robot",
@ -530,7 +479,6 @@ data:extend(
name = "logistic-chest-passive-provider",
icon = "__base__/graphics/icons/logistic-chest-passive-provider.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "b[storage]-c[logistic-chest-passive-provider]",
place_result = "logistic-chest-passive-provider",
@ -541,7 +489,6 @@ data:extend(
name = "logistic-chest-active-provider",
icon = "__base__/graphics/icons/logistic-chest-active-provider.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "b[storage]-c[logistic-chest-active-provider]",
place_result = "logistic-chest-active-provider",
@ -552,7 +499,6 @@ data:extend(
name = "logistic-chest-storage",
icon = "__base__/graphics/icons/logistic-chest-storage.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "b[storage]-c[logistic-chest-storage]",
place_result = "logistic-chest-storage",
@ -563,7 +509,6 @@ data:extend(
name = "logistic-chest-buffer",
icon = "__base__/graphics/icons/logistic-chest-buffer.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "b[storage]-d[logistic-chest-buffer]",
place_result = "logistic-chest-buffer",
@ -574,7 +519,6 @@ data:extend(
name = "logistic-chest-requester",
icon = "__base__/graphics/icons/logistic-chest-requester.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "b[storage]-e[logistic-chest-requester]",
place_result = "logistic-chest-requester",
@ -585,7 +529,6 @@ data:extend(
name = "rocket-silo",
icon = "__base__/graphics/icons/rocket-silo.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "e[rocket-silo]",
place_result = "rocket-silo",
@ -596,7 +539,6 @@ data:extend(
name = "roboport",
icon = "__base__/graphics/icons/roboport.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "logistic-network",
order = "c[signal]-a[roboport]",
place_result = "roboport",
@ -607,7 +549,7 @@ data:extend(
name = "coin",
icon = "__base__/graphics/icons/coin.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "science-pack",
order = "y",
stack_size = 100000
@ -617,7 +559,6 @@ data:extend(
name = "big-electric-pole",
icon = "__base__/graphics/icons/big-electric-pole.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[energy]-c[big-electric-pole]",
place_result = "big-electric-pole",
@ -628,7 +569,6 @@ data:extend(
name = "medium-electric-pole",
icon = "__base__/graphics/icons/medium-electric-pole.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[energy]-b[medium-electric-pole]",
place_result = "medium-electric-pole",
@ -639,7 +579,6 @@ data:extend(
name = "substation",
icon = "__base__/graphics/icons/substation.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "a[energy]-d[substation]",
place_result = "substation",
@ -650,7 +589,6 @@ data:extend(
name = "accumulator",
icon = "__base__/graphics/icons/accumulator.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "e[accumulator]-a[accumulator]",
place_result = "accumulator",
@ -661,7 +599,6 @@ data:extend(
name = "steel-furnace",
icon = "__base__/graphics/icons/steel-furnace.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "smelting-machine",
order = "b[steel-furnace]",
place_result = "steel-furnace",
@ -672,7 +609,6 @@ data:extend(
name = "electric-furnace",
icon = "__base__/graphics/icons/electric-furnace.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "smelting-machine",
order = "c[electric-furnace]",
place_result = "electric-furnace",
@ -683,7 +619,6 @@ data:extend(
name = "beacon",
icon = "__base__/graphics/icons/beacon.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "module",
order = "a[beacon]",
place_result = "beacon",
@ -694,7 +629,6 @@ data:extend(
name = "storage-tank",
icon = "__base__/graphics/icons/storage-tank.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "storage",
order = "b[fluid]-a[storage-tank]",
place_result = "storage-tank",
@ -705,57 +639,52 @@ data:extend(
name = "pump",
icon = "__base__/graphics/icons/pump.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy-pipe-distribution",
order = "b[pipe]-c[pump]",
place_result = "pump",
stack_size = 50
},
{
type = "blueprint",
name = "blueprint",
icon = "__base__/graphics/icons/blueprint.png",
type = "upgrade-item",
name = "upgrade-planner",
icon = "__base__/graphics/icons/upgrade-planner.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "tool",
order = "c[automated-construction]-a[blueprint]",
order = "c[automated-construction]-c[upgrade-planner]",
stack_size = 1,
stackable = false,
draw_label_for_cursor_render = true,
item_to_clear = "electronic-circuit",
selection_color = { r = 0, g = 1, b = 0 },
alt_selection_color = { r = 0, g = 1, b = 0 },
selection_mode = {"blueprint"},
alt_selection_mode = {"blueprint"},
selection_cursor_box_type = "copy",
alt_selection_cursor_box_type = "copy"
mapper_count = 24,
selection_color = {1, 0, 0},
alt_selection_color = {0, 0, 1},
selection_mode = {"upgrade"},
alt_selection_mode = {"cancel-upgrade"},
selection_cursor_box_type = "not-allowed",
alt_selection_cursor_box_type = "not-allowed"
},
{
type = "deconstruction-item",
name = "deconstruction-planner",
icon = "__base__/graphics/icons/deconstruction-planner.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "tool",
order = "c[automated-construction]-b[deconstruction-planner]",
stack_size = 1,
entity_filter_count = 30,
tile_filter_count = 30,
selection_color = { r = 1, g = 0, b = 0 },
alt_selection_color = { r = 0, g = 0, b = 1 },
selection_color = {1, 0, 0},
alt_selection_color = {0, 0, 1},
selection_mode = {"deconstruct"},
alt_selection_mode = {"cancel-deconstruct"},
selection_cursor_box_type = "not-allowed",
alt_selection_cursor_box_type = "not-allowed"
alt_selection_cursor_box_type = "not-allowed",
--mouse_cursor = "system-crosshair"
},
{
type = "blueprint-book",
name = "blueprint-book",
icon = "__base__/graphics/icons/blueprint-book.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "tool",
order = "c[automated-construction]-c[blueprint-book]",
order = "c[automated-construction]-d[blueprint-book]",
stack_size = 1,
inventory_size = 1000
},
@ -764,7 +693,6 @@ data:extend(
name = "pumpjack",
icon = "__base__/graphics/icons/pumpjack.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "extraction-machine",
order = "b[fluids]-b[pumpjack]",
place_result = "pumpjack",
@ -775,7 +703,6 @@ data:extend(
name = "oil-refinery",
icon = "__base__/graphics/icons/oil-refinery.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "d[refinery]",
place_result = "oil-refinery",
@ -786,7 +713,6 @@ data:extend(
name = "chemical-plant",
icon = "__base__/graphics/icons/chemical-plant.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "e[chemical-plant]",
place_result = "chemical-plant",
@ -797,7 +723,6 @@ data:extend(
name = "sulfur",
icon = "__base__/graphics/icons/sulfur.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "g[sulfur]",
stack_size = 50
@ -807,7 +732,6 @@ data:extend(
name = "empty-barrel",
icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "d[empty-barrel]",
stack_size = 10
@ -817,9 +741,8 @@ data:extend(
name = "solid-fuel",
icon = "__base__/graphics/icons/solid-fuel.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
fuel_category = "chemical",
fuel_value = "25MJ",
fuel_value = "12MJ",
fuel_acceleration_multiplier = 1.2,
fuel_top_speed_multiplier = 1.05,
subgroup = "raw-material",
@ -831,7 +754,6 @@ data:extend(
name = "plastic-bar",
icon = "__base__/graphics/icons/plastic-bar.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "f[plastic-bar]",
stack_size = 100
@ -841,7 +763,6 @@ data:extend(
name = "engine-unit",
icon = "__base__/graphics/icons/engine-unit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "h[engine-unit]",
stack_size = 50
@ -851,7 +772,6 @@ data:extend(
name = "electric-engine-unit",
icon = "__base__/graphics/icons/electric-engine-unit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "i[electric-engine-unit]",
stack_size = 50
@ -861,7 +781,6 @@ data:extend(
name = "explosives",
icon = "__base__/graphics/icons/explosives.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "j[explosives]",
stack_size = 50
@ -871,7 +790,6 @@ data:extend(
name = "battery",
icon = "__base__/graphics/icons/battery.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-material",
order = "h[battery]",
stack_size = 200
@ -881,7 +799,6 @@ data:extend(
name = "flying-robot-frame",
icon = "__base__/graphics/icons/flying-robot-frame.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "l[flying-robot-frame]",
stack_size = 50
@ -891,7 +808,6 @@ data:extend(
name = "arithmetic-combinator",
icon = "__base__/graphics/icons/arithmetic-combinator.png",
icon_size = 32,
flags = { "goes-to-quickbar" },
subgroup = "circuit-network",
place_result="arithmetic-combinator",
order = "c[combinators]-a[arithmetic-combinator]",
@ -902,7 +818,6 @@ data:extend(
name = "decider-combinator",
icon = "__base__/graphics/icons/decider-combinator.png",
icon_size = 32,
flags = { "goes-to-quickbar" },
subgroup = "circuit-network",
place_result="decider-combinator",
order = "c[combinators]-b[decider-combinator]",
@ -913,7 +828,6 @@ data:extend(
name = "constant-combinator",
icon = "__base__/graphics/icons/constant-combinator.png",
icon_size = 32,
flags = { "goes-to-quickbar" },
subgroup = "circuit-network",
place_result="constant-combinator",
order = "c[combinators]-c[constant-combinator]",
@ -924,7 +838,6 @@ data:extend(
name = "power-switch",
icon = "__base__/graphics/icons/power-switch.png",
icon_size = 32,
flags = { "goes-to-quickbar" },
subgroup = "circuit-network",
place_result="power-switch",
order = "d[other]-a[power-switch]",
@ -935,7 +848,6 @@ data:extend(
name = "programmable-speaker",
icon = "__base__/graphics/icons/programmable-speaker.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "circuit-network",
order = "d[other]-b[programmable-speaker]",
place_result = "programmable-speaker",
@ -946,7 +858,6 @@ data:extend(
name = "low-density-structure",
icon = "__base__/graphics/icons/rocket-structure.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "o[rocket-structure]",
stack_size = 10
@ -956,9 +867,8 @@ data:extend(
name = "rocket-fuel",
icon = "__base__/graphics/icons/rocket-fuel.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
fuel_category = "chemical",
fuel_value = "225MJ",
fuel_value = "100MJ",
fuel_acceleration_multiplier = 1.8,
fuel_top_speed_multiplier = 1.15,
subgroup = "intermediate-product",
@ -970,7 +880,6 @@ data:extend(
name = "nuclear-fuel",
icon = "__base__/graphics/icons/nuclear-fuel.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
fuel_category = "chemical",
fuel_value = "1.21GJ",
fuel_acceleration_multiplier = 2.5,
@ -985,7 +894,6 @@ data:extend(
name = "rocket-control-unit",
icon = "__base__/graphics/icons/rocket-control-unit.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "n[rocket-control-unit]",
stack_size = 10
@ -995,7 +903,7 @@ data:extend(
name = "rocket-part",
icon = "__base__/graphics/icons/rocket-part.png",
icon_size = 32,
flags = {"goes-to-main-inventory", "hidden"},
flags = {"hidden"},
subgroup = "intermediate-product",
order = "q[rocket-part]",
stack_size = 5
@ -1005,7 +913,6 @@ data:extend(
name = "satellite",
icon = "__base__/graphics/icons/satellite.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "m[satellite]",
stack_size = 1,
@ -1016,7 +923,6 @@ data:extend(
name = "concrete",
icon = "__base__/graphics/icons/concrete.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "b[concrete]-a[plain]",
stack_size = 100,
@ -1032,7 +938,6 @@ data:extend(
name = "refined-concrete",
icon = "__base__/graphics/icons/refined-concrete.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "b[concrete]-c[refined]",
stack_size = 100,
@ -1048,7 +953,6 @@ data:extend(
name = "hazard-concrete",
icon = "__base__/graphics/icons/hazard-concrete.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "b[concrete]-b[hazard]",
stack_size = 100,
@ -1064,7 +968,6 @@ data:extend(
name = "refined-hazard-concrete",
icon = "__base__/graphics/icons/refined-hazard-concrete.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "b[concrete]-d[refined-hazard]",
stack_size = 100,
@ -1080,7 +983,6 @@ data:extend(
name = "landfill",
icon = "__base__/graphics/icons/landfill.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "terrain",
order = "c[landfill]-a[dirt]",
stack_size = 100,
@ -1094,12 +996,11 @@ data:extend(
{
-- This allows loading the selection-tool type item when mods are removed
type = "selection-tool",
name = "dummy-selection-tool",
localised_name = {"item-name.blueprint"},
name = "selection-tool",
icon = "__base__/graphics/icons/blueprint.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
subgroup = "tool",
flags = {"hidden"},
subgroup = "other",
order = "c[automated-construction]-a[blueprint]",
stack_size = 1,
stackable = false,
@ -1109,6 +1010,16 @@ data:extend(
alt_selection_mode = {"blueprint"},
selection_cursor_box_type = "copy",
alt_selection_cursor_box_type = "copy",
--entity_filters = {"stone-furnace", "steel-furnace"},
--entity_type_filters = {"furnace", "assembling-machine"},
--tile_filters = {"concrete", "stone-path"},
--entity_filter_mode = "whitelist",
--tile_filter_mode = "whitelist",
--alt_entity_filters = {"stone-furnace", "steel-furnace"},
--alt_entity_type_filters = {"furnace", "assembling-machine"},
--alt_tile_filters = {"concrete", "stone-path"},
--alt_entity_filter_mode = "whitelist",
--alt_tile_filter_mode = "whitelist",
show_in_library = false
},
{
@ -1116,18 +1027,28 @@ data:extend(
name = "electric-energy-interface",
icons = { {icon = "__base__/graphics/icons/accumulator.png", tint = {r=1, g=0.8, b=1, a=1}} },
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "energy",
order = "e[electric-energy-interface]-b[electric-energy-interface]",
place_result = "electric-energy-interface",
stack_size = 50
},
{
type = "item",
name = "heat-interface",
icon = "__base__/graphics/entity/heat-interface/heat-interface.png",
icon_size = 32,
flags = {"hidden"},
subgroup = "energy",
order = "f[heat-interface]",
place_result = "heat-interface",
stack_size = 20
},
{
type = "item",
name = "uranium-ore",
icon = "__base__/graphics/icons/uranium-ore.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "raw-resource",
order = "g[uranium-ore]",
stack_size = 50
@ -1137,7 +1058,6 @@ data:extend(
name = "nuclear-reactor",
icon = "__base__/graphics/icons/nuclear-reactor.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "f[nuclear-energy]-a[reactor]",
place_result = "nuclear-reactor",
@ -1148,7 +1068,6 @@ data:extend(
name = "uranium-235",
icon = "__base__/graphics/icons/uranium-235.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "r[uranium-235]",
stack_size = 100
@ -1158,7 +1077,6 @@ data:extend(
name = "uranium-238",
icon = "__base__/graphics/icons/uranium-238.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "r[uranium-238]",
stack_size = 100
@ -1168,7 +1086,6 @@ data:extend(
name = "centrifuge",
icon = "__base__/graphics/icons/centrifuge.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "production-machine",
order = "g[centrifuge]",
place_result = "centrifuge",
@ -1179,7 +1096,6 @@ data:extend(
name = "uranium-fuel-cell",
icon = "__base__/graphics/icons/uranium-fuel-cell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "r[uranium-processing]-a[uranium-fuel-cell]",
fuel_category = "nuclear",
@ -1192,7 +1108,6 @@ data:extend(
name = "used-up-uranium-fuel-cell",
icon = "__base__/graphics/icons/used-up-uranium-fuel-cell.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "intermediate-product",
order = "r[used-up-uranium-fuel-cell]",
stack_size = 50
@ -1202,7 +1117,6 @@ data:extend(
name = "heat-exchanger",
icon = "__base__/graphics/icons/heat-boiler.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "f[nuclear-energy]-b[heat-exchanger]",
place_result = "heat-exchanger",
@ -1213,7 +1127,6 @@ data:extend(
name = "steam-turbine",
icon = "__base__/graphics/icons/steam-turbine.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "b[steam-power]-c[steam-turbine]",
place_result = "steam-turbine",
@ -1224,7 +1137,6 @@ data:extend(
name = "heat-pipe",
icon = "__base__/graphics/icons/heat-pipe.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "f[nuclear-energy]-c[heat-pipe]",
place_result = "heat-pipe",
@ -1235,7 +1147,7 @@ data:extend(
name = "simple-entity-with-force",
icon = "__base__/graphics/icons/steel-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "s[simple-entity-with-force]-f[simple-entity-with-force]",
place_result = "simple-entity-with-force",
@ -1246,7 +1158,7 @@ data:extend(
name = "simple-entity-with-owner",
icon = "__base__/graphics/icons/wooden-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "s[simple-entity-with-owner]-o[simple-entity-with-owner]",
place_result = "simple-entity-with-owner",
@ -1257,7 +1169,7 @@ data:extend(
name = "item-with-tags",
icon = "__base__/graphics/icons/wooden-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "s[item-with-tags]-o[item-with-tags]",
stack_size = 1
@ -1267,7 +1179,7 @@ data:extend(
name = "item-with-label",
icon = "__base__/graphics/icons/wooden-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "s[item-with-label]-o[item-with-label]",
stack_size = 1
@ -1277,7 +1189,7 @@ data:extend(
name = "item-with-inventory",
icon = "__base__/graphics/icons/wooden-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "s[item-with-inventory]-o[item-with-inventory]",
stack_size = 1,
@ -1288,11 +1200,26 @@ data:extend(
name = "infinity-chest",
icon = "__base__/graphics/icons/infinity-chest.png",
icon_size = 32,
flags = {"goes-to-quickbar", "hidden"},
flags = {"hidden"},
subgroup = "other",
order = "t[item]-o[infinity-chest]",
stack_size = 10,
place_result = "infinity-chest"
},
{
type = "item",
name = "infinity-pipe",
icons =
{{
icon = "__base__/graphics/icons/pipe.png",
tint = {r = 0.5, g = 0.5, b = 1}
}},
icon_size = 32,
flags = {"hidden"},
subgroup = "other",
order = "t[item]-o[infinity-pipe]",
stack_size = 10,
place_result = "infinity-pipe"
}
}
)

View File

@ -2,29 +2,14 @@ data:extend(
{
{
type = "mining-tool",
name = "steel-axe",
localised_description = {"item-description.mining-tool"},
name = "dummy-steel-axe",
icon = "__base__/graphics/icons/steel-axe.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
action =
{
type="direct",
action_delivery =
{
type = "instant",
target_effects =
{
type = "damage",
damage = { amount = 8 , type = "physical"}
}
}
},
durability = 5000,
durability = 1,
subgroup = "tool",
order = "a[mining]-b[steel-axe]",
speed = 4,
stack_size = 20
flags = {"hidden"},
stack_size = 1
}
}
)

View File

@ -6,13 +6,11 @@ data:extend(
localised_description = {"item-description.speed-module"},
icon = "__base__/graphics/icons/speed-module.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "speed",
tier = 1,
order = "a[speed]-a[speed-module-1]",
stack_size = 50,
default_request_amount = 10,
effect = { speed = {bonus = 0.2}, consumption = {bonus = 0.5}}
},
{
@ -21,13 +19,11 @@ data:extend(
localised_description = {"item-description.speed-module"},
icon = "__base__/graphics/icons/speed-module-2.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "speed",
tier = 2,
order = "a[speed]-b[speed-module-2]",
stack_size = 50,
default_request_amount = 10,
effect = { speed = {bonus = 0.3}, consumption = {bonus = 0.6}}
},
{
@ -36,13 +32,11 @@ data:extend(
localised_description = {"item-description.speed-module"},
icon = "__base__/graphics/icons/speed-module-3.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "speed",
tier = 3,
order = "a[speed]-c[speed-module-3]",
stack_size = 50,
default_request_amount = 10,
effect = { speed = {bonus = 0.5}, consumption = {bonus = 0.7}}
},
{
@ -51,13 +45,11 @@ data:extend(
localised_description = {"item-description.effectivity-module"},
icon = "__base__/graphics/icons/effectivity-module.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "effectivity",
tier = 1,
order = "c[effectivity]-a[effectivity-module-1]",
stack_size = 50,
default_request_amount = 10,
effect = { consumption = {bonus = -0.3}},
limitation = production
},
@ -67,13 +59,11 @@ data:extend(
localised_description = {"item-description.effectivity-module"},
icon = "__base__/graphics/icons/effectivity-module-2.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "effectivity",
tier = 2,
order = "c[effectivity]-b[effectivity-module-2]",
stack_size = 50,
default_request_amount = 10,
effect = { consumption = {bonus = -0.4}}
},
{
@ -82,18 +72,16 @@ data:extend(
localised_description = {"item-description.effectivity-module"},
icon = "__base__/graphics/icons/effectivity-module-3.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "effectivity",
tier = 3,
order = "c[effectivity]-c[effectivity-module-3]",
stack_size = 50,
default_request_amount = 10,
effect = { consumption = {bonus = -0.5}}
}
})
function productivitymodulelimitation()
function productivity_module_limitation()
return
{
"sulfuric-acid",
@ -106,7 +94,6 @@ return
"solid-fuel-from-heavy-oil",
"solid-fuel-from-petroleum-gas",
"lubricant",
"wood",
"iron-plate",
"copper-plate",
"steel-plate",
@ -131,12 +118,13 @@ return
"rocket-fuel",
"rocket-control-unit",
"rocket-part",
"science-pack-1",
"science-pack-2",
"science-pack-3",
"automation-science-pack",
"logistic-science-pack",
"chemical-science-pack",
"military-science-pack",
"production-science-pack",
"high-tech-science-pack"
"utility-science-pack",
"kovarex-enrichment-process"
}
end
@ -148,13 +136,11 @@ data:extend(
localised_description = {"item-description.productivity-module"},
icon = "__base__/graphics/icons/productivity-module.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "productivity",
tier = 1,
order = "c[productivity]-a[productivity-module-1]",
stack_size = 50,
default_request_amount = 10,
effect =
{
productivity = {bonus = 0.04},
@ -162,7 +148,7 @@ data:extend(
pollution = {bonus = 0.05},
speed = {bonus = -0.15}
},
limitation = productivitymodulelimitation(),
limitation = productivity_module_limitation(),
limitation_message_key = "production-module-usable-only-on-intermediates"
},
{
@ -171,13 +157,11 @@ data:extend(
localised_description = {"item-description.productivity-module"},
icon = "__base__/graphics/icons/productivity-module-2.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "productivity",
tier = 2,
order = "c[productivity]-b[productivity-module-2]",
stack_size = 50,
default_request_amount = 10,
effect =
{
productivity = {bonus = 0.06},
@ -185,7 +169,7 @@ data:extend(
pollution = {bonus = 0.075},
speed = {bonus = -0.15}
},
limitation = productivitymodulelimitation(),
limitation = productivity_module_limitation(),
limitation_message_key = "production-module-usable-only-on-intermediates"
},
{
@ -194,13 +178,11 @@ data:extend(
localised_description = {"item-description.productivity-module"},
icon = "__base__/graphics/icons/productivity-module-3.png",
icon_size = 32,
flags = {"goes-to-main-inventory"},
subgroup = "module",
category = "productivity",
tier = 3,
order = "c[productivity]-c[productivity-module-3]",
stack_size = 50,
default_request_amount = 10,
effect =
{
productivity = {bonus = 0.1},
@ -208,7 +190,7 @@ data:extend(
pollution = {bonus = 0.1},
speed = {bonus = -0.15}
},
limitation = productivitymodulelimitation(),
limitation = productivity_module_limitation(),
limitation_message_key = "production-module-usable-only-on-intermediates"
}
}

View File

@ -5,7 +5,6 @@ data:extend(
name = "laser-turret",
icon = "__base__/graphics/icons/laser-turret.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "b[turret]-b[laser-turret]",
place_result = "laser-turret",
@ -16,7 +15,6 @@ data:extend(
name = "flamethrower-turret",
icon = "__base__/graphics/icons/flamethrower-turret.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "b[turret]-c[flamethrower-turret]",
place_result = "flamethrower-turret",
@ -27,7 +25,6 @@ data:extend(
name = "artillery-turret",
icon = "__base__/graphics/icons/artillery-turret.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "defensive-structure",
order = "b[turret]-d[artillery-turret]",
place_result = "artillery-turret",

View File

@ -1,5 +1,6 @@
function smoke(opts)
return {
return
{
type = "smoke",
name = opts.name,
flags = {"not-on-map"},

View File

@ -14,6 +14,7 @@ data:extend(
order = "b",
basic_settings =
{
property_expression_names = {},
autoplace_controls =
{
["iron-ore"] = { richness = "very-good"},
@ -28,6 +29,10 @@ data:extend(
["marathon"] =
{
order = "c",
basic_settings =
{
property_expression_names = {},
},
advanced_settings =
{
difficulty_settings =
@ -43,6 +48,7 @@ data:extend(
order = "d",
basic_settings =
{
property_expression_names = {},
autoplace_controls =
{
["enemy-base"] = { frequency = "very-high", size = "very-big"}
@ -55,7 +61,11 @@ data:extend(
{
time_factor = 0.00002,
pollution_factor = 0.00002
}
},
pollution =
{
ageing = 0.5
},
}
},
["death-world-marathon"] =
@ -63,6 +73,7 @@ data:extend(
order = "d",
basic_settings =
{
property_expression_names = {},
autoplace_controls =
{
["enemy-base"] = { frequency = "very-high", size = "very-big"}
@ -76,6 +87,10 @@ data:extend(
time_factor = 0.00002,
pollution_factor = 0.00002
},
pollution =
{
ageing = 0.5
},
difficulty_settings =
{
recipe_difficulty = defines.difficulty_settings.recipe_difficulty.expensive,
@ -89,37 +104,42 @@ data:extend(
order = "e",
basic_settings =
{
property_expression_names = {},
autoplace_controls =
{
coal =
{
frequency = "very-low",
size = "high"
frequency = 0.33333333333,
size = 3
},
["copper-ore"] =
{
frequency = "very-low",
size = "high"
frequency = 0.33333333333,
size = 3
},
["crude-oil"] =
{
frequency = "low",
size = "high"
frequency = 0.33333333333,
size = 3
},
["uranium-ore"] =
{
frequency = "low",
size = "high"
frequency = 0.33333333333,
size = 3
},
["iron-ore"] =
{
frequency = "very-low",
size = "high"
frequency = 0.33333333333,
size = 3
},
stone =
{
frequency = "very-low",
size = "high"
frequency = 0.33333333333,
size = 3
},
["enemy-base"] =
{
size = 0.5
}
},
terrain_segmentation = "very-low",
@ -136,6 +156,69 @@ data:extend(
enabled = false
}
}
}
},
["ribbon-world"] =
{
order = "f",
basic_settings =
{
autoplace_controls =
{
coal =
{
frequency = 3,
size = 0.5,
richness = 2
},
["copper-ore"] =
{
frequency = 3,
size = 0.5,
richness = 2
},
["crude-oil"] =
{
frequency = 3,
size = 0.5,
richness = 2
},
["uranium-ore"] =
{
frequency = 3,
size = 0.5,
richness = 2
},
["iron-ore"] =
{
frequency = 3,
size = 0.5,
richness = 2
},
stone =
{
frequency = 3,
size = 0.5,
richness = 2
}
},
terrain_segmentation = 4,
water = 0.25,
starting_area = 3,
height = 128 --4 chunks, about 1 screen of height.
}
},
["island"] =
{
order = "g",
basic_settings =
{
property_expression_names =
{
elevation = "0_17-island",
},
autoplace_controls = {},
terrain_segmentation = 1,
}
},
}
})

View File

@ -57,7 +57,7 @@ data:extend(
energy_required = 50,
ingredients =
{
{"processing-unit", 20},
{"rocket-control-unit", 10},
{"explosives", 10},
{"uranium-235", 30}
},

View File

@ -60,7 +60,7 @@ data:extend(
ingredients =
{
{"piercing-rounds-magazine", 1},
{"electronic-circuit", 2},
{"flying-robot-frame", 1},
{"iron-gear-wheel", 3}
},
result = "defender-capsule"

View File

@ -4,7 +4,7 @@ data:extend(
type = "recipe",
name = "copper-plate",
category = "smelting",
energy_required = 3.5,
energy_required = 3.2,
ingredients = {{ "copper-ore", 1}},
result = "copper-plate"
},
@ -12,7 +12,7 @@ data:extend(
type = "recipe",
name = "iron-plate",
category = "smelting",
energy_required = 3.5,
energy_required = 3.2,
ingredients = {{"iron-ore", 1}},
result = "iron-plate"
},
@ -20,7 +20,7 @@ data:extend(
type = "recipe",
name = "stone-brick",
category = "smelting",
energy_required = 3.5,
energy_required = 3.2,
enabled = true,
ingredients = {{"stone", 2}},
result = "stone-brick"

View File

@ -1,16 +1,9 @@
data:extend(
{
{
type = "recipe",
name = "wood",
ingredients = {{"raw-wood", 1}},
result = "wood",
result_count = 2
},
{
type = "recipe",
name = "wooden-chest",
ingredients = {{"wood", 4}},
ingredients = {{"wood", 2}},
result = "wooden-chest"
},
{
@ -20,12 +13,6 @@ data:extend(
result = "iron-stick",
result_count = 2
},
{
type = "recipe",
name = "iron-axe",
ingredients = {{"iron-stick", 2}, {"iron-plate", 3}},
result = "iron-axe"
},
{
type = "recipe",
name = "stone-furnace",
@ -219,7 +206,7 @@ data:extend(
name = "small-electric-pole",
ingredients =
{
{"wood", 2},
{"wood", 1},
{"copper-cable", 2}
},
result = "small-electric-pole",
@ -298,7 +285,7 @@ data:extend(
ingredients =
{
{"electronic-circuit", 1},
{"iron-stick", 3},
{"copper-cable", 3},
{"iron-plate", 1}
},
result = "small-lamp"
@ -335,6 +322,6 @@ data:extend(
{"iron-gear-wheel", 2}
},
result = "repair-pack"
}
},
}
)

View File

@ -12,6 +12,18 @@ data:extend(
},
result = "night-vision-equipment"
},
{
type = "recipe",
name = "belt-immunity-equipment",
enabled = false,
energy_required = 10,
ingredients =
{
{"advanced-circuit", 5},
{"steel-plate", 10}
},
result = "belt-immunity-equipment"
},
{
type = "recipe",
name = "energy-shield-equipment",
@ -32,7 +44,8 @@ data:extend(
ingredients =
{
{"energy-shield-equipment", 10},
{"processing-unit", 10}
{"processing-unit", 5},
{"low-density-structure", 5}
},
result = "energy-shield-mk2-equipment"
},
@ -56,7 +69,8 @@ data:extend(
ingredients =
{
{"battery-equipment", 10},
{"processing-unit", 20}
{"processing-unit", 15},
{"low-density-structure", 5}
},
result = "battery-mk2-equipment"
},
@ -67,8 +81,8 @@ data:extend(
energy_required = 10,
ingredients =
{
{"solar-panel", 5},
{"advanced-circuit", 1},
{"solar-panel", 1},
{"advanced-circuit", 2},
{"steel-plate", 5}
},
result = "solar-panel-equipment"
@ -80,7 +94,8 @@ data:extend(
energy_required = 10,
ingredients =
{
{"processing-unit", 250}
{"processing-unit", 200},
{"low-density-structure", 50}
},
result = "fusion-reactor-equipment"
},
@ -91,8 +106,8 @@ data:extend(
energy_required = 10,
ingredients =
{
{"processing-unit", 1},
{"steel-plate", 5},
{"processing-unit", 20},
{"low-density-structure", 5},
{"laser-turret", 5}
},
result = "personal-laser-defense-equipment"
@ -145,7 +160,8 @@ data:extend(
ingredients =
{
{"personal-roboport-equipment", 5},
{"processing-unit", 100}
{"processing-unit", 100},
{"low-density-structure", 20}
},
result = "personal-roboport-mk2-equipment"
}

Some files were not shown because too many files have changed in this diff Show More