Compare commits

..

1 commit
main ... eye

Author SHA1 Message Date
Simon Brodtmann
0688be9a01 Add eyes as resource 2025-03-17 23:04:56 +01:00
5 changed files with 274 additions and 0 deletions

View file

@ -1,5 +1,6 @@
require("planet/planet") require("planet/planet")
require("terrain/terrain") require("terrain/terrain")
require("resources/resources")
require("pain") require("pain")
require("technology") require("technology")
require("eye-miner") require("eye-miner")

View file

@ -0,0 +1,41 @@
local item_sounds = require("__base__.prototypes.item_sounds")
local miner = table.deepcopy(data.raw["mining-drill"]["electric-mining-drill"])
miner.name = "eye-miner"
miner.resource_categories = { "eye-mining" }
miner.mining_speed = 1
miner.energy_source = {
type = "electric",
emissions_per_minute = { pain = 40 },
usage_priority = "secondary-input"
}
miner.output_fluid_box = {
pipe_picture = assembler2pipepictures(),
pipe_covers = pipecoverspictures(),
volume = 100,
filter = "brine",
pipe_connections = {
{ direction = defines.direction.west, position = { -1, 0 } },
{ direction = defines.direction.east, position = { 1, 0 } },
{ direction = defines.direction.south, position = { 0, 1 } }
},
draw_only_when_connected = true
}
miner.input_fluid_box = nil
miner.minable.result = "eye-miner"
data:extend({
miner,
{
type = "item",
name = "eye-miner",
icon = "__base__/graphics/icons/electric-mining-drill.png",
subgroup = "extraction-machine",
order = "a[items]-c[eye-miner]",
inventory_move_sound = item_sounds.drill_inventory_move,
pick_sound = item_sounds.drill_inventory_pickup,
drop_sound = item_sounds.drill_inventory_move,
place_result = "eye-miner",
stack_size = 50
}
})

View file

@ -48,6 +48,7 @@ return {
["gleba_enemy_base"] = {}, ["gleba_enemy_base"] = {},
["gleba_water"] = {}, ["gleba_water"] = {},
["gleba_cliff"] = {}, ["gleba_cliff"] = {},
["crude-oil"] = {}
}, },
autoplace_settings = { autoplace_settings = {
@ -127,6 +128,7 @@ return {
}, },
["entity"] = { ["entity"] = {
settings = { settings = {
["eye-patch"] = {},
} }
} }
} }

View file

