mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Another Tyr Update (#9924)
This commit is contained in:
@@ -116,8 +116,9 @@
|
|||||||
|
|
||||||
//Eclipse mecha
|
//Eclipse mecha
|
||||||
/obj/structure/loot_pile/mecha/odd_gygax
|
/obj/structure/loot_pile/mecha/odd_gygax
|
||||||
name = "\improper Whisker wreckage"
|
name = "\improper mecha wreckage"
|
||||||
icon_state = "gygax-broken"
|
icon = 'modular_chomp/icons/mob/eclipse.dmi'
|
||||||
|
icon_state = "orb-broken"
|
||||||
density = TRUE
|
density = TRUE
|
||||||
anchored = FALSE
|
anchored = FALSE
|
||||||
|
|
||||||
@@ -147,8 +148,9 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
/obj/structure/loot_pile/mecha/odd_ripley
|
/obj/structure/loot_pile/mecha/odd_ripley
|
||||||
name = "\improper ripley wreckage"
|
name = "\improper mecha wreckage"
|
||||||
icon_state = "titan-broken"
|
icon = 'modular_chomp/icons/mob/eclipse.dmi'
|
||||||
|
icon_state = "mine-broken"
|
||||||
density = TRUE
|
density = TRUE
|
||||||
anchored = FALSE
|
anchored = FALSE
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,12 @@
|
|||||||
name = "protective vest"
|
name = "protective vest"
|
||||||
icon = 'icons/obj/clothing/spacesuits_ch.dmi'
|
icon = 'icons/obj/clothing/spacesuits_ch.dmi'
|
||||||
desc = "Light weight but oddly protective plating."
|
desc = "Light weight but oddly protective plating."
|
||||||
var/shieldhealth = 200
|
var/shieldhealth = 75
|
||||||
var/cooldown = null // world.time of when this was last triggered.
|
var/cooldown = null // world.time of when this was last triggered.
|
||||||
var/cooldown_duration = 2 MINUTES
|
var/cooldown_duration = 2 MINUTES
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||||
if(shieldhealth < 0)
|
if(shieldhealth < 75)
|
||||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||||
shieldhealth -= damage
|
shieldhealth -= damage
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
shieldhealth = 200
|
shieldhealth = 75
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||||
..()
|
..()
|
||||||
@@ -59,12 +59,12 @@
|
|||||||
icon = 'icons/obj/clothing/hats_ch.dmi'
|
icon = 'icons/obj/clothing/hats_ch.dmi'
|
||||||
desc = "A protective dome for your head."
|
desc = "A protective dome for your head."
|
||||||
|
|
||||||
var/shieldhealth = 200
|
var/shieldhealth = 75
|
||||||
var/cooldown = null // world.time of when this was last triggered.
|
var/cooldown = null // world.time of when this was last triggered.
|
||||||
var/cooldown_duration = 2 MINUTES
|
var/cooldown_duration = 2 MINUTES
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||||
if(shieldhealth < 0)
|
if(shieldhealth < 75)
|
||||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||||
shieldhealth -= damage
|
shieldhealth -= damage
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
shieldhealth = 200
|
shieldhealth = 75
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||||
..()
|
..()
|
||||||
@@ -98,12 +98,12 @@
|
|||||||
name = "gloves"
|
name = "gloves"
|
||||||
icon = 'icons/obj/clothing/gloves_ch.dmi'
|
icon = 'icons/obj/clothing/gloves_ch.dmi'
|
||||||
desc = "Gloves created with alien tech"
|
desc = "Gloves created with alien tech"
|
||||||
var/shieldhealth = 200
|
var/shieldhealth = 75
|
||||||
var/cooldown = null // world.time of when this was last triggered.
|
var/cooldown = null // world.time of when this was last triggered.
|
||||||
var/cooldown_duration = 2 MINUTES
|
var/cooldown_duration = 2 MINUTES
|
||||||
|
|
||||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||||
if(shieldhealth < 0)
|
if(shieldhealth < 75)
|
||||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||||
shieldhealth -= damage
|
shieldhealth -= damage
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
|
|
||||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
shieldhealth = 200
|
shieldhealth = 75
|
||||||
|
|
||||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||||
..()
|
..()
|
||||||
@@ -137,12 +137,12 @@
|
|||||||
name = "boots"
|
name = "boots"
|
||||||
icon = 'icons/obj/clothing/shoes_ch.dmi'
|
icon = 'icons/obj/clothing/shoes_ch.dmi'
|
||||||
desc = "A pair of grabby boots"
|
desc = "A pair of grabby boots"
|
||||||
var/shieldhealth = 200
|
var/shieldhealth = 75
|
||||||
var/cooldown = null // world.time of when this was last triggered.
|
var/cooldown = null // world.time of when this was last triggered.
|
||||||
var/cooldown_duration = 2 MINUTES
|
var/cooldown_duration = 2 MINUTES
|
||||||
|
|
||||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||||
if(shieldhealth < 0)
|
if(shieldhealth < 75)
|
||||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||||
shieldhealth -= damage
|
shieldhealth -= damage
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
@@ -151,7 +151,7 @@
|
|||||||
|
|
||||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||||
cooldown = world.time + cooldown_duration
|
cooldown = world.time + cooldown_duration
|
||||||
shieldhealth = 200
|
shieldhealth = 75
|
||||||
|
|
||||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -189,6 +189,10 @@
|
|||||||
pass_flags = PASSTABLE
|
pass_flags = PASSTABLE
|
||||||
movement_cooldown = 1
|
movement_cooldown = 1
|
||||||
|
|
||||||
|
needs_reload = TRUE
|
||||||
|
reload_max = 1
|
||||||
|
reload_time = 2 SECONDS
|
||||||
|
|
||||||
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
|
ai_holder_type = /datum/ai_holder/hostile/ranged/robust
|
||||||
projectiletype = /obj/item/projectile/arc/spore
|
projectiletype = /obj/item/projectile/arc/spore
|
||||||
|
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
desc = "You shouldn't be seeing this. But don't use lasers or energy weapons"
|
desc = "You shouldn't be seeing this. But don't use lasers or energy weapons"
|
||||||
health = 100
|
health = 100
|
||||||
maxHealth = 100
|
maxHealth = 100
|
||||||
projectiletype = /obj/item/projectile/energy/mob/midlaser
|
projectiletype = /obj/item/projectile/energy/eclipse
|
||||||
|
|
||||||
armor = list(melee = -100, bullet = -100, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns.
|
armor = list(melee = -100, bullet = -100, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //Solar members are nigh immune to burns.
|
||||||
armor_soak = list(melee = 0, bullet = 0, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0)
|
armor_soak = list(melee = 0, bullet = 0, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0)
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
icon_state = "eclipse_snipertesh"
|
icon_state = "eclipse_snipertesh"
|
||||||
icon_living = "eclipse_snipertesh"
|
icon_living = "eclipse_snipertesh"
|
||||||
|
|
||||||
projectiletype = /obj/item/projectile/scatter/laser
|
projectiletype = /obj/item/projectile/bullet/tyrshotburst
|
||||||
|
|
||||||
projectile_accuracy = 100
|
projectile_accuracy = 100
|
||||||
|
|
||||||
@@ -294,6 +294,7 @@
|
|||||||
special_attack_min_range = 1
|
special_attack_min_range = 1
|
||||||
special_attack_max_range = 7
|
special_attack_max_range = 7
|
||||||
|
|
||||||
|
projectiletype = /obj/item/projectile/energy/eclipse
|
||||||
specialattackprojectile = /obj/item/projectile/energy/flash
|
specialattackprojectile = /obj/item/projectile/energy/flash
|
||||||
|
|
||||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||||
@@ -343,7 +344,7 @@
|
|||||||
name = "Solar Eclipse Technician"
|
name = "Solar Eclipse Technician"
|
||||||
desc = "A strange being wearing a burn resistaint coat."
|
desc = "A strange being wearing a burn resistaint coat."
|
||||||
icon_state = "eclipse_nuke"
|
icon_state = "eclipse_nuke"
|
||||||
projectiletype = /obj/item/projectile/bullet/magnetic/flechette/small
|
projectiletype = /obj/item/projectile/energy/lightingspark
|
||||||
special_attack_cooldown = 15 SECONDS
|
special_attack_cooldown = 15 SECONDS
|
||||||
special_attack_min_range = 1
|
special_attack_min_range = 1
|
||||||
special_attack_max_range = 9
|
special_attack_max_range = 9
|
||||||
@@ -377,7 +378,7 @@
|
|||||||
special_attack_cooldown = 5 SECONDS
|
special_attack_cooldown = 5 SECONDS
|
||||||
special_attack_min_range = 1
|
special_attack_min_range = 1
|
||||||
special_attack_max_range = 7
|
special_attack_max_range = 7
|
||||||
projectiletype = /obj/item/projectile/energy/mob/drone
|
projectiletype = /obj/item/projectile/energy/eclipse
|
||||||
icon_state = "guardian"
|
icon_state = "guardian"
|
||||||
icon_living = "guardian"
|
icon_living = "guardian"
|
||||||
reload_max = 4
|
reload_max = 4
|
||||||
@@ -440,6 +441,7 @@
|
|||||||
desc = "You shouldn't be seeing this, but don't use melee weapons or bullets."
|
desc = "You shouldn't be seeing this, but don't use melee weapons or bullets."
|
||||||
health = 100
|
health = 100
|
||||||
maxHealth = 100
|
maxHealth = 100
|
||||||
|
projectiletype = /obj/item/projectile/bullet/crystaline
|
||||||
armor = list(melee = 40, bullet = 40, laser = -100, energy = -100, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns.
|
armor = list(melee = 40, bullet = 40, laser = -100, energy = -100, bomb = 50, bio = 100, rad = 100) //Lunar members are nigh immune to burns.
|
||||||
armor_soak = list(melee = 20, bullet = 20, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP
|
armor_soak = list(melee = 20, bullet = 20, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //15 because every melee weapon has dumb amount of AP
|
||||||
|
|
||||||
@@ -462,7 +464,7 @@
|
|||||||
movement_cooldown = -1
|
movement_cooldown = -1
|
||||||
|
|
||||||
|
|
||||||
projectiletype = /obj/item/projectile/scatter/shotgun
|
projectiletype = /obj/item/projectile/bullet/crystalineburst
|
||||||
reload_max = 1
|
reload_max = 1
|
||||||
reload_time = 2.5 SECONDS
|
reload_time = 2.5 SECONDS
|
||||||
ranged_attack_delay = 1.5 SECONDS
|
ranged_attack_delay = 1.5 SECONDS
|
||||||
@@ -573,7 +575,6 @@
|
|||||||
icon_state = "eclipse_silver"
|
icon_state = "eclipse_silver"
|
||||||
icon_living = "eclipse_silver"
|
icon_living = "eclipse_silver"
|
||||||
|
|
||||||
projectiletype = /obj/item/projectile/bullet/pistol/medium
|
|
||||||
special_attack_cooldown = 30 SECONDS
|
special_attack_cooldown = 30 SECONDS
|
||||||
special_attack_min_range = 1
|
special_attack_min_range = 1
|
||||||
special_attack_max_range = 7
|
special_attack_max_range = 7
|
||||||
@@ -718,6 +719,8 @@
|
|||||||
reload_max = 1
|
reload_max = 1
|
||||||
reload_time = 1.5 SECOND
|
reload_time = 1.5 SECOND
|
||||||
|
|
||||||
|
specialattackprojectile = /obj/item/projectile/energy/mechahack
|
||||||
|
|
||||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||||
/obj/item/bone/skull = 100,
|
/obj/item/bone/skull = 100,
|
||||||
/obj/item/disposable_teleporter = 15
|
/obj/item/disposable_teleporter = 15
|
||||||
@@ -725,17 +728,14 @@
|
|||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/lunar/abyssdiver/do_special_attack(atom/A)
|
/mob/living/simple_mob/humanoid/eclipse/lunar/abyssdiver/do_special_attack(atom/A)
|
||||||
visible_message(span_danger("\The [src] begins to mess with a wrist mounted device."))
|
visible_message(span_danger("\The [src] begins to mess with a wrist mounted device."))
|
||||||
if(isrobot(A))
|
if(istype(A, /obj/mecha))
|
||||||
addtimer(CALLBACK(src, PROC_REF(remote_shutdown), A), 3 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(special_projectile), A), 3 SECONDS, TIMER_DELETE_ME)
|
||||||
else if(istype(A, /obj/mecha))
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(remote_eject), A), 3 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/humanoid/eclipse/lunar/servicesquish
|
/mob/living/simple_mob/humanoid/eclipse/lunar/servicesquish
|
||||||
name = "Lunar Eclipse Service"
|
name = "Lunar Eclipse Service"
|
||||||
desc = "A strange being wearing a blunt resistaint coat."
|
desc = "A strange being wearing a blunt resistaint coat."
|
||||||
icon_state = "miner"
|
icon_state = "miner"
|
||||||
icon_living = "miner"
|
icon_living = "miner"
|
||||||
projectiletype = /obj/item/projectile/bullet/pistol/hp
|
|
||||||
|
|
||||||
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
loot_list = list(/obj/item/slime_extract/sepia = 1,
|
||||||
/obj/item/slime_extract/ruby = 100,
|
/obj/item/slime_extract/ruby = 100,
|
||||||
@@ -751,7 +751,7 @@
|
|||||||
for(var/mob/living/L in view(src, 4))
|
for(var/mob/living/L in view(src, 4))
|
||||||
if(L.stat == DEAD || !IIsAlly(L))
|
if(L.stat == DEAD || !IIsAlly(L))
|
||||||
continue
|
continue
|
||||||
L.add_modifier(/datum/modifier/technomancer/repel_missiles, null, src)
|
L.add_modifier(/datum/modifier/technomancer/repel_missiles, 4, src)
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/ward/monitor/eclipse
|
/mob/living/simple_mob/mechanical/ward/monitor/eclipse
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
special_attack_cooldown = 10 //This things attack soley via speical attacks hence basically no cooldown
|
special_attack_cooldown = 10 //This things attack soley via speical attacks hence basically no cooldown
|
||||||
grab_resist = 100
|
grab_resist = 100
|
||||||
shock_resist = -0.2
|
shock_resist = -0.2
|
||||||
|
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
|
||||||
|
|
||||||
@@ -244,7 +245,8 @@
|
|||||||
/datum/ai_holder/simple_mob/intentional/three_phases
|
/datum/ai_holder/simple_mob/intentional/three_phases
|
||||||
use_astar = TRUE
|
use_astar = TRUE
|
||||||
wander = FALSE
|
wander = FALSE
|
||||||
var/closest_desired_distance = 4
|
respect_confusion = FALSE
|
||||||
|
var/closest_desired_distance = 6
|
||||||
|
|
||||||
/datum/ai_holder/simple_mob/intentional/three_phases/on_engagement(atom/A)
|
/datum/ai_holder/simple_mob/intentional/three_phases/on_engagement(atom/A)
|
||||||
if(get_dist(holder, A) > closest_desired_distance)
|
if(get_dist(holder, A) > closest_desired_distance)
|
||||||
@@ -265,14 +267,13 @@
|
|||||||
//High defense at the start that falters the more the battle goes on
|
//High defense at the start that falters the more the battle goes on
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit //Melts folks with lasers
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit //Melts folks with lasers
|
||||||
name = "Eclipse Expirmental Anti-Infantary Unit"
|
name = "Eclipse Expirmental Anti-Infantary Unit"
|
||||||
specialattackprojectile = /obj/item/projectile/beam/midlaser
|
specialattackprojectile = /obj/item/projectile/energy/eclipse/lorge
|
||||||
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
|
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 90, bio = 100, rad = 100)
|
||||||
damage_threshold = 0 //So the wierd armor mechanic works
|
damage_threshold = 0 //So the wierd armor mechanic works
|
||||||
icon_state = "orb"
|
icon_state = "orb"
|
||||||
wreckage = /obj/structure/loot_pile/mecha/odd_gygax
|
wreckage = /obj/structure/loot_pile/mecha/odd_gygax
|
||||||
special_attack_cooldown = 320
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/updatehealth()
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/updatehealth()
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
@@ -282,71 +283,64 @@
|
|||||||
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100)
|
armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 100, rad = 100)
|
||||||
else if (health < maxHealth*0.9)
|
else if (health < maxHealth*0.9)
|
||||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 60, bio = 100, rad = 100)
|
armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 60, bio = 100, rad = 100)
|
||||||
|
*/
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/do_special_attack(atom/A)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/do_special_attack(atom/A)
|
||||||
. = TRUE // So we don't fire a bolt as well.
|
. = TRUE // So we don't fire a bolt as well.
|
||||||
switch(a_intent)
|
switch(a_intent)
|
||||||
if(I_DISARM) // Phase 3
|
if(I_DISARM) // Phase 3
|
||||||
phase_three(A)
|
if(attackcycle == 1)
|
||||||
|
phasethree_cycleone(A)
|
||||||
|
else if(attackcycle == 2)
|
||||||
|
phasethree_cycletwo(A)
|
||||||
|
else if(attackcycle == 3)
|
||||||
|
phasethree_cyclethree(A)
|
||||||
if(I_HURT) // Phase 1
|
if(I_HURT) // Phase 1
|
||||||
phase_one(A)
|
if(attackcycle == 1)
|
||||||
|
phaseone_cycleone(A)
|
||||||
|
else if(attackcycle == 2)
|
||||||
|
phaseone_cycletwo(A)
|
||||||
if(I_GRAB) // Phase 2
|
if(I_GRAB) // Phase 2
|
||||||
phase_two(A)
|
if(attackcycle == 1)
|
||||||
|
phasetwo_cycleone(A)
|
||||||
|
else if(attackcycle == 2)
|
||||||
|
phasetwo_cycletwo(A)
|
||||||
|
else if(attackcycle == 3)
|
||||||
|
phasetwo_cyclethree(A)
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_one(atom/target) //Basic pattern whilst the defense is high
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phaseone_cycleone(atom/target)
|
||||||
addtimer(CALLBACK(src, PROC_REF(atkonea), target), 1.5 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_one), target, 1), 1 SECOND, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonea(atom/target)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phaseone_cycletwo(atom/target)
|
||||||
if(!target)
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_one_r), target, 2), 1 SECOND, TIMER_DELETE_ME)
|
||||||
return
|
attackcycle = 0
|
||||||
upfour_leftfour(target)
|
|
||||||
upfour_rightfour(target)
|
|
||||||
downfour_rightfour(target)
|
|
||||||
downfour_leftfour(target)
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(atkoneb), target), 1.5 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkoneb(atom/target)
|
//phase 2
|
||||||
if(!target)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cycleone(atom/target)
|
||||||
return
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_one), target, 2), 1 SECOND, TIMER_DELETE_ME)
|
||||||
upfour(target)
|
attackcycle = 0
|
||||||
downfour(target)
|
|
||||||
rightfour(target)
|
|
||||||
leftfour(target)
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(atkonec), target), 1.5 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonec(atom/target)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cycletwo(atom/target)
|
||||||
if(!target)
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_one_r), target, 3), 1 SECOND, TIMER_DELETE_ME)
|
||||||
return
|
attackcycle = 0
|
||||||
upfour_leftfour(target)
|
|
||||||
upfour_rightfour(target)
|
|
||||||
downfour_rightfour(target)
|
|
||||||
downfour_leftfour(target)
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(atkoned), target), 1.5 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkoned(atom/target)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasetwo_cyclethree(atom/target)
|
||||||
if(!target)
|
addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 1), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
return
|
attackcycle = 0
|
||||||
upfour(target)
|
|
||||||
downfour(target)
|
|
||||||
rightfour(target)
|
|
||||||
leftfour(target)
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(atkonee), target), 1.5 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/atkonee(atom/target)
|
//phase 3
|
||||||
if(!target)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cycleone(atom/target)
|
||||||
return
|
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 1 SECONDS, TIMER_DELETE_ME)
|
||||||
upfour_leftfour(target)
|
attackcycle = 0
|
||||||
upfour_rightfour(target)
|
|
||||||
downfour_rightfour(target)
|
|
||||||
downfour_leftfour(target)
|
|
||||||
upfour(target)
|
|
||||||
downfour(target)
|
|
||||||
rightfour(target)
|
|
||||||
leftfour(target)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_two(atom/target) //SPIIIIN TO WIN
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cycletwo(atom/target)
|
||||||
visible_message(span_danger("The [src] is preparing a deadly attack!"))
|
addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 3), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 1), 2 SECONDS, TIMER_DELETE_ME)
|
attackcycle = 0
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phasethree_cyclethree(atom/target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 12, 1, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
attackcycle = 0
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/spin_to_win(atom/target, var/next_cycle)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/spin_to_win(atom/target, var/next_cycle)
|
||||||
if(!target)
|
if(!target)
|
||||||
@@ -502,10 +496,6 @@
|
|||||||
downfour_leftfour(target)
|
downfour_leftfour(target)
|
||||||
attackcycle = next_cycle
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/antipersonal_unit/proc/phase_three(atom/target) //The strangest pattern but a last stand at 0 defense.
|
|
||||||
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/random_firing(atom/target, var/amount, var/next_cycle, var/fire_delay)
|
||||||
var/deathdir = rand(1,32)
|
var/deathdir = rand(1,32)
|
||||||
if(!target)
|
if(!target)
|
||||||
@@ -584,7 +574,7 @@
|
|||||||
//Nigh unbreakable defenses except during certian attack phases.
|
//Nigh unbreakable defenses except during certian attack phases.
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/mining_guard //Explosive death
|
/mob/living/simple_mob/mechanical/mecha/eclipse/mining_guard //Explosive death
|
||||||
name = "Eclipse Expirmental Mining Mecha"
|
name = "Eclipse Expirmental Mining Mecha"
|
||||||
specialattackprojectile = /obj/item/projectile/energy/excavate/weak
|
specialattackprojectile = /obj/item/projectile/energy/eclipse/lorgealien
|
||||||
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
|
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
|
||||||
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
|
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
|
||||||
icon_state = "shielded_mining_mecha"
|
icon_state = "shielded_mining_mecha"
|
||||||
@@ -622,7 +612,7 @@
|
|||||||
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
|
armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100)
|
||||||
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
|
armor_soak = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 0, bio = 0, rad = 0)
|
||||||
icon_state = "shielded_mining_mecha"
|
icon_state = "shielded_mining_mecha"
|
||||||
addtimer(CALLBACK(src, PROC_REF(summon_drones), target, 3, 2, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(zone_control_one), target, 2), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
attackcycle = 0
|
attackcycle = 0
|
||||||
|
|
||||||
|
|
||||||
@@ -847,7 +837,7 @@
|
|||||||
name = "gravity well"
|
name = "gravity well"
|
||||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||||
icon_state = "gravity_well"
|
icon_state = "gravity_well"
|
||||||
damage = 70
|
damage = 60
|
||||||
armor_penetration = 30
|
armor_penetration = 30
|
||||||
speed = 15 //Note to self, may need to slow down even further.
|
speed = 15 //Note to self, may need to slow down even further.
|
||||||
|
|
||||||
@@ -855,18 +845,14 @@
|
|||||||
name = "burning plasma"
|
name = "burning plasma"
|
||||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||||
icon_state = "plasma"
|
icon_state = "plasma"
|
||||||
damage = 70
|
damage = 60
|
||||||
armor_penetration = 30
|
armor_penetration = 30
|
||||||
speed = 15
|
speed = 15
|
||||||
|
|
||||||
/obj/item/projectile/energy/infernosphere/Move()
|
/obj/item/projectile/energy/infernosphere/Move()
|
||||||
. = ..()
|
. = ..()
|
||||||
var/turf/T = get_turf(src)
|
if(prob(20))
|
||||||
if(prob(10))
|
new /obj/fire(src.loc)
|
||||||
if(T)
|
|
||||||
new /obj/effect/decal/cleanable/liquid_fuel(T,0.2,1)
|
|
||||||
T.hotspot_expose(500, 50, 1)
|
|
||||||
T.create_fire(700)
|
|
||||||
|
|
||||||
/obj/item/projectile/bullet/eclipsejanus
|
/obj/item/projectile/bullet/eclipsejanus
|
||||||
use_submunitions = 1
|
use_submunitions = 1
|
||||||
@@ -1047,7 +1033,6 @@
|
|||||||
|
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
|
||||||
//Jank code?
|
//Jank code?
|
||||||
/obj/item/projectile/energy/spintowin
|
/obj/item/projectile/energy/spintowin
|
||||||
name = "burning plasma"
|
name = "burning plasma"
|
||||||
@@ -1055,12 +1040,13 @@
|
|||||||
icon_state = "plasma"
|
icon_state = "plasma"
|
||||||
damage = 50
|
damage = 50
|
||||||
speed = 15
|
speed = 15
|
||||||
|
ignore_source_check = TRUE
|
||||||
|
trajectory_ignore_forcemove = TRUE
|
||||||
var/spinvaule = 120
|
var/spinvaule = 120
|
||||||
|
|
||||||
/obj/item/projectile/energy/spintowin/Move()
|
/obj/item/projectile/energy/spintowin/Move()
|
||||||
. = ..()
|
. = ..()
|
||||||
yo ++
|
Angle += spinvaule
|
||||||
xo ++
|
|
||||||
|
|
||||||
/obj/item/gun/energy/curse_tyrshotgun/debuggun
|
/obj/item/gun/energy/curse_tyrshotgun/debuggun
|
||||||
projectile_type = /obj/item/projectile/energy/spintowin
|
projectile_type = /obj/item/projectile/energy/spintowin
|
||||||
@@ -1089,4 +1075,316 @@
|
|||||||
special_attack_cooldown = 320
|
special_attack_cooldown = 320
|
||||||
|
|
||||||
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
|
/mob/living/simple_mob/mechanical/mecha/eclipse/do_special_attack(atom/A)
|
||||||
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
addtimer(CALLBACK(src, PROC_REF(random_firing), A, 12, 3, 0.5 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
|
||||||
|
//Revamped special attacks
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_one(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour(target)
|
||||||
|
downfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_two), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_two(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_leftone(target)
|
||||||
|
downfour_rightone(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_three), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_three(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_lefttwo(target)
|
||||||
|
downfour_righttwo(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_four), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_four(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_leftthree(target)
|
||||||
|
downfour_rightthree(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_five), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_five(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_leftfour(target)
|
||||||
|
downfour_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_six), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_six(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upthree_leftfour(target)
|
||||||
|
downthree_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_seven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_seven(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
uptwo_leftfour(target)
|
||||||
|
downtwo_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_eight), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eight(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upone_leftfour(target)
|
||||||
|
downone_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_nine), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_nine(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
leftfour(target)
|
||||||
|
rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_ten), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_ten(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downone_leftfour(target)
|
||||||
|
upone_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_eleven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eleven(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downtwo_leftfour(target)
|
||||||
|
uptwo_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_twelve), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_twelve(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downthree_leftfour(target)
|
||||||
|
upthree_rightfour(target)
|
||||||
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_one_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour(target)
|
||||||
|
downfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_two_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_two_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_rightone(target)
|
||||||
|
downfour_leftone(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_three_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_three_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_righttwo(target)
|
||||||
|
downfour_lefttwo(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_four_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_four_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_rightthree(target)
|
||||||
|
downfour_leftthree(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_five_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_five_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upfour_rightfour(target)
|
||||||
|
downfour_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_six_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_six_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upthree_rightfour(target)
|
||||||
|
downthree_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_seven_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_seven_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
uptwo_rightfour(target)
|
||||||
|
downtwo_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_eight_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eight_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
upone_rightfour(target)
|
||||||
|
downone_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_nine_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_nine_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_ten_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_ten_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downone_rightfour(target)
|
||||||
|
upone_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_eleven_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_eleven_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downtwo_rightfour(target)
|
||||||
|
uptwo_leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(dualsweep_twelve_r), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/dualsweep_twelve_r(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
downthree_rightfour(target)
|
||||||
|
upthree_leftfour(target)
|
||||||
|
attackcycle = next_cycle
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_one(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_two), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_two(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour(target)
|
||||||
|
downfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_three), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_three(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_four), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_four(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour_leftone(target)
|
||||||
|
upfour_rightone(target)
|
||||||
|
downfour_leftone(target)
|
||||||
|
downfour_rightone(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_five), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_five(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_six), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_six(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour_lefttwo(target)
|
||||||
|
upfour_righttwo(target)
|
||||||
|
downfour_lefttwo(target)
|
||||||
|
downfour_righttwo(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_seven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_seven(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_eight), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_eight(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour_leftthree(target)
|
||||||
|
upfour_rightthree(target)
|
||||||
|
downfour_leftthree(target)
|
||||||
|
downfour_rightthree(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_nine), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_nine(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_ten), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_ten(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour_leftthree(target)
|
||||||
|
upfour_rightthree(target)
|
||||||
|
downfour_leftthree(target)
|
||||||
|
downfour_rightthree(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_eleven), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_eleven(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_twelve), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_twelve(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upfour_leftfour(target)
|
||||||
|
upfour_rightfour(target)
|
||||||
|
downfour_leftfour(target)
|
||||||
|
downfour_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_thirteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_thirteen(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_fourteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_fourteen(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
upthree_leftfour(target)
|
||||||
|
upthree_rightfour(target)
|
||||||
|
downthree_leftfour(target)
|
||||||
|
downthree_rightfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_fifteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_fifteen(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(zone_control_sixteen), target, next_cycle), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/zone_control_sixteen(atom/target, var/next_cycle)
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
rightfour(target)
|
||||||
|
leftfour(target)
|
||||||
|
uptwo_leftfour(target)
|
||||||
|
uptwo_rightfour(target)
|
||||||
|
downtwo_leftfour(target)
|
||||||
|
downtwo_rightfour(target)
|
||||||
|
attackcycle = next_cycle
|
||||||
@@ -188,3 +188,82 @@
|
|||||||
submunition_spread_min = 200
|
submunition_spread_min = 200
|
||||||
submunitions = list(/obj/item/projectile/energy/redlighting = 3)
|
submunitions = list(/obj/item/projectile/energy/redlighting = 3)
|
||||||
hud_state = "laser_sniper"
|
hud_state = "laser_sniper"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/mechahack
|
||||||
|
name = "remote hack"
|
||||||
|
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
|
||||||
|
icon_state = "databreach"
|
||||||
|
nodamage = 1
|
||||||
|
irradiate = 3
|
||||||
|
speed = 1 //a bit faster due to the source having a 3 second wind up
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/mechahack/on_hit(var/atom/target)
|
||||||
|
. = ..()
|
||||||
|
if(istype(target, /obj/mecha))
|
||||||
|
remote_eject(target)
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/mechahack/proc/remote_eject(obj/mecha/M)
|
||||||
|
if(!M)
|
||||||
|
return
|
||||||
|
visible_message(span_critical("\The [M] is remotly hacked and ejects [M.occupant]!"))
|
||||||
|
M.go_out()
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/lightingspark
|
||||||
|
name = "lighting spark"
|
||||||
|
icon_state = "spark"
|
||||||
|
nodamage = 1
|
||||||
|
damage_type = HALLOSS
|
||||||
|
speed = 2
|
||||||
|
var/power = 35 //How hard it will hit for with electrocute_act(), decreases with each bounce.
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/lightingspark/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
|
||||||
|
//First we shock the guy we just hit.
|
||||||
|
if(ishuman(target_mob))
|
||||||
|
var/mob/living/carbon/human/H = target_mob
|
||||||
|
var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO))
|
||||||
|
H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected, 0)
|
||||||
|
else
|
||||||
|
target_mob.electrocute_act(power, src, 0.75, BP_TORSO)
|
||||||
|
|
||||||
|
/obj/item/projectile/bullet/crystaline
|
||||||
|
name = "crystal bullet"
|
||||||
|
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
|
||||||
|
icon_state = "crystal"
|
||||||
|
damage = 30
|
||||||
|
armor_penetration = 20
|
||||||
|
embed_chance = 0
|
||||||
|
speed = 2
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/eclipse
|
||||||
|
name = "experimental laser"
|
||||||
|
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
|
||||||
|
icon_state = "laser"
|
||||||
|
check_armour = "laser"
|
||||||
|
damage = 30
|
||||||
|
armor_penetration = 20
|
||||||
|
speed = 2
|
||||||
|
|
||||||
|
//The normal laser is easier to guard, but can chain screw ups easier
|
||||||
|
/obj/item/projectile/energy/eclipse/lorge
|
||||||
|
damage = 50
|
||||||
|
armor_penetration = 20
|
||||||
|
eyeblur = 3
|
||||||
|
icon_state = "mega_laser"
|
||||||
|
speed = 15
|
||||||
|
|
||||||
|
/obj/item/projectile/energy/eclipse/lorgealien
|
||||||
|
damage = 50
|
||||||
|
armor_penetration = 40
|
||||||
|
icon_state = "mega_laser_p"
|
||||||
|
speed = 15
|
||||||
|
|
||||||
|
/obj/item/projectile/bullet/crystalineburst
|
||||||
|
use_submunitions = 1
|
||||||
|
range = 0
|
||||||
|
embed_chance = 0
|
||||||
|
spread_submunition_damage = FALSE
|
||||||
|
submunition_spread_max = 120
|
||||||
|
submunition_spread_min = 60
|
||||||
|
submunitions = list(/obj/item/projectile/bullet/crystaline = 5)
|
||||||
|
|||||||
@@ -30,7 +30,8 @@
|
|||||||
icon_state = "shotgun_blast"
|
icon_state = "shotgun_blast"
|
||||||
damage = 50
|
damage = 50
|
||||||
range = 5
|
range = 5
|
||||||
check_armour = "laser"
|
check_armour = "bullet"
|
||||||
|
damage_type = BRUTE
|
||||||
|
|
||||||
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
|
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
|
||||||
if(isliving(target))
|
if(isliving(target))
|
||||||
@@ -51,7 +52,9 @@
|
|||||||
/obj/item/projectile/beam/precursor_tyr
|
/obj/item/projectile/beam/precursor_tyr
|
||||||
name = "laser"
|
name = "laser"
|
||||||
icon_state = "laser"
|
icon_state = "laser"
|
||||||
damage = 50
|
damage = 20
|
||||||
|
armor_penetration = 30
|
||||||
|
penetrating = 20
|
||||||
damage_type = BURN
|
damage_type = BURN
|
||||||
check_armour = "laser"
|
check_armour = "laser"
|
||||||
range = 5
|
range = 5
|
||||||
@@ -60,6 +63,15 @@
|
|||||||
hud_state = "laser"
|
hud_state = "laser"
|
||||||
hud_state_empty = "battery_empty"
|
hud_state_empty = "battery_empty"
|
||||||
|
|
||||||
|
/obj/item/projectile/bullet/tyrshotburst
|
||||||
|
use_submunitions = 1
|
||||||
|
range = 0
|
||||||
|
embed_chance = 0
|
||||||
|
spread_submunition_damage = FALSE
|
||||||
|
submunition_spread_max = 120
|
||||||
|
submunition_spread_min = 60
|
||||||
|
submunitions = list(/obj/item/projectile/beam/precursor_tyr = 5)
|
||||||
|
|
||||||
/obj/item/gun/energy/energyballchain
|
/obj/item/gun/energy/energyballchain
|
||||||
name = "remade prototype weapon"
|
name = "remade prototype weapon"
|
||||||
desc = "A weapon created from strange alien junk and blueprints"
|
desc = "A weapon created from strange alien junk and blueprints"
|
||||||
@@ -103,6 +115,11 @@
|
|||||||
recoil_mode = 0
|
recoil_mode = 0
|
||||||
charge_meter = 1
|
charge_meter = 1
|
||||||
|
|
||||||
|
firemodes = list(
|
||||||
|
list(mode_name="explosive", projectile_type=/obj/item/projectile/energy/wp_shotgun, charge_cost = 500),
|
||||||
|
list(mode_name="spray", projectile_type=/obj/item/projectile/bullet/tyrshotburst, charge_cost = 750),
|
||||||
|
)
|
||||||
|
|
||||||
move_delay = 0
|
move_delay = 0
|
||||||
one_handed_penalty = 50
|
one_handed_penalty = 50
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.4 KiB |
Reference in New Issue
Block a user