Tyr Update 9000 (#11107)

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
FluffMedic
2025-06-28 22:10:31 +02:00
committed by GitHub
co-authored by Kashargul
parent 5386230d96
commit e5c574285d
22 changed files with 23243 additions and 22670 deletions
@@ -280,3 +280,26 @@
color = "#FF3300"
high_color = "#FF3300"
low_color = "#F08F4F"
//other Tyr Loot
/obj/item/melee/energy/sword/top_shield
name = "energy spike shield"
desc = "A makeshift shield."
icon = 'modular_chomp/icons/mob/tribal_gear.dmi'
icon_state = "topshield"
item_state = "topshield"
active_force = 10
active_armourpen = 60
active_throwforce = 40
throw_speed = 1
throw_range = 7
slowdown = 2
defend_chance = 70
projectile_parry_chance = 70
active_w_class = ITEMSIZE_HUGE
w_class = ITEMSIZE_HUGE
item_icons = list(
slot_l_hand_str = 'modular_chomp/icons/obj/guns/precursor/lefthand.dmi',
slot_r_hand_str = 'modular_chomp/icons/obj/guns/precursor/righthand.dmi',
)
@@ -102,7 +102,36 @@
meat_amount = 3
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond
name = " cyan metal ant"
icon_state = "diamond_ant"
icon_living = "diamond_ant"
butchery_loot = list(\
/obj/item/stack/material/diamond = 18\
)
/mob/living/simple_mob/animal/tyr/mineral_ants/verdantium
name = "green metal ant"
icon_state = "verdantium_ant"
icon_living = "verdantium_ant"
butchery_loot = list(\
/obj/item/stack/material/verdantium = 18\
)
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium
name = "lime metal ant"
icon_state = "rad_ant"
icon_living = "rad_ant"
butchery_loot = list(\
/obj/item/stack/material/uranium = 18\
)
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium
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/builder
icon_state = "builder_ant"
@@ -206,12 +235,16 @@ ANT STRUCTURES
spawn_delay = 10 MINUTES
spawn_types = list(
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 5,
/mob/living/simple_mob/animal/tyr/mineral_ants/builder = 7,
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/builder = 2,
/mob/living/simple_mob/animal/tyr/mineral_ants/copper = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/agate = 1,
/mob/living/simple_mob/animal/tyr/mineral_ants/painite = 5
/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
)
simultaneous_spawns = 5
@@ -328,7 +361,11 @@ ANT STRUCTURES
/mob/living/simple_mob/animal/tyr/mineral_ants/copper,
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz,
/mob/living/simple_mob/animal/tyr/mineral_ants/agate,
/mob/living/simple_mob/animal/tyr/mineral_ants/painite)
/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)
faction = FACTION_TYR
/obj/effect/ant_structure/webbarrier
@@ -0,0 +1,846 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/teleport_attack(atom/target, var/next_cycle, var/tele_miss)
// Teleport attack.
if(!target)
to_chat(src, span_warning("There's nothing to teleport to."))
return FALSE
var/list/nearby_things = range(tele_miss, target)
var/list/valid_turfs = list()
// All this work to just go to a non-dense tile.
for(var/turf/potential_turf in nearby_things)
var/valid_turf = TRUE
if(potential_turf.density)
continue
for(var/atom/movable/AM in potential_turf)
if(AM.density)
valid_turf = FALSE
if(valid_turf)
valid_turfs.Add(potential_turf)
if(!(valid_turfs.len))
to_chat(src, span_warning("There wasn't an unoccupied spot to teleport to."))
return FALSE
var/turf/target_turf = pick(valid_turfs)
var/turf/T = get_turf(src)
var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread
s1.set_up(5, 1, T)
var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread
s2.set_up(5, 1, target_turf)
T.visible_message(span_warning("\The [src] vanishes!"))
s1.start()
forceMove(target_turf)
playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1)
to_chat(src, span_notice("You teleport to \the [target_turf]."))
target_turf.visible_message(span_warning("\The [src] appears!"))
s2.start()
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/singleproj/(atom/target, var/next_cycle)
if(!target)
return
var/obj/item/projectile/P = new specialattackprojectile(get_turf(src))
P.launch_projectile(target, BP_TORSO, src)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/bullet_heck(atom/target, var/horix, var/vertiy) //horix is the X vaule, vertix is the Y vaule
var/obj/item/projectile/P = new specialattackprojectile(get_turf(src))
var/turf = locate(src.x+horix, src.y+vertiy, src.z)
target = turf
P.launch_projectile(target, BP_TORSO, src)
//spinny dual blades
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, -7)
bullet_heck(target, 0, 7)
bullet_heck(target, -7, 0)
bullet_heck(target, 7, 0)
addtimer(CALLBACK(src, PROC_REF(dual_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, -7)
bullet_heck(target, 1, 7)
bullet_heck(target, -7, 1)
bullet_heck(target, 7, -1)
addtimer(CALLBACK(src, PROC_REF(dual_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, -7)
bullet_heck(target, 2, 7)
bullet_heck(target, -7, 2)
bullet_heck(target, 7, -2)
addtimer(CALLBACK(src, PROC_REF(dual_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, -7)
bullet_heck(target, 3, 7)
bullet_heck(target, -7, 3)
bullet_heck(target, 7, -3)
addtimer(CALLBACK(src, PROC_REF(dual_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, -7)
bullet_heck(target, 4, 7)
bullet_heck(target, -7, 4)
bullet_heck(target, 7, -4)
addtimer(CALLBACK(src, PROC_REF(dual_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, -7)
bullet_heck(target, 5, 7)
bullet_heck(target, -7, 5)
bullet_heck(target, 7, -5)
addtimer(CALLBACK(src, PROC_REF(dual_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, -7)
bullet_heck(target, 6, 7)
bullet_heck(target, -7, 6)
bullet_heck(target, 7, -6)
addtimer(CALLBACK(src, PROC_REF(dual_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, 7, 7)
bullet_heck(target, -7, 7)
bullet_heck(target, 7, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -6)
bullet_heck(target, 7, 6)
bullet_heck(target, -6, 7)
bullet_heck(target, 6, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -5)
bullet_heck(target, 7, 5)
bullet_heck(target, -5, 7)
bullet_heck(target, 5, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -4)
bullet_heck(target, 7, 4)
bullet_heck(target, -4, 7)
bullet_heck(target, 4, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -3)
bullet_heck(target, 7, 3)
bullet_heck(target, -3, 7)
bullet_heck(target, 3, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -2)
bullet_heck(target, 7, 2)
bullet_heck(target, -2, 7)
bullet_heck(target, 2, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -1)
bullet_heck(target, 7, 1)
bullet_heck(target, -1, 7)
bullet_heck(target, 1, -7)
addtimer(CALLBACK(src, PROC_REF(dual_spinN), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_spinN(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 0)
bullet_heck(target, 7, 0)
bullet_heck(target, 0, 7)
bullet_heck(target, 0, -7)
if(prob(50)) //coin flip to reverse
addtimer(CALLBACK(src, PROC_REF(fdual_spin), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
else
addtimer(CALLBACK(src, PROC_REF(rdual_spin), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
//the four spin finish
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 1)
bullet_heck(target, 7, -1)
bullet_heck(target, 1, 7)
bullet_heck(target, -1, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 2)
bullet_heck(target, 7, -2)
bullet_heck(target, 2, 7)
bullet_heck(target, -2, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 3)
bullet_heck(target, 7, -3)
bullet_heck(target, 3, 7)
bullet_heck(target, -3, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 4)
bullet_heck(target, 7, -4)
bullet_heck(target, 4, 7)
bullet_heck(target, -4, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 5)
bullet_heck(target, 7, -5)
bullet_heck(target, 5, 7)
bullet_heck(target, -5, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 6)
bullet_heck(target, 7, -6)
bullet_heck(target, 6, 7)
bullet_heck(target, -6, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 7)
bullet_heck(target, 7, -7)
bullet_heck(target, 7, 7)
bullet_heck(target, -7, -7)
addtimer(CALLBACK(src, PROC_REF(fdual_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, 7)
bullet_heck(target, 6, -7)
bullet_heck(target, 7, 6)
bullet_heck(target, -7, -6)
addtimer(CALLBACK(src, PROC_REF(fdual_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, 7)
bullet_heck(target, 5, -7)
bullet_heck(target, 7, 5)
bullet_heck(target, -7, -5)
addtimer(CALLBACK(src, PROC_REF(fdual_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, 7)
bullet_heck(target, 4, -7)
bullet_heck(target, 7, 4)
bullet_heck(target, -7, -4)
addtimer(CALLBACK(src, PROC_REF(fdual_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, 7)
bullet_heck(target, 3, -7)
bullet_heck(target, 7, 3)
bullet_heck(target, -7, -3)
addtimer(CALLBACK(src, PROC_REF(fdual_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, 7)
bullet_heck(target, 2, -7)
bullet_heck(target, 7, 2)
bullet_heck(target, -7, -2)
addtimer(CALLBACK(src, PROC_REF(fdual_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, 7)
bullet_heck(target, 1, -7)
bullet_heck(target, 7, 1)
bullet_heck(target, -7, -1)
addtimer(CALLBACK(src, PROC_REF(fdual_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fdual_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, 7)
bullet_heck(target, 0, -7)
bullet_heck(target, 7, 0)
bullet_heck(target, -7, -0)
attackcycle = next_cycle
//the reverse
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, -7)
bullet_heck(target, 0, 7)
bullet_heck(target, 7, 0)
bullet_heck(target, -7, 0)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, -7)
bullet_heck(target, 1, 7)
bullet_heck(target, 7, -1)
bullet_heck(target, -7, 1)
addtimer(CALLBACK(src, PROC_REF(rdual_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, -7)
bullet_heck(target, 2, 7)
bullet_heck(target, 7, -2)
bullet_heck(target, -7, 2)
addtimer(CALLBACK(src, PROC_REF(rdual_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, -7)
bullet_heck(target, 3, 7)
bullet_heck(target, 7, -3)
bullet_heck(target, -7, 3)
addtimer(CALLBACK(src, PROC_REF(rdual_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, -7)
bullet_heck(target, 4, 7)
bullet_heck(target, 7, -4)
bullet_heck(target, -7, 4)
addtimer(CALLBACK(src, PROC_REF(rdual_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, -7)
bullet_heck(target, 5, 7)
bullet_heck(target, 7, -5)
bullet_heck(target, -7, 5)
addtimer(CALLBACK(src, PROC_REF(rdual_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, -7)
bullet_heck(target, 6, 7)
bullet_heck(target, 7, -6)
bullet_heck(target, -7, 6)
addtimer(CALLBACK(src, PROC_REF(rdual_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, 7, 7)
bullet_heck(target, 7, -7)
bullet_heck(target, -7, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -6)
bullet_heck(target, 7, 6)
bullet_heck(target, 6, -7)
bullet_heck(target, -6, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -5)
bullet_heck(target, 7, 5)
bullet_heck(target, 5, -7)
bullet_heck(target, -5, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -4)
bullet_heck(target, 7, 4)
bullet_heck(target, 4, -7)
bullet_heck(target, -4, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -3)
bullet_heck(target, 7, 3)
bullet_heck(target, 3, -7)
bullet_heck(target, -3, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -2)
bullet_heck(target, 7, 2)
bullet_heck(target, 2, -7)
bullet_heck(target, -2, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rdual_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -1)
bullet_heck(target, 7, 1)
bullet_heck(target, 1, -7)
bullet_heck(target, -1, 7)
addtimer(CALLBACK(src, PROC_REF(rdual_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
//two spinning blade
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, -7)
bullet_heck(target, 0, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, -7)
bullet_heck(target, 1, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, -7)
bullet_heck(target, 2, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, -7)
bullet_heck(target, 3, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, -7)
bullet_heck(target, 4, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, -7)
bullet_heck(target, 5, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, -7)
bullet_heck(target, 6, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, 7, 7)
addtimer(CALLBACK(src, PROC_REF(cross_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -6)
bullet_heck(target, 7, 6)
addtimer(CALLBACK(src, PROC_REF(cross_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -5)
bullet_heck(target, 7, 5)
addtimer(CALLBACK(src, PROC_REF(cross_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -4)
bullet_heck(target, 7, 4)
addtimer(CALLBACK(src, PROC_REF(cross_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -3)
bullet_heck(target, 7, 3)
addtimer(CALLBACK(src, PROC_REF(cross_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -2)
bullet_heck(target, 7, 2)
addtimer(CALLBACK(src, PROC_REF(cross_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -1)
bullet_heck(target, 7, 1)
addtimer(CALLBACK(src, PROC_REF(cross_spinN), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/cross_spinN(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 0)
bullet_heck(target, 7, 0)
if(prob(50)) //coin flip to reverse
addtimer(CALLBACK(src, PROC_REF(fcross_spin), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
else
addtimer(CALLBACK(src, PROC_REF(rcross_spin), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
//the dual spin finish
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 1)
bullet_heck(target, 7, -1)
addtimer(CALLBACK(src, PROC_REF(fcross_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 2)
bullet_heck(target, 7, -2)
addtimer(CALLBACK(src, PROC_REF(fcross_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 3)
bullet_heck(target, 7, -3)
addtimer(CALLBACK(src, PROC_REF(fcross_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 4)
bullet_heck(target, 7, -4)
addtimer(CALLBACK(src, PROC_REF(fcross_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 5)
bullet_heck(target, 7, -5)
addtimer(CALLBACK(src, PROC_REF(fcross_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 6)
bullet_heck(target, 7, -6)
addtimer(CALLBACK(src, PROC_REF(fcross_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, 7)
bullet_heck(target, 7, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, 7)
bullet_heck(target, 6, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, 7)
bullet_heck(target, 5, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, 7)
bullet_heck(target, 4, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, 7)
bullet_heck(target, 3, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, 7)
bullet_heck(target, 2, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, 7)
bullet_heck(target, 1, -7)
addtimer(CALLBACK(src, PROC_REF(fcross_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/fcross_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, 7)
bullet_heck(target, 0, -7)
attackcycle = next_cycle
//the dual spin reverse
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinM(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, 0, -7)
bullet_heck(target, 0, 7)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinL(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -1, -7)
bullet_heck(target, 1, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinM), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinK(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -2, -7)
bullet_heck(target, 2, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinL), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinJ(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -3, -7)
bullet_heck(target, 3, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinK), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinI(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -4, -7)
bullet_heck(target, 4, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinJ), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinH(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -5, -7)
bullet_heck(target, 5, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinI), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinG(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -6, -7)
bullet_heck(target, 6, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinH), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinF(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, 7, 7)
addtimer(CALLBACK(src, PROC_REF(rcross_spinG), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinE(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -6)
bullet_heck(target, 7, 6)
addtimer(CALLBACK(src, PROC_REF(rcross_spinF), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinD(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -5)
bullet_heck(target, 7, 5)
addtimer(CALLBACK(src, PROC_REF(rcross_spinE), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinC(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -4)
bullet_heck(target, 7, 4)
addtimer(CALLBACK(src, PROC_REF(rcross_spinD), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -3)
bullet_heck(target, 7, 3)
addtimer(CALLBACK(src, PROC_REF(rcross_spinC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spinA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -2)
bullet_heck(target, 7, 2)
addtimer(CALLBACK(src, PROC_REF(rcross_spinB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/rcross_spin(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -1)
bullet_heck(target, 7, 1)
addtimer(CALLBACK(src, PROC_REF(rcross_spinA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
//bursts attack
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/burst_one(atom/target)
bullet_heck(target, 0, -1)
bullet_heck(target, 0, 1)
bullet_heck(target, 1, 0)
bullet_heck(target, -1, 0)
bullet_heck(target, 1, -1)
bullet_heck(target, -1, -1)
bullet_heck(target, 1, 1)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/burst_two(atom/target)
bullet_heck(target, 0, -2)
bullet_heck(target, 1, -2)
bullet_heck(target, 2, -2)
bullet_heck(target, -1, -2)
bullet_heck(target, -2, -2)
bullet_heck(target, 0, 2)
bullet_heck(target, 1, 2)
bullet_heck(target, 2, 2)
bullet_heck(target, 2, 1)
bullet_heck(target, 2, 0)
bullet_heck(target, 2, -1)
bullet_heck(target, 2, -2)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/burst_three(atom/target)
bullet_heck(target, 0, -3)
bullet_heck(target, 1, -3)
bullet_heck(target, 2, -3)
bullet_heck(target, 3, -3)
bullet_heck(target, -1, -3)
bullet_heck(target, -2, -3)
bullet_heck(target, -3, -3)
bullet_heck(target, 3, 0)
bullet_heck(target, 3, 1)
bullet_heck(target, 3, 2)
bullet_heck(target, 3, 3)
bullet_heck(target, 3, -1)
bullet_heck(target, 3, -2)
bullet_heck(target, 3, -3)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/burst_four(atom/target)
bullet_heck(target, 0, -4)
bullet_heck(target, 1, -4)
bullet_heck(target, 2, -4)
bullet_heck(target, 3, -4)
bullet_heck(target, 4, -4)
bullet_heck(target, 4, -3)
bullet_heck(target, 4, -2)
bullet_heck(target, 4, -1)
bullet_heck(target, 4, 0)
bullet_heck(target, 4, 1)
bullet_heck(target, 4, 2)
bullet_heck(target, 4, 3)
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, -1, 4)
bullet_heck(target, -2, 4)
bullet_heck(target, -3, 4)
bullet_heck(target, -4, 4)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/checker_board(atom/target, var/next_cycle)
bullet_heck(target, -1, 1)
bullet_heck(target, 1, 1)
bullet_heck(target, 1, -1)
bullet_heck(target, -1, -1)
bullet_heck(target, 0, 2)
bullet_heck(target, 0, -2)
bullet_heck(target, 2, 0)
bullet_heck(target, -2, 0)
bullet_heck(target, -2, 2)
bullet_heck(target, 2, 2)
bullet_heck(target, 2, -2)
bullet_heck(target, -2, -2)
bullet_heck(target, -3, 1)
bullet_heck(target, -3, -1)
bullet_heck(target, 3, 1)
bullet_heck(target, 3, -1)
bullet_heck(target, 1, 3)
bullet_heck(target, -1, 3)
bullet_heck(target, 1, -3)
bullet_heck(target, -1, -3)
bullet_heck(target, -3, 3)
bullet_heck(target, 3, 3)
bullet_heck(target, 3, -3)
bullet_heck(target, -3, -3)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/chain_burst(atom/target, var/next_cycle, var/fire_delay)
burst_one(target)
addtimer(CALLBACK(src, PROC_REF(chain_burstA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/chain_burstA(atom/target, var/next_cycle, var/fire_delay)
burst_two(target)
addtimer(CALLBACK(src, PROC_REF(chain_burstB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/chain_burstB(atom/target, var/next_cycle, var/fire_delay)
burst_three(target)
addtimer(CALLBACK(src, PROC_REF(chain_burstC), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/chain_burstC(atom/target, var/next_cycle, var/fire_delay)
burst_four(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dual_burst(atom/target, var/next_cycle)
burst_two(target)
burst_four(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/giant_burst(atom/target, var/next_cycle)
burst_four(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/star_burst(atom/target, var/next_cycle)
bullet_heck(target, 0, 7)
bullet_heck(target, 0, -7)
bullet_heck(target, 7, 7)
bullet_heck(target, -7, 7)
bullet_heck(target, -7, -7)
bullet_heck(target, 7, -7)
bullet_heck(target, -7, 0)
bullet_heck(target, 7, 0)
attackcycle = next_cycle
//random
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay)
var/rngx = rand(-7,7)
var/rngy = rand(-7,7)
if(!target)
return
bullet_heck(target, rngx, rngy)
amount--
if(amount > 0)
addtimer(CALLBACK(src, PROC_REF(random_firing), target, amount, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
else
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/quad_random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay)
var/rngx = rand(-7,7)
var/rngy = rand(-7,7)
var/rngxx = rand(-7,7)
var/rngyy = rand(-7,7)
if(!target)
return
bullet_heck(target, rngx, rngy)
bullet_heck(target, rngxx, rngyy)
bullet_heck(target, rngxx, rngy)
bullet_heck(target, rngx, rngyy)
amount--
if(amount > 0)
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), target, amount, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
else
attackcycle = next_cycle
//perscion
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/hole_in_wall(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, -7, -6)
bullet_heck(target, -7, -5)
bullet_heck(target, -7, -4)
bullet_heck(target, -6, -7)
bullet_heck(target, -5, -7)
bullet_heck(target, -4, -7)
bullet_heck(target, 7, -7)
bullet_heck(target, 6, -7)
bullet_heck(target, 5, -7)
bullet_heck(target, 4, -7)
bullet_heck(target, 7, -6)
bullet_heck(target, 7, -5)
bullet_heck(target, 7, -4)
bullet_heck(target, 7, 7)
bullet_heck(target, 7, 6)
bullet_heck(target, 7, 5)
bullet_heck(target, 7, 4)
bullet_heck(target, 6, 7)
bullet_heck(target, 5, 7)
bullet_heck(target, 4, 7)
bullet_heck(target, -7, 7)
bullet_heck(target, -7, 6)
bullet_heck(target, -7, 5)
bullet_heck(target, -7, 4)
bullet_heck(target, -6, 7)
bullet_heck(target, -5, 7)
bullet_heck(target, -4, 7)
addtimer(CALLBACK(src, PROC_REF(hole_in_wallA), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/hole_in_wallA(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -4)
bullet_heck(target, -7, -3)
bullet_heck(target, -7, -2)
bullet_heck(target, -7, -1)
bullet_heck(target, -7, 0)
bullet_heck(target, -7, 1)
bullet_heck(target, -7, 2)
bullet_heck(target, -7, 3)
bullet_heck(target, -7, 4)
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, 1, -7)
bullet_heck(target, 2, -7)
bullet_heck(target, 3, -7)
bullet_heck(target, 4, -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, -1, 7)
bullet_heck(target, -2, 7)
bullet_heck(target, -3, 7)
bullet_heck(target, -4, 7)
bullet_heck(target, 7, -4)
bullet_heck(target, 7, -3)
bullet_heck(target, 7, -2)
bullet_heck(target, 7, -1)
bullet_heck(target, 7, 0)
bullet_heck(target, 7, 1)
bullet_heck(target, 7, 2)
bullet_heck(target, 7, 3)
bullet_heck(target, 7, 4)
addtimer(CALLBACK(src, PROC_REF(hole_in_wallB), target, next_cycle, fire_delay), fire_delay, TIMER_DELETE_ME)
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/hole_in_wallB(atom/target, var/next_cycle, var/fire_delay)
bullet_heck(target, -7, -7)
bullet_heck(target, -7, -6)
bullet_heck(target, -7, -5)
bullet_heck(target, -7, -4)
bullet_heck(target, -6, -7)
bullet_heck(target, -5, -7)
bullet_heck(target, -4, -7)
bullet_heck(target, 7, -7)
bullet_heck(target, 6, -7)
bullet_heck(target, 5, -7)
bullet_heck(target, 4, -7)
bullet_heck(target, 7, -6)
bullet_heck(target, 7, -5)
bullet_heck(target, 7, -4)
bullet_heck(target, 7, 7)
bullet_heck(target, 7, 6)
bullet_heck(target, 7, 5)
bullet_heck(target, 7, 4)
bullet_heck(target, 6, 7)
bullet_heck(target, 5, 7)
bullet_heck(target, 4, 7)
bullet_heck(target, -7, 7)
bullet_heck(target, -7, 6)
bullet_heck(target, -7, 5)
bullet_heck(target, -7, 4)
bullet_heck(target, -6, 7)
bullet_heck(target, -5, 7)
bullet_heck(target, -4, 7)
attackcycle = next_cycle
File diff suppressed because it is too large Load Diff
@@ -59,6 +59,7 @@
damage = 25
armor_penetration = 60
speed = 10
crawl_destroy = TRUE
/obj/item/projectile/bullet/alterhivebot
damage = 25
@@ -69,12 +70,15 @@
/obj/item/projectile/bullet/alterhivebot/boss
damage = 35
speed = 10
crawl_destroy = TRUE
/obj/item/projectile/beam/midlaser/shortrange
range = 3
crawl_destroy = TRUE
/obj/item/projectile/beam/midlaser/veryshortrange
range = 2
crawl_destroy = TRUE
/obj/item/projectile/energy/lightingspark/nanoweave
@@ -85,6 +89,7 @@
penetrating = 10
icon_state = "tesla_projectile"
speed = 15
crawl_destroy = TRUE
/obj/item/projectile/knockback
name = "sonic blast"
@@ -157,134 +162,47 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/boss/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
switch(a_intent)
if(I_DISARM) // Phase 3
if(attackcycle == 1)
say("PROTOCOL: RESTRAIN.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/metalball
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 2), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
say("PROTOCOL: DESTORY.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/beam/midlaser
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 3), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
say("PROTOCOL: BARRIER WIPE")
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
addtimer(CALLBACK(src, PROC_REF(spin_to_win), A, 4), 1 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
say("PROTOCOL: SPRAY FIRE")
specialattackprojectile = /obj/item/projectile/bullet/alterhivebot/boss
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 5, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
say("PROTOCOL: SHOCKWAVE.")
specialattackprojectile = /obj/item/projectile/knockback
addtimer(CALLBACK(src, PROC_REF(burst), A, 6), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 6)
say("PROTOCOL: MICROWAVE.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/temp/hot
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 7), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 7)
say("PROTOCOL: MACROWAVE.")
specialattackprojectile = /obj/item/projectile/temp/hot
addtimer(CALLBACK(src, PROC_REF(beglaser), A, 8), 2 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 8)
say("PROTOCOL: LASERBLADE.")
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
addtimer(CALLBACK(src, PROC_REF(burst), A, 9), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 9)
say("PROTOCOL: WORMHOLE.")
specialattackprojectile = /obj/item/projectile/arc/microsingulo
attackcycle = 0
if(prob(50))
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 10), 2 SECONDS, TIMER_DELETE_ME)
else
addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 10), 2 SECONDS, TIMER_DELETE_ME)
else if(attackcycle == 10)
say("PROTOCOL: DISCHARGE.")
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
attackcycle = 0
if(prob(50))
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 2 SECONDS, TIMER_DELETE_ME)
else
addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 1), 2 SECONDS, TIMER_DELETE_ME)
var/rng_cycle
if(attackcycle == 1)
specialattackprojectile = /obj/item/projectile/beam/burstlaser
rng_cycle = rand(1,5)
say("PROTOCOL: LASER. BLADE.")
addtimer(CALLBACK(src, PROC_REF(giant_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
rng_cycle = rand(1,5)
say("PROTOCOL: RANDOM. SWEEP")
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
rng_cycle = rand(1,5)
say("PROTOCOL: WARP. DRIVE.")
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, rng_cycle, 3), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
specialattackprojectile = /obj/item/projectile/knockback
rng_cycle = rand(1,5)
say("PROTOCOL: SHOCKWAVE.")
addtimer(CALLBACK(src, PROC_REF(giant_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
specialattackprojectile = /obj/item/projectile/metalball
Beam(A, icon_state = "solar_beam", time = 0.5 SECONDS, maxdistance = INFINITY)
say("PROTOCOL: RESTRAIN.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 6), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 6)
specialattackprojectile = /obj/item/projectile/beam/heavylaser
Beam(A, icon_state = "solar_beam", time = 0.5 SECONDS, maxdistance = INFINITY)
rng_cycle = rand(1,5)
say("PROTOCOL: DESTROY.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(I_HURT) // Phase 1. Teaching the player the three funny attacks
if(attackcycle == 1) //metal ball
say("PROTOCOL: RESTRAIN.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/metalball
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 2), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2) //laser to be blocked by the foam we set up.
say("PROTOCOL: DESTORY.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/beam/midlaser
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 3), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3) //The knock back AoE.
say("PROTOCOL: SHOCKWAVE.")
specialattackprojectile = /obj/item/projectile/knockback
addtimer(CALLBACK(src, PROC_REF(burst), A, 4), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4) //The Get away from me AoE.
say("PROTOCOL: LASERBLADE.")
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
addtimer(CALLBACK(src, PROC_REF(burst), A, 1), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
if(I_GRAB) // Phase 2
if(attackcycle == 1)
say("PROTOCOL: RESTRAIN.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/metalball
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 2), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
say("PROTOCOL: DESTORY.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/beam/midlaser
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 3), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
say("PROTOCOL: BARRIER WIPE")
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
addtimer(CALLBACK(src, PROC_REF(spin_to_win), A, 4), 1 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
say("PROTOCOL: SHOCKWAVE.")
specialattackprojectile = /obj/item/projectile/knockback
addtimer(CALLBACK(src, PROC_REF(burst), A, 5), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
say("PROTOCOL: MICROWAVE.")
Beam(A, icon_state = "solar_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
specialattackprojectile = /obj/item/projectile/temp/hot
addtimer(CALLBACK(src, PROC_REF(singleproj), A, 6), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 6)
say("PROTOCOL: LASERBLADE.")
specialattackprojectile = /obj/item/projectile/beam/midlaser/shortrange
addtimer(CALLBACK(src, PROC_REF(burst), A, 7), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 7)
say("PROTOCOL: DISCHARGE.")
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
attackcycle = 0
if(prob(50))
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 3 SECONDS, TIMER_DELETE_ME)
else
addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 1), 3 SECONDS, TIMER_DELETE_ME)
/*
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/cyan
name = "command hivebot"
desc = "A large, very important looking robot."
@@ -330,7 +248,7 @@
say("PROTOCOL: TELEPORT.")
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 1), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
/*
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/green
name = "command hivebot"
desc = "A large, very important looking robot."
@@ -54,19 +54,15 @@
else if(attackcycle == 2)
say("Prepare. Area. Cleanse. Radiation.")
specialattackprojectile = /obj/item/projectile/beam/gamma
addtimer(CALLBACK(src, PROC_REF(burst), A, 3), 6 SECONDS, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(giant_burst), A, 3), 6 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
addtimer(CALLBACK(src, PROC_REF(alpha_slash), A, 4), 1 SECOND, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 4), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
addtimer(CALLBACK(src, PROC_REF(omega), A, 5), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, 1, 0.5 SECONDS), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
@@ -84,6 +80,7 @@
damage = 40
armor_penetration = 60
speed = 10
crawl_destroy = TRUE
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
name = "ai control center"
@@ -119,35 +116,41 @@
var/rng_cycle
if(attackcycle == 1)
specialattackprojectile = /obj/item/projectile/beam/burstlaser
rng_cycle = rand(1,5)
rng_cycle = rand(1,4)
say("PROTOCOL: CROSS X.")
addtimer(CALLBACK(src, PROC_REF(miniburst_c), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(star_burst), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
rng_cycle = rand(1,5)
rng_cycle = rand(1,4)
say("PROTOCOL: PRECISION. SWEEP.")
addtimer(CALLBACK(src, PROC_REF(zone_control_one), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
rng_cycle = rand(1,5)
rng_cycle = rand(1,4)
say("PROTOCOL: DISCHARGE.")
addtimer(CALLBACK(src, PROC_REF(spin_to_win), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 12, rng_cycle, 15), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
specialattackprojectile = /obj/item/projectile/knockback
rng_cycle = rand(1,5)
Beam(A, icon_state = "r_beam", time = 2 SECONDS, maxdistance = INFINITY)
say("PROTOCOL: AIRCANNON.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
rng_cycle = rand(1,5)
rng_cycle = rand(1,4)
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
say("PROTOCOL: MISSILE.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
/mob/living/simple_mob/mechanical/hivebot/eclipse
name = "repurposed hivebot"
maxHealth = 1.5 LASERS_TO_KILL // 60 hp
health = 1.5 LASERS_TO_KILL
icon = 'modular_chomp/icons/mob/hivebot.dmi'
desc = "A repurposed hivebot."
faction = FACTION_ECLIPSE
pass_flags = PASSTABLE
icon_state = "janitor"
icon_living = "janitor"
projectiletype = /obj/item/projectile/beam/midlaser/shortrange
ai_holder_type = /datum/ai_holder/simple_mob/ranged/pointblank
@@ -243,18 +243,19 @@
check_armour = "laser"
damage = 30
armor_penetration = 20
penetrating = 2
speed = 2
crawl_destroy = TRUE
//The normal laser is easier to guard, but can chain screw ups easier
//The normal laser respects more armor, but deals more damage if you don't have it.precursor will thwack folks equally.
/obj/item/projectile/energy/eclipse/lorge
damage = 30
armor_penetration = 60
eyeblur = 3
damage = 60
armor_penetration = 30
icon_state = "mega_laser"
speed = 10
/obj/item/projectile/energy/eclipse/lorgealien
damage = 50
damage = 20
armor_penetration = 60
icon_state = "mega_laser_p"
speed = 10
@@ -273,6 +274,26 @@
icon_state = "javelin"
damage_type = SEARING
check_armour = "bullet"
damage = 90
armor_penetration = 50
damage = 45
armor_penetration = 95
speed = 10
/obj/item/projectile/energy/eclipse/chillingwind
name = "ice winds"
icon_state = "ice_wind"
damage = 15
armor_penetration = 70
speed = 10
modifier_type_to_apply = /datum/modifier/cryogelled
modifier_duration = 0.25 MINUTE
/obj/item/projectile/energy/eclipse/mining
name = "drill"
icon_state = "drill"
damage_type = BRUTE
check_armour = "bullet"
damage = 40
armor_penetration = 30
speed = 10
excavation_amount = 100
@@ -52,7 +52,7 @@
/obj/item/projectile/beam/precursor_tyr
name = "laser"
icon_state = "laser"
damage = 15
damage = 10
armor_penetration = 30
penetrating = 20
damage_type = BURN