mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Tyr Mini-Patch (#9824)
This commit is contained in:
173
modular_chomp/code/modules/clothing/spacesuits/rig/tyr.dm
Normal file
173
modular_chomp/code/modules/clothing/spacesuits/rig/tyr.dm
Normal file
@@ -0,0 +1,173 @@
|
||||
/obj/item/rig/ch/tyrprecursor
|
||||
name = "alien hardsuit control module"
|
||||
desc = "A orange hardsuit gleaming with energy and alien metals."
|
||||
suit_type = "tyrprecursor hardsuit"
|
||||
icon = 'modular_chomp/icons/obj/rig_modules_ch.dmi'
|
||||
icon_state = "tyrprecursor_rig"
|
||||
armor = list(melee = 20, bullet = 20, laser = 20, energy = 20, bomb = 90, bio = 100, rad = 10)
|
||||
slowdown = 0
|
||||
|
||||
chest_type = /obj/item/clothing/suit/space/rig/ch/tyrprecursor
|
||||
helm_type = /obj/item/clothing/head/helmet/space/rig/ch/precursor
|
||||
glove_type = /obj/item/clothing/gloves/gauntlets/rig/ch/precursor
|
||||
boot_type = /obj/item/clothing/shoes/magboots/rig/ch/precursor
|
||||
|
||||
req_access = list()
|
||||
req_one_access = list()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor
|
||||
name = "protective vest"
|
||||
icon = 'icons/obj/clothing/spacesuits_ch.dmi'
|
||||
desc = "Light weight but oddly protective plating."
|
||||
var/shieldhealth = 200
|
||||
var/cooldown = null // world.time of when this was last triggered.
|
||||
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")
|
||||
if(shieldhealth < 0)
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
shieldhealth -= damage
|
||||
cooldown = world.time + cooldown_duration
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||
cooldown = world.time + cooldown_duration
|
||||
shieldhealth = 200
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(istype(H) && H.head == src && H.is_sentient())
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/dropped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ch/tyrprecursor/process()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
if(world.time >= cooldown && L.is_sentient() && shieldhealth < 1)
|
||||
activate_ability(L)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor
|
||||
name = "helmet"
|
||||
icon = 'icons/obj/clothing/hats_ch.dmi'
|
||||
desc = "A protective dome for your head."
|
||||
|
||||
var/shieldhealth = 200
|
||||
var/cooldown = null // world.time of when this was last triggered.
|
||||
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")
|
||||
if(shieldhealth < 0)
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
shieldhealth -= damage
|
||||
cooldown = world.time + cooldown_duration
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||
cooldown = world.time + cooldown_duration
|
||||
shieldhealth = 200
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(istype(H) && H.head == src && H.is_sentient())
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/dropped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ch/tyrprecursor/process()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
if(world.time >= cooldown && L.is_sentient() && shieldhealth < 1)
|
||||
activate_ability(L)
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor
|
||||
name = "gloves"
|
||||
icon = 'icons/obj/clothing/gloves_ch.dmi'
|
||||
desc = "Gloves created with alien tech"
|
||||
var/shieldhealth = 200
|
||||
var/cooldown = null // world.time of when this was last triggered.
|
||||
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")
|
||||
if(shieldhealth < 0)
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
shieldhealth -= damage
|
||||
cooldown = world.time + cooldown_duration
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||
cooldown = world.time + cooldown_duration
|
||||
shieldhealth = 200
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(istype(H) && H.head == src && H.is_sentient())
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/dropped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/ch/tyrprecursor/process()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
if(world.time >= cooldown && L.is_sentient() && shieldhealth < 1)
|
||||
activate_ability(L)
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor
|
||||
name = "boots"
|
||||
icon = 'icons/obj/clothing/shoes_ch.dmi'
|
||||
desc = "A pair of grabby boots"
|
||||
var/shieldhealth = 200
|
||||
var/cooldown = null // world.time of when this was last triggered.
|
||||
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")
|
||||
if(shieldhealth < 0)
|
||||
user.visible_message(span_danger("\The [src] completely absorbs [attack_text]!"))
|
||||
shieldhealth -= damage
|
||||
cooldown = world.time + cooldown_duration
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/proc/activate_ability(var/mob/living/wearer)
|
||||
cooldown = world.time + cooldown_duration
|
||||
shieldhealth = 200
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/equipped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(istype(H) && H.head == src && H.is_sentient())
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/dropped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/ch/tyrprecursor/process()
|
||||
if(isliving(loc))
|
||||
var/mob/living/L = loc
|
||||
if(world.time >= cooldown && L.is_sentient() && shieldhealth < 1)
|
||||
activate_ability(L)
|
||||
@@ -839,7 +839,7 @@
|
||||
name = "Eclipse Expirmental Janus"
|
||||
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 80, bio = 100, rad = 100)
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
pilot_type = /mob/living/simple_mob/humanoid/merc/ranged
|
||||
pilot_type = /mob/living/simple_mob/humanoid/eclipse/head/tyrlead
|
||||
icon_state = "eclipse_janus"
|
||||
attackcycle = 1
|
||||
|
||||
@@ -946,7 +946,7 @@
|
||||
|
||||
//Phase three 2 wierd patterns, and 1 strange attack.
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasethree_cycleone(atom/target)
|
||||
specialattackprojectile = /obj/item/projectile/energy/infernosphere
|
||||
specialattackprojectile = /obj/item/projectile/bullet/eclipsejanus
|
||||
addtimer(CALLBACK(src, PROC_REF(spin_to_win), target, 2), 2 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
@@ -956,7 +956,7 @@
|
||||
attackcycle = 0
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/darkmatter_assualt/proc/phasethree_cyclethree(atom/target) //eight spinning death beams
|
||||
specialattackprojectile = /obj/item/projectile/energy/darkspike
|
||||
specialattackprojectile = /obj/item/projectile/bullet/eclipsejanus
|
||||
addtimer(CALLBACK(src, PROC_REF(random_firing), target, 20, 1, 0.2 SECONDS), 0.5 SECONDS, TIMER_DELETE_ME)
|
||||
attackcycle = 0
|
||||
|
||||
@@ -1045,4 +1045,48 @@
|
||||
if(ranged_attack_delay)
|
||||
ranged_post_animation(A)
|
||||
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
|
||||
//Jank code?
|
||||
/obj/item/projectile/energy/spintowin
|
||||
name = "burning plasma"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "plasma"
|
||||
damage = 50
|
||||
speed = 15
|
||||
var/spinvaule = 120
|
||||
|
||||
/obj/item/projectile/energy/spintowin/Move()
|
||||
. = ..()
|
||||
yo ++
|
||||
xo ++
|
||||
|
||||
/obj/item/gun/energy/curse_tyrshotgun/debuggun
|
||||
projectile_type = /obj/item/projectile/energy/spintowin
|
||||
|
||||
/obj/item/projectile/energy/randospeed
|
||||
name = "burning plasma"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "plasma"
|
||||
damage = 50
|
||||
speed = 15
|
||||
var/spinvaule = 3
|
||||
|
||||
/obj/item/projectile/energy/randospeed/Move()
|
||||
. = ..()
|
||||
if(prob(50))
|
||||
speed += spinvaule
|
||||
else
|
||||
speed -= spinvaule
|
||||
|
||||
/mob/living/simple_mob/mechanical/mecha/eclipse/eventplaceholder //So I can use the random fire BH for one time event mobs
|
||||
name = "Expirmental Mecha Unit"
|
||||
specialattackprojectile = /obj/item/projectile/beam/midlaser
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 40, bio = 100, rad = 100)
|
||||
icon_state = "orb"
|
||||
wreckage = /obj/structure/loot_pile/mecha/odd_gygax
|
||||
special_attack_cooldown = 320
|
||||
|
||||
/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)
|
||||
@@ -29,7 +29,7 @@
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "shotgun_blast"
|
||||
damage = 50
|
||||
range = 4
|
||||
range = 5
|
||||
check_armour = "laser"
|
||||
|
||||
/obj/item/projectile/energy/wp_shotgun/on_hit(var/atom/movable/target, var/blocked = 0)
|
||||
@@ -44,14 +44,14 @@
|
||||
name = "laser blast"
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/tyr.dmi'
|
||||
icon_state = "blaster_blast"
|
||||
damage = 40
|
||||
damage = 60
|
||||
range = 5
|
||||
check_armour = "laser"
|
||||
|
||||
/obj/item/projectile/beam/precursor_tyr
|
||||
name = "laser"
|
||||
icon_state = "laser"
|
||||
damage = 30
|
||||
damage = 50
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
range = 5
|
||||
|
||||
Reference in New Issue
Block a user