diff --git a/ghelmina/prototypes/content/data.lua b/ghelmina/prototypes/content/data.lua index eef21b0..36a15b8 100644 --- a/ghelmina/prototypes/content/data.lua +++ b/ghelmina/prototypes/content/data.lua @@ -1,5 +1,6 @@ require("planet/planet") require("terrain/terrain") +require("resources/resources") require("pain") require("technology") require("eye-miner") \ No newline at end of file diff --git a/ghelmina/prototypes/content/eye-miner.lua b/ghelmina/prototypes/content/eye-miner.lua new file mode 100644 index 0000000..7238c51 --- /dev/null +++ b/ghelmina/prototypes/content/eye-miner.lua @@ -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 + } +}) diff --git a/ghelmina/prototypes/content/planet/mapgen.lua b/ghelmina/prototypes/content/planet/mapgen.lua index e64d830..f2656f3 100644 --- a/ghelmina/prototypes/content/planet/mapgen.lua +++ b/ghelmina/prototypes/content/planet/mapgen.lua @@ -48,6 +48,7 @@ return { ["gleba_enemy_base"] = {}, ["gleba_water"] = {}, ["gleba_cliff"] = {}, + ["crude-oil"] = {} }, autoplace_settings = { @@ -127,6 +128,7 @@ return { }, ["entity"] = { settings = { + ["eye-patch"] = {}, } } } diff --git a/ghelmina/prototypes/content/resources/eye.lua b/ghelmina/prototypes/content/resources/eye.lua new file mode 100644 index 0000000..ba0d8a0 --- /dev/null +++ b/ghelmina/prototypes/content/resources/eye.lua @@ -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 + } +}) diff --git a/ghelmina/prototypes/content/resources/resources.lua b/ghelmina/prototypes/content/resources/resources.lua new file mode 100644 index 0000000..43e16f0 --- /dev/null +++ b/ghelmina/prototypes/content/resources/resources.lua @@ -0,0 +1 @@ +require("eye") \ No newline at end of file