Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MIRROR] Reworks transformation sting to be temporarily in living mobs, forever in dead mobs #764

Merged
merged 3 commits into from
Nov 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_GUN_NATURAL "gunnatural"
/// Causes death-like unconsciousness
#define TRAIT_DEATHCOMA "deathcoma"
/// The mob has the stasis effect.
/// Does nothing on its own, applied via status effect.
#define TRAIT_STASIS "in_stasis"
/// Makes the owner appear as dead to most forms of medical examination
#define TRAIT_FAKEDEATH "fakedeath"
#define TRAIT_DISFIGURED "disfigured"
Expand Down Expand Up @@ -159,8 +162,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_LIVERLESS_METABOLISM "liverless_metabolism"
/// Humans with this trait cannot be turned into zombies
#define TRAIT_NO_ZOMBIFY "no_zombify"
/// Humans with this trait cannot be affected by changeling transformation stings
#define TRAIT_NO_TRANSFORMATION_STING "no_transformation_sting"
/// Carbons with this trait can't have their DNA copied by diseases nor changelings
#define TRAIT_NO_DNA_COPY "no_dna_copy"
/// Carbons with this trait cant have their dna scrambled by genetics or a disease retrovirus.
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/~skyrat_defines/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

// Defines for mutant bodyparts indexes
#define MUTANT_INDEX_NAME "name"
#define MUTANT_INDEX_CAN_RANDOMIZE "can_randomize"
#define MUTANT_INDEX_COLOR_LIST "color"
#define MUTANT_INDEX_EMISSIVE_LIST "emissive"

Expand Down
2 changes: 1 addition & 1 deletion code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
//SKYRAT EDIT REMOVAL BEGIN - CUSTOMIZATION
/*
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails, GLOB.tails_list, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, GLOB.tails_list_human, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, GLOB.tails_list_lizard, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/monkey, GLOB.tails_list_monkey, add_blank = TRUE)
init_sprite_accessory_subtypes(/datum/sprite_accessory/snouts, GLOB.snouts_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/horns,GLOB.horns_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, GLOB.ears_list)
Expand Down
10 changes: 3 additions & 7 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
/proc/random_backpack()
return pick(GLOB.backpacklist)

//SKYRAT EDIT REMOVAL - CUSTOMIZATION (moved to modular)
// SKYRAT EDIT REMOVAL - CUSTOMIZATION (moved to modular)
/*
/proc/random_features()
if(!GLOB.tails_list.len)
Expand Down Expand Up @@ -113,9 +113,8 @@
"tail_monkey" = "Monkey",
"pod_hair" = pick(GLOB.pod_hair_list),
))
*/
//SKYRAT EDIT REMOVAL END

*/
//SKYRAT EDIT REMOVAL END

/proc/random_hairstyle(gender)
switch(gender)
Expand Down Expand Up @@ -589,8 +588,6 @@ GLOBAL_LIST_EMPTY(species_list)

#define ISADVANCEDTOOLUSER(mob) (HAS_TRAIT(mob, TRAIT_ADVANCEDTOOLUSER) && !HAS_TRAIT(mob, TRAIT_DISCOORDINATED_TOOL_USER))

#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis) || mob.has_status_effect(/datum/status_effect/embryonic))

/// Gets the client of the mob, allowing for mocking of the client.
/// You only need to use this if you know you're going to be mocking clients somewhere else.
#define GET_CLIENT(mob) (##mob.client || ##mob.mock_client)
Expand Down Expand Up @@ -631,7 +628,6 @@ GLOBAL_LIST_EMPTY(species_list)
moblist += mob_to_sort
// SKYRAT EDIT END - SOULCATCHERS
return moblist

///returns a mob type controlled by a specified ckey
/proc/get_mob_by_ckey(key)
if(!key)
Expand Down
6 changes: 3 additions & 3 deletions code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ GLOBAL_LIST_EMPTY(legs_list)
GLOBAL_LIST_EMPTY(animated_spines_list)

