|
|
|
|
@@ -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)
|
|
|
|
|
|