Tyr Update 13 (#11950)

This commit is contained in:
FluffMedic
2025-11-10 17:32:16 -05:00
committed by GitHub
parent 59d12fcde0
commit 46d4a2f246
10 changed files with 3658 additions and 3225 deletions

View File

@@ -5,6 +5,12 @@
icon = 'modular_chomp/icons/obj/tribal_gear.dmi'
icon_state = "elevator"
anchored = TRUE
var/descendx
var/descendy
/obj/structure/prop/tyr_elevator/attackby(var/obj/item/W as obj, var/mob/user as mob)
if (do_after(user, 30, target = src))
do_teleport(user, locate(descendx,descendy,src.z), channel = TELEPORT_CHANNEL_QUANTUM)
/obj/machinery/door/blast/puzzle/tyrdoor
name = "strange door"

View File

@@ -41,3 +41,10 @@
target_turf.visible_message(span_warning("\The [src] appears!"))
s2.start()
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/gravity_surge(atom/target, var/next_cycle, var/pull_radius, var/pull_strength)
if(!target)
return
for(target in range(pull_radius, src))
target.singularity_pull(src, pull_strength)
attackcycle = next_cycle

View File

@@ -21,6 +21,7 @@
unacidable = TRUE
special_attack_min_range = 0
special_attack_max_range = 7
wreckage = /obj/item/prop/tyrlore/drones
loot_list = list(/obj/item/gun/energy/curse_tyrshotgun = 30,
/obj/item/gun/energy/energyballchain = 30,
@@ -45,8 +46,8 @@
/obj/item/melee/energy/tyr_sabre = 30
)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambera //poison boss
name = "experiment 20"
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss
name = "experiment 5"
desc = "A strange furball fused with plant life."
icon_state = "poison_boss"
icon_living = "poison_boss"
@@ -54,7 +55,7 @@
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora
var/regeneration_strength = -30
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambera/load_default_bellies()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/load_default_bellies()
. = ..()
var/obj/belly/B = vore_selected
B.name = "flora gut"
@@ -65,7 +66,7 @@
B.absorbchance = 0
B.escapechance = 15
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambera/bullet_act(obj/item/projectile/P) //removal of E net cheese
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/bullet_act(obj/item/projectile/P) //removal of E net cheese
if(P == /obj/item/projectile/energy/neurotoxin/toxic/tyr_flora)
return
if(P.damage_type && P.damage_type == BURN && P.damage)
@@ -75,7 +76,7 @@
..()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambera/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/do_special_attack(atom/A)
rng_cycle = rand(1,4)
switch(attackcycle)
if(1)
@@ -91,8 +92,8 @@
addtimer(CALLBACK(src, PROC_REF(bullet_blossom), A, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberb //knock back boss
name = "experiment 3"
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/sonic_boss
name = "experiment 10"
desc = "A strange furball, the air vibrating around it."
specialattackprojectile = /obj/item/projectile/knockback/slow
icon_state = "sonic_boss"
@@ -100,7 +101,7 @@
projectiletype = /obj/item/projectile/knockback/slow
wreckage = /obj/item/prop/tyrlore/basicsonic
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberb/load_default_bellies()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/sonic_boss/load_default_bellies()
. = ..()
var/obj/belly/B = vore_selected
B.name = "alien gut"
@@ -114,7 +115,7 @@
/obj/item/projectile/knockback/slow
speed = 10
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberb/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/sonic_boss/do_special_attack(atom/A)
rng_cycle = rand(1,4)
switch(attackcycle)
if(1)
@@ -130,8 +131,8 @@
addtimer(CALLBACK(src, PROC_REF(hole_in_wall), A, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberc //wierd shields
name = "experiment 7"
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss
name = "experiment 15"
desc = "A strange furball gaurded by a transparent barrier."
specialattackprojectile = /obj/item/projectile/energy/eclipse/tyrjavelin
health = 450
@@ -143,7 +144,7 @@
var/fullshield = 200
var/shieldrage = 200
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberc/load_default_bellies()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/load_default_bellies()
. = ..()
var/obj/belly/B = vore_selected
B.name = "alien gut"
@@ -154,7 +155,7 @@
B.absorbchance = 0
B.escapechance = 15
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberc/bullet_act(obj/item/projectile/P)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/bullet_act(obj/item/projectile/P)
if(fullshield > 0)
fullshield -= P.damage
if(P == /obj/item/projectile/ion)
@@ -175,7 +176,7 @@
visible_message(span_boldwarning(span_orange("The shield reactivates!!.")))
icon_state = "UPshield_boss"
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberc/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/do_special_attack(atom/A)
rng_cycle = rand(1,4)
switch(attackcycle)
if(1)
@@ -191,7 +192,45 @@
addtimer(CALLBACK(src, PROC_REF(gattlingfire), A, rng_cycle, 8, 7), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambere
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss
name = "experiment 20"
icon_state = "crystalized"
icon_living = "crystalized"
specialattackprojectile = /obj/item/projectile/arc/fragmentation/tyr_mortar
/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, 5), 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
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss
name = "experiment 25"
icon_state = "naga_boss"
icon_living = "naga_boss"
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/naga_boss/do_special_attack(atom/A)
rng_cycle = rand(1,3)
switch(attackcycle)
if(1)
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 5), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(2)
addtimer(CALLBACK(src, PROC_REF(gravity_surge), A, rng_cycle, 7, 1), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(3)
addtimer(CALLBACK(src, PROC_REF(rising_star), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
//The Ai control units of Tyr
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/defense_ai
name = "defense automaton"
desc = "A large, very important looking ai. Plating appears similiar to albative plating."
icon = 'modular_chomp/icons/mob/hivebot.dmi'
@@ -202,7 +241,7 @@
wreckage = /obj/item/prop/tyrlore/ants
specialattackprojectile = /obj/item/projectile/bullet/astral_blade
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chambere/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/defense_ai/do_special_attack(atom/A)
switch(attackcycle)
if(1)
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 3), 1.5 SECONDS, TIMER_DELETE_ME)
@@ -218,7 +257,7 @@
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 1, /datum/modifier/mmo_drop/blade_boss_short), 2.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberf //the enginer robot's fighting style is quite simple, restrain your movement so it can hit you with it's main projectile
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/engi_ai //the enginer robot's fighting style is quite simple, restrain your movement so it can hit you with it's main projectile
name = "engineering automaton"
desc = "A large important looking robot, crackling with lighting."
icon = 'modular_chomp/icons/mob/hivebot.dmi'
@@ -229,7 +268,7 @@
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
projectiletype = /obj/item/projectile/energy/lightingspark/nanoweave
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/chamberf/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/engi_ai/do_special_attack(atom/A)
switch(attackcycle)
if(1)
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 10), 0.5 SECONDS, TIMER_DELETE_ME)
@@ -244,7 +283,7 @@
attackcycle = 0
addtimer(CALLBACK(src, PROC_REF(cutoff_ulti), A, 1, 5, 15), 0.5 SECONDS, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/massswarm
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai
name = "swarm controler"
desc = "A massive hivebot that has shifting bits of metal upon it's body."
health = 600
@@ -258,50 +297,33 @@
melee_damage_lower = 20
melee_damage_upper = 20
attack_armor_pen = 50
grab_resist = 100
movement_cooldown = 4
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/massswarm/bullet_act(obj/item/projectile/P)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/bullet_act(obj/item/projectile/P)
for(var/i =1 to 3)
new /mob/living/simple_mob/mechanical/hivebot/nanoevent/bright_green/tyr(src.loc)
new /mob/living/simple_mob/mechanical/hivebot/tyr/swarm(src.loc)
..()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/massswarm/attackby(var/obj/item/O as obj, var/mob/user as mob)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/attackby(var/obj/item/O as obj, var/mob/user as mob)
for(var/i =1 to 3)
new /mob/living/simple_mob/mechanical/hivebot/nanoevent/bright_green/tyr(src.loc)
new /mob/living/simple_mob/mechanical/hivebot/tyr/swarm(src.loc)
..()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/massswarm/do_special_attack(atom/A)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/swarm_ai/do_special_attack(atom/A)
for(var/i =1 to 3)
new /mob/living/simple_mob/mechanical/hivebot/nanoevent/bright_green/tyr(src.loc)
new /mob/living/simple_mob/mechanical/hivebot/tyr/swarm(src.loc)
/*
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/heart
name = "memeory program"
health = 700
maxHealth = 700
projectiletype = /obj/item/projectile/energy/eclipse/tyrjavelin
icon_state = "guardian"
icon_living = "guardian"
wreckage = /obj/item/prop/tyrlore/drones
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/meteor_ai
name = "swarm controler"
desc = "A massive hivebot that has shifting bits of metal upon it's body."
icon_state = "orange"
icon_living = "orange"
icon = 'modular_chomp/icons/mob/hivebot.dmi'
size_multiplier = 3
specialattackprojectile = /obj/item/projectile/arc/blue_energy/precusor
projectiletype = /obj/item/projectile/arc/blue_energy/precusor
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/heart/bullet_act(obj/item/projectile/P)
if(P == /obj/item/projectile/energy/eclipse/tyrjavelin) //no friendly fire
return
else
..()
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/heart
name = "guardian program A"
size_multiplier = 0.8
health = 10
maxHealth = 10
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/heart
name = "guardian program B"
size_multiplier = 0.8
health = 10
maxHealth = 10
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
*/
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/meteor_ai/do_special_attack(atom/A, var/strike_downx, var/strikedowny)
strike_downx = rand(-7,7)
strikedowny = rand(-7,7)
bullet_heck(A, strike_downx, strikedowny)

View File

@@ -20,14 +20,6 @@
pass_flags = PASSTABLE
movement_cooldown = -1
/mob/living/simple_mob/mechanical/hivebot/nanoevent/bright_green/tyr
faction = FACTION_TYR
movement_cooldown = 0
maxHealth = 0.2 LASERS_TO_KILL // 10 HP
health = 0.2 LASERS_TO_KILL
melee_damage_lower = 12
melee_damage_upper = 12
/mob/living/simple_mob/mechanical/hivebot/nanoevent/cyan //cracks the shell
name = "nanoweave cracker hivebot"
icon_state = "cyan"

View File

@@ -16,19 +16,27 @@
projectiletype = /obj/item/projectile/arc //Polaris, don't make the same mob twice.
/mob/living/simple_mob/mechanical/hivebot/tyr
name = "terraforming hivebot"
name = "tyrian hivebot"
maxHealth = 0.5 LASERS_TO_KILL // 20 hp
health = 0.5 LASERS_TO_KILL
icon = 'modular_chomp/icons/mob/hivebot.dmi'
desc = "A robot with strange gardening looking gear."
loot_list = list(/obj/structure/foamedmetal = 100
)
pass_flags = PASSTABLE
hovering = TRUE
movement_cooldown = -3
icon_state = "janitor"
icon_living = "janitor"
faction = FACTION_TYR
melee_damage_lower = 12
melee_damage_upper = 12
icon_state = "orange"
icon_living = "orange"
/mob/living/simple_mob/mechanical/hivebot/tyr/swarm
maxHealth = 1
health = 1
icon_state = "bright_green"
icon_living = "bright_green"
/mob/living/simple_mob/mechanical/hivebot/tyr/meteor
projectiletype = /obj/item/projectile/arc/blue_energy/precusor
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr
name = "ai control center"
@@ -82,17 +90,6 @@
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/tyr/proc/summon_janitor(atom/target, var/amount, var/next_cycle)
if(!target)
return
new /mob/living/simple_mob/mechanical/hivebot/tyr(src.loc)
amount--
if(amount > 0)
addtimer(CALLBACK(src, PROC_REF(summon_janitor), target, amount, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
else
attackcycle = next_cycle
/obj/item/projectile/energy/spikeenergy_ball/boss
damage = 40
armor_penetration = 60

View File

@@ -173,6 +173,10 @@
/obj/item/projectile/energy/eclipse/tyrjavelin/speed
speed = 7
/obj/item/projectile/energy/eclipse/tyrjavelin/super_slow
speed = 15
damage = 30
/obj/item/projectile/bullet/astral_blade
name = "bluespace slash"
icon_state = "astral_sea_blade"
@@ -204,3 +208,12 @@
agony = 0
speed = 12
armor_penetration = 50
/obj/item/projectile/arc/fragmentation/tyr_mortar
icon_state = "mortar"
fragment_amount = 10
spread_range = 3
fragment_types = list(
/obj/item/projectile/energy/eclipse/tyrjavelin, /obj/item/projectile/energy/eclipse/tyrjavelin, \
/obj/item/projectile/energy/eclipse/tyrjavelin, /obj/item/projectile/energy/eclipse/tyrjavelin/super_slow
)