//Mutant Human bits
GLOBAL_LIST_EMPTY(tails_list)
GLOBAL_LIST_EMPTY(tails_list_human) //Only exists for preference choices. Use "tails_list" otherwise.
GLOBAL_LIST_EMPTY(tails_list_lizard) //See above!
GLOBAL_LIST_EMPTY(tails_list_human)
GLOBAL_LIST_EMPTY(tails_list_lizard)
GLOBAL_LIST_EMPTY(tails_list_monkey)
GLOBAL_LIST_EMPTY(ears_list)
GLOBAL_LIST_EMPTY(wings_list)
GLOBAL_LIST_EMPTY(wings_open_list)
Expand Down
6 changes: 2 additions & 4 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_NO_JUMPSUIT" = TRAIT_NO_JUMPSUIT,
"TRAIT_NO_MINDSWAP" = TRAIT_NO_MINDSWAP,
"TRAIT_NO_MIRROR_REFLECTION" = TRAIT_NO_MIRROR_REFLECTION,
//"TRAIT_NO_PLASMA_TRANSFORM" = TRAIT_NO_PLASMA_TRANSFORM, SKYRAT EDIT - TODO - These require transformation sting pr
"TRAIT_NO_SLIP_ALL" = TRAIT_NO_SLIP_ALL,
"TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE,
"TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE,
Expand Down Expand Up @@ -365,7 +364,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_ROCK_METAMORPHIC" = TRAIT_ROCK_METAMORPHIC,
"TRAIT_ROD_SUPLEX" = TRAIT_ROD_SUPLEX,
"TRAIT_SABRAGE_PRO" = TRAIT_SABRAGE_PRO,
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED, // SKYRAT EDIT ADDITION
"TRAIT_SACRIFICED" = TRAIT_SACRIFICED,
"TRAIT_SECURITY_HUD" = TRAIT_SECURITY_HUD,
"TRAIT_SEE_GLASS_COLORS" = TRAIT_SEE_GLASS_COLORS,
"TRAIT_SELF_AWARE" = TRAIT_SELF_AWARE,
Expand Down Expand Up @@ -393,7 +392,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SPRAY_PAINTABLE" = TRAIT_SPRAY_PAINTABLE,
"TRAIT_STABLEHEART" = TRAIT_STABLEHEART,
"TRAIT_STABLELIVER" = TRAIT_STABLELIVER,
//"TRAIT_STASIS" = TRAIT_STASIS, TODO - SKYRAT EDIT - TODO - These require transformation sting pr
"TRAIT_STASIS" = TRAIT_STASIS,
"TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER,
"TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE,
"TRAIT_SUCCUMB_OVERRIDE" = TRAIT_SUCCUMB_OVERRIDE,
Expand Down Expand Up @@ -422,7 +421,6 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_UNBREAKABLE" = TRAIT_UNBREAKABLE,
"TRAIT_UNDENSE" = TRAIT_UNDENSE,
"TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE" = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE,
//"TRAIT_UNHUSKABLE" = TRAIT_UNHUSKABLE, SKYRAT EDIT - TODO - These require transformation sting pr
"TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH,
"TRAIT_UNKNOWN" = TRAIT_UNKNOWN,
"TRAIT_UNNATURAL_RED_GLOWY_EYES" = TRAIT_UNNATURAL_RED_GLOWY_EYES,
Expand Down
2 changes: 0 additions & 2 deletions code/_globalvars/traits/admin_tooling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_NO_BLOOD_OVERLAY" = TRAIT_NO_BLOOD_OVERLAY,
"TRAIT_NO_DNA_COPY" = TRAIT_NO_DNA_COPY,
"TRAIT_NO_GLIDE" = TRAIT_NO_GLIDE,
//"TRAIT_NO_PLASMA_TRANSFORM" = TRAIT_NO_PLASMA_TRANSFORM, SKYRAT EDIT - TODO - These require transformation sting pr
"TRAIT_NO_SLIP_ALL" = TRAIT_NO_SLIP_ALL,
"TRAIT_NO_SLIP_ICE" = TRAIT_NO_SLIP_ICE,
"TRAIT_NO_SLIP_SLIDE" = TRAIT_NO_SLIP_SLIDE,
Expand Down Expand Up @@ -214,7 +213,6 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_UI_BLOCKED" = TRAIT_UI_BLOCKED,
"TRAIT_UNDENSE" = TRAIT_UNDENSE,
"TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE" = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE,
//"TRAIT_UNHUSKABLE" = TRAIT_UNHUSKABLE, SKYRAT EDIT - TODO - These require transformation sting pr
"TRAIT_UNINTELLIGIBLE_SPEECH" = TRAIT_UNINTELLIGIBLE_SPEECH,
"TRAIT_UNKNOWN" = TRAIT_UNKNOWN,
"TRAIT_UNNATURAL_RED_GLOWY_EYES" = TRAIT_UNNATURAL_RED_GLOWY_EYES,
Expand Down
16 changes: 11 additions & 5 deletions code/datums/bodypart_overlays/mutant_bodypart_overlay.dm
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,18 @@

