mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-21 04:07:52 +01:00
Tyr Update (#12633)
This commit is contained in:
@@ -111,16 +111,29 @@
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/tyrant_bonus
|
||||
|
||||
special_attack_min_range = 0
|
||||
special_attack_max_range = 2
|
||||
special_attack_max_range = 4
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
color = "#FF7D51"
|
||||
glow_range = 5
|
||||
glow_intensity = 2
|
||||
glow_toggle = TRUE
|
||||
var/exploded = FALSE
|
||||
var/explosion_delay_lower = 2 SECOND // Lower bound for explosion delay.
|
||||
var/explosion_delay_upper = 3 SECONDS // Upper bound.
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate/proc/explode()
|
||||
if(src && !exploded)
|
||||
visible_message(span_danger("\The [src]'s body detonates!"))
|
||||
exploded = TRUE
|
||||
explosion(src.loc, 3, 2, 1, 1)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate/do_special_attack(atom/A)
|
||||
explosion(src.loc, 2, 1, 1, 1)
|
||||
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)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz //irl quartz is apparently tough?
|
||||
name = "quartz metal ant"
|
||||
@@ -248,11 +261,14 @@
|
||||
)
|
||||
meat_amount = 3
|
||||
|
||||
/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)
|
||||
..()
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/do_special_attack(atom/A)
|
||||
for(var/mob/living/L in orange(src, 7))
|
||||
if(IIsAlly(L))
|
||||
L.add_modifier(/datum/modifier/technomancer/haste, 3, src)
|
||||
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/graphite //nothing special here
|
||||
name = "graphite ant"
|
||||
@@ -579,3 +595,6 @@ ANT STRUCTURES
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/silver,
|
||||
/mob/living/simple_mob/animal/tyr/mineral_ants/gold)
|
||||
faction = FACTION_TYR_ANT
|
||||
|
||||
/obj/effect/spider/spiderling/antling/created
|
||||
faction = FACTION_TYR
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
status_flags = null
|
||||
special_attack_min_range = 0
|
||||
special_attack_max_range = 14
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
wreckage = /obj/item/trash/material/circuit
|
||||
|
||||
melee_miss_chance = 0
|
||||
see_in_dark = 14
|
||||
|
||||
+344
@@ -1134,3 +1134,347 @@
|
||||
bullet_heck(target, 0, -7)
|
||||
bullet_heck(target, 7, 0)
|
||||
attackcycle = next_cycle
|
||||
|
||||
//Three spinning lines with occassional projectiles thrown in the middle
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_lines(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -7, 7)
|
||||
bullet_heck(target, 7, 7)
|
||||
bullet_heck(target, 0, -7)
|
||||
bullet_heck(target, 7, -7)
|
||||
bullet_heck(target, -7, -7)
|
||||
bullet_heck(target, 0, 7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesA(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -6, 7)
|
||||
bullet_heck(target, 7, 6)
|
||||
bullet_heck(target, -1, -7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesB(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -5, 7)
|
||||
bullet_heck(target, 7, 5)
|
||||
bullet_heck(target, -2, -7)
|
||||
bullet_heck(target, 5, -7)
|
||||
bullet_heck(target, -7, -5)
|
||||
bullet_heck(target, 2, 7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesC(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -4, 7)
|
||||
bullet_heck(target, 7, 4)
|
||||
bullet_heck(target, -3, -7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesD(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -3, 7)
|
||||
bullet_heck(target, 7, 3)
|
||||
bullet_heck(target, -4, -7)
|
||||
bullet_heck(target, 3, -7)
|
||||
bullet_heck(target, -7, -3)
|
||||
bullet_heck(target, 4, 7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesE(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -2, 7)
|
||||
bullet_heck(target, 7, 2)
|
||||
bullet_heck(target, -5, -7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesF(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -1, 7)
|
||||
bullet_heck(target, 7, 1)
|
||||
bullet_heck(target, -6, -7)
|
||||
bullet_heck(target, 1, -7)
|
||||
bullet_heck(target, -7, -1)
|
||||
bullet_heck(target, 6, 7)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_linesG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/triple_linesG(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, -0, 7)
|
||||
bullet_heck(target, 7, 0)
|
||||
bullet_heck(target, -7, -7)
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laser(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 7)
|
||||
bullet_heck(target, 6, 7)
|
||||
bullet_heck(target, 5, 7)
|
||||
bullet_heck(target, 4, 7)
|
||||
bullet_heck(target, 3, 7)
|
||||
bullet_heck(target, 2, 7)
|
||||
bullet_heck(target, 1, 7)
|
||||
bullet_heck(target, 0, 7)
|
||||
bullet_heck(target, -7, -7)
|
||||
bullet_heck(target, -6, -7)
|
||||
bullet_heck(target, -5, -7)
|
||||
bullet_heck(target, -4, -7)
|
||||
bullet_heck(target, -3, -7)
|
||||
bullet_heck(target, -2, -7)
|
||||
bullet_heck(target, -1, -7)
|
||||
bullet_heck(target, 0, -7)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserA(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 6)
|
||||
bullet_heck(target, 6, 6)
|
||||
bullet_heck(target, 5, 6)
|
||||
bullet_heck(target, 4, 6)
|
||||
bullet_heck(target, 3, 6)
|
||||
bullet_heck(target, 2, 6)
|
||||
bullet_heck(target, 1, 6)
|
||||
bullet_heck(target, 0, 6)
|
||||
bullet_heck(target, -7, -6)
|
||||
bullet_heck(target, -6, -6)
|
||||
bullet_heck(target, -5, -6)
|
||||
bullet_heck(target, -4, -6)
|
||||
bullet_heck(target, -3, -6)
|
||||
bullet_heck(target, -2, -6)
|
||||
bullet_heck(target, -1, -6)
|
||||
bullet_heck(target, 0, -6)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserB(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 5)
|
||||
bullet_heck(target, 6, 5)
|
||||
bullet_heck(target, 5, 5)
|
||||
bullet_heck(target, 4, 5)
|
||||
bullet_heck(target, 3, 5)
|
||||
bullet_heck(target, 2, 5)
|
||||
bullet_heck(target, 1, 5)
|
||||
bullet_heck(target, 0, 5)
|
||||
bullet_heck(target, -7, -5)
|
||||
bullet_heck(target, -6, -5)
|
||||
bullet_heck(target, -5, -5)
|
||||
bullet_heck(target, -4, -5)
|
||||
bullet_heck(target, -3, -5)
|
||||
bullet_heck(target, -2, -5)
|
||||
bullet_heck(target, -1, -5)
|
||||
bullet_heck(target, 0, -5)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserC(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 4)
|
||||
bullet_heck(target, 6, 4)
|
||||
bullet_heck(target, 5, 4)
|
||||
bullet_heck(target, 4, 4)
|
||||
bullet_heck(target, 3, 4)
|
||||
bullet_heck(target, 2, 4)
|
||||
bullet_heck(target, 1, 4)
|
||||
bullet_heck(target, 0, 4)
|
||||
bullet_heck(target, -7, -4)
|
||||
bullet_heck(target, -6, -4)
|
||||
bullet_heck(target, -5, -4)
|
||||
bullet_heck(target, -4, -4)
|
||||
bullet_heck(target, -3, -4)
|
||||
bullet_heck(target, -2, -4)
|
||||
bullet_heck(target, -1, -4)
|
||||
bullet_heck(target, 0, -4)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserD(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 3)
|
||||
bullet_heck(target, 6, 3)
|
||||
bullet_heck(target, 5, 3)
|
||||
bullet_heck(target, 4, 3)
|
||||
bullet_heck(target, 3, 3)
|
||||
bullet_heck(target, 2, 3)
|
||||
bullet_heck(target, 1, 3)
|
||||
bullet_heck(target, 0, 3)
|
||||
bullet_heck(target, -7, -3)
|
||||
bullet_heck(target, -6, -3)
|
||||
bullet_heck(target, -5, -3)
|
||||
bullet_heck(target, -4, -3)
|
||||
bullet_heck(target, -3, -3)
|
||||
bullet_heck(target, -2, -3)
|
||||
bullet_heck(target, -1, -3)
|
||||
bullet_heck(target, 0, -3)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserE(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 2)
|
||||
bullet_heck(target, 6, 2)
|
||||
bullet_heck(target, 5, 2)
|
||||
bullet_heck(target, 4, 2)
|
||||
bullet_heck(target, 3, 2)
|
||||
bullet_heck(target, 2, 2)
|
||||
bullet_heck(target, 1, 2)
|
||||
bullet_heck(target, 0, 2)
|
||||
bullet_heck(target, -7, -2)
|
||||
bullet_heck(target, -6, -2)
|
||||
bullet_heck(target, -5, -2)
|
||||
bullet_heck(target, -4, -2)
|
||||
bullet_heck(target, -3, -2)
|
||||
bullet_heck(target, -2, -2)
|
||||
bullet_heck(target, -1, -2)
|
||||
bullet_heck(target, 0, -2)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserF(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 1)
|
||||
bullet_heck(target, 6, 1)
|
||||
bullet_heck(target, 5, 1)
|
||||
bullet_heck(target, 4, 1)
|
||||
bullet_heck(target, 3, 1)
|
||||
bullet_heck(target, 2, 1)
|
||||
bullet_heck(target, 1, 1)
|
||||
bullet_heck(target, 0, 1)
|
||||
bullet_heck(target, -7, -1)
|
||||
bullet_heck(target, -6, -1)
|
||||
bullet_heck(target, -5, -1)
|
||||
bullet_heck(target, -4, -1)
|
||||
bullet_heck(target, -3, -1)
|
||||
bullet_heck(target, -2, -1)
|
||||
bullet_heck(target, -1, -1)
|
||||
bullet_heck(target, 0, -1)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserG(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, 0)
|
||||
bullet_heck(target, 6, 0)
|
||||
bullet_heck(target, 5, 0)
|
||||
bullet_heck(target, 4, 0)
|
||||
bullet_heck(target, 3, 0)
|
||||
bullet_heck(target, 2, 0)
|
||||
bullet_heck(target, 1, 0)
|
||||
bullet_heck(target, -7, 0)
|
||||
bullet_heck(target, -6, 0)
|
||||
bullet_heck(target, -5, 0)
|
||||
bullet_heck(target, -4, 0)
|
||||
bullet_heck(target, -3, 0)
|
||||
bullet_heck(target, -2, 0)
|
||||
bullet_heck(target, -1, 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserH(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -1)
|
||||
bullet_heck(target, 6, -1)
|
||||
bullet_heck(target, 5, -1)
|
||||
bullet_heck(target, 4, -1)
|
||||
bullet_heck(target, 3, -1)
|
||||
bullet_heck(target, 2, -1)
|
||||
bullet_heck(target, 1, -1)
|
||||
bullet_heck(target, 0, -1)
|
||||
bullet_heck(target, -7, 1)
|
||||
bullet_heck(target, -6, 1)
|
||||
bullet_heck(target, -5, 1)
|
||||
bullet_heck(target, -4, 1)
|
||||
bullet_heck(target, -3, 1)
|
||||
bullet_heck(target, -2, 1)
|
||||
bullet_heck(target, -1, 1)
|
||||
bullet_heck(target, 0, 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserI(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -2)
|
||||
bullet_heck(target, 6, -2)
|
||||
bullet_heck(target, 5, -2)
|
||||
bullet_heck(target, 4, -2)
|
||||
bullet_heck(target, 3, -2)
|
||||
bullet_heck(target, 2, -2)
|
||||
bullet_heck(target, 1, -2)
|
||||
bullet_heck(target, 0, -2)
|
||||
bullet_heck(target, -7, 2)
|
||||
bullet_heck(target, -6, 2)
|
||||
bullet_heck(target, -5, 2)
|
||||
bullet_heck(target, -4, 2)
|
||||
bullet_heck(target, -3, 2)
|
||||
bullet_heck(target, -2, 2)
|
||||
bullet_heck(target, -1, 2)
|
||||
bullet_heck(target, 0, 2)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserJ(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -3)
|
||||
bullet_heck(target, 6, -3)
|
||||
bullet_heck(target, 5, -3)
|
||||
bullet_heck(target, 4, -3)
|
||||
bullet_heck(target, 3, -3)
|
||||
bullet_heck(target, 2, -3)
|
||||
bullet_heck(target, 1, -3)
|
||||
bullet_heck(target, 0, -3)
|
||||
bullet_heck(target, -7, 3)
|
||||
bullet_heck(target, -6, 3)
|
||||
bullet_heck(target, -5, 3)
|
||||
bullet_heck(target, -4, 3)
|
||||
bullet_heck(target, -3, 3)
|
||||
bullet_heck(target, -2, 3)
|
||||
bullet_heck(target, -1, 3)
|
||||
bullet_heck(target, 0, 3)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserK(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -4)
|
||||
bullet_heck(target, 6, -4)
|
||||
bullet_heck(target, 5, -4)
|
||||
bullet_heck(target, 4, -4)
|
||||
bullet_heck(target, 3, -4)
|
||||
bullet_heck(target, 2, -4)
|
||||
bullet_heck(target, 1, -4)
|
||||
bullet_heck(target, 0, -4)
|
||||
bullet_heck(target, -7, 4)
|
||||
bullet_heck(target, -6, 4)
|
||||
bullet_heck(target, -5, 4)
|
||||
bullet_heck(target, -4, 4)
|
||||
bullet_heck(target, -3, 4)
|
||||
bullet_heck(target, -2, 4)
|
||||
bullet_heck(target, -1, 4)
|
||||
bullet_heck(target, 0, 4)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserL(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -5)
|
||||
bullet_heck(target, 6, -5)
|
||||
bullet_heck(target, 5, -5)
|
||||
bullet_heck(target, 4, -5)
|
||||
bullet_heck(target, 3, -5)
|
||||
bullet_heck(target, 2, -5)
|
||||
bullet_heck(target, 1, -5)
|
||||
bullet_heck(target, 0, -5)
|
||||
bullet_heck(target, -7, 5)
|
||||
bullet_heck(target, -6, 5)
|
||||
bullet_heck(target, -5, 5)
|
||||
bullet_heck(target, -4, 5)
|
||||
bullet_heck(target, -3, 5)
|
||||
bullet_heck(target, -2, 5)
|
||||
bullet_heck(target, -1, 5)
|
||||
bullet_heck(target, 0, 5)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserM(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -6)
|
||||
bullet_heck(target, 6, -6)
|
||||
bullet_heck(target, 5, -6)
|
||||
bullet_heck(target, 4, -6)
|
||||
bullet_heck(target, 3, -6)
|
||||
bullet_heck(target, 2, -6)
|
||||
bullet_heck(target, 1, -6)
|
||||
bullet_heck(target, 0, -6)
|
||||
bullet_heck(target, -7, 6)
|
||||
bullet_heck(target, -6, 6)
|
||||
bullet_heck(target, -5, 6)
|
||||
bullet_heck(target, -4, 6)
|
||||
bullet_heck(target, -3, 6)
|
||||
bullet_heck(target, -2, 6)
|
||||
bullet_heck(target, -1, 6)
|
||||
bullet_heck(target, 0, 6)
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laserN), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/vertical_double_laserN(atom/target, var/next_cycle, var/fire_delay)
|
||||
bullet_heck(target, 7, -7)
|
||||
bullet_heck(target, 6, -7)
|
||||
bullet_heck(target, 5, -7)
|
||||
bullet_heck(target, 4, -7)
|
||||
bullet_heck(target, 3, -7)
|
||||
bullet_heck(target, 2, -7)
|
||||
bullet_heck(target, 1, -7)
|
||||
bullet_heck(target, 0, -7)
|
||||
bullet_heck(target, -7, 7)
|
||||
bullet_heck(target, -6, 7)
|
||||
bullet_heck(target, -5, 7)
|
||||
bullet_heck(target, -4, 7)
|
||||
bullet_heck(target, -3, 7)
|
||||
bullet_heck(target, -2, 7)
|
||||
bullet_heck(target, -1, 7)
|
||||
bullet_heck(target, 0, 7)
|
||||
attackcycle = next_cycle
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
size_multiplier = 2
|
||||
maxHealth = 500
|
||||
health = 500
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/no_movement
|
||||
anchored = 1
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
+13
-17
@@ -32,12 +32,9 @@
|
||||
/datum/modifier/mmo_drop/blade_boss_short
|
||||
puddleitem = /obj/item/grenade/shooter/auto_explode/blade_boss_short
|
||||
|
||||
/datum/modifier/mmo_drop/tyr_flora
|
||||
puddleitem = /obj/item/grenade/shooter/auto_explode/tyr_flora
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "drop_marker"
|
||||
icon ='modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "explosion_marker"
|
||||
mouse_opacity = 0 //no touching the attack
|
||||
spread_range = 3
|
||||
var/fuse_time = 3.5 SECONDS
|
||||
@@ -46,18 +43,6 @@
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src, PROC_REF(detonate)), fuse_time, TIMER_DELETE_ME)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/blade_boss_long
|
||||
spread_range = 1
|
||||
projectile_types = list(/obj/item/projectile/bullet/astral_blade)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/blade_boss_short
|
||||
spread_range = 3
|
||||
projectile_types = list(/obj/item/projectile/bullet/astral_blade/short)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/tyr_flora
|
||||
spread_range = 1
|
||||
projectile_types = list(/obj/item/projectile/energy/neurotoxin/toxic/tyr_flora)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/blood_boss
|
||||
spread_range = 2
|
||||
projectile_types = list(/obj/item/projectile/energy/blood_bullet)
|
||||
@@ -70,6 +55,14 @@
|
||||
speed = 4
|
||||
damage = 10
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/blade_boss_long
|
||||
spread_range = 1
|
||||
projectile_types = list(/obj/item/projectile/bullet/astral_blade)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/blade_boss_short
|
||||
spread_range = 3
|
||||
projectile_types = list(/obj/item/projectile/bullet/astral_blade/short)
|
||||
|
||||
/obj/item/grenade/shooter/auto_explode/occult_fireball
|
||||
spread_range = 2
|
||||
projectile_types = list(/obj/item/projectile/bullet/incendiary/dragonflame/occult)
|
||||
@@ -83,3 +76,6 @@
|
||||
|
||||
/datum/modifier/mmo_drop/eclipse_iceball
|
||||
puddleitem = /obj/item/grenade/shooter/auto_explode/eclipse_iceball
|
||||
|
||||
/datum/modifier/mmo_drop/metal_tomb
|
||||
puddleitem = /obj/structure/foamedmetal
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss
|
||||
health = 3000
|
||||
maxHealth = 3000 //TG has megafauna with 2500 HP. Yet to see folks call those overly tanky. Tyr gun can deal 504 with a full clip of the single shot mode. Wanting longer fights, and this are meant for groups of three
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses
|
||||
faction = FACTION_TYR
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100)
|
||||
movement_cooldown = 40
|
||||
icon = 'modular_chomp/icons/mob/tyr.dmi'
|
||||
size_multiplier = 2
|
||||
swallowTime = 2 SECONDS
|
||||
@@ -19,7 +15,9 @@
|
||||
vore_pounce_maxhealth = 100
|
||||
vore_standing_too = TRUE
|
||||
unacidable = TRUE
|
||||
wreckage = /obj/item/prop/tyrlore/gatekeeper
|
||||
|
||||
projectiletype = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
|
||||
loot_list = list(/obj/item/gun/energy/tyr_rifle = 30,
|
||||
/obj/item/tool/wirecutters/hybrid/alien = 30,
|
||||
@@ -45,78 +43,208 @@
|
||||
/obj/item/prop/deconstructable/gigacell = 100,
|
||||
)
|
||||
|
||||
/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"
|
||||
wreckage = /obj/item/prop/tyrlore/acid_boss
|
||||
specialattackprojectile = /obj/item/projectile/energy/blob/tyrflora
|
||||
projectiletype = /obj/item/projectile/energy/blob/tyrflora
|
||||
var/regeneration_strength = -20
|
||||
//So tyr mobs, Two types, the robots, and the expirments.
|
||||
//Expirments will have less health but some defensive mechanic or the like
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores
|
||||
health = 3300
|
||||
maxHealth = 3300 //TG has megafauna with 2500 HP. Yet to see folks call those overly tanky. Tyr gun can deal 504 with a full clip of the single shot mode. Wanting longer fights, and this are meant for groups of three
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/load_default_bellies()
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "flora gut"
|
||||
B.desc = "You have been devoured by the vulpakin like plant beast. A mix of flesh and flora surrond you, purple bubbling fluid soaking into your body. The beast effortlessly carrying your body, it's motions seemingly exaggerated, alien words spoken, the beast trying to taunt you."
|
||||
B.digest_brute = 1
|
||||
B.digest_burn = 1
|
||||
B.digestchance = 0
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 15
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments
|
||||
mob_class = MOB_CLASS_ABERRATION
|
||||
health = 2100
|
||||
maxHealth = 2100
|
||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100)
|
||||
movement_cooldown = 40
|
||||
|
||||
/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)
|
||||
visible_message(span_boldwarning(span_orange("The beast regenerates some of the damage!.")))
|
||||
adjustBruteLoss(regeneration_strength)
|
||||
adjustFireLoss(regeneration_strength)
|
||||
..()
|
||||
//Watch the ground. No seriously, 2/3s of it is glowing red
|
||||
//phase 1 is rather simple, simple lines, bomb drop, limit the area, then another bomb drop
|
||||
//phase 2 the normal BH stuff is gone. Arti lines of plus or X, then bomb drop, then randomized arti, then another bomb drop
|
||||
//phase 3 alters things. Random arti, x or plus arti, bomb drop, bomb drop
|
||||
//each phase speeds things up
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/sec_core
|
||||
name = "defense core"
|
||||
desc = "A mechanical weaponized ai core."
|
||||
icon_state = "sec_core"
|
||||
icon_living = "sec_core"
|
||||
projectiletype = /obj/item/projectile/bullet/astral_blade
|
||||
specialattackprojectile = /obj/item/projectile/bullet/astral_blade
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/acid_boss/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,4)
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/sec_core/do_special_attack(atom/A)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 20), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 2), 1 SECOND, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 2), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(2)
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 3, /datum/modifier/mmo_drop/blade_boss_long), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 3, /datum/modifier/mmo_drop/blade_boss_long), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 3), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(3)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, rng_cycle, /datum/modifier/mmo_drop/tyr_flora), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff), A, 4, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 3), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 4, /datum/modifier/mmo_drop/blade_boss_long), 1 SECOND, TIMER_DELETE_ME)
|
||||
if(4)
|
||||
addtimer(CALLBACK(src, PROC_REF(bullet_blossom), A, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 1, /datum/modifier/mmo_drop/blade_boss_short), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 1, /datum/modifier/mmo_drop/blade_boss_short), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 1, /datum/modifier/mmo_drop/blade_boss_short), 1 SECOND, TIMER_DELETE_ME)
|
||||
|
||||
//The eletrical boss
|
||||
//Has some issues since lighting damage causes stuns, so never dirrectly attacks you with lighting
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/engi_core //Tries to limit your movement opitions
|
||||
name = "power core"
|
||||
desc = "A mechanical weaponized ai core."
|
||||
icon_state = "engi_core"
|
||||
icon_living = "engi_core"
|
||||
specialattackprojectile = /obj/item/projectile/energy/agate_lighting
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/engi_core/do_special_attack(atom/A)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff), A, 2, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(cross_spin), A, 2, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 6, 2, 12), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(2)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff), A, 3, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 3, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 6, 3, 9), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(3)
|
||||
attackcycle = 0
|
||||
switch(a_intent)
|
||||
if(I_HURT)
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff_ulti), A, 1, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_GRAB)
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_lines), A, 1, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(I_DISARM)
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 6, 1, 6), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/ark_core
|
||||
name = "master core"
|
||||
desc = "A mechanical weaponized ai core."
|
||||
icon_state = "final_core"
|
||||
icon_living = "final_core"
|
||||
health = 4200
|
||||
maxHealth = 4200
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/ai_cores/engi_core/do_special_attack(atom/A)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 6, 2, 6), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(2)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(triple_lines), A, 3, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(3)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff_ulti), A, 4, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(4)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 5, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(5)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(hole_in_wall), A, 6, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(6)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(rising_star), A, 7, 12), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(7)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(bullet_blossom), A, 8, 8), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(8)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 9, /datum/modifier/mmo_drop/blade_boss_short), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(9)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, 10), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(10)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 11, /datum/modifier/mmo_drop/blade_boss_long), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(11)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 12), 0.75 SECONDS, TIMER_DELETE_ME)
|
||||
if(12)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 13, 5), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(13)
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 2, /datum/modifier/mmo_drop/metal_tomb), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(14)
|
||||
specialattackprojectile = /obj/item/projectile/beam/heavylaser
|
||||
Beam(A, icon_state = "sat_beam", time = 13 SECONDS, maxdistance = INFINITY)
|
||||
addtimer(CALLBACK(src, PROC_REF(gattlingfire), A, 15, 2, 25), 5.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(15)
|
||||
specialattackprojectile = /obj/item/projectile/arc/blue_energy/precusor
|
||||
addtimer(CALLBACK(src, PROC_REF(vertical_double_laser), A, 16, 5), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(16)
|
||||
addtimer(CALLBACK(src, PROC_REF(checker_board), A, 17), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(17)
|
||||
addtimer(CALLBACK(src, PROC_REF(chain_burst), A, 1, 8), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
/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_boss/tyrjavelin
|
||||
health = 700
|
||||
maxHealth = 700 //shield mechanic
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/slime //summons a lot of adds slime_boss
|
||||
name = "farm expirment"
|
||||
icon_state = "slime_boss"
|
||||
icon_living = "slime_boss"
|
||||
health = 1200
|
||||
maxHealth = 1200
|
||||
special_attack_cooldown = 3 SECONDS
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/slime/bullet_act(obj/item/projectile/P)
|
||||
for(var/i =1 to 4)
|
||||
new /obj/effect/spider/spiderling/antling/created(src.loc)
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/slime/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
for(var/i =1 to 4)
|
||||
new /obj/effect/spider/spiderling/antling/created(src.loc)
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/slime/do_special_attack(atom/A)
|
||||
for(var/i =1 to 4)
|
||||
new /obj/effect/spider/spiderling/antling/created(src.loc)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/barrier //has a regenerating shield
|
||||
name = "spacial expirment"
|
||||
icon_state = "UPshield_boss"
|
||||
icon_living = "UPshield_boss"
|
||||
projectiletype = /obj/item/projectile/energy/eclipse_boss/tyrjavelin
|
||||
wreckage = /obj/item/prop/tyrlore/shield_boss
|
||||
var/fullshield = 300
|
||||
var/shieldrage = 300
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/load_default_bellies()
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "alien gut"
|
||||
B.desc = "You are dunked into a multi-colored, or maybe multi-fluid, stew. Blues, purples, oranges, and greens, all swishing around you as the alien creature contunies it's mindless guarding.."
|
||||
B.digest_brute = 0.5
|
||||
B.digest_burn = 1.5
|
||||
B.digestchance = 0
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 15
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/bullet_act(obj/item/projectile/P)
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/barrier/bullet_act(obj/item/projectile/P)
|
||||
if(fullshield > 0)
|
||||
fullshield -= P.damage
|
||||
if(P == /obj/item/projectile/ion)
|
||||
@@ -137,7 +265,7 @@
|
||||
visible_message(span_boldwarning(span_orange("The shield reactivates!!.")))
|
||||
icon_state = "UPshield_boss"
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/shield_boss/do_special_attack(atom/A)
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tyrbosses/expirments/barrier/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,4)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
@@ -153,13 +281,13 @@
|
||||
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/crystal_boss
|
||||
name = "experiment 20"
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss //immune to projectiles
|
||||
name = "crystalized expirment"
|
||||
icon = 'modular_chomp/icons/mob/tyr.dmi'
|
||||
icon_state = "crystalized"
|
||||
icon_living = "crystalized"
|
||||
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
|
||||
@@ -168,6 +296,17 @@
|
||||
special_attack_cooldown = 8 SECONDS
|
||||
var/parry_chance = 100
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/load_default_bellies()
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "flora gut"
|
||||
B.desc = "You have been devoured by the crystaline vulpine. A mix of flesh and flora surrond you, purple bubbling fluid soaking into your body. The beast effortlessly carrying your body, it's motions seemingly exaggerated, alien words spoken, the beast trying to taunt you."
|
||||
B.digest_brute = 1
|
||||
B.digest_burn = 1
|
||||
B.digestchance = 0
|
||||
B.absorbchance = 0
|
||||
B.escapechance = 15
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/bullet_act(obj/item/projectile/P)
|
||||
if(prob(parry_chance))
|
||||
visible_message(span_danger("The [P.name] gets reflected by [src]'s armor!"), \
|
||||
@@ -188,139 +327,4 @@
|
||||
return (..(P))
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/crystal_boss/do_special_attack(atom/A)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 4), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
//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'
|
||||
icon_state = "cyan"
|
||||
icon_living = "cyan"
|
||||
size_multiplier = 3
|
||||
projectiletype = /obj/item/projectile/bullet/astral_blade
|
||||
wreckage = /obj/item/prop/tyrlore/shotgun
|
||||
specialattackprojectile = /obj/item/projectile/bullet/astral_blade
|
||||
|
||||
/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)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff), A, 4, 5, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(3)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(summon_puddles), A, 2, /datum/modifier/mmo_drop/blade_boss_long), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(4)
|
||||
attackcycle = 0
|
||||
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/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'
|
||||
icon_state = "yellow"
|
||||
icon_living = "yellow"
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/engi_boss
|
||||
specialattackprojectile = /obj/item/projectile/energy/agate_lighting
|
||||
projectiletype = /obj/item/projectile/energy/agate_lighting
|
||||
|
||||
/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)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 4), 1.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
attackcycle = 0
|
||||
addtimer(CALLBACK(src, PROC_REF(cutoff), A, 2, 5, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
if(4)
|
||||
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/swarm_ai
|
||||
name = "swarm controler"
|
||||
desc = "A massive hivebot that has shifting bits of metal upon it's body."
|
||||
health = 400
|
||||
maxHealth = 400
|
||||
icon_state = "bright_green"
|
||||
icon_living = "bright_green"
|
||||
icon = 'modular_chomp/icons/mob/hivebot.dmi'
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/swarm_boss
|
||||
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)
|
||||
new /mob/living/simple_mob/mechanical/hivebot/tyr/swarm(src.loc)
|
||||
..()
|
||||
|
||||
/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/tyr/swarm(src.loc)
|
||||
..()
|
||||
|
||||
/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/tyr/swarm(src.loc)
|
||||
|
||||
/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
|
||||
wreckage = /obj/item/prop/tyrlore/meteor_boss
|
||||
special_attack_cooldown = 5
|
||||
|
||||
/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)
|
||||
wreckage = bullet_heck(A, strike_downx, strikedowny)
|
||||
|
||||
//the add tutortial
|
||||
/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 = 1000
|
||||
maxHealth = 1000
|
||||
icon_state = "white"
|
||||
icon_living = "white"
|
||||
icon = 'icons/mob/hivebot.dmi'
|
||||
size_multiplier = 3
|
||||
wreckage = /obj/item/prop/tyrlore/medical_boss
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
attack_armor_pen = 80
|
||||
movement_cooldown = 4
|
||||
|
||||
special_attack_cooldown = 15 SECONDS
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
|
||||
var/datum/disease/base_disease = /datum/disease/advance/agate_rot
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/apply_melee_effects(atom/A)
|
||||
if(ishuman(A) && prob(25))
|
||||
var/mob/living/carbon/human/H = A
|
||||
H.ContractDisease(base_disease)
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/tankyboss/medical_bot/do_special_attack(atom/A)
|
||||
visible_message(span_boldwarning(span_orange("The beast restores itself to a prime condition!.")))
|
||||
adjustBruteLoss(-1000)
|
||||
adjustFireLoss(-1000)
|
||||
adjustToxLoss(-1000)
|
||||
adjustOxyLoss(-1000)
|
||||
adjustCloneLoss(-1000)
|
||||
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, 4), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
+9
-3
@@ -7,7 +7,7 @@
|
||||
icon_living = "medi"
|
||||
icon_dead = "medi"
|
||||
taser_kill = 0
|
||||
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/astralcollective)
|
||||
faction = FACTION_ECLIPSE
|
||||
movement_cooldown = 0
|
||||
|
||||
@@ -112,6 +112,12 @@
|
||||
|
||||
var/expirmental
|
||||
|
||||
/datum/category_item/catalogue/fauna/astralcollective
|
||||
name = "Astral Collective"
|
||||
desc = "A faction that lingers upon and beyond the frontier of space. Abnormal obsessive over precursor technology and \
|
||||
things that seem abnormal."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/mob/living/simple_mob/humanoid/astral_collective/Initialize(mapload)
|
||||
. = ..()
|
||||
expirmental = rand(1,7)
|
||||
@@ -225,8 +231,8 @@
|
||||
attack_armor_pen = 20
|
||||
melee_attack_delay = 1.5 SECONDS
|
||||
|
||||
health = 200
|
||||
maxHealth = 200
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
|
||||
special_attack_cooldown = 7 SECONDS
|
||||
special_attack_min_range = 0
|
||||
|
||||
@@ -146,6 +146,10 @@
|
||||
var/leech = 50
|
||||
var/chain_number = 0
|
||||
|
||||
/mob/living/simple_mob/vore/boss_jellyfish/death()
|
||||
..()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/vore/boss_jellyfish/load_default_bellies()
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
|
||||
Reference in New Issue
Block a user