Uranium Golems: Punch to Irradiate, not Exist to Irradiate (#55602)

* Uranium golems no longer irradiate by mere presence. Instead, they irradiate by punching people. Also some statistic changes including durability from brute damage, punch damage, etc. Also uranium golems can wear engineering clothes

* Adds radiation emissions from being struck as a uranium golem
This commit is contained in:
necromanceranne
2020-12-25 23:54:04 -08:00
committed by GitHub
parent 399562d59b
commit 505dc8f057
4 changed files with 42 additions and 10 deletions
@@ -186,6 +186,7 @@
equip_delay_other = 40
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
lace_time = 8 SECONDS
species_exception = list(/datum/species/golem/uranium)
/obj/item/clothing/shoes/workboots/mining
name = "mining boots"
@@ -634,6 +634,7 @@
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 20, FIRE = 30, ACID = 45)
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
species_exception = list(/datum/species/golem/uranium)
/obj/item/clothing/head/hooded/winterhood/engineering
icon_state = "winterhood_engineer"
@@ -47,6 +47,7 @@
inhand_icon_state = "engi_suit"
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, RAD = 10, FIRE = 60, ACID = 20)
resistance_flags = NONE
species_exception = list(/datum/species/golem/uranium)
/obj/item/clothing/under/rank/engineering/engineer/hazard
name = "engineer's hazard jumpsuit"
@@ -312,27 +312,56 @@
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
return 1
//Radioactive
//Radioactive puncher, hits for burn but only as hard as human, slightly more durable against brute but less against everything else
/datum/species/golem/uranium
name = "Uranium Golem"
id = "uranium golem"
fixed_mut_color = "7f0"
meat = /obj/item/stack/ore/uranium
info_text = "As an <span class='danger'>Uranium Golem</span>, you emit radiation pulses every once in a while. It won't harm fellow golems, but organic lifeforms will be affected."
info_text = "As an <span class='danger'>Uranium Golem</span>, your very touch burns and irradiates organic lifeforms. You don't hit as hard as most golems, but you are far more durable against blunt force trauma."
attack_verb = "burn"
attack_sound = 'sound/weapons/sear.ogg'
attack_type = BURN
var/last_event = 0
var/active = null
armor = 40
brutemod = 0.5
punchdamagelow = 1
punchdamagehigh = 10
punchstunthreshold = 9
prefix = "Uranium"
special_names = list("Oxide", "Rod", "Meltdown", "235")
COOLDOWN_DECLARE(radiation_emission_cooldown)
/datum/species/golem/uranium/spec_life(mob/living/carbon/human/H)
if(!active)
if(world.time > last_event+30)
active = 1
radiation_pulse(H, 50)
last_event = world.time
active = null
/datum/species/golem/uranium/proc/radiation_emission(mob/living/carbon/human/H)
if(!COOLDOWN_FINISHED(src, radiation_emission_cooldown))
return
else
radiation_pulse(H, 50)
COOLDOWN_START(src, radiation_emission_cooldown, 2 SECONDS)
/datum/species/golem/uranium/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target)
. = ..()
var/obj/item/bodypart/affecting = target.get_bodypart(ran_zone(user.zone_selected))
var/radiation_block = target.run_armor_check(affecting, RAD)
///standard damage roll for use in determining how much you irradiate per punch
var/attacker_irradiate_value = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh)
target.apply_effect(attacker_irradiate_value*5, EFFECT_IRRADIATE, radiation_block)
/datum/species/golem/uranium/spec_attack_hand(mob/living/carbon/human/M, mob/living/carbon/human/H, datum/martial_art/attacker_style)
..()
if(COOLDOWN_FINISHED(src, radiation_emission_cooldown) && M != H && M.a_intent != INTENT_HELP)
radiation_emission(H)
/datum/species/golem/uranium/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
..()
if(COOLDOWN_FINISHED(src, radiation_emission_cooldown) && user != H)
radiation_emission(H)
/datum/species/golem/uranium/on_hit(obj/projectile/P, mob/living/carbon/human/H)
..()
if(COOLDOWN_FINISHED(src, radiation_emission_cooldown))
radiation_emission(H)
//Immune to physical bullets and resistant to brute, but very vulnerable to burn damage. Dusts on death.
/datum/species/golem/sand