///Sprite accessories are singletons, stored list("Big Snout" = instance of /datum/sprite_accessory/snout/big), so here we get that singleton
/datum/bodypart_overlay/mutant/proc/fetch_sprite_datum(datum/sprite_accessory/accessory_path)
var/list/feature_list = get_global_feature_list()

return feature_list[initial(accessory_path.name)]
return fetch_sprite_datum_from_name(initial(accessory_path.name))

///Get the singleton from the sprite name
/datum/bodypart_overlay/mutant/proc/fetch_sprite_datum_from_name(accessory_name)
var/list/feature_list = get_global_feature_list()

return feature_list[accessory_name]
var/found = feature_list[accessory_name]
if(found)
return found

if(!length(feature_list))
CRASH("External organ [type] returned no sprite datums from get_global_feature_list(), so no accessories could be found!")
else if(accessory_name)
CRASH("External organ [type] couldn't find sprite accessory [accessory_name]!")
else
CRASH("External organ [type] had fetch_sprite_datum called with a null accessory name!")
2 changes: 1 addition & 1 deletion code/datums/components/irradiated.dm
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
process_tox_damage(human_parent, seconds_per_tick)

/datum/component/irradiated/proc/should_halt_effects(mob/living/carbon/human/target)
if (IS_IN_STASIS(target))
if (HAS_TRAIT(target, TRAIT_STASIS))
return TRUE

if (HAS_TRAIT(target, TRAIT_HALT_RADIATION_EFFECTS))
Expand Down
2 changes: 1 addition & 1 deletion code/datums/diseases/dna_spread.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
return FALSE

//Only species that can be spread by transformation sting can be spread by the retrovirus
if(HAS_TRAIT(affected_mob, TRAIT_NO_TRANSFORMATION_STING) || HAS_TRAIT(affected_mob, TRAIT_NO_DNA_COPY))
if(HAS_TRAIT(affected_mob, TRAIT_NO_DNA_COPY))
cure()
return FALSE

Expand Down
84 changes: 64 additions & 20 deletions code/datums/dna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,9 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
var/blood_type
///The type of mutant race the player is if applicable (i.e. potato-man)
var/datum/species/species = new /datum/species/human
///first value is mutant color
var/list/features = list("FFF")
/// Assoc list of feature keys to their value
/// Note if you set these manually, and do not update [unique_features] afterwards, it will likely be reset.
var/list/features = list("mcolor" = "#FFFFFF")
///Stores the hashed values of the person's non-human features
var/unique_features
///Stores the real name of the person who originally got this dna datum. Used primarely for changelings,
Expand Down Expand Up @@ -135,12 +136,17 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
destination.dna.features = features.Copy()
destination.dna.real_name = real_name
destination.dna.temporary_mutations = temporary_mutations.Copy()
//SKYRAT EDIT ADDITION BEGIN - CUSTOMIZATION
destination.dna.mutant_bodyparts = mutant_bodyparts.Copy()
destination.dna.body_markings = body_markings.Copy()
destination.dna.update_body_size()
//SKYRAT EDIT ADDITION END
if(transfer_SE)
destination.dna.mutation_index = mutation_index
destination.dna.default_mutation_genes = default_mutation_genes
if(transfer_species)
//destination.set_species(species.type, icon_update=0) - ORIGINAL
destination.set_species(species.type, TRUE, null, features.Copy(), mutant_bodyparts.Copy(), body_markings.Copy()) //SKYRAT EDIT CHANGE - CUSTOMIZATION
destination.set_species(species.type, TRUE, FALSE, features.Copy(), mutant_bodyparts.Copy(), body_markings.Copy()) //SKYRAT EDIT CHANGE - CUSTOMIZATION

