New year new tyr Update (#12196)

This commit is contained in:
FluffMedic
2026-01-02 13:21:36 +01:00
committed by GitHub
parent 5caf3ca826
commit a8bd07daa2
8 changed files with 34650 additions and 34854 deletions
@@ -13,12 +13,12 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
see_in_dark = 3
melee_damage_lower = 16 //6.25 hits unarmored.
melee_damage_upper = 16 //Rng numbers are wierd
melee_damage_lower = 12
melee_damage_upper = 12
attack_sharp = TRUE
attack_edge = 1
meat_amount = 3
meat_amount = 7
meat_type = /obj/item/reagent_containers/food/snacks/tyrant
tame_items = list(/obj/item/reagent_containers/food/snacks/crabmeat = 20)
@@ -59,16 +59,6 @@
B.absorbchance = 0
B.escapechance = 25
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //knock back ant
name = "bronze metal ant"
icon_state = "bronze_ant"
icon_living = "bronze_ant"
butchery_loot = list(\
/obj/item/stack/material/bronze = 18\
)
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/apply_melee_effects(atom/A)
..()
@@ -95,10 +85,6 @@
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/copperant
special_attack_min_range = 0
special_attack_max_range = 2
special_attack_cooldown = 10 SECONDS
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
visible_message(span_cult("[P] seems ineffective!."))
@@ -120,6 +106,10 @@
special_attack_max_range = 2
special_attack_cooldown = 10 SECONDS
color = "#FF7D51"
glow_range = 5
glow_intensity = 2
/mob/living/simple_mob/animal/tyr/mineral_ants/agate/do_special_attack(atom/A)
explosion(src.loc, 2, 1, 1, 1)
@@ -134,17 +124,6 @@
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/quartzant
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
name = "painite metal ant"
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
icon_state = "painite_ant"
icon_living = "painite_ant"
butchery_loot = list(\
/obj/item/stack/material/painite = 18\
)
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond //slower, tankier, more damage
name = "diamond metal ant"
icon_state = "diamond_ant"
@@ -179,34 +158,72 @@
special_attack_max_range = 2
special_attack_cooldown = 5 SECONDS
color = "#91FF91"
glow_range = 5
glow_intensity = 2
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium/do_special_attack(atom/A)
visible_message(span_bolddanger(span_orange("The ant glows bright green!.")))
SSradiation.radiate(src, 15)
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium
name = "tritium ant"
icon_state = "tritium_ant"
icon_living = "tritium_ant"
butchery_loot = list(\
/obj/item/stack/material/tritium = 18\
)
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro //secondary spawner
name = "mhydro ant"
icon_state = "mhydro_ant"
icon_living = "mhydro_ant"
butchery_loot = list(\
/obj/item/stack/material/mhydrogen = 6\
/obj/item/stack/material/mhydrogen = 12\
)
size_multiplier = 0.5
movement_cooldown = -1
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
name = "painite metal ant"
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
icon_state = "painite_ant"
icon_living = "painite_ant"
butchery_loot = list(\
/obj/item/stack/material/painite = 18\
)
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
/mob/living/simple_mob/animal/tyr/mineral_ants/painite/apply_melee_effects(atom/A)
..()
if(isliving(A))
var/mob/living/L = A
to_chat(L, span_danger("You've been burned by \the [src]!"))
L.ignite_mob()
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze
name = "bronze metal ant"
icon_state = "bronze_ant"
icon_living = "bronze_ant"
butchery_loot = list(\
/obj/item/stack/material/bronze = 18\
)
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/death()
visible_message(span_warning("\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.") )
for(var/i = 1 to 8)
new /obj/effect/spider/spiderling/antling (src.loc)
..()
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite //nothing special here
name = "graphite ant"
icon_state = "graphite_ant"
icon_living = "graphite_ant"
butchery_loot = list(\
/obj/item/stack/material/graphite = 18\
)
/mob/living/simple_mob/animal/tyr/mineral_ants/builder
name = "concrete ant"
name = "tritium ant"
icon_state = "builder_ant"
icon_living = "builder_ant"
butchery_loot = list(\
/obj/item/stack/material/concrete = 6\
/obj/item/stack/material/tritium = 18\
)
nutrition = 150
var/build_type = /obj/random/ant_building
@@ -301,7 +318,7 @@ ANT STRUCTURES
icon_state = "hole"
anchored = TRUE
spawn_delay = 10 MINUTES
spawn_delay = 15 MINUTES
spawn_types = list(
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 1,
@@ -312,12 +329,12 @@ ANT STRUCTURES
/mob/living/simple_mob/animal/tyr/mineral_ants/painite = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/verdantium = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro = 1
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite = 1,
)
simultaneous_spawns = 3
simultaneous_spawns = 5
destructible = 1
health = 50 //Unsure why you would want to break it but you can
@@ -433,9 +450,9 @@ ANT STRUCTURES
/mob/living/simple_mob/animal/tyr/mineral_ants/painite,
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond,
/mob/living/simple_mob/animal/tyr/mineral_ants/verdantium,
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium,
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium,
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro)
/mob/living/simple_mob/animal/tyr/mineral_ants/mhydro,
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite)
faction = FACTION_TYR_ANT
/obj/effect/ant_structure/webbarrier
@@ -20,10 +20,13 @@
vore_standing_too = TRUE
unacidable = TRUE
special_attack_min_range = 0
special_attack_max_range = 7
special_attack_max_range = 14
wreckage = /obj/item/prop/tyrlore/gatekeeper
melee_miss_chance = 0
see_in_dark = 14
melee_damage_lower = 20
melee_damage_upper = 20
loot_list = list(/obj/item/gun/energy/tyr_rifle = 30,
/obj/item/tool/wirecutters/hybrid/alien = 30,
@@ -198,21 +201,19 @@
name = "experiment 20"
icon_state = "crystalized"
icon_living = "crystalized"
specialattackprojectile = /obj/item/projectile/arc/fragmentation/tyr_mortar
health = 400
maxHealth = 400 //15ish hits with E sword
wreckage = /obj/item/prop/tyrlore/crystal_boss
melee_damage_lower = 40
melee_damage_upper = 40
attack_armor_pen = 40
melee_attack_delay = 2.5 SECONDS
movement_cooldown = 4
special_attack_cooldown = 8 SECONDS
evasion = 200 //forced to fight in melee lol
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/do_special_attack(atom/A)
rng_cycle = rand(1,3)
switch(attackcycle)
if(1)
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(2)
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(3)
addtimer(CALLBACK(src, PROC_REF(gattlingfire), A, rng_cycle, 8, 7), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 4), 1.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss
name = "experiment 25"
@@ -298,10 +299,11 @@
icon = 'modular_chomp/icons/mob/hivebot.dmi'
size_multiplier = 3
wreckage = /obj/item/prop/tyrlore/swarm_boss
special_attack_cooldown = 8 SECONDS
melee_damage_lower = 30
melee_damage_upper = 30
movement_cooldown = 4
special_attack_cooldown = 12 SECONDS
melee_damage_lower = 20
melee_damage_upper = 20
attack_armor_pen = 0
movement_cooldown = 8
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/bullet_act(obj/item/projectile/P)
for(var/i =1 to 3)
@@ -338,8 +340,8 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot //tutortial for ADD invul mechanics
name = "medical robot"
desc = "A massive hivebot with medical equipment."
health = 400
maxHealth = 400
health = 1000
maxHealth = 1000
icon_state = "white"
icon_living = "white"
icon = 'icons/mob/hivebot.dmi'
@@ -350,7 +352,7 @@
attack_armor_pen = 80
movement_cooldown = 4
special_attack_cooldown = 12 SECONDS
special_attack_cooldown = 25 SECONDS
var/datum/disease/base_disease = /datum/disease/advance/agate_rot
@@ -360,9 +362,13 @@
H.ContractDisease(base_disease)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/do_special_attack(atom/A)
for(var/i =1 to 2)
new /mob/living/simple_mob/mechanical/hivebot/tyr/heart(src.loc)
visible_message(span_boldwarning(span_orange("The beast restores itself to a prime condition!.")))
adjustBruteLoss(-1000)
adjustFireLoss(-1000)
adjustToxLoss(-1000)
adjustOxyLoss(-1000)
adjustCloneLoss(-1000)
/*
/mob/living/simple_mob/mechanical/hivebot/tyr/heart
name = "barrier unit"
icon = 'modular_chomp/icons/mob/tyr.dmi'
@@ -374,20 +380,4 @@
melee_damage_upper = 10
attack_armor_pen = 80
movement_cooldown = 4
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/handle_special()
if(stat != DEAD)
untouchable_aura()
..()
/mob/living/simple_mob/mechanical/hivebot/tyr/heart/proc/untouchable_aura()
for(var/mob/living/L in orange(src, 3))
if(L.stat == DEAD || !IIsAlly(L))
continue
L.add_modifier(/datum/modifier/aura/heart_barrier, null, src)
/datum/modifier/aura/heart_barrier
stacks = MODIFIER_STACK_FORBID
mob_overlay_state = "deflect"
incoming_damage_percent = 0
aura_max_distance = 3
*/
@@ -38,9 +38,15 @@
/mob/living/simple_mob/mechanical/hivebot/tyr/meteor
maxHealth = 2 LASERS_TO_KILL // 80 hp
health = 2 LASERS_TO_KILL
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/dodge
projectiletype = /obj/item/projectile/energy/agate_lighting/fast
/datum/ai_holder/simple_mob/ranged/kiting/dodge
/datum/ai_holder/simple_mob/ranged/kiting/dodge/post_ranged_attack(atom/A)
holder.IMove(get_step(holder, pick(GLOB.alldirs)))
holder.face_atom(A)
/obj/item/projectile/energy/spikeenergy_ball/boss
damage = 40
armor_penetration = 60