From c111c229cdc5b13a4a2c2b90f07effc4d0e479bd Mon Sep 17 00:00:00 2001 From: FluffMedic <109300046+FluffMedic@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:13:16 -0400 Subject: [PATCH] Small Tyr Changes (#12624) --- .../simple_mob/subtypes/animal/tyr/ants.dm | 67 +- .../subtypes/animal/tyr/oddities.dm | 200 +- .../subtypes/bullet_heck/hivebot.dm | 3 +- .../simple_mob/subtypes/bullet_heck/tyrian.dm | 4 +- .../code/modules/projectiles/precursor/tyr.dm | 28 +- modular_chomp/icons/mob/tyr.dmi | Bin 47795 -> 49051 bytes .../icons/obj/guns/precursor/tyr.dmi | Bin 5694 -> 6650 bytes .../overmap/planets/tyr/tyr.dmm | 1895 +++++++++-------- 8 files changed, 1014 insertions(+), 1183 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/ants.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/ants.dm index d3e6cdde33..f05b6c925a 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/ants.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/ants.dm @@ -196,7 +196,7 @@ strength = 15 ) -/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //secondary spawner +/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //smol name = "mhydro ant" icon_state = "mhydro_ant" icon_living = "mhydro_ant" @@ -208,9 +208,14 @@ /obj/item/stack/material/mhydrogen = 4 ) size_multiplier = 0.5 - movement_cooldown = -1 + mob_size = MOB_MINISCULE + pass_flags = PASSTABLE + layer = MOB_LAYER + density = 0 + melee_damage_lower = 6 + melee_damage_upper = 6 -/mob/living/simple_mob/animal/tyr/mineral_ants/painite +/mob/living/simple_mob/animal/tyr/mineral_ants/painite //flames name = "painite metal ant" ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive icon_state = "painite_ant" @@ -231,7 +236,7 @@ to_chat(L, span_danger("You've been burned by \the [src]!")) L.ignite_mob() -/mob/living/simple_mob/animal/tyr/mineral_ants/bronze +/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //spawns a legion name = "bronze metal ant" icon_state = "bronze_ant" icon_living = "bronze_ant" @@ -307,7 +312,7 @@ new build_type(T) return TRUE -/mob/living/simple_mob/animal/tyr/mineral_ants/silver +/mob/living/simple_mob/animal/tyr/mineral_ants/silver //transparent name = "silver ant" icon_state = "silver_ant" icon_living = "silver_ant" @@ -319,29 +324,11 @@ /obj/item/stack/material/silver = 10 ) -/mob/living/simple_mob/animal/tyr/mineral_ants/silver/bullet_act(obj/item/projectile/P) - if(prob(45)) - visible_message(span_danger("The [P.name] gets reflected by [src]'s armor!"), \ - span_userdanger("The [P.name] gets reflected by [src]'s armor!")) - - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.redirect(new_x, new_y, curloc, src) - P.reflected = 1 - - return -1 // complete projectile permutation - - return (..(P)) - -/mob/living/simple_mob/animal/tyr/mineral_ants/gold +/mob/living/simple_mob/animal/tyr/mineral_ants/gold //emp on death name = "gold ant" icon_state = "gold_ant" icon_living = "gold_ant" + desc = "A large ant with a metallic golden rear end. Is crackling with lightning." meat_type = /obj/item/reagent_containers/food/snacks/tyrant_burn butchery_loot = list(\ /obj/item/stack/material/gold = 18\ @@ -349,20 +336,24 @@ harvest_results = list( /obj/item/stack/material/gold = 10 ) + var/exploded = FALSE + var/explosion_delay_lower = 5 SECOND // Lower bound for explosion delay. + var/explosion_delay_upper = 8 SECONDS // Upper bound. + +/mob/living/simple_mob/animal/tyr/mineral_ants/gold/proc/explode() + if(src && !exploded) + visible_message(span_danger("\The [src]'s body detonates!")) + exploded = TRUE + empulse(src, 1, 2, 0, 0) + +/mob/living/simple_mob/animal/tyr/mineral_ants/gold/death() + visible_message(span_critical("\The [src]'s body begins to rupture!")) + var/delay = rand(explosion_delay_lower, explosion_delay_upper) + animate(src, color = "#000000", time = 0.1 SECONDS, loop = ceil(delay/2)) + animate(color = "#FF0000", time = 0.1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(explode)), delay, TIMER_DELETE_ME) + return ..() -/mob/living/simple_mob/animal/tyr/mineral_ants/gold/apply_melee_effects(var/atom/A) - if(isliving(A)) - var/mob/living/L = A - if(prob(33)) - A.emp_act(4) //The weakest strength of EMP - playsound(src, 'sound/weapons/egloves.ogg', 75, 1) - L.Weaken(4) - L.Stun(4) - L.stuttering = max(L.stuttering, 4) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, L) - s.start() - visible_message(span_danger("The grub releases a powerful shock!")) /mob/living/simple_mob/animal/tyr/mineral_ants/queen //the nurses of the ants name = "queen ant" diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/oddities.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/oddities.dm index 895462a4ee..790a8e8399 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/oddities.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/animal/tyr/oddities.dm @@ -3,207 +3,41 @@ desc = "A strange insect." icon_state = "firefly" icon_dead = "firefly_dead" - maxHealth = 10 //Not sure why you're fighting this, but any agate weapon one shots it. Except bow. + maxHealth = 10 //One shotable by pratically anyweapon health = 10 pass_flags = PASSTABLE movement_cooldown = 1 - ai_holder_type = /datum/ai_holder/simple_mob/passive + ai_holder_type = /datum/ai_holder/simple_mob/ranged/guard_limit/pointblank + + mob_size = MOB_MINISCULE //need to click the tiny sprite + + projectiletype = /obj/item/projectile/energy/blob/rainbowfly + projectile_dispersion = 8 + projectile_accuracy = -15 + base_attack_cooldown = 5 glow_color = "#FF3300" light_color = "#FF3300" glow_range = 4 glow_intensity = 4 - melee_damage_lower = 5 //I guess it could theortically kill you dirrectly + melee_damage_lower = 5 melee_damage_upper = 5 hovering = TRUE +/obj/item/projectile/energy/blob/rainbowfly + damage = 10 + check_armour = "melee" + splatter = TRUE + my_chems = list(REAGENT_ID_CRYPTOBIOLIN) + /mob/living/simple_mob/animal/tyr/rainbow_fly/handle_special() if(stat != DEAD) painbow_aura() ..() /mob/living/simple_mob/animal/tyr/rainbow_fly/proc/painbow_aura() - for(var/mob/living/L in view(src, 5)) + for(var/mob/living/L in view(src, 7)) L.druggy = max(L.druggy, 10) - -/mob/living/simple_mob/animal/tyr/groundpitcher - name = "underground pitcher" - desc = "A large insect." - icon_state = "groundpitcher" - icon_dead = "groundpitcher" - maxHealth = 20 //two hits with sword and spear.. - health = 20 - pass_flags = PASSTABLE //This was from me copy and pasting but...it's an unmoving plant. Kind of want to keep it here. - movement_cooldown = 1 - - ai_holder_type = /datum/ai_holder/simple_mob/passive/pitcher - - melee_damage_lower = 0 //This cannot kill you unless you fall into it - melee_damage_upper = 0 - - meat_type = /obj/item/stack/material/fiber - - butchery_loot = list(\ - /obj/item/stack/material/cloth = 1\ - ) - - vore_bump_chance = 100 - vore_bump_emote = "slurps up" //Not really a good way to make the grammar work with a passive vore plant. - vore_active = 1 - vore_capacity = 1 - vore_pounce_chance = 100 - swallowTime = 3 - vore_ignores_undigestable = 0 - vore_default_mode = DM_DIGEST - -//This is legit pitcher plant bellies with slightly altered bits. -/mob/living/simple_mob/animal/tyr/groundpitcher/load_default_bellies() - . = ..() - var/obj/belly/B = vore_selected - B.desc = "You leaned a little too close to the pitcher plant, stumbling over the lip and splashing into a puddle of liquid filling the bottom of the cramped pitcher. You squirm madly, righting yourself and scrabbling at the walls in vain as the slick surface offers no purchase. The dim light grows dark as the pitcher's cap lowers, silently sealing the exit. With a sinking feeling you realize you won't be able to push the exit open even if you could somehow climb that high, leaving you helplessly trapped in the slick, tingling fluid." - B.digest_burn = 0.5 - B.digest_brute = 0 - B.vore_verb = "trip" - B.name = "pitcher" - B.mode_flags = DM_FLAG_THICKBELLY - B.wet_loop = 0 //As nice as the fancy internal sounds are this is a plant. - B.digestchance = 20 - B.escapechance = 20 - B.fancy_vore = 1 - B.vore_sound = "Squish2" - B.release_sound = "Pred Escape" - B.contamination_color = "purple" - B.contamination_flavor = "Wet" -//Why is it we have all these customizeable belly options which nobody ever alters for mobs? - - B.emote_lists[DM_HOLD] = list( - "Slick fluid trickles over you, carrying threads of sweetness.", - "Everything is still, dark, and quiet. Your breaths echo quietly.", - "The surrounding air feels thick and humid.") - - B.emote_lists[DM_DIGEST] = list( - "The slimy puddle stings faintly. It seems the plant has no need to quickly break down victims.", - "The humid air settles in your lungs, keeping each breath more labored than the last.", - "Fluid drips onto you, burning faintly as your body heat warms it." - ) - - B.emote_lists[DM_DRAIN] = list( - "Each bead of slick fluid running down your body leaves you feeling weaker.", - "It's cramped and dark, the air thick and heavy. Your limbs feel like lead.", - "Strength drains from your frame. The cramped chamber feels easier to settle into with each passing moment.") - -//Preadtory Things -/obj/structure/mob_spawner/beetle_hill - name = "beetle tunnel" - desc = "An entrance to the nest of metallic ants." - icon = 'modular_chomp/icons/obj/tribal_gear.dmi' - icon_state = "hole" - anchored = TRUE - - spawn_delay = 10 MINUTES - - spawn_types = list( - /mob/living/simple_mob/animal/tyr/electronic_beetle = 1, - /mob/living/simple_mob/animal/tyr/explode_beetle = 1, - /mob/living/simple_mob/animal/tyr/glowing_beetle = 1, - ) - - simultaneous_spawns = 2 - - destructible = 1 - health = 50 - -/mob/living/simple_mob/animal/tyr/electronic_beetle - name = "charged beetle" - desc = "A large insect." - icon_state = "lighting_beetle" - icon_dead = "beetle_dead" - maxHealth = 18 - health = 18 - pass_flags = PASSTABLE //flying bug - movement_cooldown = 1 - - meat_type = /obj/item/reagent_containers/food/snacks/meat/grubmeat - meat_amount = 2 - - butchery_loot = list(\ - /obj/item/stack/material/chitin = 1\ - ) - - ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive - - see_in_dark = 3 - melee_damage_lower = 12 //Kills you 8ish if unarmored, or 10ish if wearing the tribal armor - melee_damage_upper = 12 //Rng numbers are wierd - -/mob/living/simple_mob/animal/tyr/electronic_beetle/apply_melee_effects(var/atom/A) - if(isliving(A)) - var/mob/living/L = A - A.emp_act(4) //The weakest strength of EMP - playsound(src, 'sound/weapons/Egloves.ogg', 75, 1) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, L) - s.start() - - -/mob/living/simple_mob/animal/tyr/explode_beetle - name = "fiery beetle" - desc = "A large insect." - icon_state = "fire_beetle" - icon_dead = "beetle_dead" - maxHealth = 18 - health = 18 - pass_flags = PASSTABLE //flying bug - movement_cooldown = 1 - - ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive - - meat_type = /obj/item/reagent_containers/food/snacks/carpmeat - meat_amount = 2 - - butchery_loot = list(\ - /obj/item/stack/material/chitin = 1\ - ) - - see_in_dark = 3 - melee_damage_lower = 6 //Kills you 8ish if unarmored, or 10ish if wearing the tribal armor - melee_damage_upper = 6 //Rng numbers are wierd - -/mob/living/simple_mob/animal/tyr/explode_beetle/apply_melee_effects(var/atom/A) - if(isliving(A)) - var/mob/living/L = A - L.adjust_fire_stacks(3) - L.ignite_mob() - -/mob/living/simple_mob/animal/tyr/glowing_beetle - name = "glowing beetle" - desc = "A large insect." - icon_state = "green_beetle" - icon_dead = "beetle_dead" - maxHealth = 18 - health = 18 - pass_flags = PASSTABLE - movement_cooldown = 1 - - needs_reload = TRUE - reload_max = 1 - reload_time = 2 SECONDS - - ai_holder_type = /datum/ai_holder/hostile/ranged/robust - projectiletype = /obj/item/projectile/arc/spore - - meat_type = /obj/item/reagent_containers/food/snacks/deathclawmeat - meat_amount = 2 - - butchery_loot = list(\ - /obj/item/stack/material/chitin = 1\ - ) - - see_in_dark = 3 - melee_damage_lower = 16 - melee_damage_upper = 16 - - ranged_cooldown = 30 diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/hivebot.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/hivebot.dm index 1efdcb70e9..3a725629b6 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/hivebot.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/hivebot.dm @@ -13,6 +13,7 @@ anchored = 1 armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) projectiletype = /obj/item/projectile/energy/eclipse_boss/tyrjavelin + specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin loot_list = list(/obj/item/tool/wirecutters/hybrid/alien = 10, /obj/item/tool/wrench/hybrid/alien = 10, /obj/item/tool/crowbar/hybrid/alien = 10, @@ -40,11 +41,9 @@ addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 2 SECONDS, TIMER_DELETE_ME) attackcycle = 0 if(2) - specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 7), 1 SECOND, TIMER_DELETE_ME) attackcycle = 0 if(3) - specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME) attackcycle = 0 diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/tyrian.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/tyrian.dm index b76090cbaf..5b6ea3441c 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/tyrian.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/bullet_heck/tyrian.dm @@ -51,8 +51,8 @@ icon_state = "poison_boss" icon_living = "poison_boss" wreckage = /obj/item/prop/tyrlore/acid_boss - specialattackprojectile = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora - projectiletype = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora + specialattackprojectile = /obj/item/projectile/energy/blob/tyrflora + projectiletype = /obj/item/projectile/energy/blob/tyrflora var/regeneration_strength = -20 /mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/load_default_bellies() diff --git a/modular_chomp/code/modules/projectiles/precursor/tyr.dm b/modular_chomp/code/modules/projectiles/precursor/tyr.dm index 11693bdf81..b793a67b2c 100644 --- a/modular_chomp/code/modules/projectiles/precursor/tyr.dm +++ b/modular_chomp/code/modules/projectiles/precursor/tyr.dm @@ -13,17 +13,6 @@ //So if you miss, you're stuck with a middling melee weapon for a bit. //Whilst the shot gun has more shots, but you need to get up closih. //Chain gets AP whilst shotgun gets knockback -/obj/item/projectile/energy/spikeenergy_ball - name = "energy ball" - icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi' - icon_state = "spikeenergyball" - damage = 45 //after remebering throwing things into walls deals bonus damage. Will that wall thwacking out damage this 5 bonus...yes. But shotgun likly wins most DPS tests anyway - armor_penetration = 60 //damage and AP matching makes brain happy for some reason. No real logic here, just brain saying yes, this is right - range = 8 - speed = 5 - penetrating = 2 - check_armour = "melee" - damage_type = BRUTE /obj/item/projectile/energy/tyr_rifle name = "laser blast" @@ -149,14 +138,13 @@ armor_penetration = 50 penetrating = 5 -/obj/item/projectile/arc/fragmentation/tyr_mortar - icon_state = "mortar" - fragment_amount = 10 - spread_range = 3 - fragment_types = list( - /obj/item/projectile/bullet/astral_blade/artillery, /obj/item/projectile/bullet/astral_blade/artillery, \ - /obj/item/projectile/bullet/astral_blade/artillery, /obj/item/projectile/bullet/astral_blade/artillery/secondary - ) +/obj/item/projectile/energy/blob/tyrflora + damage = 20 //10 with intended armor + speed = 12 + armor_penetration = 50 + check_armour = "bio" + damage_type = BURN + my_chems = list(REAGENT_ID_NEUROTOXIC_PROTEIN) /obj/item/projectile/energy/agate_lighting damage = 15 @@ -169,4 +157,4 @@ /obj/item/projectile/energy/agate_lighting/fast damage = 20 - speed = 3 + speed = 4 diff --git a/modular_chomp/icons/mob/tyr.dmi b/modular_chomp/icons/mob/tyr.dmi index 19cebd62019b75fcc7073d2fc35c28361e54e928..b6b0953034196ee6c3860e560b65cd58f0f2f021 100644 GIT binary patch delta 5545 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 delta 4279 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 diff --git a/modular_chomp/icons/obj/guns/precursor/tyr.dmi b/modular_chomp/icons/obj/guns/precursor/tyr.dmi index 8db0225e4cb8794156fa5a0a973815815016f4f8..5e71119de4de0a67d806f2b40778a819e16bba0a 100644 GIT binary patch literal 6650 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 V{!n~smvpBC(9<%6mTA}r{|~id7bpM# literal 5694 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 H_7VRB