/datum/dna/proc/copy_dna(datum/dna/new_dna)
new_dna.unique_enzymes = unique_enzymes
Expand Down Expand Up @@ -381,7 +387,9 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
if(DNA_LIZARD_MARKINGS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.body_markings_list.Find(features["body_markings"]), GLOB.body_markings_list.len))
if(DNA_TAIL_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.tails_list.Find(features["tail_lizard"]), GLOB.tails_list.len))
set_uni_feature_block(blocknumber, construct_block(GLOB.tails_list_human.Find(features["tail_cat"]), GLOB.tails_list_human.len))
if(DNA_LIZARD_TAIL_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.tails_list_lizard.Find(features["tail_lizard"]), GLOB.tails_list_lizard.len))
if(DNA_SNOUT_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.snouts_list.Find(features["snout"]), GLOB.snouts_list.len))
if(DNA_HORNS_BLOCK)
Expand Down Expand Up @@ -468,25 +476,41 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
if(message)
to_chat(holder, message)

//used to update dna UI, UE, and dna.real_name.
/// Updates the UI, UE, and UF of the DNA according to the features, appearance, name, etc. of the DNA / holder.
/datum/dna/proc/update_dna_identity()
unique_identity = generate_unique_identity()
unique_enzymes = generate_unique_enzymes()
unique_features = generate_unique_features()

//SKYRAT EDIT REMOVAL BEGIN - CUSTOMIZATION (moved to modular)
/*
/datum/dna/proc/initialize_dna(newblood_type, skip_index = FALSE)
/**
* Sets up DNA codes and initializes some features.
*
* * newblood_type - Optional, the blood type to set the DNA to
* * create_mutation_blocks - If true, generate_dna_blocks is called, which is used to set up mutation blocks (what a mob can naturally mutate).
* * randomize_features - If true, all entries in the features list will be randomized.
*/
/datum/dna/proc/initialize_dna(newblood_type, create_mutation_blocks = TRUE, randomize_features = TRUE)
if(newblood_type)
blood_type = newblood_type
unique_enzymes = generate_unique_enzymes()
unique_identity = generate_unique_identity()
if(!skip_index) //I hate this
if(create_mutation_blocks) //I hate this
generate_dna_blocks()
features = random_features()
unique_features = generate_unique_features()
*/
//SKYRAT EDIT REMOVAL END
mutant_bodyparts = species.get_mutant_bodyparts(features, existing_mutant_bodyparts = randomize_features ? list() : mutant_bodyparts) // SKYRAT EDIT ADDITION
if(randomize_features)
/* SKYRAT EDIT REMOVAL - We don't really want this, do we? We get the same effect from get_mutant_bodyparts() on our end, but without mixing up weird species features.
var/static/list/all_species_protoypes
if(isnull(all_species_protoypes))
all_species_protoypes = list()
for(var/species_path in subtypesof(/datum/species))
all_species_protoypes += new species_path()

for(var/datum/species/random_species as anything in all_species_protoypes)
features |= random_species.randomize_features()
SKYRAT EDIT REMOVAL END */
body_markings = species.get_random_body_markings(features) // SKYRAT EDIT ADDITION

features["mcolor"] = "#[random_color()]"

update_dna_identity()

/datum/dna/stored //subtype used by brain mob's stored_dna

Expand Down Expand Up @@ -519,9 +543,7 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
stored_dna.species = mrace //not calling any species update procs since we're a brain, not a monkey/human


//SKYRAT EDIT REMOVAL BEGIN - CUSTOMIZATION (moved to modular_skyrat/modules/customization/code/datums/dna.dm)
/*
/mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
/mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, list/override_features, list/override_mutantparts, list/override_markings) // SKYRAT EDIT CHANGE - ORIGINAL: /mob/living/carbon/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
if(QDELETED(src))
CRASH("You're trying to change your species post deletion, this is a recipe for madness")
if(isnull(mrace))
Expand All @@ -547,10 +569,32 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
if (old_species.properly_gained)
old_species.on_species_loss(src, new_race, pref_load)

// SKYRAT EDIT ADDITION START - BODYPARTS AND FEATURES
// We need to instantiate the list with compatible mutant parts so we don't break things

if(override_mutantparts && override_mutantparts.len)
for(var/feature in dna.mutant_bodyparts)
override_mutantparts[feature] = dna.mutant_bodyparts[feature]
dna.mutant_bodyparts = override_mutantparts

if(override_markings && override_markings.len)
for(var/feature in dna.body_markings)
override_markings[feature] = dna.body_markings[feature]
dna.body_markings = override_markings

if(override_features && override_features.len)
for(var/feature in dna.features)
override_features[feature] = dna.features[feature]
dna.features = override_features

apply_customizable_dna_features_to_species()
dna.unique_features = dna.generate_unique_features()

dna.update_body_size()
// SKYRAT EDIT ADDITION END

dna.species.on_species_gain(src, old_species, pref_load)
log_mob_tag("TAG: [tag] SPECIES: [key_name(src)] \[[mrace]\]")
*/
//SKYRAT EDIT REMOVAL END

/mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
..()
Expand Down
2 changes: 1 addition & 1 deletion code/datums/mutations/void_magnet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
/datum/action/cooldown/spell/void/cursed/proc/on_life(mob/living/source, seconds_per_tick, times_fired)
SIGNAL_HANDLER

if(!isliving(source) || IS_IN_STASIS(source) || source.stat == DEAD || HAS_TRAIT(source, TRAIT_NO_TRANSFORM))
if(!isliving(source) || HAS_TRAIT(source, TRAIT_STASIS) || source.stat == DEAD || HAS_TRAIT(source, TRAIT_NO_TRANSFORM))
return

if(!is_valid_target(source))
Expand Down
2 changes: 1 addition & 1 deletion code/datums/quirks/negative_quirks/allergic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
if(!iscarbon(quirk_holder))
return

if(IS_IN_STASIS(quirk_holder))
if(HAS_TRAIT(quirk_holder, TRAIT_STASIS))
return

if(quirk_holder.stat == DEAD)
Expand Down
6 changes: 4 additions & 2 deletions code/datums/sprite_accessories.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1783,11 +1783,13 @@
color_src = HAIR_COLOR

/datum/sprite_accessory/tails/monkey
name = "Monkey"
icon = 'icons/mob/human/species/monkey/monkey_tail.dmi'
icon_state = "monkey"
color_src = FALSE

/datum/sprite_accessory/tails/monkey/standard
name = "Monkey"
icon_state = "monkey"

/datum/sprite_accessory/pod_hair
icon = 'icons/mob/human/species/podperson_hair.dmi'
em_block = TRUE
Expand Down
8 changes: 4 additions & 4 deletions code/datums/status_effects/debuffs/debuffs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,8 @@
. = ..()
if(!.)
return
owner.add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_NUMBED), TRAIT_STATUS_EFFECT(id))//SKYRAT EDIT START - STASIS APPLIES NUMBING
owner.throw_alert("stasis numbed", /atom/movable/screen/alert/numbed) //SKYRAT EDIT END
owner.add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_STASIS, TRAIT_NUMBED), TRAIT_STATUS_EFFECT(id)) // SKYRAT EDIT CHANGE - ORIGINAL: owner.add_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_STASIS), TRAIT_STATUS_EFFECT(id))
owner.throw_alert("stasis numbed", /atom/movable/screen/alert/numbed) //SKYRAT EDIT ADDITION - STASIS APPLIES NUMBED
owner.add_filter("stasis_status_ripple", 2, list("type" = "ripple", "flags" = WAVE_BOUNDED, "radius" = 0, "size" = 2))
var/filter = owner.get_filter("stasis_status_ripple")
animate(filter, radius = 0, time = 0.2 SECONDS, size = 2, easing = JUMP_EASING, loop = -1, flags = ANIMATION_PARALLEL)
Expand All @@ -294,8 +294,8 @@
owner.Sleeping(15 SECONDS) //SKYRAT EDIT END

/datum/status_effect/grouped/stasis/on_remove()
owner.remove_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_NUMBED), TRAIT_STATUS_EFFECT(id)) //SKYRAT EDIT START - STASIS END REMOVES NUMBING
owner.clear_alert("stasis numbed") //SKYRAT EDIT END
owner.remove_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_STASIS, TRAIT_NUMBED), TRAIT_STATUS_EFFECT(id)) // SKYRAT EDIT CHANGE - ORIGINAL: owner.remove_traits(list(TRAIT_IMMOBILIZED, TRAIT_HANDS_BLOCKED, TRAIT_STASIS), TRAIT_STATUS_EFFECT(id))
owner.clear_alert("stasis numbed") //SKYRAT EDIT ADDITION - STASIS APPLIED NUMBED
owner.remove_filter("stasis_status_ripple")
update_time_of_death()
if(iscarbon(owner))
Expand Down
Loading
Loading