Convert all traits given by status effects to use TRAIT_STATUS_EFFECT(id) (#89291)

## About The Pull Request

This makes (almost?) all traits given by status effects use
`TRAIT_STATUS_EFFECT(id)` as their source, rather than the previous mix
of `id`, `type`, `REF(src)`, or some bespoke thing.

## Why It's Good For The Game

Consistency is good.

## Changelog

No user-facing changes
This commit is contained in:
Lucy
2025-02-01 15:21:44 -05:00
committed by GitHub
parent 90eccb203e
commit 851c5a5df9
29 changed files with 90 additions and 93 deletions
-5
View File
@@ -40,8 +40,6 @@
///A trait given by a held item
#define HELD_ITEM_TRAIT "held-item-trait"
#define ABSTRACT_ITEM_TRAIT "abstract-item"
/// A trait given by any status effect
#define STATUS_EFFECT_TRAIT "status-effect"
/// Trait from light debugging
#define LIGHT_DEBUG_TRAIT "light-debug"
@@ -124,7 +122,6 @@
#define MEGAFAUNA_TRAIT "megafauna"
#define CLOWN_NUKE_TRAIT "clown-nuke"
#define STICKY_MOUSTACHE_TRAIT "sticky-moustache"
#define CHAINSAW_FRENZY_TRAIT "chainsaw-frenzy"
#define CHRONO_GUN_TRAIT "chrono-gun"
#define REVERSE_BEAR_TRAP_TRAIT "reverse-bear-trap"
#define CURSED_MASK_TRAIT "cursed-mask"
@@ -211,8 +208,6 @@
#define BEAUTY_ELEMENT_TRAIT "beauty_element"
#define MOOD_DATUM_TRAIT "mood_datum"
#define DRONE_SHY_TRAIT "drone_shy"
/// Trait given by stabilized light pink extracts
#define STABILIZED_LIGHT_PINK_EXTRACT_TRAIT "stabilized_light_pink"
/// Trait given by adamantine extracts
#define ADAMANTINE_EXTRACT_TRAIT "adamantine_extract"
/// Given by the multiple_lives component to the previous body of the mob upon death.
+2 -2
View File
@@ -86,7 +86,7 @@
bonus_active = TRUE
// Add traits
if(length(bonus_traits))
owner.add_traits(bonus_traits, REF(src))
owner.add_traits(bonus_traits, TRAIT_STATUS_EFFECT(id))
// Add biotype
if(owner.mob_biotypes & bonus_biotype)
@@ -113,7 +113,7 @@
// Remove traits
if(length(bonus_traits))
owner.remove_traits(bonus_traits, REF(src))
owner.remove_traits(bonus_traits, TRAIT_STATUS_EFFECT(id))
// Remove biotype (if added)
if(biotype_added)
owner.mob_biotypes &= ~bonus_biotype
+5 -5
View File
@@ -428,7 +428,7 @@
if(iscarbon(owner))
chainsaw = new(get_turf(owner))
ADD_TRAIT(chainsaw, TRAIT_NODROP, CHAINSAW_FRENZY_TRAIT)
ADD_TRAIT(chainsaw, TRAIT_NODROP, TRAIT_STATUS_EFFECT(id))
owner.put_in_hands(chainsaw, forced = TRUE)
chainsaw.attack_self(owner)
owner.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 25)
@@ -559,7 +559,7 @@
owner.AddElement(/datum/element/simple_flying)
owner.add_stun_absorption(source = id, priority = 4)
owner.add_movespeed_mod_immunities(id, /datum/movespeed_modifier/damage_slowdown)
ADD_TRAIT(owner, TRAIT_FREE_HYPERSPACE_MOVEMENT, id)
ADD_TRAIT(owner, TRAIT_FREE_HYPERSPACE_MOVEMENT, TRAIT_STATUS_EFFECT(id))
owner.playsound_local(get_turf(owner), 'sound/effects/chemistry/ahaha.ogg', vol = 100, vary = TRUE, use_reverb = TRUE)
return TRUE
@@ -577,7 +577,7 @@
owner.RemoveElement(/datum/element/simple_flying)
owner.remove_stun_absorption(id)
owner.remove_movespeed_mod_immunities(id, /datum/movespeed_modifier/damage_slowdown)
REMOVE_TRAIT(owner, TRAIT_FREE_HYPERSPACE_MOVEMENT, id)
REMOVE_TRAIT(owner, TRAIT_FREE_HYPERSPACE_MOVEMENT, TRAIT_STATUS_EFFECT(id))
/// Gives you a brief period of anti-gravity
/datum/status_effect/jump_jet
@@ -600,11 +600,11 @@
alert_type = null
/datum/status_effect/radiation_immunity/on_apply()
ADD_TRAIT(owner, TRAIT_RADIMMUNE, type)
ADD_TRAIT(owner, TRAIT_RADIMMUNE, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/radiation_immunity/on_remove()
REMOVE_TRAIT(owner, TRAIT_RADIMMUNE, type)
REMOVE_TRAIT(owner, TRAIT_RADIMMUNE, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/radiation_immunity/radnebula
alert_type = /atom/movable/screen/alert/status_effect/radiation_immunity
@@ -3,16 +3,16 @@
var/trait = TRAIT_DUMB // You need to override this
/datum/status_effect/food/trait/on_apply()
if(!HAS_TRAIT_FROM(owner, trait, type)) // Check if trait was already applied
ADD_TRAIT(owner, trait, type)
if(!HAS_TRAIT_FROM(owner, trait, TRAIT_STATUS_EFFECT(id))) // Check if trait was already applied
ADD_TRAIT(owner, trait, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/food/trait/be_replaced()
REMOVE_TRAIT(owner, trait, type)
REMOVE_TRAIT(owner, trait, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/food/trait/on_remove()
REMOVE_TRAIT(owner, trait, type)
REMOVE_TRAIT(owner, trait, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/food/trait/shockimmune
@@ -15,7 +15,7 @@
RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(stop_rolling))
RegisterSignal(owner, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(body_position_changed))
ADD_TRAIT(owner, TRAIT_HANDS_BLOCKED, id) // they're kinda busy!
ADD_TRAIT(owner, TRAIT_HANDS_BLOCKED, TRAIT_STATUS_EFFECT(id)) // they're kinda busy!
owner.visible_message(
span_danger("[owner] rolls on the floor, trying to put [owner.p_them()]self out!"),
@@ -31,7 +31,7 @@
/datum/status_effect/stop_drop_roll/on_remove()
UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_LIVING_SET_BODY_POSITION))
REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, id)
REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/stop_drop_roll/tick(seconds_between_ticks)
if(HAS_TRAIT(owner, TRAIT_IMMOBILIZED) || HAS_TRAIT(owner, TRAIT_INCAPACITATED))
@@ -550,13 +550,13 @@
/datum/status_effect/gonbola_pacify/on_apply()
. = ..()
owner.add_traits(list(TRAIT_PACIFISM, TRAIT_MUTE), CLOTHING_TRAIT)
owner.add_mood_event(type, /datum/mood_event/gondola)
owner.add_traits(list(TRAIT_PACIFISM, TRAIT_MUTE), REF(src))
owner.add_mood_event(REF(src), /datum/mood_event/gondola)
to_chat(owner, span_notice("You suddenly feel at peace and feel no need to make any sudden or rash actions..."))
/datum/status_effect/gonbola_pacify/on_remove()
owner.remove_traits(list(TRAIT_PACIFISM, TRAIT_MUTE), CLOTHING_TRAIT)
owner.clear_mood_event(type)
owner.remove_traits(list(TRAIT_PACIFISM, TRAIT_MUTE), REF(src))
owner.clear_mood_event(REF(src))
return ..()
/datum/status_effect/trance
@@ -581,7 +581,7 @@
if(!iscarbon(owner))
return FALSE
RegisterSignal(owner, COMSIG_MOVABLE_HEAR, PROC_REF(hypnotize))
ADD_TRAIT(owner, TRAIT_MUTE, STATUS_EFFECT_TRAIT)
ADD_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
owner.add_client_colour(/datum/client_colour/monochrome/trance)
owner.visible_message("[stun ? span_warning("[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point.") : ""]", \
span_warning(pick("You feel your thoughts slow down...", "You suddenly feel extremely dizzy...", "You feel like you're in the middle of a dream...","You feel incredibly relaxed...")))
@@ -594,7 +594,7 @@
/datum/status_effect/trance/on_remove()
UnregisterSignal(owner, COMSIG_MOVABLE_HEAR)
REMOVE_TRAIT(owner, TRAIT_MUTE, STATUS_EFFECT_TRAIT)
REMOVE_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
owner.remove_status_effect(/datum/status_effect/dizziness)
owner.remove_client_colour(/datum/client_colour/monochrome/trance)
to_chat(owner, span_warning("You snap out of your trance!"))
@@ -978,11 +978,11 @@
icon_state = "convulsing"
/datum/status_effect/discoordinated/on_apply()
ADD_TRAIT(owner, TRAIT_DISCOORDINATED_TOOL_USER, "[type]")
ADD_TRAIT(owner, TRAIT_DISCOORDINATED_TOOL_USER, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/discoordinated/on_remove()
REMOVE_TRAIT(owner, TRAIT_DISCOORDINATED_TOOL_USER, "[type]")
REMOVE_TRAIT(owner, TRAIT_DISCOORDINATED_TOOL_USER, TRAIT_STATUS_EFFECT(id))
return ..()
///Maddly teleports the victim around all of space for 10 seconds
@@ -7,8 +7,8 @@
return ..()
/datum/status_effect/pacify/on_apply()
ADD_TRAIT(owner, TRAIT_PACIFISM, id)
ADD_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/pacify/on_remove()
REMOVE_TRAIT(owner, TRAIT_PACIFISM, id)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
@@ -9,12 +9,12 @@
/datum/status_effect/silenced/on_apply()
RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_silence))
ADD_TRAIT(owner, TRAIT_MUTE, id)
ADD_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/silenced/on_remove()
UnregisterSignal(owner, COMSIG_LIVING_DEATH)
REMOVE_TRAIT(owner, TRAIT_MUTE, id)
REMOVE_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
/// Signal proc that clears any silence we have (self-deletes).
/datum/status_effect/silenced/proc/clear_silence(mob/living/source)
@@ -71,7 +71,7 @@
COMSIG_LIVING_STATUS_STUN,
COMSIG_LIVING_STATUS_IMMOBILIZE), PROC_REF(clear_stun_vulnverability)
)
ADD_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT)
ADD_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, TRAIT_STATUS_EFFECT(id))
vulnverability_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "dazed")
owner.add_overlay(vulnverability_overlay)
return TRUE
@@ -83,7 +83,7 @@
COMSIG_LIVING_STATUS_IMMOBILIZE,
COMSIG_LIVING_DEATH,
))
REMOVE_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT)
REMOVE_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, TRAIT_STATUS_EFFECT(id))
if(vulnverability_overlay)
clear_stun_vulnverability_overlay()
@@ -123,12 +123,12 @@
if(owner.stat == DEAD)
return FALSE
RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_on_death))
ADD_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT)
ADD_TRAIT(owner, TRAIT_NO_SIDE_KICK, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/no_side_kick/on_remove()
UnregisterSignal(owner, list(COMSIG_LIVING_DEATH))
REMOVE_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT)
REMOVE_TRAIT(owner, TRAIT_NO_SIDE_KICK, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/no_side_kick/proc/clear_on_death(mob/living/source)
SIGNAL_HANDLER
@@ -2,10 +2,12 @@
id = "tower_of_babel"
status_type = STATUS_EFFECT_UNIQUE
alert_type = /atom/movable/screen/alert/status_effect/tower_of_babel
var/trait_source = STATUS_EFFECT_TRAIT
var/trait_source
/datum/status_effect/tower_of_babel/on_creation(mob/living/new_owner, duration = 15 SECONDS)
src.duration = duration
if(isnull(trait_source))
trait_source = TRAIT_STATUS_EFFECT(id)
return ..()
/datum/status_effect/tower_of_babel/on_apply()
+2 -2
View File
@@ -72,7 +72,7 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.add_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis) //slows you down
human_owner.add_eye_color(BLOODCULT_EYE, EYE_COLOR_WEED_PRIORITY) //makes cult eyes less obvious
human_owner.add_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type) // impairs motor coordination and dilates blood vessels in eyes
human_owner.add_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), TRAIT_STATUS_EFFECT(id)) // impairs motor coordination and dilates blood vessels in eyes
human_owner.add_mood_event("stoned", /datum/mood_event/stoned) //improves mood
human_owner.sound_environment_override = SOUND_ENVIRONMENT_DRUGGED //not realistic but very immersive
return TRUE
@@ -83,7 +83,7 @@
var/mob/living/carbon/human/human_owner = owner
human_owner.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/cannabis)
human_owner.remove_eye_color(EYE_COLOR_WEED_PRIORITY)
human_owner.remove_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), type)
human_owner.remove_traits(list(TRAIT_CLUMSY, TRAIT_BLOODSHOT_EYES), TRAIT_STATUS_EFFECT(id))
human_owner.clear_mood_event("stoned")
human_owner.sound_environment_override = SOUND_ENVIRONMENT_NONE
+2 -2
View File
@@ -76,7 +76,7 @@
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)
ADD_TRAIT(human_owner, TRAIT_NOFIRE, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/hypernob_protection/on_remove()
@@ -84,4 +84,4 @@
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)
REMOVE_TRAIT(human_owner, TRAIT_NOFIRE, TRAIT_STATUS_EFFECT(id))
+2 -2
View File
@@ -101,11 +101,11 @@
/datum/status_effect/throat_soothed/on_apply()
. = ..()
ADD_TRAIT(owner, TRAIT_SOOTHED_THROAT, "[STATUS_EFFECT_TRAIT]_[id]")
ADD_TRAIT(owner, TRAIT_SOOTHED_THROAT, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/throat_soothed/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_SOOTHED_THROAT, "[STATUS_EFFECT_TRAIT]_[id]")
REMOVE_TRAIT(owner, TRAIT_SOOTHED_THROAT, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/bounty
id = "bounty"
+2 -2
View File
@@ -24,12 +24,12 @@
aura_desc = "dull"
/datum/status_effect/song/antimagic/on_apply()
ADD_TRAIT(owner, TRAIT_ANTIMAGIC, MAGIC_TRAIT)
ADD_TRAIT(owner, TRAIT_ANTIMAGIC, TRAIT_STATUS_EFFECT(id))
playsound(owner, 'sound/items/weapons/fwoosh.ogg', 75, FALSE)
return ..()
/datum/status_effect/song/antimagic/on_remove()
REMOVE_TRAIT(owner, TRAIT_ANTIMAGIC, MAGIC_TRAIT)
REMOVE_TRAIT(owner, TRAIT_ANTIMAGIC, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/song/antimagic/get_examine_text()
@@ -42,7 +42,7 @@
if(!HAS_TRAIT(owner, TRAIT_IS_WET))
apply_debuff()
else
ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src))
ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, TRAIT_STATUS_EFFECT(id))
owner.add_mood_event("fish_organs_bonus", /datum/mood_event/fish_water)
if(HAS_TRAIT(owner, TRAIT_IS_WET) && istype(owner.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL), /obj/item/organ/tail/fish))
add_speed_buff()
@@ -62,7 +62,7 @@
if(!HAS_TRAIT(owner, TRAIT_IS_WET))
remove_debuff()
else
REMOVE_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src))
REMOVE_TRAIT(owner, TRAIT_GRABRESISTANCE, TRAIT_STATUS_EFFECT(id))
owner.clear_mood_event("fish_organs_bonus")
if(ishuman(owner))
var/mob/living/carbon/human/human = owner
@@ -117,7 +117,7 @@
human.physiology.damage_resistance -= 16 //from +8% to -8%
/datum/status_effect/organ_set_bonus/fish/proc/remove_debuff()
ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, REF(src)) //harder to grab when wet.
ADD_TRAIT(owner, TRAIT_GRABRESISTANCE, TRAIT_STATUS_EFFECT(id)) //harder to grab when wet.
owner.remove_movespeed_modifier(/datum/movespeed_modifier/fish_waterless)
owner.add_mood_event("fish_organs_bonus", /datum/mood_event/fish_water)
if(!ishuman(owner))
@@ -21,11 +21,11 @@
return ..()
/datum/status_effect/unholy_determination/on_apply()
owner.add_traits(list(TRAIT_COAGULATING, TRAIT_NOCRITDAMAGE, TRAIT_NOSOFTCRIT), type)
owner.add_traits(list(TRAIT_COAGULATING, TRAIT_NOCRITDAMAGE, TRAIT_NOSOFTCRIT), TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/unholy_determination/on_remove()
owner.remove_traits(list(TRAIT_COAGULATING, TRAIT_NOCRITDAMAGE, TRAIT_NOSOFTCRIT), type)
owner.remove_traits(list(TRAIT_COAGULATING, TRAIT_NOCRITDAMAGE, TRAIT_NOSOFTCRIT), TRAIT_STATUS_EFFECT(id))
/datum/status_effect/unholy_determination/tick(seconds_between_ticks)
// The amount we heal of each damage type per tick. If we're missing legs we heal better because we can't dodge.
@@ -61,7 +61,7 @@
return span_notice("[owner.p_Theyre()] glowing a soft white.")
/datum/status_effect/realignment/on_apply()
owner.add_traits(realignment_traits, id)
owner.add_traits(realignment_traits, TRAIT_STATUS_EFFECT(id))
owner.add_filter(id, 2, list("type" = "outline", "color" = "#d6e3e7", "size" = 2))
var/filter = owner.get_filter(id)
animate(filter, alpha = 127, time = 1 SECONDS, loop = -1)
@@ -69,7 +69,7 @@
return TRUE
/datum/status_effect/realignment/on_remove()
owner.remove_traits(realignment_traits, id)
owner.remove_traits(realignment_traits, TRAIT_STATUS_EFFECT(id))
owner.remove_filter(id)
/datum/status_effect/realignment/tick(seconds_between_ticks)
@@ -141,7 +141,7 @@
animate(cloak_image, alpha = 255, 0.2 SECONDS)
owner.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/everyone, id, cloak_image)
// Add the relevant traits and modifiers
owner.add_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), id)
owner.add_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), TRAIT_STATUS_EFFECT(id))
owner.add_movespeed_modifier(/datum/movespeed_modifier/shadow_cloak)
owner.add_actionspeed_modifier(/datum/actionspeed_modifier/shadow_cloak)
// Register signals to cause effects
@@ -157,7 +157,7 @@
owner.remove_alt_appearance(id)
QDEL_NULL(cloak_image)
// Remove traits and modifiers
owner.remove_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), id)
owner.remove_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), TRAIT_STATUS_EFFECT(id))
owner.remove_movespeed_modifier(/datum/movespeed_modifier/shadow_cloak)
owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/shadow_cloak)
// Clear signals
@@ -122,8 +122,8 @@
alert_type = null
/datum/status_effect/void_conduit/on_apply()
ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type)
ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/void_conduit/on_remove()
REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, type)
REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, TRAIT_STATUS_EFFECT(id))
@@ -56,7 +56,7 @@
owner.apply_status_effect(/datum/status_effect/void_chill, 3)
if(stasis_overlay)
//Free our prisoner
owner.remove_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src))
owner.remove_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), TRAIT_STATUS_EFFECT(id))
owner.forceMove(get_turf(stasis_overlay))
stasis_overlay.forceMove(owner)
owner.vis_contents += stasis_overlay
@@ -71,7 +71,7 @@
/datum/status_effect/void_prison/proc/enter_prison(mob/living/prisoner)
stasis_overlay.forceMove(prisoner.loc)
prisoner.forceMove(stasis_overlay)
prisoner.add_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src))
prisoner.add_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), TRAIT_STATUS_EFFECT(id))
///Makes sure to clear the ref in case the voidball ever suddenly disappears
/datum/status_effect/void_prison/proc/clear_overlay()
@@ -52,12 +52,12 @@
alert_type =/atom/movable/screen/alert/status_effect/duskndawn
/datum/status_effect/duskndawn/on_apply()
ADD_TRAIT(owner, TRAIT_XRAY_VISION, STATUS_EFFECT_TRAIT)
ADD_TRAIT(owner, TRAIT_XRAY_VISION, TRAIT_STATUS_EFFECT(id))
owner.update_sight()
return TRUE
/datum/status_effect/duskndawn/on_remove()
REMOVE_TRAIT(owner, TRAIT_XRAY_VISION, STATUS_EFFECT_TRAIT)
REMOVE_TRAIT(owner, TRAIT_XRAY_VISION, TRAIT_STATUS_EFFECT(id))
owner.update_sight()
// WOUNDED SOLDIER
@@ -215,7 +215,7 @@
if(HAS_TRAIT(source, TRAIT_BEING_BLADE_SHIELDED))
return
ADD_TRAIT(source, TRAIT_BEING_BLADE_SHIELDED, type)
ADD_TRAIT(source, TRAIT_BEING_BLADE_SHIELDED, TRAIT_STATUS_EFFECT(id))
var/obj/effect/floating_blade/to_remove = blades[1]
@@ -228,7 +228,7 @@
qdel(to_remove)
addtimer(TRAIT_CALLBACK_REMOVE(source, TRAIT_BEING_BLADE_SHIELDED, type), 0.1 SECONDS)
addtimer(TRAIT_CALLBACK_REMOVE(source, TRAIT_BEING_BLADE_SHIELDED, TRAIT_STATUS_EFFECT(id)), 0.1 SECONDS)
return SUCCESSFUL_BLOCK
@@ -338,11 +338,11 @@
alert_type = /atom/movable/screen/alert/status_effect/moon_grasp_hide
/datum/status_effect/moon_grasp_hide/on_apply()
owner.add_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), id)
owner.add_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), TRAIT_STATUS_EFFECT(id))
return TRUE
/datum/status_effect/moon_grasp_hide/on_remove()
owner.remove_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), id)
owner.remove_traits(list(TRAIT_UNKNOWN, TRAIT_SILENT_FOOTSTEPS), TRAIT_STATUS_EFFECT(id))
/atom/movable/screen/alert/status_effect/moon_grasp_hide
name = "Blessing of The Moon"
@@ -216,7 +216,7 @@
to_chat(owner, span_hypnophrase(("THE MOON SHOWS YOU THE TRUTH AND THE LIARS WISH TO COVER IT, SLAY THEM ALL!!!</span>")))
owner.balloon_alert(owner, "they lie..THEY ALL LIE!!!")
owner.AdjustUnconscious(7 SECONDS, ignore_canstun = FALSE)
ADD_TRAIT(owner, TRAIT_MUTE, REF(src))
ADD_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
RegisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(update_owner_overlay))
owner.update_appearance(UPDATE_OVERLAYS)
owner.cause_hallucination(/datum/hallucination/delusion/preset/moon, "[id] status effect", duration = duration, affects_us = FALSE, affects_others = TRUE)
@@ -243,7 +243,7 @@
/datum/status_effect/moon_converted/on_remove()
// Span warning and unconscious so they realize they aren't evil anymore
to_chat(owner, span_warning("Your mind is cleared from the effect of the mansus, your alligiences are as they were before"))
REMOVE_TRAIT(owner, TRAIT_MUTE, REF(src))
REMOVE_TRAIT(owner, TRAIT_MUTE, TRAIT_STATUS_EFFECT(id))
owner.AdjustUnconscious(5 SECONDS, ignore_canstun = FALSE)
owner.log_message("[owner] is no longer insane.", LOG_GAME)
UnregisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS)
@@ -60,8 +60,8 @@
human_target.health = new_max_health
on_made_callback?.Invoke(human_target)
ADD_TRAIT(human_target, TRAIT_FAKEDEATH, REF(src))
human_target.become_husk(MAGIC_TRAIT)
ADD_TRAIT(human_target, TRAIT_FAKEDEATH, TRAIT_STATUS_EFFECT(id))
human_target.become_husk(TRAIT_STATUS_EFFECT(id))
human_target.faction |= FACTION_HERETIC
if(human_target.mind)
@@ -89,8 +89,8 @@
human_target.setMaxHealth(initial(human_target.maxHealth))
on_lost_callback?.Invoke(human_target)
REMOVE_TRAIT(human_target, TRAIT_FAKEDEATH, REF(src))
human_target.cure_husk(MAGIC_TRAIT)
REMOVE_TRAIT(human_target, TRAIT_FAKEDEATH, TRAIT_STATUS_EFFECT(id))
human_target.cure_husk(TRAIT_STATUS_EFFECT(id))
human_target.faction -= FACTION_HERETIC
human_target.mind?.remove_antag_datum(/datum/antagonist/heretic_monster)
@@ -256,7 +256,7 @@
. = ..()
if(owner.can_block_magic(MAGIC_RESISTANCE_MIND))
return FALSE
ADD_TRAIT(owner, TRAIT_PACIFISM, id)
ADD_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
owner.emote(pick("giggle", "laugh"))
owner.balloon_alert(owner, "you feel unable to hurt a soul!")
RegisterSignal (owner, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_damaged))
@@ -276,7 +276,7 @@
return
// Removes the trait in here since we don't wanna destroy the mark before its detonated or allow detonation triggers with other weapons
REMOVE_TRAIT(owner, TRAIT_PACIFISM, id)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
owner.balloon_alert(owner, "you feel able to once again strike!")
/datum/status_effect/eldritch/moon/on_effect()
@@ -291,4 +291,4 @@
UnregisterSignal (owner, COMSIG_MOB_APPLY_DAMAGE)
// In case the trait was not removed earlier
REMOVE_TRAIT(owner, TRAIT_PACIFISM, id)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
@@ -33,7 +33,7 @@
owner.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, COLOR_BLUE_LIGHT)
owner.remove_movespeed_modifier(/datum/movespeed_modifier/void_chill)
owner.remove_alt_appearance("heretic_status")
REMOVE_TRAIT(owner, TRAIT_HYPOTHERMIC, REF(src))
REMOVE_TRAIT(owner, TRAIT_HYPOTHERMIC, TRAIT_STATUS_EFFECT(id))
UnregisterSignal(owner, COMSIG_ATOM_UPDATE_OVERLAYS)
/datum/status_effect/void_chill/tick(seconds_between_ticks)
@@ -74,7 +74,7 @@
stacks = max(0, min(stack_limit, stacks + new_stacks))
update_movespeed(stacks)
if(stacks >= 5)
ADD_TRAIT(owner, TRAIT_HYPOTHERMIC, REF(src))
ADD_TRAIT(owner, TRAIT_HYPOTHERMIC, TRAIT_STATUS_EFFECT(id))
///Updates the movespeed of owner based on the amount of stacks of the debuff
/datum/status_effect/void_chill/proc/update_movespeed(stacks)
@@ -39,8 +39,8 @@
/datum/status_effect/void_eatered/on_apply()
. = ..()
ADD_TRAIT(owner, TRAIT_NODEATH, type)
ADD_TRAIT(owner, TRAIT_NODEATH, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/void_eatered/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_NODEATH, type)
REMOVE_TRAIT(owner, TRAIT_NODEATH, TRAIT_STATUS_EFFECT(id))
@@ -96,7 +96,7 @@
. = ..()
if (!.)
return FALSE
owner.add_traits(list(TRAIT_OVERWATCHED, TRAIT_OVERWATCH_IMMUNE), TRAIT_STATUS_EFFECT(id))
owner.add_traits(list(TRAIT_OVERWATCHED, TRAIT_OVERWATCH_IMMUNE), REF(src))
owner.do_alert_animation()
owner.Immobilize(0.25 SECONDS) // Just long enough that they don't trigger it by mistake
owner.playsound_local(owner, 'sound/machines/chime.ogg', 50, TRUE)
@@ -109,7 +109,7 @@
/datum/status_effect/overwatch/on_remove()
UnregisterSignal(owner, forbidden_actions + list(COMSIG_QDELETING, COMSIG_LIVING_DEATH))
QDEL_NULL(link)
owner.remove_traits(list(TRAIT_OVERWATCHED, TRAIT_OVERWATCH_IMMUNE), TRAIT_STATUS_EFFECT(id))
owner.remove_traits(list(TRAIT_OVERWATCHED, TRAIT_OVERWATCH_IMMUNE), REF(src))
if (!QDELETED(owner))
owner.apply_status_effect(/datum/status_effect/overwatch_immune)
return ..()
@@ -247,12 +247,12 @@
duration = 100
/datum/status_effect/firecookie/on_apply()
ADD_TRAIT(owner, TRAIT_RESISTCOLD,"firecookie")
ADD_TRAIT(owner, TRAIT_RESISTCOLD, TRAIT_STATUS_EFFECT(id))
owner.adjust_bodytemperature(110)
return ..()
/datum/status_effect/firecookie/on_remove()
REMOVE_TRAIT(owner, TRAIT_RESISTCOLD,"firecookie")
REMOVE_TRAIT(owner, TRAIT_RESISTCOLD, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/watercookie
id = "watercookie"
@@ -261,7 +261,7 @@
duration = 100
/datum/status_effect/watercookie/on_apply()
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER,"watercookie")
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/watercookie/tick(seconds_between_ticks)
@@ -269,7 +269,7 @@
T.MakeSlippery(TURF_WET_WATER, min_wet_time = 10, wet_time_to_add = 5)
/datum/status_effect/watercookie/on_remove()
REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER,"watercookie")
REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/metalcookie
id = "metalcookie"
@@ -314,11 +314,11 @@
duration = 600
/datum/status_effect/toxincookie/on_apply()
ADD_TRAIT(owner, TRAIT_TOXINLOVER,"toxincookie")
ADD_TRAIT(owner, TRAIT_TOXINLOVER, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/toxincookie/on_remove()
REMOVE_TRAIT(owner, TRAIT_TOXINLOVER,"toxincookie")
REMOVE_TRAIT(owner, TRAIT_TOXINLOVER, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/timecookie
id = "timecookie"
@@ -411,11 +411,11 @@
duration = 30
/datum/status_effect/plur/on_apply()
ADD_TRAIT(owner, TRAIT_PACIFISM, "peacecookie")
ADD_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/plur/on_remove()
REMOVE_TRAIT(owner, TRAIT_PACIFISM, "peacecookie")
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/adamantinecookie
id = "adamantinecookie"
@@ -543,11 +543,11 @@
colour = SLIME_TYPE_BLUE
/datum/status_effect/stabilized/blue/on_apply()
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, "slimestatus")
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/stabilized/blue/on_remove()
REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER, "slimestatus")
REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/stabilized/metal
id = "stabilizedmetal"
@@ -608,7 +608,7 @@
var/obj/item/hothands/fire
/datum/status_effect/stabilized/darkpurple/on_apply()
ADD_TRAIT(owner, TRAIT_RESISTHEATHANDS, "slimestatus")
ADD_TRAIT(owner, TRAIT_RESISTHEATHANDS, TRAIT_STATUS_EFFECT(id))
fire = new(owner)
return ..()
@@ -622,7 +622,7 @@
return ..()
/datum/status_effect/stabilized/darkpurple/on_remove()
REMOVE_TRAIT(owner, TRAIT_RESISTHEATHANDS, "slimestatus")
REMOVE_TRAIT(owner, TRAIT_RESISTHEATHANDS, TRAIT_STATUS_EFFECT(id))
qdel(fire)
/datum/status_effect/stabilized/darkpurple/get_examine_text()
@@ -1007,7 +1007,7 @@
/datum/status_effect/stabilized/lightpink/on_apply()
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink)
ADD_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT)
ADD_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
return ..()
/datum/status_effect/stabilized/lightpink/tick(seconds_between_ticks)
@@ -1019,7 +1019,7 @@
/datum/status_effect/stabilized/lightpink/on_remove()
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/lightpink)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, STABILIZED_LIGHT_PINK_EXTRACT_TRAIT)
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAIT_STATUS_EFFECT(id))
/datum/status_effect/stabilized/adamantine
id = "stabilizedadamantine"
@@ -32,7 +32,7 @@
/datum/status_effect/shapechange_mob/on_apply()
caster_mob.mind?.transfer_to(owner)
caster_mob.forceMove(owner)
ADD_TRAIT(caster_mob, TRAIT_NO_TRANSFORM, REF(src))
ADD_TRAIT(caster_mob, TRAIT_NO_TRANSFORM, TRAIT_STATUS_EFFECT(id))
caster_mob.apply_status_effect(/datum/status_effect/grouped/stasis, STASIS_SHAPECHANGE_EFFECT)
RegisterSignal(owner, COMSIG_LIVING_PRE_WABBAJACKED, PROC_REF(on_pre_wabbajack))
@@ -86,7 +86,7 @@
UnregisterSignal(owner, list(COMSIG_LIVING_PRE_WABBAJACKED, COMSIG_LIVING_DEATH))
UnregisterSignal(caster_mob, list(COMSIG_QDELETING, COMSIG_LIVING_DEATH))
REMOVE_TRAIT(caster_mob, TRAIT_NO_TRANSFORM, REF(src))
REMOVE_TRAIT(caster_mob, TRAIT_NO_TRANSFORM, TRAIT_STATUS_EFFECT(id))
caster_mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_SHAPECHANGE_EFFECT)
var/atom/former_loc = owner.loc