From 53699b9a9cc44da71a7d6759be5a8bc64e53ee5d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Fri, 14 Feb 2025 16:19:22 +0100 Subject: [PATCH] Add new enemies --- README.md | 3 + .../icons/lignumis-medium-wriggler-corpse.png | Bin 0 -> 8850 bytes .../icons/lignumis-medium-wriggler.png | Bin 0 -> 9699 bytes .../icons/lignumis-small-wriggler-corpse.png | Bin 0 -> 7055 bytes .../icons/lignumis-small-wriggler.png | Bin 0 -> 7623 bytes lignumis/prototypes/content/data.lua | 1 + lignumis/prototypes/content/enemies.lua | 534 ++++++++++++++++++ .../icons/lignumis-medium-wriggler-corpse.png | Bin 0 -> 8850 bytes sources/icons/lignumis-medium-wriggler.png | Bin 0 -> 9699 bytes .../icons/lignumis-small-wriggler-corpse.png | Bin 0 -> 7055 bytes sources/icons/lignumis-small-wriggler.png | Bin 0 -> 7623 bytes 11 files changed, 538 insertions(+) create mode 100644 lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png create mode 100644 lignumis/graphics/icons/lignumis-medium-wriggler.png create mode 100644 lignumis/graphics/icons/lignumis-small-wriggler-corpse.png create mode 100644 lignumis/graphics/icons/lignumis-small-wriggler.png create mode 100644 lignumis/prototypes/content/enemies.lua create mode 100644 sources/icons/lignumis-medium-wriggler-corpse.png create mode 100644 sources/icons/lignumis-medium-wriggler.png create mode 100644 sources/icons/lignumis-small-wriggler-corpse.png create mode 100644 sources/icons/lignumis-small-wriggler.png diff --git a/README.md b/README.md index e11d3e6..4a8ff35 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,9 @@ If your modded lab is special and it should not support these science packs, use - Add information in Factoriopedia - Compatibility with [On Wayward Seas](https://mods.factorio.com/mod/wayward-seas) - Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated +- Check if creating a separate group for Lignumis recipes/items makes sense +- Only create 1 cutscene per game in multiplayer +- Think about moving Lumber mill to later and let it use electricity. ## Credits diff --git a/lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png b/lignumis/graphics/icons/lignumis-medium-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..4d78edf05b6d12a11904e699f3a88c37e67048e4 GIT binary patch literal 8850 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 U%w4B_B>(^b07*qoM6N<$g1uyX$^ZZW literal 0 HcmV?d00001 diff --git a/lignumis/graphics/icons/lignumis-medium-wriggler.png b/lignumis/graphics/icons/lignumis-medium-wriggler.png new file mode 100644 index 0000000000000000000000000000000000000000..55fd48b0bbe767696b77eddbc7f356ccf016c9ed GIT binary patch literal 9699 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%0D2Cmi2M7qB*P;a*ip6cylarHfozla48lk6 zwu$g{7w+BKEZ$ueNeM!oN2J$f0<@_R3Xnulsakn`ixZ9y#*Hde*RLq4tqoQpo@~g9`~VD(_3xKP z&uUXZ>?5_sq2(Nx&8=Lj?`Q@+c6K#}M^>O_cRVf3c7eN}cIfZODU&}6+&CPKrA0*9 zpZk~}e11!S+n3kk`Hqc<$&C~cPc~$t@XKe98gzHmm_NQCM5cZyZ?!);G?0w3)A^GA zfo0fU5k(7goZ%Fy87?FE_eJhfxbX>{p8bw%YPW`s6t9cE@$B}(cw#1DYAyHC$3pBl z;<(}DrF4vrtrT~6XVd%YG9k)yfoHT<@b4q|=SwLW5*A13Wo3nPXVQ9@e7t#EStPr@ z-7=}~Tq-WTR7wquEu{~(r9)KUL|cW;_WI*gin4P!NO_g`@e;gkzeDK2$#jgLFQbng zTSM11#vv@n<_nX6x!P0ZRitFg1pzWl>9G)%`@9QBPcOyTaG9j*P!YYOG8z7hxqr8e z&{QJ`c};iPTX1!wpl0+$5eE9!i#rY!NLD=^PV<+UUX~Usq3>t` zwR5{rlCqo+-&NM-@`C*nV7(O$fv)X`qUj4mdGyHOQaV4IPe-ow`jGA=OvT#pA7)MB=_Co+K^935!-c?Uh^ald;xj44-g*<&(GK@$q$caq}jEUc6lY z3x{})vGg-?>z$U6iNuSGiP@KjR6hOqk|zE-#Jt~F!9?EEYTG6(TrPQ?u8^IxIM_MI z>Fv`>)a^ln9^FfzXgTp!SSs64ZoShSz(exhzZS3upYrjy^PF#o_7IXy&nS01?3a@} zT_HQ3|Hf*YPhaPM|HUmQy03~!byqV{`JATUVcuBoo~M2E+}G$O`s{kZxA$&_&<#Zd z)myD`;L4R;1^Ea)L4U${bJ!#A#@K?Z`Eg3w{PZ%md}N-WD4HatudTDj`-MN8Oe5b7 l_(Zzv%Cf{c@;P_v@NdKHU5-s+`GWue002ovPDHLkV1j%TBK80P literal 0 HcmV?d00001 diff --git a/lignumis/graphics/icons/lignumis-small-wriggler-corpse.png b/lignumis/graphics/icons/lignumis-small-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..532e60dedf236cabb43d69b401aa97260f582323 GIT binary patch literal 7055 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 literal 0 HcmV?d00001 diff --git a/lignumis/prototypes/content/data.lua b/lignumis/prototypes/content/data.lua index b884e38..2a4a1d5 100644 --- a/lignumis/prototypes/content/data.lua +++ b/lignumis/prototypes/content/data.lua @@ -30,5 +30,6 @@ require("quality-assembler") require("decoratives") require("wood-military") require("basic-circuit-boards") +require("enemies") require("noise") diff --git a/lignumis/prototypes/content/enemies.lua b/lignumis/prototypes/content/enemies.lua new file mode 100644 index 0000000..f2539b1 --- /dev/null +++ b/lignumis/prototypes/content/enemies.lua @@ -0,0 +1,534 @@ +local particle_animations = require("__space-age__/prototypes/particle-animations") +local base_sounds = require("__base__.prototypes.entity.sounds") +local space_age_sounds = require("__space-age__.prototypes.entity.sounds") +local simulations = require("__space-age__.prototypes.factoriopedia-simulations") +local enemy_autoplace = require("__base__.prototypes.entity.enemy-autoplace-utils") +local biter_ai_settings = require ("__base__.prototypes.entity.biter-ai-settings") + +local blood_particles = { + "blood-particle-small", +} + +for _, particle_name in ipairs(blood_particles) do + local new_particle = table.deepcopy(data.raw["optimized-particle"][particle_name]) + local scale = new_particle.pictures.sheet.scale + local shift = new_particle.pictures.sheet.shift + new_particle.name = "lignumis-" .. particle_name + new_particle.pictures = { + sheet = { + filename = "__space-age__/graphics/particle/gleba-blood-particle/gleba-blood-particle.png", + line_length = 12, + width = 32, + height = 24, + frame_count = 12, + variation_count = 7, + scale = scale * 0.25, + shift = shift + } + } + data:extend({ new_particle }) +end + +function gleba_hit_effects(offset_deviation, offset) + local offset = offset or { 0, 0 } + return { + type = "create-entity", + entity_name = "gleba-enemy-damaged-explosion", + offset_deviation = offset_deviation or { { -0.5, -0.5 }, { 0.5, 0.5 } }, + offsets = { offset }, + damage_type_filters = "fire" + } +end + +function wriggler_spritesheet(name, frames, speed, scale, tint, flag) + speed = speed or 1.0 + local is_shadow = string.sub(name, -string.len("-shadow")) == "-shadow" + local is_decay = string.find(name, "decay") + if is_decay and is_shadow then return nil end + return util.sprite_load("__space-age__/graphics/entity/wriggler/wriggler-" .. name, + { + slice = 5, + frame_count = frames, + direction_count = 16, + scale = 0.5 * 1.2 * scale, + multiply_shift = scale, + animation_speed = speed, + draw_as_shadow = is_shadow, + tint_as_overlay = tint and true or nil, + tint = tint, + flags = (not is_shadow) and { flag } or nil, + surface = "gleba", + usage = "enemy" + } + ) +end + +function wriggler_corpse_spritesheet(name, frames, speed, scale, tint) + return wriggler_spritesheet(name, frames, speed, scale, tint, "corpse-decay") +end + +local default_ended_in_water_trigger_effect = function() + return { + { + type = "create-particle", + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "secondary", + offset_deviation = { { -0.05, -0.05 }, { 0.05, 0.05 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.05, + initial_vertical_speed_deviation = 0.05, + speed_from_center = 0.01, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 2, + tail_length_deviation = 1, + tail_width = 3 + }, + { + type = "create-particle", + repeat_count = 10, + repeat_count_deviation = 6, + probability = 0.03, + affects_target = false, + show_in_tooltip = false, + particle_name = "tintable-water-particle", + apply_tile_tint = "primary", + offsets = { + { 0, 0 }, + { 0.01563, -0.09375 }, + { 0.0625, 0.09375 }, + { -0.1094, 0.0625 } + }, + offset_deviation = { { -0.2969, -0.1992 }, { 0.2969, 0.1992 } }, + initial_height = 0, + initial_height_deviation = 0.02, + initial_vertical_speed = 0.053, + initial_vertical_speed_deviation = 0.005, + speed_from_center = 0.02, + speed_from_center_deviation = 0.006, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 9, + tail_length_deviation = 0, + tail_width = 1 + }, + { + type = "play-sound", + sound = base_sounds.small_splash + } + } +end + +local make_particle = function(params) + if not params then error("No params given to make_particle function") end + local name = params.name or error("No name given") + + local ended_in_water_trigger_effect = params.ended_in_water_trigger_effect or default_ended_in_water_trigger_effect() + if params.ended_in_water_trigger_effect == false then + ended_in_water_trigger_effect = nil + end + + local particle = { + type = "optimized-particle", + name = name, + life_time = params.life_time or (60 * 15), + fade_away_duration = params.fade_away_duration, + render_layer = params.render_layer or "projectile", + render_layer_when_on_ground = params.render_layer_when_on_ground or "corpse", + regular_trigger_effect_frequency = params.regular_trigger_effect_frequency or 2, + regular_trigger_effect = params.regular_trigger_effect, + ended_in_water_trigger_effect = ended_in_water_trigger_effect, + pictures = params.pictures, + shadows = params.shadows, + draw_shadow_when_on_ground = params.draw_shadow_when_on_ground, + movement_modifier_when_on_ground = params.movement_modifier_when_on_ground, + movement_modifier = params.movement_modifier, + vertical_acceleration = params.vertical_acceleration, + mining_particle_frame_speed = params.mining_particle_frame_speed, + } + return particle +end + +local function lerp_color(a, b, amount) + return { + a[1] + amount * (b[1] - a[1]), + a[2] + amount * (b[2] - a[2]), + a[3] + amount * (b[3] - a[3]), + a[4] + amount * (b[4] - a[4]), + } +end + +function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simulation, factoriopedia_simulation_premature, + sounds) + -- Premature version loses health so that the swarm will get removed (more efficient). + -- Spawner-spawned versions are stable so that the area is not full of corpses. + local tint_mask = tints.mask + local tint_body = tints.body + + local function attack_parameters(lifesteal) + local cooldown = 26 + return { + ammo_category = "melee", + ammo_type = { + target_type = "entity", + action = { + type = "direct", + action_delivery = { + type = "instant", + source_effects = lifesteal and { + { + type = "damage", + damage = { amount = -health / 50 / 60 * cooldown * 1.1, type = "poison" } -- offsets negative regeneration when attacking + } + } or nil, + target_effects = { + { + type = "damage", + damage = { amount = 5 * damage, type = "physical" } + }, + { + type = "damage", + damage = { amount = 5 * damage, type = "poison" } + } + } + } + } + }, + animation = { + layers = { + wriggler_spritesheet("attack", 19, 0.48, scale, tint_body), + wriggler_spritesheet("attack-tint", 19, 0.48, scale, tint_mask), + wriggler_spritesheet("attack-shadow", 19, 0.48, scale), + } + }, + cooldown = cooldown, + cooldown_deviation = 0.1, + range = 1.8 * scale, + range_mode = "bounding-box-to-bounding-box", + sound = sounds.attack_sound, + type = "projectile" + } + end + + local wriggler = { + type = "unit", + name = prefix .. "wriggler-pentapod-premature", + icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler.png", + subgroup = "enemies", + order = "gleba-a-wriggler-" .. tostring(scale), + factoriopedia_simulation = factoriopedia_simulation_premature, + collision_box = { { -0.2 * scale, -0.2 * scale }, { 0.2 * scale, 0.2 * scale } }, + sticker_box = { { -0.5 * scale, -0.5 * scale }, { 0.5 * scale, 0.5 * scale } }, + selection_box = { { -0.9 * scale, -0.9 * scale }, { 0.9 * scale, 0.9 * scale } }, + collision_mask = { layers = { player = true, train = true, is_object = true }, not_colliding_with_itself = true }, + flags = { "placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air" }, + absorptions_to_join_attack = { noise = 1 }, + ai_settings = biter_ai_settings, + attack_parameters = attack_parameters(true), + corpse = prefix .. "wriggler-pentapod-corpse", + damaged_trigger_effect = gleba_hit_effects(), + distance_per_frame = 0.125, + distraction_cooldown = 300, + dying_explosion = prefix .. "wriggler-die", + dying_sound = sounds.dying_sound, + healing_per_tick = -health / 50 / 60, + impact_category = "organic", + max_health = health, + max_pursue_distance = 50, + min_pursue_time = 600, + movement_speed = 0.2 * (1 + (scale - 1) / 2), + resistances = { + { + percent = 50, + type = "laser" + } + }, + run_animation = { + layers = { + wriggler_spritesheet("run", 21, 0.48, scale, tint_body), + wriggler_spritesheet("run-tint", 21, 0.48, scale, tint_mask), + wriggler_spritesheet("run-shadow", 21, 0.48, scale), + } + }, + running_sound_animation_positions = { 2 }, + vision_distance = 20, + water_reflection = { + orientation_to_variation = false, + rotate = true, + pictures = { + filename = "__base__/graphics/entity/biter/biter-reflection.png", + height = 28, + priority = "extra-high", + scale = 2.5 * scale, + shift = { 0.15625, 0.46875 }, + variation_count = 1, + width = 20 + } + }, + walking_sound = sounds.walking_sound, + working_sound = sounds.working_sound, + warcry = sounds.warcry, + } + + local wriggler_stable = table.deepcopy(wriggler) + wriggler_stable.name = prefix .. "wriggler-pentapod" + wriggler_stable.factoriopedia_simulation = factoriopedia_simulation + wriggler_stable.healing_per_tick = health / 500 / 60 + wriggler_stable.absorptions_to_join_attack = { noise = 1 } + wriggler_stable.attack_parameters = attack_parameters(false) + + local wriggler_corpse = { + type = "corpse", + name = prefix .. "wriggler-pentapod-corpse", + icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler-corpse.png", + subgroup = "corpses", + order = "c[corpse]-d[gleba-enemies-corpses]-d[wriggler]" .. tostring(scale), + hidden_in_factoriopedia = true, + selection_box = { { -0.8, -0.8 }, { 0.8, 0.8 } }, + selectable_in_game = false, + animation = { + layers = { + wriggler_corpse_spritesheet("death", 17, 0.48, scale, tint_body), + wriggler_corpse_spritesheet("death-tint", 17, 0.48, scale, tint_mask), + wriggler_corpse_spritesheet("death-shadow", 17, 0.48, scale), + } + }, + decay_animation = { + layers = { + wriggler_corpse_spritesheet("decay", 9, nil, scale, tint_body), + wriggler_corpse_spritesheet("decay-tint", 9, nil, scale, tint_mask), + wriggler_corpse_spritesheet("decay-shadow", 9, nil, scale), + } + }, + dying_speed = 0.015 / scale, + decay_frame_transition_duration = 150, + time_before_removed = 1 * 60 * 60, -- 1 minute + use_decay_layer = true, + + direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }, + shuffle_directions_at_frame = 0, + final_render_layer = "lower-object-above-shadow", + flags = { + "placeable-neutral", + "placeable-off-grid", + "building-direction-8-way", + "not-repairable", + "not-on-map" + }, + ground_patch = { + sheet = + util.sprite_load("__space-age__/graphics/entity/wriggler/blood-puddle-var-main", + { + flags = { "low-object" }, + variation_count = 4, + scale = 0.4 * scale, + multiply_shift = 0.125, + } + ) + }, + ground_patch_fade_in_delay = 20, + ground_patch_fade_in_speed = 0.002, + ground_patch_fade_out_duration = 50 * 60 / 7.5, + ground_patch_fade_out_start = 50 * 60 / 7.5, + ground_patch_render_layer = "decals" + } + + local wrigger_explosion = { + type = "explosion", + name = prefix .. "wriggler-die", + scale = 0.25, + icon = "__space-age__/graphics/icons/medium-wriggler-corpse.png", + order = "a[corpse]-f[wriggler]", + flags = { "not-on-map" }, + hidden = true, + subgroup = "enemy-death-explosions", + animations = util.empty_sprite(), + created_effect = { + type = "direct", + action_delivery = { + type = "instant", + target_effects = { + { + type = "create-particle", + repeat_count = 13, + repeat_count_deviation = 1, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { { 0, 0 } }, + offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.009, + initial_vertical_speed_deviation = 0.009, + speed_from_center = 0.05, + speed_from_center_deviation = 0.05, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 5, + tail_length_deviation = 5, + tail_width = 3, + rotate_offsets = false + }, + { + type = "create-particle", + repeat_count = 12, + repeat_count_deviation = 3, + probability = 1, + affects_target = false, + show_in_tooltip = false, + particle_name = "lignumis-blood-particle-small", + offsets = { + { 0, -0.4 }, + { 0, 0.5 }, + { 0, 0.6 } + }, + offset_deviation = { { -0.25, -0.25 }, { 0.25, 0.25 } }, + initial_height = 0.1, + initial_height_deviation = 0.1, + initial_vertical_speed = 0.055, + initial_vertical_speed_deviation = 0.075, + speed_from_center = 0.03, + speed_from_center_deviation = 0.03, + frame_speed = 1, + frame_speed_deviation = 0, + tail_length = 52, + tail_length_deviation = 25, + tail_width = 3, + rotate_offsets = false + }, + --{ + -- type = "create-particle", + -- repeat_count = 2, + -- repeat_count_deviation = 0, + -- probability = 1, + -- affects_target = false, + -- show_in_tooltip = false, + -- particle_name = "pentapod-entrails-particle-small", + -- offsets = { + -- { 0, -0.4 } + -- }, + -- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + -- initial_height = 0.1, + -- initial_height_deviation = 0.1, + -- initial_vertical_speed = 0.06, + -- initial_vertical_speed_deviation = 0.05, + -- speed_from_center = 0.07, + -- speed_from_center_deviation = 0, + -- frame_speed = 1, + -- frame_speed_deviation = 0, + -- rotate_offsets = false + --}, + --{ + -- type = "create-particle", + -- repeat_count = 10, + -- repeat_count_deviation = 0, + -- probability = 1, + -- affects_target = false, + -- show_in_tooltip = false, + -- particle_name = prefix .. "wriggler-skin-particle", + -- offsets = { + -- { 0, -0.4 } + -- }, + -- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } }, + -- initial_height = 0.1, + -- initial_height_deviation = 0.1, + -- initial_vertical_speed = 0.05, + -- initial_vertical_speed_deviation = 0.02, + -- speed_from_center = 0.02, + -- speed_from_center_deviation = 0.1, + -- frame_speed = 1, + -- frame_speed_deviation = 0, + -- rotate_offsets = false + --}, + { + type = "play-sound", + sound = base_sounds.medium_gore + }, + } + } + } + } + + data:extend { + --wriggler, + wriggler_stable, + wriggler_corpse, + wrigger_explosion, + make_particle + { + name = prefix .. "wriggler-skin-particle", + life_time = 300, + pictures = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = lerp_color(tint_mask, { 255, 255, 255, 255 }, 0.7) }), + shadows = particle_animations.get_pentpod_skin_particles_small({ scale = 1 * scale, tint = shadowtint(), shift = util.by_pixel(1, 0) }), + ended_in_water_trigger_effect = default_ended_in_water_trigger_effect(), + render_layer_when_on_ground = "lower-object-above-shadow" + }, + } +end + +local function fade(tint, amount) -- fades to minimal opacity grey. Low opacity is good for the mask to let the base layer show htough (instead of having a grey mask) + return lerp_color(tint, { 1, 1, 1, 2 }, amount) +end + +local function grey_overlay(tint, amount) -- fades to opaque grey. Full opacity is required for body. + return lerp_color(tint, { 127, 127, 127, 255 }, amount) +end + +-- mask tint is vibrant and only on the mask +-- body tint applies to the whole body and should be near 127 grey, just adds a hint of saturation +local gleba_small_mask_tint = { 103, 151, 11, 255 } +local gleba_small_body_tint = { 125, 124, 111, 255 } + +make_wriggler("lignumis-small-", 0.2, 20, 0.1, + { + mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.2), 0.2), + body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.2), 0.2) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +make_wriggler("lignumis-medium-", 0.4, 40, 0.2, + { + mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.4), 0.2), + body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.4), 0.2) + }, + simulations.factoriopedia_gleba_enemy_small_wriggler, + simulations.factoriopedia_gleba_enemy_small_wriggler_premature, + space_age_sounds.wriggler_pentapod.small +) + +local spawner = table.deepcopy(data.raw["unit-spawner"]["gleba-spawner-small"]) +table.assign(spawner, { + name = "lignumis-spawner-small", + result_units = { + { "lignumis-small-wriggler-pentapod", { { 0.0, 0.9 }, { 0.5, 0.9 }, { 0.6, 0.5 } } }, + { "lignumis-medium-wriggler-pentapod", { { 0.1, 0 }, { 0.4, 0 }, { 1, 0.9 } } } + }, + max_count_of_owned_units = 7, + max_friends_around_to_spawn = 5, + spawning_cooldown = { 360, 150 }, + spawning_radius = 10, + spawning_spacing = 3, + max_spawn_shift = 0, + max_richness_for_spawn_shift = 100, + call_for_help_radius = 50, + --spawning_cooldown = { 60, 20 }, + --spawning_radius = 4, + --call_for_help_radius = 20, + autoplace = enemy_autoplace.enemy_spawner_autoplace("enemy_autoplace_base(0, 6)"), + absorptions_per_second = { noise = { absolute = 20, proportional = 0.01 } }, +}) +spawner.collision_mask = nil +spawner.loot = nil +spawner.dying_trigger_effect[1].entity_name = "lignumis-small-wriggler-pentapod" + +data:extend({ spawner }) diff --git a/sources/icons/lignumis-medium-wriggler-corpse.png b/sources/icons/lignumis-medium-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..4d78edf05b6d12a11904e699f3a88c37e67048e4 GIT binary patch literal 8850 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 U%w4B_B>(^b07*qoM6N<$g1uyX$^ZZW literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-medium-wriggler.png b/sources/icons/lignumis-medium-wriggler.png new file mode 100644 index 0000000000000000000000000000000000000000..55fd48b0bbe767696b77eddbc7f356ccf016c9ed GIT binary patch literal 9699 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%0D2Cmi2M7qB*P;a*ip6cylarHfozla48lk6 zwu$g{7w+BKEZ$ueNeM!oN2J$f0<@_R3Xnulsakn`ixZ9y#*Hde*RLq4tqoQpo@~g9`~VD(_3xKP z&uUXZ>?5_sq2(Nx&8=Lj?`Q@+c6K#}M^>O_cRVf3c7eN}cIfZODU&}6+&CPKrA0*9 zpZk~}e11!S+n3kk`Hqc<$&C~cPc~$t@XKe98gzHmm_NQCM5cZyZ?!);G?0w3)A^GA zfo0fU5k(7goZ%Fy87?FE_eJhfxbX>{p8bw%YPW`s6t9cE@$B}(cw#1DYAyHC$3pBl z;<(}DrF4vrtrT~6XVd%YG9k)yfoHT<@b4q|=SwLW5*A13Wo3nPXVQ9@e7t#EStPr@ z-7=}~Tq-WTR7wquEu{~(r9)KUL|cW;_WI*gin4P!NO_g`@e;gkzeDK2$#jgLFQbng zTSM11#vv@n<_nX6x!P0ZRitFg1pzWl>9G)%`@9QBPcOyTaG9j*P!YYOG8z7hxqr8e z&{QJ`c};iPTX1!wpl0+$5eE9!i#rY!NLD=^PV<+UUX~Usq3>t` zwR5{rlCqo+-&NM-@`C*nV7(O$fv)X`qUj4mdGyHOQaV4IPe-ow`jGA=OvT#pA7)MB=_Co+K^935!-c?Uh^ald;xj44-g*<&(GK@$q$caq}jEUc6lY z3x{})vGg-?>z$U6iNuSGiP@KjR6hOqk|zE-#Jt~F!9?EEYTG6(TrPQ?u8^IxIM_MI z>Fv`>)a^ln9^FfzXgTp!SSs64ZoShSz(exhzZS3upYrjy^PF#o_7IXy&nS01?3a@} zT_HQ3|Hf*YPhaPM|HUmQy03~!byqV{`JATUVcuBoo~M2E+}G$O`s{kZxA$&_&<#Zd z)myD`;L4R;1^Ea)L4U${bJ!#A#@K?Z`Eg3w{PZ%md}N-WD4HatudTDj`-MN8Oe5b7 l_(Zzv%Cf{c@;P_v@NdKHU5-s+`GWue002ovPDHLkV1j%TBK80P literal 0 HcmV?d00001 diff --git a/sources/icons/lignumis-small-wriggler-corpse.png b/sources/icons/lignumis-small-wriggler-corpse.png new file mode 100644 index 0000000000000000000000000000000000000000..532e60dedf236cabb43d69b401aa97260f582323 GIT binary patch literal 7055 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 literal 0 HcmV?d00001