@ -0,0 +1,229 @@
local resource_autoplace = require("resource-autoplace")
local sounds = require("__base__.prototypes.entity.sounds")
local item_sounds = require("__base__.prototypes.item_sounds")
-- Initialize the core patch sets in a predictable order
resource_autoplace.initialize_patch_set("eye-patch", true)
local oil_driving_sound = {
sound = {
filename = "__base__/sound/driving/vehicle-surface-oil.ogg",
volume = 0.8,
advanced_volume_control = { fades = { fade_in = { curve_type = "cosine", from = { control = 0.5, volume_percentage = 0.0 }, to = { 1.5, 100.0 } } } }
},
fade_ticks = 6
}
local gun_turret = data.raw["ammo-turret"]["gun-turret"]
data:extend({
{
type = "resource-category",
name = "eye-mining"
},
{
type = "resource",
name = "eye-patch",
icon = Ghelmina.graphics .. "icons/eye.png",
icon_size = 64,
flags = { "placeable-neutral" },
category = "eye-mining",
infinite = false,
highlight = true,
resource_patch_search_radius = 12,
tree_removal_probability = 1,
tree_removal_max_distance = 32 * 32,
minable = {
mining_time = 4,
results = {
--{ type = "item", name = "vitreous-body", amount = 1, probability = 0.1 },
{ type = "fluid", name = "brine", amount = 10 }
},
},
walking_sound = sounds.oil,
driving_sound = oil_driving_sound,
collision_box = { { -1.4, -1.4 }, { 1.4, 1.4 } },
selection_box = { { -0.5, -0.5 }, { 0.5, 0.5 } },
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 = true,
regular_rq_factor_multiplier = 1
}),
stage_counts = {},
--stages = {
-- sheet = util.sprite_load("__base__/graphics/entity/crude-oil/crude-oil", {
-- priority = "extra-high",
-- scale = 0.5,
-- variation_count = 1,
-- frame_count = 4,
-- })
--},
draw_stateless_visualisation_under_building = false,
--stateless_visualisation = {
-- {
-- count = 1,
-- render_layer = "decorative",
-- animation = util.sprite_load("__base__/graphics/entity/crude-oil/crude-oil-animation", {
-- priority = "extra-high",
-- scale = 0.5,
-- frame_count = 32,
-- animation_speed = 0.2,
-- })
-- },
-- {
-- count = 1,
-- render_layer = "smoke",
-- animation = {
-- filename = "__base__/graphics/entity/crude-oil/oil-smoke-outer.png",
-- frame_count = 47,
-- line_length = 16,
-- width = 90,
-- height = 188,
-- animation_speed = 0.3,
-- shift = util.by_pixel(-2, 24 - 152),
-- scale = 1.5,
-- tint = util.multiply_color({ r = 0.3, g = 0.3, b = 0.3 }, 0.2)
-- }
-- },
-- {
-- count = 1,
-- render_layer = "smoke",
-- animation = {
-- filename = "__base__/graphics/entity/crude-oil/oil-smoke-inner.png",
-- frame_count = 47,
-- line_length = 16,
-- width = 40,
-- height = 84,
-- animation_speed = 0.3,
-- shift = util.by_pixel(0, 24 - 78),
-- scale = 1.5,
-- tint = util.multiply_color({ r = 0.4, g = 0.4, b = 0.4 }, 0.2)
-- }
-- }
--},
map_color = { 0.78, 0.2, 0.77 },
map_grid = false,
created_effect = {
type = "direct",
action_delivery = {
type = "instant",
target_effects = {
type = "script",
effect_id = "eye-patch-created"
}
}
}
},
--{
-- type = "ammo-category",
-- name = "invisible",
-- hidden = true
--},
{
type = "turret",
name = "eye",
flags = { "not-on-map", "not-blueprintable", "not-deconstructable", "not-flammable", "not-repairable", "not-upgradable", "no-automated-item-insertion", "no-automated-item-removal", "not-in-kill-statistics" },
allow_copy_paste = false,
collision_mask = { layers = {} },
collision_box = { { -0.5, -0.5 }, { 0.5, 0.5 } },
attack_parameters = {
type = "stream",
range = 20,
cooldown = 60,
damage_modifier = 0,
use_shooter_direction = true,
ammo_category = "biological",
ammo_type = {
action = {
type = "direct"
}
}
},
rotation_speed = 1,
call_for_help_radius = 40,
graphics_set = {},
gun_animation_render_layer = "decorative",
folded_animation = table.deepcopy(gun_turret.folded_animation),
preparing_animation = table.deepcopy(gun_turret.preparing_animation),
--prepared_animation = table.deepcopy(gun_turret.prepared_animation),
--attacking_animation = table.deepcopy(gun_turret.attacking_animation),
folding_animation = table.deepcopy(gun_turret.folding_animation),
--graphics_set = table.deepcopy(gun_turret.graphics_set),
--attacking_animation = {
-- direction_count = 16,
-- layers = {
-- {
-- filename = Ghelmina.graphics .. "entity/eye/eye-folded.png",
-- width = 256,
-- height = 182,
-- line_length = 8,
-- frame_count = 1,
-- direction_count = 64,
-- scale = 0.5,
-- shift = { 0, 0 }
-- }
-- }
--},
prepared_animation = {
layers = {
{
filename = Ghelmina.graphics .. "entity/eye/eye-folded.png",
width = 256,
height = 182,
line_length = 8,
frame_count = 1,
direction_count = 64,
scale = 0.5,
shift = { 0, 0 }
}
}
}
},
--{
-- type = "item",
-- name = "eye",
-- icon = Ghelmina.graphics .. "icons/eye.png",
-- icon_size = 64,
-- subgroup = "raw-resource",
-- order = "g[vitreous-body]",
-- place_result = "eye",
-- inventory_move_sound = item_sounds.resource_inventory_move,
-- pick_sound = item_sounds.resource_inventory_pickup,
-- drop_sound = item_sounds.resource_inventory_move,
-- stack_size = 50,
-- default_import_location = "ghelmina",
-- weight = 1 * kg
--},
{
type = "item",
name = "vitreous-body",
icon = Ghelmina.graphics .. "icons/eye.png",
icon_size = 64,
subgroup = "raw-resource",
order = "g[vitreous-body]",
inventory_move_sound = item_sounds.resource_inventory_move,
pick_sound = item_sounds.resource_inventory_pickup,
drop_sound = item_sounds.resource_inventory_move,
stack_size = 50,
default_import_location = "ghelmina",
weight = 1 * kg
},
{
type = "fluid",
name = "brine",
icon = Ghelmina.graphics .. "icons/brine.png",
icon_size = 64,
subgroup = "fluid",
order = "a[fluid]-c[brine]",
base_color = { 135, 148, 167 },
flow_color = { 153, 164, 180 },
default_temperature = 25
}
})

View file

@ -0,0 +1 @@
require("eye")