mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 21:27:01 +01:00
Small Explo Update (#12950)
This commit is contained in:
@@ -180,3 +180,100 @@
|
||||
if(3)
|
||||
addtimer(CALLBACK(src, PROC_REF(cross_spin), A, rng_cycle, 3), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/walker
|
||||
name = "astral collective walker"
|
||||
icon_state = "engi_spider"
|
||||
icon_living = "engi_spider"
|
||||
desc = "A robotic spider like creation.."
|
||||
health = 1500
|
||||
maxHealth = 1500
|
||||
artidrop = /obj/effect/artillery_attack/spear
|
||||
projectiletype = /obj/item/projectile/arc/blue_energy
|
||||
wreckage = /obj/item/prop/deconstructable/gigacell
|
||||
pilot_type = /mob/living/simple_mob/humanoid/astral_collective/purity
|
||||
|
||||
loot_list = list(/obj/effect/anomaly/flux = 100,
|
||||
/obj/item/stock_parts/scanning_module/omni = 80,
|
||||
/obj/item/stock_parts/micro_laser/omni = 80,
|
||||
/obj/item/stock_parts/capacitor/omni = 80,
|
||||
/obj/item/stock_parts/manipulator/omni = 80,
|
||||
/obj/item/stock_parts/matter_bin/omni = 80,
|
||||
/obj/item/stock_parts/scanning_module/hyper = 80,
|
||||
/obj/item/stock_parts/micro_laser/hyper = 80,
|
||||
/obj/item/stock_parts/capacitor/hyper = 80,
|
||||
/obj/item/stock_parts/manipulator/hyper = 80,
|
||||
/obj/item/stock_parts/matter_bin/hyper = 80,
|
||||
/obj/random/tool/power = 50,
|
||||
/obj/random/tool/alien = 15,
|
||||
/obj/random/bluespace = 100,
|
||||
/obj/random/anomaly_core = 50
|
||||
)
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/walker/do_special_attack(atom/A)
|
||||
rng_cycle = rand(1,5)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
addtimer(CALLBACK(src, PROC_REF(circle_sniper), A, 2, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
addtimer(CALLBACK(src, PROC_REF(block_sniper), A, 3, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
addtimer(CALLBACK(src, PROC_REF(web_sniper), A, 1, rng_cycle, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/sphere
|
||||
name = "astral collective sphere"
|
||||
icon_state = "orb"
|
||||
icon_living = "orb"
|
||||
desc = "A floating metallic sphere."
|
||||
health = 1500
|
||||
maxHealth = 1500
|
||||
artidrop = /obj/effect/artillery_attack/spear
|
||||
specialattackprojectile = /obj/item/projectile/energy/eclipse_boss/energyjavelin
|
||||
projectiletype = /obj/item/projectile/arc/blue_energy
|
||||
wreckage = /obj/item/prop/deconstructable/gigacell
|
||||
pilot_type = /mob/living/simple_mob/humanoid/astral_collective/purity
|
||||
|
||||
loot_list = list(/obj/effect/anomaly/flux = 100,
|
||||
/obj/item/stock_parts/scanning_module/omni = 80,
|
||||
/obj/item/stock_parts/micro_laser/omni = 80,
|
||||
/obj/item/stock_parts/capacitor/omni = 80,
|
||||
/obj/item/stock_parts/manipulator/omni = 80,
|
||||
/obj/item/stock_parts/matter_bin/omni = 80,
|
||||
/obj/item/stock_parts/scanning_module/hyper = 80,
|
||||
/obj/item/stock_parts/micro_laser/hyper = 80,
|
||||
/obj/item/stock_parts/capacitor/hyper = 80,
|
||||
/obj/item/stock_parts/manipulator/hyper = 80,
|
||||
/obj/item/stock_parts/matter_bin/hyper = 80,
|
||||
/obj/random/tool/power = 50,
|
||||
/obj/random/tool/alien = 15,
|
||||
/obj/random/bluespace = 100,
|
||||
/obj/random/anomaly_core = 50,
|
||||
)
|
||||
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/sphere/do_special_attack(atom/A)
|
||||
switch(attackcycle)
|
||||
if(1)
|
||||
addtimer(CALLBACK(src, PROC_REF(circle_sniper), A, 2, 1, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(2)
|
||||
addtimer(CALLBACK(src, PROC_REF(bullet_blossom), A, 3, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(3)
|
||||
addtimer(CALLBACK(src, PROC_REF(block_sniper), A, 4, 1, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(4)
|
||||
addtimer(CALLBACK(src, PROC_REF(gattlingfire), A, 5, 4, 7), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(5)
|
||||
addtimer(CALLBACK(src, PROC_REF(web_sniper), A, 6, 1, 10), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
if(6)
|
||||
addtimer(CALLBACK(src, PROC_REF(cross_spin), A, 1, 5), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
+85
-4
@@ -67,25 +67,106 @@
|
||||
falling_type = /obj/effect/callstrike
|
||||
crushing = FALSE
|
||||
|
||||
/obj/effect/artillery_attack/spear
|
||||
ammmotype = /obj/effect/callstrike/spear
|
||||
|
||||
/obj/effect/callstrike
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
mouse_opacity = 0
|
||||
icon ='modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
var/meteor_type = BURN
|
||||
var/meteor_vaule = 40
|
||||
var/meteor_defense = "laser"
|
||||
var/meteor_icon = "arti"
|
||||
|
||||
/obj/effect/callstrike/Initialize(mapload)
|
||||
.=..()
|
||||
icon_state = "arti"
|
||||
icon_state = meteor_icon
|
||||
|
||||
/obj/effect/callstrike/end_fall(crushing = FALSE)
|
||||
for(var/mob/living/L in loc)
|
||||
var/target_zone = ran_zone()
|
||||
var/blocked = L.run_armor_check(target_zone, "laser")
|
||||
var/blocked = L.run_armor_check(target_zone, meteor_defense)
|
||||
|
||||
if(!L.apply_damage(70, BURN, target_zone, blocked))
|
||||
if(!L.apply_damage(meteor_vaule, meteor_type, target_zone, blocked))
|
||||
break
|
||||
playsound(src, 'sound/effects/clang2.ogg', 50, 1)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 0.25 SECONDS, TIMER_DELETE_ME)
|
||||
QDEL_IN(0.25, SECONDS)
|
||||
|
||||
/obj/effect/callstrike/spear
|
||||
meteor_type = BRUTE
|
||||
meteor_vaule = 40
|
||||
meteor_defense = "melee"
|
||||
meteor_icon = "spear"
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/line_encase(atom/target, next_cycle)
|
||||
var/turf/T = get_turf(target)
|
||||
new artidrop(locate(T.x-3, T.y-1, T.z))
|
||||
new artidrop(locate(T.x-3, T.y, T.z))
|
||||
new artidrop(locate(T.x-3, T.y+1, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x-1, T.y-3, T.z))
|
||||
new artidrop(locate(T.x+1, T.y-3, T.z))
|
||||
new artidrop(locate(T.x, T.y-3, T.z))
|
||||
new artidrop(locate(T.x-1, T.y+3, T.z))
|
||||
new artidrop(locate(T.x+1, T.y+3, T.z))
|
||||
new artidrop(locate(T.x, T.y+3, T.z))
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/circle_sniper(atom/target, next_cycle, amount, fire_delay)
|
||||
var/turf/T = get_turf(target)
|
||||
new artidrop(locate(T.x-3, T.y-1, T.z))
|
||||
new artidrop(locate(T.x-3, T.y, T.z))
|
||||
new artidrop(locate(T.x-3, T.y+1, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x+3, T.y, T.z))
|
||||
new artidrop(locate(T.x-1, T.y-3, T.z))
|
||||
new artidrop(locate(T.x+1, T.y-3, T.z))
|
||||
new artidrop(locate(T.x, T.y-3, T.z))
|
||||
new artidrop(locate(T.x-1, T.y+3, T.z))
|
||||
new artidrop(locate(T.x+1, T.y+3, T.z))
|
||||
new artidrop(locate(T.x, T.y+3, T.z))
|
||||
new artidrop(locate(T.x, T.y, T.z))
|
||||
if(amount > 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(circle_sniper), target, next_cycle, fire_delay, amount), fire_delay, TIMER_DELETE_ME)
|
||||
else
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/block_sniper(atom/target, next_cycle, amount, fire_delay)
|
||||
var/turf/T = get_turf(target)
|
||||
new artidrop(locate(T.x-1, T.y, T.z))
|
||||
new artidrop(locate(T.x, T.y, T.z))
|
||||
new artidrop(locate(T.x+1, T.y, T.z))
|
||||
new artidrop(locate(T.x+1, T.y+1, T.z))
|
||||
new artidrop(locate(T.x-1, T.y+1, T.z))
|
||||
new artidrop(locate(T.x, T.y+1, T.z))
|
||||
new artidrop(locate(T.x+1, T.y-1, T.z))
|
||||
new artidrop(locate(T.x-1, T.y-1, T.z))
|
||||
new artidrop(locate(T.x, T.y-1, T.z))
|
||||
if(amount > 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(block_sniper), target, next_cycle, fire_delay, amount), fire_delay, TIMER_DELETE_ME)
|
||||
else
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/web_sniper(atom/target, next_cycle, amount, fire_delay)
|
||||
var/turf/T = get_turf(target)
|
||||
new artidrop(locate(T.x, T.y, T.z))
|
||||
new artidrop(locate(T.x-2, T.y, T.z))
|
||||
new artidrop(locate(T.x+2, T.y, T.z))
|
||||
new artidrop(locate(T.x, T.y-2, T.z))
|
||||
new artidrop(locate(T.x, T.y+2, T.z))
|
||||
new artidrop(locate(T.x-1, T.y-1, T.z))
|
||||
new artidrop(locate(T.x+1, T.y+1, T.z))
|
||||
new artidrop(locate(T.x-1, T.y+1, T.z))
|
||||
new artidrop(locate(T.x+1, T.y-1, T.z))
|
||||
if(amount > 0)
|
||||
addtimer(CALLBACK(src, PROC_REF(web_sniper), target, next_cycle, fire_delay, amount), fire_delay, TIMER_DELETE_ME)
|
||||
else
|
||||
attackcycle = next_cycle
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/gravity_surge(atom/target, next_cycle, pull_radius, pull_strength)
|
||||
if(!target)
|
||||
|
||||
Reference in New Issue
Block a user