mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Tyr Misc Changes (#11245)
This commit is contained in:
@@ -507,3 +507,19 @@
|
|||||||
scavanging is to be done at that site."
|
scavanging is to be done at that site."
|
||||||
value = CATALOGUER_REWARD_HARD
|
value = CATALOGUER_REWARD_HARD
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/material/barbedwire/plastic/active
|
||||||
|
anchored = 1
|
||||||
|
icon_state = "barbedwire-out"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/material/barbedwire/vopal
|
||||||
|
name = "crystal shards"
|
||||||
|
default_material = MAT_VOPAL
|
||||||
|
|
||||||
|
/obj/item/material/barbedwire/vopal/active
|
||||||
|
anchored = 1
|
||||||
|
icon_state = "barbedwire-out"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//ant meats
|
//ant meats
|
||||||
/obj/item/reagent_containers/food/snacks/copperant
|
/obj/item/reagent_containers/food/snacks/tyrant
|
||||||
name = "Bronze Ant Slice"
|
name = "Bronze Ant Slice"
|
||||||
desc = "A slice from a ant"
|
desc = "A slice from a ant"
|
||||||
icon_state = "meat"
|
icon_state = "meat"
|
||||||
@@ -105,6 +105,21 @@
|
|||||||
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||||
reagents.add_reagent(REAGENT_ID_SHOCKCHEM, 3)
|
reagents.add_reagent(REAGENT_ID_SHOCKCHEM, 3)
|
||||||
|
|
||||||
|
/obj/item/reagent_containers/food/snacks/copperant
|
||||||
|
name = "Copper Ant Slice"
|
||||||
|
desc = "A slice from a ant"
|
||||||
|
icon_state = "meat"
|
||||||
|
center_of_mass_x = 17 //CHOMPEdit
|
||||||
|
center_of_mass_y= 16 //CHOMPEdit
|
||||||
|
nutriment_amt = 3
|
||||||
|
nutriment_desc = list(REAGENT_ID_PROTEIN = 3, REAGENT_ID_SHOCKCHEM = 3)
|
||||||
|
bitesize = 1
|
||||||
|
|
||||||
|
/obj/item/reagent_containers/food/snacks/copperant/Initialize(mapload)
|
||||||
|
. = ..()
|
||||||
|
reagents.add_reagent(REAGENT_ID_PROTEIN, 3)
|
||||||
|
reagents.add_reagent(REAGENT_ID_SHOCKCHEM, 3)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/painiteant
|
/obj/item/reagent_containers/food/snacks/painiteant
|
||||||
name = "Painite Ant Slice"
|
name = "Painite Ant Slice"
|
||||||
desc = "A slice from a ant"
|
desc = "A slice from a ant"
|
||||||
@@ -137,7 +152,7 @@
|
|||||||
reagents.add_reagent(REAGENT_ID_LIQUIDFIRE, 3)
|
reagents.add_reagent(REAGENT_ID_LIQUIDFIRE, 3)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/quartzant
|
/obj/item/reagent_containers/food/snacks/quartzant
|
||||||
name = "Bronze Ant Slice"
|
name = "Quartz Ant Slice"
|
||||||
desc = "A slice from a ant"
|
desc = "A slice from a ant"
|
||||||
icon_state = "meat"
|
icon_state = "meat"
|
||||||
center_of_mass_x = 17 //CHOMPEdit
|
center_of_mass_x = 17 //CHOMPEdit
|
||||||
@@ -152,7 +167,7 @@
|
|||||||
reagents.add_reagent(REAGENT_ID_DEATHBLOOD, 3)
|
reagents.add_reagent(REAGENT_ID_DEATHBLOOD, 3)
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/agateant
|
/obj/item/reagent_containers/food/snacks/agateant
|
||||||
name = "Bronze Ant Slice"
|
name = "Agate Ant Slice"
|
||||||
desc = "A slice from a ant"
|
desc = "A slice from a ant"
|
||||||
icon_state = "meat"
|
icon_state = "meat"
|
||||||
center_of_mass_x = 17 //CHOMPEdit
|
center_of_mass_x = 17 //CHOMPEdit
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
attack_edge = 1
|
attack_edge = 1
|
||||||
|
|
||||||
meat_amount = 3
|
meat_amount = 3
|
||||||
meat_type = /obj/item/reagent_containers/food/snacks/ant
|
meat_type = /obj/item/reagent_containers/food/snacks/tyrant
|
||||||
|
|
||||||
tame_items = list(/obj/item/reagent_containers/food/snacks/crabmeat = 20)
|
tame_items = list(/obj/item/reagent_containers/food/snacks/crabmeat = 20)
|
||||||
|
|
||||||
@@ -53,7 +53,8 @@
|
|||||||
B.absorbchance = 0
|
B.absorbchance = 0
|
||||||
B.escapechance = 25
|
B.escapechance = 25
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //shockers
|
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze //knock back ant
|
||||||
|
name = "bronze metal ant"
|
||||||
icon_state = "bronze_ant"
|
icon_state = "bronze_ant"
|
||||||
icon_living = "bronze_ant"
|
icon_living = "bronze_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
@@ -62,7 +63,24 @@
|
|||||||
meat_amount = 3
|
meat_amount = 3
|
||||||
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
|
meat_type = /obj/item/reagent_containers/food/snacks/bronzeant
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/copper
|
/mob/living/simple_mob/animal/tyr/mineral_ants/bronze/apply_melee_effects(atom/A)
|
||||||
|
..()
|
||||||
|
|
||||||
|
if(isliving(A) && a_intent == I_HURT)
|
||||||
|
var/mob/living/L = A
|
||||||
|
if(L.mob_size <= MOB_MEDIUM)
|
||||||
|
visible_message(span_danger("\The [src] sends \the [L] flying with the impact!"))
|
||||||
|
playsound(src, "punch", 50, 1)
|
||||||
|
L.Weaken(1)
|
||||||
|
var/throwdir = get_dir(src, L)
|
||||||
|
L.throw_at(get_edge_target_turf(L, throwdir), 3, 1, src)
|
||||||
|
else
|
||||||
|
to_chat(L, span_warning("\The [src] hits you with incredible force, but you remain in place."))
|
||||||
|
visible_message(span_danger("\The [src] hits \the [L] with incredible force, to no visible effect!")) // CHOMPEdit: Visible/audible feedback for *resisting* the slam.
|
||||||
|
playsound(src, "punch", 50, 1) // CHOMPEdit: Visible/audible feedback for *resisting* the slam.
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/tyr/mineral_ants/copper //emp ants
|
||||||
|
name = "copper metal ant"
|
||||||
icon_state = "copper_ant"
|
icon_state = "copper_ant"
|
||||||
icon_living = "copper_ant"
|
icon_living = "copper_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
@@ -71,18 +89,34 @@
|
|||||||
meat_amount = 3
|
meat_amount = 3
|
||||||
meat_type = /obj/item/reagent_containers/food/snacks/copperant
|
meat_type = /obj/item/reagent_containers/food/snacks/copperant
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/agate //shockers
|
/mob/living/simple_mob/animal/tyr/mineral_ants/copper/apply_melee_effects(var/atom/A)
|
||||||
|
if(isliving(A))
|
||||||
|
A.emp_act(4) //The weakest strength of EMP
|
||||||
|
playsound(src, 'sound/weapons/Egloves.ogg', 75, 1)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/tyr/mineral_ants/agate //rushes at you and explodes
|
||||||
|
name = "agate metal ant"
|
||||||
icon_state = "agate_ant"
|
icon_state = "agate_ant"
|
||||||
icon_living = "agate_ant"
|
icon_living = "agate_ant"
|
||||||
|
movement_cooldown = -3
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
/obj/item/stack/material/weathered_agate = 18\
|
/obj/item/stack/material/weathered_agate = 18\
|
||||||
)
|
)
|
||||||
meat_amount = 3
|
meat_amount = 3
|
||||||
meat_type = /obj/item/reagent_containers/food/snacks/agateant
|
meat_type = /obj/item/reagent_containers/food/snacks/agateant
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz
|
special_attack_min_range = 1
|
||||||
|
special_attack_max_range = 2
|
||||||
|
special_attack_cooldown = 10 SECONDS
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/tyr/mineral_ants/agate/do_special_attack(atom/A)
|
||||||
|
explosion(src.loc, 2, 1, 1, 1)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/animal/tyr/mineral_ants/quartz //irl quartz is apparently tough?
|
||||||
|
name = "quartz metal ant"
|
||||||
icon_state = "quartz_ant"
|
icon_state = "quartz_ant"
|
||||||
icon_living = "quartz_ant"
|
icon_living = "quartz_ant"
|
||||||
|
armor = list(melee = 60, bullet = 50, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
/obj/item/stack/material/quartz = 18\
|
/obj/item/stack/material/quartz = 18\
|
||||||
)
|
)
|
||||||
@@ -90,6 +124,8 @@
|
|||||||
meat_type = /obj/item/reagent_containers/food/snacks/quartzant
|
meat_type = /obj/item/reagent_containers/food/snacks/quartzant
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
/mob/living/simple_mob/animal/tyr/mineral_ants/painite
|
||||||
|
name = "painite metal ant"
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||||
icon_state = "painite_ant"
|
icon_state = "painite_ant"
|
||||||
icon_living = "painite_ant"
|
icon_living = "painite_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
@@ -99,7 +135,7 @@
|
|||||||
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
|
meat_type = /obj/item/reagent_containers/food/snacks/painiteant
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond
|
/mob/living/simple_mob/animal/tyr/mineral_ants/diamond
|
||||||
name = " cyan metal ant"
|
name = "diamond metal ant"
|
||||||
icon_state = "diamond_ant"
|
icon_state = "diamond_ant"
|
||||||
icon_living = "diamond_ant"
|
icon_living = "diamond_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
@@ -115,14 +151,17 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium
|
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium
|
||||||
name = "lime metal ant"
|
name = "glowing metal ant"
|
||||||
icon_state = "rad_ant"
|
icon_state = "rad_ant"
|
||||||
icon_living = "rad_ant"
|
icon_living = "rad_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
/obj/item/stack/material/uranium = 18\
|
/obj/item/stack/material/uranium = 18\
|
||||||
)
|
)
|
||||||
|
/mob/living/simple_mob/animal/tyr/mineral_ants/uranium/do_special_attack(atom/A)
|
||||||
|
SSradiation.radiate(src, 15)
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium
|
/mob/living/simple_mob/animal/tyr/mineral_ants/tritium
|
||||||
|
name = "ritium ant"
|
||||||
icon_state = "tritium_ant"
|
icon_state = "tritium_ant"
|
||||||
icon_living = "tritium_ant"
|
icon_living = "tritium_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
@@ -130,6 +169,7 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
/mob/living/simple_mob/animal/tyr/mineral_ants/builder
|
/mob/living/simple_mob/animal/tyr/mineral_ants/builder
|
||||||
|
name = "concrete ant"
|
||||||
icon_state = "builder_ant"
|
icon_state = "builder_ant"
|
||||||
icon_living = "builder_ant"
|
icon_living = "builder_ant"
|
||||||
butchery_loot = list(\
|
butchery_loot = list(\
|
||||||
|
|||||||
@@ -843,4 +843,107 @@
|
|||||||
bullet_heck(target, -4, 7)
|
bullet_heck(target, -4, 7)
|
||||||
attackcycle = next_cycle
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/bomb_lines(atom/A, var/next_cycle)
|
||||||
|
if(!A)
|
||||||
|
return
|
||||||
|
var/list/potential_targets = ai_holder.list_targets()
|
||||||
|
for(var/atom/entry in potential_targets)
|
||||||
|
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
|
||||||
|
potential_targets -= entry
|
||||||
|
if(potential_targets.len)
|
||||||
|
var/iteration = clamp(potential_targets.len, 1, 3)
|
||||||
|
for(var/i = 0, i < iteration, i++)
|
||||||
|
if(!(potential_targets.len))
|
||||||
|
break
|
||||||
|
var/mob/target = pick(potential_targets)
|
||||||
|
potential_targets -= target
|
||||||
|
spawn_lines(target, next_cycle)
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/spawn_lines(atom/target, var/next_cycle)
|
||||||
|
var/alignment = rand(1,2) // 1 for vertical, 2 for horizontal
|
||||||
|
var/list/line_range = list()
|
||||||
|
var/turf/T = get_turf(target)
|
||||||
|
line_range += T
|
||||||
|
for(var/i = 1, i <= 7, i++)
|
||||||
|
switch(alignment)
|
||||||
|
if(1)
|
||||||
|
if(T.x-i > 0)
|
||||||
|
line_range += locate(T.x-i, T.y-i, T.z)
|
||||||
|
if(T.x+i <= world.maxx)
|
||||||
|
line_range += locate(T.x+i, T.y+i, T.z)
|
||||||
|
if(T.y-i > 0)
|
||||||
|
line_range += locate(T.x+i, T.y-i, T.z)
|
||||||
|
if(T.y+i <= world.maxy)
|
||||||
|
line_range += locate(T.x-i, T.y+i, T.z)
|
||||||
|
if(2)
|
||||||
|
if(T.x-i > 0)
|
||||||
|
line_range += locate(T.x-i, T.y, T.z)
|
||||||
|
if(T.x+i <= world.maxx)
|
||||||
|
line_range += locate(T.x+i, T.y, T.z)
|
||||||
|
if(T.y-i > 0)
|
||||||
|
line_range += locate(T.x, T.y-i, T.z)
|
||||||
|
if(T.y+i <= world.maxy)
|
||||||
|
line_range += locate(T.x, T.y+i, T.z)
|
||||||
|
for(var/turf/dropspot in line_range)
|
||||||
|
new artidrop(dropspot)
|
||||||
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/bomb_chaos(atom/A, var/next_cycle)
|
||||||
|
if(!A)
|
||||||
|
return
|
||||||
|
var/list/potential_targets = ai_holder.list_targets()
|
||||||
|
for(var/atom/entry in potential_targets)
|
||||||
|
if(istype(entry, /mob/living/simple_mob/humanoid/eclipse))
|
||||||
|
potential_targets -= entry
|
||||||
|
if(potential_targets.len)
|
||||||
|
var/iteration = clamp(potential_targets.len, 1, 3)
|
||||||
|
for(var/i = 0, i < iteration, i++)
|
||||||
|
if(!(potential_targets.len))
|
||||||
|
break
|
||||||
|
var/mob/target = pick(potential_targets)
|
||||||
|
potential_targets -= target
|
||||||
|
chaos_lines(target, next_cycle)
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/chaos_lines(atom/target, var/next_cycle)
|
||||||
|
var/alignment = rand(1,2)
|
||||||
|
var/list/line_range = list()
|
||||||
|
var/turf/T = get_turf(target)
|
||||||
|
line_range += T
|
||||||
|
for(var/i = 1, i <= 7, i++)
|
||||||
|
switch(alignment)
|
||||||
|
if(1)
|
||||||
|
if(T.x-i > 0)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x+zed, T.y-i, T.z)
|
||||||
|
if(T.x+i <= world.maxx)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x+zed, T.y+i, T.z)
|
||||||
|
if(T.y-i > 0)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x+i, T.y+zed, T.z)
|
||||||
|
if(T.y+i <= world.maxy)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x-i, T.y+zed, T.z)
|
||||||
|
if(2)
|
||||||
|
if(T.x-i > 0)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x-i, T.y-zed, T.z)
|
||||||
|
if(T.x+i <= world.maxx)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x+i, T.y-zed, T.z)
|
||||||
|
if(T.y-i > 0)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x-zed, T.y-i, T.z)
|
||||||
|
if(T.y+i <= world.maxy)
|
||||||
|
var/zed = rand(1,3)
|
||||||
|
line_range += locate(T.x-zed, T.y+i, T.z)
|
||||||
|
for(var/turf/dropspot in line_range)
|
||||||
|
new artidrop(dropspot)
|
||||||
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -147,12 +147,12 @@
|
|||||||
/obj/item/hand_tele = 10,
|
/obj/item/hand_tele = 10,
|
||||||
/obj/item/bone/skull = 100
|
/obj/item/bone/skull = 100
|
||||||
)
|
)
|
||||||
var/fullshield = 4
|
var/fullshield = 140
|
||||||
var/shieldrage = 4
|
var/shieldrage = 3
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/head/tyrlead/bullet_act(obj/item/projectile/P) //Projectiles will be absorbed by the shield. Note to self do funky sprite. 4 hits to remove
|
/mob/living/simple_mob/humanoid/eclipse/head/tyrlead/bullet_act(obj/item/projectile/P) //Projectiles will be absorbed by the shield. Note to self do funky sprite. 4 hits to remove
|
||||||
if(fullshield > 0)
|
if(fullshield > 0)
|
||||||
fullshield--
|
fullshield -= P.damage
|
||||||
if(P == /obj/item/projectile/ion)
|
if(P == /obj/item/projectile/ion)
|
||||||
fullshield = 0
|
fullshield = 0
|
||||||
visible_message(span_boldwarning(span_orange("[P] breaks the shield!!.")))
|
visible_message(span_boldwarning(span_orange("[P] breaks the shield!!.")))
|
||||||
@@ -166,8 +166,8 @@
|
|||||||
..()
|
..()
|
||||||
shieldrage--
|
shieldrage--
|
||||||
if(shieldrage == 0)
|
if(shieldrage == 0)
|
||||||
shieldrage = 4
|
shieldrage = 3
|
||||||
fullshield = 4
|
fullshield = 140
|
||||||
visible_message(span_boldwarning(span_orange("The shield reactivates!!.")))
|
visible_message(span_boldwarning(span_orange("The shield reactivates!!.")))
|
||||||
icon_state = "overseer_shield"
|
icon_state = "overseer_shield"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/mob/living/simple_mob/mechanical/mecha/eclipse
|
/mob/living/simple_mob/mechanical/mecha/eclipse
|
||||||
health = 875
|
health = 600
|
||||||
maxHealth = 875
|
maxHealth = 600
|
||||||
faction = FACTION_ECLIPSE
|
faction = FACTION_ECLIPSE
|
||||||
icon = 'modular_chomp/icons/mob/eclipse.dmi'
|
icon = 'modular_chomp/icons/mob/eclipse.dmi'
|
||||||
has_repair_droid = TRUE
|
has_repair_droid = TRUE
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
movement_cooldown = 10
|
movement_cooldown = 10
|
||||||
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
|
var/specialattackprojectile = /obj/item/projectile/energy/phase/bolt
|
||||||
var/attackcycle = 1
|
var/attackcycle = 1
|
||||||
|
var/artidrop = /obj/effect/artillery_attack
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/handle_special()
|
/mob/living/simple_mob/mechanical/mecha/eclipse/handle_special()
|
||||||
if(stat != DEAD)
|
if(stat != DEAD)
|
||||||
@@ -370,8 +371,8 @@
|
|||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/phasetwo //we ain't done yet
|
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/phasetwo //we ain't done yet
|
||||||
name = "Collapsing Janus"
|
name = "Collapsing Janus"
|
||||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 80, bio = 100, rad = 100) //our shielding is gone
|
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 80, bio = 100, rad = 100) //our shielding is gone
|
||||||
health = 425
|
health = 400
|
||||||
maxHealth = 425
|
maxHealth = 400
|
||||||
desc = "The mecha is smoking, it's drone and shield is broken, but it's pilot is pushing it further."
|
desc = "The mecha is smoking, it's drone and shield is broken, but it's pilot is pushing it further."
|
||||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
specialattackprojectile = /obj/item/projectile/energy/eclipse/janusjavelin
|
||||||
wreckage = /obj/item/prop/tyrlore/neonjanus
|
wreckage = /obj/item/prop/tyrlore/neonjanus
|
||||||
@@ -431,21 +432,57 @@
|
|||||||
name = "eclipse cryo top"
|
name = "eclipse cryo top"
|
||||||
icon_state = "mecha_top"
|
icon_state = "mecha_top"
|
||||||
icon_living = "mecha_top"
|
icon_living = "mecha_top"
|
||||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 80, bio = 100, rad = 100) //Smol armor to compensate for the gimmick
|
|
||||||
wreckage = /obj/item/melee/energy/sword/top_shield
|
wreckage = /obj/item/melee/energy/sword/top_shield
|
||||||
specialattackprojectile = /obj/item/projectile/energy/eclipse/chillingwind
|
specialattackprojectile = /obj/item/projectile/energy/eclipse/chillingwind
|
||||||
desc = "It appears to be spinning at rapid speeds; enough to deflect projectiles. The air around it feels frigid.."
|
desc = "It appears to be spinning at rapid speeds; enough to deflect projectiles. The air around it feels frigid.."
|
||||||
|
artidrop = /obj/item/material/barbedwire/vopal/active
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/do_special_attack(atom/A)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/do_special_attack(atom/A)
|
||||||
var/rng_cycle
|
var/rng_cycle
|
||||||
if(attackcycle == 1)
|
switch(a_intent)
|
||||||
rng_cycle = rand(1,2)
|
if(I_DISARM) //phase3
|
||||||
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 25), 0.5 SECONDS, TIMER_DELETE_ME)
|
if(attackcycle == 1)
|
||||||
attackcycle = 0
|
rng_cycle = rand(1,3)
|
||||||
else if(attackcycle == 2)
|
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 20), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
rng_cycle = rand(1,2)
|
attackcycle = 0
|
||||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
else if(attackcycle == 2)
|
||||||
attackcycle = 0
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(bomb_chaos), A, rng_cycle), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
else if(attackcycle == 3)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
|
||||||
|
if(I_HURT) //phase1
|
||||||
|
if(attackcycle == 1)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 20, rng_cycle, 20), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
else if(attackcycle == 2)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, rng_cycle), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
else if(attackcycle == 3)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(cross_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
|
||||||
|
if(I_GRAB) // Phase 2
|
||||||
|
if(attackcycle == 1)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(quad_random_firing), A, 20, rng_cycle, 25), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
else if(attackcycle == 2)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(bomb_lines), A, rng_cycle), 2.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
else if(attackcycle == 3)
|
||||||
|
rng_cycle = rand(1,3)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(cross_spin), A, rng_cycle, 15), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/handle_special()
|
/mob/living/simple_mob/mechanical/mecha/eclipse/battle_top/handle_special()
|
||||||
if(stat != DEAD)
|
if(stat != DEAD)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
attackcycle = 0
|
attackcycle = 0
|
||||||
else if(attackcycle == 3)
|
else if(attackcycle == 3)
|
||||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||||
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 4, 25), 1 SECOND, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(dual_spin), A, 4, 20), 1 SECOND, TIMER_DELETE_ME)
|
||||||
attackcycle = 0
|
attackcycle = 0
|
||||||
else if(attackcycle == 4)
|
else if(attackcycle == 4)
|
||||||
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
specialattackprojectile = /obj/item/projectile/energy/spikeenergy_ball/boss
|
||||||
|
|||||||
Reference in New Issue
Block a user