diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index c4e671cdbfe..6a8c9b793b6 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -51,3 +51,32 @@ /datum/status_effect/freon/watcher duration = 8 can_melt = FALSE + +/datum/status_effect/hypernob_protection + id = "hypernob_protection" + duration = 10 SECONDS + alert_type = /atom/movable/screen/alert/status_effect/hypernob_protection + +/datum/status_effect/hypernob_protection/on_creation(mob/living/new_owner, duration = 10 SECONDS) + src.duration = duration + return ..() + +/atom/movable/screen/alert/status_effect/hypernob_protection + name = "Hyper-Noblium Protection" + desc = "The Hyper-Noblium around your body is protecting it from self-combustion and fires, but you feel sluggish..." + icon_state = "hypernob_protection" + +/datum/status_effect/hypernob_protection/on_apply() + if(!ishuman(owner)) + CRASH("[type] status effect added to non-human owner: [owner ? owner.type : "null owner"]") + var/mob/living/carbon/human/human_owner = owner + human_owner.add_movespeed_modifier(/datum/movespeed_modifier/reagent/hypernoblium) //small slowdown as a tradeoff + ADD_TRAIT(human_owner, TRAIT_NOFIRE, type) + return TRUE + +/datum/status_effect/hypernob_protection/on_remove() + if(!ishuman(owner)) + stack_trace("[type] status effect being removed from non-human owner: [owner ? owner.type : "null owner"]") + var/mob/living/carbon/human/human_owner = owner + human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/hypernoblium) + REMOVE_TRAIT(human_owner, TRAIT_NOFIRE, type) diff --git a/code/modules/movespeed/modifiers/reagent.dm b/code/modules/movespeed/modifiers/reagent.dm index 1d4898e662b..6700854b11d 100644 --- a/code/modules/movespeed/modifiers/reagent.dm +++ b/code/modules/movespeed/modifiers/reagent.dm @@ -31,6 +31,9 @@ /datum/movespeed_modifier/reagent/halon multiplicative_slowdown = 1.8 +/datum/movespeed_modifier/reagent/hypernoblium + multiplicative_slowdown = 0.5 + /datum/movespeed_modifier/reagent/lenturi multiplicative_slowdown = 1.5 diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 2fca5fdfd98..88f402183c3 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1506,15 +1506,10 @@ taste_description = "searingly cold" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE -/datum/reagent/hypernoblium/on_mob_metabolize(mob/living/L) - . = ..() - if(isplasmaman(L)) - ADD_TRAIT(L, TRAIT_NOFIRE, type) - -/datum/reagent/hypernoblium/on_mob_end_metabolize(mob/living/L) - if(isplasmaman(L)) - REMOVE_TRAIT(L, TRAIT_NOFIRE, type) - return ..() +/datum/reagent/hypernoblium/on_mob_life(mob/living/carbon/M, delta_time, times_fired) + if(isplasmaman(M)) + M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/hypernob_protection) + ..() /datum/reagent/healium name = "Healium" diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index 8ba79a5ff85..e880e02a819 100755 Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