mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-24 05:38:15 +01:00
Tyr Update 9000 (#11107)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
@@ -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
|
||||
|
||||
+846
@@ -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
|
||||
|
||||
|
||||
+327
-1292
File diff suppressed because it is too large
Load Diff
+45
-127
@@ -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."
|
||||
|
||||
+24
-21
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user