From b4736febcfe8643f7f1a279b1994c79838a4ea7b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 4 Jan 2020 13:02:23 -0800 Subject: [PATCH 01/92] uhh --- code/__DEFINES/flags.dm | 21 +++++++++++++++++++++ code/modules/mob/living/living_defines.dm | 2 ++ code/modules/mob/mob_defines.dm | 1 - 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 55962bf78c..e6cf3fa25d 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -91,3 +91,24 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // radiation #define RAD_PROTECT_CONTENTS (1<<0) #define RAD_NO_CONTAMINATE (1<<1) + +//Mob mobility var flags +/// can move +#define MOBILITY_MOVE (1<<0) +/// can, and is, standing up. +#define MOBILITY_STAND (1<<1) +/// can pickup items +#define MOBILITY_PICKUP (1<<2) +/// can hold and use items +#define MOBILITY_USE (1<<3) +/// can use interfaces like consoles +#define MOBILITY_UI (1<<4) +/// can use storage item +#define MOBILITY_STORAGE (1<<5) +/// can pull things +#define MOBILITY_PULL (1<<6) + + +#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL) +#define MOBILITY_FLAGS_ANY_INTERACTION (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_UI | MOBILITY_STORAGE) + diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 783e044492..214360ec50 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -22,6 +22,8 @@ var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this. var/crit_threshold = HEALTH_THRESHOLD_CRIT // when the mob goes from "normal" to crit + var/mobility_flags = MOBILITY_FLAGS_DEFAULT + var/confused = 0 //Makes the mob move in random directions. var/hallucination = 0 //Directly affects how long a mob will hallucinate for diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index c7365210ab..9aea4ebf09 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -37,7 +37,6 @@ var/resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 - var/canmove = 1 //MOVEMENT SPEED var/list/movespeed_modification //Lazy list, see mob_movespeed.dm From 1f2597784fb933b09cdf0a0a352da305653fb9a6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 5 Jan 2020 15:40:23 -0800 Subject: [PATCH 02/92] git commit death --- code/modules/mob/living/living.dm | 51 --- code/modules/mob/living/living_mobility.dm | 227 +++++++++++ code/modules/mob/living/status_procs.dm | 357 +++++++++++++++--- code/modules/mob/status_procs.dm | 263 +++---------- .../code/modules/mob/living/living.dm | 63 ---- tgstation.dme | 1 + 6 files changed, 594 insertions(+), 368 deletions(-) create mode 100644 code/modules/mob/living/living_mobility.dm diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 78542ab052..cbe57c2284 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1035,57 +1035,6 @@ /mob/living/can_be_pulled() return ..() && !(buckled && buckled.buckle_prevents_pull) -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -//Robots, animals and brains have their own version so don't worry about them -/mob/living/proc/update_canmove() - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) - var/move_and_fall = stat == SOFT_CRIT && !pulledby - var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK - var/buckle_lying = !(buckled && !buckled.buckle_lying) - var/has_legs = get_num_legs() - var/has_arms = get_num_arms() - var/ignore_legs = get_leg_ignore() - var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything - drop_all_held_items() - unset_machine() - if(pulling) - stop_pulling() - else if(resting) //CIT CHANGE - makes resting make you stop pulling and interacting with machines - unset_machine() //CIT CHANGE - Ditto! - if(pulling) //CIT CHANGE - Ditto. - stop_pulling() //CIT CHANGE - Ditto... - else if(has_legs || ignore_legs) - lying = 0 - if (pulledby) - var/mob/living/L = pulledby - L.update_pull_movespeed() - if(buckled) - lying = 90*buckle_lying - else if(!lying) - if(resting) - lying = pick(90, 270) // Cit change - makes resting not force you to drop your held items - if(has_gravity()) // Cit change - Ditto - playsound(src, "bodyfall", 50, 1) // Cit change - Ditto! - else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) - fall(forced = 1) - canmove = !(ko || recoveringstam || pinned || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) //Cit change - makes it plausible to move while resting, adds pinning and stamina crit - density = !lying - if(lying) - if(layer == initial(layer)) //to avoid special cases like hiding larvas. - layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs - else - if(layer == LYING_MOB_LAYER) - layer = initial(layer) - update_transform() - if(!lying && lying_prev) - if(client) - client.move_delay = world.time + movement_delay() - lying_prev = lying - if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference - addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto - return canmove - /mob/living/proc/AddAbility(obj/effect/proc_holder/A) abilities.Add(A) A.on_gain(src) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm new file mode 100644 index 0000000000..dd546fb61c --- /dev/null +++ b/code/modules/mob/living/living_mobility.dm @@ -0,0 +1,227 @@ +//Stuff like mobility flag updates, resting updates, etc. + +//Force-set resting variable, without needing to resist/etc. +/mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE) + resting = new_resting + if(!silent) + to_chat(src, "You are now [resting? "resting" : "getting up"].") + update_resting(updating) + +/mob/living/proc/update_resting(update_mobility = TRUE) + if(update_mobility) + update_mobility() + +//Force mob to rest, does NOT do stamina damage. +//It's really not recommended to use this proc to give feedback, hence why silent is defaulting to true. +/mob/living/proc/KnockToFloor(disarm_items = FALSE, silent = TRUE, updating = TRUE) + if(!silent) + to_chat(src, "You are knocked to the floor!") + set_resting(TRUE, TRUE, updating) + if(disarm_items) + drop_all_held_items() + + + + + + +/mob/living/proc/lay_down() + set name = "Rest" + set category = "IC" + + if(client && client.prefs && client.prefs.autostand) + intentionalresting = !intentionalresting + to_chat(src, "You are now attempting to [intentionalresting ? "[!resting ? "lay down and ": ""]stay down" : "[resting ? "get up and ": ""]stay up"].") + if(intentionalresting && !resting) + resting = TRUE + update_canmove() + else + resist_a_rest() + else + if(!resting) + resting = TRUE + to_chat(src, "You are now laying down.") + update_canmove() + else + resist_a_rest() + +/mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. + if(!resting || stat || attemptingstandup) + return FALSE + if(ignoretimer) + resting = FALSE + update_canmove() + return TRUE + else + var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest + if(getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(src, "You're too exhausted to get up!") + return FALSE + attemptingstandup = TRUE + var/health_deficiency = max((maxHealth - (health - getStaminaLoss()))*0.5, 0) + if(!has_gravity()) + health_deficiency = health_deficiency*0.2 + totaldelay += health_deficiency + var/standupwarning = "[src] and everyone around them should probably yell at the dev team" + switch(health_deficiency) + if(-INFINITY to 10) + standupwarning = "[src] stands right up!" + if(10 to 35) + standupwarning = "[src] tries to stand up." + if(35 to 60) + standupwarning = "[src] slowly pushes [p_them()]self upright." + if(60 to 80) + standupwarning = "[src] weakly attempts to stand up." + if(80 to INFINITY) + standupwarning = "[src] struggles to stand up." + var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." + visible_message("[standupwarning]", usernotice, vision_distance = 5) + if(do_after(src, totaldelay, target = src)) + resting = FALSE + attemptingstandup = FALSE + update_canmove() + return TRUE + else + visible_message("[src] falls right back down.", "You fall right back down.") + attemptingstandup = FALSE + if(has_gravity()) + playsound(src, "bodyfall", 20, 1) + return FALSE + + +/* +//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. +//Robots, animals and brains have their own version so don't worry about them +/mob/living/proc/update_mobility() + var/stat_softcrit = stat == SOFT_CRIT + var/stat_conscious = (stat == CONSCIOUS) || stat_softcrit + var/conscious = !IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) + var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK + var/restrained = restrained() + var/has_legs = get_num_legs() + var/has_arms = get_num_arms() + var/paralyzed = IsParalyzed() + var/stun = IsStun() + var/knockdown = IsKnockdown() + var/ignore_legs = get_leg_ignore() + var/canmove = !IsImmobilized() && !stun && conscious && !paralyzed && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) + if(canmove) + mobility_flags |= MOBILITY_MOVE + else + mobility_flags &= ~MOBILITY_MOVE + var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyzed && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) + var/canstand = canstand_involuntary && !resting + + var/should_be_lying = !canstand + if(buckled) + if(buckled.buckle_lying != -1) + should_be_lying = buckled.buckle_lying + + if(should_be_lying) + mobility_flags &= ~MOBILITY_STAND + if(buckled) + if(buckled.buckle_lying != -1) + lying = buckled.buckle_lying + if(!lying) //force them on the ground + lying = pick(90, 270) + else + mobility_flags |= MOBILITY_STAND + lying = 0 + + if(should_be_lying || restrained || incapacitated()) + mobility_flags &= ~(MOBILITY_UI|MOBILITY_PULL) + else + mobility_flags |= MOBILITY_UI|MOBILITY_PULL + + + + var/canitem = !paralyzed && !stun && conscious && !chokehold && !restrained && has_arms + if(canitem) + mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) + else + mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) + if(!(mobility_flags & MOBILITY_USE)) + drop_all_held_items() + if(!(mobility_flags & MOBILITY_PULL)) + if(pulling) + stop_pulling() + if(!(mobility_flags & MOBILITY_UI)) + unset_machine() + density = !lying + if(lying) + if(!lying_prev) + fall(!canstand_involuntary) + if(layer == initial(layer)) //to avoid special cases like hiding larvas. + layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs + else + if(layer == LYING_MOB_LAYER) + layer = initial(layer) + update_transform() + lying_prev = lying + + // Movespeed mods based on arms/legs quantity + if(!get_leg_ignore()) + var/limbless_slowdown = 0 + // These checks for <2 should be swapped out for something else if we ever end up with a species with more than 2 + if(has_legs < 2) + limbless_slowdown += 6 - (has_legs * 3) + if(!has_legs && has_arms < 2) + limbless_slowdown += 6 - (has_arms * 3) + if(limbless_slowdown) + add_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=limbless_slowdown, movetypes=GROUND) + else + remove_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE) +*/ + +//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. +//Robots, animals and brains have their own version so don't worry about them +/mob/living/proc/update_canmove() +/* + var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) + var/move_and_fall = stat == SOFT_CRIT && !pulledby + var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK + var/buckle_lying = !(buckled && !buckled.buckle_lying) + var/has_legs = get_num_legs() + var/has_arms = get_num_arms() + var/ignore_legs = get_leg_ignore() + var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground + if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything + drop_all_held_items() + unset_machine() + if(pulling) + stop_pulling() + else if(resting) //CIT CHANGE - makes resting make you stop pulling and interacting with machines + unset_machine() //CIT CHANGE - Ditto! + if(pulling) //CIT CHANGE - Ditto. + stop_pulling() //CIT CHANGE - Ditto... + else if(has_legs || ignore_legs) + lying = 0 + if (pulledby) + var/mob/living/L = pulledby + L.update_pull_movespeed() + if(buckled) + lying = 90*buckle_lying + else if(!lying) + if(resting) + lying = pick(90, 270) // Cit change - makes resting not force you to drop your held items + if(has_gravity()) // Cit change - Ditto + playsound(src, "bodyfall", 50, 1) // Cit change - Ditto! + else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) + fall(forced = 1) + canmove = !(ko || recoveringstam || pinned || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) //Cit change - makes it plausible to move while resting, adds pinning and stamina crit + density = !lying + if(lying) + if(layer == initial(layer)) //to avoid special cases like hiding larvas. + layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs + else + if(layer == LYING_MOB_LAYER) + layer = initial(layer) + update_transform() + if(!lying && lying_prev) + if(client) + client.move_delay = world.time + movement_delay() + lying_prev = lying + if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference + addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto + return canmove +*/ diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index facc86da46..6ed81b7aeb 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -2,19 +2,38 @@ //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, // eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. +// YEEHAW GAMERS STAMINA REWORK PROC GETS TO BE FIRST +// amount = strength +// updating = update mobility etc etc +// ignore_castun = same logic as Paralyze() in general +// override_duration = If this is set, does Paralyze() for this duration. +// override_stam = If this is set, does this amount of stamina damage. +/mob/living/proc/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canstun = FALSE, override_duration, override_stam) + if(!iscarbon(src)) + return Paralyze(amount, updating, ignore_canstun) + if(istype(buckled, /obj/vehicle/ridden)) + buckled.unbuckle_mob(src) + var/drop_items = amount > 80 //80 is cutoff for old item dropping behavior + var/stamdmg = isnull(override_stam)? (amount * 0.25) : override_stam + KnockToFloor(drop_items, TRUE, updating) + adjustStaminaLoss(stamdmg) + if(!isnull(override_duration)) + Paralyze(override_duration) ////////////////////////////// STUN //////////////////////////////////// -/mob/living/IsStun() //If we're stunned +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsStun() //If we're stunned return has_status_effect(STATUS_EFFECT_STUN) -/mob/living/proc/AmountStun() //How many deciseconds remain in our stun +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountStun() //How many deciseconds remain in our stun var/datum/status_effect/incapacitating/stun/S = IsStun() if(S) return S.duration - world.time return 0 -/mob/living/proc/Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/_MOBILITYFLAGTEMPORARY_Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return @@ -25,7 +44,9 @@ S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) var/datum/status_effect/incapacitating/stun/S = IsStun() if(amount <= 0) @@ -40,7 +61,9 @@ S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return @@ -53,34 +76,38 @@ ///////////////////////////////// KNOCKDOWN ///////////////////////////////////// -/mob/living/IsKnockdown() //If we're knocked down +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsKnockdown() //If we're knocked down return has_status_effect(STATUS_EFFECT_KNOCKDOWN) -/mob/living/proc/AmountKnockdown() //How many deciseconds remain in our knockdown +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountKnockdown() //How many deciseconds remain in our knockdown var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) return K.duration - world.time return 0 -/mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) //Can't go below remaining duration - if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown) - if(absorb_stun(isnull(override_hardstun)? amount : override_hardstun, ignore_canknockdown)) +/mob/living/proc/_MOBILITYFLAGTEMPORARY_Knockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) - K.duration = max(world.time + (isnull(override_hardstun)? amount : override_hardstun), K.duration) - else if((amount || override_hardstun) > 0) - K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating, override_hardstun, override_stamdmg) + K.duration = max(world.time + amount, K.duration) + else if(amount > 0) + K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/SetKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Sets remaining duration - if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown) +/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(amount <= 0) if(K) qdel(K) else - if(absorb_stun(amount, ignore_canknockdown)) + if(absorb_stun(amount, ignore_canstun)) return if(K) K.duration = world.time + amount @@ -88,9 +115,11 @@ K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/AdjustKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Adds to remaining duration - if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown) - if(absorb_stun(amount, ignore_canknockdown)) +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) @@ -99,6 +128,230 @@ K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K +///////////////////////////////// IMMOBILIZED //////////////////////////////////// +/mob/living/proc/IsImmobilized() //If we're immobilized + return has_status_effect(STATUS_EFFECT_IMMOBILIZED) + +/mob/living/proc/AmountImmobilized() //How many deciseconds remain in our Immobilized status effect + var/datum/status_effect/incapacitating/immobilized/I = IsImmobilized() + if(I) + return I.duration - world.time + return 0 + +/mob/living/proc/Immobilize(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_IMMOBILIZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/immobilized/I = IsImmobilized() + if(I) + I.duration = max(world.time + amount, I.duration) + else if(amount > 0) + I = apply_status_effect(STATUS_EFFECT_IMMOBILIZED, amount, updating) + return I + +/mob/living/proc/SetImmobilized(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_IMMOBILIZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/immobilized/I = IsImmobilized() + if(amount <= 0) + if(I) + qdel(I) + else + if(absorb_stun(amount, ignore_canstun)) + return + if(I) + I.duration = world.time + amount + else + I = apply_status_effect(STATUS_EFFECT_IMMOBILIZED, amount, updating) + return I + +/mob/living/proc/AdjustImmobilized(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_IMMOBILIZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/immobilized/I = IsImmobilized() + if(I) + I.duration += amount + else if(amount > 0) + I = apply_status_effect(STATUS_EFFECT_IMMOBILIZED, amount, updating) + return I + +///////////////////////////////// PARALYZED ////////////////////////////////// +/mob/living/proc/IsParalyzed() //If we're immobilized + return has_status_effect(STATUS_EFFECT_PARALYZED) + +/mob/living/proc/AmountParalyzed() //How many deciseconds remain in our Paralyzed status effect + var/datum/status_effect/incapacitating/paralyzed/P = IsParalyzed(FALSE) + if(P) + return P.duration - world.time + return 0 + +/mob/living/proc/Paralyze(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_PARALYZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/paralyzed/P = IsParalyzed(FALSE) + if(P) + P.duration = max(world.time + amount, P.duration) + else if(amount > 0) + P = apply_status_effect(STATUS_EFFECT_PARALYZED, amount, updating) + return P + +/mob/living/proc/SetParalyzed(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_PARALYZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/paralyzed/P = IsParalyzed(FALSE) + if(amount <= 0) + if(P) + qdel(P) + else + if(absorb_stun(amount, ignore_canstun)) + return + if(P) + P.duration = world.time + amount + else + P = apply_status_effect(STATUS_EFFECT_PARALYZED, amount, updating) + return P + +/mob/living/proc/AdjustParalyzed(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_PARALYZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/paralyzed/P = IsParalyzed(FALSE) + if(P) + P.duration += amount + else if(amount > 0) + P = apply_status_effect(STATUS_EFFECT_PARALYZED, amount, updating) + return P + +//Blanket +/mob/living/proc/AllImmobility(amount, updating) + Paralyze(amount, FALSE) + Knockdown(amount, FALSE) + Stun(amount, FALSE) + Immobilize(amount, FALSE) + if(updating) + update_mobility() + +/mob/living/proc/SetAllImmobility(amount, updating) + SetParalyzed(amount, FALSE) + SetKnockdown(amount, FALSE) + SetStun(amount, FALSE) + SetImmobilized(amount, FALSE) + if(updating) + update_mobility() + +/mob/living/proc/AdjustAllImmobility(amount, updating) + AdjustParalyzed(amount, FALSE) + AdjustKnockdown(amount, FALSE) + AdjustStun(amount, FALSE) + AdjustImmobilized(amount, FALSE) + if(updating) + update_mobility() + +//////////////////UNCONSCIOUS +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsUnconscious() //If we're unconscious + return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountUnconscious() //How many deciseconds remain in our unconsciousness + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + if(U) + return U.duration - world.time + return 0 + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_Unconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + if(U) + U.duration = max(world.time + amount, U.duration) + else if(amount > 0) + U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) + return U + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + if(amount <= 0) + if(U) + qdel(U) + else if(U) + U.duration = world.time + amount + else + U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) + return U + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + if(U) + U.duration += amount + else if(amount > 0) + U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) + return U + +/////////////////////////////////// SLEEPING //////////////////////////////////// + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsSleeping() //If we're asleep + return has_status_effect(STATUS_EFFECT_SLEEPING) + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountSleeping() //How many deciseconds remain in our sleep + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(S) + return S.duration - world.time + return 0 + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_Sleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(S) + S.duration = max(world.time + amount, S.duration) + else if(amount > 0) + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(amount <= 0) + if(S) + qdel(S) + else if(S) + S.duration = world.time + amount + else + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S + +/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(S) + S.duration += amount + else if(amount > 0) + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S + ///////////////////////////////// FROZEN ///////////////////////////////////// /mob/living/proc/IsFrozen() @@ -119,8 +372,10 @@ "visible_message" = message, "self_message" = self_message, "examine_message" = examine_message) /mob/living/proc/absorb_stun(amount, ignoring_flag_presence) - if(!amount || amount <= 0 || stat || ignoring_flag_presence || !islist(stun_absorption)) + if(amount < 0 || stat || ignoring_flag_presence || !islist(stun_absorption)) return FALSE + if(!amount) + amount = 0 var/priority_absorb_key var/highest_priority for(var/i in stun_absorption) @@ -128,20 +383,20 @@ priority_absorb_key = stun_absorption[i] highest_priority = priority_absorb_key["priority"] if(priority_absorb_key) - if(priority_absorb_key["visible_message"] || priority_absorb_key["self_message"]) - if(priority_absorb_key["visible_message"] && priority_absorb_key["self_message"]) - visible_message("[src][priority_absorb_key["visible_message"]]", "[priority_absorb_key["self_message"]]") - else if(priority_absorb_key["visible_message"]) - visible_message("[src][priority_absorb_key["visible_message"]]") - else if(priority_absorb_key["self_message"]) - to_chat(src, "[priority_absorb_key["self_message"]]") - priority_absorb_key["stuns_absorbed"] += amount + if(amount) //don't spam up the chat for continuous stuns + if(priority_absorb_key["visible_message"] || priority_absorb_key["self_message"]) + if(priority_absorb_key["visible_message"] && priority_absorb_key["self_message"]) + visible_message("[src][priority_absorb_key["visible_message"]]", "[priority_absorb_key["self_message"]]") + else if(priority_absorb_key["visible_message"]) + visible_message("[src][priority_absorb_key["visible_message"]]") + else if(priority_absorb_key["self_message"]) + to_chat(src, "[priority_absorb_key["self_message"]]") + priority_absorb_key["stuns_absorbed"] += amount return TRUE /////////////////////////////////// DISABILITIES //////////////////////////////////// - /mob/living/proc/add_quirk(quirktype, spawn_effects) //separate proc due to the way these ones are handled - if(has_quirk(quirktype)) + if(HAS_TRAIT(src, quirktype)) return var/datum/quirk/T = quirktype var/qname = initial(T.name) @@ -162,20 +417,23 @@ if(Q.type == quirktype) return TRUE return FALSE + /////////////////////////////////// TRAIT PROCS //////////////////////////////////// -/mob/living/proc/cure_blind(list/sources) - REMOVE_TRAIT(src, TRAIT_BLIND, sources) +/mob/living/proc/cure_blind(source) + REMOVE_TRAIT(src, TRAIT_BLIND, source) if(!HAS_TRAIT(src, TRAIT_BLIND)) - adjust_blindness(-1) + update_blindness() /mob/living/proc/become_blind(source) - if(!HAS_TRAIT(src, TRAIT_BLIND)) - blind_eyes(1) - ADD_TRAIT(src, TRAIT_BLIND, source) + if(!HAS_TRAIT(src, TRAIT_BLIND)) // not blind already, add trait then overlay + ADD_TRAIT(src, TRAIT_BLIND, source) + update_blindness() + else + ADD_TRAIT(src, TRAIT_BLIND, source) -/mob/living/proc/cure_nearsighted(list/sources) - REMOVE_TRAIT(src, TRAIT_NEARSIGHT, sources) +/mob/living/proc/cure_nearsighted(source) + REMOVE_TRAIT(src, TRAIT_NEARSIGHT, source) if(!HAS_TRAIT(src, TRAIT_NEARSIGHT)) clear_fullscreen("nearsighted") @@ -184,8 +442,8 @@ overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) ADD_TRAIT(src, TRAIT_NEARSIGHT, source) -/mob/living/proc/cure_husk(list/sources) - REMOVE_TRAIT(src, TRAIT_HUSK, sources) +/mob/living/proc/cure_husk(source) + REMOVE_TRAIT(src, TRAIT_HUSK, source) if(!HAS_TRAIT(src, TRAIT_HUSK)) REMOVE_TRAIT(src, TRAIT_DISFIGURED, "husk") update_body() @@ -193,14 +451,15 @@ /mob/living/proc/become_husk(source) if(!HAS_TRAIT(src, TRAIT_HUSK)) + ADD_TRAIT(src, TRAIT_HUSK, source) ADD_TRAIT(src, TRAIT_DISFIGURED, "husk") update_body() - . = TRUE - ADD_TRAIT(src, TRAIT_HUSK, source) + else + ADD_TRAIT(src, TRAIT_HUSK, source) -/mob/living/proc/cure_fakedeath(list/sources) - REMOVE_TRAIT(src, TRAIT_FAKEDEATH, sources) - REMOVE_TRAIT(src, TRAIT_DEATHCOMA, sources) +/mob/living/proc/cure_fakedeath(source) + REMOVE_TRAIT(src, TRAIT_FAKEDEATH, source) + REMOVE_TRAIT(src, TRAIT_DEATHCOMA, source) if(stat != DEAD) tod = null update_stat() @@ -212,13 +471,13 @@ emote("deathgasp") ADD_TRAIT(src, TRAIT_FAKEDEATH, source) ADD_TRAIT(src, TRAIT_DEATHCOMA, source) - tod = STATION_TIME_TIMESTAMP("hh:mm:ss") + tod = station_time_timestamp() update_stat() -/mob/living/proc/unignore_slowdown(list/sources) - REMOVE_TRAIT(src, TRAIT_IGNORESLOWDOWN, sources) +/mob/living/proc/unignore_slowdown(source) + REMOVE_TRAIT(src, TRAIT_IGNORESLOWDOWN, source) update_movespeed(FALSE) /mob/living/proc/ignore_slowdown(source) ADD_TRAIT(src, TRAIT_IGNORESLOWDOWN, source) - update_movespeed(FALSE) \ No newline at end of file + update_movespeed(FALSE) diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 17311daec2..8fb14b8dd1 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -3,222 +3,80 @@ //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, // eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. -/////////////////////////////////// STUN //////////////////////////////////// - -/mob/proc/IsStun() //non-living mobs shouldn't be stunned - return FALSE - -/////////////////////////////////// KNOCKDOWN //////////////////////////////////// - -/mob/proc/IsKnockdown() //non-living mobs shouldn't be knocked down - return FALSE - -/////////////////////////////////// UNCONSCIOUS //////////////////////////////////// - -/mob/proc/IsUnconscious() //non-living mobs shouldn't be unconscious - return FALSE - -/mob/living/IsUnconscious() //If we're unconscious - return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) - -/mob/living/proc/AmountUnconscious() //How many deciseconds remain in our unconsciousness - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() - if(U) - return U.duration - world.time - return 0 - -/mob/living/proc/Unconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Can't go below remaining duration - if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canunconscious) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() - if(U) - U.duration = max(world.time + amount, U.duration) - else if(amount > 0) - U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) - return U - -/mob/living/proc/SetUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Sets remaining duration - if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canunconscious) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() - if(amount <= 0) - if(U) - qdel(U) - else if(U) - U.duration = world.time + amount - else - U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) - return U - -/mob/living/proc/AdjustUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Adds to remaining duration - if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canunconscious) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() - if(U) - U.duration += amount - else if(amount > 0) - U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) - return U - -/////////////////////////////////// SLEEPING //////////////////////////////////// - -/mob/proc/IsSleeping() //non-living mobs shouldn't be sleeping either - return FALSE - -/mob/living/IsSleeping() //If we're asleep - return has_status_effect(STATUS_EFFECT_SLEEPING) - -/mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(S) - return S.duration - world.time - return 0 - -/mob/living/proc/Sleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Can't go below remaining duration - if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(S) - S.duration = max(world.time + amount, S.duration) - else if(amount > 0) - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S - -/mob/living/proc/SetSleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Sets remaining duration - if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(amount <= 0) - if(S) - qdel(S) - else if(S) - S.duration = world.time + amount - else - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S - -/mob/living/proc/AdjustSleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Adds to remaining duration - if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(S) - S.duration += amount - else if(amount > 0) - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S - -/////////////////////////////////// RESTING //////////////////////////////////// - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - -/mob/living/Resting(amount) - ..() - update_canmove() - -/mob/proc/SetResting(amount) - resting = max(amount,0) - -/mob/living/SetResting(amount) - ..() - update_canmove() - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - -/mob/living/AdjustResting(amount) - ..() - update_canmove() - -/////////////////////////////////// JITTERINESS //////////////////////////////////// - +///Set the jitter of a mob /mob/proc/Jitter(amount) jitteriness = max(jitteriness,amount,0) -/////////////////////////////////// DIZZINESS //////////////////////////////////// - +/** + * Set the dizzyness of a mob to a passed in amount + * + * Except if dizziness is already higher in which case it does nothing + */ /mob/proc/Dizzy(amount) dizziness = max(dizziness,amount,0) -/////////////////////////////////// EYE_BLIND //////////////////////////////////// +///FOrce set the dizzyness of a mob +/mob/proc/set_dizziness(amount) + dizziness = max(amount, 0) +///Blind a mobs eyes by amount /mob/proc/blind_eyes(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = max(eye_blind, amount) - if(!old_eye_blind) - if(stat == CONSCIOUS || stat == SOFT_CRIT) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + adjust_blindness(amount) +/** + * Adjust a mobs blindness by an amount + * + * Will apply the blind alerts if needed + */ /mob/proc/adjust_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind += amount - if(!old_eye_blind) - if(stat == CONSCIOUS || stat == SOFT_CRIT) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if((stat != CONSCIOUS && stat != SOFT_CRIT)) - blind_minimum = 1 - if(isliving(src)) - var/mob/living/L = src - if(HAS_TRAIT(L, TRAIT_BLIND)) - blind_minimum = 1 - eye_blind = max(eye_blind+amount, blind_minimum) - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - + var/old_eye_blind = eye_blind + eye_blind = max(0, eye_blind + amount) + if(!old_eye_blind || !eye_blind && !HAS_TRAIT(src, TRAIT_BLIND)) + update_blindness() +/** + * Force set the blindness of a mob to some level + */ /mob/proc/set_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = amount - if(client && !old_eye_blind) - if(stat == CONSCIOUS || stat == SOFT_CRIT) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if(stat != CONSCIOUS && stat != SOFT_CRIT) - blind_minimum = 1 - if(isliving(src)) - var/mob/living/L = src - if(HAS_TRAIT(L, TRAIT_BLIND)) - blind_minimum = 1 - eye_blind = blind_minimum - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - -/////////////////////////////////// EYE_BLURRY //////////////////////////////////// + var/old_eye_blind = eye_blind + eye_blind = max(amount, 0) + if(!old_eye_blind || !eye_blind && !HAS_TRAIT(src, TRAIT_BLIND)) + update_blindness() +/// proc that adds and removes blindness overlays when necessary +/mob/proc/update_blindness() + if(stat == UNCONSCIOUS || HAS_TRAIT(src, TRAIT_BLIND) || eye_blind) // UNCONSCIOUS or has blind trait, or has temporary blindness + if(stat == CONSCIOUS || stat == SOFT_CRIT) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + // You are blind why should you be able to make out details like color, only shapes near you + add_client_colour(/datum/client_colour/monochrome/blind) + else // CONSCIOUS no blind trait, no blindness + clear_alert("blind") + clear_fullscreen("blind") + remove_client_colour(/datum/client_colour/monochrome/blind) +/** + * Make the mobs vision blurry + */ /mob/proc/blur_eyes(amount) if(amount>0) - var/old_eye_blurry = eye_blurry eye_blurry = max(amount, eye_blurry) - if(!old_eye_blurry) - add_eyeblur() //Citadel edit blurry eye memes entailed. syncs beware - else if(eye_blurry > 0) - update_eyeblur() + update_eye_blur() +/** + * Adjust the current blurriness of the mobs vision by amount + */ /mob/proc/adjust_blurriness(amount) - var/old_eye_blurry = eye_blurry eye_blurry = max(eye_blurry+amount, 0) - if(amount>0) - if(!old_eye_blurry) - add_eyeblur() - else if(eye_blurry > 0) - update_eyeblur() - else if(old_eye_blurry && !eye_blurry) - remove_eyeblur() + update_eye_blur() +///Set the mobs blurriness of vision to an amount /mob/proc/set_blurriness(amount) - var/old_eye_blurry = eye_blurry eye_blurry = max(amount, 0) - if(amount>0) - if(!old_eye_blurry) - add_eyeblur() - else if(eye_blurry > 0) - update_eyeblur() - else if(old_eye_blurry) - remove_eyeblur() + update_eye_blur() + +/mob/proc/update_eye_blur() + remove_eyeblur() + add_eyeblur() /mob/proc/add_eyeblur() if(!client) @@ -228,10 +86,6 @@ GW.add_filter("blurry_eyes", 2, EYE_BLUR(CLAMP(eye_blurry*0.1,0.6,3))) F.add_filter("blurry_eyes", 2, EYE_BLUR(CLAMP(eye_blurry*0.1,0.6,3))) -/mob/proc/update_eyeblur() - remove_eyeblur() - add_eyeblur() - /mob/proc/remove_eyeblur() if(!client) return @@ -240,24 +94,23 @@ GW.remove_filter("blurry_eyes") F.remove_filter("blurry_eyes") -/////////////////////////////////// DRUGGY //////////////////////////////////// - +///Adjust the drugginess of a mob /mob/proc/adjust_drugginess(amount) return +///Set the drugginess of a mob /mob/proc/set_drugginess(amount) return -/////////////////////////////////// GROSSED OUT //////////////////////////////////// - +///Adjust the disgust level of a mob /mob/proc/adjust_disgust(amount) return +///Set the disgust level of a mob /mob/proc/set_disgust(amount) return -/////////////////////////////////// TEMPERATURE //////////////////////////////////// - +///Adjust the body temperature of a mob, with min/max settings /mob/proc/adjust_bodytemperature(amount,min_temp=0,max_temp=INFINITY) if(bodytemperature >= min_temp && bodytemperature <= max_temp) bodytemperature = CLAMP(bodytemperature + amount,min_temp,max_temp) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 513a80cae0..854294e4e0 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -47,69 +47,6 @@ pseudo_z_axis = newloc.get_fake_z() pixel_z = pseudo_z_axis -/mob/living/proc/lay_down() - set name = "Rest" - set category = "IC" - - if(client && client.prefs && client.prefs.autostand) - intentionalresting = !intentionalresting - to_chat(src, "You are now attempting to [intentionalresting ? "[!resting ? "lay down and ": ""]stay down" : "[resting ? "get up and ": ""]stay up"].") - if(intentionalresting && !resting) - resting = TRUE - update_canmove() - else - resist_a_rest() - else - if(!resting) - resting = TRUE - to_chat(src, "You are now laying down.") - update_canmove() - else - resist_a_rest() - -/mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. - if(!resting || stat || attemptingstandup) - return FALSE - if(ignoretimer) - resting = FALSE - update_canmove() - return TRUE - else - var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest - if(getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(src, "You're too exhausted to get up!") - return FALSE - attemptingstandup = TRUE - var/health_deficiency = max((maxHealth - (health - getStaminaLoss()))*0.5, 0) - if(!has_gravity()) - health_deficiency = health_deficiency*0.2 - totaldelay += health_deficiency - var/standupwarning = "[src] and everyone around them should probably yell at the dev team" - switch(health_deficiency) - if(-INFINITY to 10) - standupwarning = "[src] stands right up!" - if(10 to 35) - standupwarning = "[src] tries to stand up." - if(35 to 60) - standupwarning = "[src] slowly pushes [p_them()]self upright." - if(60 to 80) - standupwarning = "[src] weakly attempts to stand up." - if(80 to INFINITY) - standupwarning = "[src] struggles to stand up." - var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." - visible_message("[standupwarning]", usernotice, vision_distance = 5) - if(do_after(src, totaldelay, target = src)) - resting = FALSE - attemptingstandup = FALSE - update_canmove() - return TRUE - else - visible_message("[src] falls right back down.", "You fall right back down.") - attemptingstandup = FALSE - if(has_gravity()) - playsound(src, "bodyfall", 20, 1) - return FALSE - /mob/living/carbon/update_stamina() var/total_health = getStaminaLoss() if(total_health) diff --git a/tgstation.dme b/tgstation.dme index 7e7d69d6f1..37118e133f 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2106,6 +2106,7 @@ #include "code\modules\mob\living\living.dm" #include "code\modules\mob\living\living_defense.dm" #include "code\modules\mob\living\living_defines.dm" +#include "code\modules\mob\living\living_mobility.dm" #include "code\modules\mob\living\living_movement.dm" #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm" From 7378d9168401f167d7aadca0a3f15218e747135f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 03:39:20 -0800 Subject: [PATCH 03/92] ([\W\.])Knockdown\( --- code/datums/brain_damage/mild.dm | 2 +- code/datums/components/caltrop.dm | 2 +- code/datums/components/chasm.dm | 2 +- code/datums/components/jousting.dm | 2 +- code/datums/components/riding.dm | 4 +-- code/datums/components/spooky.dm | 4 +-- .../storage/concrete/bag_of_holding.dm | 4 +-- code/datums/diseases/heart_failure.dm | 2 +- code/datums/martial/cqc.dm | 4 +-- code/datums/martial/krav_maga.dm | 2 +- code/datums/martial/mushpunch.dm | 2 +- code/datums/martial/psychotic_brawl.dm | 4 +-- code/datums/martial/rising_bass.dm | 6 ++--- code/datums/martial/sleeping_carp.dm | 14 +++++----- code/datums/martial/wrestling.dm | 8 +++--- code/datums/status_effects/buffs.dm | 2 +- code/datums/status_effects/debuffs.dm | 4 +-- code/game/gamemodes/gangs/gang_pen.dm | 2 +- .../machinery/computer/arcade/orion_trail.dm | 2 +- code/game/machinery/doors/airlock.dm | 4 +-- code/game/machinery/doors/airlock_types.dm | 2 +- code/game/machinery/doors/door.dm | 4 +-- code/game/machinery/flasher.dm | 2 +- code/game/mecha/equipment/weapons/weapons.dm | 2 +- code/game/objects/effects/anomalies.dm | 2 +- .../effects/effect_system/effects_other.dm | 2 +- code/game/objects/effects/mines.dm | 2 +- code/game/objects/items.dm | 2 +- code/game/objects/items/cigs_lighters.dm | 2 +- code/game/objects/items/crayons.dm | 2 +- code/game/objects/items/defib.dm | 4 +-- .../objects/items/devices/laserpointer.dm | 2 +- .../items/devices/radio/electropack.dm | 2 +- .../objects/items/devices/traitordevices.dm | 2 +- code/game/objects/items/granters.dm | 2 +- code/game/objects/items/grenades/flashbang.dm | 4 +-- code/game/objects/items/handcuffs.dm | 2 +- code/game/objects/items/his_grace.dm | 2 +- code/game/objects/items/holy_weapons.dm | 2 +- .../items/implants/implant_explosive.dm | 2 +- code/game/objects/items/melee/misc.dm | 4 +-- code/game/objects/items/pneumaticCannon.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 4 +-- code/game/objects/items/storage/bags.dm | 2 +- code/game/objects/items/stunbaton.dm | 4 +-- code/game/objects/items/teleprod.dm | 2 +- code/game/objects/structures.dm | 2 +- .../objects/structures/beds_chairs/chair.dm | 2 +- .../structures/crates_lockers/closets.dm | 2 +- .../objects/structures/petrified_statue.dm | 2 +- code/game/objects/structures/tables_racks.dm | 6 ++--- .../structures/transit_tubes/station.dm | 2 +- code/game/objects/structures/traps.dm | 8 +++--- code/game/objects/structures/watercloset.dm | 2 +- code/game/turfs/open.dm | 2 +- code/modules/admin/verbs/bluespacearty.dm | 2 +- .../abductor/equipment/abduction_gear.dm | 2 +- .../bloodsucker/powers/bs_brawn.dm | 4 +-- .../antagonists/bloodsucker/powers/bs_feed.dm | 2 +- .../bloodsucker/powers/bs_haste.dm | 2 +- .../bloodsucker/powers/bs_lunge.dm | 2 +- .../antagonists/changeling/powers/headcrab.dm | 2 +- .../antagonists/changeling/powers/shriek.dm | 2 +- .../changeling/powers/strained_muscles.dm | 4 +-- .../clockcult/clock_effects/clock_sigils.dm | 4 +-- .../clockcult/clock_helpers/slab_abilities.dm | 2 +- .../clock_weapons/ratvarian_spear.dm | 6 ++--- .../clockcult/clock_items/judicial_visor.dm | 4 +-- .../clock_structures/taunting_trail.dm | 2 +- .../clock_structures/traps/brass_skewer.dm | 4 +-- code/modules/antagonists/cult/blood_magic.dm | 2 +- code/modules/antagonists/cult/cult_items.dm | 26 +++++++++---------- code/modules/antagonists/cult/runes.dm | 6 ++--- .../antagonists/devil/devil_helpers.dm | 2 +- code/modules/antagonists/swarmer/swarmer.dm | 2 +- .../antagonists/wizard/equipment/artefact.dm | 2 +- code/modules/assembly/flash.dm | 4 +-- code/modules/assembly/mousetrap.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 2 +- .../modules/clothing/spacesuits/flightsuit.dm | 2 +- .../modules/clothing/suits/reactive_armour.dm | 2 +- code/modules/fields/peaceborg_dampener.dm | 2 +- code/modules/flufftext/Hallucination.dm | 12 ++++----- .../food_and_drinks/drinks/drinks/bottle.dm | 2 +- .../food_and_drinks/food/snacks_meat.dm | 2 +- .../food_and_drinks/food/snacks_pie.dm | 4 +-- .../kitchen_machinery/deep_fryer.dm | 2 +- code/modules/holodeck/items.dm | 4 +-- code/modules/hydroponics/grown/nettle.dm | 4 +-- .../subtypes/weaponized.dm | 2 +- .../mining/equipment/wormhole_jaunter.dm | 2 +- code/modules/mining/fulton.dm | 2 +- .../carbon/alien/humanoid/caste/hunter.dm | 6 ++--- .../modules/mob/living/carbon/alien/organs.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 12 ++++----- .../mob/living/carbon/carbon_defense.dm | 6 ++--- code/modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 10 +++---- .../mob/living/carbon/human/species.dm | 8 +++--- .../carbon/human/species_types/podpeople.dm | 2 +- .../mob/living/carbon/human/status_procs.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- .../living/carbon/monkey/monkey_defense.dm | 4 +-- code/modules/mob/living/damage_procs.dm | 2 +- code/modules/mob/living/emote.dm | 4 +-- code/modules/mob/living/living.dm | 4 +-- .../mob/living/silicon/pai/pai_defense.dm | 8 +++--- .../mob/living/silicon/silicon_defense.dm | 6 ++--- .../mob/living/simple_animal/bot/ed209bot.dm | 2 +- .../mob/living/simple_animal/bot/honkbot.dm | 6 ++--- .../mob/living/simple_animal/bot/mulebot.dm | 2 +- .../mob/living/simple_animal/bot/secbot.dm | 4 +-- .../mob/living/simple_animal/constructs.dm | 2 +- .../friendly/drone/extra_drone_types.dm | 2 +- .../simple_animal/friendly/farm_animals.dm | 2 +- .../living/simple_animal/hostile/faithless.dm | 2 +- .../simple_animal/hostile/gorilla/gorilla.dm | 2 +- .../simple_animal/hostile/jungle/leaper.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 4 +-- .../mob/living/simple_animal/hostile/tree.dm | 2 +- .../simple_animal/hostile/venus_human_trap.dm | 2 +- code/modules/mob/living/status_procs.dm | 2 +- code/modules/ninja/suit/ninjaDrainAct.dm | 2 +- code/modules/paperwork/paperplane.dm | 2 +- .../power/singularity/containment_field.dm | 2 +- .../projectiles/guns/ballistic/revolver.dm | 2 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../projectile/special/hallucination.dm | 4 +-- .../projectile/special/neurotoxin.dm | 2 +- .../chemistry/reagents/food_reagents.dm | 4 +-- .../chemistry/reagents/medicine_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 2 +- .../chemistry/reagents/toxin_reagents.dm | 6 ++--- .../chemistry/recipes/pyrotechnics.dm | 6 ++--- code/modules/recycling/disposal/bin.dm | 2 +- .../research/nanites/nanite_programs/rogue.dm | 2 +- .../nanites/nanite_programs/suppression.dm | 2 +- code/modules/shuttle/on_move.dm | 2 +- code/modules/shuttle/special.dm | 2 +- code/modules/spells/spell_types/devil.dm | 2 +- code/modules/spells/spell_types/godhand.dm | 4 +-- .../spells/spell_types/inflict_handler.dm | 2 +- code/modules/spells/spell_types/lichdom.dm | 2 +- code/modules/spells/spell_types/wizard.dm | 4 +-- code/modules/surgery/organs/vocal_cords.dm | 4 +-- code/modules/vehicles/cars/clowncar.dm | 2 +- code/modules/vehicles/scooter.dm | 4 +-- code/modules/vehicles/sealed.dm | 4 +-- code/modules/vehicles/speedbike.dm | 2 +- .../code/datums/status_effects/chems.dm | 4 +-- .../items/devices/radio/shockcollar.dm | 2 +- .../objects/structures/beds_chairs/chair.dm | 2 +- .../mob/living/carbon/human/human_movement.dm | 2 +- .../living/silicon/robot/dogborg_equipment.dm | 10 +++---- .../chemistry/reagents/eigentstasium.dm | 4 +-- .../chemistry/reagents/enlargement.dm | 4 +-- .../chemistry/reagents/fermi_reagents.dm | 2 +- 157 files changed, 262 insertions(+), 262 deletions(-) diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 235417d62c..1553254ea3 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -136,7 +136,7 @@ fall_chance += 2 if(prob(fall_chance) && !owner.lying && !owner.buckled) to_chat(owner, "Your leg gives out!") - owner.Knockdown(35) + owner.DefaultCombatKnockdown(35) else if(owner.get_active_held_item()) var/drop_chance = 1 diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index f0333072a8..863d55ccab 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -59,4 +59,4 @@ "You slide on [A]!") cooldown = world.time - H.Knockdown(60) + H.DefaultCombatKnockdown(60) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index bc185994f6..d606478a6a 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -100,7 +100,7 @@ AM.forceMove(T) if(isliving(AM)) var/mob/living/L = AM - L.Knockdown(100) + L.DefaultCombatKnockdown(100) L.adjustBruteLoss(30) falling_atoms -= AM diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm index 08f3c1d643..c6b062509d 100644 --- a/code/datums/components/jousting.dm +++ b/code/datums/components/jousting.dm @@ -54,7 +54,7 @@ msg += " and knocks [target] [target_buckled? "off of [target.buckled]" : "down"]" if(target_buckled) target.buckled.unbuckle_mob(target) - target.Knockdown(knockdown_time) + target.DefaultCombatKnockdown(knockdown_time) if(length(msg)) user.visible_message("[msg]!") diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index c05b07a693..55166cdf4a 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -240,7 +240,7 @@ /datum/component/riding/human/force_dismount(mob/living/user) var/atom/movable/AM = parent AM.unbuckle_mob(user) - user.Knockdown(60) + user.DefaultCombatKnockdown(60) user.visible_message("[AM] pushes [user] off of [AM.p_them()]!") /datum/component/riding/cyborg @@ -298,7 +298,7 @@ M.Move(targetm) M.visible_message("[M] is thrown clear of [AM]!") M.throw_at(target, 14, 5, AM) - M.Knockdown(60) + M.DefaultCombatKnockdown(60) /datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, mob/living/riding_target_override) var/list/equipped diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index 1d5549d0fe..b74f71aaa5 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -22,7 +22,7 @@ return //undeads are unaffected by the spook-pocalypse. if(istype(H.dna.species, /datum/species/zombie)) H.adjustStaminaLoss(25) - H.Knockdown(15) //zombies can't resist the doot + H.DefaultCombatKnockdown(15) //zombies can't resist the doot C.Jitter(35) C.stuttering = 20 if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly))) @@ -36,7 +36,7 @@ /datum/component/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user) if((H.getStaminaLoss() > 95) && (!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly))) - H.Knockdown(20) + H.DefaultCombatKnockdown(20) H.set_species(/datum/species/skeleton) H.visible_message("[H] has given up on life as a mortal.") var/T = get_turf(H) diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index bf97ec6516..93a40abd93 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -11,7 +11,7 @@ var/turf/loccheck = get_turf(A) if(is_reebe(loccheck.z)) user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") - user.Knockdown(60) + user.DefaultCombatKnockdown(60) return if(istype(loccheck.loc, /area/fabric_of_reality)) to_chat(user, "You can't do that here!") @@ -25,7 +25,7 @@ for(var/mob/living/M in T) if(M.movement_type & FLYING) M.visible_message("The bluespace collapse crushes the air towards it, pulling [M] towards the ground...") - M.Knockdown(5, TRUE, TRUE) //Overrides stun absorbs. + M.DefaultCombatKnockdown(5, TRUE, TRUE) //Overrides stun absorbs. T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic) for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders) ladder.ActivateAlmonds() diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 2389052a54..be97e44de3 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -44,7 +44,7 @@ if(prob(25)) affected_mob.vomit(95) H.emote("cough") - H.Knockdown(40) + H.DefaultCombatKnockdown(40) H.losebreath += 4 if(prob(3)) to_chat(H, "You feel very weak and dizzy...") diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 4ec16ac18c..4fb635176f 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -47,7 +47,7 @@ "[A] slams you into the ground!") playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1) D.apply_damage(10, BRUTE) - D.Knockdown(120) + D.DefaultCombatKnockdown(120) log_combat(A, D, "slammed (CQC)") return TRUE @@ -152,7 +152,7 @@ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(10, BRUTE) - D.Knockdown(60) + D.DefaultCombatKnockdown(60) log_combat(A, D, "sweeped (CQC)") return TRUE diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 4e8dacaef9..617980ea5c 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -102,7 +102,7 @@ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25) + D.DefaultCombatKnockdown(40, override_hardstun = 0.01, override_stamdmg = 25) log_combat(A, D, "leg sweeped") return 1 diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index 1ef7734771..fe9f0d77d6 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -16,7 +16,7 @@ playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1) var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time. - D.Knockdown(20) + D.DefaultCombatKnockdown(20) if(atk_verb) log_combat(A, D, "[atk_verb] (Mushroom Punch)") return TRUE diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 45d73353f9..7766715a51 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -49,7 +49,7 @@ if(!istype(D.head,/obj/item/clothing/head/helmet/) && !istype(D.head,/obj/item/clothing/head/hardhat)) D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) A.Stun(rand(10,45)) - D.Knockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency + D.DefaultCombatKnockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency if(5,6) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) atk_verb = pick("punches", "kicks", "hits", "slams into") @@ -59,7 +59,7 @@ playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1) var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time. - D.Knockdown(60) + D.DefaultCombatKnockdown(60) if(7,8) basic_hit(A,D) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 9e00c90a92..9da7c80ed3 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -43,7 +43,7 @@ "[A] kicks you in the side, forcing you to step away!") playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) - D.Knockdown(60) + D.DefaultCombatKnockdown(60) var/L = H for(var/obj/i in H.contents) if(!istype(i,/mob) && i.density == 1) @@ -68,7 +68,7 @@ D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) D.apply_damage(30, BRUTE, BODY_ZONE_HEAD) D.Sleeping(60) - D.Knockdown(300) + D.DefaultCombatKnockdown(300) D.forceMove(L) log_combat(A, D, "shoulder flipped (Rising Bass)") return 1 @@ -83,7 +83,7 @@ var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A))) D.throw_at(F, 10, 1) D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) - D.Knockdown(90) + D.DefaultCombatKnockdown(90) log_combat(A, D, "repulse punched (Rising Bass)") return 1 return basic_hit(A,D) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 85f8a4a101..1e084bb936 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -46,7 +46,7 @@ D.emote("scream") D.dropItemToGround(D.get_active_held_item()) D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + D.DefaultCombatKnockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() return TRUE return basic_hit(A,D) @@ -58,7 +58,7 @@ D.visible_message("[A] kicks [D] in the back!", \ "[A] kicks you in the back, making you stumble and fall!") step_to(D,get_step(D,D.dir),1) - D.Knockdown(80) + D.DefaultCombatKnockdown(80) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) return TRUE else @@ -75,7 +75,7 @@ "[A] winds you with a knee in the stomach!") D.audible_message("[D] gags!") D.losebreath += 3 - D.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + D.DefaultCombatKnockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) return TRUE return basic_hit(A,D) @@ -89,7 +89,7 @@ D.apply_damage(20, BRUTE, BODY_ZONE_HEAD) D.drop_all_held_items() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) - D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() + D.DefaultCombatKnockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun() return TRUE return basic_hit(A,D) @@ -134,7 +134,7 @@ playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1) if(prob(D.getBruteLoss()) && !D.lying) D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") - D.Knockdown(80) + D.DefaultCombatKnockdown(80) log_combat(A, D, "[atk_verb] (Sleeping Carp)") return TRUE @@ -192,7 +192,7 @@ add_fingerprint(user) if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head with [src].") - user.Knockdown(60) + user.DefaultCombatKnockdown(60) if(ishuman(user)) var/mob/living/carbon/human/H = user H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) @@ -226,7 +226,7 @@ if(prob(10)) H.visible_message("[H] collapses!", \ "Your legs give out!") - H.Knockdown(80) + H.DefaultCombatKnockdown(80) if(H.staminaloss && !H.IsSleeping()) var/total_health = (H.health - H.staminaloss) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index c967779d03..d70ea49108 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -303,7 +303,7 @@ playsound(A.loc, "swing_hit", 50, 1) if (!D.stat) D.emote("scream") - D.Knockdown(40) + D.DefaultCombatKnockdown(40) switch(rand(1,3)) if (2) @@ -361,7 +361,7 @@ var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) if (T && isturf(T)) - D.Knockdown(20) + D.DefaultCombatKnockdown(20) D.throw_at(T, 3, 2) log_combat(A, D, "roundhouse-kicked") @@ -400,7 +400,7 @@ if (falling == 1) A.visible_message("...and dives head-first into the ground, ouch!") A.adjustBruteLoss(rand(10,20)) - A.Knockdown(60) + A.DefaultCombatKnockdown(60) to_chat(A, "[D] is too far away!") return 0 @@ -429,7 +429,7 @@ else D.adjustBruteLoss(rand(20,30)) - D.Knockdown(40) + D.DefaultCombatKnockdown(40) A.pixel_y = 0 diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 5dab98d5ca..ee6d9e2759 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -97,7 +97,7 @@ if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"]) otheractiveabsorptions = TRUE if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions) - owner.Knockdown(stuns_blocked) + owner.DefaultCombatKnockdown(stuns_blocked) message_to_owner = "The weight of the Vanguard's protection crashes down upon you!" if(stuns_blocked >= 300) message_to_owner += "\nYou faint from the exertion!" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f5f012e7f9..bd78288092 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -179,7 +179,7 @@ if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs) if(force_damage || owner.m_intent != MOVE_INTENT_WALK) if(GLOB.ratvar_awakens) - owner.Knockdown(20) + owner.DefaultCombatKnockdown(20) if(iscultist(owner)) owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_L_LEG) owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_R_LEG) @@ -526,7 +526,7 @@ var/old_oxyloss /datum/status_effect/kindle/tick() - owner.Knockdown(15, TRUE, FALSE, 15) + owner.DefaultCombatKnockdown(15, TRUE, FALSE, 15) if(iscarbon(owner)) var/mob/living/carbon/C = owner C.silent = max(2, C.silent) diff --git a/code/game/gamemodes/gangs/gang_pen.dm b/code/game/gamemodes/gangs/gang_pen.dm index 0851f3b596..b7bd6cca5e 100644 --- a/code/game/gamemodes/gangs/gang_pen.dm +++ b/code/game/gamemodes/gangs/gang_pen.dm @@ -54,6 +54,6 @@ return var/mob/living/carbon/human/H = gangster_mind.current // we are sure the dude's human cause it's checked in attack() H.silent = max(H.silent, 5) - H.Knockdown(100) + H.DefaultCombatKnockdown(100) gangster_mind.add_antag_datum(/datum/antagonist/gang, gang) return TRUE \ No newline at end of file diff --git a/code/game/machinery/computer/arcade/orion_trail.dm b/code/game/machinery/computer/arcade/orion_trail.dm index c8c7bc1319..2304312953 100644 --- a/code/game/machinery/computer/arcade/orion_trail.dm +++ b/code/game/machinery/computer/arcade/orion_trail.dm @@ -217,7 +217,7 @@ M.vomit(10, distance = 5) if(ORION_TRAIL_FLUX) if(prob(75)) - M.Knockdown(60) + M.DefaultCombatKnockdown(60) say("A sudden gust of powerful wind slams [M] into the floor!") M.take_bodypart_damage(25) playsound(loc, 'sound/weapons/genhit.ogg', 100, 1) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 03c1bb3bc8..fec69574c9 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -769,7 +769,7 @@ if(!istype(H.head, /obj/item/clothing/head/helmet)) H.visible_message("[user] headbutts the airlock.", \ "You headbutt the airlock!") - H.Knockdown(100) + H.DefaultCombatKnockdown(100) H.apply_damage(10, BRUTE, BODY_ZONE_HEAD) else visible_message("[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.") @@ -1033,7 +1033,7 @@ if(!I.use_tool(src, user, 150, volume=50)) to_chat(user, "You slip and [charge] detonates!") charge.ex_act(EXPLODE_DEVASTATE) - user.Knockdown(60) + user.DefaultCombatKnockdown(60) return user.visible_message("[user] removes [charge] from [src].", \ "You gently pry out [charge] from [src] and unhook its wires.") diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 50ae7dab18..530a287134 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -508,7 +508,7 @@ throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50)) flash_color(L, flash_color="#960000", flash_time=20) - L.Knockdown(40) + L.DefaultCombatKnockdown(40) L.throw_at(throwtarget, 5, 1) return 0 diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ee8742e84f..cf846d2b5b 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -319,10 +319,10 @@ else if(ishuman(L)) //For humans L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) L.emote("scream") - L.Knockdown(100) + L.DefaultCombatKnockdown(100) else if(ismonkey(L)) //For monkeys L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) else //for simple_animals & borgs L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) var/turf/location = get_turf(src) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index def530a14d..99b412e18b 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -115,7 +115,7 @@ continue if(L.flash_act(affect_silicon = 1)) - L.Knockdown(strength) + L.DefaultCombatKnockdown(strength) flashed = TRUE if(flashed) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 9f8f3ef742..70563b730a 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -177,7 +177,7 @@ M.SetSleeping(0) M.stuttering += 20 M.adjustEarDamage(0, 30) - M.Knockdown(60) + M.DefaultCombatKnockdown(60) if(prob(30)) M.Stun(200) M.Unconscious(80) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index fbe25c5d1b..8c3ffa3cfc 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -113,7 +113,7 @@ /obj/effect/anomaly/grav/proc/gravShock(mob/living/A) if(boing && isliving(A) && !A.stat) - A.Knockdown(40) + A.DefaultCombatKnockdown(40) var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src))) A.throw_at(target, 5, 1) boing = 0 diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index 18c1ff5890..4f305b3102 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -112,7 +112,7 @@ for(var/mob/living/L in viewers(1, location)) if(prob(50 * amount)) to_chat(L, "The explosion knocks you down.") - L.Knockdown(rand(20,100)) + L.DefaultCombatKnockdown(rand(20,100)) return else dyn_explosion(location, amount, flashing_factor) \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 08f698e018..f17fce64d8 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -48,7 +48,7 @@ /obj/effect/mine/stun/mineEffect(mob/living/victim) if(isliving(victim)) - victim.Knockdown(stun_time) + victim.DefaultCombatKnockdown(stun_time) /obj/effect/mine/kickmine name = "kick mine" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a410827347..1a73c87440 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -544,7 +544,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) to_chat(M, "You drop what you're holding and clutch at your eyes!") M.adjust_blurriness(10) M.Unconscious(20) - M.Knockdown(40) + M.DefaultCombatKnockdown(40) if (prob(eyes.damage - 10 + 1)) M.become_blind(EYE_DAMAGE) to_chat(M, "You go blind!") diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 884f5c4400..eeaea5dc70 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -853,7 +853,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(prob(5))//small chance for the vape to break and deal damage if it's emagged playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0) M.apply_damage(20, BURN, BODY_ZONE_HEAD) - M.Knockdown(300, 1, 0) + M.DefaultCombatKnockdown(300, 1, 0) var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread sp.set_up(5, 1, src) sp.start() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 41ab418cf2..0b66560189 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -695,7 +695,7 @@ C.blind_eyes(1) if(C.get_eye_protection() <= 0) // no eye protection? ARGH IT BURNS. C.confused = max(C.confused, 3) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) if(ishuman(C) && actually_paints) var/mob/living/carbon/human/H = C H.lip_style = "spray_face" diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 07d58c1754..ec1a50804f 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -473,7 +473,7 @@ M.visible_message("[user] zaps [M] with [src]!", \ "[user] zaps [M] with [src]!") M.adjustStaminaLoss(50) - M.Knockdown(100) + M.DefaultCombatKnockdown(100) M.updatehealth() //forces health update before next life tick playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1) M.emote("gasp") @@ -530,7 +530,7 @@ H.set_heartattack(TRUE) H.apply_damage(50, BURN, BODY_ZONE_CHEST) log_combat(user, H, "overloaded the heart of", defib) - H.Knockdown(100) + H.DefaultCombatKnockdown(100) H.Jitter(100) if(req_defib) defib.deductcharge(revivecost) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 1654ecde41..5a343ced30 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -108,7 +108,7 @@ //chance to actually hit the eyes depends on internal component if(prob(effectchance * diode.rating)) S.flash_act(affect_silicon = 1) - S.Knockdown(rand(100,200)) + S.DefaultCombatKnockdown(rand(100,200)) to_chat(S, "Your sensors were overloaded by a laser!") outmsg = "You overload [S] by shining [src] at [S.p_their()] sensors." else diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index b74b0fa3d4..465cc28acb 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -113,7 +113,7 @@ s.set_up(3, 1, L) s.start() - L.Knockdown(100) + L.DefaultCombatKnockdown(100) if(master) master.receive_signal() diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index fc768cd38e..a1f7854a4a 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -44,7 +44,7 @@ effective or pretty fucking useless. for(var/mob/living/carbon/human/M in urange(10, user, 1)) if(prob(50)) - M.Knockdown(rand(200,400)) + M.DefaultCombatKnockdown(rand(200,400)) to_chat(M, "You feel a tremendous, paralyzing wave flood your mind.") else diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 70cd503ef4..004dc1d5e5 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -294,7 +294,7 @@ /obj/item/book/granter/spell/knock/recoil(mob/living/user) ..() to_chat(user,"You're knocked down!") - user.Knockdown(40) + user.DefaultCombatKnockdown(40) /obj/item/book/granter/spell/barnyard spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index 724cfc8f9d..10f85a87e8 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -31,7 +31,7 @@ M.show_message("BANG", MSG_AUDIBLE) var/distance = get_dist(get_turf(M), source) if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this. - M.Knockdown(200) + M.DefaultCombatKnockdown(200) M.soundbang_act(1, 200, 10, 15) else M.soundbang_act(1, max(200/max(1,distance), 60), rand(0, 5)) @@ -41,4 +41,4 @@ return var/distance = get_dist(get_turf(M), source) if(M.flash_act(affect_silicon = 1)) - M.Knockdown(max(200/max(1,distance), 60)) + M.DefaultCombatKnockdown(max(200/max(1,distance), 60)) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 246dd77684..6b8dea8e79 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -351,7 +351,7 @@ C.update_inv_legcuffed() SSblackbox.record_feedback("tally", "handcuffs", 1, type) to_chat(C, "\The [src] ensnares you!") - C.Knockdown(knockdown) + C.DefaultCombatKnockdown(knockdown) /obj/item/restraints/legcuffs/bola/tactical//traitor variant name = "reinforced bola" diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index da572d4d61..c961134244 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -92,7 +92,7 @@ master.emote("scream") master.remove_status_effect(STATUS_EFFECT_HISGRACE) REMOVE_TRAIT(src, TRAIT_NODROP, HIS_GRACE_TRAIT) - master.Knockdown(60) + master.DefaultCombatKnockdown(60) master.adjustBruteLoss(master.maxHealth) playsound(master, 'sound/effects/splat.ogg', 100, 0) else diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 7a83893f8b..b6a218520f 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -673,7 +673,7 @@ add_fingerprint(user) if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head with [src].") - user.Knockdown(60) + user.DefaultCombatKnockdown(60) if(ishuman(user)) var/mob/living/carbon/human/H = user H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index b93c9419a3..e376e37cb5 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -78,7 +78,7 @@ return if(message && imp_in.stat == CONSCIOUS) imp_in.visible_message("[imp_in] doubles over in pain!") - imp_in.Knockdown(140) + imp_in.DefaultCombatKnockdown(140) /obj/item/implant/explosive/proc/boom_goes_the_weasel() explosion(get_turf(imp_in ? imp_in : src), heavy, medium, weak, weak, flame_range = weak) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 4242fb6c4b..978b6f95eb 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -199,7 +199,7 @@ add_fingerprint(user) if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head.") - user.Knockdown(60 * force) + user.DefaultCombatKnockdown(60 * force) if(ishuman(user)) var/mob/living/carbon/human/H = user H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD) @@ -224,7 +224,7 @@ if(check_martial_counter(H, user)) return playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1) - target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg) + target.DefaultCombatKnockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg) log_combat(user, target, "stunned", src) src.add_fingerprint(user) target.visible_message("[user] has knocked down [target] with [src]!", \ diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index e63b4d7a3a..630ca1bcbd 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -168,7 +168,7 @@ if(pressureSetting >= 3 && iscarbon(user)) var/mob/living/carbon/C = user C.visible_message("[C] is thrown down by the force of the cannon!", "[src] slams into your shoulder, knocking you down!") - C.Knockdown(60) + C.DefaultCombatKnockdown(60) /obj/item/pneumatic_cannon/proc/fire_items(turf/target, mob/user) if(fire_mode == PCANNON_FIREALL) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index c09f5b1b65..4d006e3806 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -20,7 +20,7 @@ return user.do_attack_animation(M) - M.Knockdown(100) + M.DefaultCombatKnockdown(100) M.apply_effect(EFFECT_STUTTER, 5) M.visible_message("[user] has prodded [M] with [src]!", \ @@ -330,7 +330,7 @@ C.stuttering += 10 C.Jitter(10) if(2) - C.Knockdown(40) + C.DefaultCombatKnockdown(40) C.confused += 10 C.stuttering += 15 C.Jitter(25) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index eafa79798e..a5f438ea65 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -336,7 +336,7 @@ if(ishuman(M) || ismonkey(M)) if(prob(10)) - M.Knockdown(40) + M.DefaultCombatKnockdown(40) update_icon() /obj/item/storage/bag/tray/update_icon() diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 6972587263..2882252e5c 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -188,7 +188,7 @@ stunpwr *= round(stuncharge/hitcost, 0.1) - L.Knockdown(stunpwr) + L.DefaultCombatKnockdown(stunpwr) L.adjustStaminaLoss(stunpwr*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented. L.apply_effect(EFFECT_STUTTER, stunforce) SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) @@ -212,7 +212,7 @@ user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ "You accidentally hit yourself with [src]!") SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) - user.Knockdown(stunforce*3) + user.DefaultCombatKnockdown(stunforce*3) playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) deductcharge(hitcost) diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index f427bf6c4c..8bf989e7a5 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -16,7 +16,7 @@ user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ "You accidentally hit yourself with [src]!") SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) - user.Knockdown(stunforce*3) + user.DefaultCombatKnockdown(stunforce*3) playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) if(do_teleport(user, get_turf(user), 50, channel = TELEPORT_CHANNEL_BLUESPACE)) deductcharge(hitcost) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index cf050f62d1..b6cfc15137 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -33,7 +33,7 @@ if(structureclimber && structureclimber != user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) - structureclimber.Knockdown(40) + structureclimber.DefaultCombatKnockdown(40) structureclimber.visible_message("[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].") /obj/structure/ui_act(action, params) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index e61a17b4ec..a339d964ca 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -332,7 +332,7 @@ if(iscarbon(target)) var/mob/living/carbon/C = target if(C.health < C.maxHealth*0.5) - C.Knockdown(20) + C.DefaultCombatKnockdown(20) smash(user) /obj/item/chair/stool diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 38944c0384..fbf39887f7 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -431,7 +431,7 @@ "You hear a loud metal bang.") var/mob/living/L = O if(!issilicon(L)) - L.Knockdown(40) + L.DefaultCombatKnockdown(40) O.forceMove(T) close() else diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index 65ffb7e2e5..a8a5a577c2 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -49,7 +49,7 @@ if(S.mind) if(petrified_mob) S.mind.transfer_to(petrified_mob) - petrified_mob.Knockdown(100) + petrified_mob.DefaultCombatKnockdown(100) to_chat(petrified_mob, "You slowly come back to your senses. You are in control of yourself again!") qdel(S) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 99f8875aef..273e846ad0 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -128,7 +128,7 @@ pushed_mob.pass_flags &= ~PASSTABLE if(pushed_mob.loc != loc) //Something prevented the tabling return - pushed_mob.Knockdown(40) + pushed_mob.DefaultCombatKnockdown(40) pushed_mob.visible_message("[user] slams [pushed_mob] onto [src]!", \ "[user] slams you onto [src]!") log_combat(user, pushed_mob, "tabled", null, "onto [src]") @@ -139,7 +139,7 @@ /obj/structure/table/shove_act(mob/living/target, mob/living/user) if(!target.resting) - target.Knockdown(SHOVE_KNOCKDOWN_TABLE) + target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_TABLE) user.visible_message("[user.name] shoves [target.name] onto \the [src]!", "You shove [target.name] onto \the [src]!", null, COMBAT_MESSAGE_RANGE) target.forceMove(src.loc) @@ -249,7 +249,7 @@ debris -= AM if(istype(AM, /obj/item/shard)) AM.throw_impact(L) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) qdel(src) /obj/structure/table/glass/deconstruct(disassembled = TRUE, wrench_disassembly = 0) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index c386726f34..f821041894 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -74,7 +74,7 @@ pod.visible_message("[user] starts putting [GM] into the [pod]!") if(do_after(user, 15, target = src)) if(open_status == STATION_TUBE_OPEN && GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs()) - GM.Knockdown(100) + GM.DefaultCombatKnockdown(100) src.Bumped(GM) break else diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index 9c1859df08..d2282baea8 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -83,7 +83,7 @@ /obj/structure/trap/stun/trap_effect(mob/living/L) L.electrocute_act(30, src, safety=1) // electrocute act does a message. - L.Knockdown(100) + L.DefaultCombatKnockdown(100) /obj/structure/trap/fire name = "flame trap" @@ -92,7 +92,7 @@ /obj/structure/trap/fire/trap_effect(mob/living/L) to_chat(L, "Spontaneous combustion!") - L.Knockdown(20) + L.DefaultCombatKnockdown(20) /obj/structure/trap/fire/flare() ..() @@ -106,7 +106,7 @@ /obj/structure/trap/chill/trap_effect(mob/living/L) to_chat(L, "You're frozen solid!") - L.Knockdown(20) + L.DefaultCombatKnockdown(20) L.adjust_bodytemperature(-300) L.apply_status_effect(/datum/status_effect/freon) @@ -119,7 +119,7 @@ /obj/structure/trap/damage/trap_effect(mob/living/L) to_chat(L, "The ground quakes beneath your feet!") - L.Knockdown(100) + L.DefaultCombatKnockdown(100) L.adjustBruteLoss(35) /obj/structure/trap/damage/flare() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index e2e0f703f7..bdf621f54c 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -529,7 +529,7 @@ if(B.cell.charge > 0 && B.status == 1) flick("baton_active", src) var/stunforce = B.stunforce - user.Knockdown(stunforce) + user.DefaultCombatKnockdown(stunforce) user.stuttering = stunforce/20 B.deductcharge(B.hitcost) user.visible_message("[user] shocks [user.p_them()]self while attempting to wash the active [B.name]!", \ diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 577c45a7f0..fb3087a1a8 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -273,7 +273,7 @@ var/olddir = C.dir if(!(lube & SLIDE_ICE)) - C.Knockdown(knockdown_amount) + C.DefaultCombatKnockdown(knockdown_amount) C.stop_pulling() else C.Stun(20) diff --git a/code/modules/admin/verbs/bluespacearty.dm b/code/modules/admin/verbs/bluespacearty.dm index 97248b572b..2910d6dd85 100644 --- a/code/modules/admin/verbs/bluespacearty.dm +++ b/code/modules/admin/verbs/bluespacearty.dm @@ -21,6 +21,6 @@ target.gib(1, 1) else target.adjustBruteLoss(min(99,(target.health - 1))) - target.Knockdown(400) + target.DefaultCombatKnockdown(400) target.stuttering = 20 diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index fce45810d1..f558132b82 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -507,7 +507,7 @@ L.lastattackerckey = user.ckey L.adjustStaminaLoss(35) //because previously it took 5-6 hits to actually "incapacitate" someone for the purposes of the sleep inducement - L.Knockdown(140) + L.DefaultCombatKnockdown(140) L.apply_effect(EFFECT_STUTTER, 7) SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm index 49aada3611..8f710a4344 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm @@ -72,7 +72,7 @@ if(rand(5 + powerlevel) >= 5) target.visible_message("[user] lands a vicious punch, sending [target] away!", \ "[user] has landed a horrifying punch on you, sending you flying!!", null, COMBAT_MESSAGE_RANGE) - target.Knockdown(min(5, rand(10, 10 * powerlevel)) ) + target.DefaultCombatKnockdown(min(5, rand(10, 10 * powerlevel)) ) // Chance of KO if(rand(6 + powerlevel) >= 6 && target.stat <= UNCONSCIOUS) target.Unconscious(40) @@ -147,7 +147,7 @@ // Knock Down (if Living) if (isliving(M)) var/mob/living/L = M - L.Knockdown(pull_power * 10 + 20) + L.DefaultCombatKnockdown(pull_power * 10 + 20) // Knock Back (before Knockdown, which probably cancels pull) var/send_dir = get_dir(owner, M) var/turf/T = get_ranged_target_turf(M, send_dir, pull_power) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm index 7c4cf46e3c..03ac85cc0c 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm @@ -306,7 +306,7 @@ // Bloodsuckers not affected by "the Kiss" of another vampire if (!target.mind || !target.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) target.Unconscious(50,0) - target.Knockdown(40 + 5 * level_current,1) + target.DefaultCombatKnockdown(40 + 5 * level_current,1) // NOTE: THis is based on level of power! if (ishuman(target)) target.adjustStaminaLoss(5, forced = TRUE)// Base Stamina Damage diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index ee1dd3007c..154a41dc44 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -70,7 +70,7 @@ if (newtarget && newtarget != target && !(newtarget in foundtargets))//!newtarget.IsKnockdown()) if (rand(0, 5) < level_current) playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) - newtarget.Knockdown(10 + level_current * 5) + newtarget.DefaultCombatKnockdown(10 + level_current * 5) if(newtarget.IsStun()) newtarget.spin(10,1) if (rand(0,4)) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index 2c1b8d6321..f9c9d3b590 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -70,7 +70,7 @@ if(target.Adjacent(owner)) // LEVEL 2: If behind target, mute or unconscious! if(do_knockdown) // && level_current >= 1) - target.Knockdown(15 + 10 * level_current,1) + target.DefaultCombatKnockdown(15 + 10 * level_current,1) target.adjustStaminaLoss(40 + 10 * level_current) // Cancel Walk (we were close enough to contact them) walk(owner, 0) diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm index 1e06fb39de..2a134748d4 100644 --- a/code/modules/antagonists/changeling/powers/headcrab.dm +++ b/code/modules/antagonists/changeling/powers/headcrab.dm @@ -30,7 +30,7 @@ H.confused += 3 for(var/mob/living/silicon/S in range(2,user)) to_chat(S, "Your sensors are disabled by a shower of blood!") - S.Knockdown(60) + S.DefaultCombatKnockdown(60) var/turf = get_turf(user) user.gib() . = TRUE diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm index 65e58ae65b..3de220dbcb 100644 --- a/code/modules/antagonists/changeling/powers/shriek.dm +++ b/code/modules/antagonists/changeling/powers/shriek.dm @@ -24,7 +24,7 @@ if(issilicon(M)) SEND_SOUND(M, sound('sound/weapons/flash.ogg')) - M.Knockdown(rand(100,200)) + M.DefaultCombatKnockdown(rand(100,200)) for(var/obj/machinery/light/L in range(4, user)) L.on = 1 diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index 1f25e06324..a98700683e 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -26,7 +26,7 @@ changeling.chem_recharge_slowdown -= 0.5 if(stacks >= 20) to_chat(user, "We collapse in exhaustion.") - user.Knockdown(60) + user.DefaultCombatKnockdown(60) user.emote("gasp") INVOKE_ASYNC(src, .proc/muscle_loop, user) @@ -40,7 +40,7 @@ if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") - user.Knockdown(40) + user.DefaultCombatKnockdown(40) user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES) changeling.chem_recharge_slowdown -= 0.5 break diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index a27f911163..01e93b95ae 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -80,7 +80,7 @@ if(iscultist(L)) //No longer stuns cultists, instead sets them on fire and burns them to_chat(L, "\"Watch your step, wretch.\"") L.adjustFireLoss(10) - L.Knockdown(20, FALSE) + L.DefaultCombatKnockdown(20, FALSE) L.adjust_fire_stacks(5) //Burn! L.IgniteMob() else @@ -155,7 +155,7 @@ if(brutedamage || burndamage) L.adjustBruteLoss(-(brutedamage * 0.25)) L.adjustFireLoss(-(burndamage * 0.25)) - L.Knockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with + L.DefaultCombatKnockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with if(iscarbon(L)) var/mob/living/carbon/C = L C.silent += 5 diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 1f616b7dbc..0be1817653 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -196,7 +196,7 @@ if(!iscultist(L)) L.visible_message("[L]'s eyes blaze with brilliant light!", \ "Your vision suddenly screams with white-hot light!") - L.Knockdown(15, TRUE, FALSE, 15) + L.DefaultCombatKnockdown(15, TRUE, FALSE, 15) L.apply_status_effect(STATUS_EFFECT_KINDLE) L.flash_act(1, 1) if(issilicon(target)) diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm index 7534f7c043..3c7004880b 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm @@ -57,15 +57,15 @@ else if(!..()) if(!L.anti_magic_check()) if(issilicon(L)) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) else if(iscultist(L)) L.confused += CLAMP(10 - L.confused, 0, 5) // Spearthrow now confuses enemy cultists + just deals extra damage / sets on fire instead of hardstunning + damage to_chat(L, "[src] crashes into you with burning force, sending you reeling!") L.adjust_fire_stacks(2) - L.Knockdown(1) + L.DefaultCombatKnockdown(1) L.IgniteMob() else - L.Knockdown(40) + L.DefaultCombatKnockdown(40) GLOB.clockwork_vitality += L.adjustFireLoss(bonus_burn * 3) //normally a total of 40 damage, 70 with ratvar break_spear(T) else diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm index 644d9eedd5..6a53097922 100644 --- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm +++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm @@ -176,7 +176,7 @@ var/datum/status_effect/belligerent/B = C.apply_status_effect(STATUS_EFFECT_BELLIGERENT) if(!QDELETED(B)) B.duration = world.time + 30 - C.Knockdown(5) //knocks down for half a second if affected + C.DefaultCombatKnockdown(5) //knocks down for half a second if affected sleep(!GLOB.ratvar_approaches ? 16 : 10) name = "judicial blast" layer = ABOVE_ALL_MOB_LAYER @@ -196,7 +196,7 @@ L.visible_message("Strange energy flows into [L]'s [I.name]!", \ "Your [I.name] shields you from [src]!") continue - L.Knockdown(15) //knocks down briefly when exploding + L.DefaultCombatKnockdown(15) //knocks down briefly when exploding if(!iscultist(L)) L.visible_message("[L] is struck by a judicial explosion!", \ "[!issilicon(L) ? "An unseen force slams you into the ground!" : "ERROR: Motor servos disabled by external source!"]") diff --git a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm index 1158b02a4c..98b3c32b0f 100644 --- a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm +++ b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm @@ -57,5 +57,5 @@ L.confused = min(L.confused + 15, 50) L.dizziness = min(L.dizziness + 15, 50) if(L.confused >= 25) - L.Knockdown(FLOOR(L.confused * 0.8, 1)) + L.DefaultCombatKnockdown(FLOOR(L.confused * 0.8, 1)) take_damage(max_integrity) diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm index 2f0db73bfc..a4b19f2d40 100644 --- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm +++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm @@ -22,7 +22,7 @@ if(buckled_mobs && LAZYLEN(buckled_mobs)) var/mob/living/L = buckled_mobs[1] if(iscarbon(L)) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) L.visible_message("[L] is maimed as the skewer shatters while still in [L.p_their()] body!") L.adjustBruteLoss(15) unbuckle_mob(L) @@ -117,6 +117,6 @@ return skewee.visible_message("[skewee] comes free of [src] with a squelching pop!", \ "You come free of [src]!") - skewee.Knockdown(30) + skewee.DefaultCombatKnockdown(30) playsound(skewee, 'sound/misc/desceration-03.ogg', 50, TRUE) unbuckle_mob(skewee) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 794010d9c0..88b5eb521a 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -439,7 +439,7 @@ "A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!") else if(!iscultist(L)) - L.Knockdown(160) + L.DefaultCombatKnockdown(160) L.adjustStaminaLoss(140) //Ensures hard stamcrit L.flash_act(1,1) if(issilicon(target)) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b4ddb9dbff..91a7343a72 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -49,7 +49,7 @@ /obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) if(!iscultist(user)) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) user.dropItemToGround(src, TRUE) user.visible_message("A powerful force shoves [user] away from [target]!", \ "\"You shouldn't play with sharp things. You'll poke someone's eye out.\"") @@ -148,7 +148,7 @@ user.emote("scream") user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) user.dropItemToGround(src, TRUE) - user.Knockdown(50) + user.DefaultCombatKnockdown(50) return force = initial(force) jaunt.Grant(user, src) @@ -405,7 +405,7 @@ to_chat(user, "An overwhelming sense of nausea overpowers you!") user.dropItemToGround(src, TRUE) user.Dizzy(30) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) else to_chat(user, "\"Trying to use things you don't own is bad, you know.\"") to_chat(user, "The armor squeezes at your body!") @@ -457,7 +457,7 @@ to_chat(user, "An overwhelming sense of nausea overpowers you!") user.dropItemToGround(src, TRUE) user.Dizzy(30) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) else to_chat(user, "\"Trying to use things you don't own is bad, you know.\"") to_chat(user, "The robes squeeze at your body!") @@ -478,7 +478,7 @@ to_chat(user, "\"You want to be blind, do you?\"") user.dropItemToGround(src, TRUE) user.Dizzy(30) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) user.blind_eyes(30) /obj/item/reagent_containers/glass/beaker/unholywater @@ -499,7 +499,7 @@ /obj/item/shuttle_curse/attack_self(mob/living/user) if(!iscultist(user)) user.dropItemToGround(src, TRUE) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) to_chat(user, "A powerful force shoves you away from [src]!") return if(curselimit > 1) @@ -705,10 +705,10 @@ if(is_servant_of_ratvar(L)) to_chat(L, "\"Kneel for me, scum\"") L.confused += CLAMP(10 - L.confused, 0, 5) //confuses and lightly knockdowns + damages hostile cultists instead of hardstunning like before - L.Knockdown(15) + L.DefaultCombatKnockdown(15) L.adjustBruteLoss(10) else - L.Knockdown(50) + L.DefaultCombatKnockdown(50) break_spear(T) else ..() @@ -843,7 +843,7 @@ INVOKE_ASYNC(src, .proc/pewpew, user, params) var/obj/structure/emergency_shield/invoker/N = new(user.loc) if(do_after(user, 90, target = user)) - user.Knockdown(40) + user.DefaultCombatKnockdown(40) to_chat(user, "You have exhausted the power of this spell!") firing = FALSE if(N) @@ -908,7 +908,7 @@ else var/mob/living/L = target if(L.density) - L.Knockdown(20) + L.DefaultCombatKnockdown(20) L.adjustBruteLoss(45) playsound(L, 'sound/hallucinations/wail.ogg', 50, 1) L.emote("scream") @@ -944,7 +944,7 @@ T.visible_message("The sheer force from [P] shatters the mirror shield!") new /obj/effect/temp_visual/cult/sparks(T) playsound(T, 'sound/effects/glassbr3.ogg', 100) - owner.Knockdown(25) + owner.DefaultCombatKnockdown(25) qdel(src) return FALSE if(P.is_reflectable) @@ -1001,9 +1001,9 @@ else if(!..()) if(!L.anti_magic_check()) if(is_servant_of_ratvar(L)) - L.Knockdown(60) + L.DefaultCombatKnockdown(60) else - L.Knockdown(30) + L.DefaultCombatKnockdown(30) if(D.thrower) for(var/mob/living/Next in orange(2, T)) if(!Next.density || iscultist(Next)) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index da002e568c..8253efb313 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -219,7 +219,7 @@ structure_check() searches for nearby cultist structures required for the invoca L.visible_message("[L]'s eyes glow a defiant yellow!", \ "\"Stop resisting. You will be mi-\"\n\ \"Give up and you will feel pain unlike anything you've ever felt!\"") - L.Knockdown(80) + L.DefaultCombatKnockdown(80) else if(is_convertable) do_convert(L, invokers) else @@ -908,7 +908,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(affecting.key) affecting.visible_message("[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ "You are re-united with your physical form. [src] releases its hold over you.") - affecting.Knockdown(40) + affecting.DefaultCombatKnockdown(40) break if(affecting.health <= 10) to_chat(G, "Your body can no longer sustain the connection!") @@ -970,7 +970,7 @@ structure_check() searches for nearby cultist structures required for the invoca playsound(T, 'sound/magic/enter_blood.ogg', 100, 1) visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!") for(var/mob/living/L in range(src, 3)) - L.Knockdown(30) + L.DefaultCombatKnockdown(30) empulse(T, 0.42*(intensity), 1) var/list/images = list() var/zmatch = T.z diff --git a/code/modules/antagonists/devil/devil_helpers.dm b/code/modules/antagonists/devil/devil_helpers.dm index 4d0a781570..d3445eac0f 100644 --- a/code/modules/antagonists/devil/devil_helpers.dm +++ b/code/modules/antagonists/devil/devil_helpers.dm @@ -32,7 +32,7 @@ if(BANE_HARVEST) if(istype(weapon, /obj/item/reagent_containers/food/snacks/grown/)) visible_message("The spirits of the harvest aid in the exorcism.", "The harvest spirits are harming you.") - Knockdown(40) + DefaultCombatKnockdown(40) qdel(weapon) return 2 return 1 \ No newline at end of file diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index ce455d9e67..fbd4aafd77 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -584,7 +584,7 @@ playsound(loc,'sound/effects/snap.ogg',50, 1, -1) L.electrocute_act(0, src, 1, 1, 1) if(iscyborg(L)) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) qdel(src) ..() diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index a0dbc4d9b1..676ef68ea9 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -261,7 +261,7 @@ GiveHint(target) else if(is_pointed(I)) to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!") - target.Knockdown(40) + target.DefaultCombatKnockdown(40) GiveHint(target) else if(istype(I, /obj/item/bikehorn)) to_chat(target, "HONK") diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 2ac3b34f60..b8efc28b1c 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -150,7 +150,7 @@ var/mob/living/silicon/robot/R = M log_combat(user, R, "flashed", src) update_icon(1) - R.Knockdown(rand(80,120)) + R.DefaultCombatKnockdown(rand(80,120)) var/diff = 5 * CONFUSION_STACK_MAX_MULTIPLIER - M.confused R.confused += min(5, diff) R.flash_act(affect_silicon = 1) @@ -204,7 +204,7 @@ . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection()) - M.Knockdown(80) + M.DefaultCombatKnockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) ..() diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 950c0dd109..3e81322fc6 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -48,7 +48,7 @@ if("feet") if(!H.shoes) affecting = H.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - H.Knockdown(60) + H.DefaultCombatKnockdown(60) if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND) if(!H.gloves) affecting = H.get_bodypart(type) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 5a53e2776a..2a5960086b 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -220,7 +220,7 @@ if(user.wear_suit == src) if(hard_landing) user.electrocute_act(35, src, safety = 1) - user.Knockdown(200) + user.DefaultCombatKnockdown(200) if(!silent) to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n") if(camera) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index 04aacfc3f5..2f9ded7848 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -481,7 +481,7 @@ adjust_momentum(0, 0, 10) wearer.visible_message("[wearer]'s flight suit crashes into the ground!") if(knockdown) - wearer.Knockdown(80) + wearer.DefaultCombatKnockdown(80) momentum_x = 0 momentum_y = 0 calculate_momentum_speed() diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index 0d2f68f580..972a0b02e6 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -242,7 +242,7 @@ return owner.visible_message("The reactive teleport system flings [H] clear of [attack_text] and slams [H.p_them()] into a fabricated table!") owner.visible_message("[H] GOES ON THE TABLE!!!") - owner.Knockdown(40) + owner.DefaultCombatKnockdown(40) var/list/turfs = new/list() for(var/turf/T in orange(tele_range, H)) if(T.density) diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm index 79bd866fca..13a2bc0135 100644 --- a/code/modules/fields/peaceborg_dampener.dm +++ b/code/modules/fields/peaceborg_dampener.dm @@ -42,7 +42,7 @@ if(R.has_buckled_mobs()) for(var/mob/living/L in R.buckled_mobs) L.visible_message("[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!") //I know it's bad. - L.Knockdown(10) + L.DefaultCombatKnockdown(10) R.unbuckle_mob(L) do_sparks(5, 0, L) ..() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index f5262742e2..b3005dbb0d 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( /obj/effect/hallucination/simple/xeno/throw_impact(A) update_icon("alienh_pounce") if(A == target && target.stat!=DEAD) - target.Knockdown(100) + target.DefaultCombatKnockdown(100) target.visible_message("[target] flails around wildly.","[name] pounces on you!") /datum/hallucination/xeno_attack @@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( shake_camera(target, 2, 1) if(bubblegum.Adjacent(target) && !charged) charged = TRUE - target.Knockdown(80) + target.DefaultCombatKnockdown(80) target.adjustStaminaLoss(40) step_away(target, bubblegum) shake_camera(target, 4, 3) @@ -1102,7 +1102,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(istype(target, /obj/effect/dummy/phased_mob)) return to_chat(target, "You fall into the chasm!") - target.Knockdown(40) + target.DefaultCombatKnockdown(40) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "It's surprisingly shallow."), 15) QDEL_IN(src, 30) @@ -1136,7 +1136,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( set waitfor = FALSE ..() target.set_screwyhud(SCREWYHUD_DEAD) - target.Knockdown(300) + target.DefaultCombatKnockdown(300) target.silent += 10 to_chat(target, "[target.real_name] has died at [get_area_name(target)].") if(prob(50)) @@ -1241,7 +1241,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( /datum/hallucination/shock/proc/shock_drop() target.jitteriness = max(target.jitteriness - 990, 10) //Still jittery, but vastly less - target.Knockdown(60) + target.DefaultCombatKnockdown(60) /datum/hallucination/husks @@ -1314,7 +1314,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( "[G] grabs your wrist and violently wrenches it to the side!") C.emote("scream") C.dropItemToGround(C.get_active_held_item()) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) else to_chat(C,"[G] violently grabs you!") qdel(src) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 271ff93b15..3b4a58c715 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -85,7 +85,7 @@ head_attack_message = " on the head" //Knockdown the target for the duration that we calculated and divide it by 5. if(armor_duration) - target.Knockdown(min(armor_duration, 200)) // Never knockdown more than a flash! + target.DefaultCombatKnockdown(min(armor_duration, 200)) // Never knockdown more than a flash! //Display an attack message. if(target != user) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index cf499c9d15..3d19297412 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -225,7 +225,7 @@ if(iscarbon(M)) M.visible_message("[src] bursts out of [M]!") M.emote("scream") - M.Knockdown(40) + M.DefaultCombatKnockdown(40) M.adjustBruteLoss(60) Expand() return ..() diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index bc66d353e1..64e5f1e31d 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -49,7 +49,7 @@ else creamoverlay.icon_state = "creampie_human" if(stunning) - H.Knockdown(20) //splat! + H.DefaultCombatKnockdown(20) //splat! H.adjust_blurriness(1) H.visible_message("[H] is creamed by [src]!", "You've been creamed by [src]!") playsound(H, "desceration", 50, TRUE) @@ -82,7 +82,7 @@ A.throw_at(T, 1, 1) M.visible_message("[src] bursts out of [M]!") M.emote("scream") - M.Knockdown(40) + M.DefaultCombatKnockdown(40) M.adjustBruteLoss(60) return ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 1bc2e4bb89..eb0b60050e 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -150,6 +150,6 @@ God bless America. reagents.reaction(C, TOUCH) C.apply_damage(min(30, reagents.total_volume), BURN, BODY_ZONE_HEAD) reagents.remove_any((reagents.total_volume/2)) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) user.changeNext_move(CLICK_CD_MELEE) return ..() diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 5c143f7a25..450a32e960 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -87,7 +87,7 @@ playsound(src, 'sound/items/dodgeball.ogg', 50, 1) M.apply_damage(10, STAMINA) if(prob(5)) - M.Knockdown(60) + M.DefaultCombatKnockdown(60) visible_message("[M] is knocked right off [M.p_their()] feet!") // @@ -117,7 +117,7 @@ to_chat(user, "You need a better grip to do that!") return L.forceMove(loc) - L.Knockdown(100) + L.DefaultCombatKnockdown(100) visible_message("[user] dunks [L] into \the [src]!") user.stop_pulling() else diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index dbcce2830b..8115ce2313 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -98,7 +98,7 @@ /obj/item/reagent_containers/food/snacks/grown/nettle/death/pickup(mob/living/carbon/user) if(..()) if(prob(50)) - user.Knockdown(100) + user.DefaultCombatKnockdown(100) to_chat(user, "You are stunned by the Deathnettle as you try picking it up!") /obj/item/reagent_containers/food/snacks/grown/nettle/death/attack(mob/living/carbon/M, mob/user) @@ -111,5 +111,5 @@ M.adjust_blurriness(force/7) if(prob(20)) M.Unconscious(force / 0.3) - M.Knockdown(force / 0.75) + M.DefaultCombatKnockdown(force / 0.75) M.drop_all_held_items() diff --git a/code/modules/integrated_electronics/subtypes/weaponized.dm b/code/modules/integrated_electronics/subtypes/weaponized.dm index 350f05914d..02340970af 100644 --- a/code/modules/integrated_electronics/subtypes/weaponized.dm +++ b/code/modules/integrated_electronics/subtypes/weaponized.dm @@ -336,7 +336,7 @@ if(!L || !isliving(L)) return 0 - L.Knockdown(stunforce) + L.DefaultCombatKnockdown(stunforce) SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) message_admins("stunned someone with an assembly. Last touches: Assembly: [assembly.fingerprintslast] Circuit: [fingerprintslast]") diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 5e2e8bdd5a..c31008fa62 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -93,7 +93,7 @@ playsound(M,'sound/weapons/resonator_blast.ogg',50,1) if(iscarbon(M)) var/mob/living/carbon/L = M - L.Knockdown(60) + L.DefaultCombatKnockdown(60) if(ishuman(L)) shake_camera(L, 20, 1) addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index f46f4f785c..f44e5b42c2 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -73,7 +73,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) var/mutable_appearance/balloon3 if(isliving(A)) var/mob/living/M = A - M.Knockdown(320) // Keep them from moving during the duration of the extraction + M.DefaultCombatKnockdown(320) // Keep them from moving during the duration of the extraction M.buckled = 0 // Unbuckle them to prevent anchoring problems else A.anchored = TRUE diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index d1ed09665b..fe3a1696a4 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -65,16 +65,16 @@ var/mob/living/L = A if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK)) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.Knockdown(100) + L.DefaultCombatKnockdown(100) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) else - Knockdown(40, 1, 1) + DefaultCombatKnockdown(40, 1, 1) toggle_leap(0) else if(A.density && !A.CanPass(src)) visible_message("[src] smashes into [A]!", "[src] smashes into [A]!") - Knockdown(40, 1, 1) + DefaultCombatKnockdown(40, 1, 1) if(leaping) leaping = 0 diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index e4e8f06cfa..3c7da07ef7 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -138,7 +138,7 @@ else if(ishuman(owner)) //Humans, being more fragile, are more overwhelmed by the mental backlash. to_chat(owner, "You feel a splitting pain in your head, and are struck with a wave of nausea. You cannot hear the hivemind anymore!") owner.emote("scream") - owner.Knockdown(100) + owner.DefaultCombatKnockdown(100) owner.jitteriness += 30 owner.confused += 30 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 102bc6fc3d..5f48c6dc3d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -105,7 +105,7 @@ hurt = FALSE if(hit_atom.density && isturf(hit_atom)) if(hurt) - Knockdown(20) + DefaultCombatKnockdown(20) take_bodypart_damage(10) if(iscarbon(hit_atom) && hit_atom != src) var/mob/living/carbon/victim = hit_atom @@ -114,8 +114,8 @@ if(hurt) victim.take_bodypart_damage(10) take_bodypart_damage(10) - victim.Knockdown(20) - Knockdown(20) + victim.DefaultCombatKnockdown(20) + DefaultCombatKnockdown(20) visible_message("[src] crashes into [victim], knocking them both over!",\ "You violently crash into [victim]!") playsound(src,'sound/weapons/punch1.ogg',50,1) @@ -304,7 +304,7 @@ /mob/living/carbon/resist_fire() fire_stacks -= 5 - Knockdown(60, TRUE, TRUE) + DefaultCombatKnockdown(60, TRUE, TRUE) spin(32,2) visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \ "You stop, drop, and roll!") @@ -490,7 +490,7 @@ visible_message("[src] dry heaves!", \ "You try to throw up, but there's nothing in your stomach!") if(stun) - Knockdown(200) + DefaultCombatKnockdown(200) return 1 if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious @@ -576,7 +576,7 @@ if(total_health <= crit_threshold && !stat) if(!IsKnockdown()) to_chat(src, "You're too exhausted to keep going...") - Knockdown(100) + DefaultCombatKnockdown(100) update_health_hud() /mob/living/carbon/update_sight() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index ba40ae8e5f..3c1a529d3f 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -188,7 +188,7 @@ do_sparks(5, TRUE, src) var/power = M.powerlevel + rand(0,3) - Knockdown(power*20) + DefaultCombatKnockdown(power*20) if(stuttering < power) stuttering = power if (prob(stunprob) && M.powerlevel >= 8) @@ -262,7 +262,7 @@ spawn(20) jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less if((!tesla_shock || (tesla_shock && siemens_coeff > 0.5)) && stun) - Knockdown(60) + DefaultCombatKnockdown(60) if(override) return override else @@ -415,7 +415,7 @@ var/effect_amount = intensity - ear_safety if(effect_amount > 0) if(stun_pwr) - Knockdown(stun_pwr*effect_amount) + DefaultCombatKnockdown(stun_pwr*effect_amount) if(istype(ears) && (deafen_pwr || damage_pwr)) var/ear_damage = damage_pwr * effect_amount diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0007233975..b6461f3c71 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -842,7 +842,7 @@ visible_message("[src] dry heaves!", \ "You try to throw up, but there's nothing in your stomach!") if(stun) - Knockdown(200) + DefaultCombatKnockdown(200) return 1 ..() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 2b1d6afc4f..fe1a6d7d1c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -176,7 +176,7 @@ "[M] disarmed [src]!") else if(!M.client || prob(5)) // only natural monkeys get to stun reliably, (they only do it occasionaly) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - Knockdown(100) + DefaultCombatKnockdown(100) log_combat(M, src, "tackled") visible_message("[M] has tackled down [src]!", \ "[M] has tackled down [src]!") @@ -225,9 +225,9 @@ else playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) if(!lying) //CITADEL EDIT - Knockdown(100, TRUE, FALSE, 30, 25) + DefaultCombatKnockdown(100, TRUE, FALSE, 30, 25) else - Knockdown(100) + DefaultCombatKnockdown(100) log_combat(M, src, "tackled") visible_message("[M] has tackled down [src]!", \ "[M] has tackled down [src]!") @@ -294,10 +294,10 @@ switch(M.damtype) if("brute") if(M.force > 35) // durand and other heavy mechas - Knockdown(50) + DefaultCombatKnockdown(50) src.throw_at(throw_target, rand(1,5), 7) else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax - Knockdown(30) + DefaultCombatKnockdown(30) src.throw_at(throw_target, rand(1,3), 7) update |= temp.receive_damage(dmg, 0) playsound(src, 'sound/weapons/punch4.ogg', 50, 1) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2e069297b3..2324fe4b99 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1372,7 +1372,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!H.IsKnockdown()) H.emote("collapse") - H.Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) + H.DefaultCombatKnockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(H, "You feel weak.") if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) @@ -1896,13 +1896,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/directional_blocked = !target.Adjacent(target_shove_turf) var/targetatrest = target.resting if((directional_blocked || !(target_collateral_human || target_shove_turf.shove_act(target, user))) && !targetatrest) - target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_SOLID) user.visible_message("[user.name] shoves [target.name], knocking them down!", "You shove [target.name], knocking them down!", null, COMBAT_MESSAGE_RANGE) log_combat(user, target, "shoved", "knocking them down") else if(target_collateral_human && !targetatrest) - target.Knockdown(SHOVE_KNOCKDOWN_HUMAN) - target_collateral_human.Knockdown(SHOVE_KNOCKDOWN_COLLATERAL) + target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_HUMAN) + target_collateral_human.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_COLLATERAL) user.visible_message("[user.name] shoves [target.name] into [target_collateral_human.name]!", "You shove [target.name] into [target_collateral_human.name]!", null, COMBAT_MESSAGE_RANGE) log_combat(user, target, "shoved", "into [target_collateral_human.name]") diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index f0dd48c6c1..735eaab379 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -57,7 +57,7 @@ if(/obj/item/projectile/energy/floramut) if(prob(15)) H.rad_act(rand(30,80)) - H.Knockdown(100) + H.DefaultCombatKnockdown(100) H.visible_message("[H] writhes in pain as [H.p_their()] vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.") if(prob(80)) H.randmutb() diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 49121c9409..37bafdab67 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -3,7 +3,7 @@ amount = dna.species.spec_stun(src,amount) return ..() -/mob/living/carbon/human/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) +/mob/living/carbon/human/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) amount = dna.species.spec_stun(src,amount) return ..() diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 906e138b0a..385ae6cfd4 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -33,7 +33,7 @@ if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) emote("collapse") - Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) + DefaultCombatKnockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(src, "You feel weak.") if(radiation > RAD_MOB_MUTATE) if(prob(1)) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 32e3d21ee2..3fd0001a12 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -82,7 +82,7 @@ if(!IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) - Knockdown(40) + DefaultCombatKnockdown(40) playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) log_combat(M, src, "pushed") visible_message("[M] has pushed down [src]!", \ @@ -126,7 +126,7 @@ var/obj/item/I = null playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) if(prob(95)) - Knockdown(20) + DefaultCombatKnockdown(20) visible_message("[M] has tackled down [name]!", \ "[M] has tackled down [name]!", null, COMBAT_MESSAGE_RANGE) else diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 57b65a53f7..dc53337e2d 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -88,7 +88,7 @@ if(EFFECT_STUN) Stun(effect * hit_percent) if(EFFECT_KNOCKDOWN) - Knockdown(effect * hit_percent, override_stamdmg = knockdown_stammax ? CLAMP(knockdown_stamoverride, 0, knockdown_stammax-getStaminaLoss()) : knockdown_stamoverride) + DefaultCombatKnockdown(effect * hit_percent, override_stamdmg = knockdown_stammax ? CLAMP(knockdown_stamoverride, 0, knockdown_stammax-getStaminaLoss()) : knockdown_stamoverride) if(EFFECT_UNCONSCIOUS) Unconscious(effect * hit_percent) if(EFFECT_IRRADIATE) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 041b367ebf..782b8331b0 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -258,7 +258,7 @@ if(H.get_num_arms() == 0) if(H.get_num_legs() != 0) message_param = "tries to point at %t with a leg, falling down in the process!" - H.Knockdown(20) + H.DefaultCombatKnockdown(20) else message_param = "bumps [user.p_their()] head on the ground trying to motion towards %t." H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5) @@ -362,7 +362,7 @@ . = ..() if(. && isliving(user)) var/mob/living/L = user - L.Knockdown(200) + L.DefaultCombatKnockdown(200) /datum/emote/living/sway key = "sway" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index cbe57c2284..12bc5f925f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -53,7 +53,7 @@ /mob/living/proc/ZImpactDamage(turf/T, levels) visible_message("[src] crashes into [T] with a sickening noise!") adjustBruteLoss((levels * 5) ** 1.5) - Knockdown(levels * 50) + DefaultCombatKnockdown(levels * 50) /mob/living/proc/OpenCraftingMenu() @@ -1025,7 +1025,7 @@ "[C] trips over [src] and falls!", \ "[C] topples over [src]!", \ "[C] leaps out of [src]'s way!")]") - C.Knockdown(40) + C.DefaultCombatKnockdown(40) /mob/living/ConveyorMove() if((movement_type & FLYING) && !stat) diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index c727e100d8..14d3f5b256 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -7,7 +7,7 @@ if(. & EMP_PROTECT_SELF) return take_holo_damage(50/severity) - Knockdown(400/severity) + DefaultCombatKnockdown(400/severity) silent = max((3 MINUTES)/severity, silent) if(holoform) fold_in(force = TRUE) @@ -22,10 +22,10 @@ qdel(src) if(2) fold_in(force = 1) - Knockdown(400) + DefaultCombatKnockdown(400) if(3) fold_in(force = 1) - Knockdown(200) + DefaultCombatKnockdown(200) //ATTACK HAND IGNORING PARENT RETURN VALUE /mob/living/silicon/pai/attack_hand(mob/living/carbon/human/user) @@ -96,7 +96,7 @@ take_holo_damage(amount * 0.25) /mob/living/silicon/pai/adjustOrganLoss(slot, amount, maximum = 500) //I kept this in, unlike tg - Knockdown(amount * 0.2) + DefaultCombatKnockdown(amount * 0.2) /mob/living/silicon/pai/getBruteLoss() return emittermaxhealth - emitterhealth diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index ca8ad25713..1bb7ce2df3 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -32,7 +32,7 @@ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) if(prob(damage)) for(var/mob/living/N in buckled_mobs) - N.Knockdown(20) + N.DefaultCombatKnockdown(20) unbuckle_mob(N) N.visible_message("[N] is knocked off of [src] by [M]!") switch(M.melee_damage_type) @@ -106,7 +106,7 @@ for(var/mob/living/M in buckled_mobs) if(prob(severity*50)) unbuckle_mob(M) - M.Knockdown(40) + M.DefaultCombatKnockdown(40) M.visible_message("[M] is thrown off of [src]!") flash_act(affect_silicon = 1) @@ -123,7 +123,7 @@ for(var/mob/living/M in buckled_mobs) M.visible_message("[M] is knocked off of [src]!") unbuckle_mob(M) - M.Knockdown(40) + M.DefaultCombatKnockdown(40) if(P.stun || P.knockdown) for(var/mob/living/M in buckled_mobs) unbuckle_mob(M) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index cbd985c358..bb94dbd0f1 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -545,7 +545,7 @@ Auto Patrol[]"}, spawn(2) icon_state = "[lasercolor]ed209[on]" var/threat = 5 - C.Knockdown(100) + C.DefaultCombatKnockdown(100) C.stuttering = 5 if(ishuman(C)) var/mob/living/carbon/human/H = C diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 109c7b4636..07bfec986f 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -196,7 +196,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, C.stuttering = 20 C.adjustEarDamage(0, 5) //far less damage than the H.O.N.K. C.Jitter(50) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) var/mob/living/carbon/human/H = C if(client) //prevent spam from players.. spam_flag = TRUE @@ -215,7 +215,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, "[src] has honked you!") else C.stuttering = 20 - C.Knockdown(80) + C.DefaultCombatKnockdown(80) addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime) @@ -358,7 +358,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, "[C] trips over [src] and falls!", \ "[C] topples over [src]!", \ "[C] leaps out of [src]'s way!")]") - C.Knockdown(10) + C.DefaultCombatKnockdown(10) playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 1, -1) if(!client) speak("Honk!") diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 426de81da0..8a67d5d6f7 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -635,7 +635,7 @@ if(!paicard) log_combat(src, L, "knocked down") visible_message("[src] knocks over [L]!") - L.Knockdown(160) + L.DefaultCombatKnockdown(160) return ..() // called from mob/living/carbon/human/Crossed() diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index ee770fc2ca..6cc74bd0f7 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -254,11 +254,11 @@ Auto Patrol: []"}, var/threat = 5 if(ishuman(C)) C.stuttering = 5 - C.Knockdown(100) + C.DefaultCombatKnockdown(100) var/mob/living/carbon/human/H = C threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) else - C.Knockdown(100) + C.DefaultCombatKnockdown(100) C.stuttering = 5 threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index be900aa4ef..d0884d1300 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -353,7 +353,7 @@ if(!LAZYLEN(parts)) if(undismembermerable_limbs) //they have limbs we can't remove, and no parts we can, attack! return ..() - C.Knockdown(60) + C.DefaultCombatKnockdown(60) visible_message("[src] knocks [C] down!") to_chat(src, "\"Bring [C.p_them()] to me.\"") return FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 521f458e2f..06d83bf235 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -222,7 +222,7 @@ if(.) update_icons() -/mob/living/simple_animal/drone/cogscarab/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) +/mob/living/simple_animal/drone/cogscarab/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) . = ..() if(.) update_icons() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 2679c68b52..67401658b6 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -160,7 +160,7 @@ M.visible_message("[M] tips over [src].", "You tip over [src].") to_chat(src, "You are tipped over by [M]!") - Knockdown(60,ignore_canknockdown = TRUE) + DefaultCombatKnockdown(60,ignore_canknockdown = TRUE) icon_state = icon_dead spawn(rand(20,50)) if(!stat && M) diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index bc766f7409..947e8d1f56 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -41,6 +41,6 @@ . = ..() if(. && prob(12) && iscarbon(target)) var/mob/living/carbon/C = target - C.Knockdown(60) + C.DefaultCombatKnockdown(60) C.visible_message("\The [src] knocks down \the [C]!", \ "\The [src] knocks you down!") diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm index 6866df01d5..b1542461da 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm @@ -71,7 +71,7 @@ var/atom/throw_target = get_edge_target_turf(L, dir) L.throw_at(throw_target, rand(1,2), 7, src) else - L.Knockdown(20) + L.DefaultCombatKnockdown(20) visible_message("[src] knocks [L] down!") /mob/living/simple_animal/hostile/gorilla/CanAttack(atom/the_target) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index d1e8f1f49e..0cf21921a2 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -93,7 +93,7 @@ var/mob/living/L = AM if(!istype(L, /mob/living/simple_animal/hostile/jungle/leaper)) playsound(src,'sound/effects/snap.ogg',50, 1, -1) - L.Knockdown(50) + L.DefaultCombatKnockdown(50) if(iscarbon(L)) var/mob/living/carbon/C = L C.reagents.add_reagent("leaper_venom", 5) diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index ca5323a978..a65a02a5ca 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -69,7 +69,7 @@ icon_state = initial(icon_state) if(prob(15) && iscarbon(target)) var/mob/living/carbon/C = target - C.Knockdown(40) + C.DefaultCombatKnockdown(40) C.visible_message("\The [src] knocks down \the [C]!", \ "\The [src] knocks you down!") @@ -179,7 +179,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca . = ..() if(knockdown_people && . && prob(15) && iscarbon(target)) var/mob/living/carbon/C = target - C.Knockdown(40) + C.DefaultCombatKnockdown(40) C.visible_message("\The [src] knocks down \the [C]!", \ "\The [src] knocks you down!") diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index fc51b9afe4..4c3d66a937 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -56,7 +56,7 @@ if(iscarbon(target)) var/mob/living/carbon/C = target if(prob(15)) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) C.visible_message("\The [src] knocks down \the [C]!", \ "\The [src] knocks you down!") diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index 29bc2cbff0..976f8df229 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -94,7 +94,7 @@ if(prob(grasp_pull_chance)) setDir(get_dir(src,L) )//staaaare step(L,get_dir(L,src)) //reel them in - L.Knockdown(60) //you can't get away now~ + L.DefaultCombatKnockdown(60) //you can't get away now~ if(grasping.len < max_grasps) grasping: diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 6ed81b7aeb..d2bfb4c608 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -237,7 +237,7 @@ //Blanket /mob/living/proc/AllImmobility(amount, updating) Paralyze(amount, FALSE) - Knockdown(amount, FALSE) + DefaultCombatKnockdown(amount, FALSE) Stun(amount, FALSE) Immobilize(amount, FALSE) if(updating) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 10fce3d74e..6553211c07 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -263,7 +263,7 @@ They *could* go in their appropriate files, but this is supposed to be modular visible_message("[H] electrocutes [src] with [H.p_their()] touch!", "[H] electrocutes you with [H.p_their()] touch!") electrocute_act(15, H) - Knockdown(G.stunforce) + DefaultCombatKnockdown(G.stunforce) adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST)) apply_effect(EFFECT_STUTTER, G.stunforce) SEND_SIGNAL(src, COMSIG_LIVING_MINOR_SHOCK) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index f3f7e45378..d88d20ebe4 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -118,7 +118,7 @@ H.adjust_blurriness(6) if(eyes) eyes.applyOrganDamage(rand(6,8)) - H.Knockdown(40) + H.DefaultCombatKnockdown(40) H.emote("scream") /obj/item/paper/examine(mob/user) diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 3b0f7e7f6f..df268dffae 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -107,7 +107,7 @@ var/shock_damage = min(rand(30,40),rand(30,40)) if(iscarbon(user)) - user.Knockdown(300) + user.DefaultCombatKnockdown(300) user.electrocute_act(shock_damage, src, 1) else if(issilicon(user)) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 31a5131804..3a74a59fe0 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -359,4 +359,4 @@ user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") user.emote("scream") user.drop_all_held_items() - user.Knockdown(80) + user.DefaultCombatKnockdown(80) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 791db320a2..2b894a9189 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -529,7 +529,7 @@ else used = 1 victim.take_overall_damage(30,30) - victim.Knockdown(60) + victim.DefaultCombatKnockdown(60) explosion(src, -1, -1, -1, -1, FALSE, FALSE, 5) /obj/item/projectile/magic/nuclear/Destroy() diff --git a/code/modules/projectiles/projectile/special/hallucination.dm b/code/modules/projectiles/projectile/special/hallucination.dm index 5814e7138e..af11638781 100644 --- a/code/modules/projectiles/projectile/special/hallucination.dm +++ b/code/modules/projectiles/projectile/special/hallucination.dm @@ -166,7 +166,7 @@ hal_impact_effect_wall = null /obj/item/projectile/hallucination/taser/hal_apply_effect() - hal_target.Knockdown(100) + hal_target.DefaultCombatKnockdown(100) hal_target.stuttering += 20 if(hal_target.dna && hal_target.dna.check_mutation(HULK)) hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk") @@ -199,7 +199,7 @@ hal_impact_effect_wall = null /obj/item/projectile/hallucination/ebow/hal_apply_effect() - hal_target.Knockdown(100) + hal_target.DefaultCombatKnockdown(100) hal_target.stuttering += 5 hal_target.adjustStaminaLoss(8) diff --git a/code/modules/projectiles/projectile/special/neurotoxin.dm b/code/modules/projectiles/projectile/special/neurotoxin.dm index 1d359585c0..2dba44817e 100644 --- a/code/modules/projectiles/projectile/special/neurotoxin.dm +++ b/code/modules/projectiles/projectile/special/neurotoxin.dm @@ -10,5 +10,5 @@ nodamage = TRUE else if(iscarbon(target)) var/mob/living/L = target - L.Knockdown(100, TRUE, FALSE, 30, 25) + L.DefaultCombatKnockdown(100, TRUE, FALSE, 30, 25) return ..() diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 64e693a326..2e6bc62673 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -335,7 +335,7 @@ victim.blind_eyes(2) victim.confused = max(M.confused, 3) victim.damageoverlaytemp = 60 - victim.Knockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 3, 15)) + victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 3, 15)) return else if ( eyes_covered ) // Eye cover is better than mouth cover victim.blur_eyes(3) @@ -348,7 +348,7 @@ victim.blind_eyes(3) victim.confused = max(M.confused, 6) victim.damageoverlaytemp = 75 - victim.Knockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 5, 25)) + victim.DefaultCombatKnockdown(80, override_hardstun = 0.1, override_stamdmg = min(reac_volume * 5, 25)) victim.update_damage_hud() /datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d8ff084227..52e4568b06 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1466,7 +1466,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(prob(20)) to_chat(M, "You have a sudden fit!") M.emote("moan") - M.Knockdown(20, 1, 0) // you should be in a bad spot at this point unless epipen has been used + M.DefaultCombatKnockdown(20, 1, 0) // you should be in a bad spot at this point unless epipen has been used if(81) to_chat(M, "You feel too exhausted to continue!") // at this point you will eventually die unless you get charcoal M.adjustOxyLoss(0.1*REM, 0) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index bd6eb4244c..550b9490fc 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -634,7 +634,7 @@ return to_chat(H, "You crumple in agony as your flesh wildly morphs into new forms!") H.visible_message("[H] falls to the ground and screams as [H.p_their()] skin bubbles and froths!") //'froths' sounds painful when used with SKIN. - H.Knockdown(60) + H.DefaultCombatKnockdown(60) addtimer(CALLBACK(src, .proc/mutate, H), 30) return diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index f97204b45e..cc72917bd0 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -553,7 +553,7 @@ var/picked_option = rand(1,3) switch(picked_option) if(1) - C.Knockdown(60, 0) + C.DefaultCombatKnockdown(60, 0) . = TRUE if(2) C.losebreath += 10 @@ -700,7 +700,7 @@ /datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M) if(current_cycle >= 11) - M.Knockdown(60, 0) + M.DefaultCombatKnockdown(60, 0) M.adjustOxyLoss(1*REM, 0) . = 1 ..() @@ -872,7 +872,7 @@ holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency) M.adjustToxLoss(actual_toxpwr*REM, 0) if(prob(10)) - M.Knockdown(20, 0) + M.DefaultCombatKnockdown(20, 0) . = 1 ..() diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index ad1efc1da7..f42974f163 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -76,7 +76,7 @@ for(var/mob/living/carbon/C in get_hearers_in_view(round(created_volume/48,1),get_turf(holder.my_atom))) if(iscultist(C)) to_chat(C, "The divine explosion sears you!") - C.Knockdown(40) + C.DefaultCombatKnockdown(40) C.adjust_fire_stacks(5) C.IgniteMob() ..(holder, created_volume, T) @@ -252,7 +252,7 @@ for(var/mob/living/carbon/C in get_hearers_in_view(range, location)) if(C.flash_act()) if(get_dist(C, location) < 4) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) else C.Stun(100) holder.remove_reagent("flash_powder", created_volume*3) @@ -273,7 +273,7 @@ for(var/mob/living/carbon/C in get_hearers_in_view(range, location)) if(C.flash_act()) if(get_dist(C, location) < 4) - C.Knockdown(60) + C.DefaultCombatKnockdown(60) else C.Stun(100) diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 7025a649e6..fa1126cecb 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -389,7 +389,7 @@ /obj/machinery/disposal/bin/shove_act(mob/living/target, mob/living/user) if(!can_stuff_mob_in(target, user, TRUE)) return FALSE - target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_SOLID) target.forceMove(src) user.visible_message("[user.name] shoves [target.name] into \the [src]!", "You shove [target.name] into \the [src]!", null, COMBAT_MESSAGE_RANGE) diff --git a/code/modules/research/nanites/nanite_programs/rogue.dm b/code/modules/research/nanites/nanite_programs/rogue.dm index 287aed36fe..cd9b30bee9 100644 --- a/code/modules/research/nanites/nanite_programs/rogue.dm +++ b/code/modules/research/nanites/nanite_programs/rogue.dm @@ -116,4 +116,4 @@ host_mob.drop_all_held_items() else if(prob(4)) to_chat(host_mob, "You can't feel your legs!") - host_mob.Knockdown(30) + host_mob.DefaultCombatKnockdown(30) diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index a6225fd337..2ad708b587 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -55,7 +55,7 @@ if(!..()) return playsound(host_mob, "sparks", 75, 1, -1) - host_mob.Knockdown(80) + host_mob.DefaultCombatKnockdown(80) /datum/nanite_program/pacifying name = "Pacification" diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 121ee2e07f..ccef46842e 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -318,7 +318,7 @@ All ShuttleMove procs go here var/knockdown = movement_force["KNOCKDOWN"] if(knockdown) - Knockdown(knockdown) + DefaultCombatKnockdown(knockdown) /mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock) diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index 2d17a8e55a..f05adb9309 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -186,7 +186,7 @@ // No climbing on the bar please var/mob/living/M = AM var/throwtarget = get_edge_target_turf(src, boot_dir) - M.Knockdown(40) + M.DefaultCombatKnockdown(40) M.throw_at(throwtarget, 5, 1) to_chat(M, "No climbing on the bar please.") else diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index d97d466e4d..3952a347e0 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -198,7 +198,7 @@ if(H.anti_magic_check(FALSE, TRUE)) continue H.mind.add_antag_datum(/datum/antagonist/sintouched) - H.Knockdown(400) + H.DefaultCombatKnockdown(400) /obj/effect/proc_holder/spell/targeted/summon_dancefloor diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index 8108b121ae..d7f5395e1b 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -123,9 +123,9 @@ M.SetSleeping(0) M.stuttering += 20*mul M.adjustEarDamage(0, 30*mul) - M.Knockdown(60*mul) + M.DefaultCombatKnockdown(60*mul) if(prob(40)) - M.Knockdown(200*mul) + M.DefaultCombatKnockdown(200*mul) else M.Jitter(500*mul) diff --git a/code/modules/spells/spell_types/inflict_handler.dm b/code/modules/spells/spell_types/inflict_handler.dm index 3ccc039285..2f78bb83fa 100644 --- a/code/modules/spells/spell_types/inflict_handler.dm +++ b/code/modules/spells/spell_types/inflict_handler.dm @@ -46,7 +46,7 @@ if(!amt_knockdown && amt_dam_stam) target.adjustStaminaLoss(amt_dam_stam) else - target.Knockdown(amt_knockdown, override_hardstun = amt_hardstun, override_stamdmg = amt_dam_stam) + target.DefaultCombatKnockdown(amt_knockdown, override_hardstun = amt_hardstun, override_stamdmg = amt_dam_stam) target.Unconscious(amt_unconscious) target.Stun(amt_stun) diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index 0cbb3a8272..4a3621a52b 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -135,7 +135,7 @@ lich.hardset_dna(null,null,lich.real_name,null, new /datum/species/skeleton/space) to_chat(lich, "Your bones clatter and shudder as you are pulled back into this world!") var/turf/body_turf = get_turf(old_body) - lich.Knockdown(200 + 200*resurrections) + lich.DefaultCombatKnockdown(200 + 200*resurrections) resurrections++ if(old_body && old_body.loc) if(iscarbon(old_body)) diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index c4d2c34a71..885f88d09c 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -287,14 +287,14 @@ if(distfromcaster == 0) if(isliving(AM)) var/mob/living/M = AM - M.Knockdown(100, override_hardstun = 20) + M.DefaultCombatKnockdown(100, override_hardstun = 20) M.adjustBruteLoss(5) to_chat(M, "You're slammed into the floor by [user]!") else new sparkle_path(get_turf(AM), get_dir(user, AM)) //created sparkles will disappear on their own if(isliving(AM)) var/mob/living/M = AM - M.Knockdown(stun_amt, override_hardstun = stun_amt * 0.2) + M.DefaultCombatKnockdown(stun_amt, override_hardstun = stun_amt * 0.2) to_chat(M, "You're thrown back by [user]!") AM.throw_at(throwtarget, ((CLAMP((maxthrow - (CLAMP(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user)//So stuff gets tossed around at the same time. diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 161461d099..08ba28332a 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -272,7 +272,7 @@ cooldown = COOLDOWN_STUN for(var/V in listeners) var/mob/living/L = V - L.Knockdown(60 * power_multiplier) + L.DefaultCombatKnockdown(60 * power_multiplier) //SLEEP else if((findtext(message, sleep_words))) @@ -1215,7 +1215,7 @@ var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall) switch(E.phase) if(2 to INFINITY) - L.Knockdown(30 * power_multiplier * E.phase) + L.DefaultCombatKnockdown(30 * power_multiplier * E.phase) E.cooldown += 8 addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You suddenly drop to the ground!"), 5) to_chat(user, "You encourage [L] to drop down to the ground.") diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 1415604aff..0e9a7e76af 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -52,7 +52,7 @@ var/mob/living/L = M if(iscarbon(L)) var/mob/living/carbon/C = L - C.Knockdown(40) //I play to make sprites go horizontal + C.DefaultCombatKnockdown(40) //I play to make sprites go horizontal L.visible_message("[src] rams into [L] and sucks him up!") //fuck off shezza this isn't ERP. mob_forced_enter(L) playsound(src, pick('sound/vehicles/clowncar_ram1.ogg', 'sound/vehicles/clowncar_ram2.ogg', 'sound/vehicles/clowncar_ram3.ogg'), 75) diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index 0dd7ff32a8..cb53574653 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -71,7 +71,7 @@ var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals)) unbuckle_mob(H) H.throw_at(throw_target, 4, 3) - H.Knockdown(100) + H.DefaultCombatKnockdown(100) H.adjustStaminaLoss(40) var/head_slot = H.get_item_by_slot(SLOT_HEAD) if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat))) @@ -199,7 +199,7 @@ var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals)) unbuckle_mob(H) H.throw_at(throw_target, 4, 3) - H.Knockdown(30) + H.DefaultCombatKnockdown(30) H.adjustStaminaLoss(10) var/head_slot = H.get_item_by_slot(SLOT_HEAD) if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat))) diff --git a/code/modules/vehicles/sealed.dm b/code/modules/vehicles/sealed.dm index 30ae49ecd2..fc81e2ec00 100644 --- a/code/modules/vehicles/sealed.dm +++ b/code/modules/vehicles/sealed.dm @@ -93,7 +93,7 @@ mob_exit(i, null, randomstep) if(iscarbon(i)) var/mob/living/carbon/Carbon = i - Carbon.Knockdown(40) + Carbon.DefaultCombatKnockdown(40) /obj/vehicle/sealed/proc/DumpSpecificMobs(flag, randomstep = TRUE) for(var/i in occupants) @@ -101,7 +101,7 @@ mob_exit(i, null, randomstep) if(iscarbon(i)) var/mob/living/carbon/C = i - C.Knockdown(40) + C.DefaultCombatKnockdown(40) /obj/vehicle/sealed/AllowDrop() diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm index 6526e6d89a..a560cbb8f3 100644 --- a/code/modules/vehicles/speedbike.dm +++ b/code/modules/vehicles/speedbike.dm @@ -76,7 +76,7 @@ playsound(src, 'sound/effects/bang.ogg', 50, 1) if(ishuman(A)) var/mob/living/carbon/human/H = A - H.Knockdown(100) + H.DefaultCombatKnockdown(100) H.adjustStaminaLoss(30) H.apply_damage(rand(20,35), BRUTE) if(!crash_all) diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 8adc7c0745..08e5a762a3 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -547,7 +547,7 @@ if (statusStrength < 0) status = null owner.remove_movespeed_modifier(MOVESPEED_ID_MKULTRA) - owner.Knockdown(50) + owner.DefaultCombatKnockdown(50) to_chat(owner, "Your body gives out as the adrenaline in your system runs out.") else statusStrength -= 1 @@ -643,7 +643,7 @@ C.adjustArousalLoss(5) C.jitteriness += 100 C.stuttering += 25 - C.Knockdown(60) + C.DefaultCombatKnockdown(60) C.Stun(60) to_chat(owner, "Your muscles seize up, then start spasming wildy!") diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm index 9d0757e26e..44b8067876 100644 --- a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm +++ b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm @@ -45,7 +45,7 @@ s.set_up(3, 1, L) s.start() - L.Knockdown(100) + L.DefaultCombatKnockdown(100) if(master) master.receive_signal() diff --git a/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm b/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm index b7843727df..5b20fe048b 100644 --- a/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm +++ b/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm @@ -14,7 +14,7 @@ user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") var/C = new item_chair(loc) user.put_in_hands(C) - poordude.Knockdown(20)//rip in peace + poordude.DefaultCombatKnockdown(20)//rip in peace user.adjustStaminaLoss(5) unbuckle_all_mobs(TRUE) qdel(src) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index 0b6903c9fe..d9544313e0 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -8,7 +8,7 @@ to_chat(src, "You trip off of the elevated surface!") for(var/obj/item/I in held_items) accident(I) - Knockdown(80) + DefaultCombatKnockdown(80) /mob/living/carbon/human/movement_delay() . = 0 diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 98de5eed14..6437834e92 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -55,7 +55,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/cachedstam = M.getStaminaLoss() var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1) if(!M.resting) - M.Knockdown(cachedstam*2) //BORK BORK. GET DOWN. + M.DefaultCombatKnockdown(cachedstam*2) //BORK BORK. GET DOWN. M.Stun(totalstuntime) user.do_attack_animation(A, ATTACK_EFFECT_BITE) user.start_pulling(M, TRUE) //Yip yip. Come with. @@ -284,7 +284,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! to_chat(R, "Insufficent Power!") return L.Stun(4) // normal stunbaton is force 7 gimme a break good sir! - L.Knockdown(80) + L.DefaultCombatKnockdown(80) L.apply_effect(EFFECT_STUTTER, 4) L.visible_message("[R] has shocked [L] with its tongue!", \ "[R] has shocked you with its tongue!") @@ -426,13 +426,13 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/mob/living/L = A if(!L.check_shields(0, "the [name]", src, attack_type = LEAP_ATTACK)) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. + L.DefaultCombatKnockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) log_combat(src, L, "borg pounced") else - Knockdown(15, 1, 1) + DefaultCombatKnockdown(15, 1, 1) pounce_cooldown = !pounce_cooldown spawn(pounce_cooldown_time) //3s by default @@ -440,7 +440,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! else if(A.density && !A.CanPass(src)) visible_message("[src] smashes into [A]!", "You smash into [A]!") playsound(src, 'sound/items/trayhit1.ogg', 50, 1) - Knockdown(15, 1, 1) + DefaultCombatKnockdown(15, 1, 1) if(leaping) leaping = 0 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm index 5f3fc61fa7..7f6e1ea983 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm @@ -101,7 +101,7 @@ if(addiction_stage == 11) to_chat(M, "You start to convlse violently as you feel your consciousness split and merge across realities as your possessions fly wildy off your body.") M.Jitter(200) - M.Knockdown(200) + M.DefaultCombatKnockdown(200) M.Stun(80) var/items = M.get_contents() if(!LAZYLEN(items)) @@ -155,7 +155,7 @@ do_sparks(5,FALSE,M) M.Sleeping(100, 0) M.Jitter(50) - M.Knockdown(100) + M.DefaultCombatKnockdown(100) to_chat(M, "You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself. This version of you feels more [pick("affectionate", "happy", "lusty", "radical", "shy", "ambitious", "frank", "voracious", "sensible", "witty")] than your previous self, sent to god knows what universe.") M.emote("me",1,"flashes into reality suddenly, gasping as they gaze around in a bewildered and highly confused fashion!",TRUE) log_game("FERMICHEM: [M] ckey: [M.key] has become an alternative universe version of themselves.") diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 6732fb06a5..b03773984f 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -41,7 +41,7 @@ M.visible_message("A pair of breasts suddenly fly out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) - M.Knockdown(50) + M.DefaultCombatKnockdown(50) M.Stun(50) B.throw_at(T2, 8, 1) M.reagents.remove_reagent(id, volume) @@ -200,7 +200,7 @@ M.visible_message("A penis suddenly flies out of the [M]!") var/T2 = get_random_station_turf() M.adjustBruteLoss(25) - M.Knockdown(50) + M.DefaultCombatKnockdown(50) M.Stun(50) P.throw_at(T2, 8, 1) M.reagents.remove_reagent(id, volume) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index b3ee8f5b7f..e742ceb2e8 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -96,7 +96,7 @@ if(method == INJECT) var/turf/T = get_turf(M) M.adjustOxyLoss(15) - M.Knockdown(50) + M.DefaultCombatKnockdown(50) M.Stun(50) M.emote("cough") var/obj/item/toy/plush/P = pick(subtypesof(/obj/item/toy/plush)) From a8cc37eaf0800691e9fd5176f5a8a31d003210cc Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 03:57:58 -0800 Subject: [PATCH 04/92] ok --- .../carbon/alien/humanoid/update_icons.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 12 ++--- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 8 ++-- code/modules/mob/living/silicon/robot/life.dm | 9 ---- .../mob/living/silicon/robot/robot_defense.dm | 6 +-- .../living/silicon/robot/robot_mobility.dm | 14 ++++++ code/modules/mob/living/status_procs.dm | 48 +++++++++---------- .../living/silicon/robot/robot_movement.dm | 2 +- 10 files changed, 55 insertions(+), 50 deletions(-) create mode 100644 code/modules/mob/living/silicon/robot/robot_mobility.dm diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index d2788075e2..f11174f877 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -12,7 +12,7 @@ else icon_state = "alien[caste]_dead" - else if((stat == UNCONSCIOUS && !asleep) || stat == SOFT_CRIT || IsKnockdown()) + else if((stat == UNCONSCIOUS && !asleep) || stat == SOFT_CRIT || _MOBILITYFLAGTEMPORARY_IsParalyzed()) icon_state = "alien[caste]_unconscious" else if(leap_on_click) icon_state = "alien[caste]_pounce" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5f48c6dc3d..7b4cd8a35d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -182,7 +182,7 @@ if(HAS_TRAIT(src, TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") return - + adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 3c1a529d3f..b532cdeb51 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -342,16 +342,14 @@ else if (mood.sanity >= SANITY_DISTURBED) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M) - AdjustStun(-60) - AdjustKnockdown(-60) - AdjustUnconscious(-60) - AdjustSleeping(-100) + AdjustAllImmobility(-60, FALSE) + AdjustUnconscious(-60, FALSE) + AdjustSleeping(-100, FALSE) if(recoveringstam) adjustStaminaLoss(-15) else if(resting) - resting = 0 - update_canmove() - + set_resting(FALSE, FALSE) + update_mobility() playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 385ae6cfd4..427318ae84 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -31,7 +31,7 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) - if(!IsKnockdown()) + if(!recoveringstam) emote("collapse") DefaultCombatKnockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(src, "You feel weak.") diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 1694d04b82..c0b6fcced4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -18,7 +18,7 @@ icon_state = "ai" anchored = TRUE density = TRUE - canmove = FALSE + mobility_flags = NONE status_flags = CANSTUN|CANPUSH a_intent = INTENT_HARM //so we always get pushed instead of trying to swap sight = SEE_TURFS | SEE_MOBS | SEE_OBJS @@ -316,8 +316,10 @@ to_chat(src, "You are now [anchored ? "" : "un"]anchored.") // the message in the [] will change depending whether or not the AI is anchored -/mob/living/silicon/ai/update_canmove() //If the AI dies, mobs won't go through it anymore - return 0 +// AIs are immobile +/mob/living/silicon/ai/update_mobility() + mobility_flags = NONE + return NONE /mob/living/silicon/ai/proc/ai_cancel_call() set category = "Malfunction" diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 0ca3c63162..bfd36f66a0 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -91,12 +91,3 @@ add_overlay(fire_overlay) else cut_overlay(fire_overlay) - -/mob/living/silicon/robot/update_canmove() - if(stat || buckled || lockcharge || resting) //CITADEL EDIT resting dogborg-os - canmove = 0 - else - canmove = 1 - update_transform() - update_action_buttons_icon() - return canmove diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 7e06c66eff..1ecc8f8bfa 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -36,7 +36,7 @@ "[M] has disabled [src]'s active module!", null, COMBAT_MESSAGE_RANGE) log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") else - Stun(40) + _MOBILITYFLAGTEMPORARY_Paralyze(40) step(src,get_dir(M,src)) log_combat(M, src, "pushed") visible_message("[M] has forced back [src]!", \ @@ -86,9 +86,9 @@ return switch(severity) if(1) - Stun(160) + _MOBILITYFLAGTEMPORARY_Paralyze(160) if(2) - Stun(60) + _MOBILITYFLAGTEMPORARY_Paralyze(60) /mob/living/silicon/robot/emag_act(mob/user) diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm new file mode 100644 index 0000000000..85018646de --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -0,0 +1,14 @@ +/mob/living/silicon/robot/update_mobility() + var/newflags = NONE + if(!stat) + if(!resting) + newflags |= MOBILITY_STAND + if(!lockcharge) + newflags |= MOBILITY_MOVE + newflags |= MOBILITY_PULL + if(!lockcharge) + newflags |= (MOBILITY_UI | MOBILITY_STORAGE) + mobility_flags = newflags + update_transform() + update_action_buttons_icon() + return canmove diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index d2bfb4c608..832ed336c4 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -235,32 +235,32 @@ return P //Blanket -/mob/living/proc/AllImmobility(amount, updating) - Paralyze(amount, FALSE) - DefaultCombatKnockdown(amount, FALSE) - Stun(amount, FALSE) - Immobilize(amount, FALSE) +/mob/living/proc/AllImmobility(amount, updating, ignore_canstun = FALSE) + _MOBILITYFLAGTEMPORARY_Paralyze(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_Knockdown(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_Stun(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_Immobilize(amount, FALSE, ignore_canstun) if(updating) update_mobility() -/mob/living/proc/SetAllImmobility(amount, updating) - SetParalyzed(amount, FALSE) - SetKnockdown(amount, FALSE) - SetStun(amount, FALSE) - SetImmobilized(amount, FALSE) +/mob/living/proc/SetAllImmobility(amount, updating, ignore_canstun = FALSE) + _MOBILITYFLAGTEMPORARY_SetParalyzed(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_SetImmobilized(amount, FALSE, ignore_canstun) if(updating) update_mobility() -/mob/living/proc/AdjustAllImmobility(amount, updating) - AdjustParalyzed(amount, FALSE) - AdjustKnockdown(amount, FALSE) - AdjustStun(amount, FALSE) - AdjustImmobilized(amount, FALSE) +/mob/living/proc/AdjustAllImmobility(amount, updating, ignore_canstun = FALSE) + _MOBILITYFLAGTEMPORARY_AdjustParalyzed(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_AdjustStun(amount, FALSE, ignore_canstun) + _MOBILITYFLAGTEMPORARY_AdjustImmobilized(amount, FALSE, ignore_canstun) if(updating) update_mobility() //////////////////UNCONSCIOUS -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsUnconscious() //If we're unconscious +/mob/living/proc/IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) /mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountUnconscious() //How many deciseconds remain in our unconsciousness @@ -269,7 +269,7 @@ return U.duration - world.time return 0 -/mob/living/proc/_MOBILITYFLAGTEMPORARY_Unconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/Unconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) @@ -280,7 +280,7 @@ U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) return U -/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/SetUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) @@ -294,7 +294,7 @@ U = apply_status_effect(STATUS_EFFECT_UNCONSCIOUS, amount, updating) return U -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/AdjustUnconscious(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) @@ -307,16 +307,16 @@ /////////////////////////////////// SLEEPING //////////////////////////////////// -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsSleeping() //If we're asleep +/mob/living/proc/IsSleeping() //If we're asleep return has_status_effect(STATUS_EFFECT_SLEEPING) -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountSleeping() //How many deciseconds remain in our sleep +/mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(S) return S.duration - world.time return 0 -/mob/living/proc/_MOBILITYFLAGTEMPORARY_Sleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/Sleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) @@ -327,7 +327,7 @@ S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) return S -/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/SetSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) @@ -341,7 +341,7 @@ S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) return S -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/AdjustSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index 3f88513372..e5cb6f4c67 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/Move(NewLoc, direct) . = ..() - if(. && sprinting && !(movement_type & FLYING) && canmove && !resting) + if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND | MOBILITY_MOVE))) if(!(cell?.use(25))) togglesprint(TRUE) From c77005af8a9450f16772613f8e66f218c96d5cb2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 04:17:53 -0800 Subject: [PATCH 05/92] changes --- code/datums/martial/wrestling.dm | 2 +- code/datums/status_effects/debuffs.dm | 2 +- code/modules/holiday/halloween/jacqueen.dm | 18 +++++++--- .../carbon/alien/humanoid/update_icons.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/living.dm | 3 ++ .../modules/mob/living/silicon/robot/robot.dm | 2 +- .../mob/living/silicon/robot/robot_defense.dm | 6 ++-- .../mob/living/simple_animal/bot/bot.dm | 10 +++--- .../friendly/drone/extra_drone_types.dm | 35 ++----------------- .../mob/living/simple_animal/slime/life.dm | 21 ++++------- .../simple_animal/slime/slime_mobility.dm | 5 +++ code/modules/mob/living/status_procs.dm | 8 ++--- code/modules/mob/mob.dm | 2 -- code/modules/mob/status_procs.dm | 4 +-- .../living/silicon/robot/robot_movement.dm | 2 +- tgstation.dme | 2 ++ 17 files changed, 52 insertions(+), 74 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/slime/slime_mobility.dm diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index d70ea49108..6ed2245dfd 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -207,7 +207,7 @@ if (T && isturf(T)) if (!D.stat) D.emote("scream") - D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/Knockdown, 20)) + D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/DefaultCombatKnockdown, 20)) log_combat(A, D, "has thrown with wrestling") return 0 diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index bd78288092..de4651f1f9 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -679,7 +679,7 @@ datum/status_effect/pacify var/mob/living/carbon/C = owner C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10) - addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it + addtimer(CALLBACK(C, /mob/living.proc/_MOBILITYFLAGTEMPORARY_Stun, 60, TRUE, TRUE), 15) //Take some time to think about it qdel(src) /datum/status_effect/spasms diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index d71e7c0f6a..d2e5acdc80 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -46,6 +46,8 @@ var/progression = list() //Keep track of where people are in the story. var/active = TRUE //Turn this to false to keep normal mob behavour var/cached_z + /// I'm busy chatting, don't move. + var/busy_chatting = FALSE /mob/living/simple_animal/jacq/Initialize() ..() @@ -76,9 +78,9 @@ say("Hello there [gender_check(M)]!") return ..() if(!ckey) - canmove = FALSE + busy_chatting = FALSE chit_chat(M) - canmove = TRUE + busy_chatting = TRUE ..() /mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M) @@ -86,9 +88,9 @@ say("Hello there [gender_check(M)]!") return ..() if(!ckey) - canmove = FALSE + busy_chatting = FALSE chit_chat(M) - canmove = TRUE + busy_chatting = TRUE ..() /mob/living/simple_animal/jacq/proc/poof() @@ -99,7 +101,7 @@ s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") - canmove = TRUE + busy_chatting = TRUE health = 25 //Try to go to populated areas @@ -377,6 +379,12 @@ sleep(20) poof() +/mob/living/simple_animal/jacq/update_mobility() + . = ..() + if(busy_chatting) + DISABLE_BITFIELD(., MOBILITY_MOVE) + mobility_flags = . + /obj/item/clothing/head/hardhat/pumpkinhead/jaqc name = "Jacq o' latern" desc = "A jacqueline o' lantern! You can't seem to get rid of it." diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index f11174f877..ba7062aef4 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -12,7 +12,7 @@ else icon_state = "alien[caste]_dead" - else if((stat == UNCONSCIOUS && !asleep) || stat == SOFT_CRIT || _MOBILITYFLAGTEMPORARY_IsParalyzed()) + else if((stat == UNCONSCIOUS && !asleep) || stat == SOFT_CRIT || IsParalyzed()) icon_state = "alien[caste]_unconscious" else if(leap_on_click) icon_state = "alien[caste]_pounce" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b6461f3c71..ef985194fc 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -494,7 +494,7 @@ to_chat(usr, "Unable to locate a data core entry for this person.") /mob/living/carbon/human/proc/canUseHUD() - return !(src.stat || IsKnockdown() || IsStun() || src.restrained()) + return (mobility_flags & MOBILITY_UI) /mob/living/carbon/human/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE) . = 1 // Default to returning true. diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 12bc5f925f..df596ec785 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1203,3 +1203,6 @@ update_canmove() for(var/chem in healing_chems) reagents.add_reagent(chem, healing_chems[chem]) + +/mob/living/canface() + return ..() && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 5f7d3ca243..a52289192b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1021,7 +1021,7 @@ if(health <= -maxHealth) //die only once death() return - if(IsUnconscious() || IsStun() || IsKnockdown() || getOxyLoss() > maxHealth*0.5) + if(IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyze() || getOxyLoss() > maxHealth*0.5) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 1ecc8f8bfa..259e2ac953 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -36,7 +36,7 @@ "[M] has disabled [src]'s active module!", null, COMBAT_MESSAGE_RANGE) log_combat(M, src, "disarmed", "[I ? " removing \the [I]" : ""]") else - _MOBILITYFLAGTEMPORARY_Paralyze(40) + Paralyze(40) step(src,get_dir(M,src)) log_combat(M, src, "pushed") visible_message("[M] has forced back [src]!", \ @@ -86,9 +86,9 @@ return switch(severity) if(1) - _MOBILITYFLAGTEMPORARY_Paralyze(160) + Paralyze(160) if(2) - _MOBILITYFLAGTEMPORARY_Paralyze(60) + Paralyze(60) /mob/living/silicon/robot/emag_act(mob/user) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 3397d9f4b6..5ec0ff516a 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -115,7 +115,7 @@ if(stat) return FALSE on = TRUE - canmove = TRUE + update_mobility() set_light(initial(light_range)) update_icon() diag_hud_set_botstat() @@ -123,7 +123,7 @@ /mob/living/simple_animal/bot/proc/turn_off() on = FALSE - canmove = FALSE + update_mobility() set_light(0) bot_reset() //Resets an AI's call, should it exist. update_icon() @@ -160,11 +160,11 @@ path_hud.add_to_hud(src) path_hud.add_hud_to(src) -/mob/living/simple_animal/bot/update_canmove() +/mob/living/simple_animal/bot/update_mobility() . = ..() if(!on) - . = 0 - canmove = . + . = NONE + mobility_flags = . /mob/living/simple_animal/bot/Destroy() if(path_hud) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 06d83bf235..c923ee38d9 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -207,37 +207,6 @@ else icon_state = "[visualAppearence]_dead" -/mob/living/simple_animal/drone/cogscarab/Stun(amount, updating = 1, ignore_canstun = 0) +/mob/living/simple_animal/drone/cogscarab/update_mobility() . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/SetStun(amount, updating = 1, ignore_canstun = 0) - . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/AdjustStun(amount, updating = 1, ignore_canstun = 0) - . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) - . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/SetKnockdown(amount, updating = 1, ignore_canknockdown = 0) - . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/AdjustKnockdown(amount, updating = 1, ignore_canknockdown = 0) - . = ..() - if(.) - update_icons() - -/mob/living/simple_animal/drone/cogscarab/update_canmove() - . = ..() - if(.) - update_icons() + update_icons() diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 29b4689317..c64bb45d4b 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -140,12 +140,12 @@ stat = UNCONSCIOUS powerlevel = 0 rabid = 0 - update_canmove() + update_mobility() regenerate_icons() else if(stat == UNCONSCIOUS && !stasis) to_chat(src, "You wake up from the stasis.") stat = CONSCIOUS - update_canmove() + update_mobility() regenerate_icons() updatehealth() @@ -272,15 +272,8 @@ if(prob(25-powerlevel*5)) powerlevel++ - - - /mob/living/simple_animal/slime/proc/handle_targets() - if(Tempstun) - if(!buckled) // not while they're eating! - canmove = 0 - else - canmove = 1 + update_mobility() if(attacked > 50) attacked = 50 @@ -298,7 +291,7 @@ Discipline-- if(!client) - if(!canmove) + if(!CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) return if(buckled) @@ -383,13 +376,13 @@ if (Leader) if(holding_still) holding_still = max(holding_still - 1, 0) - else if(canmove && isturf(loc)) + else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc)) step_to(src, Leader) else if(hungry) if (holding_still) holding_still = max(holding_still - hungry, 0) - else if(canmove && isturf(loc) && prob(50)) + else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && prob(50)) step(src, pick(GLOB.cardinals)) else @@ -397,7 +390,7 @@ holding_still = max(holding_still - 1, 0) else if (docile && pulledby) holding_still = 10 - else if(canmove && isturf(loc) && prob(33)) + else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && prob(33)) step(src, pick(GLOB.cardinals)) else if(!AIproc) INVOKE_ASYNC(src, .proc/AIprocess) diff --git a/code/modules/mob/living/simple_animal/slime/slime_mobility.dm b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm new file mode 100644 index 0000000000..d82e945172 --- /dev/null +++ b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm @@ -0,0 +1,5 @@ +/mob/living/simple_animal/slime/proc/update_mobility() + . = ..() + if(Tempstun && !buckled) + DISABLE_BITFIELD(., MOBILITY_MOVE) + mobility_flags = . diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 832ed336c4..0569722098 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -31,7 +31,7 @@ return S.duration - world.time return 0 -/mob/living/proc/_MOBILITYFLAGTEMPORARY_Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) @@ -260,10 +260,10 @@ update_mobility() //////////////////UNCONSCIOUS -/mob/living/proc/IsUnconscious() //If we're unconscious +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountUnconscious() //How many deciseconds remain in our unconsciousness +/mob/living/proc/AmountUnconscious() //How many deciseconds remain in our unconsciousness var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) return U.duration - world.time @@ -307,7 +307,7 @@ /////////////////////////////////// SLEEPING //////////////////////////////////// -/mob/living/proc/IsSleeping() //If we're asleep +/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsSleeping() //If we're asleep return has_status_effect(STATUS_EFFECT_SLEEPING) /mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index fad9431b61..7a498a25cc 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -667,8 +667,6 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) // facing verbs /mob/proc/canface() - if(!canmove) - return FALSE if(world.time < client.last_turn) return FALSE if(stat == DEAD || stat == UNCONSCIOUS) diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 8fb14b8dd1..d55c934bc5 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -49,11 +49,11 @@ throw_alert("blind", /obj/screen/alert/blind) overlay_fullscreen("blind", /obj/screen/fullscreen/blind) // You are blind why should you be able to make out details like color, only shapes near you - add_client_colour(/datum/client_colour/monochrome/blind) + // add_client_colour(/datum/client_colour/monochrome/blind) else // CONSCIOUS no blind trait, no blindness clear_alert("blind") clear_fullscreen("blind") - remove_client_colour(/datum/client_colour/monochrome/blind) + // remove_client_colour(/datum/client_colour/monochrome/blind) /** * Make the mobs vision blurry */ diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index e5cb6f4c67..4b64588de1 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,6 +1,6 @@ /mob/living/silicon/robot/Move(NewLoc, direct) . = ..() - if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND | MOBILITY_MOVE))) + if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND | MOBILITY_MOVE)) if(!(cell?.use(25))) togglesprint(TRUE) diff --git a/tgstation.dme b/tgstation.dme index 37118e133f..37300f0ab1 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2262,6 +2262,7 @@ #include "code\modules\mob\living\silicon\robot\login.dm" #include "code\modules\mob\living\silicon\robot\robot.dm" #include "code\modules\mob\living\silicon\robot\robot_defense.dm" +#include "code\modules\mob\living\silicon\robot\robot_mobility.dm" #include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\say.dm" @@ -2398,6 +2399,7 @@ #include "code\modules\mob\living\simple_animal\slime\powers.dm" #include "code\modules\mob\living\simple_animal\slime\say.dm" #include "code\modules\mob\living\simple_animal\slime\slime.dm" +#include "code\modules\mob\living\simple_animal\slime\slime_mobility.dm" #include "code\modules\mob\living\simple_animal\slime\subtypes.dm" #include "code\modules\modular_computers\laptop_vendor.dm" #include "code\modules\modular_computers\computers\item\computer.dm" From 7006f2b1beae7ea2d446c53db67289060a308e14 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 04:23:52 -0800 Subject: [PATCH 06/92] more compile stuff --- code/__DEFINES/components.dm | 9 +++++++++ code/modules/mob/living/living.dm | 8 ++------ code/modules/mob/living/status_procs.dm | 27 ++++++++++++++++++------- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 7b2dd8663c..4352ada0cf 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -198,6 +198,15 @@ #define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: () #define COMSIG_LIVING_GUN_PROCESS_FIRE "living_gun_process_fire" //from base of /obj/item/gun/proc/process_fire(): (atom/target, params, zone_override) +//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS! +#define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" //from base of mob/living/Knockdown() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_PARALYZE "living_paralyze" //from base of mob/living/Paralyze() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" //from base of mob/living/Immobilize() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" //from base of mob/living/Unconscious() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" //from base of mob/living/Sleeping() (amount, update, ignore) + #define COMPONENT_NO_STUN 1 //For all of them + // /mob/living/carbon signals #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index df596ec785..02e398cb6a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -500,8 +500,7 @@ setStaminaLoss(0, 0) SetUnconscious(0, FALSE) set_disgust(0) - SetStun(0, FALSE) - SetKnockdown(0, FALSE) + SetAllImmobility(0, FALSE) SetSleeping(0, FALSE) radiation = 0 nutrition = NUTRITION_LEVEL_FED + 50 @@ -1185,10 +1184,7 @@ SetSleeping(clamp_unconscious_to) if(AmountUnconscious() > clamp_unconscious_to) SetUnconscious(clamp_unconscious_to) - if(AmountStun() > clamp_immobility_to) - SetStun(clamp_immobility_to) - if(AmountKnockdown() > clamp_immobility_to) - SetKnockdown(clamp_immobility_to) + HealAllImmobilityUpTo(clamp_immobility_to) adjustStaminaLoss(min(0, -stamina_boost)) adjustStaminaLossBuffered(min(0, -stamina_buffer_boost)) if(scale_stamina_loss_recovery) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0569722098..7ea27a9106 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -37,7 +37,7 @@ if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = IsStun() + var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) @@ -48,7 +48,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/stun/S = IsStun() + var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() if(amount <= 0) if(S) qdel(S) @@ -67,7 +67,7 @@ if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = IsStun() + var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() if(S) S.duration += amount else if(amount > 0) @@ -80,7 +80,7 @@ return has_status_effect(STATUS_EFFECT_KNOCKDOWN) /mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountKnockdown() //How many deciseconds remain in our knockdown - var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() if(K) return K.duration - world.time return 0 @@ -91,7 +91,7 @@ if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() if(K) K.duration = max(world.time + amount, K.duration) else if(amount > 0) @@ -102,7 +102,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() if(amount <= 0) if(K) qdel(K) @@ -121,7 +121,7 @@ if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() if(K) K.duration += amount else if(amount > 0) @@ -259,6 +259,19 @@ if(updating) update_mobility() +//makes sure nothing is longer +/mob/living/proc/HealAllImmobilityupto(amount, updating, ignore_canstun = FALSE) + if(AmountStun() > amount) + SetStun(amount, FALSE, ignore_canstun) + if(AmountKnockdown() > amount) + SetKnockdown(amount, FALSE, ignore_canstun) + if(AmountParalyzed() > amount) + SetParalyzed(amount, FALSE, ignore_canstun) + if(AmountImmobilized() > amount) + SetImmobilized(amount, FALSE, ignore_canstun) + if(updating) + update_mobility() + //////////////////UNCONSCIOUS /mob/living/proc/_MOBILITYFLAGTEMPORARY_IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) From 3efdf013e6fdf787194594b537cc07c46cc77f60 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 21:47:27 -0800 Subject: [PATCH 07/92] mobility flags --- code/datums/status_effects/debuffs.dm | 14 ++++++++++---- code/modules/mob/living/status_procs.dm | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index de4651f1f9..1bbd576d59 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -12,12 +12,12 @@ . = ..() if(.) if(updating_canmove) - owner.update_canmove() + owner.update_mobility() if(needs_update_stat || issilicon(owner)) owner.update_stat() /datum/status_effect/incapacitating/on_remove() - owner.update_canmove() + owner.update_mobility() if(needs_update_stat || issilicon(owner)) //silicons need stat updates in addition to normal canmove updates owner.update_stat() @@ -29,11 +29,17 @@ /datum/status_effect/incapacitating/knockdown id = "knockdown" -/datum/status_effect/incapacitating/knockdown/tick() +//IMMOBILIZED +/datum/status_effect/incapacitating/immobilized + id = "immobilized" + +/datum/status_effect/incapacitating/paralyzed + id = "paralyzed" + +/datum/status_effect/incapacitating/paralyzed/tick() if(owner.getStaminaLoss()) owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds - //UNCONSCIOUS /datum/status_effect/incapacitating/unconscious id = "unconscious" diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 7ea27a9106..0ecb5cf966 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -259,7 +259,7 @@ if(updating) update_mobility() -//makes sure nothing is longer +/// Makes sure all 4 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityupto(amount, updating, ignore_canstun = FALSE) if(AmountStun() > amount) SetStun(amount, FALSE, ignore_canstun) From ae73927b67a94b7fcd5aafda4daf33955c7e5b67 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 02:39:16 -0800 Subject: [PATCH 08/92] patches --- code/__DEFINES/status_effects.dm | 8 ++++++-- code/datums/status_effects/debuffs.dm | 2 +- code/modules/client/verbs/suicide.dm | 2 +- .../mob/living/carbon/alien/alien_defense.dm | 3 +-- .../carbon/alien/humanoid/update_icons.dm | 4 ++-- .../living/carbon/alien/larva/update_icons.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 2 +- code/modules/mob/living/living.dm | 6 ++++++ code/modules/mob/living/living_mobility.dm | 3 +-- .../mob/living/silicon/pai/pai_shell.dm | 3 +-- code/modules/mob/living/silicon/robot/robot.dm | 2 +- .../modules/mob/living/simple_animal/astral.dm | 1 - .../mob/living/simple_animal/friendly/cat.dm | 16 ++++++---------- .../mob/living/simple_animal/friendly/dog.dm | 7 +++---- .../modules/mob/living/simple_animal/parrot.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/living/status_procs.dm | 18 +++++++++--------- code/modules/mob/mob_defines.dm | 2 +- code/modules/mob/status_procs.dm | 4 ++-- .../mob/living/carbon/human/human_movement.dm | 6 +++--- .../mob/living/silicon/robot/robot_movement.dm | 2 +- 22 files changed, 50 insertions(+), 49 deletions(-) diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 6d52f4640c..5ad599ab45 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -38,9 +38,13 @@ // DEBUFFS // ///////////// -#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun //the affected is stunned +#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun //the affected is unable to move or use items -#define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is knocked down +#define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is unable to stand up + +#define STATUS_EFFECT_IMMOBILIZED /datum/status_effect/incapacitating/immobilized //the affected is unable to move + +#define STATUS_EFFECT_PARALYZED /datum/status_effect/incapacitating/paralyzed //the affected is unable to move, use items, or stand up. #define STATUS_EFFECT_UNCONSCIOUS /datum/status_effect/incapacitating/unconscious //the affected is unconscious diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 1bbd576d59..c0b9c49240 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -685,7 +685,7 @@ datum/status_effect/pacify var/mob/living/carbon/C = owner C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10) - addtimer(CALLBACK(C, /mob/living.proc/_MOBILITYFLAGTEMPORARY_Stun, 60, TRUE, TRUE), 15) //Take some time to think about it + addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it qdel(src) /datum/status_effect/spasms diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 2e643cc05d..ceba6ae605 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -221,7 +221,7 @@ /mob/living/carbon/canSuicide() if(!..()) return - if(IsStun() || IsKnockdown()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide + if(!CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_MOVE|MOBILITY_USE)) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide to_chat(src, "You can't commit suicide while stunned! ((You can type Ghost instead however.))") return if(restrained()) diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index bdc691ce49..14f1d0e76d 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -23,8 +23,7 @@ In all, this is a lot like the monkey code. /N if (INTENT_HELP) if(!recoveringstam) resting = 0 - AdjustStun(-60) - AdjustKnockdown(-60) + AdjustAllImmobility(-60) AdjustUnconscious(-60) AdjustSleeping(-100) visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index ba7062aef4..8772013d66 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -4,7 +4,7 @@ for(var/I in overlays_standing) add_overlay(I) - var/asleep = IsSleeping() + var/asleep = _MOBILITYFLAGTEMPORARY_IsSleeping() if(stat == DEAD) //If we mostly took damage from fire if(fireloss > 125) @@ -17,7 +17,7 @@ else if(leap_on_click) icon_state = "alien[caste]_pounce" - else if(lying || resting || asleep) + else if(lying || !CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) || asleep) icon_state = "alien[caste]_sleep" else if(mob_size == MOB_SIZE_LARGE) icon_state = "alien[caste]" diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index 9b762d1728..a4d5511059 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -16,7 +16,7 @@ icon_state = "larva[state]_cuff" else if(stat == UNCONSCIOUS || lying || resting) icon_state = "larva[state]_sleep" - else if(IsStun()) + else if(_MOBILTIYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsParalyzed()) icon_state = "larva[state]_stun" else icon_state = "larva[state]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 7b4cd8a35d..5e1052505a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -803,7 +803,7 @@ if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) stat = UNCONSCIOUS blind_eyes(1) if(combatmode) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index b532cdeb51..5676e9dfd3 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -347,7 +347,7 @@ AdjustSleeping(-100, FALSE) if(recoveringstam) adjustStaminaLoss(-15) - else if(resting) + else set_resting(FALSE, FALSE) update_mobility() playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 02e398cb6a..a87510233c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -359,6 +359,12 @@ /mob/living/incapacitated(ignore_restraints, ignore_grab) + if(stat) + return TRUE + if(!CHECK_BITFIELD(mobility_flags, MOBILITY_FLAGS_ANY_INTERACTION)) + if(!ignore_restraints && restrained(ignore_grab)) + return TRUE + return FALSE if(stat || IsUnconscious() || IsStun() || IsKnockdown() || recoveringstam || (!ignore_restraints && restrained(ignore_grab))) // CIT CHANGE - adds recoveringstam check here return TRUE diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index dd546fb61c..ec5f2e2c11 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -88,11 +88,10 @@ playsound(src, "bodyfall", 20, 1) return FALSE - -/* //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_mobility() +/* var/stat_softcrit = stat == SOFT_CRIT var/stat_conscious = (stat == CONSCIOUS) || stat_softcrit var/conscious = !IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 6577c26402..517ced2e7b 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -67,8 +67,7 @@ density = FALSE set_light(0) holoform = FALSE - if(resting) - lay_down() + set_resting(FALSE, TRUE) /mob/living/silicon/pai/proc/choose_chassis() if(!isturf(loc) && loc != card) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a52289192b..1dafb3c550 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1021,7 +1021,7 @@ if(health <= -maxHealth) //die only once death() return - if(IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyze() || getOxyLoss() > maxHealth*0.5) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsParalyze() || getOxyLoss() > maxHealth*0.5) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm index 3d0c335989..6a2bbfb830 100644 --- a/code/modules/mob/living/simple_animal/astral.dm +++ b/code/modules/mob/living/simple_animal/astral.dm @@ -32,7 +32,6 @@ /mob/living/simple_animal/astral/death() icon_state = "shade_dead" Stun(1000) - canmove = 0 friendly = "deads at" pseudo_death = TRUE incorporeal_move = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index bda309f7c7..0ae2dab749 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -41,7 +41,7 @@ /mob/living/simple_animal/pet/cat/update_canmove() ..() if(client && stat != DEAD) - if (resting) + if(!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) icon_state = "[icon_living]_rest" collar_type = "[initial(collar_type)]_rest" else @@ -173,27 +173,24 @@ emote("me", EMOTE_VISIBLE, pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) icon_state = "[icon_living]_rest" collar_type = "[initial(collar_type)]_rest" - resting = 1 - update_canmove() + set_resting(TRUE) else if (prob(1)) emote("me", EMOTE_VISIBLE, pick("sits down.", "crouches on its hind legs.", "looks alert.")) icon_state = "[icon_living]_sit" collar_type = "[initial(collar_type)]_sit" - resting = 1 - update_canmove() + set_resting(TRUE) else if (prob(1)) if (resting) emote("me", EMOTE_VISIBLE, pick("gets up and meows.", "walks around.", "stops resting.")) icon_state = "[icon_living]" collar_type = "[initial(collar_type)]" - resting = 0 - update_canmove() + set_resting(FALSE) else emote("me", EMOTE_VISIBLE, pick("grooms its fur.", "twitches its whiskers.", "shakes out its coat.")) //MICE! if((src.loc) && isturf(src.loc)) - if(!stat && !resting && !buckled) + if(!stat && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) for(var/mob/living/simple_animal/mouse/M in view(1,src)) if(!M.stat && Adjacent(M)) emote("me", EMOTE_VISIBLE, "splats \the [M]!") @@ -210,7 +207,7 @@ make_babies() - if(!stat && !resting && !buckled) + if(!stat && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) turns_since_scan++ if(turns_since_scan > 5) walk_to(src,0) @@ -320,7 +317,6 @@ if (pseudo_death == TRUE) //secret cat chem icon_state = "custom_cat_dead" Stun(1000) - canmove = 0 friendly = "deads at" return else diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 986e5c9b4d..d456c16e04 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -421,7 +421,7 @@ ..() //Feeding, chasing food, FOOOOODDDD - if(!stat && !resting && !buckled) + if(!stat && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) turns_since_scan++ if(turns_since_scan > 5) turns_since_scan = 0 @@ -621,7 +621,7 @@ make_babies() - if(!stat && !resting && !buckled) + if(!stat && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) if(prob(1)) emote("me", EMOTE_VISIBLE, pick("dances around.","chases her tail.")) spawn(0) @@ -631,8 +631,7 @@ /mob/living/simple_animal/pet/dog/pug/Life() ..() - - if(!stat && !resting && !buckled) + if(!stat && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) if(prob(1)) emote("me", EMOTE_VISIBLE, pick("chases its tail.")) spawn(0) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 3d23baae48..86fb8b4b46 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -382,7 +382,7 @@ /mob/living/simple_animal/parrot/handle_automated_movement() - if(!isturf(src.loc) || !canmove || buckled) + if(!isturf(loc) || !CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) || buckled) return //If it can't move, dont let it move. (The buckled check probably isn't necessary thanks to canmove) if(client && stat == CONSCIOUS && parrot_state != icon_living) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 990fa008fe..f70080c5e8 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -152,7 +152,7 @@ /mob/living/simple_animal/proc/handle_automated_movement() set waitfor = FALSE if(!stop_automated_movement && wander) - if((isturf(src.loc) || allow_movement_on_non_turfs) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc. + if((isturf(src.loc) || allow_movement_on_non_turfs) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) if(!(stop_automated_movement_when_pulled && pulledby)) //Some animals don't move when pulled diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0ecb5cf966..61295a8ad5 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -236,10 +236,10 @@ //Blanket /mob/living/proc/AllImmobility(amount, updating, ignore_canstun = FALSE) - _MOBILITYFLAGTEMPORARY_Paralyze(amount, FALSE, ignore_canstun) + Paralyze(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_Knockdown(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_Stun(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_Immobilize(amount, FALSE, ignore_canstun) + Stun(amount, FALSE, ignore_canstun) + Immobilize(amount, FALSE, ignore_canstun) if(updating) update_mobility() @@ -277,7 +277,7 @@ return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) /mob/living/proc/AmountUnconscious() //How many deciseconds remain in our unconsciousness - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() if(U) return U.duration - world.time return 0 @@ -297,7 +297,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() if(amount <= 0) if(U) qdel(U) @@ -311,7 +311,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() if(U) U.duration += amount else if(amount > 0) @@ -324,7 +324,7 @@ return has_status_effect(STATUS_EFFECT_SLEEPING) /mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() if(S) return S.duration - world.time return 0 @@ -333,7 +333,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) @@ -358,7 +358,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() if(S) S.duration += amount else if(amount > 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 9aea4ebf09..3dd6e9dd71 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -34,7 +34,7 @@ var/eye_blurry = 0 //Carbon var/real_name = null var/spacewalk = FALSE - var/resting = 0 //Carbon + var/_MOBILITYFLAGTEMPORARY_resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index d55c934bc5..3ae8094a80 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -72,9 +72,9 @@ ///Set the mobs blurriness of vision to an amount /mob/proc/set_blurriness(amount) eye_blurry = max(amount, 0) - update_eye_blur() + update_eyeblur() -/mob/proc/update_eye_blur() +/mob/proc/update_eyeblur() remove_eyeblur() add_eyeblur() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index d9544313e0..cd62a5caf9 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -1,7 +1,7 @@ /mob/living/carbon/human/Move(NewLoc, direct) var/oldpseudoheight = pseudo_z_axis . = ..() - if(. && sprinting && !(movement_type & FLYING) && canmove && !resting && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby) + if(. && sprinting && !(movement_type & FLYING) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_MOVE|MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby) if(!HAS_TRAIT(src, TRAIT_FREESPRINT)) doSprintLossTiles(1) if((oldpseudoheight - pseudo_z_axis) >= 8) @@ -12,7 +12,7 @@ /mob/living/carbon/human/movement_delay() . = 0 - if(!resting && m_intent == MOVE_INTENT_RUN && !sprinting) + if((mobility_flags & MOBILITY_STAND) && m_intent == MOVE_INTENT_RUN && !sprinting) . += 1 if(wrongdirmovedelay) . += 1 @@ -20,7 +20,7 @@ /mob/living/carbon/human/proc/togglesprint() // If you call this proc outside of hotkeys or clicking the HUD button, I'll be disappointed in you. sprinting = !sprinting - if(!resting && m_intent == MOVE_INTENT_RUN && canmove) + if((m_intent == MOVE_INTENT_RUN) && CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE)) if(sprinting) playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) else diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index 4b64588de1..526ea497c4 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -14,7 +14,7 @@ if(!shutdown && (!cell || cell.charge < 25) || !cansprint) return FALSE sprinting = shutdown ? FALSE : !sprinting - if(!resting && canmove) + if(CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND|MOBILITY_MOVE)) if(sprinting) playsound_local(src, 'sound/misc/sprintactivate.ogg', 50, FALSE, pressure_affected = FALSE) else From 2a304800dfa93fd3cffe9d2f8764561e9a077f52 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 11:46:32 -0800 Subject: [PATCH 09/92] more reformatting --- code/__DEFINES/flags.dm | 2 - code/_onclick/cyborg.dm | 4 +- code/datums/world_topic.dm | 4 +- code/modules/mob/living/brain/brain.dm | 8 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../living/carbon/alien/larva/update_icons.dm | 4 +- code/modules/mob/living/carbon/examine.dm | 2 +- .../mob/living/carbon/monkey/combat.dm | 14 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_mobility.dm | 148 +++++++++--------- .../mob/living/silicon/pai/pai_shell.dm | 8 +- .../modules/mob/living/silicon/robot/robot.dm | 9 +- .../mob/living/simple_animal/bot/firebot.dm | 4 +- .../mob/living/simple_animal/simple_animal.dm | 12 +- code/modules/mob/living/status_procs.dm | 20 +-- code/modules/mob/transform_procs.dm | 15 +- .../code/modules/mob/living/living.dm | 6 +- 18 files changed, 123 insertions(+), 145 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index e6cf3fa25d..87be7884c7 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -108,7 +108,5 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 /// can pull things #define MOBILITY_PULL (1<<6) - #define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL) #define MOBILITY_FLAGS_ANY_INTERACTION (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_UI | MOBILITY_STORAGE) - diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index a2d566d566..1ce359b91d 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -14,7 +14,7 @@ if(check_click_intercept(params,A)) return - if(stat || lockcharge || IsKnockdown() || IsStun() || IsUnconscious()) + if(stat || lockcharge || IsParalyzed() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsUnconscious()) return var/list/modifiers = params2list(params) @@ -66,7 +66,7 @@ if(C.user_unbuckle_mob(C.buckled_mobs[1],src)) return - if(!W && get_dist(src,A) <= interaction_range) + if(!W && (get_dist(src,A) <= interaction_range))) A.attack_robot(src) return diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 0c43d33a4b..6bab87bc03 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -168,7 +168,7 @@ .["security_level"] = get_security_level() .["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0 // Amount of world's ticks in seconds, useful for calculating round duration - + //Time dilation stats. .["time_dilation_current"] = SStime_track.time_dilation_current .["time_dilation_avg"] = SStime_track.time_dilation_avg @@ -180,4 +180,4 @@ // Shuttle status, see /__DEFINES/stat.dm .["shuttle_timer"] = SSshuttle.emergency.timeLeft() // Shuttle timer, in seconds - + diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 37dd7b6a31..e7b8250494 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -39,12 +39,8 @@ container = null return ..() -/mob/living/brain/update_canmove() - if(in_contents_of(/obj/mecha)) - canmove = 1 - else - canmove = 0 - return canmove +/mob/living/brain/update_mobility() + return ((mobility_flags = (in_contents_of(/obj/mecha)? MOBILITY_FLAGS_DEFAULT : NONE))) /mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up. return diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 01a52b3b80..397fc2a0f0 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -18,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index a4d5511059..8510f7278d 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -14,9 +14,9 @@ icon_state = "larva[state]_dead" else if(handcuffed || legcuffed) //This should be an overlay. Who made this an icon_state? icon_state = "larva[state]_cuff" - else if(stat == UNCONSCIOUS || lying || resting) + else if(stat == UNCONSCIOUS || lying || _MOBILTIYFLAGTEMPORARY_resting) icon_state = "larva[state]_sleep" - else if(_MOBILTIYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsParalyzed()) + else if(_MOBILTIYFLAGTEMPORARY_IsStun() || IsParalyzed()) icon_state = "larva[state]_stun" else icon_state = "larva[state]" diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 34c268578c..0d381d9f53 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -95,7 +95,7 @@ . += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner." if(combatmode) - . += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]" + . += "[t_He] [t_is] visibly tense[CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) ? "." : ", and [t_is] standing in combative stance."]" var/trait_exam = common_trait_examine() if (!isnull(trait_exam)) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 56ef4fe24a..89bb0f3bff 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -50,17 +50,11 @@ // taken from /mob/living/carbon/human/interactive/ /mob/living/carbon/monkey/proc/IsDeadOrIncap(checkDead = TRUE) - if(!canmove) - return 1 + if(!CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) + return TRUE if(health <= 0 && checkDead) - return 1 - if(IsUnconscious()) - return 1 - if(IsStun() || IsKnockdown()) - return 1 - if(stat) - return 1 - return 0 + return TRUE + return FALSE /mob/living/carbon/monkey/proc/battle_screech() if(next_battle_screech < world.time) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 427318ae84..4376e99826 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -13,7 +13,7 @@ if(!client) if(stat == CONSCIOUS) - if(on_fire || buckled || restrained() || (resting && canmove)) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) + if(on_fire || buckled || restrained() || (!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE))) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) if(!resisting && prob(MONKEY_RESIST_PROB)) resisting = TRUE walk_to(src,0) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a87510233c..7667113937 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -672,11 +672,11 @@ var/obj/C = loc C.container_resist(src) - else if(canmove) + else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) if(on_fire) resist_fire() //stop, drop, and roll return - if(resting) //cit change - allows resisting out of resting + if(_MOBILTIYFLAGTEMPORARY_resting) //cit change - allows resisting out of resting resist_a_rest() // ditto return if(resist_embedded()) //Citadel Change for embedded removal memes diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index ec5f2e2c11..2a98e283fd 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -20,37 +20,28 @@ if(disarm_items) drop_all_held_items() - - - - - /mob/living/proc/lay_down() set name = "Rest" set category = "IC" - - if(client && client.prefs && client.prefs.autostand) + if(client?.prefs?.autostand) intentionalresting = !intentionalresting - to_chat(src, "You are now attempting to [intentionalresting ? "[!resting ? "lay down and ": ""]stay down" : "[resting ? "get up and ": ""]stay up"].") + to_chat(src, "You are now attempting to [intentionalresting ? "[!_MOBILTIYFLAGTEMPORARY_resting ? "lay down and ": ""]stay down" : "[_MOBILTIYFLAGTEMPORARY_resting ? "get up and ": ""]stay up"].") if(intentionalresting && !resting) - resting = TRUE - update_canmove() + set_resting(TRUE, FALSE) else resist_a_rest() else - if(!resting) - resting = TRUE + if(!_MOBILTIYFLAGTEMPORARY_resting) + set_resting(TRUE, FALSE) to_chat(src, "You are now laying down.") - update_canmove() else resist_a_rest() /mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. - if(!resting || stat || attemptingstandup) + if(!_MOBILITYFLAGTEMPORARY_resting || stat || attemptingstandup) return FALSE if(ignoretimer) - resting = FALSE - update_canmove() + set_resting(FALSE, FALSE) return TRUE else var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest @@ -77,9 +68,8 @@ var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." visible_message("[standupwarning]", usernotice, vision_distance = 5) if(do_after(src, totaldelay, target = src)) - resting = FALSE + set_resting(FALSE, FALSE) attemptingstandup = FALSE - update_canmove() return TRUE else visible_message("[src] falls right back down.", "You fall right back down.") @@ -91,18 +81,72 @@ //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_mobility() -/* var/stat_softcrit = stat == SOFT_CRIT var/stat_conscious = (stat == CONSCIOUS) || stat_softcrit - var/conscious = !IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) + + var/conscious = !_MOBILITYFLAGTEMPORARY_IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) + + var/has_arms = get_num_arms() + var/has_legs = get_num_legs() + var/ignore_legs = get_leg_ignore() + var/stun = _MOBILITYFLAGTEMPORARY_IsStun() + var/paralyze = IsParalyzed() + var/knockdown = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/immobilize = IsImmobilized() + + + +/* + var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) + var/move_and_fall = stat == SOFT_CRIT && !pulledby + var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK + var/buckle_lying = !(buckled && !buckled.buckle_lying) + var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground + if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything + drop_all_held_items() + unset_machine() + if(pulling) + stop_pulling() + else if(resting) //CIT CHANGE - makes resting make you stop pulling and interacting with machines + unset_machine() //CIT CHANGE - Ditto! + if(pulling) //CIT CHANGE - Ditto. + stop_pulling() //CIT CHANGE - Ditto... + else if(has_legs || ignore_legs) + lying = 0 + if (pulledby) + var/mob/living/L = pulledby + L.update_pull_movespeed() + if(buckled) + lying = 90*buckle_lying + else if(!lying) + if(resting) + lying = pick(90, 270) // Cit change - makes resting not force you to drop your held items + if(has_gravity()) // Cit change - Ditto + playsound(src, "bodyfall", 50, 1) // Cit change - Ditto! + else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) + fall(forced = 1) + canmove = !(ko || recoveringstam || pinned || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) //Cit change - makes it plausible to move while resting, adds pinning and stamina crit + density = !lying + if(lying) + if(layer == initial(layer)) //to avoid special cases like hiding larvas. + layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs + else + if(layer == LYING_MOB_LAYER) + layer = initial(layer) + update_transform() + if(!lying && lying_prev) + if(client) + client.move_delay = world.time + movement_delay() + lying_prev = lying + if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference + addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto + return canmove +*/ + + +/* var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() - var/has_legs = get_num_legs() - var/has_arms = get_num_arms() - var/paralyzed = IsParalyzed() - var/stun = IsStun() - var/knockdown = IsKnockdown() - var/ignore_legs = get_leg_ignore() var/canmove = !IsImmobilized() && !stun && conscious && !paralyzed && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) if(canmove) mobility_flags |= MOBILITY_MOVE @@ -172,55 +216,3 @@ remove_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE) */ -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -//Robots, animals and brains have their own version so don't worry about them -/mob/living/proc/update_canmove() -/* - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) - var/move_and_fall = stat == SOFT_CRIT && !pulledby - var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK - var/buckle_lying = !(buckled && !buckled.buckle_lying) - var/has_legs = get_num_legs() - var/has_arms = get_num_arms() - var/ignore_legs = get_leg_ignore() - var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything - drop_all_held_items() - unset_machine() - if(pulling) - stop_pulling() - else if(resting) //CIT CHANGE - makes resting make you stop pulling and interacting with machines - unset_machine() //CIT CHANGE - Ditto! - if(pulling) //CIT CHANGE - Ditto. - stop_pulling() //CIT CHANGE - Ditto... - else if(has_legs || ignore_legs) - lying = 0 - if (pulledby) - var/mob/living/L = pulledby - L.update_pull_movespeed() - if(buckled) - lying = 90*buckle_lying - else if(!lying) - if(resting) - lying = pick(90, 270) // Cit change - makes resting not force you to drop your held items - if(has_gravity()) // Cit change - Ditto - playsound(src, "bodyfall", 50, 1) // Cit change - Ditto! - else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) - fall(forced = 1) - canmove = !(ko || recoveringstam || pinned || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) //Cit change - makes it plausible to move while resting, adds pinning and stamina crit - density = !lying - if(lying) - if(layer == initial(layer)) //to avoid special cases like hiding larvas. - layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs - else - if(layer == LYING_MOB_LAYER) - layer = initial(layer) - update_transform() - if(!lying && lying_prev) - if(client) - client.move_delay = world.time + movement_delay() - lying_prev = lying - if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference - addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto - return canmove -*/ diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 517ced2e7b..8e0375fae1 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -17,7 +17,6 @@ return FALSE emitter_next_use = world.time + emittercd - canmove = TRUE density = TRUE if(istype(card.loc, /obj/item/pda)) var/obj/item/pda/P = card.loc @@ -37,6 +36,7 @@ C.push_data() forceMove(get_turf(card)) card.forceMove(src) + update_mobility() if(client) client.perspective = EYE_PERSPECTIVE client.eye = src @@ -63,11 +63,11 @@ var/turf/T = drop_location() card.forceMove(T) forceMove(card) - canmove = FALSE density = FALSE set_light(0) holoform = FALSE - set_resting(FALSE, TRUE) + set_resting(FALSE, TRUE, FALSE) + update_mobility() /mob/living/silicon/pai/proc/choose_chassis() if(!isturf(loc) && loc != card) @@ -100,7 +100,7 @@ /mob/living/silicon/pai/lay_down() . = ..() if(loc != card) - visible_message("[src] [resting? "lays down for a moment..." : "perks up from the ground"]") + visible_message("[src] [_MOBILITYFLAGTEMPORARY_resting? "lays down for a moment..." : "perks up from the ground"]") update_icon() /mob/living/silicon/pai/start_pulling(atom/movable/AM, gs) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1dafb3c550..39a8858106 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -675,7 +675,7 @@ if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' pixel_x = initial(pixel_x) - if(stat != DEAD && !(IsUnconscious() || IsStun() || IsKnockdown() || low_power_mode)) //Not dead, not stunned. + if(stat != DEAD && !(_MOBILITYFLAGTEMPORARY_IsUnconscious() ||_MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. if(!eye_lights) eye_lights = new() if(lamp_intensity > 2) @@ -699,7 +699,7 @@ update_fire() if(client && stat != DEAD && module.dogborg == TRUE) - if(resting) + if(_MOBILITYFLAGTEMPORARY_resting) if(sitting) icon_state = "[module.cyborg_base_icon]-sit" if(bellyup) @@ -724,8 +724,6 @@ connected_ai.connected_robots -= src src.connected_ai = null lawupdate = 0 - lockcharge = 0 - canmove = 1 scrambledcodes = 1 //Disconnect it's camera so it's not so easily tracked. if(!QDELETED(builtInCamera)) @@ -734,6 +732,7 @@ // Instead of being listed as "deactivated". The downside is that I'm going // to have to check if every camera is null or not before doing anything, to prevent runtime errors. // I could change the network to null but I don't know what would happen, and it seems too hacky for me. + update_mobility() /mob/living/silicon/robot/mode() set name = "Activate Held Object" @@ -1021,7 +1020,7 @@ if(health <= -maxHealth) //die only once death() return - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsParalyze() || getOxyLoss() > maxHealth*0.5) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || getOxyLoss() > maxHealth*0.5) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index 2b52da6821..06fba520d8 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -170,7 +170,7 @@ if(!..()) return - if(IsStun()) + if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) old_target_fire = target_fire target_fire = null mode = BOT_IDLE @@ -287,7 +287,7 @@ if(!on) icon_state = "firebot0" return - if(IsStun()) + if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) icon_state = "firebots1" else if(stationary_mode) //Bot has yellow light to indicate stationary mode. icon_state = "firebots1" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index f70080c5e8..2dfa02debb 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -417,17 +417,17 @@ else ..() -/mob/living/simple_animal/update_canmove(value_otherwise = TRUE) - if(IsUnconscious() || IsStun() || IsKnockdown() || stat || resting) +/mob/living/simple_animal/update_mobility(value_otherwise = MOBILITY_FLAGS_DEFAULT) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || stat || resting) drop_all_held_items() - canmove = FALSE + mobility_flags = NONE else if(buckled) - canmove = FALSE + mobility_flags = ~MOBILITY_MOVE else - canmove = value_otherwise + mobility_flags = MOBILITY_FLAGS_DEFAUTL update_transform() update_action_buttons_icon() - return canmove + return mobility_flags /mob/living/simple_animal/update_transform() var/matrix/ntransform = matrix(transform) //aka transform.Copy() diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 61295a8ad5..126f0a4263 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -244,27 +244,27 @@ update_mobility() /mob/living/proc/SetAllImmobility(amount, updating, ignore_canstun = FALSE) - _MOBILITYFLAGTEMPORARY_SetParalyzed(amount, FALSE, ignore_canstun) + SetParalyzed(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_SetImmobilized(amount, FALSE, ignore_canstun) + SetImmobilized(amount, FALSE, ignore_canstun) if(updating) update_mobility() /mob/living/proc/AdjustAllImmobility(amount, updating, ignore_canstun = FALSE) - _MOBILITYFLAGTEMPORARY_AdjustParalyzed(amount, FALSE, ignore_canstun) + AdjustParalyzed(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_AdjustStun(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_AdjustImmobilized(amount, FALSE, ignore_canstun) + AdjustImmobilized(amount, FALSE, ignore_canstun) if(updating) update_mobility() /// Makes sure all 4 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityupto(amount, updating, ignore_canstun = FALSE) - if(AmountStun() > amount) - SetStun(amount, FALSE, ignore_canstun) - if(AmountKnockdown() > amount) - SetKnockdown(amount, FALSE, ignore_canstun) + if(_MOBILTIYFLAGTEMPORARY_AmountStun() > amount) + _MOBILTIYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) + if(_MOBILTIYFLAGTEMPORARY_AmountKnockdown() > amount) + _MOBILTIYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) if(AmountParalyzed() > amount) SetParalyzed(amount, FALSE, ignore_canstun) if(AmountImmobilized() > amount) @@ -286,7 +286,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _MOBILTIYFLAGTEMPORARY_IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) else if(amount > 0) @@ -344,7 +344,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _MOBILTIYFLAGTEMPORARY_IsSleeping() if(amount <= 0) if(S) qdel(S) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6394b45aa7..6acface60f 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -187,8 +187,7 @@ //Make mob invisible and spawn animation - notransform = 1 - canmove = 0 + notransform = TRUE Stun(22, ignore_canstun = TRUE) icon = null cut_overlays() @@ -365,8 +364,8 @@ else dropItemToGround(W) regenerate_icons() - notransform = 1 - canmove = 0 + notransform = TRUE + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM for(var/t in bodyparts) @@ -485,8 +484,8 @@ for(var/obj/item/W in src) dropItemToGround(W) regenerate_icons() - notransform = 1 - canmove = 0 + notransform = TRUE + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM for(var/t in bodyparts) //this really should not be necessary @@ -516,7 +515,7 @@ regenerate_icons() notransform = TRUE - canmove = FALSE + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM var/mob/living/simple_animal/hostile/gorilla/new_gorilla = new (get_turf(src)) @@ -545,7 +544,7 @@ regenerate_icons() notransform = TRUE - canmove = FALSE + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 854294e4e0..b3f5dd041d 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -52,17 +52,17 @@ if(total_health) if(!recoveringstam && total_health >= STAMINA_CRIT && !stat) to_chat(src, "You're too exhausted to keep going...") - resting = TRUE + set_resting(TRUE, FALSE, FALSE) if(combatmode) toggle_combat_mode(TRUE) recoveringstam = TRUE filters += CIT_FILTER_STAMINACRIT - update_canmove() + update_mobility() if(recoveringstam && total_health <= STAMINA_SOFTCRIT) to_chat(src, "You don't feel nearly as exhausted anymore.") recoveringstam = FALSE filters -= CIT_FILTER_STAMINACRIT - update_canmove() + update_mobility() update_health_hud() /mob/living/proc/update_hud_sprint_bar() From 606ea46314e12341da6136ad3298db8206d2be16 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 11:48:41 -0800 Subject: [PATCH 10/92] parentheses --- code/_onclick/cyborg.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 1ce359b91d..557dcb7464 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -66,7 +66,7 @@ if(C.user_unbuckle_mob(C.buckled_mobs[1],src)) return - if(!W && (get_dist(src,A) <= interaction_range))) + if(!W && (get_dist(src,A) <= interaction_range)) A.attack_robot(src) return From e4cfb1fa39e2dc0d428ae94825785d9a77bd3080 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 12:03:46 -0800 Subject: [PATCH 11/92] more --- .../antagonists/abductor/equipment/abduction_gear.dm | 5 ++--- .../mob/living/carbon/alien/humanoid/caste/hunter.dm | 2 +- .../mob/living/carbon/alien/humanoid/death.dm | 2 +- .../mob/living/carbon/alien/larva/update_icons.dm | 4 ++-- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/monkey/monkey_defense.dm | 2 +- code/modules/mob/living/death.dm | 2 +- code/modules/mob/living/living.dm | 5 ++--- code/modules/mob/living/living_mobility.dm | 4 ++-- code/modules/mob/living/silicon/robot/death.dm | 2 +- code/modules/mob/living/silicon/robot/robot.dm | 8 ++++---- code/modules/mob/living/status_procs.dm | 12 ++++++------ code/modules/mob/mob_movement.dm | 2 +- code/modules/mob/transform_procs.dm | 6 +++--- modular_citadel/code/modules/mob/living/living.dm | 2 +- 15 files changed, 29 insertions(+), 31 deletions(-) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index f558132b82..a4191a65ef 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -111,14 +111,13 @@ var/mob/living/carbon/human/M = loc M.adjustStaminaLoss(-75) M.SetUnconscious(0) - M.SetStun(0) - M.SetKnockdown(0) + M.SetAllImmobility(0) combat_cooldown = 0 START_PROCESSING(SSobj, src) /obj/item/clothing/suit/armor/abductor/vest/process() combat_cooldown++ - if(combat_cooldown==initial(combat_cooldown)) + if(combat_cooldown == initial(combat_cooldown)) STOP_PROCESSING(SSobj, src) /obj/item/clothing/suit/armor/abductor/Destroy() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index fe3a1696a4..e9cd788e30 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -31,7 +31,7 @@ #define MAX_ALIEN_LEAP_DIST 7 /mob/living/carbon/alien/humanoid/hunter/proc/leap_at(atom/A) - if(!canmove || leaping) + if(!CHECK_MULTIPLE_BITFIELDS(mobility_flags, MOBILITY_STAND | MOBILITY_MOVE) || leaping) return if(pounce_cooldown > world.time) diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm index c6c675ead9..827d3c2add 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/death.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm @@ -4,7 +4,7 @@ . = ..() - update_canmove() + update_mobility() update_icons() status_flags |= CANPUSH diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index 8510f7278d..5ce429f558 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -14,9 +14,9 @@ icon_state = "larva[state]_dead" else if(handcuffed || legcuffed) //This should be an overlay. Who made this an icon_state? icon_state = "larva[state]_cuff" - else if(stat == UNCONSCIOUS || lying || _MOBILTIYFLAGTEMPORARY_resting) + else if(stat == UNCONSCIOUS || lying || _MOBILITYFLAGTEMPORARY_resting) icon_state = "larva[state]_sleep" - else if(_MOBILTIYFLAGTEMPORARY_IsStun() || IsParalyzed()) + else if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) icon_state = "larva[state]_stun" else icon_state = "larva[state]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5e1052505a..d04b259b03 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -816,7 +816,7 @@ else stat = CONSCIOUS adjust_blindness(-1) - update_canmove() + update_mobility() update_damage_hud() update_health_hud() med_hud_set_status() diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 3fd0001a12..0f72907613 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -79,7 +79,7 @@ visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!", null, COMBAT_MESSAGE_RANGE) if(INTENT_DISARM) - if(!IsUnconscious()) + if(!_MOBILITYFLAGTEMPORARY_IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) DefaultCombatKnockdown(40) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 1c6546fd83..c040f4f8d9 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -78,7 +78,7 @@ update_action_buttons_icon() update_damage_hud() update_health_hud() - update_canmove() + update_mobility() med_hud_set_health() med_hud_set_status() if(!gibbed && !QDELETED(src)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 7667113937..364d98c70d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -362,11 +362,10 @@ if(stat) return TRUE if(!CHECK_BITFIELD(mobility_flags, MOBILITY_FLAGS_ANY_INTERACTION)) + return TRUE if(!ignore_restraints && restrained(ignore_grab)) return TRUE return FALSE - if(stat || IsUnconscious() || IsStun() || IsKnockdown() || recoveringstam || (!ignore_restraints && restrained(ignore_grab))) // CIT CHANGE - adds recoveringstam check here - return TRUE /mob/living/canUseStorage() if (get_num_arms() <= 0) @@ -1077,7 +1076,7 @@ if(.) if(client) reset_perspective() - update_canmove() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. + update_mobility() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. /mob/living/proc/update_z(new_z) // 1+ to register, null to unregister if(isnull(new_z) && audiovisual_redirect) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 2a98e283fd..e28762521c 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -25,13 +25,13 @@ set category = "IC" if(client?.prefs?.autostand) intentionalresting = !intentionalresting - to_chat(src, "You are now attempting to [intentionalresting ? "[!_MOBILTIYFLAGTEMPORARY_resting ? "lay down and ": ""]stay down" : "[_MOBILTIYFLAGTEMPORARY_resting ? "get up and ": ""]stay up"].") + to_chat(src, "You are now attempting to [intentionalresting ? "[!_MOBILITYFLAGTEMPORARY_resting ? "lay down and ": ""]stay down" : "[_MOBILITYFLAGTEMPORARY_resting ? "get up and ": ""]stay up"].") if(intentionalresting && !resting) set_resting(TRUE, FALSE) else resist_a_rest() else - if(!_MOBILTIYFLAGTEMPORARY_resting) + if(!_MOBILITYFLAGTEMPORARY_resting) set_resting(TRUE, FALSE) to_chat(src, "You are now laying down.") else diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 75e8fd317f..ec73b93ce8 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -21,7 +21,7 @@ locked = FALSE //unlock cover - update_canmove() + update_mobility() if(!QDELETED(builtInCamera) && builtInCamera.status) builtInCamera.toggle_cam(src,0) update_headlamp(1) //So borg lights are disabled when killed. diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 39a8858106..cbe979a861 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1265,11 +1265,11 @@ aicamera.stored[i] = TRUE /mob/living/silicon/robot/lay_down() - ..() - update_canmove() + . = ..() + update_mobility() -/mob/living/silicon/robot/update_canmove() - ..() +/mob/living/silicon/robot/update_mobility() + . = ..() if(client && stat != DEAD && dogborg == FALSE) if(resting) cut_overlays() diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 126f0a4263..43be1bc273 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -261,10 +261,10 @@ /// Makes sure all 4 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityupto(amount, updating, ignore_canstun = FALSE) - if(_MOBILTIYFLAGTEMPORARY_AmountStun() > amount) - _MOBILTIYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) - if(_MOBILTIYFLAGTEMPORARY_AmountKnockdown() > amount) - _MOBILTIYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) + if(_MOBILITYFLAGTEMPORARY_AmountStun() > amount) + _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) + if(_MOBILITYFLAGTEMPORARY_AmountKnockdown() > amount) + _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) if(AmountParalyzed() > amount) SetParalyzed(amount, FALSE, ignore_canstun) if(AmountImmobilized() > amount) @@ -286,7 +286,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _MOBILTIYFLAGTEMPORARY_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) else if(amount > 0) @@ -344,7 +344,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _MOBILTIYFLAGTEMPORARY_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() if(amount <= 0) if(S) qdel(S) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 04d47da56e..864200dd2b 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -75,7 +75,7 @@ if(mob.buckled) //if we're buckled to something, tell it we moved. return mob.buckled.relaymove(mob, direct) - if(!mob.canmove) + if(!CHECK_BITFIELD(mob, MOBILITY_MOVE)) return FALSE if(isobj(mob.loc) || ismob(mob.loc)) //Inside an object, tell it we moved diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 6acface60f..975516b033 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -315,13 +315,13 @@ return ..() /mob/living/carbon/AIize() - if (notransform) + if(notransform) return for(var/obj/item/W in src) dropItemToGround(W) regenerate_icons() - notransform = 1 - canmove = 0 + notransform = TRUE + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM return ..() diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index b3f5dd041d..6999092e88 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -19,7 +19,7 @@ /mob/living/movement_delay(ignorewalk = 0) . = ..() - if(resting) + if(!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) . += 6 /atom From 5b2c4deaa07b1d6249047d9e53689c19f6b26977 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 7 Jan 2020 12:04:41 -0800 Subject: [PATCH 12/92] lockcharge --> locked_down --- code/_onclick/cyborg.dm | 2 +- code/datums/wires/robot.dm | 4 ++-- code/game/machinery/computer/robot.dm | 6 +++--- code/game/objects/items/robot/robot_parts.dm | 4 ++-- code/game/objects/items/robot/robot_upgrades.dm | 4 ++-- code/modules/admin/verbs/borgpanel.dm | 6 +++--- code/modules/mob/living/silicon/robot/robot.dm | 8 ++++---- code/modules/mob/living/silicon/robot/robot_mobility.dm | 4 ++-- code/modules/mob/living/silicon/robot/robot_modules.dm | 4 ++-- code/modules/tgui/states.dm | 2 +- 10 files changed, 22 insertions(+), 22 deletions(-) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 557dcb7464..7691bb47c8 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -14,7 +14,7 @@ if(check_click_intercept(params,A)) return - if(stat || lockcharge || IsParalyzed() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsUnconscious()) + if(stat || locked_down || IsParalyzed() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsUnconscious()) return var/list/modifiers = params2list(params) diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index 65438830a2..43151434ca 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -22,7 +22,7 @@ status += "The law sync module is [R.lawupdate ? "on" : "off"]." status += "The intelligence link display shows [R.connected_ai ? R.connected_ai.name : "NULL"]." status += "The camera light is [!isnull(R.builtInCamera) && R.builtInCamera.status ? "on" : "off"]." - status += "The lockdown indicator is [R.lockcharge ? "on" : "off"]." + status += "The lockdown indicator is [R.locked_down ? "on" : "off"]." status += "The reset module hardware light is [R.has_module() ? "on" : "off"]." return status @@ -54,7 +54,7 @@ R.lawsync() R.show_laws() if(WIRE_LOCKDOWN) - R.SetLockdown(!R.lockcharge) // Toggle + R.SetLockdown(!R.locked_down) // Toggle if(WIRE_RESET_MODULE) if(R.has_module()) R.visible_message("[R]'s module servos twitch.", "Your module display flickers.") diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 5c8d189a7f..a9050a63ab 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -120,10 +120,10 @@ if(choice == "Confirm" && can_control(usr, R) && !..()) message_admins("[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!") - R.SetLockdown(!R.lockcharge) - to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") + R.SetLockdown(!R.locked_down) + to_chat(R, "[!R.locked_down ? "Your lockdown has been lifted!" : "You have been locked down!"]") if(R.connected_ai) - to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
") + to_chat(R.connected_ai, "[!R.locked_down ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
") else to_chat(usr, "Access Denied.") diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index ab8030c9c2..03a643c690 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -317,7 +317,7 @@ O.robot_suit = src if(!locomotion) - O.lockcharge = 1 + O.locked_down = 1 O.update_canmove() to_chat(O, "Error: Servo motors unresponsive.") @@ -356,7 +356,7 @@ forceMove(O) O.robot_suit = src if(!locomotion) - O.lockcharge = TRUE + O.locked_down = TRUE O.update_canmove() else if(istype(W, /obj/item/pen)) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bf363f959c..f412278a40 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -557,7 +557,7 @@ return FALSE R.notransform = TRUE - var/prev_lockcharge = R.lockcharge + var/prev_locked_down = R.locked_down R.SetLockdown(1) R.anchored = TRUE var/datum/effect_system/smoke_spread/smoke = new @@ -567,7 +567,7 @@ for(var/i in 1 to 4) playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, 1, -1) sleep(12) - if(!prev_lockcharge) + if(!prev_locked_down) R.SetLockdown(0) R.anchored = FALSE R.notransform = FALSE diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index c0445d588d..8cfd53b300 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -47,7 +47,7 @@ "emagged" = borg.emagged, "active_module" = "[borg.module.type]", "lawupdate" = borg.lawupdate, - "lockdown" = borg.lockcharge, + "lockdown" = borg.locked_down, "scrambledcodes" = borg.scrambledcodes ) .["upgrades"] = list() @@ -122,8 +122,8 @@ message_admins("[key_name_admin(user)] disabled lawsync on [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] disabled lawsync on [key_name(borg)].") if ("toggle_lockdown") - borg.SetLockdown(!borg.lockcharge) - if (borg.lockcharge) + borg.SetLockdown(!borg.locked_down) + if (borg.locked_down) message_admins("[key_name_admin(user)] locked down [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] locked down [key_name(borg)].") else diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cbe979a861..0b5b667e3f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -64,7 +64,7 @@ var/lawupdate = 1 //Cyborgs will sync their laws with their AI by default var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them. - var/lockcharge //Boolean of whether the borg is locked down or not + var/locked_down //Boolean of whether the borg is locked down or not var/toner = 0 var/tonermax = 40 @@ -489,7 +489,7 @@ update_icons() else if(istype(W, /obj/item/wrench) && opened && !cell) //Deconstruction. The flashes break from the fall, to prevent this from being a ghetto reset module. - if(!lockcharge) + if(!locked_down) to_chat(user, "[src]'s bolts spark! Maybe you should lock them down first!") spark_system.start() return @@ -754,7 +754,7 @@ throw_alert("locked", /obj/screen/alert/locked) else clear_alert("locked") - lockcharge = state + locked_down = state update_canmove() /mob/living/silicon/robot/proc/SetEmagged(new_state) @@ -944,7 +944,7 @@ to_chat(connected_ai, "

NOTICE - Remote telemetry lost with [name].
") /mob/living/silicon/robot/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE) - if(stat || lockcharge || low_power_mode) + if(stat || locked_down || low_power_mode) to_chat(src, "You can't do that right now!") return FALSE if(be_close && !in_range(M, src)) diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index 85018646de..4b0d30b06e 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -3,10 +3,10 @@ if(!stat) if(!resting) newflags |= MOBILITY_STAND - if(!lockcharge) + if(!locked_down) newflags |= MOBILITY_MOVE newflags |= MOBILITY_PULL - if(!lockcharge) + if(!locked_down) newflags |= (MOBILITY_UI | MOBILITY_STORAGE) mobility_flags = newflags update_transform() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ece7fe9ecb..7f7ea67905 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -250,7 +250,7 @@ /obj/item/robot_module/proc/do_transform_delay() var/mob/living/silicon/robot/R = loc - var/prev_lockcharge = R.lockcharge + var/prev_locked_down = R.locked_down sleep(1) flick("[cyborg_base_icon]_transform", R) R.notransform = TRUE @@ -260,7 +260,7 @@ for(var/i in 1 to 4) playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, 1, -1) sleep(7) - if(!prev_lockcharge) + if(!prev_locked_down) R.SetLockdown(0) R.setDir(SOUTH) R.anchored = FALSE diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index fc30d171fb..1d8c42b4bc 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -70,7 +70,7 @@ return ..() /mob/living/silicon/robot/shared_ui_interaction(src_object) - if(!cell || cell.charge <= 0 || lockcharge) // Disable UIs if the Borg is unpowered or locked. + if(!cell || cell.charge <= 0 || locked_down) // Disable UIs if the Borg is unpowered or locked. return UI_DISABLED return ..() From 24c1baddd0d70b51d84c533a33f670e2d28079f0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 05:50:19 -0800 Subject: [PATCH 13/92] compile compile compile --- code/game/machinery/computer/robot.dm | 7 +++---- code/game/mecha/equipment/tools/medical_tools.dm | 3 +-- code/game/objects/items/devices/laserpointer.dm | 3 +-- code/game/objects/items/holy_weapons.dm | 2 +- code/game/objects/items/hot_potato.dm | 3 +-- code/game/objects/items/robot/robot_items.dm | 9 +++------ code/game/objects/items/robot/robot_parts.dm | 2 +- code/game/objects/items/storage/bags.dm | 3 ++- code/game/objects/items/toys.dm | 7 ++++++- code/modules/assembly/flash.dm | 2 +- code/modules/clothing/head/misc_special.dm | 2 +- code/modules/mob/living/living_defense.dm | 6 +++--- code/modules/mob/living/living_mobility.dm | 1 - code/modules/mob/living/simple_animal/simple_animal.dm | 4 ++-- code/modules/mob/living/status_procs.dm | 4 ++-- 15 files changed, 28 insertions(+), 30 deletions(-) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index a9050a63ab..2df3dd5fe5 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -37,12 +37,11 @@ dat += "[R.name] |" if(R.stat) dat += " Not Responding |" - else if (!R.canmove) + else if(R.locked_down) dat += " Locked Down |" else dat += " Operating Normally |" - if (!R.canmove) - else if(R.cell) + if(R.cell) dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" else dat += " No Cell Installed |" @@ -62,7 +61,7 @@ dat += "(Hack) " else if(IsAdminGhost(user) && !R.emagged) dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " + dat += "([R.locked_down? "Lockdown" : "Release"]) " dat += "(Destroy)" dat += "
" diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ae3fdb15b4..8b043de9ce 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -225,8 +225,7 @@ return if(M.health > 0) M.adjustOxyLoss(-1) - M.AdjustStun(-80) - M.AdjustKnockdown(-80) + M.AdjustAllImmobility(-80) M.AdjustUnconscious(-80) if(M.reagents.get_reagent_amount("epinephrine") < 5) M.reagents.add_reagent("epinephrine", 5) diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 5a343ced30..69454b34d3 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -144,8 +144,7 @@ if(prob(50)) C.visible_message("[C] pounces on the light!","LIGHT!") C.Move(targloc) - C.resting = TRUE - C.update_canmove() + C.set_resting(TRUE) else C.visible_message("[C] looks uninterested in your games.","You spot [user] shining [src] at you. How insulting!") diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index b6a218520f..151a0c4bf1 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -72,7 +72,7 @@ display_names += list(initial(A.name) = A) var/choice = input(M,"What holy armor kit would you like to order?","Holy Armor Theme") as null|anything in display_names - if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || GLOB.holy_armor_type) + if(QDELETED(src) || !choice || !CHECK_BITFIELD(M.mobility_flags, MOBILITY_USE) || !in_range(M, src) || GLOB.holy_armor_type) return var/index = display_names.Find(choice) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 40f2741a17..70f83c7ba8 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -71,8 +71,7 @@ if(stimulant) if(isliving(loc)) var/mob/living/L = loc - L.SetStun(0) - L.SetKnockdown(0) + L.SetAllImmobility(0) L.SetSleeping(0) L.SetUnconscious(0) L.reagents.add_reagent("muscle_stimulant", CLAMP(5 - L.reagents.get_reagent_amount("muscle_stimulant"), 0, 5)) //If you don't have legs or get bola'd, tough luck! diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 4d006e3806..43812ce2f0 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -80,9 +80,8 @@ else user.visible_message("[user] hugs [M] to make [M.p_them()] feel better!", \ "You hug [M] to make [M.p_them()] feel better!") - if(M.resting && !M.recoveringstam) - M.resting = FALSE - M.update_canmove() + if(M._MOBILITYFLAGTEMPORARY_resting && !M.recoveringstam) + M.set_resting(FALSE, TRUE) else user.visible_message("[user] pets [M]!", \ "You pet [M]!") @@ -101,8 +100,7 @@ user.visible_message("[user] hugs [M] in a firm bear-hug! [M] looks uncomfortable...", \ "You hug [M] firmly to make [M.p_them()] feel better! [M] looks uncomfortable...") if(M.resting && !M.recoveringstam) - M.resting = FALSE - M.update_canmove() + M.set_resting(FALSE, TRUE) else user.visible_message("[user] bops [M] on the head!", \ "You bop [M] on the head!") @@ -114,7 +112,6 @@ M.electrocute_act(5, "[user]", safety = 1) user.visible_message("[user] electrocutes [M] with [user.p_their()] touch!", \ "You electrocute [M] with your touch!") - M.update_canmove() else if(!iscyborg(M)) M.adjustFireLoss(10) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 03a643c690..ac4f3e1d49 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -318,7 +318,7 @@ if(!locomotion) O.locked_down = 1 - O.update_canmove() + O.update_mobility() to_chat(O, "Error: Servo motors unresponsive.") else diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index a5f438ea65..618a4b7d31 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -231,7 +231,8 @@ set name = "Activate Seed Extraction" set category = "Object" set desc = "Activate to convert your plants into plantable seeds." - if(usr.stat || !usr.canmove || usr.restrained()) + var/mob/living/L = usr + if(istype(L) && !CHECK_BITFIELD(L.mobility_flags, MOBILITY_USE)) return for(var/obj/item/O in contents) seedify(O, 1) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 08c43f0437..01d43203f0 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1076,7 +1076,12 @@ return ..() /obj/item/toy/cards/singlecard/attack_self(mob/user) - if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + . = ..() + if(.) + return + if(!ishuman(user)) + return + if(!CHECK_BITFIELD(user, MOBILITY_USE)) return Flip() diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index b8efc28b1c..4bdfc29c36 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -203,7 +203,7 @@ /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) - if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection()) + if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && CHECK_BITFIELD(M.mobility_flags, MOBILITY_STAND) && !M.get_eye_protection()) M.DefaultCombatKnockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 127bf4c773..b24af9769a 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -282,7 +282,7 @@ if(target.get_item_by_slot(SLOT_HEAD) != src) return QDEL_NULL(paranoia) - if(!target.IsUnconscious()) + if(!target._MOBILITYFLAGTEMPORARY_IsUnconscious()) to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") /obj/item/clothing/head/foilhat/attack_hand(mob/user) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3c5c5e3518..19a8a07ddb 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -261,21 +261,21 @@ else visible_message("[user] has grabbed [src] aggressively!", \ "[user] has grabbed you aggressively!") - drop_all_held_items() + update_mobility() stop_pulling() log_combat(user, src, "grabbed", addition="aggressive grab[add_log]") if(GRAB_NECK) log_combat(user, src, "grabbed", addition="neck grab") visible_message("[user] has grabbed [src] by the neck!",\ "[user] has grabbed you by the neck!") - update_canmove() //we fall down + update_mobility() //we fall down if(!buckled && !density) Move(user.loc) if(GRAB_KILL) log_combat(user, src, "strangled", addition="kill grab") visible_message("[user] is strangling [src]!", \ "[user] is strangling you!") - update_canmove() //we fall down + update_mobility() //we fall down if(!buckled && !density) Move(user.loc) return 1 diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index e28762521c..6e49442919 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -95,7 +95,6 @@ var/immobilize = IsImmobilized() - /* var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) var/move_and_fall = stat == SOFT_CRIT && !pulledby diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 2dfa02debb..db0ebc12fe 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -418,13 +418,13 @@ ..() /mob/living/simple_animal/update_mobility(value_otherwise = MOBILITY_FLAGS_DEFAULT) - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || stat || resting) + if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || stat || _MOBILITYFLAGTEMPORARY_resting) drop_all_held_items() mobility_flags = NONE else if(buckled) mobility_flags = ~MOBILITY_MOVE else - mobility_flags = MOBILITY_FLAGS_DEFAUTL + mobility_flags = MOBILITY_FLAGS_DEFAULT update_transform() update_action_buttons_icon() return mobility_flags diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 43be1bc273..873aeaba62 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -26,7 +26,7 @@ return has_status_effect(STATUS_EFFECT_STUN) /mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountStun() //How many deciseconds remain in our stun - var/datum/status_effect/incapacitating/stun/S = IsStun() + var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() if(S) return S.duration - world.time return 0 @@ -260,7 +260,7 @@ update_mobility() /// Makes sure all 4 of the non-knockout immobilizing status effects are lower or equal to amount. -/mob/living/proc/HealAllImmobilityupto(amount, updating, ignore_canstun = FALSE) +/mob/living/proc/HealAllImmobilityUpTo(amount, updating, ignore_canstun = FALSE) if(_MOBILITYFLAGTEMPORARY_AmountStun() > amount) _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) if(_MOBILITYFLAGTEMPORARY_AmountKnockdown() > amount) From 830054c1061d04d7d668be7fe61975260348b13c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 13:25:47 -0800 Subject: [PATCH 14/92] sigh --- code/__DEFINES/flags.dm | 4 +- code/__DEFINES/status_effects.dm | 7 +- code/__DEFINES/traits.dm | 9 ++ code/datums/status_effects/debuffs.dm | 5 ++ .../machinery/porta_turret/portable_turret.dm | 2 +- .../antagonists/wizard/equipment/artefact.dm | 11 ++- .../antagonists/wizard/equipment/soulstone.dm | 4 +- .../components/unary_devices/cryo.dm | 6 +- .../carbon/alien/humanoid/caste/hunter.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 4 +- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 2 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_mobility.dm | 90 +++++-------------- .../modules/mob/living/silicon/robot/robot.dm | 6 +- .../living/silicon/robot/robot_mobility.dm | 2 +- code/modules/mob/living/status_procs.dm | 60 ++++++++++++- code/modules/mob/transform_procs.dm | 4 +- .../surgery/bodyparts/dismemberment.dm | 4 +- .../code/modules/mob/living/carbon/carbon.dm | 2 +- 20 files changed, 133 insertions(+), 97 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 87be7884c7..6b65a7ce7a 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -99,7 +99,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_STAND (1<<1) /// can pickup items #define MOBILITY_PICKUP (1<<2) -/// can hold and use items +/// can use items #define MOBILITY_USE (1<<3) /// can use interfaces like consoles #define MOBILITY_UI (1<<4) @@ -107,6 +107,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_STORAGE (1<<5) /// can pull things #define MOBILITY_PULL (1<<6) +/// can hold non-nodropped items voluntarily +#define MOBILITY_HOLD (1<<7) #define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL) #define MOBILITY_FLAGS_ANY_INTERACTION (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_UI | MOBILITY_STORAGE) diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 5ad599ab45..1fce2be908 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -37,8 +37,8 @@ ///////////// // DEBUFFS // ///////////// - -#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun //the affected is unable to move or use items +/// The affected is unable to move, or to use, hold, or pickup items. +#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun #define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is unable to stand up @@ -46,6 +46,9 @@ #define STATUS_EFFECT_PARALYZED /datum/status_effect/incapacitating/paralyzed //the affected is unable to move, use items, or stand up. +/// The affected is unable to use or pickup items +#define STATUS_EFFECT_DAZED /datum/status_effect/incapacitating/dazed + #define STATUS_EFFECT_UNCONSCIOUS /datum/status_effect/incapacitating/unconscious //the affected is unconscious #define STATUS_EFFECT_SLEEPING /datum/status_effect/incapacitating/sleeping //the affected is asleep diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 4f66482f51..2caf04c041 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -136,6 +136,15 @@ #define TRAIT_NOPULSE "nopulse" // Your heart doesn't beat. #define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events" +// mobility flag traits + +/// Disallow movement +#define TRAIT_MOBILITY_NOMOVE "mobility_nomove" +/// Disallow pickup +#define TRAIT_MOBILITY_NOPICKUP "mobility_nopickup" +/// Disallow item use +#define TRAIT_MOBILITY_NOUSE "mobility_nouse" + //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index c0b9c49240..cc3fb7d14f 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -33,6 +33,7 @@ /datum/status_effect/incapacitating/immobilized id = "immobilized" +//PARALYZED /datum/status_effect/incapacitating/paralyzed id = "paralyzed" @@ -40,6 +41,10 @@ if(owner.getStaminaLoss()) owner.adjustStaminaLoss(-0.3) //reduce stamina loss by 0.3 per tick, 6 per 2 seconds +//DAZED +/datum/status_effect/incapacitating/dazed + id = "dazed" + //UNCONSCIOUS /datum/status_effect/incapacitating/unconscious id = "unconscious" diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 8c2a04bfbc..9d9e5d14d8 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -545,7 +545,7 @@ var/obj/item/projectile/A //any emagged turrets drains 2x power and uses a different projectile? if(mode == TURRET_STUN) - if(nonlethal_projectile && C && C.resting) + if(nonlethal_projectile && C && C._REFACTORING_resting) use_power(reqpower*0.5) A = new nonlethal_projectile(T) playsound(loc, nonlethal_projectile_sound, 75, 1) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 676ef68ea9..f86f1622c7 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -377,7 +377,10 @@ /obj/item/warpwhistle/proc/end_effect(mob/living/carbon/user) user.invisibility = initial(user.invisibility) user.status_flags &= ~GODMODE - user.canmove = TRUE + REMOVE_TRAIT(user, TRAIT_MOBILITY_NOMOVE, src) + REMOVE_TRAIT(user, TRAIT_MOBILITY_NOUSE, src) + REMOVE_TRAIT(user, TRAIT_MOBILITY_NOPICKUP, src) + user.update_mobility() /obj/item/warpwhistle/attack_self(mob/living/carbon/user) if(!istype(user) || on_cooldown) @@ -390,7 +393,10 @@ on_cooldown = TRUE last_user = user playsound(T,'sound/magic/warpwhistle.ogg', 200, 1) - user.canmove = FALSE + ADD_TRAIT(user, TRAIT_MOBILITY_NOMOVE, src) + ADD_TRAIT(user, TRAIT_MOBILITY_NOUSE, src) + ADD_TRAIT(user, TRAIT_MOBILITY_NOPICKUP, src) + user.update_mobility() new /obj/effect/temp_visual/tornado(T) sleep(20) if(interrupted(user)) @@ -412,7 +418,6 @@ return if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) do_teleport(user, potential_T, channel = TELEPORT_CHANNEL_MAGIC) - user.canmove = 0 T = potential_T break breakout += 1 diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 962c2b2da4..4eb1e33bc2 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -83,8 +83,8 @@ /obj/item/soulstone/proc/release_shades(mob/user) for(var/mob/living/simple_animal/shade/A in src) A.status_flags &= ~GODMODE - A.canmove = TRUE A.forceMove(get_turf(user)) + A.mobility_flags = MOBILITY_FLAGS_DEFAULT A.cancel_camera() icon_state = "soulstone" name = initial(name) @@ -173,7 +173,7 @@ else T.forceMove(src) //put shade in stone T.status_flags |= GODMODE - T.canmove = FALSE + T.mobility_flags = NONE T.health = T.maxHealth icon_state = "soulstone2" name = "soulstone: Shade of [T.real_name]" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 0a54503be5..9046d2ff28 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -271,10 +271,10 @@ else . += "[src] seems empty." -/obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) +/obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/living/carbon/target, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !istype(target) || !user.IsAdvancedToolUser()) return - if (target.IsKnockdown() || target.IsStun() || target.IsSleeping() || target.IsUnconscious()) + if(!CHECK_BITFIELD(target.mobility_flags, MOBILITY_MOVE)) close_machine(target) else user.visible_message("[user] starts shoving [target] inside [src].", "You start shoving [target] inside [src].") diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index e9cd788e30..8c09bb431c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -79,7 +79,7 @@ if(leaping) leaping = 0 update_icons() - update_canmove() + update_mobility() /mob/living/carbon/alien/humanoid/float(on) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 397fc2a0f0..64b40f63e3 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -22,13 +22,13 @@ if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) - update_canmove() + update_mobility() else if(stat == UNCONSCIOUS) stat = CONSCIOUS if(!recoveringstam) resting = 0 adjust_blindness(-1) - update_canmove() + update_mobility() update_damage_hud() update_health_hud() diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index fe1a6d7d1c..6cf04e970c 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -296,7 +296,7 @@ if(M.force > 35) // durand and other heavy mechas DefaultCombatKnockdown(50) src.throw_at(throw_target, rand(1,5), 7) - else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax + else if(M.force >= 20 && CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) // lightweight mechas like gygax DefaultCombatKnockdown(30) src.throw_at(throw_target, rand(1,3), 7) update |= temp.receive_damage(dmg, 0) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 4376e99826..b34580bb19 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -21,7 +21,7 @@ else if(resisting) resisting = FALSE else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) - if(prob(25) && canmove && isturf(loc) && !pulledby) + if(prob(25) && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && !pulledby) step(src, pick(GLOB.cardinals)) else if(prob(1)) emote(pick("scratch","jump","roll","tail")) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 364d98c70d..980af46f41 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -486,7 +486,7 @@ stat = UNCONSCIOUS //the mob starts unconscious, blind_eyes(1) updatehealth() //then we check if the mob should wake up. - update_canmove() + update_mobility() update_sight() clear_alert("not_enough_oxy") reload_fullscreen() @@ -520,7 +520,7 @@ ExtinguishMob() fire_stacks = 0 confused = 0 - update_canmove() + update_mobility() var/datum/component/mood/mood = GetComponent(/datum/component/mood) if (mood) QDEL_LIST_ASSOC_VAL(mood.mood_events) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 6e49442919..111fa2de9b 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -92,61 +92,14 @@ var/stun = _MOBILITYFLAGTEMPORARY_IsStun() var/paralyze = IsParalyzed() var/knockdown = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/daze = IsDazed() var/immobilize = IsImmobilized() - -/* - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) - var/move_and_fall = stat == SOFT_CRIT && !pulledby - var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK - var/buckle_lying = !(buckled && !buckled.buckle_lying) - var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - if(ko || move_and_fall || IsStun() || chokehold) // Cit change - makes resting not force you to drop everything - drop_all_held_items() - unset_machine() - if(pulling) - stop_pulling() - else if(resting) //CIT CHANGE - makes resting make you stop pulling and interacting with machines - unset_machine() //CIT CHANGE - Ditto! - if(pulling) //CIT CHANGE - Ditto. - stop_pulling() //CIT CHANGE - Ditto... - else if(has_legs || ignore_legs) - lying = 0 - if (pulledby) - var/mob/living/L = pulledby - L.update_pull_movespeed() - if(buckled) - lying = 90*buckle_lying - else if(!lying) - if(resting) - lying = pick(90, 270) // Cit change - makes resting not force you to drop your held items - if(has_gravity()) // Cit change - Ditto - playsound(src, "bodyfall", 50, 1) // Cit change - Ditto! - else if(ko || move_and_fall || (!has_legs && !ignore_legs) || chokehold) - fall(forced = 1) - canmove = !(ko || recoveringstam || pinned || IsStun() || IsFrozen() || chokehold || buckled || (!has_legs && !ignore_legs && !has_arms)) //Cit change - makes it plausible to move while resting, adds pinning and stamina crit - density = !lying - if(lying) - if(layer == initial(layer)) //to avoid special cases like hiding larvas. - layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs - else - if(layer == LYING_MOB_LAYER) - layer = initial(layer) - update_transform() - if(!lying && lying_prev) - if(client) - client.move_delay = world.time + movement_delay() - lying_prev = lying - if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference - addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto - return canmove -*/ - - -/* var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() - var/canmove = !IsImmobilized() && !stun && conscious && !paralyzed && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) + var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground + var/canmove = !IsImmobilized() && !stun && conscious && !paralyzed && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) && !pinned + if(canmove) mobility_flags |= MOBILITY_MOVE else @@ -175,24 +128,27 @@ else mobility_flags |= MOBILITY_UI|MOBILITY_PULL - - var/canitem = !paralyzed && !stun && conscious && !chokehold && !restrained && has_arms if(canitem) mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) else mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) - if(!(mobility_flags & MOBILITY_USE)) + if(!(mobility_flags & MOBILITY_HOLD)) drop_all_held_items() if(!(mobility_flags & MOBILITY_PULL)) if(pulling) stop_pulling() if(!(mobility_flags & MOBILITY_UI)) unset_machine() + + if(pulledby) + pulledby.update_pull_movespeed() + + //Handle lying down, voluntary or involuntary density = !lying if(lying) if(!lying_prev) - fall(!canstand_involuntary) + set_resting(TRUE, TRUE, FALSE) if(layer == initial(layer)) //to avoid special cases like hiding larvas. layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs else @@ -201,17 +157,15 @@ update_transform() lying_prev = lying - // Movespeed mods based on arms/legs quantity - if(!get_leg_ignore()) - var/limbless_slowdown = 0 - // These checks for <2 should be swapped out for something else if we ever end up with a species with more than 2 - if(has_legs < 2) - limbless_slowdown += 6 - (has_legs * 3) - if(!has_legs && has_arms < 2) - limbless_slowdown += 6 - (has_arms * 3) - if(limbless_slowdown) - add_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE, priority=100, override=TRUE, multiplicative_slowdown=limbless_slowdown, movetypes=GROUND) - else - remove_movespeed_modifier(MOVESPEED_ID_LIVING_LIMBLESS, update=TRUE) -*/ + //Handle citadel autoresist + if((mobility_flags & MOBILITY_MOVE) && !intentionalresting && canstand_involuntary && iscarbon(src) && client?.prefs?.autostand)//CIT CHANGE - adds autostanding as a preference + addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto + return mobility_flags + + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOMOVE)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOPICKUP)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_PICKUP) + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOUSE)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 0b5b667e3f..3ace38f4e2 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -755,7 +755,7 @@ else clear_alert("locked") locked_down = state - update_canmove() + update_mobility() /mob/living/silicon/robot/proc/SetEmagged(new_state) emagged = new_state @@ -1024,13 +1024,13 @@ if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) - update_canmove() + update_mobility() update_headlamp() else if(stat == UNCONSCIOUS) stat = CONSCIOUS adjust_blindness(-1) - update_canmove() + update_mobility() update_headlamp() diag_hud_set_status() diag_hud_set_health() diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index 4b0d30b06e..e2ec8aeb55 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -11,4 +11,4 @@ mobility_flags = newflags update_transform() update_action_buttons_icon() - return canmove + return mobility_flags diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 873aeaba62..f960ffcdf1 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -234,12 +234,66 @@ P = apply_status_effect(STATUS_EFFECT_PARALYZED, amount, updating) return P +///////////////////////////////// DAZED //////////////////////////////////// +/mob/living/proc/IsDazed() //If we're Dazed + return has_status_effect(STATUS_EFFECT_DAZED) + +/mob/living/proc/AmountDazed() //How many deciseconds remain in our Dazed status effect + var/datum/status_effect/incapacitating/dazed/I = IsDazed() + if(I) + return I.duration - world.time + return 0 + +/mob/living/proc/Daze(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_DAZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/dazed/I = IsDazed() + if(I) + I.duration = max(world.time + amount, I.duration) + else if(amount > 0) + I = apply_status_effect(STATUS_EFFECT_DAZED, amount, updating) + return I + +/mob/living/proc/SetDazed(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_DAZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + var/datum/status_effect/incapacitating/dazed/I = IsDazed() + if(amount <= 0) + if(I) + qdel(I) + else + if(absorb_stun(amount, ignore_canstun)) + return + if(I) + I.duration = world.time + amount + else + I = apply_status_effect(STATUS_EFFECT_DAZED, amount, updating) + return I + +/mob/living/proc/AdjustDazed(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration + if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_DAZE, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) + return + if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) + if(absorb_stun(amount, ignore_canstun)) + return + var/datum/status_effect/incapacitating/dazed/I = IsDazed() + if(I) + I.duration += amount + else if(amount > 0) + I = apply_status_effect(STATUS_EFFECT_DAZED, amount, updating) + return I + //Blanket /mob/living/proc/AllImmobility(amount, updating, ignore_canstun = FALSE) Paralyze(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_Knockdown(amount, FALSE, ignore_canstun) Stun(amount, FALSE, ignore_canstun) Immobilize(amount, FALSE, ignore_canstun) + Daze(amount, FALSE, ignore_canstun) if(updating) update_mobility() @@ -248,6 +302,7 @@ _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) SetImmobilized(amount, FALSE, ignore_canstun) + SetDazed(amount, FALSE, ignore_canstun) if(updating) update_mobility() @@ -256,10 +311,11 @@ _MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, FALSE, ignore_canstun) _MOBILITYFLAGTEMPORARY_AdjustStun(amount, FALSE, ignore_canstun) AdjustImmobilized(amount, FALSE, ignore_canstun) + AdjustDazed(amount, FALSE, ignore_canstun) if(updating) update_mobility() -/// Makes sure all 4 of the non-knockout immobilizing status effects are lower or equal to amount. +/// Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityUpTo(amount, updating, ignore_canstun = FALSE) if(_MOBILITYFLAGTEMPORARY_AmountStun() > amount) _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) @@ -269,6 +325,8 @@ SetParalyzed(amount, FALSE, ignore_canstun) if(AmountImmobilized() > amount) SetImmobilized(amount, FALSE, ignore_canstun) + if(AmountDazed() > amount) + SetImmobilized(amount, FALSE, ignore_canstun) if(updating) update_mobility() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 975516b033..19d1b7fa53 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -407,7 +407,7 @@ dropItemToGround(W) regenerate_icons() notransform = 1 - canmove = 0 + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM for(var/t in bodyparts) @@ -440,7 +440,7 @@ dropItemToGround(W) regenerate_icons() notransform = 1 - canmove = 0 + Paralyze(INFINITY) icon = null invisibility = INVISIBILITY_MAXIMUM for(var/t in bodyparts) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 31f08f0e87..310b1f7bbe 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -121,7 +121,7 @@ C.update_health_hud() //update the healthdoll C.update_body() C.update_hair() - C.update_canmove() + C.update_mobility() if(!Tsec) // Tsec = null happens when a "dummy human" used for rendering icons on prefs screen gets its limbs replaced. qdel(src) @@ -296,7 +296,7 @@ C.update_body() C.update_hair() C.update_damage_overlays() - C.update_canmove() + C.update_mobility() /obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 34ea0e789f..f0d633ba45 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -33,7 +33,7 @@ if(combatmode) if(world.time >= combatmessagecooldown) if(a_intent != INTENT_HELP) - visible_message("[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") + visible_message("[src] [_MOBILITYFLAGTEMPORARY_resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") else visible_message("[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].") playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! From f1a4956afc9e524134379042777bd252a22cf295 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 13:26:34 -0800 Subject: [PATCH 15/92] easier for me to type --- code/_onclick/cyborg.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 2 +- code/modules/clothing/head/misc_special.dm | 2 +- .../carbon/alien/humanoid/update_icons.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../living/carbon/alien/larva/update_icons.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../living/carbon/monkey/monkey_defense.dm | 2 +- code/modules/mob/living/living_mobility.dm | 12 ++-- .../mob/living/silicon/pai/pai_shell.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 6 +- .../mob/living/simple_animal/bot/firebot.dm | 4 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/living/status_procs.dm | 72 +++++++++---------- code/modules/mob/mob_defines.dm | 2 +- .../code/modules/mob/living/carbon/carbon.dm | 2 +- 16 files changed, 60 insertions(+), 60 deletions(-) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 7691bb47c8..f3e6456332 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -14,7 +14,7 @@ if(check_click_intercept(params,A)) return - if(stat || locked_down || IsParalyzed() || _MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsUnconscious()) + if(stat || locked_down || IsParalyzed() || _REFACTORING_IsStun() || _REFACTORING_IsUnconscious()) return var/list/modifiers = params2list(params) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 43812ce2f0..178476ead4 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -80,7 +80,7 @@ else user.visible_message("[user] hugs [M] to make [M.p_them()] feel better!", \ "You hug [M] to make [M.p_them()] feel better!") - if(M._MOBILITYFLAGTEMPORARY_resting && !M.recoveringstam) + if(M._REFACTORING_resting && !M.recoveringstam) M.set_resting(FALSE, TRUE) else user.visible_message("[user] pets [M]!", \ diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index b24af9769a..25498b6d92 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -282,7 +282,7 @@ if(target.get_item_by_slot(SLOT_HEAD) != src) return QDEL_NULL(paranoia) - if(!target._MOBILITYFLAGTEMPORARY_IsUnconscious()) + if(!target._REFACTORING_IsUnconscious()) to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") /obj/item/clothing/head/foilhat/attack_hand(mob/user) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 8772013d66..ae2ee87ae6 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -4,7 +4,7 @@ for(var/I in overlays_standing) add_overlay(I) - var/asleep = _MOBILITYFLAGTEMPORARY_IsSleeping() + var/asleep = _REFACTORING_IsSleeping() if(stat == DEAD) //If we mostly took damage from fire if(fireloss > 125) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 64b40f63e3..c0216543bb 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -18,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) + if(_REFACTORING_IsUnconscious() || _REFACTORING_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index 5ce429f558..4272c763a9 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -14,9 +14,9 @@ icon_state = "larva[state]_dead" else if(handcuffed || legcuffed) //This should be an overlay. Who made this an icon_state? icon_state = "larva[state]_cuff" - else if(stat == UNCONSCIOUS || lying || _MOBILITYFLAGTEMPORARY_resting) + else if(stat == UNCONSCIOUS || lying || _REFACTORING_resting) icon_state = "larva[state]_sleep" - else if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) + else if(_REFACTORING_IsStun() || IsParalyzed()) icon_state = "larva[state]_stun" else icon_state = "larva[state]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index d04b259b03..0bd004a08a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -803,7 +803,7 @@ if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH)) death() return - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) + if(_REFACTORING_IsUnconscious() || _REFACTORING_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) stat = UNCONSCIOUS blind_eyes(1) if(combatmode) diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index 0f72907613..b2a923cc49 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -79,7 +79,7 @@ visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!", null, COMBAT_MESSAGE_RANGE) if(INTENT_DISARM) - if(!_MOBILITYFLAGTEMPORARY_IsUnconscious()) + if(!_REFACTORING_IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) DefaultCombatKnockdown(40) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 111fa2de9b..533065a96f 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -25,20 +25,20 @@ set category = "IC" if(client?.prefs?.autostand) intentionalresting = !intentionalresting - to_chat(src, "You are now attempting to [intentionalresting ? "[!_MOBILITYFLAGTEMPORARY_resting ? "lay down and ": ""]stay down" : "[_MOBILITYFLAGTEMPORARY_resting ? "get up and ": ""]stay up"].") + to_chat(src, "You are now attempting to [intentionalresting ? "[!_REFACTORING_resting ? "lay down and ": ""]stay down" : "[_REFACTORING_resting ? "get up and ": ""]stay up"].") if(intentionalresting && !resting) set_resting(TRUE, FALSE) else resist_a_rest() else - if(!_MOBILITYFLAGTEMPORARY_resting) + if(!_REFACTORING_resting) set_resting(TRUE, FALSE) to_chat(src, "You are now laying down.") else resist_a_rest() /mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. - if(!_MOBILITYFLAGTEMPORARY_resting || stat || attemptingstandup) + if(!_REFACTORING_resting || stat || attemptingstandup) return FALSE if(ignoretimer) set_resting(FALSE, FALSE) @@ -84,14 +84,14 @@ var/stat_softcrit = stat == SOFT_CRIT var/stat_conscious = (stat == CONSCIOUS) || stat_softcrit - var/conscious = !_MOBILITYFLAGTEMPORARY_IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) + var/conscious = !_REFACTORING_IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) var/has_arms = get_num_arms() var/has_legs = get_num_legs() var/ignore_legs = get_leg_ignore() - var/stun = _MOBILITYFLAGTEMPORARY_IsStun() + var/stun = _REFACTORING_IsStun() var/paralyze = IsParalyzed() - var/knockdown = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/knockdown = _REFACTORING_IsKnockdown() var/daze = IsDazed() var/immobilize = IsImmobilized() diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 8e0375fae1..33aeca8521 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -100,7 +100,7 @@ /mob/living/silicon/pai/lay_down() . = ..() if(loc != card) - visible_message("[src] [_MOBILITYFLAGTEMPORARY_resting? "lays down for a moment..." : "perks up from the ground"]") + visible_message("[src] [_REFACTORING_resting? "lays down for a moment..." : "perks up from the ground"]") update_icon() /mob/living/silicon/pai/start_pulling(atom/movable/AM, gs) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3ace38f4e2..a5fa2a3c25 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -675,7 +675,7 @@ if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' pixel_x = initial(pixel_x) - if(stat != DEAD && !(_MOBILITYFLAGTEMPORARY_IsUnconscious() ||_MOBILITYFLAGTEMPORARY_IsStun() || _MOBILITYFLAGTEMPORARY_IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. + if(stat != DEAD && !(_REFACTORING_IsUnconscious() ||_REFACTORING_IsStun() || _REFACTORING_IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. if(!eye_lights) eye_lights = new() if(lamp_intensity > 2) @@ -699,7 +699,7 @@ update_fire() if(client && stat != DEAD && module.dogborg == TRUE) - if(_MOBILITYFLAGTEMPORARY_resting) + if(_REFACTORING_resting) if(sitting) icon_state = "[module.cyborg_base_icon]-sit" if(bellyup) @@ -1020,7 +1020,7 @@ if(health <= -maxHealth) //die only once death() return - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || getOxyLoss() > maxHealth*0.5) + if(_REFACTORING_IsUnconscious() || _REFACTORING_IsStun() || IsParalyzed() || getOxyLoss() > maxHealth*0.5) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index 06fba520d8..e4fa3236b1 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -170,7 +170,7 @@ if(!..()) return - if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) + if(_REFACTORING_IsStun() || IsParalyzed()) old_target_fire = target_fire target_fire = null mode = BOT_IDLE @@ -287,7 +287,7 @@ if(!on) icon_state = "firebot0" return - if(_MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed()) + if(_REFACTORING_IsStun() || IsParalyzed()) icon_state = "firebots1" else if(stationary_mode) //Bot has yellow light to indicate stationary mode. icon_state = "firebots1" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index db0ebc12fe..4df324d5a8 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -418,7 +418,7 @@ ..() /mob/living/simple_animal/update_mobility(value_otherwise = MOBILITY_FLAGS_DEFAULT) - if(_MOBILITYFLAGTEMPORARY_IsUnconscious() || _MOBILITYFLAGTEMPORARY_IsStun() || IsParalyzed() || stat || _MOBILITYFLAGTEMPORARY_resting) + if(_REFACTORING_IsUnconscious() || _REFACTORING_IsStun() || IsParalyzed() || stat || _REFACTORING_resting) drop_all_held_items() mobility_flags = NONE else if(buckled) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index f960ffcdf1..b63e766418 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -22,11 +22,11 @@ ////////////////////////////// STUN //////////////////////////////////// -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsStun() //If we're stunned +/mob/living/proc/_REFACTORING_IsStun() //If we're stunned return has_status_effect(STATUS_EFFECT_STUN) -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountStun() //How many deciseconds remain in our stun - var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() +/mob/living/proc/_REFACTORING_AmountStun() //How many deciseconds remain in our stun + var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() if(S) return S.duration - world.time return 0 @@ -37,18 +37,18 @@ if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() + var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/_REFACTORING_SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() + var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() if(amount <= 0) if(S) qdel(S) @@ -61,13 +61,13 @@ S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/_REFACTORING_AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = _MOBILITYFLAGTEMPORARY_IsStun() + var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() if(S) S.duration += amount else if(amount > 0) @@ -76,33 +76,33 @@ ///////////////////////////////// KNOCKDOWN ///////////////////////////////////// -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsKnockdown() //If we're knocked down +/mob/living/proc/_REFACTORING_IsKnockdown() //If we're knocked down return has_status_effect(STATUS_EFFECT_KNOCKDOWN) -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AmountKnockdown() //How many deciseconds remain in our knockdown - var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() +/mob/living/proc/_REFACTORING_AmountKnockdown() //How many deciseconds remain in our knockdown + var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() if(K) return K.duration - world.time return 0 -/mob/living/proc/_MOBILITYFLAGTEMPORARY_Knockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/_REFACTORING_Knockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() if(K) K.duration = max(world.time + amount, K.duration) else if(amount > 0) K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/_MOBILITYFLAGTEMPORARY_SetKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/_REFACTORING_SetKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() if(amount <= 0) if(K) qdel(K) @@ -115,13 +115,13 @@ K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/_MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/_REFACTORING_AdjustKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = _MOBILITYFLAGTEMPORARY_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() if(K) K.duration += amount else if(amount > 0) @@ -290,7 +290,7 @@ //Blanket /mob/living/proc/AllImmobility(amount, updating, ignore_canstun = FALSE) Paralyze(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_Knockdown(amount, FALSE, ignore_canstun) + _REFACTORING_Knockdown(amount, FALSE, ignore_canstun) Stun(amount, FALSE, ignore_canstun) Immobilize(amount, FALSE, ignore_canstun) Daze(amount, FALSE, ignore_canstun) @@ -299,8 +299,8 @@ /mob/living/proc/SetAllImmobility(amount, updating, ignore_canstun = FALSE) SetParalyzed(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) + _REFACTORING_SetKnockdown(amount, FALSE, ignore_canstun) + _REFACTORING_SetStun(amount, FALSE, ignore_canstun) SetImmobilized(amount, FALSE, ignore_canstun) SetDazed(amount, FALSE, ignore_canstun) if(updating) @@ -308,8 +308,8 @@ /mob/living/proc/AdjustAllImmobility(amount, updating, ignore_canstun = FALSE) AdjustParalyzed(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_AdjustKnockdown(amount, FALSE, ignore_canstun) - _MOBILITYFLAGTEMPORARY_AdjustStun(amount, FALSE, ignore_canstun) + _REFACTORING_AdjustKnockdown(amount, FALSE, ignore_canstun) + _REFACTORING_AdjustStun(amount, FALSE, ignore_canstun) AdjustImmobilized(amount, FALSE, ignore_canstun) AdjustDazed(amount, FALSE, ignore_canstun) if(updating) @@ -317,10 +317,10 @@ /// Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityUpTo(amount, updating, ignore_canstun = FALSE) - if(_MOBILITYFLAGTEMPORARY_AmountStun() > amount) - _MOBILITYFLAGTEMPORARY_SetStun(amount, FALSE, ignore_canstun) - if(_MOBILITYFLAGTEMPORARY_AmountKnockdown() > amount) - _MOBILITYFLAGTEMPORARY_SetKnockdown(amount, FALSE, ignore_canstun) + if(_REFACTORING_AmountStun() > amount) + _REFACTORING_SetStun(amount, FALSE, ignore_canstun) + if(_REFACTORING_AmountKnockdown() > amount) + _REFACTORING_SetKnockdown(amount, FALSE, ignore_canstun) if(AmountParalyzed() > amount) SetParalyzed(amount, FALSE, ignore_canstun) if(AmountImmobilized() > amount) @@ -331,11 +331,11 @@ update_mobility() //////////////////UNCONSCIOUS -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsUnconscious() //If we're unconscious +/mob/living/proc/_REFACTORING_IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) /mob/living/proc/AmountUnconscious() //How many deciseconds remain in our unconsciousness - var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() if(U) return U.duration - world.time return 0 @@ -344,7 +344,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) else if(amount > 0) @@ -355,7 +355,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() if(amount <= 0) if(U) qdel(U) @@ -369,7 +369,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _MOBILITYFLAGTEMPORARY_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() if(U) U.duration += amount else if(amount > 0) @@ -378,11 +378,11 @@ /////////////////////////////////// SLEEPING //////////////////////////////////// -/mob/living/proc/_MOBILITYFLAGTEMPORARY_IsSleeping() //If we're asleep +/mob/living/proc/_REFACTORING_IsSleeping() //If we're asleep return has_status_effect(STATUS_EFFECT_SLEEPING) /mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep - var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() if(S) return S.duration - world.time return 0 @@ -391,7 +391,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) @@ -402,7 +402,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() if(amount <= 0) if(S) qdel(S) @@ -416,7 +416,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _MOBILITYFLAGTEMPORARY_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() if(S) S.duration += amount else if(amount > 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 3dd6e9dd71..df9681489b 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -34,7 +34,7 @@ var/eye_blurry = 0 //Carbon var/real_name = null var/spacewalk = FALSE - var/_MOBILITYFLAGTEMPORARY_resting = 0 //Carbon + var/_REFACTORING_resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index f0d633ba45..b78f97cc7f 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -33,7 +33,7 @@ if(combatmode) if(world.time >= combatmessagecooldown) if(a_intent != INTENT_HELP) - visible_message("[src] [_MOBILITYFLAGTEMPORARY_resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") + visible_message("[src] [_REFACTORING_resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") else visible_message("[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].") playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! From c0274b1bc608e8c7632adc688dd06e1ce07b8d12 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 13:28:56 -0800 Subject: [PATCH 16/92] compile --- code/modules/mob/living/carbon/carbon.dm | 4 ++-- code/modules/mob/living/silicon/ai/death.dm | 2 +- code/modules/mob/living/silicon/pai/update_icon.dm | 2 +- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/mob/living/simple_animal/bot/medbot.dm | 4 ++-- code/modules/mob/living/simple_animal/slime/death.dm | 2 +- code/modules/mob/living/simple_animal/slime/slime.dm | 4 ++-- code/modules/mob/status_procs.dm | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0bd004a08a..f8cd17ce08 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -574,9 +574,9 @@ if(stam > DAMAGE_PRECISION) var/total_health = (health - stam) if(total_health <= crit_threshold && !stat) - if(!IsKnockdown()) + if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) to_chat(src, "You're too exhausted to keep going...") - DefaultCombatKnockdown(100) + KnockToFloor(TRUE) update_health_hud() /mob/living/carbon/update_sight() diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 2900c89967..6280097026 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -15,7 +15,7 @@ cameraFollow = null anchored = FALSE //unbolt floorbolts - update_canmove() + update_mobility() if(eyeobj) eyeobj.setLoc(get_turf(src)) set_eyeobj_visible(FALSE) diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm index 9e40b71c5d..3ef5a6cae9 100644 --- a/code/modules/mob/living/silicon/pai/update_icon.dm +++ b/code/modules/mob/living/silicon/pai/update_icon.dm @@ -21,7 +21,7 @@ rotate_on_lying = TRUE else icon = initial(icon) - icon_state = "[chassis][resting? "_rest" : (stat == DEAD? "_dead" : "")]" + icon_state = "[chassis][_REFACTORING_resting? "_rest" : (stat == DEAD? "_dead" : "")]" rotate_on_lying = FALSE pixel_x = ((chassis == "dynamic") && chassis_pixel_offsets_x[dynamic_chassis]) || 0 update_transform() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a5fa2a3c25..825bae00ba 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1271,7 +1271,7 @@ /mob/living/silicon/robot/update_mobility() . = ..() if(client && stat != DEAD && dogborg == FALSE) - if(resting) + if(_REFACTORING_resting) cut_overlays() icon_state = "[module.cyborg_base_icon]-rest" else diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index fed770d0b0..41c1e31dd1 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -86,7 +86,7 @@ if(!on) icon_state = "medibot0" return - if(IsStun()) + if(_REFACTORING_IsStun()) icon_state = "medibota" return if(mode == BOT_HEALING) @@ -278,7 +278,7 @@ if(mode == BOT_HEALING) return - if(IsStun()) + if(_REFACTORING_IsStun()) oldpatient = patient patient = null mode = BOT_IDLE diff --git a/code/modules/mob/living/simple_animal/slime/death.dm b/code/modules/mob/living/simple_animal/slime/death.dm index 52c9210263..5cac0c630c 100644 --- a/code/modules/mob/living/simple_animal/slime/death.dm +++ b/code/modules/mob/living/simple_animal/slime/death.dm @@ -24,7 +24,7 @@ stat = DEAD cut_overlays() - update_canmove() + update_mobility() if(SSticker.mode) SSticker.mode.check_win() diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 439ea5b2bf..02434bbe7d 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -457,13 +457,13 @@ SStun = world.time + rand(20,60) spawn(0) - canmove = 0 + DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) if(user) step_away(src,user,15) sleep(3) if(user) step_away(src,user,15) - update_canmove() + update_mobility() /mob/living/simple_animal/slime/pet docile = 1 diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 3ae8094a80..23f6b9615f 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -60,14 +60,14 @@ /mob/proc/blur_eyes(amount) if(amount>0) eye_blurry = max(amount, eye_blurry) - update_eye_blur() + update_eyeblur() /** * Adjust the current blurriness of the mobs vision by amount */ /mob/proc/adjust_blurriness(amount) eye_blurry = max(eye_blurry+amount, 0) - update_eye_blur() + update_eyeblur() ///Set the mobs blurriness of vision to an amount /mob/proc/set_blurriness(amount) From 2c245a18fd010684c6ef4e58b2d5ca474c795f46 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 13:43:53 -0800 Subject: [PATCH 17/92] compile --- code/__DEFINES/components.dm | 1 + code/game/machinery/dance_machine.dm | 4 ++-- .../objects/structures/crates_lockers/closets.dm | 6 +++--- .../crates_lockers/closets/cardboardbox.dm | 2 +- code/game/objects/structures/tables_racks.dm | 13 +++++-------- code/game/objects/structures/windoor_assembly.dm | 4 ++-- code/game/turfs/open.dm | 2 +- .../mob/living/carbon/human/species_types/angel.dm | 6 +++--- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_mobility.dm | 6 +++--- code/modules/spells/spell_types/shadow_walk.dm | 3 +-- 11 files changed, 23 insertions(+), 26 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 4352ada0cf..c489b6ce7d 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -205,6 +205,7 @@ #define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" //from base of mob/living/Immobilize() (amount, update, ignore) #define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" //from base of mob/living/Unconscious() (amount, update, ignore) #define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" //from base of mob/living/Sleeping() (amount, update, ignore) +#define COMSIG_LIVING_STATUS_DAZE "living_daze" //from base of mob/living/Daze() (amount, update, ignore) #define COMPONENT_NO_STUN 1 //For all of them // /mob/living/carbon signals diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 91306585b8..8bcfd8bb09 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -431,6 +431,6 @@ /obj/machinery/jukebox/disco/process() . = ..() if(active) - for(var/mob/M in rangers) - if(prob(5+(allowed(M)*4)) && M.canmove) + for(var/mob/living/M in rangers) + if(prob(5+(allowed(M)*4)) && CHECK_BITFIELD(M.mobility_flags, MOBILITY_MOVE)) dance(M) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index fbf39887f7..729e81750d 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -603,12 +603,12 @@ step_towards(user, T2) T1 = get_turf(user) if(T1 == T2) - user.resting = TRUE //so people can jump into crates without slamming the lid on their head + user.set_resting(TRUE, TRUE) if(!close(user)) to_chat(user, "You can't get [src] to close!") - user.resting = FALSE + user.set_resting(FALSE, TRUE) return - user.resting = FALSE + user.set_resting(FALSE, TRUE) togglelock(user) T1.visible_message("[user] dives into [src]!") diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index aad68b2166..1c9f59942e 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -19,7 +19,7 @@ var/use_mob_movespeed = FALSE //Citadel adds snowflake box handling /obj/structure/closet/cardboard/relaymove(mob/user, direction) - if(opened || move_delay || user.stat || user.IsStun() || user.IsKnockdown() || user.IsUnconscious() || !isturf(loc) || !has_gravity(loc)) + if(opened || move_delay || !CHECK_BITFIELD(user.mobility_flags, MOBILITY_MOVE) || !isturf(loc) || !has_gravity(loc)) return move_delay = TRUE if(step(src, direction)) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 273e846ad0..fe67df36ac 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -109,8 +109,7 @@ /obj/structure/table/proc/tableplace(mob/living/user, mob/living/pushed_mob) pushed_mob.forceMove(src.loc) - pushed_mob.resting = TRUE - pushed_mob.update_canmove() + pushed_mob.set_resting(TRUE, FALSE) pushed_mob.visible_message("[user] places [pushed_mob] onto [src].", \ "[user] places [pushed_mob] onto [src].") log_combat(user, pushed_mob, "placed") @@ -138,11 +137,11 @@ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table) /obj/structure/table/shove_act(mob/living/target, mob/living/user) - if(!target.resting) + if(CHECK_BITFIELD(target.mobility_flags, MOBILITY_STAND)) target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_TABLE) user.visible_message("[user.name] shoves [target.name] onto \the [src]!", "You shove [target.name] onto \the [src]!", null, COMBAT_MESSAGE_RANGE) - target.forceMove(src.loc) + target.forceMove(loc) log_combat(user, target, "shoved", "onto [src] (table)") return TRUE @@ -557,15 +556,13 @@ /obj/structure/table/optable/proc/check_patient() var/mob/M = locate(/mob/living/carbon/human, loc) if(M) - if(M.resting) + if(!CHECK_BITFIELD(M.mobility_flags, MOBILITY_STAND)) patient = M return 1 else patient = null return 0 - - /* * Racks */ @@ -624,7 +621,7 @@ . = ..() if(.) return - if(user.IsKnockdown() || user.resting || user.lying || user.get_num_legs() < 2) + if(CHECK_MULTIPLE_BITFIELDS(user.mobility_flags, MOBILITY_STAND|MOBILITY_MOVE) || user.get_num_legs() < 2) return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_KICK) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 10c6e53701..5d1cc4e69c 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -343,7 +343,8 @@ set name = "Flip Windoor Assembly" set category = "Object" set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) + var/mob/living/L = usr + if(!CHECK_BITFIELD(L, MOBILITY_PULL)) return if(facing == "l") @@ -354,4 +355,3 @@ to_chat(usr, "The windoor will now slide to the left.") update_icon() - return diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index fb3087a1a8..b313d86c88 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -36,7 +36,7 @@ . = ..() if(dropping == user && isliving(user)) var/mob/living/L = user - if(L.resting && do_after(L, max(10, L.getStaminaLoss()*0.5), 0, src)) + if(!CHECK_BITFIELD(L.mobility_flags, MOBILITY_STAND) && do_after(L, max(10, L.getStaminaLoss()*0.5), 0, src)) if(Adjacent(L, src)) step(L, get_dir(L, src)) playsound(L, "rustle", 25, 1) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 7669a8c740..ce0ccd73e8 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -81,12 +81,12 @@ if(H.movement_type & FLYING) to_chat(H, "You settle gently back onto the ground...") A.ToggleFlight(H,0) - H.update_canmove() + H.update_mobility() else to_chat(H, "You beat your wings and begin to hover gently above the ground...") - H.resting = 0 + H.set_resting(FALSE, TRUE) A.ToggleFlight(H,1) - H.update_canmove() + H.update_mobility() /datum/species/angel/proc/flyslip(mob/living/carbon/human/H) var/obj/buckled_obj diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 980af46f41..25c267ade3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -691,7 +691,7 @@ /mob/living/resist_grab(moving_resist) . = 1 if(pulledby.grab_state) - if(!resting && prob(30/pulledby.grab_state)) + if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && prob(30/pulledby.grab_state)) visible_message("[src] has broken free of [pulledby]'s grip!") log_combat(pulledby, src, "broke grab") pulledby.stop_pulling() diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 533065a96f..fdb394bdbb 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -98,13 +98,13 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !IsImmobilized() && !stun && conscious && !paralyzed && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) && !pinned + var/canmove = !IsImmobilized() && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) && !pinned if(canmove) mobility_flags |= MOBILITY_MOVE else mobility_flags &= ~MOBILITY_MOVE - var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyzed && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) + var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) var/canstand = canstand_involuntary && !resting var/should_be_lying = !canstand @@ -128,7 +128,7 @@ else mobility_flags |= MOBILITY_UI|MOBILITY_PULL - var/canitem = !paralyzed && !stun && conscious && !chokehold && !restrained && has_arms + var/canitem = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms if(canitem) mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) else diff --git a/code/modules/spells/spell_types/shadow_walk.dm b/code/modules/spells/spell_types/shadow_walk.dm index 8dbb6d6532..a3b4465edc 100644 --- a/code/modules/spells/spell_types/shadow_walk.dm +++ b/code/modules/spells/spell_types/shadow_walk.dm @@ -25,8 +25,7 @@ if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) playsound(get_turf(user), 'sound/magic/ethereal_enter.ogg', 50, 1, -1) visible_message("[user] melts into the shadows!") - user.SetStun(0, FALSE) - user.SetKnockdown(0, FALSE) + user.SetAllImmobility(0) user.setStaminaLoss(0, 0) var/obj/effect/dummy/phased_mob/shadow/S2 = new(get_turf(user.loc)) user.forceMove(S2) From b6e14c6b867269552247210d1b2e665a5427d06b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 10 Jan 2020 14:30:20 -0800 Subject: [PATCH 18/92] compile --- code/game/machinery/pipe/pipe_dispenser.dm | 6 ++-- code/game/objects/structures/kitchen_spike.dm | 2 +- code/game/objects/structures/tables_racks.dm | 4 +-- .../bloodsucker/powers/bs_haste.dm | 5 ++- .../mob/living/carbon/alien/alien_defense.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_mobility.dm | 35 +++++++++++-------- code/modules/mob/living/silicon/pai/pai.dm | 3 +- .../mob/living/simple_animal/friendly/cat.dm | 2 +- .../mob/living/simple_animal/friendly/crab.dm | 2 +- code/modules/spells/spell.dm | 4 +-- .../code/modules/mob/living/carbon/carbon.dm | 2 +- 12 files changed, 36 insertions(+), 33 deletions(-) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index effdc174b6..25a41b9f94 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -93,14 +93,14 @@ //Allow you to drag-drop disposal pipes and transit tubes into it -/obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/pipe, mob/usr) - if(!usr.canmove || usr.stat || usr.restrained()) +/obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/pipe, mob/living/user) + if(!istype(user) || !CHECK_BITFIELD(user.mobility_flags, MOBILITY_USE)) return if (!istype(pipe, /obj/structure/disposalconstruct) && !istype(pipe, /obj/structure/c_transit_tube) && !istype(pipe, /obj/structure/c_transit_tube_pod)) return - if (get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 ) + if (get_dist(user, src) > 1 || get_dist(src,pipe) > 1 ) return if (pipe.anchored) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index b9a75f88af..a775a0039f 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -136,7 +136,7 @@ src.visible_message(text("[M] falls free of [src]!")) unbuckle_mob(M,force=1) M.emote("scream") - M.AdjustKnockdown(20) + M.DefaultCombatKnockdown(20) /obj/structure/kitchenspike/Destroy() if(has_buckled_mobs()) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index fe67df36ac..3d4e731899 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -547,8 +547,8 @@ break /obj/structure/table/optable/tablepush(mob/living/user, mob/living/pushed_mob) - pushed_mob.forceMove(src.loc) - pushed_mob.resting = 1 + pushed_mob.forceMove(loc) + pushed_mob.set_resting(TRUE, TRUE) pushed_mob.update_canmove() visible_message("[user] has laid [pushed_mob] on [src].") check_patient() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index 154a41dc44..7fae79d64b 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -53,7 +53,7 @@ playsound(get_turf(owner), 'sound/weapons/punchmiss.ogg', 25, 1, -1) var/safety = 20 while(get_turf(owner) != T && safety > 0 && !(isliving(target) && target.Adjacent(owner))) - user.canmove = FALSE //Dont move while doing the thing, or itll break + user.mobility_flags = NONE safety -- // Did I get knocked down? if(owner && owner.incapacitated(ignore_restraints=TRUE, ignore_grab=TRUE))// owner.incapacitated()) @@ -77,8 +77,7 @@ newtarget.drop_all_held_items() foundtargets += newtarget sleep(1) - if(user) - user.update_canmove() //Let the poor guy move again + user?.update_mobility() //Let the poor guy move again /datum/action/bloodsucker/targeted/haste/DeactivatePower(mob/living/user = owner, mob/living/target) ..() // activate = FALSE diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 14f1d0e76d..2d146e396f 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -22,7 +22,7 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) if (INTENT_HELP) if(!recoveringstam) - resting = 0 + SetResting(FALSE, TRUE) AdjustAllImmobility(-60) AdjustUnconscious(-60) AdjustSleeping(-100) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 25c267ade3..908fc8bc77 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1201,7 +1201,7 @@ stuttering = 0 updatehealth() update_stamina() - update_canmove() + update_mobility() for(var/chem in healing_chems) reagents.add_reagent(chem, healing_chems[chem]) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index fdb394bdbb..5c9a8ad092 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -26,7 +26,7 @@ if(client?.prefs?.autostand) intentionalresting = !intentionalresting to_chat(src, "You are now attempting to [intentionalresting ? "[!_REFACTORING_resting ? "lay down and ": ""]stay down" : "[_REFACTORING_resting ? "get up and ": ""]stay up"].") - if(intentionalresting && !resting) + if(intentionalresting && !_REFACTORING_resting) set_resting(TRUE, FALSE) else resist_a_rest() @@ -97,15 +97,15 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() - var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !IsImmobilized() && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && !IS_IN_STASIS(src) && (has_arms || ignore_legs || has_legs) && !pinned + var/pinned = _REFACTORING_resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground + var/canmove = !IsImmobilized() && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned if(canmove) mobility_flags |= MOBILITY_MOVE else mobility_flags &= ~MOBILITY_MOVE var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) - var/canstand = canstand_involuntary && !resting + var/canstand = canstand_involuntary && !_REFACTORING_resting var/should_be_lying = !canstand if(buckled) @@ -128,11 +128,23 @@ else mobility_flags |= MOBILITY_UI|MOBILITY_PULL - var/canitem = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms - if(canitem) - mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) + var/canitem_general = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms + if(canitem_general) + mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE | MOBILITY_HOLD) else - mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE) + mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE | MOBILITY_HOLD) + + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOMOVE)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOPICKUP)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_PICKUP) + if(HAS_TRAIT(src, TRAIT_MOBILITY_NOUSE)) + DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) + + if(daze) + DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) + + //Handle update-effects. if(!(mobility_flags & MOBILITY_HOLD)) drop_all_held_items() if(!(mobility_flags & MOBILITY_PULL)) @@ -162,10 +174,3 @@ addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto return mobility_flags - - if(HAS_TRAIT(src, TRAIT_MOBILITY_NOMOVE)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_MOVE) - if(HAS_TRAIT(src, TRAIT_MOBILITY_NOPICKUP)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_PICKUP) - if(HAS_TRAIT(src, TRAIT_MOBILITY_NOUSE)) - DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7055838039..d8cb0969ce 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -80,7 +80,7 @@ var/radio_short_cooldown = 5 MINUTES var/radio_short_timerid - canmove = FALSE + mobility_flags = NONE var/silent = FALSE var/brightness_power = 5 @@ -100,7 +100,6 @@ START_PROCESSING(SSfastprocess, src) GLOB.pai_list += src make_laws() - canmove = 0 if(!istype(P)) //when manually spawning a pai, we create a card to put it into. var/newcardloc = P P = new /obj/item/paicard(newcardloc) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 0ae2dab749..c6f5443965 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -180,7 +180,7 @@ collar_type = "[initial(collar_type)]_sit" set_resting(TRUE) else if (prob(1)) - if (resting) + if (_REFACTORING_resting) emote("me", EMOTE_VISIBLE, pick("gets up and meows.", "walks around.", "stops resting.")) icon_state = "[icon_living]" collar_type = "[initial(collar_type)]" diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 9c3e5b5def..283c9f6ae9 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -26,7 +26,7 @@ ..() //CRAB movement if(!ckey && !stat) - if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. + if(isturf(loc) && !_REFACTORING_resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) var/east_vs_west = pick(4,8) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 22dee60eb4..4e9ee9ae39 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -377,9 +377,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("oxyloss") target.adjustOxyLoss(amount) if("stun") - target.AdjustStun(amount) + target._REFACTOR_AdjustStun(amount) if("knockdown") - target.AdjustKnockdown(amount) + target._REFACTOR_AdjustKnockdown(amount) if("unconscious") target.AdjustUnconscious(amount) else diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index b78f97cc7f..3db57832d0 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -13,7 +13,7 @@ if(.) var/mob/living/mobdude = mover if(istype(mobdude)) - if(!resting && mobdude.resting) + if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && !CHECK_BITFIELD(mobdude.mobility_flags, MOBILITY_STAND)) if(!(mobdude.pass_flags & PASSMOB)) return FALSE return . From 9fd9f608557df21aac5f1235fb97266ee2a2735c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 11 Jan 2020 10:49:44 -0800 Subject: [PATCH 19/92] compile --- code/__DEFINES/flags.dm | 4 ++++ code/_onclick/hud/alert.dm | 4 ++-- code/game/objects/effects/step_triggers.dm | 6 ++++-- code/modules/antagonists/bloodsucker/powers/bs_haste.dm | 6 +++--- code/modules/antagonists/bloodsucker/powers/bs_lunge.dm | 4 ++-- code/modules/atmospherics/machinery/atmosmachinery.dm | 4 ---- code/modules/food_and_drinks/kitchen_machinery/processor.dm | 5 +++-- code/modules/mob/living/carbon/alien/larva/life.dm | 2 +- code/modules/mob/living/living.dm | 6 +++--- code/modules/mob/living/silicon/pai/death.dm | 2 +- code/modules/mob/living/silicon/robot/robot_mobility.dm | 2 +- code/modules/spells/spell.dm | 4 ++-- code/modules/spells/spell_types/ethereal_jaunt.dm | 6 ++++-- 13 files changed, 30 insertions(+), 25 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 6b65a7ce7a..3db9c5a70b 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -93,6 +93,10 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define RAD_NO_CONTAMINATE (1<<1) //Mob mobility var flags +/// any flag +#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags) +#define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags) + /// can move #define MOBILITY_MOVE (1<<0) /// can, and is, standing up. diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index c42956bbaa..bdc6ea2980 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -273,7 +273,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." if(!istype(L) || !L.can_resist()) return L.changeNext_move(CLICK_CD_RESIST) - if(L.canmove) + if(CHECK_MOBILITY(L, MOBILITY_MOVE)) return L.resist_fire() //I just want to start a flame in your hearrrrrrtttttt. @@ -601,7 +601,7 @@ so as to remain in compliance with the most up-to-date laws." if(!istype(L) || !L.can_resist()) return L.changeNext_move(CLICK_CD_RESIST) - if((L.canmove) && (L.last_special <= world.time)) + if(CHECK_MOBILITY(L, MOBILITY_MOVE) && (L.last_special <= world.time)) return L.resist_restraints() /obj/screen/alert/restrained/buckled/Click() diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 3e0848130d..e81c00afb5 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -64,7 +64,8 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 0 + ADD_TRAIT(M, TRAIT_MOBILITY_NOMOVE, src) + M.update_mobility() affecting.Add(AM) while(AM && !stopthrow) @@ -101,7 +102,8 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 1 + REMOVE_TRAIT(M, TRAIT_MOBILITY_NOMOVE, src) + M.update_mobility() /* Stops things thrown by a thrower, doesn't do anything */ diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index 7fae79d64b..7c6ae4f426 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -58,7 +58,7 @@ // Did I get knocked down? if(owner && owner.incapacitated(ignore_restraints=TRUE, ignore_grab=TRUE))// owner.incapacitated()) // We're gonna cancel. But am I on the ground? Spin me! - if(user.resting) + if(!CHECK_MOBILTIY(user, MOBILITY_STAND)) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) @@ -71,7 +71,7 @@ if (rand(0, 5) < level_current) playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) newtarget.DefaultCombatKnockdown(10 + level_current * 5) - if(newtarget.IsStun()) + if(_REFACTORING_newtarget.IsStun()) newtarget.spin(10,1) if (rand(0,4)) newtarget.drop_all_held_items() @@ -81,4 +81,4 @@ /datum/action/bloodsucker/targeted/haste/DeactivatePower(mob/living/user = owner, mob/living/target) ..() // activate = FALSE - user.update_canmove() + user.update_mobility() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index f9c9d3b590..3d1e054826 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -74,10 +74,10 @@ target.adjustStaminaLoss(40 + 10 * level_current) // Cancel Walk (we were close enough to contact them) walk(owner, 0) - target.Stun(10,1) //Without this the victim can just walk away + target._REFACTORING_Stun(10,1) //Without this the victim can just walk away target.grabbedby(owner) // Taken from mutations.dm under changelings target.grippedby(owner, instant = TRUE) //instant aggro grab /datum/action/bloodsucker/targeted/lunge/DeactivatePower(mob/living/user = owner, mob/living/target) ..() // activate = FALSE - user.update_canmove() + user.update_mobility() diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index ee4d1bda11..c26566e194 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -333,10 +333,6 @@ Pipelines + Other Objects -> Pipe network user.forceMove(loc) user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") - user.canmove = FALSE - addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1) - - /obj/machinery/atmospherics/AltClick(mob/living/L) if(is_type_in_typecache(src, GLOB.ventcrawl_machinery)) return L.handle_ventcrawl(src) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 35ce25bbaf..fbf039cd8c 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -127,8 +127,9 @@ set name = "Eject Contents" set src in oview(1) - if(usr.stat || !usr.canmove || usr.restrained()) - return + var/mob/living/L = usr + if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) + return ..() empty() add_fingerprint(usr) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index c0216543bb..d63f156d9e 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -27,7 +27,7 @@ if(stat == UNCONSCIOUS) stat = CONSCIOUS if(!recoveringstam) - resting = 0 + set_resting(FALSE, TRUE) adjust_blindness(-1) update_mobility() update_damage_hud() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 908fc8bc77..48ae6eefc2 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -118,7 +118,7 @@ return 1 //CIT CHANGES START HERE - makes it so resting stops you from moving through standing folks without a short delay - if(resting && !L.resting) + if(!CHECK_MOBILITY(src, MOBILITY_STAND) && CHECK_MOBILITY(L, MOBILITY_STAND)) var/origtargetloc = L.loc if(!pulledby) if(attemptingcrawl) @@ -416,7 +416,7 @@ set name = "Sleep" set category = "IC" - if(IsSleeping()) + if(_REFACTORING_IsSleeping()) to_chat(src, "You are already sleeping.") return else @@ -675,7 +675,7 @@ if(on_fire) resist_fire() //stop, drop, and roll return - if(_MOBILTIYFLAGTEMPORARY_resting) //cit change - allows resisting out of resting + if(_REFACTORING_resting) //cit change - allows resisting out of resting resist_a_rest() // ditto return if(resist_embedded()) //Citadel Change for embedded removal memes diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm index f558ff3907..0f5e043605 100644 --- a/code/modules/mob/living/silicon/pai/death.dm +++ b/code/modules/mob/living/silicon/pai/death.dm @@ -2,7 +2,7 @@ if(stat == DEAD) return stat = DEAD - canmove = 0 + update_mobility() update_sight() clear_fullscreens() diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index e2ec8aeb55..6e0de34d22 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/update_mobility() var/newflags = NONE if(!stat) - if(!resting) + if(!_REFACTORING_resting) newflags |= MOBILITY_STAND if(!locked_down) newflags |= MOBILITY_MOVE diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 4e9ee9ae39..e5ccbbc908 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -377,9 +377,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("oxyloss") target.adjustOxyLoss(amount) if("stun") - target._REFACTOR_AdjustStun(amount) + target._REFACTORING_AdjustStun(amount) if("knockdown") - target._REFACTOR_AdjustKnockdown(amount) + target._REFACTORING_AdjustKnockdown(amount) if("unconscious") target.AdjustUnconscious(amount) else diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index c003ffb2f2..11ecfc1e15 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -40,7 +40,8 @@ return mobloc = get_turf(target.loc) jaunt_steam(mobloc) - target.canmove = 0 + ADD_TRAIT(target, TRAIT_MOBILITY_NOMOVE) + target.update_mobility() holder.reappearing = 1 playsound(get_turf(target), 'sound/magic/ethereal_exit.ogg', 50, 1, -1) sleep(25 - jaunt_in_time) @@ -55,7 +56,8 @@ if(T) if(target.Move(T)) break - target.canmove = 1 + REMOVE_TRAIT(target, TRAIT_MOBILITY_NOMOVE) + target.update_mobility() /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_steam(mobloc) var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() From 6e07a6d0053e3a04ea55c3864f2ca3730bff043f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 11 Jan 2020 10:49:57 -0800 Subject: [PATCH 20/92] compile --- code/modules/spells/spell_types/ethereal_jaunt.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index 11ecfc1e15..64da9c5045 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -40,7 +40,7 @@ return mobloc = get_turf(target.loc) jaunt_steam(mobloc) - ADD_TRAIT(target, TRAIT_MOBILITY_NOMOVE) + ADD_TRAIT(target, TRAIT_MOBILITY_NOMOVE, src) target.update_mobility() holder.reappearing = 1 playsound(get_turf(target), 'sound/magic/ethereal_exit.ogg', 50, 1, -1) @@ -56,7 +56,7 @@ if(T) if(target.Move(T)) break - REMOVE_TRAIT(target, TRAIT_MOBILITY_NOMOVE) + REMOVE_TRAIT(target, TRAIT_MOBILITY_NOMOVE, src) target.update_mobility() /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_steam(mobloc) From 0fc6d0e8910eea3610365d471debe9131022281e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 11 Jan 2020 11:28:03 -0800 Subject: [PATCH 21/92] compile --- code/datums/martial/cqc.dm | 4 ++-- code/datums/martial/krav_maga.dm | 4 ++-- code/datums/martial/rising_bass.dm | 10 +++++----- code/datums/martial/sleeping_carp.dm | 10 +++++----- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 4fb635176f..a4b55607bb 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -42,7 +42,7 @@ /datum/martial_art/cqc/proc/Slam(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE - if(!D.stat || !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) D.visible_message("[A] slams [D] into the ground!", \ "[A] slams you into the ground!") playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1) @@ -62,7 +62,7 @@ D.throw_at(throw_target, 1, 14, A) D.apply_damage(10, BRUTE) log_combat(A, D, "kicked (CQC)") - if(D.IsKnockdown() && !D.stat) + if(!CHECK_MOBILITY(D, MOBILITY_STAND) && !D.stat) log_combat(A, D, "knocked out (Head kick)(CQC)") D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out!", \ "[A] kicks your head, knocking you out!") diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 617980ea5c..1a244f911e 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -96,7 +96,7 @@ return 0 /datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(D.lying || D.IsKnockdown()) + if(!CHECK_MOBILITY(D, MOBILITY_STAND)) return 0 D.visible_message("[A] leg sweeps [D]!", \ "[A] leg sweeps you!") @@ -138,7 +138,7 @@ log_combat(A, D, "punched") var/picked_hit_type = pick("punches", "kicks") var/bonus_damage = 10 - if(D.IsKnockdown() || D.resting || D.lying) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) bonus_damage += 5 picked_hit_type = "stomps on" D.apply_damage(bonus_damage, BRUTE) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 9da7c80ed3..5e5e324abd 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -36,7 +36,7 @@ /datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || D.lying == 0) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) var/turf/H = get_step(D, A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)) A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the side, sliding them over!", \ @@ -54,7 +54,7 @@ return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || !D.lying) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) var/turf/H = get_step(A, get_dir(D,A)) var/L = H for(var/obj/i in H.contents) @@ -75,7 +75,7 @@ return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || !D.lying) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] smashes [D] in the chest, throwing them away!", \ "[A] smashes you in the chest, repelling you away!") @@ -89,7 +89,7 @@ return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || !D.lying) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] smashes their foot down on [D]'s foot!", \ "[A] smashes your foot!") @@ -101,7 +101,7 @@ return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.IsKnockdown() || !D.lying) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) if (D.get_active_held_item()) var/obj/item/G = D.get_active_held_item() if (G && !(G.item_flags & (ABSTRACT|DROPDEL)) && D.temporarilyRemoveItemFromInventory(G)) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 1e084bb936..aab99fcc4d 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -37,7 +37,7 @@ return FALSE /datum/martial_art/the_sleeping_carp/proc/wristWrench(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsStun() && !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILITY_USE)) log_combat(A, D, "wrist wrenched (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ @@ -51,7 +51,7 @@ return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/backKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) if(A.dir == D.dir) log_combat(A, D, "back-kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) @@ -68,7 +68,7 @@ return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) log_combat(A, D, "stomach kneed (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] knees [D] in the stomach!", \ @@ -81,7 +81,7 @@ return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(!D.stat && !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILTIY_STAND)) log_combat(A, D, "head kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the head!", \ @@ -94,7 +94,7 @@ return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/elbowDrop(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(D.IsKnockdown() || D.resting || D.stat) + if(!CHECK_MOBILITY(D, MOBILITY_STAND)) log_combat(A, D, "elbow dropped (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] elbow drops [D]!", \ From b341818f04e4d6d7a3812d8a9e905dfeadca15a6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 12 Jan 2020 11:00:12 -0800 Subject: [PATCH 22/92] mobility flags --- code/__DEFINES/flags.dm | 2 +- code/_onclick/hud/screen_objects.dm | 2 +- code/datums/components/footstep.dm | 2 +- code/datums/diseases/advance/symptoms/heal.dm | 8 ++++---- code/datums/martial/cqc.dm | 6 +++--- code/datums/status_effects/gas.dm | 8 ++++---- code/game/objects/effects/step_triggers.dm | 8 ++++---- code/game/objects/items/devices/scanners.dm | 3 ++- code/game/objects/structures/crates_lockers/closets.dm | 5 +++-- code/game/objects/structures/tables_racks.dm | 3 +-- code/game/objects/structures/transit_tubes/station.dm | 6 +++--- code/modules/antagonists/bloodsucker/powers/bs_haste.dm | 4 ++-- code/modules/antagonists/bloodsucker/powers/bs_lunge.dm | 2 +- code/modules/library/lib_items.dm | 6 +++--- code/modules/mob/dead/new_player/new_player.dm | 1 - code/modules/mob/living/living.dm | 3 +-- code/modules/mob/living/living_mobility.dm | 4 ++-- code/modules/ruins/spaceruin_code/hilbertshotel.dm | 2 +- code/modules/surgery/bodyparts/bodyparts.dm | 2 +- modular_citadel/code/modules/clothing/under/trek_under.dm | 5 +++-- 20 files changed, 41 insertions(+), 41 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 3db9c5a70b..2a9b1abb17 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -103,7 +103,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_STAND (1<<1) /// can pickup items #define MOBILITY_PICKUP (1<<2) -/// can use items +/// can use items and interact with world objects like opening closets/etc #define MOBILITY_USE (1<<3) /// can use interfaces like consoles #define MOBILITY_UI (1<<4) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index dec743d35c..d9413b177a 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -406,7 +406,7 @@ var/mob/living/user = hud?.mymob if(!istype(user)) return - if(!user.resting) + if(!user._REFACTORING_resting) icon_state = "act_rest" else icon_state = "act_rest0" diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index c4e65ea120..fbf559fe35 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -18,7 +18,7 @@ var/mob/living/LM = parent var/v = volume var/e = e_range - if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) + if(!T.footstep || LM.buckled || !CHECK_MOBILITY(LM, MOBILITY_STAND) || LM.buckled || LM.throwing || (LM.movement_type & (VENTCRAWLING | FLYING))) if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) return diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 8b205db756..5bd48b132b 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -253,11 +253,11 @@ var/mob/living/M = A.affected_mob if(HAS_TRAIT(M, TRAIT_DEATHCOMA)) return power - else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) + else if(M._REFACTORING_IsUnconscious() || M.stat == UNCONSCIOUS) return power * 0.9 else if(M.stat == SOFT_CRIT) return power * 0.5 - else if(M.IsSleeping()) + else if(M._REFACTORING_IsSleeping()) return power * 0.25 else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) to_chat(M, "You feel yourself slip into a regenerative coma...") @@ -269,7 +269,7 @@ M.emote("deathgasp") M.fakedeath("regenerative_coma") M.update_stat() - M.update_canmove() + M.update_mobility() addtimer(CALLBACK(src, .proc/uncoma, M), 300) /datum/symptom/heal/coma/proc/uncoma(mob/living/M) @@ -278,7 +278,7 @@ active_coma = FALSE M.cure_fakedeath("regenerative_coma") M.update_stat() - M.update_canmove() + M.update_mobility() /datum/symptom/heal/coma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = 4 * actual_power diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index a4b55607bb..793c43bd80 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -136,7 +136,7 @@ A.do_attack_animation(D) var/picked_hit_type = pick("CQC'd", "Big Bossed") var/bonus_damage = 13 - if(D.IsKnockdown() || D.resting || D.lying) + if(!CHECK_MOBILITY(D, MOBILITY_STAND)) bonus_damage += 5 picked_hit_type = "stomps on" D.apply_damage(bonus_damage, BRUTE) @@ -147,7 +147,7 @@ D.visible_message("[A] [picked_hit_type] [D]!", \ "[A] [picked_hit_type] you!") log_combat(A, D, "[picked_hit_type] (CQC)") - if(A.resting && !D.stat && !D.IsKnockdown()) + if(!CHECK_MOBILITY(A, MOBILITY_STAND) && !D.stat && CHECK_MOBILITY(D, MOBILITY_STAND)) D.visible_message("[A] leg sweeps [D]!", \ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) @@ -164,7 +164,7 @@ if(check_streak(A,D)) return TRUE if(prob(65)) - if(!D.stat || !D.IsKnockdown() || !restraining) + if(CHECK_MOBILITY(D, MOBILITY_MOVE) || !restraining) I = D.get_active_held_item() D.visible_message("[A] strikes [D]'s jaw with their hand!", \ "[A] strikes your jaw, disorienting you!") diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 0041799314..608dbb2d7a 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -17,11 +17,11 @@ to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") owner.add_overlay(cube) - owner.update_canmove() + owner.update_mobility() return ..() /datum/status_effect/freon/tick() - owner.update_canmove() + owner.update_mobility() if(can_melt && owner.bodytemperature >= BODYTEMP_NORMAL) qdel(src) @@ -31,14 +31,14 @@ if(!QDELETED(src)) to_chat(owner, "You break out of the ice cube!") owner.remove_status_effect(/datum/status_effect/freon) - owner.update_canmove() + owner.update_mobility() /datum/status_effect/freon/on_remove() if(!owner.stat) to_chat(owner, "The cube melts!") owner.cut_overlay(cube) owner.adjust_bodytemperature(100) - owner.update_canmove() + owner.update_mobility() UnregisterSignal(owner, COMSIG_LIVING_RESIST) /datum/status_effect/freon/watcher diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index e81c00afb5..b4c3345146 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -61,8 +61,8 @@ if(AM in T.affecting) return - if(ismob(AM)) - var/mob/M = AM + if(isliving(AM)) + var/mob/living/M = AM if(immobilize) ADD_TRAIT(M, TRAIT_MOBILITY_NOMOVE, src) M.update_mobility() @@ -99,8 +99,8 @@ affecting.Remove(AM) - if(ismob(AM)) - var/mob/M = AM + if(living(AM)) + var/mob/living/M = AM if(immobilize) REMOVE_TRAIT(M, TRAIT_MOBILITY_NOMOVE, src) M.update_mobility() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 00381b9838..3b7db190b9 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -486,7 +486,8 @@ SLIME SCANNER set name = "Switch Verbosity" set category = "Object" - if(usr.stat || !usr.canmove || usr.restrained()) + var/mob/living/L = usr + if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) return mode = !mode diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 729e81750d..5334b49ddb 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -474,8 +474,9 @@ set category = "Object" set name = "Toggle Open" - if(!usr.canmove || usr.stat || usr.restrained()) - return + var/mob/living/L = usr + if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) + return FALSE if(iscarbon(usr) || issilicon(usr) || isdrone(usr)) return attack_hand(usr) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 3d4e731899..e19229a41f 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -549,12 +549,11 @@ /obj/structure/table/optable/tablepush(mob/living/user, mob/living/pushed_mob) pushed_mob.forceMove(loc) pushed_mob.set_resting(TRUE, TRUE) - pushed_mob.update_canmove() visible_message("[user] has laid [pushed_mob] on [src].") check_patient() /obj/structure/table/optable/proc/check_patient() - var/mob/M = locate(/mob/living/carbon/human, loc) + var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, loc) if(M) if(!CHECK_BITFIELD(M.mobility_flags, MOBILITY_STAND)) patient = M diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index f821041894..cdae11c066 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -43,10 +43,10 @@ //pod insertion -/obj/structure/transit_tube/station/MouseDrop_T(obj/structure/c_transit_tube_pod/R, mob/user) - if(!user.canmove || user.stat || user.restrained()) +/obj/structure/transit_tube/station/MouseDrop_T(obj/structure/c_transit_tube_pod/R, mob/living/user) + if(!istype(user) || !CHECK_MOBILLITY(user, MOBILITY_USE)) return - if (!istype(R) || get_dist(user, src) > 1 || get_dist(src,R) > 1) + if(!istype(R) || get_dist(user, src) > 1 || get_dist(src,R) > 1) return for(var/obj/structure/transit_tube_pod/pod in loc) return //no fun allowed diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index 7c6ae4f426..0b666baaa3 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -58,7 +58,7 @@ // Did I get knocked down? if(owner && owner.incapacitated(ignore_restraints=TRUE, ignore_grab=TRUE))// owner.incapacitated()) // We're gonna cancel. But am I on the ground? Spin me! - if(!CHECK_MOBILTIY(user, MOBILITY_STAND)) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) @@ -71,7 +71,7 @@ if (rand(0, 5) < level_current) playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) newtarget.DefaultCombatKnockdown(10 + level_current * 5) - if(_REFACTORING_newtarget.IsStun()) + if(newtarget._REFACTORING_IsStun()) newtarget.spin(10,1) if (rand(0,4)) newtarget.drop_all_held_items() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index 3d1e054826..d6f3d87461 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -74,7 +74,7 @@ target.adjustStaminaLoss(40 + 10 * level_current) // Cancel Walk (we were close enough to contact them) walk(owner, 0) - target._REFACTORING_Stun(10,1) //Without this the victim can just walk away + target.Stun(10,1) //Without this the victim can just walk away target.grabbedby(owner) // Taken from mutations.dm under changelings target.grippedby(owner, instant = TRUE) //instant aggro grab diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 06a988d109..e079943bf5 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -113,14 +113,14 @@ return ..() -/obj/structure/bookcase/attack_hand(mob/user) +/obj/structure/bookcase/attack_hand(mob/living/user) . = ..() - if(.) + if(. || !istype(user)) return if(contents.len) var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents if(choice) - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + if(!CHECK_MOBILITY(user, MOBILITY_USE) || !in_range(loc, user)) return if(ishuman(user)) if(!user.get_active_held_item()) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index d789fc6f5a..5b2215b190 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -10,7 +10,6 @@ density = FALSE stat = DEAD - canmove = FALSE anchored = TRUE // don't get pushed around diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 48ae6eefc2..d27e4ad644 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1195,8 +1195,7 @@ if(scale_stamina_loss_recovery) adjustStaminaLoss(min(-((getStaminaLoss() - stamina_loss_recovery_bypass) * scale_stamina_loss_recovery), 0)) if(put_on_feet) - resting = FALSE - lying = FALSE + set_resting(FALSE, TRUE, FALSE) if(reset_misc) stuttering = 0 updatehealth() diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 5c9a8ad092..97cb0c67b1 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -2,9 +2,9 @@ //Force-set resting variable, without needing to resist/etc. /mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE) - resting = new_resting + _REFACTORING_resting = new_resting if(!silent) - to_chat(src, "You are now [resting? "resting" : "getting up"].") + to_chat(src, "You are now [_REFACTORING_resting? "resting" : "getting up"].") update_resting(updating) /mob/living/proc/update_resting(update_mobility = TRUE) diff --git a/code/modules/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/ruins/spaceruin_code/hilbertshotel.dm index f64b5e4d01..48c1b8b7df 100644 --- a/code/modules/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/ruins/spaceruin_code/hilbertshotel.dm @@ -239,7 +239,7 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337) to_chat(user, "The door seems to be malfunctioning and refuses to operate!") return if(alert(user, "Hilbert's Hotel would like to remind you that while we will do everything we can to protect the belongings you leave behind, we make no guarantees of their safety while you're gone, especially that of the health of any living creatures. With that in mind, are you ready to leave?", "Exit", "Leave", "Stay") == "Leave") - if(!user.canmove || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt. + if(!CHECK_MOBILITY(user, MOBILITY_MOVE) || (get_dist(get_turf(src), get_turf(user)) > 1)) //no teleporting around if they're dead or moved away during the prompt. return user.forceMove(get_turf(parentSphere)) do_sparks(3, FALSE, get_turf(user)) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index a1b74942e0..169a64e380 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -252,7 +252,7 @@ disabled = new_disabled owner.update_health_hud() //update the healthdoll owner.update_body() - owner.update_canmove() + owner.update_mobility() return TRUE //Updates an organ's brute/burn states for use by update_damage_overlays() diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm index 5cd0620a9d..ca27c9a0bf 100644 --- a/modular_citadel/code/modules/clothing/under/trek_under.dm +++ b/modular_citadel/code/modules/clothing/under/trek_under.dm @@ -171,8 +171,9 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.restrained()) - return 0 + var/mob/living/L = usr + if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) + return FALSE switch(unbuttoned) if(0) From 42f0aba130fae8957562d873f852725bf3e7fbb4 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 12 Jan 2020 20:11:26 -0800 Subject: [PATCH 23/92] s --- .../chemistry/reagents/drug_reagents.dm | 29 +++++++++---------- .../chemistry/reagents/medicine_reagents.dm | 15 ++++------ 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index e956fcac36..a60fb89d5e 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -22,7 +22,7 @@ /datum/reagent/drug/space_drugs/on_mob_life(mob/living/carbon/M) M.set_drugginess(15) if(isturf(M.loc) && !isspaceturf(M.loc)) - if(M.canmove) + if(CHECK_MOBILITY(M, MOBILITY_MOVE)) if(prob(10)) step(M, pick(GLOB.cardinals)) if(prob(7)) @@ -55,8 +55,7 @@ var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.") to_chat(M, "[smoke_message]") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/smoked, name) - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) + M.AdjustAllImmobility(-20, 0) M.AdjustUnconscious(-20, 0) M.adjustStaminaLoss(-0.5*REM, 0) ..() @@ -76,8 +75,7 @@ if(prob(5)) var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.") to_chat(M, "[high_message]") - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) + M.AdjustAllImmobility(-20, 0) M.AdjustUnconscious(-20, 0) ..() . = 1 @@ -188,8 +186,7 @@ var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.") if(prob(5)) to_chat(M, "[high_message]") - M.AdjustStun(-40, 0) - M.AdjustKnockdown(-40, 0) + M.AdjustAllImmobility(-40, 0) M.AdjustUnconscious(-40, 0) M.adjustStaminaLoss(-7.5 * REM, 0) if(jitter) @@ -203,7 +200,7 @@ . = 1 /datum/reagent/drug/methamphetamine/overdose_process(mob/living/M) - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i in 1 to 4) step(M, pick(GLOB.cardinals)) if(prob(20)) @@ -230,7 +227,7 @@ ..() /datum/reagent/drug/methamphetamine/addiction_act_stage3(mob/living/M) - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 4, i++) step(M, pick(GLOB.cardinals)) M.Jitter(15) @@ -240,7 +237,7 @@ ..() /datum/reagent/drug/methamphetamine/addiction_act_stage4(mob/living/carbon/human/M) - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(20) @@ -294,7 +291,7 @@ M.adjustStaminaLoss(-5, 0) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) M.hallucination += 5 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) step(M, pick(GLOB.cardinals)) step(M, pick(GLOB.cardinals)) ..() @@ -302,7 +299,7 @@ /datum/reagent/drug/bath_salts/overdose_process(mob/living/M) M.hallucination += 5 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i in 1 to 8) step(M, pick(GLOB.cardinals)) if(prob(20)) @@ -313,7 +310,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage1(mob/living/M) M.hallucination += 10 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(5) @@ -324,7 +321,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage2(mob/living/M) M.hallucination += 20 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 8, i++) step(M, pick(GLOB.cardinals)) M.Jitter(10) @@ -336,7 +333,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage3(mob/living/M) M.hallucination += 30 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 12, i++) step(M, pick(GLOB.cardinals)) M.Jitter(15) @@ -348,7 +345,7 @@ /datum/reagent/drug/bath_salts/addiction_act_stage4(mob/living/carbon/human/M) M.hallucination += 30 - if(M.canmove && !ismovableatom(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !ismovableatom(M.loc)) for(var/i = 0, i < 16, i++) step(M, pick(GLOB.cardinals)) M.Jitter(50) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 52e4568b06..7a3d651fac 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -49,8 +49,7 @@ REMOVE_TRAITS_NOT_IN(M, list(SPECIES_TRAIT, ROUNDSTART_TRAIT, ORGAN_TRAIT)) M.set_blurriness(0) M.set_blindness(0) - M.SetKnockdown(0, 0) - M.SetStun(0, 0) + M.SetAllImmobility(0, 0) M.SetUnconscious(0, 0) M.silent = FALSE M.dizziness = 0 @@ -92,8 +91,7 @@ /datum/reagent/medicine/synaptizine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) + M.AdjustAllImmobility(-20, 0) M.AdjustUnconscious(-20, 0) if(holder.has_reagent("mindbreaker")) holder.remove_reagent("mindbreaker", 5) @@ -866,8 +864,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) M.adjustStaminaLoss(-0.5*REM, 0) . = 1 if(prob(20)) - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) + M.AdjustAllImmobility(-20, 0) M.AdjustUnconscious(-20, 0) ..() @@ -1345,8 +1342,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/M as mob) M.AdjustUnconscious(-20, 0) - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) + M.AdjustAllImmobility(-20, 0) M.AdjustSleeping(-20, 0) M.adjustStaminaLoss(-30, 0) ..() @@ -1433,8 +1429,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M) if(!overdosed) // We do not want any effects on OD overdose_threshold = overdose_threshold + rand(-10,10)/10 // for extra fun - M.AdjustStun(-5, 0) - M.AdjustKnockdown(-5, 0) + M.AdjustAllImmobility(-5, 0) M.AdjustUnconscious(-5, 0) M.adjustStaminaLoss(-1*REM, 0) M.Jitter(1) From 02841f8e92d84ef5e76da032b87adc973a26a66b Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 18:49:37 -0700 Subject: [PATCH 24/92] compile --- code/datums/brain_damage/special.dm | 2 +- code/datums/components/butchering.dm | 2 +- code/datums/components/chasm.dm | 3 +- code/datums/martial/sleeping_carp.dm | 2 +- code/datums/status_effects/buffs.dm | 6 +- code/game/objects/buckling.dm | 2 +- code/game/objects/effects/step_triggers.dm | 2 +- code/game/objects/items/holy_weapons.dm | 2 +- .../components/unary_devices/cryo.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 2 +- .../mob/living/carbon/human/species.dm | 6 +- code/modules/mob/living/living.dm | 8 -- code/modules/mob/living/status_procs.dm | 3 + code/modules/photography/photos/photo.dm | 8 +- .../chemistry/reagents/medicine_reagents.dm | 107 +++++++++--------- .../chemistry/reagents/other_reagents.dm | 59 +++++----- .../nanites/nanite_programs/buffing.dm | 9 +- .../code/game/objects/cit_screenshake.dm | 2 +- 18 files changed, 109 insertions(+), 118 deletions(-) diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index b52c7d391c..bc1f566f23 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -13,7 +13,7 @@ /datum/brain_trauma/special/godwoken/on_life() ..() if(prob(4)) - if(prob(33) && (owner.IsStun() || owner.IsKnockdown() || owner.IsUnconscious())) + if(prob(33) && owner.HighestImmobilityAmount()) speak("unstun", TRUE) else if(prob(60) && owner.health <= owner.crit_threshold) speak("heal", TRUE) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 06169f64bf..3d5aa5261a 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -32,7 +32,7 @@ if(ishuman(M) && source.force && source.get_sharpness()) var/mob/living/carbon/human/H = M - if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) // Only sleeping, neck grabbed, or crit, can be sliced. + if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H._REFACTORING_IsSleeping()) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) // Only sleeping, neck grabbed, or crit, can be sliced. if(H.has_status_effect(/datum/status_effect/neck_slice)) user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index d606478a6a..c792cb4be9 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -110,8 +110,7 @@ if (isliving(AM)) var/mob/living/L = AM L.notransform = TRUE - L.Stun(200) - L.resting = TRUE + L.Paralyze(200) var/oldtransform = AM.transform var/oldcolor = AM.color diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index aab99fcc4d..9aab8b7c47 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -81,7 +81,7 @@ return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/headKick(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(CHECK_MOBILITY(D, MOBILTIY_STAND)) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) log_combat(A, D, "head kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) D.visible_message("[A] kicks [D] in the head!", \ diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index ee6d9e2759..43afcdd807 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -73,8 +73,7 @@ owner.log_message("gained Vanguard stun immunity", LOG_ATTACK) owner.add_stun_absorption("vanguard", INFINITY, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!") owner.visible_message("[owner] begins to faintly glow!", "You will absorb all stuns for the next twenty seconds.") - owner.SetStun(0, FALSE) - owner.SetKnockdown(0) + owner.SetAllImmobility(0, FALSE) owner.setStaminaLoss(0, FALSE) progbar = new(owner, duration, owner) progbar.bar.color = list("#FAE48C", "#FAE48C", "#FAE48C", rgb(0,0,0)) @@ -226,9 +225,8 @@ return ..() /datum/status_effect/wish_granters_gift/on_remove() - owner.revive(full_heal = 1, admin_revive = 1) + owner.revive(full_heal = TRUE, admin_revive = TRUE) owner.visible_message("[owner] appears to wake from the dead, having healed all wounds!", "You have regenerated.") - owner.update_canmove() /obj/screen/alert/status_effect/wish_granters_gift name = "Wish Granter's Immortality" diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 416644cada..1f2df63690 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -85,7 +85,7 @@ . = buckled_mob buckled_mob.buckled = null buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() + buckled_mob.update_mobility() buckled_mob.clear_alert("buckled") buckled_mobs -= buckled_mob SEND_SIGNAL(src, COMSIG_MOVABLE_UNBUCKLE, buckled_mob, force) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index b4c3345146..74ee4fa9ef 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -99,7 +99,7 @@ affecting.Remove(AM) - if(living(AM)) + if(isliving(AM)) var/mob/living/M = AM if(immobilize) REMOVE_TRAIT(M, TRAIT_MOBILITY_NOMOVE, src) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 151a0c4bf1..1899c18aca 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -64,7 +64,7 @@ else playsound(src, 'sound/machines/buzz-sigh.ogg', 40, 1) -/obj/item/holybeacon/proc/beacon_armor(mob/M) +/obj/item/holybeacon/proc/beacon_armor(mob/living/M) var/list/holy_armor_list = typesof(/obj/item/storage/box/holy) var/list/display_names = list() for(var/V in holy_armor_list) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 9046d2ff28..41c9c0875c 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -239,7 +239,7 @@ M.forceMove(get_turf(src)) if(isliving(M)) var/mob/living/L = M - L.update_canmove() + L.update_mobility() occupant = null update_icon() diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 2a5960086b..542a9d642d 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -87,7 +87,7 @@ if(istype(user)) if(to_turf) user.forceMove(to_turf) - user.SetStun(0) + user._REFACTORING_SetStun(0) user.next_move = 1 user.alpha = 255 user.update_atom_colour() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2324fe4b99..068e041450 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1839,7 +1839,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) to_chat(user, "You're too exhausted for that.") return - if(!user.resting) + if(CHECK_MOBILITY(user, MOBILITY_STAND)) to_chat(user, "You can only force yourself up if you're on the ground.") return user.visible_message("[user] forces [p_them()]self up to [p_their()] feet!", "You force yourself up to your feet!") @@ -1857,7 +1857,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return FALSE if(attacker_style && attacker_style.disarm_act(user,target)) return TRUE - if(user.resting) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) return FALSE else if(user == target) @@ -1870,7 +1870,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) target.w_uniform.add_fingerprint(user) SEND_SIGNAL(target, COMSIG_HUMAN_DISARM_HIT, user, user.zone_selected) - if(!target.resting) + if(CHECK_MOBILITY(target, MOBILITY_STAND)) target.adjustStaminaLoss(5) if(target.is_shove_knockdown_blocked()) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d27e4ad644..0b2d2167bf 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1150,14 +1150,6 @@ GLOB.dead_mob_list += src . = ..() switch(var_name) - if("knockdown") - SetKnockdown(var_value) - if("stun") - SetStun(var_value) - if("unconscious") - SetUnconscious(var_value) - if("sleeping") - SetSleeping(var_value) if("eye_blind") set_blindness(var_value) if("eye_damage") diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index b63e766418..608db74204 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -330,6 +330,9 @@ if(updating) update_mobility() +/mob/living/proc/HighestImmobilityAmount() + return max(max(max(max(_REFACTORING_AmountStun(), _REFACTORING_AmountKnockdown()), AmountParalyzed()), AmountImmobilized()), AmountDazed()) + //////////////////UNCONSCIOUS /mob/living/proc/_REFACTORING_IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 5682c333c7..37308ab978 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -85,8 +85,10 @@ set category = "Object" set src in usr + var/mob/living/L = usr + if(!istype(L)) + return var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", null) as text), 1, MAX_NAME_LEN) - //loc.loc check is for making possible renaming photos in clipboards - if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == CONSCIOUS && usr.canmove && !usr.restrained()) + if(L.CanReach(src) && CHECK_MOBILITY(L, MOBILITY_USE)) name = "photo[(n_name ? text("- '[n_name]'") : null)]" - add_fingerprint(usr) + add_fingerprint(usr) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 7a3d651fac..b02d507b5e 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1024,21 +1024,20 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) if(M.health < 50 && M.health > 0) - M.adjustOxyLoss(-1*REM, 0) - M.adjustToxLoss(-1*REM, 0) - M.adjustBruteLoss(-1*REM, 0) - M.adjustFireLoss(-1*REM, 0) - M.AdjustStun(-60, 0) - M.AdjustKnockdown(-60, 0) - M.AdjustUnconscious(-60, 0) - M.adjustStaminaLoss(-20*REM, 0) + M.adjustOxyLoss(-1*REM, FALSE) + M.adjustToxLoss(-1*REM, FALSE) + M.adjustBruteLoss(-1*REM, FALSE) + M.adjustFireLoss(-1*REM, FALSE) + M.AdjustAllImmobility(-60, FALSE) + M.AdjustUnconscious(-60, FALSE) + M.adjustStaminaLoss(-20*REM, FALSE) ..() . = 1 /datum/reagent/medicine/stimulants/overdose_process(mob/living/M) if(prob(33)) - M.adjustStaminaLoss(2.5*REM, 0) - M.adjustToxLoss(1*REM, 0) + M.adjustStaminaLoss(2.5*REM, FALSE) + M.adjustToxLoss(1*REM, FALSE) M.losebreath++ . = 1 ..() @@ -1069,12 +1068,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 5 /datum/reagent/medicine/bicaridine/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-2*REM, 0) + M.adjustBruteLoss(-2*REM, FALSE) ..() . = 1 /datum/reagent/medicine/bicaridine/overdose_process(mob/living/M) - M.adjustBruteLoss(4*REM, 0) + M.adjustBruteLoss(4*REM, FALSE) ..() . = 1 @@ -1088,12 +1087,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 9.7 /datum/reagent/medicine/dexalin/on_mob_life(mob/living/carbon/M) - M.adjustOxyLoss(-2*REM, 0) + M.adjustOxyLoss(-2*REM, FALSE) ..() . = 1 /datum/reagent/medicine/dexalin/overdose_process(mob/living/M) - M.adjustOxyLoss(4*REM, 0) + M.adjustOxyLoss(4*REM, FALSE) ..() . = 1 @@ -1107,12 +1106,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 9 /datum/reagent/medicine/kelotane/on_mob_life(mob/living/carbon/M) - M.adjustFireLoss(-2*REM, 0) + M.adjustFireLoss(-2*REM, FALSE) ..() . = 1 /datum/reagent/medicine/kelotane/overdose_process(mob/living/M) - M.adjustFireLoss(4*REM, 0) + M.adjustFireLoss(4*REM, FALSE) ..() . = 1 @@ -1127,14 +1126,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 10 /datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) - M.adjustToxLoss(-2*REM, 0) + M.adjustToxLoss(-2*REM, FALSE) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) M.reagents.remove_reagent(R.id,1) ..() . = 1 /datum/reagent/medicine/antitoxin/overdose_process(mob/living/M) - M.adjustToxLoss(4*REM, 0) // End result is 2 toxin loss taken, because it heals 2 and then removes 4. + M.adjustToxLoss(4*REM, FALSE) // End result is 2 toxin loss taken, because it heals 2 and then removes 4. ..() . = 1 @@ -1162,18 +1161,18 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/tricordrazine/on_mob_life(mob/living/carbon/M) if(prob(80)) - M.adjustBruteLoss(-1*REM, 0) - M.adjustFireLoss(-1*REM, 0) - M.adjustOxyLoss(-1*REM, 0) - M.adjustToxLoss(-1*REM, 0) + M.adjustBruteLoss(-1*REM, FALSE) + M.adjustFireLoss(-1*REM, FALSE) + M.adjustOxyLoss(-1*REM, FALSE) + M.adjustToxLoss(-1*REM, FALSE) . = 1 ..() /datum/reagent/medicine/tricordrazine/overdose_process(mob/living/M) - M.adjustToxLoss(2*REM, 0) - M.adjustOxyLoss(2*REM, 0) - M.adjustBruteLoss(2*REM, 0) - M.adjustFireLoss(2*REM, 0) + M.adjustToxLoss(2*REM, FALSE) + M.adjustOxyLoss(2*REM, FALSE) + M.adjustBruteLoss(2*REM, FALSE) + M.adjustFireLoss(2*REM, FALSE) ..() . = 1 @@ -1186,9 +1185,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) taste_description = "jelly" /datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-1.5*REM, 0) - M.adjustFireLoss(-1.5*REM, 0) - M.adjustOxyLoss(-1.5*REM, 0) + M.adjustBruteLoss(-1.5*REM, FALSE) + M.adjustFireLoss(-1.5*REM, FALSE) + M.adjustOxyLoss(-1.5*REM, FALSE) M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs . = 1 ..() @@ -1202,13 +1201,13 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 11 /datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-5*REM, 0) //A ton of healing - this is a 50 telecrystal investment. - M.adjustFireLoss(-5*REM, 0) - M.adjustOxyLoss(-15, 0) - M.adjustToxLoss(-5*REM, 0) + M.adjustBruteLoss(-5*REM, FALSE) //A ton of healing - this is a 50 telecrystal investment. + M.adjustFireLoss(-5*REM, FALSE) + M.adjustOxyLoss(-15, FALSE) + M.adjustToxLoss(-5*REM, FALSE) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -15*REM) - M.adjustCloneLoss(-3*REM, 0) - M.adjustStaminaLoss(-25*REM,0) + M.adjustCloneLoss(-3*REM, FALSE) + M.adjustStaminaLoss(-25*REM,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) M.blood_volume += 40 // blood fall out man bad ..() @@ -1223,13 +1222,13 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 11 /datum/reagent/medicine/lesser_syndicate_nanites/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-3*REM, 0) // hidden gold shh - M.adjustFireLoss(-3*REM, 0) - M.adjustOxyLoss(-15, 0) - M.adjustToxLoss(-3*REM, 0) + M.adjustBruteLoss(-3*REM, FALSE) // hidden gold shh + M.adjustFireLoss(-3*REM, FALSE) + M.adjustOxyLoss(-15, FALSE) + M.adjustToxLoss(-3*REM, FALSE) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -15*REM) - M.adjustCloneLoss(-3*REM, 0) - M.adjustStaminaLoss(-20*REM,0) + M.adjustCloneLoss(-3*REM, FALSE) + M.adjustStaminaLoss(-20*REM,FALSE) if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) M.blood_volume += 20 // blood fall out man bad ..() @@ -1247,17 +1246,17 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 11.8 /datum/reagent/medicine/neo_jelly/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-1.5*REM, 0) - M.adjustFireLoss(-1.5*REM, 0) - M.adjustOxyLoss(-1.5*REM, 0) + M.adjustBruteLoss(-1.5*REM, FALSE) + M.adjustFireLoss(-1.5*REM, FALSE) + M.adjustOxyLoss(-1.5*REM, FALSE) M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs . = 1 ..() /datum/reagent/medicine/neo_jelly/overdose_process(mob/living/M) - M.adjustOxyLoss(2.6*REM, 0) - M.adjustBruteLoss(3.5*REM, 0) - M.adjustFireLoss(3.5*REM, 0) + M.adjustOxyLoss(2.6*REM, FALSE) + M.adjustBruteLoss(3.5*REM, FALSE) + M.adjustFireLoss(3.5*REM, FALSE) ..() . = 1 @@ -1270,13 +1269,13 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 11 /datum/reagent/medicine/earthsblood/on_mob_life(mob/living/carbon/M) - M.adjustBruteLoss(-3 * REM, 0) - M.adjustFireLoss(-3 * REM, 0) - M.adjustOxyLoss(-15 * REM, 0) - M.adjustToxLoss(-3 * REM, 0, TRUE) //Heals TOXINLOVERS + M.adjustBruteLoss(-3 * REM, FALSE) + M.adjustFireLoss(-3 * REM, FALSE) + M.adjustOxyLoss(-15 * REM, FALSE) + M.adjustToxLoss(-3 * REM, FALSE, TRUE) //Heals TOXINLOVERS M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM, 150) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that! - M.adjustCloneLoss(-1 * REM, 0) - M.adjustStaminaLoss(-13 * REM, 0) + M.adjustCloneLoss(-1 * REM, FALSE) + M.adjustStaminaLoss(-13 * REM, FALSE) M.jitteriness = min(max(0, M.jitteriness + 3), 30) M.druggy = min(max(0, M.druggy + 10), 15) //See above ..() @@ -1284,7 +1283,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/earthsblood/overdose_process(mob/living/M) M.hallucination = min(max(0, M.hallucination + 5), 60) - M.adjustToxLoss(8 * REM, 0, TRUE) //Hurts TOXINLOVERS + M.adjustToxLoss(8 * REM, FALSE, TRUE) //Hurts TOXINLOVERS ..() . = 1 diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 550b9490fc..ad23ab2d1b 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -421,22 +421,21 @@ /datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/M) if(iscultist(M)) M.drowsyness = max(M.drowsyness-5, 0) - M.AdjustUnconscious(-20, 0) - M.AdjustStun(-40, 0) - M.AdjustKnockdown(-40, 0) - M.adjustStaminaLoss(-10, 0) - M.adjustToxLoss(-2, 0, TRUE) - M.adjustOxyLoss(-2, 0) - M.adjustBruteLoss(-2, 0) - M.adjustFireLoss(-2, 0) + M.AdjustUnconscious(-20, FALSE) + M.AdjustAllImmobility(-40, FALSE) + M.adjustStaminaLoss(-10, FALSE) + M.adjustToxLoss(-2, FALSE, TRUE) + M.adjustOxyLoss(-2, FALSE) + M.adjustBruteLoss(-2, FALSE) + M.adjustFireLoss(-2, FALSE) if(ishuman(M) && M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio)) M.blood_volume += 3 else // Will deal about 90 damage when 50 units are thrown M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) - M.adjustToxLoss(2, 0) - M.adjustFireLoss(2, 0) - M.adjustOxyLoss(2, 0) - M.adjustBruteLoss(2, 0) + M.adjustToxLoss(2, FALSE) + M.adjustFireLoss(2, FALSE) + M.adjustOxyLoss(2, FALSE) + M.adjustBruteLoss(2, FALSE) holder.remove_reagent(id, 1) return TRUE @@ -449,8 +448,8 @@ /datum/reagent/hellwater/on_mob_life(mob/living/carbon/M) M.fire_stacks = min(5,M.fire_stacks + 3) M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire - M.adjustToxLoss(1, 0) - M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? + M.adjustToxLoss(1, FALSE) + M.adjustFireLoss(1, FALSE) //Hence the other damages... ain't I a bastard? M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150) holder.remove_reagent(id, 1) pH = 0.1 @@ -464,23 +463,23 @@ /datum/reagent/fuel/holyoil/on_mob_life(mob/living/carbon/M) if(is_servant_of_ratvar(M)) M.drowsyness = max(M.drowsyness-5, 0) - M.AdjustUnconscious(-60, 0) - M.AdjustStun(-30, 0) - M.AdjustKnockdown(-70, 0) - M.adjustStaminaLoss(-15, 0) - M.adjustToxLoss(-5, 0, TRUE) - M.adjustOxyLoss(-3, 0) - M.adjustBruteLoss(-3, 0) - M.adjustFireLoss(-5, 0) + M.AdjustUnconscious(-60, FALSE) + M.AdjustAllImmobility(-30, FALSE) + M._REFACTORING_AdjustKnockdown(-40, FALSE) + M.adjustStaminaLoss(-15, FALSE) + M.adjustToxLoss(-5, FALSE, TRUE) + M.adjustOxyLoss(-3, FALSE) + M.adjustBruteLoss(-3, FALSE) + M.adjustFireLoss(-5, FALSE) if(iscultist(M)) - M.AdjustUnconscious(1, 0) - M.AdjustStun(10, 0) - M.AdjustKnockdown(20, 0) - M.adjustStaminaLoss(15, 0) + M.AdjustUnconscious(1, FALSE) + M.AdjustAllImmobility(10, FALSE) + M._REFACTORING_AdjustKnockdown(10, FALSE) + M.adjustStaminaLoss(15, FALSE) else - M.adjustToxLoss(3, 0) - M.adjustOxyLoss(2, 0) - M.adjustStaminaLoss(10, 0) + M.adjustToxLoss(3, FALSE) + M.adjustOxyLoss(2, FALSE) + M.adjustStaminaLoss(10, FALSE) holder.remove_reagent(id, 1) return TRUE @@ -969,7 +968,7 @@ taste_mult = 0 // apparently tasteless. /datum/reagent/mercury/on_mob_life(mob/living/carbon/M) - if(M.canmove && !isspaceturf(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !isspaceturf(M.loc)) step(M, pick(GLOB.cardinals)) if(prob(5)) M.emote(pick("twitch","drool","moan")) diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index be12d06ede..2e8bcb6f32 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -29,12 +29,11 @@ if(!..()) return to_chat(host_mob, "You feel a sudden surge of energy!") - host_mob.SetStun(0) - host_mob.SetKnockdown(0) - host_mob.SetUnconscious(0) + host_mob.SetAllImmobility(0, FALSE) + host_mob.SetUnconscious(0, FALSE) host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now - host_mob.lying = 0 - host_mob.update_canmove() + host_mob.set_resting(FALSE, TRUE, FALSE) + host_mob.update_mobility() host_mob.reagents.add_reagent("stimulants", 1.5) /datum/nanite_program/hardening diff --git a/modular_citadel/code/game/objects/cit_screenshake.dm b/modular_citadel/code/game/objects/cit_screenshake.dm index 5bb1f82c10..ddb417e06e 100644 --- a/modular_citadel/code/game/objects/cit_screenshake.dm +++ b/modular_citadel/code/game/objects/cit_screenshake.dm @@ -53,7 +53,7 @@ if (1) shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) if (2) - if (!M.canmove) + if(!CHECK_MOBILITY(M, MOBILITY_MOVE)) shake_camera(M, ((force - 10) * 0.015 + 1), ((force - 10) * 0.015)) /obj/item/attack_obj(obj/O, mob/living/user) From ded4d1bed6926f54e588ded488692d4d9be40ec3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 18:58:26 -0700 Subject: [PATCH 25/92] compile --- code/_onclick/item_attack.dm | 4 +-- .../mob/living/carbon/human/species.dm | 6 ++-- .../mob/living/simple_animal/bot/honkbot.dm | 2 +- .../mob/living/simple_animal/bot/medbot.dm | 2 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- code/modules/surgery/organs/vocal_cords.dm | 31 +++++++++---------- 6 files changed, 23 insertions(+), 24 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e6b2a63673..7c7a137f1b 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -104,7 +104,7 @@ var/mob/living/carbon/tempcarb = user if(!tempcarb.combatmode) totitemdamage *= 0.5 - if(user.resting) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) totitemdamage *= 0.5 //CIT CHANGES END HERE if(user != src && check_shields(I, totitemdamage, "the [I.name]", MELEE_ATTACK, I.armour_penetration)) @@ -112,7 +112,7 @@ send_item_attack_message(I, user) if(I.force) apply_damage(totitemdamage, I.damtype) //CIT CHANGE - replaces I.force with totitemdamage - if(I.damtype == BRUTE && !HAS_TRAIT(src, TRAIT_NOMARROW)) + if(I.damtype == BRUTE && !HAS_TRAIT(src, TRAIT_NOMARROW)) if(prob(33)) I.add_mob_blood(src) var/turf/location = get_turf(src) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 068e041450..e74ffcc78f 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1520,7 +1520,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //CITADEL CHANGES - makes resting and disabled combat mode reduce punch damage, makes being out of combat mode result in you taking more damage if(!target.combatmode && damage < user.dna.species.punchstunthreshold) damage = user.dna.species.punchstunthreshold - 1 - if(user.resting) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) damage *= 0.5 if(!user.combatmode) damage *= 0.25 @@ -1640,7 +1640,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return*/ if(!target.combatmode) // CITADEL CHANGE randn += -10 //CITADEL CHANGE - being out of combat mode makes it easier for you to get disarmed - if(user.resting) //CITADEL CHANGE + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) //CITADEL CHANGE randn += 100 //CITADEL CHANGE - No kosher disarming if you're resting if(!user.combatmode) //CITADEL CHANGE randn += 25 //CITADEL CHANGE - Makes it harder to disarm outside of combat mode @@ -1723,7 +1723,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/mob/living/carbon/tempcarb = user if(!tempcarb.combatmode) totitemdamage *= 0.5 - if(user.resting) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) totitemdamage *= 0.5 if(istype(H)) if(!H.combatmode) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 07bfec986f..4220f4242d 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -149,7 +149,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, if (emagged <= 1) honk_attack(A) else - if(!C.IsStun() || arrest_type) + if(!C._REFACTORING_IsStun() || arrest_type) stun_attack(A) ..() else if (!spam_flag) //honking at the ground diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 41c1e31dd1..7b28f591e4 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -106,7 +106,7 @@ skin = new_skin update_icon() -/mob/living/simple_animal/bot/medbot/update_canmove() +/mob/living/simple_animal/bot/medbot/update_mobility() . = ..() update_icon() diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index fd28ff9c47..0af5e68993 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1898,7 +1898,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L) ..() - if(L.IsSleeping()) + if(L._REFACTORING_IsSleeping()) if(L.bruteloss && L.fireloss) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink. if(prob(50)) L.adjustBruteLoss(-0.25) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 08ba28332a..bc35500b93 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -493,8 +493,7 @@ var/mob/living/L = V if(L.resting) L.lay_down() //aka get up - L.SetStun(0) - L.SetKnockdown(0) + L.SetAllImmobility(0) L.SetUnconscious(0) //i said get up i don't care if you're being tased //SIT @@ -1114,7 +1113,7 @@ if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) // probably a redundant check but for good measure addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure."), 5) H.mob_climax(forced_climax=TRUE) - H.SetStun(20) + H._REFACTORING_SetStun(20) H.setArousalLoss(H.min_arousal) E.resistanceTally = 0 //makes resistance 0, but resets arousal, resistance buildup is faster unaroused (massively so). E.enthrallTally += power_multiplier @@ -1253,8 +1252,8 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.") - user.SetStun(1000)//Hands are handy, so you have to stay still - H.SetStun(1000) + user._REFACTORING_SetStun(1000)//Hands are handy, so you have to stay still + H._REFACTORING_SetStun(1000) if (E.mental_capacity >= 5) var/trigger = html_decode(stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)) var/custom_words_words_list = list("Speak", "Echo", "Shock", "Cum", "Kneel", "Strip", "Trance", "Cancel") @@ -1277,8 +1276,8 @@ to_chat(user, "Your pet looks at you confused, it seems they don't understand that effect!") else to_chat(user, "Your pet looks at you with a vacant blase expression, you don't think you can program anything else into them") - user.SetStun(0) - H.SetStun(0) + user._REFACTORING_SetStun(0) + H._REFACTORING_SetStun(0) //CUSTOM ECHO else if((findtext(message, custom_echo))) @@ -1294,16 +1293,16 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.") - user.SetStun(1000)//Hands are handy, so you have to stay still - H.SetStun(1000) + user._REFACTORING_SetStun(1000)//Hands are handy, so you have to stay still + H._REFACTORING_SetStun(1000) var/trigger = stripped_input(user, "Enter the loop phrase", MAX_MESSAGE_LEN) var/customSpan = list("Notice", "Warning", "Hypnophrase", "Love", "Velvet") var/trigger2 = input(user, "Pick the style", "Style") in customSpan trigger2 = lowertext(trigger2) E.customEcho = trigger E.customSpan = trigger2 - user.SetStun(0) - H.SetStun(0) + user._REFACTORING_SetStun(0) + H._REFACTORING_SetStun(0) to_chat(user, "You sucessfully set an echoing phrase in [H]") //CUSTOM OBJECTIVE @@ -1317,8 +1316,8 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'") - user.SetStun(1000)//So you can't run away! - H.SetStun(1000) + user._REFACTORING_SetStun(1000)//So you can't run away! + H._REFACTORING_SetStun(1000) if (E.mental_capacity >= 200) var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN) if(!LAZYLEN(objective)) @@ -1339,8 +1338,8 @@ to_chat(user, "You sucessfully give an objective to [H]") else to_chat(user, "Your pet looks at you with a vacant blasé expression, you don't think you can program anything else into them") - user.SetStun(0) - H.SetStun(0) + user._REFACTORING_SetStun(0) + H._REFACTORING_SetStun(0) //INSTILL else if((findtext(message, instill_words))) @@ -1434,7 +1433,7 @@ if(3 to INFINITY)//Tier 3 only if(L.resting) L.lay_down() //aka get up - L.SetStun(0) + L._REFACTORING_SetStun(0) L.SetKnockdown(0) L.SetUnconscious(0) //i said get up i don't care if you're being tased E.cooldown += 10 //This could be really strong From 45c92bcb6fd34cb8d6c45717b51fd3cf68928e45 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 19:07:47 -0700 Subject: [PATCH 26/92] s --- code/datums/martial/cqc.dm | 4 ++-- code/game/atoms_movable.dm | 2 +- code/game/machinery/computer/robot.dm | 6 +++--- .../mob/living/carbon/alien/special/alien_embryo.dm | 8 ++++---- code/modules/mob/living/carbon/carbon_defense.dm | 2 +- code/modules/mob/living/carbon/human/species.dm | 2 +- .../mob/living/carbon/human/species_types/angel.dm | 13 ++++++------- code/modules/projectiles/projectile/magic.dm | 4 ++-- .../chemistry/reagents/medicine_reagents.dm | 7 +++---- code/modules/surgery/organs/augments_internal.dm | 7 ++----- code/modules/surgery/organs/vocal_cords.dm | 6 ++---- 11 files changed, 27 insertions(+), 34 deletions(-) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 793c43bd80..b1ac5d7846 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -54,7 +54,7 @@ /datum/martial_art/cqc/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE - if(!D.stat || !D.IsKnockdown()) + if(CHECK_MOBILITY(D, MOBILITY_STAND) D.visible_message("[A] kicks [D] back!", \ "[A] kicks you back!") playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1) @@ -62,7 +62,7 @@ D.throw_at(throw_target, 1, 14, A) D.apply_damage(10, BRUTE) log_combat(A, D, "kicked (CQC)") - if(!CHECK_MOBILITY(D, MOBILITY_STAND) && !D.stat) + if(!CHECK_MOBILITY(D, MOBILITY_STAND) && CHECK_MOBILITY(D, MOBILITY_USE)) log_combat(A, D, "knocked out (Head kick)(CQC)") D.visible_message("[A] kicks [D]'s head, knocking [D.p_them()] out!", \ "[A] kicks your head, knocking you out!") diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 7c57de74a4..d5b9f9ad47 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -154,7 +154,7 @@ grab_state = 0 if(isliving(ex_pulled)) var/mob/living/L = ex_pulled - L.update_canmove()// mob gets up if it was lyng down in a chokehold + L.update_mobility()// mob gets up if it was lyng down in a chokehold /atom/movable/proc/Move_Pulled(atom/A) if(!pulling) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 2df3dd5fe5..5e4e1c696a 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -115,10 +115,10 @@ if(src.allowed(usr)) var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in GLOB.silicon_mobs if(can_control(usr, R)) - var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") + var/choice = input("Are you certain you wish to [R.locked_down? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) - message_admins("[ADMIN_LOOKUPFLW(usr)] [R.canmove ? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") - log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [key_name(R)]!") + message_admins("[ADMIN_LOOKUPFLW(usr)] [R.locked_down? "locked down" : "released"] [key_name(R, R.client)][ADMIN_LOOKUPFLW(R)]!") + log_game("[key_name(usr)] [R.locked_down? "locked down" : "released"] [key_name(R)]!") R.SetLockdown(!R.locked_down) to_chat(R, "[!R.locked_down ? "Your lockdown has been lifted!" : "You have been locked down!"]") if(R.connected_ai) diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index c08fe4f582..b5a9b30a21 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -89,8 +89,8 @@ var/mob/living/carbon/alien/larva/new_xeno = new(xeno_loc) ghost.transfer_ckey(new_xeno, FALSE) SEND_SOUND(new_xeno, sound('sound/voice/hiss5.ogg',0,0,0,100)) //To get the player's attention - new_xeno.canmove = 0 //so we don't move during the bursting animation - new_xeno.notransform = 1 + new_xeno.Paralyze(6) + new_xeno.notransform = TRUE new_xeno.invisibility = INVISIBILITY_MAXIMUM sleep(6) @@ -99,8 +99,8 @@ return if(new_xeno) - new_xeno.canmove = 1 - new_xeno.notransform = 0 + new_xeno.SetParalyzed(0) + new_xeno.notransform = FALSE new_xeno.invisibility = 0 var/mob/living/carbon/old_owner = owner diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 5676e9dfd3..82fd5abb87 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -77,7 +77,7 @@ var/mob/living/carbon/tempcarb = user if(!tempcarb.combatmode) totitemdamage *= 0.5 - if(user.resting) + if(!CHECK_MOBILITY(user, MOBILITY_STAND)) totitemdamage *= 0.5 if(!combatmode) totitemdamage *= 1.5 diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e74ffcc78f..7aa023d0c1 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1894,7 +1894,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(shove_blocked && !target.buckled) var/directional_blocked = !target.Adjacent(target_shove_turf) - var/targetatrest = target.resting + var/targetatrest = !CHECK_MOBILITY(target, MOBILITY_STAND) if((directional_blocked || !(target_collateral_human || target_shove_turf.shove_act(target, user))) && !targetatrest) target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_SOLID) user.visible_message("[user.name] shoves [target.name], knocking them down!", diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index ce0ccd73e8..fadaec9eda 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -52,21 +52,20 @@ return 0 /datum/species/angel/proc/CanFly(mob/living/carbon/human/H) - if(H.stat || H.IsStun() || H.IsKnockdown()) - return 0 + if(!CHECK_MOBILITY(H, MOBILITY_MOVE)) + return FALSE if(H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) && (!H.wear_suit.species_exception || !is_type_in_list(src, H.wear_suit.species_exception)))) //Jumpsuits have tail holes, so it makes sense they have wing holes too to_chat(H, "Your suit blocks your wings from extending!") - return 0 + return FALSE var/turf/T = get_turf(H) if(!T) - return 0 + return FALSE var/datum/gas_mixture/environment = T.return_air() if(environment && !(environment.return_pressure() > 30)) to_chat(H, "The atmosphere is too thin for you to fly!") - return 0 - else - return 1 + return FALSE + return TRUE /datum/action/innate/flight name = "Toggle Flight" diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 2b894a9189..9b3638ca7a 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -124,8 +124,8 @@ if(!istype(M) || M.stat == DEAD || M.notransform || (GODMODE & M.status_flags)) return - M.notransform = 1 - M.canmove = 0 + M.notransform = TRUE + M.Paralyze(INFINITY) M.icon = null M.cut_overlays() M.invisibility = INVISIBILITY_ABSTRACT diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index b02d507b5e..d4acb8a67f 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -648,10 +648,9 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 12 /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/carbon/M) - M.AdjustStun(-20, 0) - M.AdjustKnockdown(-20, 0) - M.AdjustUnconscious(-20, 0) - M.adjustStaminaLoss(-4.5*REM, 0) + M.AdjustAllImmobility(-20, FALSE) + M.AdjustUnconscious(-20, FALSE) + M.adjustStaminaLoss(-4.5*REM, FALSE) M.Jitter(10) if(prob(50)) M.confused = max(M.confused, 1) diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index f487e61d38..37ff93c7d9 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -105,11 +105,8 @@ ..() if(crit_fail || !(organ_flags & ORGAN_FAILING)) return - owner.adjustStaminaLoss(-3.5) //Citadel edit, makes it more useful in Stamina based combat - if(owner.AmountStun() > STUN_SET_AMOUNT) - owner.SetStun(STUN_SET_AMOUNT) - if(owner.AmountKnockdown() > STUN_SET_AMOUNT) - owner.SetKnockdown(STUN_SET_AMOUNT) + owner.adjustStaminaLoss(-3.5, FALSE) //Citadel edit, makes it more useful in Stamina based combat + owner.HealAllImmobilityUpTo, STUN_SET_AMOUNT) /obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity) . = ..() diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index bc35500b93..15ed883734 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -1431,10 +1431,8 @@ var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall) switch(E.phase) if(3 to INFINITY)//Tier 3 only - if(L.resting) - L.lay_down() //aka get up - L._REFACTORING_SetStun(0) - L.SetKnockdown(0) + L.set_resting(FALSE, TRUE, FALSE) + L.SetAllImmobility(0) L.SetUnconscious(0) //i said get up i don't care if you're being tased E.cooldown += 10 //This could be really strong addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You jump to your feet from sheer willpower!"), 5) From 162a0def29ff4b9d0df87a202cb16c02494e0e1a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 19:09:38 -0700 Subject: [PATCH 27/92] parentheses --- code/datums/martial/cqc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index b1ac5d7846..96f0caf82c 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -54,7 +54,7 @@ /datum/martial_art/cqc/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!can_use(A)) return FALSE - if(CHECK_MOBILITY(D, MOBILITY_STAND) + if(CHECK_MOBILITY(D, MOBILITY_STAND)) D.visible_message("[A] kicks [D] back!", \ "[A] kicks you back!") playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1) From eca7eeace36b0deeaa96966624b216170ba4de0e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 19:11:49 -0700 Subject: [PATCH 28/92] aa --- code/modules/surgery/organs/augments_internal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 37ff93c7d9..68d5ca14d4 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -106,7 +106,7 @@ if(crit_fail || !(organ_flags & ORGAN_FAILING)) return owner.adjustStaminaLoss(-3.5, FALSE) //Citadel edit, makes it more useful in Stamina based combat - owner.HealAllImmobilityUpTo, STUN_SET_AMOUNT) + owner.HealAllImmobilityUpTo(STUN_SET_AMOUNT) /obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity) . = ..() From 1acac87da31b3042648408b7ca09f1f4562f8941 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 15 Jan 2020 23:54:30 -0700 Subject: [PATCH 29/92] compile --- code/__HELPERS/mobs.dm | 4 ++-- code/datums/emotes.dm | 2 +- code/game/machinery/pipe/construction.dm | 3 ++- code/game/objects/buckling.dm | 2 +- code/game/objects/items.dm | 11 +++++------ code/game/objects/items/religion.dm | 3 +-- code/game/objects/items/robot/robot_items.dm | 2 +- code/game/objects/structures.dm | 3 ++- .../structures/transit_tubes/station.dm | 2 +- .../bloodsucker/bloodsucker_powers.dm | 2 +- .../bloodsucker/powers/bs_gohome.dm | 4 ++-- .../bloodsucker/powers/bs_mesmerize.dm | 2 +- .../antagonists/changeling/powers/fakedeath.dm | 1 - code/modules/mob/living/carbon/carbon.dm | 2 +- .../modules/mob/living/carbon/human/species.dm | 5 ++--- code/modules/mob/living/carbon/life.dm | 4 ++-- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_mobility.dm | 2 +- .../mob/living/simple_animal/bot/secbot.dm | 2 +- .../simple_animal/slime/slime_mobility.dm | 2 +- code/modules/mob/transform_procs.dm | 5 ++--- code/modules/reagents/chemistry/holder.dm | 2 +- .../chemistry/reagents/pyrotechnic_reagents.dm | 3 +-- .../code/datums/status_effects/debuffs.dm | 18 ------------------ .../modules/mob/living/carbon/human/human.dm | 2 +- .../living/silicon/robot/dogborg_equipment.dm | 2 +- tgstation.dme | 1 - 27 files changed, 35 insertions(+), 58 deletions(-) delete mode 100644 modular_citadel/code/datums/status_effects/debuffs.dm diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index cdf0f604b8..71c5570961 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -359,7 +359,7 @@ GLOBAL_LIST_EMPTY(species_list) checked_health["health"] = health return ..() -/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null) +/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_STAND|MOBILITY_USE|MOBILITY_MOVE)) if(!user) return 0 var/atom/Tloc = null @@ -396,7 +396,7 @@ GLOBAL_LIST_EMPTY(species_list) drifting = 0 Uloc = user.loc - if(QDELETED(user) || user.stat || user.IsKnockdown() || user.IsStun() || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) + if(QDELETED(user) || user.stat || !CHECK_ALL_MOBILITY(user, required_mobility_flags) || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) . = 0 break diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 599c492d4c..ce280c5864 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -117,7 +117,7 @@ if(DEAD) to_chat(user, "You cannot [key] while dead.") return FALSE - if(restraint_check && (user.IsStun() || user.IsKnockdown())) + if(restraint_check && !CHECK_MOBILITY(user, MOBILITY_MOVE)) if(!intentional) return FALSE to_chat(user, "You cannot [key] while stunned.") diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 6b8cac544e..d861802432 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -91,7 +91,8 @@ Buildable meters set name = "Flip Pipe" set src in view(1) - if ( usr.stat || usr.restrained() || !usr.canmove ) + var/mob/living/L = usr + if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) return do_a_flip() diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 1f2df63690..33ed274350 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -66,7 +66,7 @@ M.buckled = src M.setDir(dir) buckled_mobs |= M - M.update_canmove() + M.update_mobility() M.throw_alert("buckled", /obj/screen/alert/restrained/buckled) post_buckle_mob(M) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1a73c87440..55d9aef4c0 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -177,14 +177,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) set category = "Object" set src in oview(1) - if(!isturf(loc) || usr.stat || usr.restrained() || !usr.canmove) + var/mob/living/L = usr + if(!istype(L) || !isturf(loc) || !CHECK_MOBILITY(L, MOBILITY_USE)) return - var/turf/T = src.loc - - src.loc = null - - src.loc = T + var/turf/T = loc + loc = null + loc = T /obj/item/examine(mob/user) //This might be spammy. Remove? . = ..() diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index ddc49a456c..e1c3ba3a2e 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -64,8 +64,7 @@ /obj/item/banner/proc/inspiration(mob/living/carbon/human/H) H.adjustBruteLoss(-15) H.adjustFireLoss(-15) - H.AdjustStun(-40) - H.AdjustKnockdown(-40) + H.AdjustAllImmobility(-40) H.AdjustUnconscious(-40) playsound(H, 'sound/magic/staff_healing.ogg', 25, FALSE) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 178476ead4..adb2d14acf 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -99,7 +99,7 @@ else user.visible_message("[user] hugs [M] in a firm bear-hug! [M] looks uncomfortable...", \ "You hug [M] firmly to make [M.p_them()] feel better! [M] looks uncomfortable...") - if(M.resting && !M.recoveringstam) + if(!CHECK_MOBILITY(M, MOBILITY_STAND) && !M.recoveringstam) M.set_resting(FALSE, TRUE) else user.visible_message("[user] bops [M] on the head!", \ diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index b6cfc15137..e8f8d5a3a6 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -45,7 +45,8 @@ if(!climbable) return if(user == O && iscarbon(O)) - if(user.canmove) + var/mob/living/L = O + if(CHECK_MOBILITY(O, MOBILITY_MOVE)) climb_structure(user) return if(!istype(O, /obj/item) || user.get_active_held_item() != O) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index cdae11c066..17ca178cd9 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -44,7 +44,7 @@ //pod insertion /obj/structure/transit_tube/station/MouseDrop_T(obj/structure/c_transit_tube_pod/R, mob/living/user) - if(!istype(user) || !CHECK_MOBILLITY(user, MOBILITY_USE)) + if(!istype(user) || !CHECK_MOBILITY(user, MOBILITY_USE)) return if(!istype(R) || get_dist(user, src) > 1 || get_dist(src,R) > 1) return diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm index dffdeaf7fc..8b1e093a60 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm @@ -96,7 +96,7 @@ // Incap? if(must_be_capacitated) var/mob/living/L = owner - if (L.incapacitated(TRUE, TRUE) || L.resting && !can_be_immobilized) + if (L.incapacitated(TRUE, TRUE) || !CHECK_MOBILITY(L, MOBILITY_STAND) && !can_be_immobilized) if(display_error) to_chat(owner, "Not while you're incapacitated!") return FALSE diff --git a/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm b/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm index 0da9ab5ba3..6b240a17f9 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_gohome.dm @@ -96,9 +96,9 @@ // TELEPORT: Move to Coffin & Close it! do_teleport(owner, bloodsuckerdatum.coffin, no_effects = TRUE, forced = TRUE, channel = TELEPORT_CHANNEL_QUANTUM) // in teleport.dm? // SLEEP - user.resting = TRUE + user.set_resting(TRUE, TRUE, FALSE) //user.Unconscious(30,0) - user.Stun(30,1) + user.Stun(30, TRUE) // CLOSE LID: If fail, force me in. if (!bloodsuckerdatum.coffin.close(owner)) bloodsuckerdatum.coffin.insert(owner) // Puts me inside. diff --git a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm index 94bc0e11d0..f7094c57f0 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm @@ -76,7 +76,7 @@ to_chat(owner, "You must be facing your victim.") return FALSE // Check: Target facing me? - if (!target.resting && !is_A_facing_B(target,owner)) + if (CHECK_MOBILITY(target, MOBILITY_STAND) && !is_A_facing_B(target,owner)) if (display_error) to_chat(owner, "Your victim must be facing you to see into your eyes.") return FALSE diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm index 346d948c79..da7ca59f7f 100644 --- a/code/modules/antagonists/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -18,7 +18,6 @@ user.tod = STATION_TIME_TIMESTAMP("hh:mm:ss") user.fakedeath("changeling") //play dead user.update_stat() - user.update_canmove() addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) return TRUE diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f8cd17ce08..1319f16595 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -965,7 +965,7 @@ return FALSE if(hallucinating()) return TRUE - if(IsSleeping()) + if(_REFACTORING_IsSleeping()) return TRUE if(HAS_TRAIT(src, TRAIT_DUMB)) return TRUE diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 7aa023d0c1..422bd3546d 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1843,8 +1843,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) to_chat(user, "You can only force yourself up if you're on the ground.") return user.visible_message("[user] forces [p_them()]self up to [p_their()] feet!", "You force yourself up to your feet!") - user.resting = 0 - user.update_canmove() + user.set_resting(FALSE, TRUE) user.adjustStaminaLossBuffered(user.stambuffer) //Rewards good stamina management by making it easier to instantly get up from resting playsound(user, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -1884,7 +1883,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Thank you based whoneedsspace target_collateral_human = locate(/mob/living/carbon/human) in target_shove_turf.contents - if(target_collateral_human && !target_collateral_human.resting) + if(target_collateral_human && CHECK_MOBILITY(target_collateral_human, MOBILITY_STAND)) shove_blocked = TRUE else target_collateral_human = null diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 0061c7ed70..25890145e8 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -506,7 +506,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put /mob/living/carbon/handle_status_effects() ..() if(getStaminaLoss() && !combatmode)//CIT CHANGE - prevents stamina regen while combat mode is active - adjustStaminaLoss(resting ? (recoveringstam ? -7.5 : -6) : -3)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke + adjustStaminaLoss(!CHECK_MOBILITY(src, MOBILITY_STAND) ? (recoveringstam ? -7.5 : -6) : -3)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke if(!recoveringstam && incomingstammult != 1) incomingstammult = max(0.01, incomingstammult) @@ -519,7 +519,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put adjustStaminaLoss(drainrate*0.5) //END OF CIT CHANGES - var/restingpwr = 1 + 4 * resting + var/restingpwr = 1 + 4 * !CHECK_MOBILITY(src, MOBILITY_STAND) //Dizziness if(dizziness) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0b2d2167bf..bc99607323 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -128,7 +128,7 @@ return TRUE attemptingcrawl = TRUE visible_message("[src] is attempting to crawl under [L].", "You are now attempting to crawl under [L].") - if(!do_after(src, CRAWLUNDER_DELAY, target = src) || !resting) + if(!do_after(src, CRAWLUNDER_DELAY, target = src) || CHECK_MOBILITY(src, MOBILITY_STAND)) attemptingcrawl = FALSE return TRUE var/src_passmob = (pass_flags & PASSMOB) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 97cb0c67b1..9c2881ae48 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -98,7 +98,7 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() var/pinned = _REFACTORING_resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !IsImmobilized() && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned + var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned if(canmove) mobility_flags |= MOBILITY_MOVE diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 6cc74bd0f7..3e6c4e4ab7 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -213,7 +213,7 @@ Auto Patrol: []"}, return if(iscarbon(A)) var/mob/living/carbon/C = A - if(C.canmove || arrest_type) // CIT CHANGE - makes sentient secbots check for canmove rather than !isstun. + if(CHECK_MOBILITY(C, MOBILITY_MOVE|MOBILITY_USE|MOBILITY_STAND) || arrest_type) // CIT CHANGE - makes sentient secbots check for canmove rather than !isstun. stun_attack(A) else if(C.canBeHandcuffed() && !C.handcuffed) cuff(A) diff --git a/code/modules/mob/living/simple_animal/slime/slime_mobility.dm b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm index d82e945172..5be5ff4e36 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_mobility.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_mobility.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/slime/proc/update_mobility() +/mob/living/simple_animal/slime/update_mobility() . = ..() if(Tempstun && !buckled) DISABLE_BITFIELD(., MOBILITY_MOVE) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 19d1b7fa53..34b3dee2a0 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -29,9 +29,8 @@ dropItemToGround(W) //Make mob invisible and spawn animation - notransform = 1 - canmove = 0 - Stun(22, ignore_canstun = TRUE) + notransform = TRUE + Stun(INFINITY, ignore_canstun = TRUE) icon = null cut_overlays() invisibility = INVISIBILITY_MAXIMUM diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index d540cd02fe..577544d4b7 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -328,7 +328,7 @@ addiction_tick++ if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates. C.updatehealth() - C.update_canmove() + C.update_mobility() C.update_stamina() update_total() diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 36621aa662..fea741231e 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -243,8 +243,7 @@ /datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/M) if(isjellyperson(M)) shock_timer = 0 //immune to shocks - M.AdjustStun(-40, 0) - M.AdjustKnockdown(-40, 0) + M.AdjustAllImmobility(-40, 0) M.AdjustUnconscious(-40, 0) M.adjustStaminaLoss(-2, 0) if(isluminescent(M)) diff --git a/modular_citadel/code/datums/status_effects/debuffs.dm b/modular_citadel/code/datums/status_effects/debuffs.dm deleted file mode 100644 index 6dcfc84a87..0000000000 --- a/modular_citadel/code/datums/status_effects/debuffs.dm +++ /dev/null @@ -1,18 +0,0 @@ -/datum/status_effect/incapacitating/knockdown/on_creation(mob/living/new_owner, set_duration, updating_canmove, override_duration, override_stam) - if(iscarbon(new_owner) && (isnum(set_duration) || isnum(override_duration))) - if(istype(new_owner.buckled, /obj/vehicle/ridden)) - var/obj/buckl = new_owner.buckled - buckl.unbuckle_mob(new_owner) - new_owner.resting = TRUE - new_owner.adjustStaminaLoss(isnull(override_stam)? set_duration*0.25 : override_stam) - if(isnull(override_duration) && (set_duration > 80)) - set_duration = set_duration*0.01 - return ..() - else if(!isnull(override_duration)) - set_duration = override_duration - return ..() - else if(updating_canmove) - new_owner.update_canmove() - qdel(src) - else - . = ..() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index e5d386b56b..9993b70d6a 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -4,7 +4,7 @@ /mob/living/carbon/human/resist_embedded() if(handcuffed || legcuffed || (wear_suit && wear_suit.breakouttime)) return - if(canmove && !on_fire) + if(CHECK_MOBILITY(src, MOBILITY_MOVE) && !on_fire) for(var/obj/item/bodypart/L in bodyparts) if(istype(L) && L.embedded_objects.len) for(var/obj/item/I in L.embedded_objects) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index 6437834e92..e6a6aba3a2 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -54,7 +54,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/mob/living/M = A var/cachedstam = M.getStaminaLoss() var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1) - if(!M.resting) + if(CHECK_MOBILITY(M, MOBILITY_STAND)) M.DefaultCombatKnockdown(cachedstam*2) //BORK BORK. GET DOWN. M.Stun(totalstuntime) user.do_attack_animation(A, ATTACK_EFFECT_BITE) diff --git a/tgstation.dme b/tgstation.dme index 37300f0ab1..7d6e73adb7 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3066,7 +3066,6 @@ #include "modular_citadel\code\datums\components\material_container.dm" #include "modular_citadel\code\datums\components\souldeath.dm" #include "modular_citadel\code\datums\status_effects\chems.dm" -#include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" #include "modular_citadel\code\game\machinery\displaycases.dm" #include "modular_citadel\code\game\machinery\Sleeper.dm" From 26525b8fa76c4fe1975991aac0878045e745a588 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 00:14:03 -0700 Subject: [PATCH 30/92] s --- code/datums/action.dm | 19 +++++++++++-------- code/datums/martial/sleeping_carp.dm | 2 +- code/game/objects/items/holy_weapons.dm | 4 ++-- .../crates_lockers/closets/cardboardbox.dm | 2 +- .../bloodsucker/items/bloodsucker_stake.dm | 14 ++++---------- .../bloodsucker/powers/bs_lunge.dm | 2 +- .../mob/living/silicon/pai/update_icon.dm | 2 +- 7 files changed, 21 insertions(+), 24 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index 77aa729eb1..40532987fd 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -8,6 +8,7 @@ var/desc = null var/obj/target = null var/check_flags = 0 + var/required_mobility_flags = MOBILITY_USE var/processing = FALSE var/obj/screen/movable/action_button/button = null var/buttontooltipstyle = "" @@ -95,20 +96,22 @@ /datum/action/proc/IsAvailable() if(!owner) - return 0 + return FALSE + if(!CHECK_ALL_MOBILITY(owner, required_mobility_flags)) + return FALSE if(check_flags & AB_CHECK_RESTRAINED) if(owner.restrained()) - return 0 + return FALSE if(check_flags & AB_CHECK_STUN) - if(owner.IsKnockdown() || owner.IsStun()) - return 0 + if(!CHECK_MOBILITY(owner, MOBILITY_USE)) + return FALSE if(check_flags & AB_CHECK_LYING) - if(owner.lying) - return 0 + if(!CHECK_MOBILITY(owner, MOBILITY_STAND)) + return FALSE if(check_flags & AB_CHECK_CONSCIOUS) if(owner.stat) - return 0 - return 1 + return FALSE + return TRUE /datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE) if(button) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 9aab8b7c47..1860c0a0e9 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -227,7 +227,7 @@ H.visible_message("[H] collapses!", \ "Your legs give out!") H.DefaultCombatKnockdown(80) - if(H.staminaloss && !H.IsSleeping()) + if(H.staminaloss && !_REFACTORING_H.IsSleeping()) var/total_health = (H.health - H.staminaloss) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 1899c18aca..c445749658 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -243,7 +243,7 @@ if(user.mind && (user.mind.isholy) && !reskinned) reskin_holy_weapon(user) -/obj/item/nullrod/proc/reskin_holy_weapon(mob/M) +/obj/item/nullrod/proc/reskin_holy_weapon(mob/living/M) if(GLOB.holy_weapon_type) return var/obj/item/holy_weapon @@ -255,7 +255,7 @@ display_names[initial(rodtype.name)] = rodtype var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names - if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned) + if(QDELETED(src) || !choice || !in_range(M, src) || !CHECK_MOBILITY(M, MOBILITY_USE) || reskinned) return var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 1c9f59942e..50d9599220 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -18,7 +18,7 @@ var/egged = 0 var/use_mob_movespeed = FALSE //Citadel adds snowflake box handling -/obj/structure/closet/cardboard/relaymove(mob/user, direction) +/obj/structure/closet/cardboard/relaymove(mob/living/user, direction) if(opened || move_delay || !CHECK_BITFIELD(user.mobility_flags, MOBILITY_MOVE) || !isturf(loc) || !has_gravity(loc)) return move_delay = TRUE diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm index 9db4cae1ff..15370a5473 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm @@ -1,9 +1,5 @@ - - // organ_internal.dm -- /obj/item/organ - - // Do I have a stake in my heart? /mob/living/AmStaked() var/obj/item/bodypart/BP = get_bodypart("chest") @@ -13,16 +9,14 @@ if (istype(I,/obj/item/stake/)) return TRUE return FALSE + /mob/proc/AmStaked() return FALSE - /mob/living/proc/StakeCanKillMe() - return IsSleeping() || stat >= UNCONSCIOUS || blood_volume <= 0 || HAS_TRAIT(src, TRAIT_DEATHCOMA) // NOTE: You can't go to sleep in a coffin with a stake in you. + return _REFACTORING_IsSleeping() || stat >= UNCONSCIOUS || blood_volume <= 0 || HAS_TRAIT(src, TRAIT_DEATHCOMA) // NOTE: You can't go to sleep in a coffin with a stake in you. - -///obj/item/weapon/melee/stake -/obj/item/stake/ +/obj/item/stake name = "wooden stake" desc = "A simple wooden stake carved to a sharp point." icon = 'icons/obj/items_and_weapons.dmi' @@ -113,7 +107,7 @@ // Can this target be staked? If someone stands up before this is complete, it fails. Best used on someone stationary. /mob/living/carbon/proc/can_be_staked() //return resting || IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) || resting || IsStun() || IsFrozen() || (pulledby && pulledby.grab_state >= GRAB_NECK) - return (src.resting || src.lying) + return !CHECK_MOBILITY(src, MOBILITY_STAND) // ABOVE: Taken from update_mobility() in living.dm /obj/item/stake/hardened diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index d6f3d87461..a4869923ff 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -61,7 +61,7 @@ walk_towards(owner, T, 0.1, 10) // NOTE: this runs in the background! to cancel it, you need to use walk(owner.current,0), or give them a new path. addtimer(CALLBACK(owner, .proc/_walk, 0), 2 SECONDS) - if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && owner.resting) + if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(owner, MOBILITY_STAND)) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm index 3ef5a6cae9..d52523a367 100644 --- a/code/modules/mob/living/silicon/pai/update_icon.dm +++ b/code/modules/mob/living/silicon/pai/update_icon.dm @@ -7,7 +7,7 @@ icon = dynamic_chassis_icons[dynamic_chassis] var/list/states = icon_states(icon) icon_state = "" - if(resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) + if(_REFACTORING_resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) if(dynamic_chassis_sit && ("sit") in states) icon_state = "sit" else if(dynamic_chassis_bellyup && ("bellyup") in states) From 350c5aa06074bb66b1e712e632fbd5bcc76a7a4e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 00:18:40 -0700 Subject: [PATCH 31/92] compile --- code/datums/action.dm | 3 ++- code/datums/emotes.dm | 3 ++- code/datums/martial/sleeping_carp.dm | 2 +- code/game/mecha/mecha.dm | 4 ++-- .../antagonists/bloodsucker/objects/bloodsucker_crypt.dm | 2 +- code/modules/fields/timestop.dm | 4 ++-- code/modules/mob/living/carbon/alien/alien_defense.dm | 9 +++++---- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/species.dm | 2 +- code/modules/mob/living/living.dm | 1 - .../mob/living/silicon/robot/dogborg_equipment.dm | 2 +- 11 files changed, 18 insertions(+), 16 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index 40532987fd..78c9aa8467 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -97,7 +97,8 @@ /datum/action/proc/IsAvailable() if(!owner) return FALSE - if(!CHECK_ALL_MOBILITY(owner, required_mobility_flags)) + var/mob/living/L = owner + if(istype(L) && !CHECK_ALL_MOBILITY(L, required_mobility_flags)) return FALSE if(check_flags & AB_CHECK_RESTRAINED) if(owner.restrained()) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index ce280c5864..da571bf51d 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -117,7 +117,8 @@ if(DEAD) to_chat(user, "You cannot [key] while dead.") return FALSE - if(restraint_check && !CHECK_MOBILITY(user, MOBILITY_MOVE)) + var/mob/living/L = user + if(restraint_check && (istype(L) && !CHECK_MOBILITY(user, MOBILITY_USE))) if(!intentional) return FALSE to_chat(user, "You cannot [key] while stunned.") diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 1860c0a0e9..9bb4a73f77 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -227,7 +227,7 @@ H.visible_message("[H] collapses!", \ "Your legs give out!") H.DefaultCombatKnockdown(80) - if(H.staminaloss && !_REFACTORING_H.IsSleeping()) + if(H.staminaloss && !H._REFACTORING_IsSleeping()) var/total_health = (H.health - H.staminaloss) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 7e860d9315..c19242be3f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -750,7 +750,7 @@ AI.cancel_camera() AI.controlled_mech = src AI.remote_control = src - AI.canmove = 1 //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. + AI.mobility_flags = MOBILIITY_FLAG_DEFAULT //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. AI.can_shunt = 0 //ONE AI ENTERS. NO AI LEAVES. to_chat(AI, AI.can_dominate_mechs ? "Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!" :\ "You have been uploaded to a mech's onboard computer.") @@ -922,7 +922,7 @@ brainmob.forceMove(src) //should allow relaymove brainmob.reset_perspective(src) brainmob.remote_control = src - brainmob.update_canmove() + brainmob.update_mobility() brainmob.update_mouse_pointer() icon_state = initial(icon_state) update_icon() diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index 3493622945..8fab1408e4 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -205,7 +205,7 @@ buckled_mob.pixel_y = buckled_mob.get_standard_pixel_y_offset(180) src.visible_message(text("[buckled_mob][buckled_mob.stat==DEAD?"'s corpse":""] slides off of the rack.")) density = FALSE - buckled_mob.AdjustKnockdown(30) + buckled_mob.DefaultCombatKnockdown(30) update_icon() useLock = FALSE // Failsafe diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm index a063296edf..bc56fe3a49 100644 --- a/code/modules/fields/timestop.dm +++ b/code/modules/fields/timestop.dm @@ -135,7 +135,7 @@ if(L.anti_magic_check(check_anti_magic, check_holy)) immune += L return - L.Stun(20, 1, 1) + L._REFACTORING_Stun(20, TRUE, TRUE) frozen_mobs[L] = L.anchored L.anchored = TRUE global_frozen_atoms[L] = TRUE @@ -146,7 +146,7 @@ /datum/proximity_monitor/advanced/timestop/proc/unfreeze_mob(mob/living/L) escape_the_negative_zone(L) - L.AdjustStun(-20, 1, 1) + L._REFACTORING_AdjustStun(-20, TRUE, TRUE) L.anchored = frozen_mobs[L] frozen_mobs -= L global_frozen_atoms -= L diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index 2d146e396f..dc6d3a36fb 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -22,10 +22,11 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) if (INTENT_HELP) if(!recoveringstam) - SetResting(FALSE, TRUE) - AdjustAllImmobility(-60) - AdjustUnconscious(-60) - AdjustSleeping(-100) + set_resting(FALSE, TRUE, FALSE) + AdjustAllImmobility(-60, FALSE) + AdjustUnconscious(-60, FALSE) + AdjustSleeping(-100, FALSE) + update_mobililty() visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") if(INTENT_DISARM, INTENT_HARM) if(health > 0) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ef985194fc..fc9985b050 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -885,7 +885,7 @@ if(do_after(src, 30, TRUE, target)) //Second check to make sure they're still valid to be carried if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE)) - target.resting = FALSE + target.set_resting(FALSE, TRUE) buckle_mob(target, TRUE, TRUE, 90, 1, 0) return visible_message("[src] fails to fireman carry [target]!") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 422bd3546d..e3928fbdf2 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1370,7 +1370,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return TRUE if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) - if(!H.IsKnockdown()) + if(CHECK_MOBILITY(H, MOBILITY_STAND)) H.emote("collapse") H.DefaultCombatKnockdown(RAD_MOB_KNOCKDOWN_AMOUNT) to_chat(H, "You feel weak.") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index bc99607323..6018774e5c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -422,7 +422,6 @@ else if(alert(src, "You sure you want to sleep for a while?", "Sleep", "Yes", "No") == "Yes") SetSleeping(400) //Short nap - update_canmove() /mob/proc/get_contents() diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index e6a6aba3a2..bf16a3e94d 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -446,4 +446,4 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! leaping = 0 pixel_y = initial(pixel_y) update_icons() - update_canmove() + update_mobility() From 1d184b8cad9afe2a98385b9f950c8a50f913b1e5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 00:21:21 -0700 Subject: [PATCH 32/92] s --- code/datums/action.dm | 4 ++-- code/game/machinery/_machinery.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/structures.dm | 2 +- code/modules/surgery/organs/vocal_cords.dm | 9 +++++---- .../modules/mob/living/silicon/robot/robot_movement.dm | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index 78c9aa8467..00a8e8513d 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -104,10 +104,10 @@ if(owner.restrained()) return FALSE if(check_flags & AB_CHECK_STUN) - if(!CHECK_MOBILITY(owner, MOBILITY_USE)) + if(istype(L) && !CHECK_MOBILITY(L, MOBILITY_USE)) return FALSE if(check_flags & AB_CHECK_LYING) - if(!CHECK_MOBILITY(owner, MOBILITY_STAND)) + if(istype(L) && !CHECK_MOBILITY(L, MOBILITY_STAND)) return FALSE if(check_flags & AB_CHECK_CONSCIOUS) if(owner.stat) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 5f44fccdac..3bbd54e6d4 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -180,7 +180,7 @@ Class Procs: A.forceMove(T) if(isliving(A)) var/mob/living/L = A - L.update_canmove() + L.update_mobility() if(occupant) SEND_SIGNAL(src, COMSIG_MACHINE_EJECT_OCCUPANT, occupant) occupant = null diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c19242be3f..7f62e76c3f 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -750,7 +750,7 @@ AI.cancel_camera() AI.controlled_mech = src AI.remote_control = src - AI.mobility_flags = MOBILIITY_FLAG_DEFAULT //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. + AI.mobility_flags = MOBILITY_FLAG_DEFAULT //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. AI.can_shunt = 0 //ONE AI ENTERS. NO AI LEAVES. to_chat(AI, AI.can_dominate_mechs ? "Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!" :\ "You have been uploaded to a mech's onboard computer.") diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index e8f8d5a3a6..493a11d27b 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -46,7 +46,7 @@ return if(user == O && iscarbon(O)) var/mob/living/L = O - if(CHECK_MOBILITY(O, MOBILITY_MOVE)) + if(CHECK_MOBILITY(L, MOBILITY_MOVE)) climb_structure(user) return if(!istype(O, /obj/item) || user.get_active_held_item() != O) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 15ed883734..dfdec70cad 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -491,10 +491,11 @@ cooldown = COOLDOWN_DAMAGE //because stun removal for(var/V in listeners) var/mob/living/L = V - if(L.resting) - L.lay_down() //aka get up - L.SetAllImmobility(0) - L.SetUnconscious(0) //i said get up i don't care if you're being tased + if(L._REFACTORING_resting) + L.set_resting(FALSE, FALSE, FALSE) + L.SetAllImmobility(0, FALSE) + L.SetUnconscious(0, FALSE) //i said get up i don't care if you're being tased + L.update_mobility() //SIT else if((findtext(message, sit_words))) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index 526ea497c4..eb28b610f9 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -6,7 +6,7 @@ /mob/living/silicon/robot/movement_delay() . = ..() - if(!resting && !sprinting) + if(!_REFACTORING_resting && !sprinting) . += 1 . += speed From b22e1a1cb475edf7f654d9ae1bd03c429f7e3d10 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 02:27:35 -0700 Subject: [PATCH 33/92] compile --- code/__HELPERS/time.dm | 3 +++ code/datums/brain_damage/severe.dm | 2 +- code/game/machinery/pipe/pipe_dispenser.dm | 3 ++- code/game/mecha/mecha.dm | 2 +- code/game/objects/items/robot/robot_parts.dm | 3 +-- code/modules/mob/dead/observer/observer.dm | 2 +- code/modules/mob/living/carbon/alien/alien_defense.dm | 2 +- code/modules/mob/living/silicon/robot/robot_defense.dm | 2 +- code/modules/mob/living/simple_animal/friendly/cat.dm | 4 ++-- code/modules/mob/living/status_procs.dm | 2 +- code/modules/vehicles/cars/car.dm | 4 ++-- modular_citadel/code/datums/status_effects/chems.dm | 2 +- 12 files changed, 17 insertions(+), 14 deletions(-) diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index f0d5a7b252..1cb16b9a79 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -81,3 +81,6 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) if(!wtime) wtime = world.time return time2text(wtime - GLOB.timezoneOffset, format) + +/proc/station_time_timestamp(format = "hh:mm:ss", wtime) + return time2text(station_time(TRUE, wtime), format) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 0e08c4cd15..1bd27ed583 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -132,7 +132,7 @@ /datum/brain_trauma/severe/narcolepsy/on_life() ..() - if(owner.IsSleeping()) + if(owner._REFACTORING_IsSleeping()) return var/sleep_chance = 1 if(owner.m_intent == MOVE_INTENT_RUN) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 25a41b9f94..49c50c96b3 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -34,7 +34,8 @@ /obj/machinery/pipedispenser/Topic(href, href_list) if(..()) return 1 - if(!anchored|| !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + var/mob/living/L = usr + if(!anchored || !istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) usr << browse(null, "window=pipedispenser") return 1 usr.set_machine(src) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 7f62e76c3f..53cc18ff03 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -750,7 +750,7 @@ AI.cancel_camera() AI.controlled_mech = src AI.remote_control = src - AI.mobility_flags = MOBILITY_FLAG_DEFAULT //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. + AI.mobility_flags = MOBILITY_FLAGS_DEFAULT //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. AI.can_shunt = 0 //ONE AI ENTERS. NO AI LEAVES. to_chat(AI, AI.can_dominate_mechs ? "Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!" :\ "You have been uploaded to a mech's onboard computer.") diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index ac4f3e1d49..e2fdb66ecf 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -356,8 +356,7 @@ forceMove(O) O.robot_suit = src if(!locomotion) - O.locked_down = TRUE - O.update_canmove() + O.SetLockdown(TRUE) else if(istype(W, /obj/item/pen)) to_chat(user, "You need to use a multitool to name [src]!") diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 0846cf1ea1..7e5ce3f04f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -11,7 +11,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) layer = GHOST_LAYER stat = DEAD density = FALSE - canmove = 0 + mobility_flags = NONE anchored = TRUE // don't get pushed around see_invisible = SEE_INVISIBLE_OBSERVER see_in_dark = 100 diff --git a/code/modules/mob/living/carbon/alien/alien_defense.dm b/code/modules/mob/living/carbon/alien/alien_defense.dm index dc6d3a36fb..bc46608f07 100644 --- a/code/modules/mob/living/carbon/alien/alien_defense.dm +++ b/code/modules/mob/living/carbon/alien/alien_defense.dm @@ -26,7 +26,7 @@ In all, this is a lot like the monkey code. /N AdjustAllImmobility(-60, FALSE) AdjustUnconscious(-60, FALSE) AdjustSleeping(-100, FALSE) - update_mobililty() + update_mobility() visible_message("[M.name] nuzzles [src] trying to wake [p_them()] up!") if(INTENT_DISARM, INTENT_HARM) if(health > 0) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 259e2ac953..d45feff48b 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -136,7 +136,7 @@ /mob/living/silicon/robot/proc/beep_boop_rogue_bot(mob/user) SetEmagged(1) - SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown + _REFACTORING_SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown lawupdate = 0 connected_ai = null message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.") diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index c6f5443965..2cde5894a5 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -38,8 +38,8 @@ . = ..() verbs += /mob/living/proc/lay_down -/mob/living/simple_animal/pet/cat/update_canmove() - ..() +/mob/living/simple_animal/pet/cat/update_mobility() + . = ..() if(client && stat != DEAD) if(!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) icon_state = "[icon_living]_rest" diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 608db74204..0faa047a94 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -545,7 +545,7 @@ emote("deathgasp") ADD_TRAIT(src, TRAIT_FAKEDEATH, source) ADD_TRAIT(src, TRAIT_DEATHCOMA, source) - tod = station_time_timestamp() + tod = gameTimestamp() update_stat() /mob/living/proc/unignore_slowdown(source) diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm index d4437e17d5..dc6cccb9a9 100644 --- a/code/modules/vehicles/cars/car.dm +++ b/code/modules/vehicles/cars/car.dm @@ -29,8 +29,8 @@ last_enginesound_time = world.time playsound(src, engine_sound, 100, TRUE) -/obj/vehicle/sealed/car/MouseDrop_T(atom/dropping, mob/M) - if(!M.canmove || M.stat || M.restrained()) +/obj/vehicle/sealed/car/MouseDrop_T(atom/dropping, mob/living/M) + if(!istype(M) || !CHECK_MOBILITY(M, MOBILITY_USE)) return FALSE if(isliving(dropping) && M != dropping) var/mob/living/L = dropping diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 08e5a762a3..e7182f7a7a 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -652,7 +652,7 @@ if (HAS_TRAIT(C, TRAIT_NYMPHO) && lewd) if (C.getArousalLoss() > 80) C.mob_climax(forced_climax=TRUE) - C.SetStun(10)//We got your stun effects in somewhere, Kev. + C._REFACTORING_SetStun(10)//We got your stun effects in somewhere, Kev. else C.adjustArousalLoss(10) to_chat(C, "You feel a surge of arousal!") From 14aaca8fa54d22b381e10924b35c1515ce91b03f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 19:18:54 -0700 Subject: [PATCH 34/92] compile --- code/__HELPERS/mobs.dm | 7 ++++++- code/__HELPERS/time.dm | 3 --- code/datums/emotes.dm | 2 +- code/datums/mutations/body.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/modules/antagonists/bloodsucker/powers/bs_feed.dm | 2 +- code/modules/antagonists/bloodsucker/powers/bs_lunge.dm | 3 ++- code/modules/antagonists/wizard/equipment/soulstone.dm | 4 ++-- code/modules/fields/timestop.dm | 2 +- code/modules/flufftext/Hallucination.dm | 4 ++-- code/modules/mob/dead/observer/observer.dm | 1 - code/modules/mob/living/simple_animal/bot/ed209bot.dm | 2 +- code/modules/reagents/chemistry/reagents/other_reagents.dm | 2 +- 13 files changed, 19 insertions(+), 17 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 71c5570961..66cdda57f5 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -387,6 +387,7 @@ GLOBAL_LIST_EMPTY(species_list) var/endtime = world.time + delay var/starttime = world.time . = 1 + var/mob/living/L = isliving(user) && user //evals to last thing eval'd while (world.time < endtime) stoplag(1) if (progress) @@ -396,7 +397,11 @@ GLOBAL_LIST_EMPTY(species_list) drifting = 0 Uloc = user.loc - if(QDELETED(user) || user.stat || !CHECK_ALL_MOBILITY(user, required_mobility_flags) || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) + if(L && !CHECK_ALL_MOBILITY(L, required_mobility_flags)) + . = 0 + break + + if(QDELETED(user) || user.stat || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke())) . = 0 break diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 1cb16b9a79..f0d5a7b252 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -81,6 +81,3 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) if(!wtime) wtime = world.time return time2text(wtime - GLOB.timezoneOffset, format) - -/proc/station_time_timestamp(format = "hh:mm:ss", wtime) - return time2text(station_time(TRUE, wtime), format) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index da571bf51d..5d3ab3afb1 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -118,7 +118,7 @@ to_chat(user, "You cannot [key] while dead.") return FALSE var/mob/living/L = user - if(restraint_check && (istype(L) && !CHECK_MOBILITY(user, MOBILITY_USE))) + if(restraint_check && (istype(L) && !CHECK_MOBILITY(L, MOBILITY_USE))) if(!intentional) return FALSE to_chat(user, "You cannot [key] while stunned.") diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index a32220aa43..a3eddc79c9 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -99,7 +99,7 @@ text_gain_indication = "You twitch." /datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) - if(prob(10) && owner.stat == CONSCIOUS && !owner.IsStun()) + if(prob(10) && owner.stat == CONSCIOUS && !owner._REFACTORING_IsStun()) owner.Stun(200) switch(rand(1, 3)) if(1) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 53cc18ff03..54b7663012 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -988,7 +988,7 @@ L.reset_perspective() mmi.mecha = null mmi.update_icon() - L.canmove = 0 + L.mobility_flags = NONE icon_state = initial(icon_state)+"-open" setDir(dir_in) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm index 03ac85cc0c..31887bd7c0 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_feed.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_feed.dm @@ -321,4 +321,4 @@ // My mouth is no longer full REMOVE_TRAIT(owner, TRAIT_MUTE, "bloodsucker_feed") // Let me move immediately - user.update_canmove() + user.update_mobility() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index a4869923ff..142c2e01b8 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -61,7 +61,8 @@ walk_towards(owner, T, 0.1, 10) // NOTE: this runs in the background! to cancel it, you need to use walk(owner.current,0), or give them a new path. addtimer(CALLBACK(owner, .proc/_walk, 0), 2 SECONDS) - if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(owner, MOBILITY_STAND)) + var/mob/living/L = owner + if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(L, MOBILITY_STAND)) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 4eb1e33bc2..0f43dfaf3a 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -240,8 +240,8 @@ T.dust_animation() QDEL_IN(T, 5) var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) - S.status_flags |= GODMODE //So they won't die inside the stone somehow - S.canmove = FALSE//Can't move out of the soul stone + S.status_flags |= GODMODE //So they won't die inside the stone somehow + S.mobility_flags = NONE //Can't move out of the soul stone S.name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]" T.transfer_ckey(S) diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm index bc56fe3a49..3e13d251bd 100644 --- a/code/modules/fields/timestop.dm +++ b/code/modules/fields/timestop.dm @@ -135,7 +135,7 @@ if(L.anti_magic_check(check_anti_magic, check_holy)) immune += L return - L._REFACTORING_Stun(20, TRUE, TRUE) + L.Stun(20, TRUE, TRUE) frozen_mobs[L] = L.anchored L.anchored = TRUE global_frozen_atoms[L] = TRUE diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index b3005dbb0d..6111535764 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1136,7 +1136,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( set waitfor = FALSE ..() target.set_screwyhud(SCREWYHUD_DEAD) - target.DefaultCombatKnockdown(300) + target._REFACTORING_Knockdown(300) target.silent += 10 to_chat(target, "[target.real_name] has died at [get_area_name(target)].") if(prob(50)) @@ -1154,7 +1154,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( "i[prob(50)?" fucking":""] hate [pick("blood cult", "clock cult", "revenants", "this round","this","myself","admins","you")]")]\"") sleep(rand(70,90)) target.set_screwyhud(SCREWYHUD_NONE) - target.SetKnockdown(0) + target._REFACTORING_SetKnockdown(0) target.silent = FALSE qdel(src) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 7e5ce3f04f..54f4f91c41 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -11,7 +11,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) layer = GHOST_LAYER stat = DEAD density = FALSE - mobility_flags = NONE anchored = TRUE // don't get pushed around see_invisible = SEE_INVISIBLE_OBSERVER see_in_dark = 100 diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index bb94dbd0f1..5ba2584274 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -527,7 +527,7 @@ Auto Patrol[]"}, return if(iscarbon(A)) var/mob/living/carbon/C = A - if(C.canmove || arrest_type) // CIT CHANGE - makes sentient ed209s check for canmove rather than !isstun. + if(CHECK_MOBILITY(C, MOBILITY_STAND|MOBILITY_MOVE|MOBILITY_USE) || arrest_type) // CIT CHANGE - makes sentient ed209s check for canmove rather than !isstun. stun_attack(A) else if(C.canBeHandcuffed() && !C.handcuffed) cuff(A) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ad23ab2d1b..511eb6aa88 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1055,7 +1055,7 @@ pH = 11.3 /datum/reagent/lithium/on_mob_life(mob/living/carbon/M) - if(M.canmove && !isspaceturf(M.loc)) + if(CHECK_MOBILITY(M, MOBILITY_MOVE) && !isspaceturf(M.loc)) step(M, pick(GLOB.cardinals)) if(prob(5)) M.emote(pick("twitch","drool","moan")) From b505c1e08717d749512ee90569ddee1dd4ebd3a8 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 19:22:47 -0700 Subject: [PATCH 35/92] WEH --- code/__HELPERS/mobs.dm | 6 ------ code/modules/mob/living/living_mobility.dm | 5 +++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 66cdda57f5..af516d87cd 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -405,12 +405,6 @@ GLOBAL_LIST_EMPTY(species_list) . = 0 break - if(isliving(user)) - var/mob/living/L = user - if(L.recoveringstam) - . = 0 - break - if(!QDELETED(Tloc) && (QDELETED(target) || Tloc != target.loc)) if((Uloc != Tloc || Tloc != user) && !drifting) . = 0 diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 9c2881ae48..25263430b9 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -153,8 +153,9 @@ if(!(mobility_flags & MOBILITY_UI)) unset_machine() - if(pulledby) - pulledby.update_pull_movespeed() + if(isliving(pulledby)) + var/mob/living/L = pulledby + L.update_pull_movespeed() //Handle lying down, voluntary or involuntary density = !lying From 2ba226b9129f2aa9e8fe9eda22dd76aec2d7f67a Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 20:57:02 -0700 Subject: [PATCH 36/92] aa --- code/__HELPERS/mobs.dm | 2 +- code/modules/mob/living/living_mobility.dm | 6 +++--- code/modules/mob/mob_movement.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index af516d87cd..663a53ab87 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -359,7 +359,7 @@ GLOBAL_LIST_EMPTY(species_list) checked_health["health"] = health return ..() -/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_STAND|MOBILITY_USE|MOBILITY_MOVE)) +/proc/do_after(mob/user, var/delay, needhand = 1, atom/target = null, progress = 1, datum/callback/extra_checks = null, required_mobility_flags = (MOBILITY_USE|MOBILITY_MOVE)) if(!user) return 0 var/atom/Tloc = null diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 25263430b9..e437ea9781 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -98,13 +98,13 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() var/pinned = _REFACTORING_resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned + var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam if(canmove) mobility_flags |= MOBILITY_MOVE else mobility_flags &= ~MOBILITY_MOVE - var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) + var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) || !recoveringstam var/canstand = canstand_involuntary && !_REFACTORING_resting var/should_be_lying = !canstand @@ -128,7 +128,7 @@ else mobility_flags |= MOBILITY_UI|MOBILITY_PULL - var/canitem_general = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms + var/canitem_general = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms && !recoveringstam if(canitem_general) mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE | MOBILITY_HOLD) else diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 864200dd2b..e959464be7 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -75,7 +75,7 @@ if(mob.buckled) //if we're buckled to something, tell it we moved. return mob.buckled.relaymove(mob, direct) - if(!CHECK_BITFIELD(mob, MOBILITY_MOVE)) + if(!CHECK_MOBILITY(L, MOBILITY_MOVE)) return FALSE if(isobj(mob.loc) || ismob(mob.loc)) //Inside an object, tell it we moved From 9ef4cbfa7684894a47177e5f85de54d938369cd6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 20:58:00 -0700 Subject: [PATCH 37/92] refactor tags --- code/_onclick/cyborg.dm | 2 +- code/_onclick/hud/screen_objects.dm | 2 +- code/datums/brain_damage/severe.dm | 2 +- code/datums/components/butchering.dm | 2 +- code/datums/diseases/advance/symptoms/heal.dm | 4 +- code/datums/martial/sleeping_carp.dm | 2 +- code/datums/mutations/body.dm | 2 +- .../machinery/porta_turret/portable_turret.dm | 2 +- code/game/objects/items/robot/robot_items.dm | 2 +- .../bloodsucker/items/bloodsucker_stake.dm | 2 +- .../bloodsucker/powers/bs_haste.dm | 2 +- code/modules/clothing/head/misc_special.dm | 2 +- .../modules/clothing/spacesuits/chronosuit.dm | 2 +- code/modules/fields/timestop.dm | 2 +- code/modules/flufftext/Hallucination.dm | 4 +- .../carbon/alien/humanoid/update_icons.dm | 2 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../living/carbon/alien/larva/update_icons.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 4 +- .../living/carbon/monkey/monkey_defense.dm | 2 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_mobility.dm | 22 +++--- .../mob/living/silicon/pai/pai_shell.dm | 2 +- .../mob/living/silicon/pai/update_icon.dm | 4 +- .../modules/mob/living/silicon/robot/robot.dm | 8 +- .../mob/living/silicon/robot/robot_defense.dm | 2 +- .../living/silicon/robot/robot_mobility.dm | 2 +- .../mob/living/simple_animal/bot/firebot.dm | 4 +- .../mob/living/simple_animal/bot/honkbot.dm | 2 +- .../mob/living/simple_animal/bot/medbot.dm | 4 +- .../mob/living/simple_animal/friendly/cat.dm | 2 +- .../mob/living/simple_animal/friendly/crab.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/living/status_procs.dm | 74 +++++++++---------- code/modules/mob/mob_defines.dm | 2 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +- code/modules/spells/spell.dm | 4 +- code/modules/surgery/organs/vocal_cords.dm | 28 +++---- .../code/datums/status_effects/chems.dm | 2 +- .../code/modules/mob/living/carbon/carbon.dm | 2 +- .../living/silicon/robot/robot_movement.dm | 2 +- 42 files changed, 114 insertions(+), 114 deletions(-) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index f3e6456332..2fb63e3706 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -14,7 +14,7 @@ if(check_click_intercept(params,A)) return - if(stat || locked_down || IsParalyzed() || _REFACTORING_IsStun() || _REFACTORING_IsUnconscious()) + if(stat || locked_down || IsParalyzed() || IsStun() || IsUnconscious()) return var/list/modifiers = params2list(params) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index d9413b177a..dec743d35c 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -406,7 +406,7 @@ var/mob/living/user = hud?.mymob if(!istype(user)) return - if(!user._REFACTORING_resting) + if(!user.resting) icon_state = "act_rest" else icon_state = "act_rest0" diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 1bd27ed583..0e08c4cd15 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -132,7 +132,7 @@ /datum/brain_trauma/severe/narcolepsy/on_life() ..() - if(owner._REFACTORING_IsSleeping()) + if(owner.IsSleeping()) return var/sleep_chance = 1 if(owner.m_intent == MOVE_INTENT_RUN) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 3d5aa5261a..06169f64bf 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -32,7 +32,7 @@ if(ishuman(M) && source.force && source.get_sharpness()) var/mob/living/carbon/human/H = M - if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H._REFACTORING_IsSleeping()) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) // Only sleeping, neck grabbed, or crit, can be sliced. + if((H.health <= H.crit_threshold || (user.pulling == H && user.grab_state >= GRAB_NECK) || H.IsSleeping()) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) // Only sleeping, neck grabbed, or crit, can be sliced. if(H.has_status_effect(/datum/status_effect/neck_slice)) user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", 1, \ "Their neck has already been already cut, you can't make the bleeding any worse!") diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 5bd48b132b..2a42c8f207 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -253,11 +253,11 @@ var/mob/living/M = A.affected_mob if(HAS_TRAIT(M, TRAIT_DEATHCOMA)) return power - else if(M._REFACTORING_IsUnconscious() || M.stat == UNCONSCIOUS) + else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) return power * 0.9 else if(M.stat == SOFT_CRIT) return power * 0.5 - else if(M._REFACTORING_IsSleeping()) + else if(M.IsSleeping()) return power * 0.25 else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) to_chat(M, "You feel yourself slip into a regenerative coma...") diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 9bb4a73f77..9aab8b7c47 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -227,7 +227,7 @@ H.visible_message("[H] collapses!", \ "Your legs give out!") H.DefaultCombatKnockdown(80) - if(H.staminaloss && !H._REFACTORING_IsSleeping()) + if(H.staminaloss && !H.IsSleeping()) var/total_health = (H.health - H.staminaloss) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index a3eddc79c9..a32220aa43 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -99,7 +99,7 @@ text_gain_indication = "You twitch." /datum/mutation/human/tourettes/on_life(mob/living/carbon/human/owner) - if(prob(10) && owner.stat == CONSCIOUS && !owner._REFACTORING_IsStun()) + if(prob(10) && owner.stat == CONSCIOUS && !owner.IsStun()) owner.Stun(200) switch(rand(1, 3)) if(1) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 9d9e5d14d8..8c2a04bfbc 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -545,7 +545,7 @@ var/obj/item/projectile/A //any emagged turrets drains 2x power and uses a different projectile? if(mode == TURRET_STUN) - if(nonlethal_projectile && C && C._REFACTORING_resting) + if(nonlethal_projectile && C && C.resting) use_power(reqpower*0.5) A = new nonlethal_projectile(T) playsound(loc, nonlethal_projectile_sound, 75, 1) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index adb2d14acf..b01353a2dc 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -80,7 +80,7 @@ else user.visible_message("[user] hugs [M] to make [M.p_them()] feel better!", \ "You hug [M] to make [M.p_them()] feel better!") - if(M._REFACTORING_resting && !M.recoveringstam) + if(M.resting && !M.recoveringstam) M.set_resting(FALSE, TRUE) else user.visible_message("[user] pets [M]!", \ diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm index 15370a5473..6d6e2282c3 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm @@ -14,7 +14,7 @@ return FALSE /mob/living/proc/StakeCanKillMe() - return _REFACTORING_IsSleeping() || stat >= UNCONSCIOUS || blood_volume <= 0 || HAS_TRAIT(src, TRAIT_DEATHCOMA) // NOTE: You can't go to sleep in a coffin with a stake in you. + return IsSleeping() || stat >= UNCONSCIOUS || blood_volume <= 0 || HAS_TRAIT(src, TRAIT_DEATHCOMA) // NOTE: You can't go to sleep in a coffin with a stake in you. /obj/item/stake name = "wooden stake" diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index 0b666baaa3..c16b8ff9cc 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -71,7 +71,7 @@ if (rand(0, 5) < level_current) playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) newtarget.DefaultCombatKnockdown(10 + level_current * 5) - if(newtarget._REFACTORING_IsStun()) + if(newtarget.IsStun()) newtarget.spin(10,1) if (rand(0,4)) newtarget.drop_all_held_items() diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 25498b6d92..127bf4c773 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -282,7 +282,7 @@ if(target.get_item_by_slot(SLOT_HEAD) != src) return QDEL_NULL(paranoia) - if(!target._REFACTORING_IsUnconscious()) + if(!target.IsUnconscious()) to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") /obj/item/clothing/head/foilhat/attack_hand(mob/user) diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 542a9d642d..2a5960086b 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -87,7 +87,7 @@ if(istype(user)) if(to_turf) user.forceMove(to_turf) - user._REFACTORING_SetStun(0) + user.SetStun(0) user.next_move = 1 user.alpha = 255 user.update_atom_colour() diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm index 3e13d251bd..fdf4ac9c9e 100644 --- a/code/modules/fields/timestop.dm +++ b/code/modules/fields/timestop.dm @@ -146,7 +146,7 @@ /datum/proximity_monitor/advanced/timestop/proc/unfreeze_mob(mob/living/L) escape_the_negative_zone(L) - L._REFACTORING_AdjustStun(-20, TRUE, TRUE) + L.AdjustStun(-20, TRUE, TRUE) L.anchored = frozen_mobs[L] frozen_mobs -= L global_frozen_atoms -= L diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 6111535764..93fecae641 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1136,7 +1136,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( set waitfor = FALSE ..() target.set_screwyhud(SCREWYHUD_DEAD) - target._REFACTORING_Knockdown(300) + target.Knockdown(300) target.silent += 10 to_chat(target, "[target.real_name] has died at [get_area_name(target)].") if(prob(50)) @@ -1154,7 +1154,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( "i[prob(50)?" fucking":""] hate [pick("blood cult", "clock cult", "revenants", "this round","this","myself","admins","you")]")]\"") sleep(rand(70,90)) target.set_screwyhud(SCREWYHUD_NONE) - target._REFACTORING_SetKnockdown(0) + target.SetKnockdown(0) target.silent = FALSE qdel(src) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index ae2ee87ae6..c03df169fa 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -4,7 +4,7 @@ for(var/I in overlays_standing) add_overlay(I) - var/asleep = _REFACTORING_IsSleeping() + var/asleep = IsSleeping() if(stat == DEAD) //If we mostly took damage from fire if(fireloss > 125) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index d63f156d9e..81b76c1720 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -18,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(_REFACTORING_IsUnconscious() || _REFACTORING_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || health <= crit_threshold) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index 4272c763a9..d1c9fa7cde 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -14,9 +14,9 @@ icon_state = "larva[state]_dead" else if(handcuffed || legcuffed) //This should be an overlay. Who made this an icon_state? icon_state = "larva[state]_cuff" - else if(stat == UNCONSCIOUS || lying || _REFACTORING_resting) + else if(stat == UNCONSCIOUS || lying || resting) icon_state = "larva[state]_sleep" - else if(_REFACTORING_IsStun() || IsParalyzed()) + else if(IsStun() || IsParalyzed()) icon_state = "larva[state]_stun" else icon_state = "larva[state]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1319f16595..6a1a8b6b69 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -803,7 +803,7 @@ if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH)) death() return - if(_REFACTORING_IsUnconscious() || _REFACTORING_IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) stat = UNCONSCIOUS blind_eyes(1) if(combatmode) @@ -965,7 +965,7 @@ return FALSE if(hallucinating()) return TRUE - if(_REFACTORING_IsSleeping()) + if(IsSleeping()) return TRUE if(HAS_TRAIT(src, TRAIT_DUMB)) return TRUE diff --git a/code/modules/mob/living/carbon/monkey/monkey_defense.dm b/code/modules/mob/living/carbon/monkey/monkey_defense.dm index b2a923cc49..3fd0001a12 100644 --- a/code/modules/mob/living/carbon/monkey/monkey_defense.dm +++ b/code/modules/mob/living/carbon/monkey/monkey_defense.dm @@ -79,7 +79,7 @@ visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!", null, COMBAT_MESSAGE_RANGE) if(INTENT_DISARM) - if(!_REFACTORING_IsUnconscious()) + if(!IsUnconscious()) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) if (prob(25)) DefaultCombatKnockdown(40) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 6018774e5c..ce483a99b5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -416,7 +416,7 @@ set name = "Sleep" set category = "IC" - if(_REFACTORING_IsSleeping()) + if(IsSleeping()) to_chat(src, "You are already sleeping.") return else @@ -674,7 +674,7 @@ if(on_fire) resist_fire() //stop, drop, and roll return - if(_REFACTORING_resting) //cit change - allows resisting out of resting + if(resting) //cit change - allows resisting out of resting resist_a_rest() // ditto return if(resist_embedded()) //Citadel Change for embedded removal memes diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index e437ea9781..b379410b7e 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -2,9 +2,9 @@ //Force-set resting variable, without needing to resist/etc. /mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE) - _REFACTORING_resting = new_resting + resting = new_resting if(!silent) - to_chat(src, "You are now [_REFACTORING_resting? "resting" : "getting up"].") + to_chat(src, "You are now [resting? "resting" : "getting up"].") update_resting(updating) /mob/living/proc/update_resting(update_mobility = TRUE) @@ -25,20 +25,20 @@ set category = "IC" if(client?.prefs?.autostand) intentionalresting = !intentionalresting - to_chat(src, "You are now attempting to [intentionalresting ? "[!_REFACTORING_resting ? "lay down and ": ""]stay down" : "[_REFACTORING_resting ? "get up and ": ""]stay up"].") - if(intentionalresting && !_REFACTORING_resting) + to_chat(src, "You are now attempting to [intentionalresting ? "[!resting ? "lay down and ": ""]stay down" : "[resting ? "get up and ": ""]stay up"].") + if(intentionalresting && !resting) set_resting(TRUE, FALSE) else resist_a_rest() else - if(!_REFACTORING_resting) + if(!resting) set_resting(TRUE, FALSE) to_chat(src, "You are now laying down.") else resist_a_rest() /mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. - if(!_REFACTORING_resting || stat || attemptingstandup) + if(!resting || stat || attemptingstandup) return FALSE if(ignoretimer) set_resting(FALSE, FALSE) @@ -84,20 +84,20 @@ var/stat_softcrit = stat == SOFT_CRIT var/stat_conscious = (stat == CONSCIOUS) || stat_softcrit - var/conscious = !_REFACTORING_IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) + var/conscious = !IsUnconscious() && stat_conscious && !HAS_TRAIT(src, TRAIT_DEATHCOMA) var/has_arms = get_num_arms() var/has_legs = get_num_legs() var/ignore_legs = get_leg_ignore() - var/stun = _REFACTORING_IsStun() + var/stun = IsStun() var/paralyze = IsParalyzed() - var/knockdown = _REFACTORING_IsKnockdown() + var/knockdown = IsKnockdown() var/daze = IsDazed() var/immobilize = IsImmobilized() var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() - var/pinned = _REFACTORING_resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground + var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam if(canmove) @@ -105,7 +105,7 @@ else mobility_flags &= ~MOBILITY_MOVE var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) || !recoveringstam - var/canstand = canstand_involuntary && !_REFACTORING_resting + var/canstand = canstand_involuntary && !resting var/should_be_lying = !canstand if(buckled) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 33aeca8521..fc15d9ce41 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -100,7 +100,7 @@ /mob/living/silicon/pai/lay_down() . = ..() if(loc != card) - visible_message("[src] [_REFACTORING_resting? "lays down for a moment..." : "perks up from the ground"]") + visible_message("[src] [resting? "lays down for a moment..." : "perks up from the ground"]") update_icon() /mob/living/silicon/pai/start_pulling(atom/movable/AM, gs) diff --git a/code/modules/mob/living/silicon/pai/update_icon.dm b/code/modules/mob/living/silicon/pai/update_icon.dm index d52523a367..9e40b71c5d 100644 --- a/code/modules/mob/living/silicon/pai/update_icon.dm +++ b/code/modules/mob/living/silicon/pai/update_icon.dm @@ -7,7 +7,7 @@ icon = dynamic_chassis_icons[dynamic_chassis] var/list/states = icon_states(icon) icon_state = "" - if(_REFACTORING_resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) + if(resting) //The next line is some bullshit but I can make it worse if you want and make it a single line instead of four.. :) if(dynamic_chassis_sit && ("sit") in states) icon_state = "sit" else if(dynamic_chassis_bellyup && ("bellyup") in states) @@ -21,7 +21,7 @@ rotate_on_lying = TRUE else icon = initial(icon) - icon_state = "[chassis][_REFACTORING_resting? "_rest" : (stat == DEAD? "_dead" : "")]" + icon_state = "[chassis][resting? "_rest" : (stat == DEAD? "_dead" : "")]" rotate_on_lying = FALSE pixel_x = ((chassis == "dynamic") && chassis_pixel_offsets_x[dynamic_chassis]) || 0 update_transform() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 825bae00ba..180c06e505 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -675,7 +675,7 @@ if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' pixel_x = initial(pixel_x) - if(stat != DEAD && !(_REFACTORING_IsUnconscious() ||_REFACTORING_IsStun() || _REFACTORING_IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. + if(stat != DEAD && !(IsUnconscious() ||IsStun() || IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. if(!eye_lights) eye_lights = new() if(lamp_intensity > 2) @@ -699,7 +699,7 @@ update_fire() if(client && stat != DEAD && module.dogborg == TRUE) - if(_REFACTORING_resting) + if(resting) if(sitting) icon_state = "[module.cyborg_base_icon]-sit" if(bellyup) @@ -1020,7 +1020,7 @@ if(health <= -maxHealth) //die only once death() return - if(_REFACTORING_IsUnconscious() || _REFACTORING_IsStun() || IsParalyzed() || getOxyLoss() > maxHealth*0.5) + if(IsUnconscious() || IsStun() || IsParalyzed() || getOxyLoss() > maxHealth*0.5) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) @@ -1271,7 +1271,7 @@ /mob/living/silicon/robot/update_mobility() . = ..() if(client && stat != DEAD && dogborg == FALSE) - if(_REFACTORING_resting) + if(resting) cut_overlays() icon_state = "[module.cyborg_base_icon]-rest" else diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index d45feff48b..259e2ac953 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -136,7 +136,7 @@ /mob/living/silicon/robot/proc/beep_boop_rogue_bot(mob/user) SetEmagged(1) - _REFACTORING_SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown + SetStun(60) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown lawupdate = 0 connected_ai = null message_admins("[ADMIN_LOOKUPFLW(user)] emagged cyborg [ADMIN_LOOKUPFLW(src)]. Laws overridden.") diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index 6e0de34d22..e2ec8aeb55 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/update_mobility() var/newflags = NONE if(!stat) - if(!_REFACTORING_resting) + if(!resting) newflags |= MOBILITY_STAND if(!locked_down) newflags |= MOBILITY_MOVE diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index e4fa3236b1..376c6255ad 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -170,7 +170,7 @@ if(!..()) return - if(_REFACTORING_IsStun() || IsParalyzed()) + if(IsStun() || IsParalyzed()) old_target_fire = target_fire target_fire = null mode = BOT_IDLE @@ -287,7 +287,7 @@ if(!on) icon_state = "firebot0" return - if(_REFACTORING_IsStun() || IsParalyzed()) + if(IsStun() || IsParalyzed()) icon_state = "firebots1" else if(stationary_mode) //Bot has yellow light to indicate stationary mode. icon_state = "firebots1" diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 4220f4242d..07bfec986f 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -149,7 +149,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, if (emagged <= 1) honk_attack(A) else - if(!C._REFACTORING_IsStun() || arrest_type) + if(!C.IsStun() || arrest_type) stun_attack(A) ..() else if (!spam_flag) //honking at the ground diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 7b28f591e4..09fde82152 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -86,7 +86,7 @@ if(!on) icon_state = "medibot0" return - if(_REFACTORING_IsStun()) + if(IsStun()) icon_state = "medibota" return if(mode == BOT_HEALING) @@ -278,7 +278,7 @@ if(mode == BOT_HEALING) return - if(_REFACTORING_IsStun()) + if(IsStun()) oldpatient = patient patient = null mode = BOT_IDLE diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 2cde5894a5..fbf2120f23 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -180,7 +180,7 @@ collar_type = "[initial(collar_type)]_sit" set_resting(TRUE) else if (prob(1)) - if (_REFACTORING_resting) + if (resting) emote("me", EMOTE_VISIBLE, pick("gets up and meows.", "walks around.", "stops resting.")) icon_state = "[icon_living]" collar_type = "[initial(collar_type)]" diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 283c9f6ae9..a7e1eae68e 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -26,7 +26,7 @@ ..() //CRAB movement if(!ckey && !stat) - if(isturf(loc) && !_REFACTORING_resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. + if(isturf(loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) var/east_vs_west = pick(4,8) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 4df324d5a8..3377e9d1a2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -418,7 +418,7 @@ ..() /mob/living/simple_animal/update_mobility(value_otherwise = MOBILITY_FLAGS_DEFAULT) - if(_REFACTORING_IsUnconscious() || _REFACTORING_IsStun() || IsParalyzed() || stat || _REFACTORING_resting) + if(IsUnconscious() || IsStun() || IsParalyzed() || stat || resting) drop_all_held_items() mobility_flags = NONE else if(buckled) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0faa047a94..f45b37d9be 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -22,11 +22,11 @@ ////////////////////////////// STUN //////////////////////////////////// -/mob/living/proc/_REFACTORING_IsStun() //If we're stunned +/mob/living/proc/IsStun() //If we're stunned return has_status_effect(STATUS_EFFECT_STUN) -/mob/living/proc/_REFACTORING_AmountStun() //How many deciseconds remain in our stun - var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() +/mob/living/proc/AmountStun() //How many deciseconds remain in our stun + var/datum/status_effect/incapacitating/stun/S = IsStun() if(S) return S.duration - world.time return 0 @@ -37,18 +37,18 @@ if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() + var/datum/status_effect/incapacitating/stun/S = IsStun() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/_REFACTORING_SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() + var/datum/status_effect/incapacitating/stun/S = IsStun() if(amount <= 0) if(S) qdel(S) @@ -61,13 +61,13 @@ S = apply_status_effect(STATUS_EFFECT_STUN, amount, updating) return S -/mob/living/proc/_REFACTORING_AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_STUN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/stun/S = _REFACTORING_IsStun() + var/datum/status_effect/incapacitating/stun/S = IsStun() if(S) S.duration += amount else if(amount > 0) @@ -76,33 +76,33 @@ ///////////////////////////////// KNOCKDOWN ///////////////////////////////////// -/mob/living/proc/_REFACTORING_IsKnockdown() //If we're knocked down +/mob/living/proc/IsKnockdown() //If we're knocked down return has_status_effect(STATUS_EFFECT_KNOCKDOWN) -/mob/living/proc/_REFACTORING_AmountKnockdown() //How many deciseconds remain in our knockdown - var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() +/mob/living/proc/AmountKnockdown() //How many deciseconds remain in our knockdown + var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) return K.duration - world.time return 0 -/mob/living/proc/_REFACTORING_Knockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration +/mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) K.duration = max(world.time + amount, K.duration) else if(amount > 0) K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/_REFACTORING_SetKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration +/mob/living/proc/SetKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(amount <= 0) if(K) qdel(K) @@ -115,13 +115,13 @@ K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) return K -/mob/living/proc/_REFACTORING_AdjustKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration +/mob/living/proc/AdjustKnockdown(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_KNOCKDOWN, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return - var/datum/status_effect/incapacitating/knockdown/K = _REFACTORING_IsKnockdown() + var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) K.duration += amount else if(amount > 0) @@ -290,7 +290,7 @@ //Blanket /mob/living/proc/AllImmobility(amount, updating, ignore_canstun = FALSE) Paralyze(amount, FALSE, ignore_canstun) - _REFACTORING_Knockdown(amount, FALSE, ignore_canstun) + Knockdown(amount, FALSE, ignore_canstun) Stun(amount, FALSE, ignore_canstun) Immobilize(amount, FALSE, ignore_canstun) Daze(amount, FALSE, ignore_canstun) @@ -299,8 +299,8 @@ /mob/living/proc/SetAllImmobility(amount, updating, ignore_canstun = FALSE) SetParalyzed(amount, FALSE, ignore_canstun) - _REFACTORING_SetKnockdown(amount, FALSE, ignore_canstun) - _REFACTORING_SetStun(amount, FALSE, ignore_canstun) + SetKnockdown(amount, FALSE, ignore_canstun) + SetStun(amount, FALSE, ignore_canstun) SetImmobilized(amount, FALSE, ignore_canstun) SetDazed(amount, FALSE, ignore_canstun) if(updating) @@ -308,8 +308,8 @@ /mob/living/proc/AdjustAllImmobility(amount, updating, ignore_canstun = FALSE) AdjustParalyzed(amount, FALSE, ignore_canstun) - _REFACTORING_AdjustKnockdown(amount, FALSE, ignore_canstun) - _REFACTORING_AdjustStun(amount, FALSE, ignore_canstun) + AdjustKnockdown(amount, FALSE, ignore_canstun) + AdjustStun(amount, FALSE, ignore_canstun) AdjustImmobilized(amount, FALSE, ignore_canstun) AdjustDazed(amount, FALSE, ignore_canstun) if(updating) @@ -317,10 +317,10 @@ /// Makes sure all 5 of the non-knockout immobilizing status effects are lower or equal to amount. /mob/living/proc/HealAllImmobilityUpTo(amount, updating, ignore_canstun = FALSE) - if(_REFACTORING_AmountStun() > amount) - _REFACTORING_SetStun(amount, FALSE, ignore_canstun) - if(_REFACTORING_AmountKnockdown() > amount) - _REFACTORING_SetKnockdown(amount, FALSE, ignore_canstun) + if(AmountStun() > amount) + SetStun(amount, FALSE, ignore_canstun) + if(AmountKnockdown() > amount) + SetKnockdown(amount, FALSE, ignore_canstun) if(AmountParalyzed() > amount) SetParalyzed(amount, FALSE, ignore_canstun) if(AmountImmobilized() > amount) @@ -331,14 +331,14 @@ update_mobility() /mob/living/proc/HighestImmobilityAmount() - return max(max(max(max(_REFACTORING_AmountStun(), _REFACTORING_AmountKnockdown()), AmountParalyzed()), AmountImmobilized()), AmountDazed()) + return max(max(max(max(AmountStun(), AmountKnockdown()), AmountParalyzed()), AmountImmobilized()), AmountDazed()) //////////////////UNCONSCIOUS -/mob/living/proc/_REFACTORING_IsUnconscious() //If we're unconscious +/mob/living/proc/IsUnconscious() //If we're unconscious return has_status_effect(STATUS_EFFECT_UNCONSCIOUS) /mob/living/proc/AmountUnconscious() //How many deciseconds remain in our unconsciousness - var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) return U.duration - world.time return 0 @@ -347,7 +347,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) else if(amount > 0) @@ -358,7 +358,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(amount <= 0) if(U) qdel(U) @@ -372,7 +372,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if(((status_flags & CANUNCONSCIOUS) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/unconscious/U = _REFACTORING_IsUnconscious() + var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration += amount else if(amount > 0) @@ -381,11 +381,11 @@ /////////////////////////////////// SLEEPING //////////////////////////////////// -/mob/living/proc/_REFACTORING_IsSleeping() //If we're asleep +/mob/living/proc/IsSleeping() //If we're asleep return has_status_effect(STATUS_EFFECT_SLEEPING) /mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep - var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(S) return S.duration - world.time return 0 @@ -394,7 +394,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(S) S.duration = max(world.time + amount, S.duration) else if(amount > 0) @@ -405,7 +405,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(amount <= 0) if(S) qdel(S) @@ -419,7 +419,7 @@ if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN) return if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun) - var/datum/status_effect/incapacitating/sleeping/S = _REFACTORING_IsSleeping() + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(S) S.duration += amount else if(amount > 0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index df9681489b..9aea4ebf09 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -34,7 +34,7 @@ var/eye_blurry = 0 //Carbon var/real_name = null var/spacewalk = FALSE - var/_REFACTORING_resting = 0 //Carbon + var/resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 0af5e68993..fd28ff9c47 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1898,7 +1898,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L) ..() - if(L._REFACTORING_IsSleeping()) + if(L.IsSleeping()) if(L.bruteloss && L.fireloss) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink. if(prob(50)) L.adjustBruteLoss(-0.25) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 511eb6aa88..a6111ec80b 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -465,7 +465,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustUnconscious(-60, FALSE) M.AdjustAllImmobility(-30, FALSE) - M._REFACTORING_AdjustKnockdown(-40, FALSE) + M.AdjustKnockdown(-40, FALSE) M.adjustStaminaLoss(-15, FALSE) M.adjustToxLoss(-5, FALSE, TRUE) M.adjustOxyLoss(-3, FALSE) @@ -474,7 +474,7 @@ if(iscultist(M)) M.AdjustUnconscious(1, FALSE) M.AdjustAllImmobility(10, FALSE) - M._REFACTORING_AdjustKnockdown(10, FALSE) + M.AdjustKnockdown(10, FALSE) M.adjustStaminaLoss(15, FALSE) else M.adjustToxLoss(3, FALSE) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index e5ccbbc908..22dee60eb4 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -377,9 +377,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if("oxyloss") target.adjustOxyLoss(amount) if("stun") - target._REFACTORING_AdjustStun(amount) + target.AdjustStun(amount) if("knockdown") - target._REFACTORING_AdjustKnockdown(amount) + target.AdjustKnockdown(amount) if("unconscious") target.AdjustUnconscious(amount) else diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index dfdec70cad..66f2ea56c6 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -491,7 +491,7 @@ cooldown = COOLDOWN_DAMAGE //because stun removal for(var/V in listeners) var/mob/living/L = V - if(L._REFACTORING_resting) + if(L.resting) L.set_resting(FALSE, FALSE, FALSE) L.SetAllImmobility(0, FALSE) L.SetUnconscious(0, FALSE) //i said get up i don't care if you're being tased @@ -1114,7 +1114,7 @@ if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) // probably a redundant check but for good measure addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure."), 5) H.mob_climax(forced_climax=TRUE) - H._REFACTORING_SetStun(20) + H.SetStun(20) H.setArousalLoss(H.min_arousal) E.resistanceTally = 0 //makes resistance 0, but resets arousal, resistance buildup is faster unaroused (massively so). E.enthrallTally += power_multiplier @@ -1253,8 +1253,8 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.") - user._REFACTORING_SetStun(1000)//Hands are handy, so you have to stay still - H._REFACTORING_SetStun(1000) + user.SetStun(1000)//Hands are handy, so you have to stay still + H.SetStun(1000) if (E.mental_capacity >= 5) var/trigger = html_decode(stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)) var/custom_words_words_list = list("Speak", "Echo", "Shock", "Cum", "Kneel", "Strip", "Trance", "Cancel") @@ -1277,8 +1277,8 @@ to_chat(user, "Your pet looks at you confused, it seems they don't understand that effect!") else to_chat(user, "Your pet looks at you with a vacant blase expression, you don't think you can program anything else into them") - user._REFACTORING_SetStun(0) - H._REFACTORING_SetStun(0) + user.SetStun(0) + H.SetStun(0) //CUSTOM ECHO else if((findtext(message, custom_echo))) @@ -1294,16 +1294,16 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.") - user._REFACTORING_SetStun(1000)//Hands are handy, so you have to stay still - H._REFACTORING_SetStun(1000) + user.SetStun(1000)//Hands are handy, so you have to stay still + H.SetStun(1000) var/trigger = stripped_input(user, "Enter the loop phrase", MAX_MESSAGE_LEN) var/customSpan = list("Notice", "Warning", "Hypnophrase", "Love", "Velvet") var/trigger2 = input(user, "Pick the style", "Style") in customSpan trigger2 = lowertext(trigger2) E.customEcho = trigger E.customSpan = trigger2 - user._REFACTORING_SetStun(0) - H._REFACTORING_SetStun(0) + user.SetStun(0) + H.SetStun(0) to_chat(user, "You sucessfully set an echoing phrase in [H]") //CUSTOM OBJECTIVE @@ -1317,8 +1317,8 @@ continue else user.emote("me", EMOTE_VISIBLE, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'") - user._REFACTORING_SetStun(1000)//So you can't run away! - H._REFACTORING_SetStun(1000) + user.SetStun(1000)//So you can't run away! + H.SetStun(1000) if (E.mental_capacity >= 200) var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN) if(!LAZYLEN(objective)) @@ -1339,8 +1339,8 @@ to_chat(user, "You sucessfully give an objective to [H]") else to_chat(user, "Your pet looks at you with a vacant blasé expression, you don't think you can program anything else into them") - user._REFACTORING_SetStun(0) - H._REFACTORING_SetStun(0) + user.SetStun(0) + H.SetStun(0) //INSTILL else if((findtext(message, instill_words))) diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index e7182f7a7a..08e5a762a3 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -652,7 +652,7 @@ if (HAS_TRAIT(C, TRAIT_NYMPHO) && lewd) if (C.getArousalLoss() > 80) C.mob_climax(forced_climax=TRUE) - C._REFACTORING_SetStun(10)//We got your stun effects in somewhere, Kev. + C.SetStun(10)//We got your stun effects in somewhere, Kev. else C.adjustArousalLoss(10) to_chat(C, "You feel a surge of arousal!") diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index 3db57832d0..c690925556 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -33,7 +33,7 @@ if(combatmode) if(world.time >= combatmessagecooldown) if(a_intent != INTENT_HELP) - visible_message("[src] [_REFACTORING_resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") + visible_message("[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].") else visible_message("[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].") playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay! diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm index eb28b610f9..526ea497c4 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -6,7 +6,7 @@ /mob/living/silicon/robot/movement_delay() . = ..() - if(!_REFACTORING_resting && !sprinting) + if(!resting && !sprinting) . += 1 . += speed From d7a8494d2d7346cedc7791455ee99610c96bcfa2 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 21:03:28 -0700 Subject: [PATCH 38/92] fix --- code/modules/mob/living/status_procs.dm | 4 ---- code/modules/mob/status_procs.dm | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index f45b37d9be..5913e1f66b 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -1,7 +1,3 @@ -//Here are the procs used to modify status effects of a mob. -//The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, -// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. - // YEEHAW GAMERS STAMINA REWORK PROC GETS TO BE FIRST // amount = strength // updating = update mobility etc etc diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 23f6b9615f..12379bce91 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -76,7 +76,8 @@ /mob/proc/update_eyeblur() remove_eyeblur() - add_eyeblur() + if(eye_blurry) + add_eyeblur() /mob/proc/add_eyeblur() if(!client) From 2cc0e8ee6c2c6d523211ef47541ce76af8e4e733 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 21:17:43 -0700 Subject: [PATCH 39/92] k --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 994b3f0a97..f81b31af72 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -459,17 +459,10 @@ M.AdjustKnockdown(10, FALSE) M.adjustStaminaLoss(15, FALSE) else -<<<<<<< HEAD M.adjustToxLoss(3, FALSE) M.adjustOxyLoss(2, FALSE) M.adjustStaminaLoss(10, FALSE) - holder.remove_reagent(id, 1) -======= - M.adjustToxLoss(3, 0) - M.adjustOxyLoss(2, 0) - M.adjustStaminaLoss(10, 0) holder.remove_reagent(type, 1) ->>>>>>> citadel/master return TRUE //We only get 30u to start with... From a4e25912232c28b83c766a7840c82d1506e3910f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 16 Jan 2020 21:22:07 -0700 Subject: [PATCH 40/92] typo --- code/modules/mob/living/status_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 5913e1f66b..829d131ea3 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -4,7 +4,7 @@ // ignore_castun = same logic as Paralyze() in general // override_duration = If this is set, does Paralyze() for this duration. // override_stam = If this is set, does this amount of stamina damage. -/mob/living/proc/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canstun = FALSE, override_duration, override_stam) +/mob/living/proc/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) if(!iscarbon(src)) return Paralyze(amount, updating, ignore_canstun) if(istype(buckled, /obj/vehicle/ridden)) From c159521d9509398c855b9048f9a2052caa066374 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 16:19:16 -0700 Subject: [PATCH 41/92] dme --- tgstation.dme | 6384 ++++++++++++++++++++++++------------------------- 1 file changed, 3192 insertions(+), 3192 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index 47fa8fb4fe..c0dc866a47 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1,3192 +1,3192 @@ -// DM Environment file for tgstation.dme. -// All manual changes should be made outside the BEGIN_ and END_ blocks. -// New source code should be placed in .dm files: choose File/New --> Code File. -// BEGIN_INTERNALS -// END_INTERNALS - -// BEGIN_FILE_DIR -#define FILE_DIR . -// END_FILE_DIR - -// BEGIN_PREFERENCES -#define DEBUG -// END_PREFERENCES - -// BEGIN_INCLUDE -#include "_maps\_basemap.dm" -#include "code\_compile_options.dm" -#include "code\world.dm" -#include "code\__DEFINES\__513_compatibility.dm" -#include "code\__DEFINES\_globals.dm" -#include "code\__DEFINES\_protect.dm" -#include "code\__DEFINES\_tick.dm" -#include "code\__DEFINES\access.dm" -#include "code\__DEFINES\admin.dm" -#include "code\__DEFINES\antagonists.dm" -#include "code\__DEFINES\atmospherics.dm" -#include "code\__DEFINES\atom_hud.dm" -#include "code\__DEFINES\bsql.config.dm" -#include "code\__DEFINES\bsql.dm" -#include "code\__DEFINES\callbacks.dm" -#include "code\__DEFINES\cargo.dm" -#include "code\__DEFINES\cinematics.dm" -#include "code\__DEFINES\citadel_defines.dm" -#include "code\__DEFINES\cleaning.dm" -#include "code\__DEFINES\clockcult.dm" -#include "code\__DEFINES\colors.dm" -#include "code\__DEFINES\combat.dm" -#include "code\__DEFINES\components.dm" -#include "code\__DEFINES\configuration.dm" -#include "code\__DEFINES\construction.dm" -#include "code\__DEFINES\contracts.dm" -#include "code\__DEFINES\cult.dm" -#include "code\__DEFINES\diseases.dm" -#include "code\__DEFINES\DNA.dm" -#include "code\__DEFINES\donator_groupings.dm" -#include "code\__DEFINES\dynamic.dm" -#include "code\__DEFINES\events.dm" -#include "code\__DEFINES\exports.dm" -#include "code\__DEFINES\fantasy_affixes.dm" -#include "code\__DEFINES\flags.dm" -#include "code\__DEFINES\food.dm" -#include "code\__DEFINES\footsteps.dm" -#include "code\__DEFINES\hud.dm" -#include "code\__DEFINES\integrated_electronics.dm" -#include "code\__DEFINES\interaction_flags.dm" -#include "code\__DEFINES\inventory.dm" -#include "code\__DEFINES\is_helpers.dm" -#include "code\__DEFINES\jobs.dm" -#include "code\__DEFINES\language.dm" -#include "code\__DEFINES\layers.dm" -#include "code\__DEFINES\lighting.dm" -#include "code\__DEFINES\logging.dm" -#include "code\__DEFINES\machines.dm" -#include "code\__DEFINES\maps.dm" -#include "code\__DEFINES\maths.dm" -#include "code\__DEFINES\MC.dm" -#include "code\__DEFINES\medal.dm" -#include "code\__DEFINES\melee.dm" -#include "code\__DEFINES\menu.dm" -#include "code\__DEFINES\misc.dm" -#include "code\__DEFINES\mobs.dm" -#include "code\__DEFINES\monkeys.dm" -#include "code\__DEFINES\movespeed_modification.dm" -#include "code\__DEFINES\nanites.dm" -#include "code\__DEFINES\networks.dm" -#include "code\__DEFINES\obj_flags.dm" -#include "code\__DEFINES\pinpointers.dm" -#include "code\__DEFINES\pipe_construction.dm" -#include "code\__DEFINES\preferences.dm" -#include "code\__DEFINES\procpath.dm" -#include "code\__DEFINES\profile.dm" -#include "code\__DEFINES\qdel.dm" -#include "code\__DEFINES\radiation.dm" -#include "code\__DEFINES\radio.dm" -#include "code\__DEFINES\reactions.dm" -#include "code\__DEFINES\reagents.dm" -#include "code\__DEFINES\reagents_specific_heat.dm" -#include "code\__DEFINES\research.dm" -#include "code\__DEFINES\robots.dm" -#include "code\__DEFINES\role_preferences.dm" -#include "code\__DEFINES\rust_g.config.dm" -#include "code\__DEFINES\rust_g.dm" -#include "code\__DEFINES\say.dm" -#include "code\__DEFINES\shuttles.dm" -#include "code\__DEFINES\sight.dm" -#include "code\__DEFINES\sound.dm" -#include "code\__DEFINES\spaceman_dmm.dm" -#include "code\__DEFINES\stat.dm" -#include "code\__DEFINES\stat_tracking.dm" -#include "code\__DEFINES\status_effects.dm" -#include "code\__DEFINES\subsystems.dm" -#include "code\__DEFINES\tgs.config.dm" -#include "code\__DEFINES\tgs.dm" -#include "code\__DEFINES\tgui.dm" -#include "code\__DEFINES\time.dm" -#include "code\__DEFINES\tools.dm" -#include "code\__DEFINES\traits.dm" -#include "code\__DEFINES\turf_flags.dm" -#include "code\__DEFINES\typeids.dm" -#include "code\__DEFINES\vehicles.dm" -#include "code\__DEFINES\voreconstants.dm" -#include "code\__DEFINES\vote.dm" -#include "code\__DEFINES\vv.dm" -#include "code\__DEFINES\wall_dents.dm" -#include "code\__DEFINES\wires.dm" -#include "code\__HELPERS\_cit_helpers.dm" -#include "code\__HELPERS\_lists.dm" -#include "code\__HELPERS\_logging.dm" -#include "code\__HELPERS\_string_lists.dm" -#include "code\__HELPERS\areas.dm" -#include "code\__HELPERS\AStar.dm" -#include "code\__HELPERS\cmp.dm" -#include "code\__HELPERS\custom_holoforms.dm" -#include "code\__HELPERS\dates.dm" -#include "code\__HELPERS\donator_groupings.dm" -#include "code\__HELPERS\files.dm" -#include "code\__HELPERS\game.dm" -#include "code\__HELPERS\global_lists.dm" -#include "code\__HELPERS\heap.dm" -#include "code\__HELPERS\icon_smoothing.dm" -#include "code\__HELPERS\icons.dm" -#include "code\__HELPERS\level_traits.dm" -#include "code\__HELPERS\matrices.dm" -#include "code\__HELPERS\mobs.dm" -#include "code\__HELPERS\mouse_control.dm" -#include "code\__HELPERS\names.dm" -#include "code\__HELPERS\priority_announce.dm" -#include "code\__HELPERS\pronouns.dm" -#include "code\__HELPERS\qdel.dm" -#include "code\__HELPERS\radiation.dm" -#include "code\__HELPERS\radio.dm" -#include "code\__HELPERS\reagents.dm" -#include "code\__HELPERS\roundend.dm" -#include "code\__HELPERS\sanitize_values.dm" -#include "code\__HELPERS\shell.dm" -#include "code\__HELPERS\stat_tracking.dm" -#include "code\__HELPERS\text.dm" -#include "code\__HELPERS\text_vr.dm" -#include "code\__HELPERS\time.dm" -#include "code\__HELPERS\type2type.dm" -#include "code\__HELPERS\type2type_vr.dm" -#include "code\__HELPERS\typelists.dm" -#include "code\__HELPERS\unsorted.dm" -#include "code\__HELPERS\view.dm" -#include "code\__HELPERS\sorts\__main.dm" -#include "code\__HELPERS\sorts\InsertSort.dm" -#include "code\__HELPERS\sorts\MergeSort.dm" -#include "code\__HELPERS\sorts\TimSort.dm" -#include "code\_globalvars\bitfields.dm" -#include "code\_globalvars\configuration.dm" -#include "code\_globalvars\game_modes.dm" -#include "code\_globalvars\genetics.dm" -#include "code\_globalvars\logging.dm" -#include "code\_globalvars\misc.dm" -#include "code\_globalvars\regexes.dm" -#include "code\_globalvars\lists\flavor_misc.dm" -#include "code\_globalvars\lists\maintenance_loot.dm" -#include "code\_globalvars\lists\mapping.dm" -#include "code\_globalvars\lists\medals.dm" -#include "code\_globalvars\lists\misc.dm" -#include "code\_globalvars\lists\mobs.dm" -#include "code\_globalvars\lists\names.dm" -#include "code\_globalvars\lists\objects.dm" -#include "code\_globalvars\lists\poll_ignore.dm" -#include "code\_globalvars\lists\typecache.dm" -#include "code\_js\byjax.dm" -#include "code\_js\menus.dm" -#include "code\_onclick\adjacent.dm" -#include "code\_onclick\ai.dm" -#include "code\_onclick\click.dm" -#include "code\_onclick\cyborg.dm" -#include "code\_onclick\drag_drop.dm" -#include "code\_onclick\item_attack.dm" -#include "code\_onclick\observer.dm" -#include "code\_onclick\other_mobs.dm" -#include "code\_onclick\overmind.dm" -#include "code\_onclick\telekinesis.dm" -#include "code\_onclick\hud\_defines.dm" -#include "code\_onclick\hud\action_button.dm" -#include "code\_onclick\hud\ai.dm" -#include "code\_onclick\hud\alert.dm" -#include "code\_onclick\hud\alien.dm" -#include "code\_onclick\hud\alien_larva.dm" -#include "code\_onclick\hud\blob_overmind.dm" -#include "code\_onclick\hud\blobbernauthud.dm" -#include "code\_onclick\hud\constructs.dm" -#include "code\_onclick\hud\credits.dm" -#include "code\_onclick\hud\devil.dm" -#include "code\_onclick\hud\drones.dm" -#include "code\_onclick\hud\fullscreen.dm" -#include "code\_onclick\hud\generic_dextrous.dm" -#include "code\_onclick\hud\ghost.dm" -#include "code\_onclick\hud\guardian.dm" -#include "code\_onclick\hud\hud.dm" -#include "code\_onclick\hud\human.dm" -#include "code\_onclick\hud\lavaland_elite.dm" -#include "code\_onclick\hud\monkey.dm" -#include "code\_onclick\hud\movable_screen_objects.dm" -#include "code\_onclick\hud\parallax.dm" -#include "code\_onclick\hud\picture_in_picture.dm" -#include "code\_onclick\hud\plane_master.dm" -#include "code\_onclick\hud\radial.dm" -#include "code\_onclick\hud\radial_persistent.dm" -#include "code\_onclick\hud\revenanthud.dm" -#include "code\_onclick\hud\robot.dm" -#include "code\_onclick\hud\screen_objects.dm" -#include "code\_onclick\hud\swarmer.dm" -#include "code\controllers\admin.dm" -#include "code\controllers\configuration_citadel.dm" -#include "code\controllers\controller.dm" -#include "code\controllers\failsafe.dm" -#include "code\controllers\globals.dm" -#include "code\controllers\hooks.dm" -#include "code\controllers\master.dm" -#include "code\controllers\subsystem.dm" -#include "code\controllers\configuration\config_entry.dm" -#include "code\controllers\configuration\configuration.dm" -#include "code\controllers\configuration\entries\comms.dm" -#include "code\controllers\configuration\entries\dbconfig.dm" -#include "code\controllers\configuration\entries\donator.dm" -#include "code\controllers\configuration\entries\dynamic.dm" -#include "code\controllers\configuration\entries\fail2topic.dm" -#include "code\controllers\configuration\entries\game_options.dm" -#include "code\controllers\configuration\entries\general.dm" -#include "code\controllers\subsystem\acid.dm" -#include "code\controllers\subsystem\adjacent_air.dm" -#include "code\controllers\subsystem\air.dm" -#include "code\controllers\subsystem\air_turfs.dm" -#include "code\controllers\subsystem\assets.dm" -#include "code\controllers\subsystem\atoms.dm" -#include "code\controllers\subsystem\augury.dm" -#include "code\controllers\subsystem\blackbox.dm" -#include "code\controllers\subsystem\chat.dm" -#include "code\controllers\subsystem\communications.dm" -#include "code\controllers\subsystem\dbcore.dm" -#include "code\controllers\subsystem\dcs.dm" -#include "code\controllers\subsystem\disease.dm" -#include "code\controllers\subsystem\events.dm" -#include "code\controllers\subsystem\fail2topic.dm" -#include "code\controllers\subsystem\fire_burning.dm" -#include "code\controllers\subsystem\garbage.dm" -#include "code\controllers\subsystem\icon_smooth.dm" -#include "code\controllers\subsystem\idlenpcpool.dm" -#include "code\controllers\subsystem\input.dm" -#include "code\controllers\subsystem\ipintel.dm" -#include "code\controllers\subsystem\job.dm" -#include "code\controllers\subsystem\jukeboxes.dm" -#include "code\controllers\subsystem\language.dm" -#include "code\controllers\subsystem\lighting.dm" -#include "code\controllers\subsystem\machines.dm" -#include "code\controllers\subsystem\mapping.dm" -#include "code\controllers\subsystem\medals.dm" -#include "code\controllers\subsystem\minor_mapping.dm" -#include "code\controllers\subsystem\mobs.dm" -#include "code\controllers\subsystem\moods.dm" -#include "code\controllers\subsystem\nightshift.dm" -#include "code\controllers\subsystem\npcpool.dm" -#include "code\controllers\subsystem\overlays.dm" -#include "code\controllers\subsystem\pai.dm" -#include "code\controllers\subsystem\parallax.dm" -#include "code\controllers\subsystem\pathfinder.dm" -#include "code\controllers\subsystem\persistence.dm" -#include "code\controllers\subsystem\ping.dm" -#include "code\controllers\subsystem\radiation.dm" -#include "code\controllers\subsystem\radio.dm" -#include "code\controllers\subsystem\research.dm" -#include "code\controllers\subsystem\server_maint.dm" -#include "code\controllers\subsystem\shuttle.dm" -#include "code\controllers\subsystem\spacedrift.dm" -#include "code\controllers\subsystem\stickyban.dm" -#include "code\controllers\subsystem\sun.dm" -#include "code\controllers\subsystem\tgui.dm" -#include "code\controllers\subsystem\throwing.dm" -#include "code\controllers\subsystem\ticker.dm" -#include "code\controllers\subsystem\time_track.dm" -#include "code\controllers\subsystem\timer.dm" -#include "code\controllers\subsystem\title.dm" -#include "code\controllers\subsystem\traumas.dm" -#include "code\controllers\subsystem\vis_overlays.dm" -#include "code\controllers\subsystem\vore.dm" -#include "code\controllers\subsystem\vote.dm" -#include "code\controllers\subsystem\weather.dm" -#include "code\controllers\subsystem\processing\chemistry.dm" -#include "code\controllers\subsystem\processing\circuit.dm" -#include "code\controllers\subsystem\processing\fastprocess.dm" -#include "code\controllers\subsystem\processing\fields.dm" -#include "code\controllers\subsystem\processing\nanites.dm" -#include "code\controllers\subsystem\processing\networks.dm" -#include "code\controllers\subsystem\processing\obj.dm" -#include "code\controllers\subsystem\processing\processing.dm" -#include "code\controllers\subsystem\processing\projectiles.dm" -#include "code\controllers\subsystem\processing\quirks.dm" -#include "code\controllers\subsystem\processing\wet_floors.dm" -#include "code\datums\action.dm" -#include "code\datums\ai_laws.dm" -#include "code\datums\armor.dm" -#include "code\datums\beam.dm" -#include "code\datums\browser.dm" -#include "code\datums\callback.dm" -#include "code\datums\cinematic.dm" -#include "code\datums\dash_weapon.dm" -#include "code\datums\datacore.dm" -#include "code\datums\datum.dm" -#include "code\datums\datumvars.dm" -#include "code\datums\dna.dm" -#include "code\datums\dog_fashion.dm" -#include "code\datums\embedding_behavior.dm" -#include "code\datums\emotes.dm" -#include "code\datums\ert.dm" -#include "code\datums\explosion.dm" -#include "code\datums\forced_movement.dm" -#include "code\datums\holocall.dm" -#include "code\datums\hud.dm" -#include "code\datums\map_config.dm" -#include "code\datums\martial.dm" -#include "code\datums\mind.dm" -#include "code\datums\mutable_appearance.dm" -#include "code\datums\mutations.dm" -#include "code\datums\numbered_display.dm" -#include "code\datums\outfit.dm" -#include "code\datums\position_point_vector.dm" -#include "code\datums\profiling.dm" -#include "code\datums\progressbar.dm" -#include "code\datums\radiation_wave.dm" -#include "code\datums\recipe.dm" -#include "code\datums\ruins.dm" -#include "code\datums\saymode.dm" -#include "code\datums\shuttles.dm" -#include "code\datums\soullink.dm" -#include "code\datums\spawners_menu.dm" -#include "code\datums\verbs.dm" -#include "code\datums\weakrefs.dm" -#include "code\datums\world_topic.dm" -#include "code\datums\actions\beam_rifle.dm" -#include "code\datums\actions\ninja.dm" -#include "code\datums\brain_damage\brain_trauma.dm" -#include "code\datums\brain_damage\hypnosis.dm" -#include "code\datums\brain_damage\imaginary_friend.dm" -#include "code\datums\brain_damage\mild.dm" -#include "code\datums\brain_damage\phobia.dm" -#include "code\datums\brain_damage\severe.dm" -#include "code\datums\brain_damage\special.dm" -#include "code\datums\brain_damage\split_personality.dm" -#include "code\datums\components\_component.dm" -#include "code\datums\components\anti_magic.dm" -#include "code\datums\components\armor_plate.dm" -#include "code\datums\components\bane.dm" -#include "code\datums\components\bouncy.dm" -#include "code\datums\components\butchering.dm" -#include "code\datums\components\caltrop.dm" -#include "code\datums\components\chasm.dm" -#include "code\datums\components\construction.dm" -#include "code\datums\components\decal.dm" -#include "code\datums\components\earprotection.dm" -#include "code\datums\components\edit_complainer.dm" -#include "code\datums\components\empprotection.dm" -#include "code\datums\components\footstep.dm" -#include "code\datums\components\forced_gravity.dm" -#include "code\datums\components\igniter.dm" -#include "code\datums\components\infective.dm" -#include "code\datums\components\jousting.dm" -#include "code\datums\components\knockback.dm" -#include "code\datums\components\knockoff.dm" -#include "code\datums\components\lifesteal.dm" -#include "code\datums\components\lockon_aiming.dm" -#include "code\datums\components\magnetic_catch.dm" -#include "code\datums\components\material_container.dm" -#include "code\datums\components\mirage_border.dm" -#include "code\datums\components\mood.dm" -#include "code\datums\components\nanites.dm" -#include "code\datums\components\ntnet_interface.dm" -#include "code\datums\components\orbiter.dm" -#include "code\datums\components\paintable.dm" -#include "code\datums\components\phantomthief.dm" -#include "code\datums\components\rad_insulation.dm" -#include "code\datums\components\radioactive.dm" -#include "code\datums\components\remote_materials.dm" -#include "code\datums\components\riding.dm" -#include "code\datums\components\rotation.dm" -#include "code\datums\components\shrapnel.dm" -#include "code\datums\components\shrink.dm" -#include "code\datums\components\sizzle.dm" -#include "code\datums\components\slippery.dm" -#include "code\datums\components\spooky.dm" -#include "code\datums\components\squeak.dm" -#include "code\datums\components\stationloving.dm" -#include "code\datums\components\summoning.dm" -#include "code\datums\components\swarming.dm" -#include "code\datums\components\tactical.dm" -#include "code\datums\components\thermite.dm" -#include "code\datums\components\uplink.dm" -#include "code\datums\components\virtual_reality.dm" -#include "code\datums\components\wearertargeting.dm" -#include "code\datums\components\wet_floor.dm" -#include "code\datums\components\fantasy\_fantasy.dm" -#include "code\datums\components\fantasy\affix.dm" -#include "code\datums\components\fantasy\prefixes.dm" -#include "code\datums\components\fantasy\suffixes.dm" -#include "code\datums\components\storage\storage.dm" -#include "code\datums\components\storage\concrete\_concrete.dm" -#include "code\datums\components\storage\concrete\bag_of_holding.dm" -#include "code\datums\components\storage\concrete\bluespace.dm" -#include "code\datums\components\storage\concrete\emergency.dm" -#include "code\datums\components\storage\concrete\implant.dm" -#include "code\datums\components\storage\concrete\pockets.dm" -#include "code\datums\components\storage\concrete\rped.dm" -#include "code\datums\components\storage\concrete\special.dm" -#include "code\datums\components\storage\concrete\stack.dm" -#include "code\datums\diseases\_disease.dm" -#include "code\datums\diseases\_MobProcs.dm" -#include "code\datums\diseases\anxiety.dm" -#include "code\datums\diseases\appendicitis.dm" -#include "code\datums\diseases\beesease.dm" -#include "code\datums\diseases\brainrot.dm" -#include "code\datums\diseases\cold.dm" -#include "code\datums\diseases\cold9.dm" -#include "code\datums\diseases\dna_spread.dm" -#include "code\datums\diseases\fake_gbs.dm" -#include "code\datums\diseases\flu.dm" -#include "code\datums\diseases\fluspanish.dm" -#include "code\datums\diseases\gbs.dm" -#include "code\datums\diseases\heart_failure.dm" -#include "code\datums\diseases\magnitis.dm" -#include "code\datums\diseases\parrotpossession.dm" -#include "code\datums\diseases\pierrot_throat.dm" -#include "code\datums\diseases\retrovirus.dm" -#include "code\datums\diseases\rhumba_beat.dm" -#include "code\datums\diseases\transformation.dm" -#include "code\datums\diseases\tuberculosis.dm" -#include "code\datums\diseases\wizarditis.dm" -#include "code\datums\diseases\advance\advance.dm" -#include "code\datums\diseases\advance\presets.dm" -#include "code\datums\diseases\advance\symptoms\beard.dm" -#include "code\datums\diseases\advance\symptoms\choking.dm" -#include "code\datums\diseases\advance\symptoms\confusion.dm" -#include "code\datums\diseases\advance\symptoms\cough.dm" -#include "code\datums\diseases\advance\symptoms\deafness.dm" -#include "code\datums\diseases\advance\symptoms\dizzy.dm" -#include "code\datums\diseases\advance\symptoms\fever.dm" -#include "code\datums\diseases\advance\symptoms\fire.dm" -#include "code\datums\diseases\advance\symptoms\flesh_eating.dm" -#include "code\datums\diseases\advance\symptoms\hallucigen.dm" -#include "code\datums\diseases\advance\symptoms\headache.dm" -#include "code\datums\diseases\advance\symptoms\heal.dm" -#include "code\datums\diseases\advance\symptoms\itching.dm" -#include "code\datums\diseases\advance\symptoms\nanites.dm" -#include "code\datums\diseases\advance\symptoms\narcolepsy.dm" -#include "code\datums\diseases\advance\symptoms\oxygen.dm" -#include "code\datums\diseases\advance\symptoms\sensory.dm" -#include "code\datums\diseases\advance\symptoms\shedding.dm" -#include "code\datums\diseases\advance\symptoms\shivering.dm" -#include "code\datums\diseases\advance\symptoms\skin.dm" -#include "code\datums\diseases\advance\symptoms\sneeze.dm" -#include "code\datums\diseases\advance\symptoms\species.dm" -#include "code\datums\diseases\advance\symptoms\symptoms.dm" -#include "code\datums\diseases\advance\symptoms\viral.dm" -#include "code\datums\diseases\advance\symptoms\vision.dm" -#include "code\datums\diseases\advance\symptoms\voice_change.dm" -#include "code\datums\diseases\advance\symptoms\vomit.dm" -#include "code\datums\diseases\advance\symptoms\weight.dm" -#include "code\datums\diseases\advance\symptoms\youth.dm" -#include "code\datums\elements\_element.dm" -#include "code\datums\elements\cleaning.dm" -#include "code\datums\elements\earhealing.dm" -#include "code\datums\elements\ghost_role_eligibility.dm" -#include "code\datums\elements\wuv.dm" -#include "code\datums\helper_datums\events.dm" -#include "code\datums\helper_datums\getrev.dm" -#include "code\datums\helper_datums\icon_snapshot.dm" -#include "code\datums\helper_datums\teleport.dm" -#include "code\datums\helper_datums\topic_input.dm" -#include "code\datums\looping_sounds\_looping_sound.dm" -#include "code\datums\looping_sounds\item_sounds.dm" -#include "code\datums\looping_sounds\machinery_sounds.dm" -#include "code\datums\looping_sounds\weather.dm" -#include "code\datums\martial\boxing.dm" -#include "code\datums\martial\cqc.dm" -#include "code\datums\martial\krav_maga.dm" -#include "code\datums\martial\mushpunch.dm" -#include "code\datums\martial\plasma_fist.dm" -#include "code\datums\martial\psychotic_brawl.dm" -#include "code\datums\martial\rising_bass.dm" -#include "code\datums\martial\sleeping_carp.dm" -#include "code\datums\martial\wrestling.dm" -#include "code\datums\mood_events\beauty_events.dm" -#include "code\datums\mood_events\drink_events.dm" -#include "code\datums\mood_events\drug_events.dm" -#include "code\datums\mood_events\generic_negative_events.dm" -#include "code\datums\mood_events\generic_positive_events.dm" -#include "code\datums\mood_events\mood_event.dm" -#include "code\datums\mood_events\needs_events.dm" -#include "code\datums\mutations\body.dm" -#include "code\datums\mutations\chameleon.dm" -#include "code\datums\mutations\cold_resistance.dm" -#include "code\datums\mutations\hulk.dm" -#include "code\datums\mutations\sight.dm" -#include "code\datums\mutations\speech.dm" -#include "code\datums\mutations\telekinesis.dm" -#include "code\datums\ruins\lavaland.dm" -#include "code\datums\ruins\space.dm" -#include "code\datums\ruins\station.dm" -#include "code\datums\status_effects\buffs.dm" -#include "code\datums\status_effects\debuffs.dm" -#include "code\datums\status_effects\gas.dm" -#include "code\datums\status_effects\neutral.dm" -#include "code\datums\status_effects\status_effect.dm" -#include "code\datums\traits\_quirk.dm" -#include "code\datums\traits\good.dm" -#include "code\datums\traits\negative.dm" -#include "code\datums\traits\neutral.dm" -#include "code\datums\weather\weather.dm" -#include "code\datums\weather\weather_types\acid_rain.dm" -#include "code\datums\weather\weather_types\ash_storm.dm" -#include "code\datums\weather\weather_types\floor_is_lava.dm" -#include "code\datums\weather\weather_types\radiation_storm.dm" -#include "code\datums\weather\weather_types\snow_storm.dm" -#include "code\datums\wires\_wires.dm" -#include "code\datums\wires\airalarm.dm" -#include "code\datums\wires\airlock.dm" -#include "code\datums\wires\apc.dm" -#include "code\datums\wires\autolathe.dm" -#include "code\datums\wires\autoylathe.dm" -#include "code\datums\wires\emitter.dm" -#include "code\datums\wires\explosive.dm" -#include "code\datums\wires\microwave.dm" -#include "code\datums\wires\mulebot.dm" -#include "code\datums\wires\particle_accelerator.dm" -#include "code\datums\wires\r_n_d.dm" -#include "code\datums\wires\radio.dm" -#include "code\datums\wires\robot.dm" -#include "code\datums\wires\suit_storage_unit.dm" -#include "code\datums\wires\syndicatebomb.dm" -#include "code\datums\wires\tesla_coil.dm" -#include "code\datums\wires\vending.dm" -#include "code\game\alternate_appearance.dm" -#include "code\game\atoms.dm" -#include "code\game\atoms_movable.dm" -#include "code\game\communications.dm" -#include "code\game\data_huds.dm" -#include "code\game\say.dm" -#include "code\game\shuttle_engines.dm" -#include "code\game\sound.dm" -#include "code\game\world.dm" -#include "code\game\area\ai_monitored.dm" -#include "code\game\area\areas.dm" -#include "code\game\area\Space_Station_13_areas.dm" -#include "code\game\area\areas\away_content.dm" -#include "code\game\area\areas\centcom.dm" -#include "code\game\area\areas\holodeck.dm" -#include "code\game\area\areas\mining.dm" -#include "code\game\area\areas\shuttles.dm" -#include "code\game\area\areas\ruins\_ruins.dm" -#include "code\game\area\areas\ruins\lavaland.dm" -#include "code\game\area\areas\ruins\space.dm" -#include "code\game\area\areas\ruins\templates.dm" -#include "code\game\gamemodes\events.dm" -#include "code\game\gamemodes\game_mode.dm" -#include "code\game\gamemodes\objective.dm" -#include "code\game\gamemodes\objective_items.dm" -#include "code\game\gamemodes\bloodsucker\bloodsucker.dm" -#include "code\game\gamemodes\bloodsucker\hunter.dm" -#include "code\game\gamemodes\brother\traitor_bro.dm" -#include "code\game\gamemodes\changeling\changeling.dm" -#include "code\game\gamemodes\changeling\traitor_chan.dm" -#include "code\game\gamemodes\clock_cult\clock_cult.dm" -#include "code\game\gamemodes\clown_ops\bananium_bomb.dm" -#include "code\game\gamemodes\clown_ops\clown_ops.dm" -#include "code\game\gamemodes\clown_ops\clown_weapons.dm" -#include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\devil\devil_game_mode.dm" -#include "code\game\gamemodes\devil\game_mode.dm" -#include "code\game\gamemodes\devil\objectives.dm" -#include "code\game\gamemodes\devil\devil agent\devil_agent.dm" -#include "code\game\gamemodes\dynamic\dynamic.dm" -#include "code\game\gamemodes\dynamic\dynamic_rulesets.dm" -#include "code\game\gamemodes\dynamic\dynamic_rulesets_events.dm" -#include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" -#include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" -#include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" -#include "code\game\gamemodes\dynamic\dynamic_storytellers.dm" -#include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\gangs\dominator.dm" -#include "code\game\gamemodes\gangs\dominator_countdown.dm" -#include "code\game\gamemodes\gangs\gang.dm" -#include "code\game\gamemodes\gangs\gang_datums.dm" -#include "code\game\gamemodes\gangs\gang_decals.dm" -#include "code\game\gamemodes\gangs\gang_hud.dm" -#include "code\game\gamemodes\gangs\gang_items.dm" -#include "code\game\gamemodes\gangs\gang_pen.dm" -#include "code\game\gamemodes\gangs\gangs.dm" -#include "code\game\gamemodes\gangs\gangtool.dm" -#include "code\game\gamemodes\gangs\implant_gang.dm" -#include "code\game\gamemodes\meteor\meteor.dm" -#include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\monkey\monkey.dm" -#include "code\game\gamemodes\nuclear\nuclear.dm" -#include "code\game\gamemodes\overthrow\objective.dm" -#include "code\game\gamemodes\overthrow\overthrow.dm" -#include "code\game\gamemodes\revolution\revolution.dm" -#include "code\game\gamemodes\sandbox\airlock_maker.dm" -#include "code\game\gamemodes\sandbox\h_sandbox.dm" -#include "code\game\gamemodes\sandbox\sandbox.dm" -#include "code\game\gamemodes\traitor\double_agents.dm" -#include "code\game\gamemodes\traitor\traitor.dm" -#include "code\game\gamemodes\wizard\wizard.dm" -#include "code\game\machinery\_machinery.dm" -#include "code\game\machinery\ai_slipper.dm" -#include "code\game\machinery\airlock_control.dm" -#include "code\game\machinery\announcement_system.dm" -#include "code\game\machinery\aug_manipulator.dm" -#include "code\game\machinery\autolathe.dm" -#include "code\game\machinery\bank_machine.dm" -#include "code\game\machinery\Beacon.dm" -#include "code\game\machinery\bloodbankgen.dm" -#include "code\game\machinery\buttons.dm" -#include "code\game\machinery\cell_charger.dm" -#include "code\game\machinery\cloning.dm" -#include "code\game\machinery\constructable_frame.dm" -#include "code\game\machinery\cryopod.dm" -#include "code\game\machinery\dance_machine.dm" -#include "code\game\machinery\defibrillator_mount.dm" -#include "code\game\machinery\deployable.dm" -#include "code\game\machinery\dish_drive.dm" -#include "code\game\machinery\dna_scanner.dm" -#include "code\game\machinery\doppler_array.dm" -#include "code\game\machinery\droneDispenser.dm" -#include "code\game\machinery\exp_cloner.dm" -#include "code\game\machinery\firealarm.dm" -#include "code\game\machinery\flasher.dm" -#include "code\game\machinery\gulag_item_reclaimer.dm" -#include "code\game\machinery\gulag_teleporter.dm" -#include "code\game\machinery\harvester.dm" -#include "code\game\machinery\hologram.dm" -#include "code\game\machinery\igniter.dm" -#include "code\game\machinery\iv_drip.dm" -#include "code\game\machinery\launch_pad.dm" -#include "code\game\machinery\lightswitch.dm" -#include "code\game\machinery\limbgrower.dm" -#include "code\game\machinery\magnet.dm" -#include "code\game\machinery\mass_driver.dm" -#include "code\game\machinery\navbeacon.dm" -#include "code\game\machinery\newscaster.dm" -#include "code\game\machinery\PDApainter.dm" -#include "code\game\machinery\quantum_pad.dm" -#include "code\game\machinery\recharger.dm" -#include "code\game\machinery\rechargestation.dm" -#include "code\game\machinery\recycler.dm" -#include "code\game\machinery\requests_console.dm" -#include "code\game\machinery\shieldgen.dm" -#include "code\game\machinery\Sleeper.dm" -#include "code\game\machinery\slotmachine.dm" -#include "code\game\machinery\spaceheater.dm" -#include "code\game\machinery\status_display.dm" -#include "code\game\machinery\suit_storage_unit.dm" -#include "code\game\machinery\syndicatebeacon.dm" -#include "code\game\machinery\syndicatebomb.dm" -#include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\toylathe.dm" -#include "code\game\machinery\transformer.dm" -#include "code\game\machinery\turnstile.dm" -#include "code\game\machinery\washing_machine.dm" -#include "code\game\machinery\wishgranter.dm" -#include "code\game\machinery\camera\camera.dm" -#include "code\game\machinery\camera\camera_assembly.dm" -#include "code\game\machinery\camera\motion.dm" -#include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" -#include "code\game\machinery\computer\_computer.dm" -#include "code\game\machinery\computer\aifixer.dm" -#include "code\game\machinery\computer\apc_control.dm" -#include "code\game\machinery\computer\arcade.dm" -#include "code\game\machinery\computer\atmos_alert.dm" -#include "code\game\machinery\computer\atmos_control.dm" -#include "code\game\machinery\computer\buildandrepair.dm" -#include "code\game\machinery\computer\camera.dm" -#include "code\game\machinery\computer\camera_advanced.dm" -#include "code\game\machinery\computer\card.dm" -#include "code\game\machinery\computer\cloning.dm" -#include "code\game\machinery\computer\communications.dm" -#include "code\game\machinery\computer\crew.dm" -#include "code\game\machinery\computer\dna_console.dm" -#include "code\game\machinery\computer\launchpad_control.dm" -#include "code\game\machinery\computer\law.dm" -#include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\Operating.dm" -#include "code\game\machinery\computer\pod.dm" -#include "code\game\machinery\computer\robot.dm" -#include "code\game\machinery\computer\security.dm" -#include "code\game\machinery\computer\station_alert.dm" -#include "code\game\machinery\computer\telecrystalconsoles.dm" -#include "code\game\machinery\computer\teleporter.dm" -#include "code\game\machinery\computer\arcade\battle.dm" -#include "code\game\machinery\computer\arcade\minesweeper.dm" -#include "code\game\machinery\computer\arcade\misc_arcade.dm" -#include "code\game\machinery\computer\arcade\orion_trail.dm" -#include "code\game\machinery\computer\prisoner\_prisoner.dm" -#include "code\game\machinery\computer\prisoner\gulag_teleporter.dm" -#include "code\game\machinery\computer\prisoner\management.dm" -#include "code\game\machinery\doors\airlock.dm" -#include "code\game\machinery\doors\airlock_electronics.dm" -#include "code\game\machinery\doors\airlock_types.dm" -#include "code\game\machinery\doors\alarmlock.dm" -#include "code\game\machinery\doors\brigdoors.dm" -#include "code\game\machinery\doors\checkForMultipleDoors.dm" -#include "code\game\machinery\doors\door.dm" -#include "code\game\machinery\doors\firedoor.dm" -#include "code\game\machinery\doors\passworddoor.dm" -#include "code\game\machinery\doors\poddoor.dm" -#include "code\game\machinery\doors\shutters.dm" -#include "code\game\machinery\doors\unpowered.dm" -#include "code\game\machinery\doors\windowdoor.dm" -#include "code\game\machinery\embedded_controller\access_controller.dm" -#include "code\game\machinery\embedded_controller\airlock_controller.dm" -#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" -#include "code\game\machinery\embedded_controller\simple_vent_controller.dm" -#include "code\game\machinery\pipe\construction.dm" -#include "code\game\machinery\pipe\pipe_dispenser.dm" -#include "code\game\machinery\porta_turret\portable_turret.dm" -#include "code\game\machinery\porta_turret\portable_turret_construct.dm" -#include "code\game\machinery\porta_turret\portable_turret_cover.dm" -#include "code\game\machinery\telecomms\broadcasting.dm" -#include "code\game\machinery\telecomms\machine_interactions.dm" -#include "code\game\machinery\telecomms\telecomunications.dm" -#include "code\game\machinery\telecomms\computers\logbrowser.dm" -#include "code\game\machinery\telecomms\computers\message.dm" -#include "code\game\machinery\telecomms\computers\telemonitor.dm" -#include "code\game\machinery\telecomms\machines\allinone.dm" -#include "code\game\machinery\telecomms\machines\broadcaster.dm" -#include "code\game\machinery\telecomms\machines\bus.dm" -#include "code\game\machinery\telecomms\machines\hub.dm" -#include "code\game\machinery\telecomms\machines\message_server.dm" -#include "code\game\machinery\telecomms\machines\processor.dm" -#include "code\game\machinery\telecomms\machines\receiver.dm" -#include "code\game\machinery\telecomms\machines\relay.dm" -#include "code\game\machinery\telecomms\machines\server.dm" -#include "code\game\mecha\mech_bay.dm" -#include "code\game\mecha\mech_fabricator.dm" -#include "code\game\mecha\mecha.dm" -#include "code\game\mecha\mecha_actions.dm" -#include "code\game\mecha\mecha_construction_paths.dm" -#include "code\game\mecha\mecha_control_console.dm" -#include "code\game\mecha\mecha_defense.dm" -#include "code\game\mecha\mecha_parts.dm" -#include "code\game\mecha\mecha_topic.dm" -#include "code\game\mecha\mecha_wreckage.dm" -#include "code\game\mecha\combat\combat.dm" -#include "code\game\mecha\combat\durand.dm" -#include "code\game\mecha\combat\gygax.dm" -#include "code\game\mecha\combat\honker.dm" -#include "code\game\mecha\combat\marauder.dm" -#include "code\game\mecha\combat\neovgre.dm" -#include "code\game\mecha\combat\phazon.dm" -#include "code\game\mecha\combat\reticence.dm" -#include "code\game\mecha\equipment\mecha_equipment.dm" -#include "code\game\mecha\equipment\tools\medical_tools.dm" -#include "code\game\mecha\equipment\tools\mining_tools.dm" -#include "code\game\mecha\equipment\tools\other_tools.dm" -#include "code\game\mecha\equipment\tools\work_tools.dm" -#include "code\game\mecha\equipment\weapons\weapons.dm" -#include "code\game\mecha\medical\medical.dm" -#include "code\game\mecha\medical\odysseus.dm" -#include "code\game\mecha\working\ripley.dm" -#include "code\game\mecha\working\working.dm" -#include "code\game\objects\buckling.dm" -#include "code\game\objects\empulse.dm" -#include "code\game\objects\items.dm" -#include "code\game\objects\obj_defense.dm" -#include "code\game\objects\objs.dm" -#include "code\game\objects\structures.dm" -#include "code\game\objects\effects\alien_acid.dm" -#include "code\game\objects\effects\anomalies.dm" -#include "code\game\objects\effects\blessing.dm" -#include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\contraband.dm" -#include "code\game\objects\effects\countdown.dm" -#include "code\game\objects\effects\effects.dm" -#include "code\game\objects\effects\forcefields.dm" -#include "code\game\objects\effects\glowshroom.dm" -#include "code\game\objects\effects\landmarks.dm" -#include "code\game\objects\effects\mines.dm" -#include "code\game\objects\effects\misc.dm" -#include "code\game\objects\effects\overlays.dm" -#include "code\game\objects\effects\portals.dm" -#include "code\game\objects\effects\proximity.dm" -#include "code\game\objects\effects\spiders.dm" -#include "code\game\objects\effects\step_triggers.dm" -#include "code\game\objects\effects\wanted_poster.dm" -#include "code\game\objects\effects\decals\cleanable.dm" -#include "code\game\objects\effects\decals\crayon.dm" -#include "code\game\objects\effects\decals\decal.dm" -#include "code\game\objects\effects\decals\misc.dm" -#include "code\game\objects\effects\decals\remains.dm" -#include "code\game\objects\effects\decals\cleanable\aliens.dm" -#include "code\game\objects\effects\decals\cleanable\gibs.dm" -#include "code\game\objects\effects\decals\cleanable\humans.dm" -#include "code\game\objects\effects\decals\cleanable\misc.dm" -#include "code\game\objects\effects\decals\cleanable\robots.dm" -#include "code\game\objects\effects\decals\turfdecal\dirt.dm" -#include "code\game\objects\effects\decals\turfdecal\markings.dm" -#include "code\game\objects\effects\decals\turfdecal\tilecoloring.dm" -#include "code\game\objects\effects\decals\turfdecal\weather.dm" -#include "code\game\objects\effects\effect_system\effect_system.dm" -#include "code\game\objects\effects\effect_system\effects_explosion.dm" -#include "code\game\objects\effects\effect_system\effects_foam.dm" -#include "code\game\objects\effects\effect_system\effects_other.dm" -#include "code\game\objects\effects\effect_system\effects_smoke.dm" -#include "code\game\objects\effects\effect_system\effects_sparks.dm" -#include "code\game\objects\effects\effect_system\effects_water.dm" -#include "code\game\objects\effects\spawners\bombspawner.dm" -#include "code\game\objects\effects\spawners\bundle.dm" -#include "code\game\objects\effects\spawners\gibspawner.dm" -#include "code\game\objects\effects\spawners\lootdrop.dm" -#include "code\game\objects\effects\spawners\structure.dm" -#include "code\game\objects\effects\spawners\traps.dm" -#include "code\game\objects\effects\spawners\vaultspawner.dm" -#include "code\game\objects\effects\spawners\xeno_egg_delivery.dm" -#include "code\game\objects\effects\temporary_visuals\clockcult.dm" -#include "code\game\objects\effects\temporary_visuals\cult.dm" -#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" -#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" -#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm" -#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" -#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm" -#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" -#include "code\game\objects\items\AI_modules.dm" -#include "code\game\objects\items\airlock_painter.dm" -#include "code\game\objects\items\apc_frame.dm" -#include "code\game\objects\items\balls.dm" -#include "code\game\objects\items\blueprints.dm" -#include "code\game\objects\items\body_egg.dm" -#include "code\game\objects\items\bodybag.dm" -#include "code\game\objects\items\boombox.dm" -#include "code\game\objects\items\candle.dm" -#include "code\game\objects\items\cardboard_cutouts.dm" -#include "code\game\objects\items\cards_ids.dm" -#include "code\game\objects\items\charter.dm" -#include "code\game\objects\items\chrono_eraser.dm" -#include "code\game\objects\items\cigs_lighters.dm" -#include "code\game\objects\items\clown_items.dm" -#include "code\game\objects\items\control_wand.dm" -#include "code\game\objects\items\cosmetics.dm" -#include "code\game\objects\items\courtroom.dm" -#include "code\game\objects\items\crayons.dm" -#include "code\game\objects\items\defib.dm" -#include "code\game\objects\items\dehy_carp.dm" -#include "code\game\objects\items\dice.dm" -#include "code\game\objects\items\dna_injector.dm" -#include "code\game\objects\items\documents.dm" -#include "code\game\objects\items\eightball.dm" -#include "code\game\objects\items\extinguisher.dm" -#include "code\game\objects\items\flamethrower.dm" -#include "code\game\objects\items\gift.dm" -#include "code\game\objects\items\granters.dm" -#include "code\game\objects\items\handcuffs.dm" -#include "code\game\objects\items\his_grace.dm" -#include "code\game\objects\items\holosign_creator.dm" -#include "code\game\objects\items\holy_weapons.dm" -#include "code\game\objects\items\hot_potato.dm" -#include "code\game\objects\items\inducer.dm" -#include "code\game\objects\items\kitchen.dm" -#include "code\game\objects\items\latexballoon.dm" -#include "code\game\objects\items\manuals.dm" -#include "code\game\objects\items\miscellaneous.dm" -#include "code\game\objects\items\mop.dm" -#include "code\game\objects\items\paint.dm" -#include "code\game\objects\items\paiwire.dm" -#include "code\game\objects\items\pet_carrier.dm" -#include "code\game\objects\items\pinpointer.dm" -#include "code\game\objects\items\plushes.dm" -#include "code\game\objects\items\pneumaticCannon.dm" -#include "code\game\objects\items\powerfist.dm" -#include "code\game\objects\items\RCD.dm" -#include "code\game\objects\items\RCL.dm" -#include "code\game\objects\items\religion.dm" -#include "code\game\objects\items\RPD.dm" -#include "code\game\objects\items\RSF.dm" -#include "code\game\objects\items\scrolls.dm" -#include "code\game\objects\items\sharpener.dm" -#include "code\game\objects\items\shields.dm" -#include "code\game\objects\items\shooting_range.dm" -#include "code\game\objects\items\signs.dm" -#include "code\game\objects\items\singularityhammer.dm" -#include "code\game\objects\items\stunbaton.dm" -#include "code\game\objects\items\taster.dm" -#include "code\game\objects\items\teleportation.dm" -#include "code\game\objects\items\teleprod.dm" -#include "code\game\objects\items\telescopic_iv.dm" -#include "code\game\objects\items\theft_tools.dm" -#include "code\game\objects\items\toys.dm" -#include "code\game\objects\items\trash.dm" -#include "code\game\objects\items\twohanded.dm" -#include "code\game\objects\items\vending_items.dm" -#include "code\game\objects\items\weaponry.dm" -#include "code\game\objects\items\circuitboards\circuitboard.dm" -#include "code\game\objects\items\circuitboards\computer_circuitboards.dm" -#include "code\game\objects\items\circuitboards\machine_circuitboards.dm" -#include "code\game\objects\items\devices\aicard.dm" -#include "code\game\objects\items\devices\anomaly_neutralizer.dm" -#include "code\game\objects\items\devices\beacon.dm" -#include "code\game\objects\items\devices\camera_bug.dm" -#include "code\game\objects\items\devices\chameleonproj.dm" -#include "code\game\objects\items\devices\compressionkit.dm" -#include "code\game\objects\items\devices\desynchronizer.dm" -#include "code\game\objects\items\devices\dogborg_sleeper.dm" -#include "code\game\objects\items\devices\doorCharge.dm" -#include "code\game\objects\items\devices\electroadaptive_pseudocircuit.dm" -#include "code\game\objects\items\devices\flashlight.dm" -#include "code\game\objects\items\devices\forcefieldprojector.dm" -#include "code\game\objects\items\devices\geiger_counter.dm" -#include "code\game\objects\items\devices\glue.dm" -#include "code\game\objects\items\devices\gps.dm" -#include "code\game\objects\items\devices\instruments.dm" -#include "code\game\objects\items\devices\laserpointer.dm" -#include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\megaphone.dm" -#include "code\game\objects\items\devices\multitool.dm" -#include "code\game\objects\items\devices\paicard.dm" -#include "code\game\objects\items\devices\pipe_painter.dm" -#include "code\game\objects\items\devices\powersink.dm" -#include "code\game\objects\items\devices\pressureplates.dm" -#include "code\game\objects\items\devices\quantum_keycard.dm" -#include "code\game\objects\items\devices\reverse_bear_trap.dm" -#include "code\game\objects\items\devices\scanners.dm" -#include "code\game\objects\items\devices\sensor_device.dm" -#include "code\game\objects\items\devices\taperecorder.dm" -#include "code\game\objects\items\devices\traitordevices.dm" -#include "code\game\objects\items\devices\transfer_valve.dm" -#include "code\game\objects\items\devices\PDA\cart.dm" -#include "code\game\objects\items\devices\PDA\PDA.dm" -#include "code\game\objects\items\devices\PDA\PDA_types.dm" -#include "code\game\objects\items\devices\PDA\radio.dm" -#include "code\game\objects\items\devices\PDA\virus_cart.dm" -#include "code\game\objects\items\devices\radio\electropack.dm" -#include "code\game\objects\items\devices\radio\encryptionkey.dm" -#include "code\game\objects\items\devices\radio\headset.dm" -#include "code\game\objects\items\devices\radio\intercom.dm" -#include "code\game\objects\items\devices\radio\radio.dm" -#include "code\game\objects\items\grenades\antigravity.dm" -#include "code\game\objects\items\grenades\chem_grenade.dm" -#include "code\game\objects\items\grenades\clusterbuster.dm" -#include "code\game\objects\items\grenades\emgrenade.dm" -#include "code\game\objects\items\grenades\flashbang.dm" -#include "code\game\objects\items\grenades\ghettobomb.dm" -#include "code\game\objects\items\grenades\grenade.dm" -#include "code\game\objects\items\grenades\plastic.dm" -#include "code\game\objects\items\grenades\smokebomb.dm" -#include "code\game\objects\items\grenades\spawnergrenade.dm" -#include "code\game\objects\items\grenades\syndieminibomb.dm" -#include "code\game\objects\items\implants\implant.dm" -#include "code\game\objects\items\implants\implant_abductor.dm" -#include "code\game\objects\items\implants\implant_chem.dm" -#include "code\game\objects\items\implants\implant_clown.dm" -#include "code\game\objects\items\implants\implant_exile.dm" -#include "code\game\objects\items\implants\implant_explosive.dm" -#include "code\game\objects\items\implants\implant_freedom.dm" -#include "code\game\objects\items\implants\implant_krav_maga.dm" -#include "code\game\objects\items\implants\implant_mindshield.dm" -#include "code\game\objects\items\implants\implant_misc.dm" -#include "code\game\objects\items\implants\implant_radio.dm" -#include "code\game\objects\items\implants\implant_spell.dm" -#include "code\game\objects\items\implants\implant_stealth.dm" -#include "code\game\objects\items\implants\implant_storage.dm" -#include "code\game\objects\items\implants\implant_track.dm" -#include "code\game\objects\items\implants\implant_uplink.dm" -#include "code\game\objects\items\implants\implantcase.dm" -#include "code\game\objects\items\implants\implantchair.dm" -#include "code\game\objects\items\implants\implanter.dm" -#include "code\game\objects\items\implants\implantpad.dm" -#include "code\game\objects\items\melee\energy.dm" -#include "code\game\objects\items\melee\misc.dm" -#include "code\game\objects\items\melee\transforming.dm" -#include "code\game\objects\items\robot\ai_upgrades.dm" -#include "code\game\objects\items\robot\robot_items.dm" -#include "code\game\objects\items\robot\robot_parts.dm" -#include "code\game\objects\items\robot\robot_upgrades.dm" -#include "code\game\objects\items\stacks\bscrystal.dm" -#include "code\game\objects\items\stacks\cash.dm" -#include "code\game\objects\items\stacks\medical.dm" -#include "code\game\objects\items\stacks\rods.dm" -#include "code\game\objects\items\stacks\stack.dm" -#include "code\game\objects\items\stacks\telecrystal.dm" -#include "code\game\objects\items\stacks\wrap.dm" -#include "code\game\objects\items\stacks\sheets\glass.dm" -#include "code\game\objects\items\stacks\sheets\leather.dm" -#include "code\game\objects\items\stacks\sheets\light.dm" -#include "code\game\objects\items\stacks\sheets\mineral.dm" -#include "code\game\objects\items\stacks\sheets\sheet_types.dm" -#include "code\game\objects\items\stacks\sheets\sheets.dm" -#include "code\game\objects\items\stacks\tiles\light.dm" -#include "code\game\objects\items\stacks\tiles\tile_mineral.dm" -#include "code\game\objects\items\stacks\tiles\tile_types.dm" -#include "code\game\objects\items\storage\backpack.dm" -#include "code\game\objects\items\storage\bags.dm" -#include "code\game\objects\items\storage\belt.dm" -#include "code\game\objects\items\storage\book.dm" -#include "code\game\objects\items\storage\boxes.dm" -#include "code\game\objects\items\storage\briefcase.dm" -#include "code\game\objects\items\storage\dakis.dm" -#include "code\game\objects\items\storage\fancy.dm" -#include "code\game\objects\items\storage\firstaid.dm" -#include "code\game\objects\items\storage\lockbox.dm" -#include "code\game\objects\items\storage\secure.dm" -#include "code\game\objects\items\storage\storage.dm" -#include "code\game\objects\items\storage\toolbox.dm" -#include "code\game\objects\items\storage\uplink_kits.dm" -#include "code\game\objects\items\storage\wallets.dm" -#include "code\game\objects\items\tanks\jetpack.dm" -#include "code\game\objects\items\tanks\tank_types.dm" -#include "code\game\objects\items\tanks\tanks.dm" -#include "code\game\objects\items\tanks\watertank.dm" -#include "code\game\objects\items\tools\crowbar.dm" -#include "code\game\objects\items\tools\screwdriver.dm" -#include "code\game\objects\items\tools\weldingtool.dm" -#include "code\game\objects\items\tools\wirecutters.dm" -#include "code\game\objects\items\tools\wrench.dm" -#include "code\game\objects\structures\ai_core.dm" -#include "code\game\objects\structures\aliens.dm" -#include "code\game\objects\structures\artstuff.dm" -#include "code\game\objects\structures\barsigns.dm" -#include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\destructible_structures.dm" -#include "code\game\objects\structures\displaycase.dm" -#include "code\game\objects\structures\divine.dm" -#include "code\game\objects\structures\door_assembly.dm" -#include "code\game\objects\structures\door_assembly_types.dm" -#include "code\game\objects\structures\dresser.dm" -#include "code\game\objects\structures\electricchair.dm" -#include "code\game\objects\structures\extinguisher.dm" -#include "code\game\objects\structures\false_walls.dm" -#include "code\game\objects\structures\femur_breaker.dm" -#include "code\game\objects\structures\fence.dm" -#include "code\game\objects\structures\fireaxe.dm" -#include "code\game\objects\structures\fireplace.dm" -#include "code\game\objects\structures\flora.dm" -#include "code\game\objects\structures\fluff.dm" -#include "code\game\objects\structures\ghost_role_spawners.dm" -#include "code\game\objects\structures\girders.dm" -#include "code\game\objects\structures\grille.dm" -#include "code\game\objects\structures\guillotine.dm" -#include "code\game\objects\structures\guncase.dm" -#include "code\game\objects\structures\headpike.dm" -#include "code\game\objects\structures\hivebot.dm" -#include "code\game\objects\structures\holosign.dm" -#include "code\game\objects\structures\janicart.dm" -#include "code\game\objects\structures\kitchen_spike.dm" -#include "code\game\objects\structures\ladders.dm" -#include "code\game\objects\structures\lattice.dm" -#include "code\game\objects\structures\life_candle.dm" -#include "code\game\objects\structures\loom.dm" -#include "code\game\objects\structures\manned_turret.dm" -#include "code\game\objects\structures\memorial.dm" -#include "code\game\objects\structures\mineral_doors.dm" -#include "code\game\objects\structures\mirror.dm" -#include "code\game\objects\structures\mop_bucket.dm" -#include "code\game\objects\structures\morgue.dm" -#include "code\game\objects\structures\musician.dm" -#include "code\game\objects\structures\noticeboard.dm" -#include "code\game\objects\structures\petrified_statue.dm" -#include "code\game\objects\structures\plasticflaps.dm" -#include "code\game\objects\structures\reflector.dm" -#include "code\game\objects\structures\safe.dm" -#include "code\game\objects\structures\showcase.dm" -#include "code\game\objects\structures\spirit_board.dm" -#include "code\game\objects\structures\stairs.dm" -#include "code\game\objects\structures\statues.dm" -#include "code\game\objects\structures\table_frames.dm" -#include "code\game\objects\structures\tables_racks.dm" -#include "code\game\objects\structures\tank_dispenser.dm" -#include "code\game\objects\structures\target_stake.dm" -#include "code\game\objects\structures\traps.dm" -#include "code\game\objects\structures\watercloset.dm" -#include "code\game\objects\structures\windoor_assembly.dm" -#include "code\game\objects\structures\window.dm" -#include "code\game\objects\structures\beds_chairs\alien_nest.dm" -#include "code\game\objects\structures\beds_chairs\bed.dm" -#include "code\game\objects\structures\beds_chairs\chair.dm" -#include "code\game\objects\structures\beds_chairs\pew.dm" -#include "code\game\objects\structures\crates_lockers\closets.dm" -#include "code\game\objects\structures\crates_lockers\crates.dm" -#include "code\game\objects\structures\crates_lockers\closets\bodybag.dm" -#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" -#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" -#include "code\game\objects\structures\crates_lockers\closets\genpop.dm" -#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" -#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" -#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" -#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\misc.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" -#include "code\game\objects\structures\crates_lockers\crates\bins.dm" -#include "code\game\objects\structures\crates_lockers\crates\critter.dm" -#include "code\game\objects\structures\crates_lockers\crates\large.dm" -#include "code\game\objects\structures\crates_lockers\crates\secure.dm" -#include "code\game\objects\structures\crates_lockers\crates\wooden.dm" -#include "code\game\objects\structures\signs\_signs.dm" -#include "code\game\objects\structures\signs\signs_departments.dm" -#include "code\game\objects\structures\signs\signs_maps.dm" -#include "code\game\objects\structures\signs\signs_plaques.dm" -#include "code\game\objects\structures\signs\signs_warning.dm" -#include "code\game\objects\structures\transit_tubes\station.dm" -#include "code\game\objects\structures\transit_tubes\transit_tube.dm" -#include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" -#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" -#include "code\game\turfs\baseturf_skipover.dm" -#include "code\game\turfs\change_turf.dm" -#include "code\game\turfs\closed.dm" -#include "code\game\turfs\open.dm" -#include "code\game\turfs\turf.dm" -#include "code\game\turfs\openspace\openspace.dm" -#include "code\game\turfs\simulated\chasm.dm" -#include "code\game\turfs\simulated\dirtystation.dm" -#include "code\game\turfs\simulated\floor.dm" -#include "code\game\turfs\simulated\lava.dm" -#include "code\game\turfs\simulated\minerals.dm" -#include "code\game\turfs\simulated\reebe_void.dm" -#include "code\game\turfs\simulated\river.dm" -#include "code\game\turfs\simulated\walls.dm" -#include "code\game\turfs\simulated\water.dm" -#include "code\game\turfs\simulated\floor\fancy_floor.dm" -#include "code\game\turfs\simulated\floor\light_floor.dm" -#include "code\game\turfs\simulated\floor\mineral_floor.dm" -#include "code\game\turfs\simulated\floor\misc_floor.dm" -#include "code\game\turfs\simulated\floor\plasteel_floor.dm" -#include "code\game\turfs\simulated\floor\plating.dm" -#include "code\game\turfs\simulated\floor\reinf_floor.dm" -#include "code\game\turfs\simulated\floor\plating\asteroid.dm" -#include "code\game\turfs\simulated\floor\plating\dirt.dm" -#include "code\game\turfs\simulated\floor\plating\misc_plating.dm" -#include "code\game\turfs\simulated\wall\mineral_walls.dm" -#include "code\game\turfs\simulated\wall\misc_walls.dm" -#include "code\game\turfs\simulated\wall\reinf_walls.dm" -#include "code\game\turfs\space\space.dm" -#include "code\game\turfs\space\transit.dm" -#include "code\modules\admin\admin.dm" -#include "code\modules\admin\admin_investigate.dm" -#include "code\modules\admin\admin_ranks.dm" -#include "code\modules\admin\admin_verbs.dm" -#include "code\modules\admin\adminmenu.dm" -#include "code\modules\admin\antag_panel.dm" -#include "code\modules\admin\banjob.dm" -#include "code\modules\admin\chat_commands.dm" -#include "code\modules\admin\check_antagonists.dm" -#include "code\modules\admin\create_mob.dm" -#include "code\modules\admin\create_object.dm" -#include "code\modules\admin\create_poll.dm" -#include "code\modules\admin\create_turf.dm" -#include "code\modules\admin\fun_balloon.dm" -#include "code\modules\admin\holder2.dm" -#include "code\modules\admin\ipintel.dm" -#include "code\modules\admin\IsBanned.dm" -#include "code\modules\admin\NewBan.dm" -#include "code\modules\admin\permissionedit.dm" -#include "code\modules\admin\player_panel.dm" -#include "code\modules\admin\secrets.dm" -#include "code\modules\admin\sound_emitter.dm" -#include "code\modules\admin\sql_message_system.dm" -#include "code\modules\admin\stickyban.dm" -#include "code\modules\admin\topic.dm" -#include "code\modules\admin\whitelist.dm" -#include "code\modules\admin\DB_ban\functions.dm" -#include "code\modules\admin\verbs\adminhelp.dm" -#include "code\modules\admin\verbs\adminjump.dm" -#include "code\modules\admin\verbs\adminpm.dm" -#include "code\modules\admin\verbs\adminsay.dm" -#include "code\modules\admin\verbs\ak47s.dm" -#include "code\modules\admin\verbs\atmosdebug.dm" -#include "code\modules\admin\verbs\bluespacearty.dm" -#include "code\modules\admin\verbs\borgpanel.dm" -#include "code\modules\admin\verbs\BrokenInhands.dm" -#include "code\modules\admin\verbs\cinematic.dm" -#include "code\modules\admin\verbs\deadsay.dm" -#include "code\modules\admin\verbs\debug.dm" -#include "code\modules\admin\verbs\diagnostics.dm" -#include "code\modules\admin\verbs\dice.dm" -#include "code\modules\admin\verbs\fps.dm" -#include "code\modules\admin\verbs\getlogs.dm" -#include "code\modules\admin\verbs\individual_logging.dm" -#include "code\modules\admin\verbs\machine_upgrade.dm" -#include "code\modules\admin\verbs\manipulate_organs.dm" -#include "code\modules\admin\verbs\map_template_loadverb.dm" -#include "code\modules\admin\verbs\mapping.dm" -#include "code\modules\admin\verbs\maprotation.dm" -#include "code\modules\admin\verbs\massmodvar.dm" -#include "code\modules\admin\verbs\modifyvariables.dm" -#include "code\modules\admin\verbs\one_click_antag.dm" -#include "code\modules\admin\verbs\onlyone.dm" -#include "code\modules\admin\verbs\panicbunker.dm" -#include "code\modules\admin\verbs\playsound.dm" -#include "code\modules\admin\verbs\possess.dm" -#include "code\modules\admin\verbs\pray.dm" -#include "code\modules\admin\verbs\randomverbs.dm" -#include "code\modules\admin\verbs\reestablish_db_connection.dm" -#include "code\modules\admin\verbs\spawnobjasmob.dm" -#include "code\modules\admin\verbs\tripAI.dm" -#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" -#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" -#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm" -#include "code\modules\antagonists\_common\antag_datum.dm" -#include "code\modules\antagonists\_common\antag_helpers.dm" -#include "code\modules\antagonists\_common\antag_hud.dm" -#include "code\modules\antagonists\_common\antag_spawner.dm" -#include "code\modules\antagonists\_common\antag_team.dm" -#include "code\modules\antagonists\abductor\abductor.dm" -#include "code\modules\antagonists\abductor\abductee\abductee_objectives.dm" -#include "code\modules\antagonists\abductor\equipment\abduction_gear.dm" -#include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm" -#include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm" -#include "code\modules\antagonists\abductor\equipment\gland.dm" -#include "code\modules\antagonists\abductor\equipment\glands\access.dm" -#include "code\modules\antagonists\abductor\equipment\glands\blood.dm" -#include "code\modules\antagonists\abductor\equipment\glands\chem.dm" -#include "code\modules\antagonists\abductor\equipment\glands\egg.dm" -#include "code\modules\antagonists\abductor\equipment\glands\electric.dm" -#include "code\modules\antagonists\abductor\equipment\glands\heal.dm" -#include "code\modules\antagonists\abductor\equipment\glands\mindshock.dm" -#include "code\modules\antagonists\abductor\equipment\glands\plasma.dm" -#include "code\modules\antagonists\abductor\equipment\glands\quantum.dm" -#include "code\modules\antagonists\abductor\equipment\glands\slime.dm" -#include "code\modules\antagonists\abductor\equipment\glands\spider.dm" -#include "code\modules\antagonists\abductor\equipment\glands\transform.dm" -#include "code\modules\antagonists\abductor\equipment\glands\trauma.dm" -#include "code\modules\antagonists\abductor\equipment\glands\ventcrawl.dm" -#include "code\modules\antagonists\abductor\equipment\glands\viral.dm" -#include "code\modules\antagonists\abductor\machinery\camera.dm" -#include "code\modules\antagonists\abductor\machinery\console.dm" -#include "code\modules\antagonists\abductor\machinery\dispenser.dm" -#include "code\modules\antagonists\abductor\machinery\experiment.dm" -#include "code\modules\antagonists\abductor\machinery\pad.dm" -#include "code\modules\antagonists\blob\blob.dm" -#include "code\modules\antagonists\blob\blob\blob_report.dm" -#include "code\modules\antagonists\blob\blob\overmind.dm" -#include "code\modules\antagonists\blob\blob\powers.dm" -#include "code\modules\antagonists\blob\blob\theblob.dm" -#include "code\modules\antagonists\blob\blob\blobs\blob_mobs.dm" -#include "code\modules\antagonists\blob\blob\blobs\core.dm" -#include "code\modules\antagonists\blob\blob\blobs\factory.dm" -#include "code\modules\antagonists\blob\blob\blobs\node.dm" -#include "code\modules\antagonists\blob\blob\blobs\resource.dm" -#include "code\modules\antagonists\blob\blob\blobs\shield.dm" -#include "code\modules\antagonists\blood_contract\blood_contract.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_flaws.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_integration.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_life.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_objectives.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_powers.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_sunlight.dm" -#include "code\modules\antagonists\bloodsucker\bloodsucker_ui.dm" -#include "code\modules\antagonists\bloodsucker\datum_bloodsucker.dm" -#include "code\modules\antagonists\bloodsucker\datum_hunter.dm" -#include "code\modules\antagonists\bloodsucker\datum_vassal.dm" -#include "code\modules\antagonists\bloodsucker\items\bloodsucker_organs.dm" -#include "code\modules\antagonists\bloodsucker\items\bloodsucker_stake.dm" -#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_coffin.dm" -#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_crypt.dm" -#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_lair.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_brawn.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_cloak.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_feed.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_fortitude.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_gohome.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_haste.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_lunge.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_masquerade.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_mesmerize.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_trespass.dm" -#include "code\modules\antagonists\bloodsucker\powers\bs_veil.dm" -#include "code\modules\antagonists\bloodsucker\powers\v_recuperate.dm" -#include "code\modules\antagonists\brainwashing\brainwashing.dm" -#include "code\modules\antagonists\brother\brother.dm" -#include "code\modules\antagonists\changeling\cellular_emporium.dm" -#include "code\modules\antagonists\changeling\changeling.dm" -#include "code\modules\antagonists\changeling\changeling_power.dm" -#include "code\modules\antagonists\changeling\powers\absorb.dm" -#include "code\modules\antagonists\changeling\powers\adrenaline.dm" -#include "code\modules\antagonists\changeling\powers\augmented_eyesight.dm" -#include "code\modules\antagonists\changeling\powers\biodegrade.dm" -#include "code\modules\antagonists\changeling\powers\chameleon_skin.dm" -#include "code\modules\antagonists\changeling\powers\digitalcamo.dm" -#include "code\modules\antagonists\changeling\powers\fakedeath.dm" -#include "code\modules\antagonists\changeling\powers\fleshmend.dm" -#include "code\modules\antagonists\changeling\powers\headcrab.dm" -#include "code\modules\antagonists\changeling\powers\hivemind.dm" -#include "code\modules\antagonists\changeling\powers\humanform.dm" -#include "code\modules\antagonists\changeling\powers\lesserform.dm" -#include "code\modules\antagonists\changeling\powers\linglink.dm" -#include "code\modules\antagonists\changeling\powers\mimic_voice.dm" -#include "code\modules\antagonists\changeling\powers\mutations.dm" -#include "code\modules\antagonists\changeling\powers\panacea.dm" -#include "code\modules\antagonists\changeling\powers\pheromone_receptors.dm" -#include "code\modules\antagonists\changeling\powers\regenerate.dm" -#include "code\modules\antagonists\changeling\powers\revive.dm" -#include "code\modules\antagonists\changeling\powers\shriek.dm" -#include "code\modules\antagonists\changeling\powers\spiders.dm" -#include "code\modules\antagonists\changeling\powers\strained_muscles.dm" -#include "code\modules\antagonists\changeling\powers\tiny_prick.dm" -#include "code\modules\antagonists\changeling\powers\transform.dm" -#include "code\modules\antagonists\clockcult\clock_effect.dm" -#include "code\modules\antagonists\clockcult\clock_item.dm" -#include "code\modules\antagonists\clockcult\clock_mobs.dm" -#include "code\modules\antagonists\clockcult\clock_scripture.dm" -#include "code\modules\antagonists\clockcult\clock_structure.dm" -#include "code\modules\antagonists\clockcult\clockcult.dm" -#include "code\modules\antagonists\clockcult\clock_effects\city_of_cogs_rift.dm" -#include "code\modules\antagonists\clockcult\clock_effects\clock_overlay.dm" -#include "code\modules\antagonists\clockcult\clock_effects\clock_sigils.dm" -#include "code\modules\antagonists\clockcult\clock_effects\general_markers.dm" -#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm" -#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\power_helpers.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm" -#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm" -#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm" -#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm" -#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm" -#include "code\modules\antagonists\clockcult\clock_items\clockwork_weaponry.dm" -#include "code\modules\antagonists\clockcult\clock_items\construct_chassis.dm" -#include "code\modules\antagonists\clockcult\clock_items\integration_cog.dm" -#include "code\modules\antagonists\clockcult\clock_items\judicial_visor.dm" -#include "code\modules\antagonists\clockcult\clock_items\replica_fabricator.dm" -#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm" -#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm" -#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm" -#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm" -#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm" -#include "code\modules\antagonists\clockcult\clock_mobs\clockwork_marauder.dm" -#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_applications.dm" -#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_cyborg.dm" -#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_drivers.dm" -#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm" -#include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm" -#include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm" -#include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm" -#include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm" -#include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm" -#include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm" -#include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm" -#include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm" -#include "code\modules\antagonists\clockcult\clock_structures\reflector.dm" -#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm" -#include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm" -#include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm" -#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm" -#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor.dm" -#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor_mech.dm" -#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\repeater.dm" -#include "code\modules\antagonists\clockcult\clock_structures\traps\brass_skewer.dm" -#include "code\modules\antagonists\clockcult\clock_structures\traps\power_null.dm" -#include "code\modules\antagonists\clockcult\clock_structures\traps\steam_vent.dm" -#include "code\modules\antagonists\cult\blood_magic.dm" -#include "code\modules\antagonists\cult\cult.dm" -#include "code\modules\antagonists\cult\cult_comms.dm" -#include "code\modules\antagonists\cult\cult_items.dm" -#include "code\modules\antagonists\cult\cult_structures.dm" -#include "code\modules\antagonists\cult\ritual.dm" -#include "code\modules\antagonists\cult\rune_spawn_action.dm" -#include "code\modules\antagonists\cult\runes.dm" -#include "code\modules\antagonists\devil\devil.dm" -#include "code\modules\antagonists\devil\devil_helpers.dm" -#include "code\modules\antagonists\devil\imp\imp.dm" -#include "code\modules\antagonists\devil\sintouched\objectives.dm" -#include "code\modules\antagonists\devil\sintouched\sintouched.dm" -#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" -#include "code\modules\antagonists\devil\true_devil\inventory.dm" -#include "code\modules\antagonists\disease\disease_abilities.dm" -#include "code\modules\antagonists\disease\disease_datum.dm" -#include "code\modules\antagonists\disease\disease_disease.dm" -#include "code\modules\antagonists\disease\disease_event.dm" -#include "code\modules\antagonists\disease\disease_mob.dm" -#include "code\modules\antagonists\ert\ert.dm" -#include "code\modules\antagonists\greentext\greentext.dm" -#include "code\modules\antagonists\greybois\greybois.dm" -#include "code\modules\antagonists\highlander\highlander.dm" -#include "code\modules\antagonists\magic_servant\magic_servant.dm" -#include "code\modules\antagonists\monkey\monkey.dm" -#include "code\modules\antagonists\morph\morph.dm" -#include "code\modules\antagonists\morph\morph_antag.dm" -#include "code\modules\antagonists\nightmare\nightmare.dm" -#include "code\modules\antagonists\ninja\ninja.dm" -#include "code\modules\antagonists\nukeop\clownop.dm" -#include "code\modules\antagonists\nukeop\nukeop.dm" -#include "code\modules\antagonists\nukeop\equipment\borgchameleon.dm" -#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm" -#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm" -#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm" -#include "code\modules\antagonists\official\official.dm" -#include "code\modules\antagonists\overthrow\overthrow.dm" -#include "code\modules\antagonists\overthrow\overthrow_converter.dm" -#include "code\modules\antagonists\overthrow\overthrow_team.dm" -#include "code\modules\antagonists\pirate\pirate.dm" -#include "code\modules\antagonists\revenant\revenant.dm" -#include "code\modules\antagonists\revenant\revenant_abilities.dm" -#include "code\modules\antagonists\revenant\revenant_antag.dm" -#include "code\modules\antagonists\revenant\revenant_blight.dm" -#include "code\modules\antagonists\revenant\revenant_spawn_event.dm" -#include "code\modules\antagonists\revolution\revolution.dm" -#include "code\modules\antagonists\santa\santa.dm" -#include "code\modules\antagonists\separatist\separatist.dm" -#include "code\modules\antagonists\slaughter\slaughter.dm" -#include "code\modules\antagonists\slaughter\slaughter_antag.dm" -#include "code\modules\antagonists\slaughter\slaughterevent.dm" -#include "code\modules\antagonists\survivalist\survivalist.dm" -#include "code\modules\antagonists\swarmer\swarmer.dm" -#include "code\modules\antagonists\swarmer\swarmer_event.dm" -#include "code\modules\antagonists\traitor\datum_traitor.dm" -#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm" -#include "code\modules\antagonists\traitor\IAA\internal_affairs.dm" -#include "code\modules\antagonists\valentines\heartbreaker.dm" -#include "code\modules\antagonists\valentines\valentine.dm" -#include "code\modules\antagonists\wishgranter\wishgranter.dm" -#include "code\modules\antagonists\wizard\wizard.dm" -#include "code\modules\antagonists\wizard\equipment\artefact.dm" -#include "code\modules\antagonists\wizard\equipment\soulstone.dm" -#include "code\modules\antagonists\wizard\equipment\spellbook.dm" -#include "code\modules\antagonists\xeno\xeno.dm" -#include "code\modules\assembly\assembly.dm" -#include "code\modules\assembly\bomb.dm" -#include "code\modules\assembly\doorcontrol.dm" -#include "code\modules\assembly\flash.dm" -#include "code\modules\assembly\health.dm" -#include "code\modules\assembly\helpers.dm" -#include "code\modules\assembly\holder.dm" -#include "code\modules\assembly\igniter.dm" -#include "code\modules\assembly\infrared.dm" -#include "code\modules\assembly\mousetrap.dm" -#include "code\modules\assembly\playback.dm" -#include "code\modules\assembly\proximity.dm" -#include "code\modules\assembly\shock_kit.dm" -#include "code\modules\assembly\signaler.dm" -#include "code\modules\assembly\timer.dm" -#include "code\modules\assembly\voice.dm" -#include "code\modules\atmospherics\multiz.dm" -#include "code\modules\atmospherics\environmental\LINDA_fire.dm" -#include "code\modules\atmospherics\environmental\LINDA_system.dm" -#include "code\modules\atmospherics\environmental\LINDA_turf_tile.dm" -#include "code\modules\atmospherics\gasmixtures\gas_mixture.dm" -#include "code\modules\atmospherics\gasmixtures\gas_types.dm" -#include "code\modules\atmospherics\gasmixtures\immutable_mixtures.dm" -#include "code\modules\atmospherics\gasmixtures\reactions.dm" -#include "code\modules\atmospherics\machinery\airalarm.dm" -#include "code\modules\atmospherics\machinery\atmosmachinery.dm" -#include "code\modules\atmospherics\machinery\datum_pipeline.dm" -#include "code\modules\atmospherics\machinery\components\components_base.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\binary_devices.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\circulator.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\dp_vent_pump.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\passive_gate.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\pump.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\valve.dm" -#include "code\modules\atmospherics\machinery\components\binary_devices\volume_pump.dm" -#include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm" -#include "code\modules\atmospherics\machinery\components\trinary_devices\mixer.dm" -#include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_devices.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\cryo.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\heat_exchanger.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\portables_connector.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\tank.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\unary_devices.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm" -#include "code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm" -#include "code\modules\atmospherics\machinery\other\meter.dm" -#include "code\modules\atmospherics\machinery\other\miner.dm" -#include "code\modules\atmospherics\machinery\pipes\layermanifold.dm" -#include "code\modules\atmospherics\machinery\pipes\manifold.dm" -#include "code\modules\atmospherics\machinery\pipes\manifold4w.dm" -#include "code\modules\atmospherics\machinery\pipes\pipes.dm" -#include "code\modules\atmospherics\machinery\pipes\simple.dm" -#include "code\modules\atmospherics\machinery\pipes\heat_exchange\he_pipes.dm" -#include "code\modules\atmospherics\machinery\pipes\heat_exchange\junction.dm" -#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold.dm" -#include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm" -#include "code\modules\atmospherics\machinery\portable\canister.dm" -#include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" -#include "code\modules\atmospherics\machinery\portable\pump.dm" -#include "code\modules\atmospherics\machinery\portable\scrubber.dm" -#include "code\modules\awaymissions\away_props.dm" -#include "code\modules\awaymissions\bluespaceartillery.dm" -#include "code\modules\awaymissions\capture_the_flag.dm" -#include "code\modules\awaymissions\corpse.dm" -#include "code\modules\awaymissions\exile.dm" -#include "code\modules\awaymissions\gateway.dm" -#include "code\modules\awaymissions\pamphlet.dm" -#include "code\modules\awaymissions\signpost.dm" -#include "code\modules\awaymissions\super_secret_room.dm" -#include "code\modules\awaymissions\zlevel.dm" -#include "code\modules\awaymissions\mission_code\Academy.dm" -#include "code\modules\awaymissions\mission_code\Cabin.dm" -#include "code\modules\awaymissions\mission_code\caves.dm" -#include "code\modules\awaymissions\mission_code\centcomAway.dm" -#include "code\modules\awaymissions\mission_code\challenge.dm" -#include "code\modules\awaymissions\mission_code\moonoutpost19.dm" -#include "code\modules\awaymissions\mission_code\murderdome.dm" -#include "code\modules\awaymissions\mission_code\research.dm" -#include "code\modules\awaymissions\mission_code\snowdin.dm" -#include "code\modules\awaymissions\mission_code\spacebattle.dm" -#include "code\modules\awaymissions\mission_code\stationCollision.dm" -#include "code\modules\awaymissions\mission_code\undergroundoutpost45.dm" -#include "code\modules\awaymissions\mission_code\wildwest.dm" -#include "code\modules\bsql\includes.dm" -#include "code\modules\buildmode\bm_mode.dm" -#include "code\modules\buildmode\buildmode.dm" -#include "code\modules\buildmode\buttons.dm" -#include "code\modules\buildmode\effects\line.dm" -#include "code\modules\buildmode\submodes\advanced.dm" -#include "code\modules\buildmode\submodes\area_edit.dm" -#include "code\modules\buildmode\submodes\basic.dm" -#include "code\modules\buildmode\submodes\boom.dm" -#include "code\modules\buildmode\submodes\copy.dm" -#include "code\modules\buildmode\submodes\fill.dm" -#include "code\modules\buildmode\submodes\mapgen.dm" -#include "code\modules\buildmode\submodes\throwing.dm" -#include "code\modules\buildmode\submodes\variable_edit.dm" -#include "code\modules\cargo\bounty.dm" -#include "code\modules\cargo\bounty_console.dm" -#include "code\modules\cargo\centcom_podlauncher.dm" -#include "code\modules\cargo\console.dm" -#include "code\modules\cargo\export_scanner.dm" -#include "code\modules\cargo\exports.dm" -#include "code\modules\cargo\expressconsole.dm" -#include "code\modules\cargo\gondolapod.dm" -#include "code\modules\cargo\order.dm" -#include "code\modules\cargo\packs.dm" -#include "code\modules\cargo\supplypod.dm" -#include "code\modules\cargo\supplypod_beacon.dm" -#include "code\modules\cargo\bounties\assistant.dm" -#include "code\modules\cargo\bounties\botany.dm" -#include "code\modules\cargo\bounties\chef.dm" -#include "code\modules\cargo\bounties\engineering.dm" -#include "code\modules\cargo\bounties\gardencook.dm" -#include "code\modules\cargo\bounties\item.dm" -#include "code\modules\cargo\bounties\mech.dm" -#include "code\modules\cargo\bounties\medical.dm" -#include "code\modules\cargo\bounties\mining.dm" -#include "code\modules\cargo\bounties\reagent.dm" -#include "code\modules\cargo\bounties\science.dm" -#include "code\modules\cargo\bounties\security.dm" -#include "code\modules\cargo\bounties\silly.dm" -#include "code\modules\cargo\bounties\slime.dm" -#include "code\modules\cargo\bounties\special.dm" -#include "code\modules\cargo\bounties\virus.dm" -#include "code\modules\cargo\exports\food_wine.dm" -#include "code\modules\cargo\exports\gear.dm" -#include "code\modules\cargo\exports\large_objects.dm" -#include "code\modules\cargo\exports\manifest.dm" -#include "code\modules\cargo\exports\materials.dm" -#include "code\modules\cargo\exports\organs_robotics.dm" -#include "code\modules\cargo\exports\parts.dm" -#include "code\modules\cargo\exports\seeds.dm" -#include "code\modules\cargo\exports\sheets.dm" -#include "code\modules\cargo\exports\tools.dm" -#include "code\modules\cargo\exports\weapons.dm" -#include "code\modules\cargo\packs\armory.dm" -#include "code\modules\cargo\packs\costumes_toys.dm" -#include "code\modules\cargo\packs\emergency.dm" -#include "code\modules\cargo\packs\engine.dm" -#include "code\modules\cargo\packs\engineering.dm" -#include "code\modules\cargo\packs\livestock.dm" -#include "code\modules\cargo\packs\materials.dm" -#include "code\modules\cargo\packs\medical.dm" -#include "code\modules\cargo\packs\misc.dm" -#include "code\modules\cargo\packs\organic.dm" -#include "code\modules\cargo\packs\science.dm" -#include "code\modules\cargo\packs\security.dm" -#include "code\modules\cargo\packs\service.dm" -#include "code\modules\chatter\chatter.dm" -#include "code\modules\client\asset_cache.dm" -#include "code\modules\client\client_colour.dm" -#include "code\modules\client\client_defines.dm" -#include "code\modules\client\client_procs.dm" -#include "code\modules\client\darkmode.dm" -#include "code\modules\client\message.dm" -#include "code\modules\client\player_details.dm" -#include "code\modules\client\preferences.dm" -#include "code\modules\client\preferences_savefile.dm" -#include "code\modules\client\preferences_toggles.dm" -#include "code\modules\client\preferences_vr.dm" -#include "code\modules\client\verbs\aooc.dm" -#include "code\modules\client\verbs\etips.dm" -#include "code\modules\client\verbs\looc.dm" -#include "code\modules\client\verbs\ooc.dm" -#include "code\modules\client\verbs\ping.dm" -#include "code\modules\client\verbs\suicide.dm" -#include "code\modules\client\verbs\who.dm" -#include "code\modules\clothing\chameleon.dm" -#include "code\modules\clothing\clothing.dm" -#include "code\modules\clothing\ears\_ears.dm" -#include "code\modules\clothing\glasses\_glasses.dm" -#include "code\modules\clothing\glasses\disablerglasses.dm" -#include "code\modules\clothing\glasses\engine_goggles.dm" -#include "code\modules\clothing\glasses\hud.dm" -#include "code\modules\clothing\glasses\phantomthief.dm" -#include "code\modules\clothing\glasses\vg_glasses.dm" -#include "code\modules\clothing\gloves\_gloves.dm" -#include "code\modules\clothing\gloves\boxing.dm" -#include "code\modules\clothing\gloves\color.dm" -#include "code\modules\clothing\gloves\miscellaneous.dm" -#include "code\modules\clothing\gloves\vg_gloves.dm" -#include "code\modules\clothing\head\_head.dm" -#include "code\modules\clothing\head\beanie.dm" -#include "code\modules\clothing\head\cit_hats.dm" -#include "code\modules\clothing\head\collectable.dm" -#include "code\modules\clothing\head\hardhat.dm" -#include "code\modules\clothing\head\helmet.dm" -#include "code\modules\clothing\head\jobs.dm" -#include "code\modules\clothing\head\misc.dm" -#include "code\modules\clothing\head\misc_special.dm" -#include "code\modules\clothing\head\soft_caps.dm" -#include "code\modules\clothing\head\vg_hats.dm" -#include "code\modules\clothing\masks\_masks.dm" -#include "code\modules\clothing\masks\boxing.dm" -#include "code\modules\clothing\masks\breath.dm" -#include "code\modules\clothing\masks\gasmask.dm" -#include "code\modules\clothing\masks\hailer.dm" -#include "code\modules\clothing\masks\miscellaneous.dm" -#include "code\modules\clothing\masks\vg_masks.dm" -#include "code\modules\clothing\neck\_neck.dm" -#include "code\modules\clothing\outfits\ert.dm" -#include "code\modules\clothing\outfits\event.dm" -#include "code\modules\clothing\outfits\plasmaman.dm" -#include "code\modules\clothing\outfits\standard.dm" -#include "code\modules\clothing\outfits\vr.dm" -#include "code\modules\clothing\outfits\vv_outfit.dm" -#include "code\modules\clothing\shoes\_shoes.dm" -#include "code\modules\clothing\shoes\bananashoes.dm" -#include "code\modules\clothing\shoes\colour.dm" -#include "code\modules\clothing\shoes\magboots.dm" -#include "code\modules\clothing\shoes\miscellaneous.dm" -#include "code\modules\clothing\shoes\taeclowndo.dm" -#include "code\modules\clothing\shoes\vg_shoes.dm" -#include "code\modules\clothing\spacesuits\_spacesuits.dm" -#include "code\modules\clothing\spacesuits\chronosuit.dm" -#include "code\modules\clothing\spacesuits\hardsuit.dm" -#include "code\modules\clothing\spacesuits\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\plasmamen.dm" -#include "code\modules\clothing\spacesuits\syndi.dm" -#include "code\modules\clothing\spacesuits\vg_spess.dm" -#include "code\modules\clothing\suits\_suits.dm" -#include "code\modules\clothing\suits\armor.dm" -#include "code\modules\clothing\suits\bio.dm" -#include "code\modules\clothing\suits\cloaks.dm" -#include "code\modules\clothing\suits\jobs.dm" -#include "code\modules\clothing\suits\labcoat.dm" -#include "code\modules\clothing\suits\miscellaneous.dm" -#include "code\modules\clothing\suits\reactive_armour.dm" -#include "code\modules\clothing\suits\toggles.dm" -#include "code\modules\clothing\suits\utility.dm" -#include "code\modules\clothing\suits\vg_suits.dm" -#include "code\modules\clothing\suits\wiz_robe.dm" -#include "code\modules\clothing\under\_under.dm" -#include "code\modules\clothing\under\accessories.dm" -#include "code\modules\clothing\under\color.dm" -#include "code\modules\clothing\under\miscellaneous.dm" -#include "code\modules\clothing\under\pants.dm" -#include "code\modules\clothing\under\polychromic_clothes.dm" -#include "code\modules\clothing\under\shorts.dm" -#include "code\modules\clothing\under\syndicate.dm" -#include "code\modules\clothing\under\trek.dm" -#include "code\modules\clothing\under\vg_under.dm" -#include "code\modules\clothing\under\jobs\civilian.dm" -#include "code\modules\clothing\under\jobs\engineering.dm" -#include "code\modules\clothing\under\jobs\medsci.dm" -#include "code\modules\clothing\under\jobs\security.dm" -#include "code\modules\clothing\under\jobs\Plasmaman\civilian_service.dm" -#include "code\modules\clothing\under\jobs\Plasmaman\engineering.dm" -#include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm" -#include "code\modules\clothing\under\jobs\Plasmaman\security.dm" -#include "code\modules\crafting\craft.dm" -#include "code\modules\crafting\guncrafting.dm" -#include "code\modules\crafting\recipes.dm" -#include "code\modules\crafting\recipes\recipes_clothing.dm" -#include "code\modules\crafting\recipes\recipes_misc.dm" -#include "code\modules\crafting\recipes\recipes_primal.dm" -#include "code\modules\crafting\recipes\recipes_robot.dm" -#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\scanner.dm" -#include "code\modules\emoji\emoji_parse.dm" -#include "code\modules\error_handler\error_handler.dm" -#include "code\modules\error_handler\error_viewer.dm" -#include "code\modules\events\_event.dm" -#include "code\modules\events\abductor.dm" -#include "code\modules\events\alien_infestation.dm" -#include "code\modules\events\anomaly.dm" -#include "code\modules\events\anomaly_bluespace.dm" -#include "code\modules\events\anomaly_flux.dm" -#include "code\modules\events\anomaly_grav.dm" -#include "code\modules\events\anomaly_pyro.dm" -#include "code\modules\events\anomaly_vortex.dm" -#include "code\modules\events\aurora_caelus.dm" -#include "code\modules\events\blob.dm" -#include "code\modules\events\brand_intelligence.dm" -#include "code\modules\events\bureaucratic_error.dm" -#include "code\modules\events\camerafailure.dm" -#include "code\modules\events\carp_migration.dm" -#include "code\modules\events\communications_blackout.dm" -#include "code\modules\events\devil.dm" -#include "code\modules\events\disease_outbreak.dm" -#include "code\modules\events\dust.dm" -#include "code\modules\events\electrical_storm.dm" -#include "code\modules\events\false_alarm.dm" -#include "code\modules\events\ghost_role.dm" -#include "code\modules\events\grid_check.dm" -#include "code\modules\events\heart_attack.dm" -#include "code\modules\events\high_priority_bounty.dm" -#include "code\modules\events\immovable_rod.dm" -#include "code\modules\events\ion_storm.dm" -#include "code\modules\events\major_dust.dm" -#include "code\modules\events\mass_hallucination.dm" -#include "code\modules\events\meateor_wave.dm" -#include "code\modules\events\meteor_wave.dm" -#include "code\modules\events\mice_migration.dm" -#include "code\modules\events\nightmare.dm" -#include "code\modules\events\operative.dm" -#include "code\modules\events\pirates.dm" -#include "code\modules\events\portal_storm.dm" -#include "code\modules\events\prison_break.dm" -#include "code\modules\events\processor_overload.dm" -#include "code\modules\events\radiation_storm.dm" -#include "code\modules\events\sentience.dm" -#include "code\modules\events\shuttle_loan.dm" -#include "code\modules\events\spacevine.dm" -#include "code\modules\events\spider_infestation.dm" -#include "code\modules\events\spontaneous_appendicitis.dm" -#include "code\modules\events\vent_clog.dm" -#include "code\modules\events\wormholes.dm" -#include "code\modules\events\holiday\halloween.dm" -#include "code\modules\events\holiday\vday.dm" -#include "code\modules\events\holiday\xmas.dm" -#include "code\modules\events\wizard\aid.dm" -#include "code\modules\events\wizard\blobies.dm" -#include "code\modules\events\wizard\curseditems.dm" -#include "code\modules\events\wizard\departmentrevolt.dm" -#include "code\modules\events\wizard\fakeexplosion.dm" -#include "code\modules\events\wizard\ghost.dm" -#include "code\modules\events\wizard\greentext.dm" -#include "code\modules\events\wizard\imposter.dm" -#include "code\modules\events\wizard\invincible.dm" -#include "code\modules\events\wizard\lava.dm" -#include "code\modules\events\wizard\magicarp.dm" -#include "code\modules\events\wizard\petsplosion.dm" -#include "code\modules\events\wizard\race.dm" -#include "code\modules\events\wizard\rpgloot.dm" -#include "code\modules\events\wizard\shuffle.dm" -#include "code\modules\events\wizard\summons.dm" -#include "code\modules\fields\fields.dm" -#include "code\modules\fields\gravity.dm" -#include "code\modules\fields\peaceborg_dampener.dm" -#include "code\modules\fields\timestop.dm" -#include "code\modules\fields\turf_objects.dm" -#include "code\modules\flufftext\Dreaming.dm" -#include "code\modules\flufftext\Hallucination.dm" -#include "code\modules\food_and_drinks\autobottler.dm" -#include "code\modules\food_and_drinks\food.dm" -#include "code\modules\food_and_drinks\pizzabox.dm" -#include "code\modules\food_and_drinks\drinks\drinks.dm" -#include "code\modules\food_and_drinks\drinks\drinks\bottle.dm" -#include "code\modules\food_and_drinks\drinks\drinks\drinkingglass.dm" -#include "code\modules\food_and_drinks\food\condiment.dm" -#include "code\modules\food_and_drinks\food\customizables.dm" -#include "code\modules\food_and_drinks\food\snacks.dm" -#include "code\modules\food_and_drinks\food\snacks_bread.dm" -#include "code\modules\food_and_drinks\food\snacks_burgers.dm" -#include "code\modules\food_and_drinks\food\snacks_cake.dm" -#include "code\modules\food_and_drinks\food\snacks_egg.dm" -#include "code\modules\food_and_drinks\food\snacks_frozen.dm" -#include "code\modules\food_and_drinks\food\snacks_meat.dm" -#include "code\modules\food_and_drinks\food\snacks_other.dm" -#include "code\modules\food_and_drinks\food\snacks_pastry.dm" -#include "code\modules\food_and_drinks\food\snacks_pie.dm" -#include "code\modules\food_and_drinks\food\snacks_pizza.dm" -#include "code\modules\food_and_drinks\food\snacks_salad.dm" -#include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm" -#include "code\modules\food_and_drinks\food\snacks_soup.dm" -#include "code\modules\food_and_drinks\food\snacks_spaghetti.dm" -#include "code\modules\food_and_drinks\food\snacks_sushi.dm" -#include "code\modules\food_and_drinks\food\snacks_vend.dm" -#include "code\modules\food_and_drinks\food\snacks\dough.dm" -#include "code\modules\food_and_drinks\food\snacks\meat.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\food_cart.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\grill.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\microwave.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\monkeyrecycler.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\processor.dm" -#include "code\modules\food_and_drinks\kitchen_machinery\smartfridge.dm" -#include "code\modules\food_and_drinks\recipes\drinks_recipes.dm" -#include "code\modules\food_and_drinks\recipes\food_mixtures.dm" -#include "code\modules\food_and_drinks\recipes\processor_recipes.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_bread.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_cake.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_egg.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_frozen.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_misc.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pastry.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pie.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pizza.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_salad.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm" -#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm" -#include "code\modules\games\cas.dm" -#include "code\modules\goonchat\browserOutput.dm" -#include "code\modules\goonchat\jsErrorHandler.dm" -#include "code\modules\holiday\easter.dm" -#include "code\modules\holiday\holidays.dm" -#include "code\modules\holiday\halloween\bartholomew.dm" -#include "code\modules\holiday\halloween\jacqueen.dm" -#include "code\modules\holodeck\area_copy.dm" -#include "code\modules\holodeck\computer.dm" -#include "code\modules\holodeck\holo_effect.dm" -#include "code\modules\holodeck\items.dm" -#include "code\modules\holodeck\mobs.dm" -#include "code\modules\holodeck\turfs.dm" -#include "code\modules\hydroponics\biogenerator.dm" -#include "code\modules\hydroponics\fermenting_barrel.dm" -#include "code\modules\hydroponics\gene_modder.dm" -#include "code\modules\hydroponics\grown.dm" -#include "code\modules\hydroponics\growninedible.dm" -#include "code\modules\hydroponics\hydroitemdefines.dm" -#include "code\modules\hydroponics\hydroponics.dm" -#include "code\modules\hydroponics\plant_genes.dm" -#include "code\modules\hydroponics\sample.dm" -#include "code\modules\hydroponics\seed_extractor.dm" -#include "code\modules\hydroponics\seeds.dm" -#include "code\modules\hydroponics\beekeeping\beebox.dm" -#include "code\modules\hydroponics\beekeeping\beekeeper_suit.dm" -#include "code\modules\hydroponics\beekeeping\honey_frame.dm" -#include "code\modules\hydroponics\beekeeping\honeycomb.dm" -#include "code\modules\hydroponics\grown\ambrosia.dm" -#include "code\modules\hydroponics\grown\apple.dm" -#include "code\modules\hydroponics\grown\banana.dm" -#include "code\modules\hydroponics\grown\beans.dm" -#include "code\modules\hydroponics\grown\berries.dm" -#include "code\modules\hydroponics\grown\cannabis.dm" -#include "code\modules\hydroponics\grown\cereals.dm" -#include "code\modules\hydroponics\grown\chili.dm" -#include "code\modules\hydroponics\grown\citrus.dm" -#include "code\modules\hydroponics\grown\cocoa_vanilla.dm" -#include "code\modules\hydroponics\grown\corn.dm" -#include "code\modules\hydroponics\grown\cotton.dm" -#include "code\modules\hydroponics\grown\eggplant.dm" -#include "code\modules\hydroponics\grown\flowers.dm" -#include "code\modules\hydroponics\grown\grass_carpet.dm" -#include "code\modules\hydroponics\grown\kudzu.dm" -#include "code\modules\hydroponics\grown\melon.dm" -#include "code\modules\hydroponics\grown\misc.dm" -#include "code\modules\hydroponics\grown\mushrooms.dm" -#include "code\modules\hydroponics\grown\nettle.dm" -#include "code\modules\hydroponics\grown\onion.dm" -#include "code\modules\hydroponics\grown\peach.dm" -#include "code\modules\hydroponics\grown\peanuts.dm" -#include "code\modules\hydroponics\grown\pineapple.dm" -#include "code\modules\hydroponics\grown\potato.dm" -#include "code\modules\hydroponics\grown\pumpkin.dm" -#include "code\modules\hydroponics\grown\random.dm" -#include "code\modules\hydroponics\grown\replicapod.dm" -#include "code\modules\hydroponics\grown\root.dm" -#include "code\modules\hydroponics\grown\tea_coffee.dm" -#include "code\modules\hydroponics\grown\tobacco.dm" -#include "code\modules\hydroponics\grown\tomato.dm" -#include "code\modules\hydroponics\grown\towercap.dm" -#include "code\modules\integrated_electronics\_defines.dm" -#include "code\modules\integrated_electronics\core\analyzer.dm" -#include "code\modules\integrated_electronics\core\assemblies.dm" -#include "code\modules\integrated_electronics\core\debugger.dm" -#include "code\modules\integrated_electronics\core\detailer.dm" -#include "code\modules\integrated_electronics\core\helpers.dm" -#include "code\modules\integrated_electronics\core\integrated_circuit.dm" -#include "code\modules\integrated_electronics\core\pins.dm" -#include "code\modules\integrated_electronics\core\printer.dm" -#include "code\modules\integrated_electronics\core\saved_circuits.dm" -#include "code\modules\integrated_electronics\core\wirer.dm" -#include "code\modules\integrated_electronics\core\special_pins\boolean_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\char_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\color_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\dir_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\index_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\list_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\number_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\ref_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\selfref_pin.dm" -#include "code\modules\integrated_electronics\core\special_pins\string_pin.dm" -#include "code\modules\integrated_electronics\passive\passive.dm" -#include "code\modules\integrated_electronics\passive\power.dm" -#include "code\modules\integrated_electronics\subtypes\access.dm" -#include "code\modules\integrated_electronics\subtypes\arithmetic.dm" -#include "code\modules\integrated_electronics\subtypes\atmospherics.dm" -#include "code\modules\integrated_electronics\subtypes\converters.dm" -#include "code\modules\integrated_electronics\subtypes\data_transfer.dm" -#include "code\modules\integrated_electronics\subtypes\input.dm" -#include "code\modules\integrated_electronics\subtypes\lists.dm" -#include "code\modules\integrated_electronics\subtypes\logic.dm" -#include "code\modules\integrated_electronics\subtypes\manipulation.dm" -#include "code\modules\integrated_electronics\subtypes\memory.dm" -#include "code\modules\integrated_electronics\subtypes\output.dm" -#include "code\modules\integrated_electronics\subtypes\power.dm" -#include "code\modules\integrated_electronics\subtypes\reagents.dm" -#include "code\modules\integrated_electronics\subtypes\smart.dm" -#include "code\modules\integrated_electronics\subtypes\text.dm" -#include "code\modules\integrated_electronics\subtypes\time.dm" -#include "code\modules\integrated_electronics\subtypes\trig.dm" -#include "code\modules\integrated_electronics\subtypes\weaponized.dm" -#include "code\modules\jobs\access.dm" -#include "code\modules\jobs\job_exp.dm" -#include "code\modules\jobs\jobs.dm" -#include "code\modules\jobs\job_types\_job.dm" -#include "code\modules\jobs\job_types\ai.dm" -#include "code\modules\jobs\job_types\assistant.dm" -#include "code\modules\jobs\job_types\atmospheric_technician.dm" -#include "code\modules\jobs\job_types\bartender.dm" -#include "code\modules\jobs\job_types\botanist.dm" -#include "code\modules\jobs\job_types\captain.dm" -#include "code\modules\jobs\job_types\cargo_technician.dm" -#include "code\modules\jobs\job_types\chaplain.dm" -#include "code\modules\jobs\job_types\chemist.dm" -#include "code\modules\jobs\job_types\chief_engineer.dm" -#include "code\modules\jobs\job_types\chief_medical_officer.dm" -#include "code\modules\jobs\job_types\clown.dm" -#include "code\modules\jobs\job_types\cook.dm" -#include "code\modules\jobs\job_types\curator.dm" -#include "code\modules\jobs\job_types\cyborg.dm" -#include "code\modules\jobs\job_types\detective.dm" -#include "code\modules\jobs\job_types\geneticist.dm" -#include "code\modules\jobs\job_types\head_of_personnel.dm" -#include "code\modules\jobs\job_types\head_of_security.dm" -#include "code\modules\jobs\job_types\janitor.dm" -#include "code\modules\jobs\job_types\lawyer.dm" -#include "code\modules\jobs\job_types\medical_doctor.dm" -#include "code\modules\jobs\job_types\mime.dm" -#include "code\modules\jobs\job_types\quartermaster.dm" -#include "code\modules\jobs\job_types\research_director.dm" -#include "code\modules\jobs\job_types\roboticist.dm" -#include "code\modules\jobs\job_types\scientist.dm" -#include "code\modules\jobs\job_types\security_officer.dm" -#include "code\modules\jobs\job_types\shaft_miner.dm" -#include "code\modules\jobs\job_types\station_engineer.dm" -#include "code\modules\jobs\job_types\virologist.dm" -#include "code\modules\jobs\job_types\warden.dm" -#include "code\modules\jobs\map_changes\map_changes.dm" -#include "code\modules\keybindings\bindings_admin.dm" -#include "code\modules\keybindings\bindings_atom.dm" -#include "code\modules\keybindings\bindings_carbon.dm" -#include "code\modules\keybindings\bindings_client.dm" -#include "code\modules\keybindings\bindings_human.dm" -#include "code\modules\keybindings\bindings_living.dm" -#include "code\modules\keybindings\bindings_mob.dm" -#include "code\modules\keybindings\bindings_robot.dm" -#include "code\modules\keybindings\focus.dm" -#include "code\modules\keybindings\setup.dm" -#include "code\modules\language\aphasia.dm" -#include "code\modules\language\beachbum.dm" -#include "code\modules\language\codespeak.dm" -#include "code\modules\language\common.dm" -#include "code\modules\language\draconic.dm" -#include "code\modules\language\drone.dm" -#include "code\modules\language\language.dm" -#include "code\modules\language\language_holder.dm" -#include "code\modules\language\language_menu.dm" -#include "code\modules\language\machine.dm" -#include "code\modules\language\monkey.dm" -#include "code\modules\language\mushroom.dm" -#include "code\modules\language\narsian.dm" -#include "code\modules\language\ratvarian.dm" -#include "code\modules\language\slime.dm" -#include "code\modules\language\swarmer.dm" -#include "code\modules\language\vampiric.dm" -#include "code\modules\language\xenocommon.dm" -#include "code\modules\library\lib_codex_gigas.dm" -#include "code\modules\library\lib_items.dm" -#include "code\modules\library\lib_machines.dm" -#include "code\modules\library\random_books.dm" -#include "code\modules\library\soapstone.dm" -#include "code\modules\lighting\lighting_area.dm" -#include "code\modules\lighting\lighting_atom.dm" -#include "code\modules\lighting\lighting_corner.dm" -#include "code\modules\lighting\lighting_object.dm" -#include "code\modules\lighting\lighting_setup.dm" -#include "code\modules\lighting\lighting_source.dm" -#include "code\modules\lighting\lighting_turf.dm" -#include "code\modules\mapping\dmm_suite.dm" -#include "code\modules\mapping\map_template.dm" -#include "code\modules\mapping\mapping_helpers.dm" -#include "code\modules\mapping\preloader.dm" -#include "code\modules\mapping\reader.dm" -#include "code\modules\mapping\ruins.dm" -#include "code\modules\mapping\verify.dm" -#include "code\modules\mapping\space_management\multiz_helpers.dm" -#include "code\modules\mapping\space_management\space_level.dm" -#include "code\modules\mapping\space_management\space_reservation.dm" -#include "code\modules\mapping\space_management\space_transition.dm" -#include "code\modules\mapping\space_management\traits.dm" -#include "code\modules\mapping\space_management\zlevel_manager.dm" -#include "code\modules\mining\abandoned_crates.dm" -#include "code\modules\mining\aux_base.dm" -#include "code\modules\mining\aux_base_camera.dm" -#include "code\modules\mining\fulton.dm" -#include "code\modules\mining\machine_processing.dm" -#include "code\modules\mining\machine_redemption.dm" -#include "code\modules\mining\machine_silo.dm" -#include "code\modules\mining\machine_stacking.dm" -#include "code\modules\mining\machine_unloading.dm" -#include "code\modules\mining\machine_vending.dm" -#include "code\modules\mining\mine_items.dm" -#include "code\modules\mining\minebot.dm" -#include "code\modules\mining\mint.dm" -#include "code\modules\mining\money_bag.dm" -#include "code\modules\mining\ores_coins.dm" -#include "code\modules\mining\point_bank.dm" -#include "code\modules\mining\satchel_ore_boxdm.dm" -#include "code\modules\mining\shelters.dm" -#include "code\modules\mining\equipment\explorer_gear.dm" -#include "code\modules\mining\equipment\goliath_hide.dm" -#include "code\modules\mining\equipment\kinetic_crusher.dm" -#include "code\modules\mining\equipment\lazarus_injector.dm" -#include "code\modules\mining\equipment\marker_beacons.dm" -#include "code\modules\mining\equipment\mineral_scanner.dm" -#include "code\modules\mining\equipment\mining_tools.dm" -#include "code\modules\mining\equipment\regenerative_core.dm" -#include "code\modules\mining\equipment\resonator.dm" -#include "code\modules\mining\equipment\survival_pod.dm" -#include "code\modules\mining\equipment\vendor_items.dm" -#include "code\modules\mining\equipment\wormhole_jaunter.dm" -#include "code\modules\mining\laborcamp\laborshuttle.dm" -#include "code\modules\mining\laborcamp\laborstacker.dm" -#include "code\modules\mining\lavaland\ash_flora.dm" -#include "code\modules\mining\lavaland\necropolis_chests.dm" -#include "code\modules\mining\lavaland\ruins\gym.dm" -#include "code\modules\mob\death.dm" -#include "code\modules\mob\emote.dm" -#include "code\modules\mob\inventory.dm" -#include "code\modules\mob\login.dm" -#include "code\modules\mob\logout.dm" -#include "code\modules\mob\mob.dm" -#include "code\modules\mob\mob_defines.dm" -#include "code\modules\mob\mob_helpers.dm" -#include "code\modules\mob\mob_movement.dm" -#include "code\modules\mob\mob_movespeed.dm" -#include "code\modules\mob\mob_transformation_simple.dm" -#include "code\modules\mob\say.dm" -#include "code\modules\mob\say_vr.dm" -#include "code\modules\mob\status_procs.dm" -#include "code\modules\mob\transform_procs.dm" -#include "code\modules\mob\update_icons.dm" -#include "code\modules\mob\camera\camera.dm" -#include "code\modules\mob\dead\dead.dm" -#include "code\modules\mob\dead\new_player\login.dm" -#include "code\modules\mob\dead\new_player\logout.dm" -#include "code\modules\mob\dead\new_player\new_player.dm" -#include "code\modules\mob\dead\new_player\poll.dm" -#include "code\modules\mob\dead\new_player\preferences_setup.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\_sprite_accessories.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\alienpeople.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\body_markings.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\caps.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\Citadel_Snowflake.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\ears.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\frills.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\hair_face.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\hair_head.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\ipc_synths.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\legs_and_taurs.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\underwear.dm" -#include "code\modules\mob\dead\new_player\sprite_accessories\wings.dm" -#include "code\modules\mob\dead\observer\login.dm" -#include "code\modules\mob\dead\observer\logout.dm" -#include "code\modules\mob\dead\observer\notificationprefs.dm" -#include "code\modules\mob\dead\observer\observer.dm" -#include "code\modules\mob\dead\observer\observer_movement.dm" -#include "code\modules\mob\dead\observer\say.dm" -#include "code\modules\mob\living\blood.dm" -#include "code\modules\mob\living\bloodcrawl.dm" -#include "code\modules\mob\living\damage_procs.dm" -#include "code\modules\mob\living\death.dm" -#include "code\modules\mob\living\emote.dm" -#include "code\modules\mob\living\inhand_holder.dm" -#include "code\modules\mob\living\life.dm" -#include "code\modules\mob\living\living.dm" -#include "code\modules\mob\living\living_defense.dm" -#include "code\modules\mob\living\living_defines.dm" -#include "code\modules\mob\living\living_mobility.dm" -#include "code\modules\mob\living\living_movement.dm" -#include "code\modules\mob\living\login.dm" -#include "code\modules\mob\living\logout.dm" -#include "code\modules\mob\living\say.dm" -#include "code\modules\mob\living\status_procs.dm" -#include "code\modules\mob\living\taste.dm" -#include "code\modules\mob\living\update_icons.dm" -#include "code\modules\mob\living\ventcrawling.dm" -#include "code\modules\mob\living\brain\brain.dm" -#include "code\modules\mob\living\brain\brain_item.dm" -#include "code\modules\mob\living\brain\death.dm" -#include "code\modules\mob\living\brain\emote.dm" -#include "code\modules\mob\living\brain\life.dm" -#include "code\modules\mob\living\brain\MMI.dm" -#include "code\modules\mob\living\brain\posibrain.dm" -#include "code\modules\mob\living\brain\say.dm" -#include "code\modules\mob\living\brain\status_procs.dm" -#include "code\modules\mob\living\carbon\carbon.dm" -#include "code\modules\mob\living\carbon\carbon_defense.dm" -#include "code\modules\mob\living\carbon\carbon_defines.dm" -#include "code\modules\mob\living\carbon\carbon_movement.dm" -#include "code\modules\mob\living\carbon\damage_procs.dm" -#include "code\modules\mob\living\carbon\death.dm" -#include "code\modules\mob\living\carbon\emote.dm" -#include "code\modules\mob\living\carbon\examine.dm" -#include "code\modules\mob\living\carbon\inventory.dm" -#include "code\modules\mob\living\carbon\life.dm" -#include "code\modules\mob\living\carbon\say.dm" -#include "code\modules\mob\living\carbon\status_procs.dm" -#include "code\modules\mob\living\carbon\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\alien.dm" -#include "code\modules\mob\living\carbon\alien\alien_defense.dm" -#include "code\modules\mob\living\carbon\alien\damage_procs.dm" -#include "code\modules\mob\living\carbon\alien\death.dm" -#include "code\modules\mob\living\carbon\alien\emote.dm" -#include "code\modules\mob\living\carbon\alien\life.dm" -#include "code\modules\mob\living\carbon\alien\login.dm" -#include "code\modules\mob\living\carbon\alien\logout.dm" -#include "code\modules\mob\living\carbon\alien\organs.dm" -#include "code\modules\mob\living\carbon\alien\say.dm" -#include "code\modules\mob\living\carbon\alien\screen.dm" -#include "code\modules\mob\living\carbon\alien\status_procs.dm" -#include "code\modules\mob\living\carbon\alien\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\death.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\humanoid_defense.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\praetorian.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" -#include "code\modules\mob\living\carbon\alien\larva\death.dm" -#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" -#include "code\modules\mob\living\carbon\alien\larva\larva.dm" -#include "code\modules\mob\living\carbon\alien\larva\larva_defense.dm" -#include "code\modules\mob\living\carbon\alien\larva\life.dm" -#include "code\modules\mob\living\carbon\alien\larva\powers.dm" -#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" -#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" -#include "code\modules\mob\living\carbon\human\damage_procs.dm" -#include "code\modules\mob\living\carbon\human\death.dm" -#include "code\modules\mob\living\carbon\human\dummy.dm" -#include "code\modules\mob\living\carbon\human\emote.dm" -#include "code\modules\mob\living\carbon\human\examine.dm" -#include "code\modules\mob\living\carbon\human\examine_vr.dm" -#include "code\modules\mob\living\carbon\human\human.dm" -#include "code\modules\mob\living\carbon\human\human_defense.dm" -#include "code\modules\mob\living\carbon\human\human_defines.dm" -#include "code\modules\mob\living\carbon\human\human_helpers.dm" -#include "code\modules\mob\living\carbon\human\human_movement.dm" -#include "code\modules\mob\living\carbon\human\inventory.dm" -#include "code\modules\mob\living\carbon\human\life.dm" -#include "code\modules\mob\living\carbon\human\physiology.dm" -#include "code\modules\mob\living\carbon\human\say.dm" -#include "code\modules\mob\living\carbon\human\species.dm" -#include "code\modules\mob\living\carbon\human\status_procs.dm" -#include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\species_types\abductors.dm" -#include "code\modules\mob\living\carbon\human\species_types\android.dm" -#include "code\modules\mob\living\carbon\human\species_types\angel.dm" -#include "code\modules\mob\living\carbon\human\species_types\bugmen.dm" -#include "code\modules\mob\living\carbon\human\species_types\corporate.dm" -#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm" -#include "code\modules\mob\living\carbon\human\species_types\dwarves.dm" -#include "code\modules\mob\living\carbon\human\species_types\felinid.dm" -#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\furrypeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\golems.dm" -#include "code\modules\mob\living\carbon\human\species_types\humans.dm" -#include "code\modules\mob\living\carbon\human\species_types\ipc.dm" -#include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\mushpeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm" -#include "code\modules\mob\living\carbon\human\species_types\podpeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm" -#include "code\modules\mob\living\carbon\human\species_types\skeletons.dm" -#include "code\modules\mob\living\carbon\human\species_types\synths.dm" -#include "code\modules\mob\living\carbon\human\species_types\vampire.dm" -#include "code\modules\mob\living\carbon\human\species_types\zombies.dm" -#include "code\modules\mob\living\carbon\monkey\combat.dm" -#include "code\modules\mob\living\carbon\monkey\death.dm" -#include "code\modules\mob\living\carbon\monkey\inventory.dm" -#include "code\modules\mob\living\carbon\monkey\life.dm" -#include "code\modules\mob\living\carbon\monkey\monkey.dm" -#include "code\modules\mob\living\carbon\monkey\monkey_defense.dm" -#include "code\modules\mob\living\carbon\monkey\punpun.dm" -#include "code\modules\mob\living\carbon\monkey\update_icons.dm" -#include "code\modules\mob\living\silicon\custom_holoform.dm" -#include "code\modules\mob\living\silicon\damage_procs.dm" -#include "code\modules\mob\living\silicon\death.dm" -#include "code\modules\mob\living\silicon\examine.dm" -#include "code\modules\mob\living\silicon\laws.dm" -#include "code\modules\mob\living\silicon\login.dm" -#include "code\modules\mob\living\silicon\say.dm" -#include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\silicon_defense.dm" -#include "code\modules\mob\living\silicon\silicon_movement.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\ai_defense.dm" -#include "code\modules\mob\living\silicon\ai\death.dm" -#include "code\modules\mob\living\silicon\ai\examine.dm" -#include "code\modules\mob\living\silicon\ai\laws.dm" -#include "code\modules\mob\living\silicon\ai\life.dm" -#include "code\modules\mob\living\silicon\ai\login.dm" -#include "code\modules\mob\living\silicon\ai\logout.dm" -#include "code\modules\mob\living\silicon\ai\multicam.dm" -#include "code\modules\mob\living\silicon\ai\say.dm" -#include "code\modules\mob\living\silicon\ai\vox_sounds.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\pai.dm" -#include "code\modules\mob\living\silicon\pai\pai_defense.dm" -#include "code\modules\mob\living\silicon\pai\pai_shell.dm" -#include "code\modules\mob\living\silicon\pai\personality.dm" -#include "code\modules\mob\living\silicon\pai\say.dm" -#include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\pai\update_icon.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\emote.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\laws.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_defense.dm" -#include "code\modules\mob\living\silicon\robot\robot_mobility.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\say.dm" -#include "code\modules\mob\living\simple_animal\animal_defense.dm" -#include "code\modules\mob\living\simple_animal\astral.dm" -#include "code\modules\mob\living\simple_animal\constructs.dm" -#include "code\modules\mob\living\simple_animal\corpse.dm" -#include "code\modules\mob\living\simple_animal\damage_procs.dm" -#include "code\modules\mob\living\simple_animal\parrot.dm" -#include "code\modules\mob\living\simple_animal\shade.dm" -#include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\simple_animal_vr.dm" -#include "code\modules\mob\living\simple_animal\simplemob_vore_values.dm" -#include "code\modules\mob\living\simple_animal\spawner.dm" -#include "code\modules\mob\living\simple_animal\status_procs.dm" -#include "code\modules\mob\living\simple_animal\bot\bot.dm" -#include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" -#include "code\modules\mob\living\simple_animal\bot\construction.dm" -#include "code\modules\mob\living\simple_animal\bot\ed209bot.dm" -#include "code\modules\mob\living\simple_animal\bot\firebot.dm" -#include "code\modules\mob\living\simple_animal\bot\floorbot.dm" -#include "code\modules\mob\living\simple_animal\bot\honkbot.dm" -#include "code\modules\mob\living\simple_animal\bot\medbot.dm" -#include "code\modules\mob\living\simple_animal\bot\mulebot.dm" -#include "code\modules\mob\living\simple_animal\bot\secbot.dm" -#include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm" -#include "code\modules\mob\living\simple_animal\friendly\butterfly.dm" -#include "code\modules\mob\living\simple_animal\friendly\cat.dm" -#include "code\modules\mob\living\simple_animal\friendly\cockroach.dm" -#include "code\modules\mob\living\simple_animal\friendly\crab.dm" -#include "code\modules\mob\living\simple_animal\friendly\dog.dm" -#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" -#include "code\modules\mob\living\simple_animal\friendly\fox.dm" -#include "code\modules\mob\living\simple_animal\friendly\gondola.dm" -#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" -#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" -#include "code\modules\mob\living\simple_animal\friendly\panda.dm" -#include "code\modules\mob\living\simple_animal\friendly\penguin.dm" -#include "code\modules\mob\living\simple_animal\friendly\pet.dm" -#include "code\modules\mob\living\simple_animal\friendly\sloth.dm" -#include "code\modules\mob\living\simple_animal\friendly\snake.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\interaction.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\say.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm" -#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm" -#include "code\modules\mob\living\simple_animal\guardian\guardian.dm" -#include "code\modules\mob\living\simple_animal\guardian\guardiannaming.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\fire.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\protector.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" -#include "code\modules\mob\living\simple_animal\guardian\types\support.dm" -#include "code\modules\mob\living\simple_animal\hostile\alien.dm" -#include "code\modules\mob\living\simple_animal\hostile\banana_spider.dm" -#include "code\modules\mob\living\simple_animal\hostile\bear.dm" -#include "code\modules\mob\living\simple_animal\hostile\bees.dm" -#include "code\modules\mob\living\simple_animal\hostile\carp.dm" -#include "code\modules\mob\living\simple_animal\hostile\cat_butcher.dm" -#include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm" -#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" -#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" -#include "code\modules\mob\living\simple_animal\hostile\goose.dm" -#include "code\modules\mob\living\simple_animal\hostile\headcrab.dm" -#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" -#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" -#include "code\modules\mob\living\simple_animal\hostile\illusion.dm" -#include "code\modules\mob\living\simple_animal\hostile\killertomato.dm" -#include "code\modules\mob\living\simple_animal\hostile\mecha_pilot.dm" -#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" -#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" -#include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" -#include "code\modules\mob\living\simple_animal\hostile\netherworld.dm" -#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" -#include "code\modules\mob\living\simple_animal\hostile\russian.dm" -#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm" -#include "code\modules\mob\living\simple_animal\hostile\statue.dm" -#include "code\modules\mob\living\simple_animal\hostile\stickman.dm" -#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" -#include "code\modules\mob\living\simple_animal\hostile\tree.dm" -#include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" -#include "code\modules\mob\living\simple_animal\hostile\wizard.dm" -#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm" -#include "code\modules\mob\living\simple_animal\hostile\zombie.dm" -#include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm" -#include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm" -#include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm" -#include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm" -#include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm" -#include "code\modules\mob\living\simple_animal\hostile\jungle\_jungle_mobs.dm" -#include "code\modules\mob\living\simple_animal\hostile\jungle\leaper.dm" -#include "code\modules\mob\living\simple_animal\hostile\jungle\mega_arachnid.dm" -#include "code\modules\mob\living\simple_animal\hostile\jungle\mook.dm" -#include "code\modules\mob\living\simple_animal\hostile\jungle\seedling.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon_vore.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\curse_blob.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\elite.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\goliath_broodmother.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\herald.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\legionnaire.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\pandora.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm" -#include "code\modules\mob\living\simple_animal\slime\death.dm" -#include "code\modules\mob\living\simple_animal\slime\emote.dm" -#include "code\modules\mob\living\simple_animal\slime\life.dm" -#include "code\modules\mob\living\simple_animal\slime\powers.dm" -#include "code\modules\mob\living\simple_animal\slime\say.dm" -#include "code\modules\mob\living\simple_animal\slime\slime.dm" -#include "code\modules\mob\living\simple_animal\slime\slime_mobility.dm" -#include "code\modules\mob\living\simple_animal\slime\subtypes.dm" -#include "code\modules\modular_computers\laptop_vendor.dm" -#include "code\modules\modular_computers\computers\item\computer.dm" -#include "code\modules\modular_computers\computers\item\computer_components.dm" -#include "code\modules\modular_computers\computers\item\computer_damage.dm" -#include "code\modules\modular_computers\computers\item\computer_power.dm" -#include "code\modules\modular_computers\computers\item\computer_ui.dm" -#include "code\modules\modular_computers\computers\item\laptop.dm" -#include "code\modules\modular_computers\computers\item\laptop_presets.dm" -#include "code\modules\modular_computers\computers\item\processor.dm" -#include "code\modules\modular_computers\computers\item\tablet.dm" -#include "code\modules\modular_computers\computers\item\tablet_presets.dm" -#include "code\modules\modular_computers\computers\machinery\console_presets.dm" -#include "code\modules\modular_computers\computers\machinery\modular_computer.dm" -#include "code\modules\modular_computers\computers\machinery\modular_console.dm" -#include "code\modules\modular_computers\file_system\computer_file.dm" -#include "code\modules\modular_computers\file_system\data.dm" -#include "code\modules\modular_computers\file_system\program.dm" -#include "code\modules\modular_computers\file_system\program_events.dm" -#include "code\modules\modular_computers\file_system\programs\airestorer.dm" -#include "code\modules\modular_computers\file_system\programs\alarm.dm" -#include "code\modules\modular_computers\file_system\programs\card.dm" -#include "code\modules\modular_computers\file_system\programs\configurator.dm" -#include "code\modules\modular_computers\file_system\programs\file_browser.dm" -#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" -#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" -#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" -#include "code\modules\modular_computers\file_system\programs\nttransfer.dm" -#include "code\modules\modular_computers\file_system\programs\powermonitor.dm" -#include "code\modules\modular_computers\file_system\programs\sm_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" -#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" -#include "code\modules\modular_computers\hardware\_hardware.dm" -#include "code\modules\modular_computers\hardware\ai_slot.dm" -#include "code\modules\modular_computers\hardware\battery_module.dm" -#include "code\modules\modular_computers\hardware\card_slot.dm" -#include "code\modules\modular_computers\hardware\CPU.dm" -#include "code\modules\modular_computers\hardware\hard_drive.dm" -#include "code\modules\modular_computers\hardware\network_card.dm" -#include "code\modules\modular_computers\hardware\portable_disk.dm" -#include "code\modules\modular_computers\hardware\printer.dm" -#include "code\modules\modular_computers\hardware\recharger.dm" -#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" -#include "code\modules\ninja\__ninjaDefines.dm" -#include "code\modules\ninja\energy_katana.dm" -#include "code\modules\ninja\ninja_event.dm" -#include "code\modules\ninja\outfit.dm" -#include "code\modules\ninja\suit\gloves.dm" -#include "code\modules\ninja\suit\head.dm" -#include "code\modules\ninja\suit\mask.dm" -#include "code\modules\ninja\suit\ninjaDrainAct.dm" -#include "code\modules\ninja\suit\shoes.dm" -#include "code\modules\ninja\suit\suit.dm" -#include "code\modules\ninja\suit\suit_attackby.dm" -#include "code\modules\ninja\suit\suit_initialisation.dm" -#include "code\modules\ninja\suit\suit_process.dm" -#include "code\modules\ninja\suit\n_suit_verbs\energy_net_nets.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_adrenaline.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_cost_check.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_empulse.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_net.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_smoke.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm" -#include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm" -#include "code\modules\NTNet\netdata.dm" -#include "code\modules\NTNet\network.dm" -#include "code\modules\NTNet\relays.dm" -#include "code\modules\NTNet\services\_service.dm" -#include "code\modules\oracle_ui\assets.dm" -#include "code\modules\oracle_ui\hookup_procs.dm" -#include "code\modules\oracle_ui\oracle_ui.dm" -#include "code\modules\oracle_ui\themed.dm" -#include "code\modules\paperwork\clipboard.dm" -#include "code\modules\paperwork\contract.dm" -#include "code\modules\paperwork\filingcabinet.dm" -#include "code\modules\paperwork\folders.dm" -#include "code\modules\paperwork\handlabeler.dm" -#include "code\modules\paperwork\paper.dm" -#include "code\modules\paperwork\paper_cutter.dm" -#include "code\modules\paperwork\paper_premade.dm" -#include "code\modules\paperwork\paperbin.dm" -#include "code\modules\paperwork\paperplane.dm" -#include "code\modules\paperwork\pen.dm" -#include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\stamps.dm" -#include "code\modules\photography\_pictures.dm" -#include "code\modules\photography\camera\camera.dm" -#include "code\modules\photography\camera\camera_image_capturing.dm" -#include "code\modules\photography\camera\film.dm" -#include "code\modules\photography\camera\other.dm" -#include "code\modules\photography\camera\silicon_camera.dm" -#include "code\modules\photography\photos\album.dm" -#include "code\modules\photography\photos\frame.dm" -#include "code\modules\photography\photos\photo.dm" -#include "code\modules\power\apc.dm" -#include "code\modules\power\cable.dm" -#include "code\modules\power\cell.dm" -#include "code\modules\power\floodlight.dm" -#include "code\modules\power\generator.dm" -#include "code\modules\power\gravitygenerator.dm" -#include "code\modules\power\lighting.dm" -#include "code\modules\power\monitor.dm" -#include "code\modules\power\multiz.dm" -#include "code\modules\power\port_gen.dm" -#include "code\modules\power\power.dm" -#include "code\modules\power\powernet.dm" -#include "code\modules\power\rtg.dm" -#include "code\modules\power\smes.dm" -#include "code\modules\power\solar.dm" -#include "code\modules\power\terminal.dm" -#include "code\modules\power\tracker.dm" -#include "code\modules\power\turbine.dm" -#include "code\modules\power\antimatter\containment_jar.dm" -#include "code\modules\power\antimatter\control.dm" -#include "code\modules\power\antimatter\shielding.dm" -#include "code\modules\power\singularity\collector.dm" -#include "code\modules\power\singularity\containment_field.dm" -#include "code\modules\power\singularity\emitter.dm" -#include "code\modules\power\singularity\field_generator.dm" -#include "code\modules\power\singularity\generator.dm" -#include "code\modules\power\singularity\investigate.dm" -#include "code\modules\power\singularity\narsie.dm" -#include "code\modules\power\singularity\singularity.dm" -#include "code\modules\power\singularity\particle_accelerator\particle.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" -#include "code\modules\power\supermatter\supermatter.dm" -#include "code\modules\power\tesla\coil.dm" -#include "code\modules\power\tesla\energy_ball.dm" -#include "code\modules\power\tesla\generator.dm" -#include "code\modules\procedural_mapping\mapGenerator.dm" -#include "code\modules\procedural_mapping\mapGeneratorModule.dm" -#include "code\modules\procedural_mapping\mapGeneratorObj.dm" -#include "code\modules\procedural_mapping\mapGeneratorReadme.dm" -#include "code\modules\procedural_mapping\mapGeneratorModules\helpers.dm" -#include "code\modules\procedural_mapping\mapGeneratorModules\nature.dm" -#include "code\modules\procedural_mapping\mapGenerators\asteroid.dm" -#include "code\modules\procedural_mapping\mapGenerators\cellular.dm" -#include "code\modules\procedural_mapping\mapGenerators\cult.dm" -#include "code\modules\procedural_mapping\mapGenerators\lava_river.dm" -#include "code\modules\procedural_mapping\mapGenerators\lavaland.dm" -#include "code\modules\procedural_mapping\mapGenerators\nature.dm" -#include "code\modules\procedural_mapping\mapGenerators\repair.dm" -#include "code\modules\procedural_mapping\mapGenerators\shuttle.dm" -#include "code\modules\procedural_mapping\mapGenerators\syndicate.dm" -#include "code\modules\projectiles\gun.dm" -#include "code\modules\projectiles\pins.dm" -#include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\ammunition\_ammunition.dm" -#include "code\modules\projectiles\ammunition\_firing.dm" -#include "code\modules\projectiles\ammunition\ballistic\lmg.dm" -#include "code\modules\projectiles\ammunition\ballistic\pistol.dm" -#include "code\modules\projectiles\ammunition\ballistic\revolver.dm" -#include "code\modules\projectiles\ammunition\ballistic\rifle.dm" -#include "code\modules\projectiles\ammunition\ballistic\shotgun.dm" -#include "code\modules\projectiles\ammunition\ballistic\smg.dm" -#include "code\modules\projectiles\ammunition\ballistic\sniper.dm" -#include "code\modules\projectiles\ammunition\caseless\_caseless.dm" -#include "code\modules\projectiles\ammunition\caseless\foam.dm" -#include "code\modules\projectiles\ammunition\caseless\misc.dm" -#include "code\modules\projectiles\ammunition\caseless\rocket.dm" -#include "code\modules\projectiles\ammunition\energy\_energy.dm" -#include "code\modules\projectiles\ammunition\energy\ebow.dm" -#include "code\modules\projectiles\ammunition\energy\gravity.dm" -#include "code\modules\projectiles\ammunition\energy\laser.dm" -#include "code\modules\projectiles\ammunition\energy\lmg.dm" -#include "code\modules\projectiles\ammunition\energy\plasma.dm" -#include "code\modules\projectiles\ammunition\energy\plasma_cit.dm" -#include "code\modules\projectiles\ammunition\energy\portal.dm" -#include "code\modules\projectiles\ammunition\energy\special.dm" -#include "code\modules\projectiles\ammunition\energy\stun.dm" -#include "code\modules\projectiles\ammunition\special\magic.dm" -#include "code\modules\projectiles\ammunition\special\syringe.dm" -#include "code\modules\projectiles\boxes_magazines\_box_magazine.dm" -#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm" -#include "code\modules\projectiles\boxes_magazines\external\grenade.dm" -#include "code\modules\projectiles\boxes_magazines\external\lmg.dm" -#include "code\modules\projectiles\boxes_magazines\external\pistol.dm" -#include "code\modules\projectiles\boxes_magazines\external\rechargable.dm" -#include "code\modules\projectiles\boxes_magazines\external\rifle.dm" -#include "code\modules\projectiles\boxes_magazines\external\shotgun.dm" -#include "code\modules\projectiles\boxes_magazines\external\smg.dm" -#include "code\modules\projectiles\boxes_magazines\external\sniper.dm" -#include "code\modules\projectiles\boxes_magazines\external\toy.dm" -#include "code\modules\projectiles\boxes_magazines\internal\_cylinder.dm" -#include "code\modules\projectiles\boxes_magazines\internal\_internal.dm" -#include "code\modules\projectiles\boxes_magazines\internal\grenade.dm" -#include "code\modules\projectiles\boxes_magazines\internal\misc.dm" -#include "code\modules\projectiles\boxes_magazines\internal\revolver.dm" -#include "code\modules\projectiles\boxes_magazines\internal\rifle.dm" -#include "code\modules\projectiles\boxes_magazines\internal\shotgun.dm" -#include "code\modules\projectiles\boxes_magazines\internal\toy.dm" -#include "code\modules\projectiles\guns\ballistic.dm" -#include "code\modules\projectiles\guns\energy.dm" -#include "code\modules\projectiles\guns\magic.dm" -#include "code\modules\projectiles\guns\ballistic\automatic.dm" -#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm" -#include "code\modules\projectiles\guns\ballistic\launchers.dm" -#include "code\modules\projectiles\guns\ballistic\pistol.dm" -#include "code\modules\projectiles\guns\ballistic\revolver.dm" -#include "code\modules\projectiles\guns\ballistic\shotgun.dm" -#include "code\modules\projectiles\guns\ballistic\toy.dm" -#include "code\modules\projectiles\guns\energy\energy_gun.dm" -#include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm" -#include "code\modules\projectiles\guns\energy\laser.dm" -#include "code\modules\projectiles\guns\energy\megabuster.dm" -#include "code\modules\projectiles\guns\energy\mounted.dm" -#include "code\modules\projectiles\guns\energy\plasma_cit.dm" -#include "code\modules\projectiles\guns\energy\pulse.dm" -#include "code\modules\projectiles\guns\energy\special.dm" -#include "code\modules\projectiles\guns\energy\stun.dm" -#include "code\modules\projectiles\guns\magic\staff.dm" -#include "code\modules\projectiles\guns\magic\wand.dm" -#include "code\modules\projectiles\guns\misc\beam_rifle.dm" -#include "code\modules\projectiles\guns\misc\blastcannon.dm" -#include "code\modules\projectiles\guns\misc\chem_gun.dm" -#include "code\modules\projectiles\guns\misc\grenade_launcher.dm" -#include "code\modules\projectiles\guns\misc\medbeam.dm" -#include "code\modules\projectiles\guns\misc\syringe_gun.dm" -#include "code\modules\projectiles\projectile\beams.dm" -#include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\magic.dm" -#include "code\modules\projectiles\projectile\megabuster.dm" -#include "code\modules\projectiles\projectile\plasma.dm" -#include "code\modules\projectiles\projectile\bullets\_incendiary.dm" -#include "code\modules\projectiles\projectile\bullets\dart_syringe.dm" -#include "code\modules\projectiles\projectile\bullets\dnainjector.dm" -#include "code\modules\projectiles\projectile\bullets\grenade.dm" -#include "code\modules\projectiles\projectile\bullets\lmg.dm" -#include "code\modules\projectiles\projectile\bullets\pistol.dm" -#include "code\modules\projectiles\projectile\bullets\revolver.dm" -#include "code\modules\projectiles\projectile\bullets\rifle.dm" -#include "code\modules\projectiles\projectile\bullets\shotgun.dm" -#include "code\modules\projectiles\projectile\bullets\smg.dm" -#include "code\modules\projectiles\projectile\bullets\sniper.dm" -#include "code\modules\projectiles\projectile\bullets\special.dm" -#include "code\modules\projectiles\projectile\energy\_energy.dm" -#include "code\modules\projectiles\projectile\energy\ebow.dm" -#include "code\modules\projectiles\projectile\energy\misc.dm" -#include "code\modules\projectiles\projectile\energy\net_snare.dm" -#include "code\modules\projectiles\projectile\energy\nuclear_particle.dm" -#include "code\modules\projectiles\projectile\energy\stun.dm" -#include "code\modules\projectiles\projectile\energy\tesla.dm" -#include "code\modules\projectiles\projectile\magic\spellcard.dm" -#include "code\modules\projectiles\projectile\reusable\_reusable.dm" -#include "code\modules\projectiles\projectile\reusable\foam_dart.dm" -#include "code\modules\projectiles\projectile\reusable\magspear.dm" -#include "code\modules\projectiles\projectile\special\curse.dm" -#include "code\modules\projectiles\projectile\special\floral.dm" -#include "code\modules\projectiles\projectile\special\gravity.dm" -#include "code\modules\projectiles\projectile\special\hallucination.dm" -#include "code\modules\projectiles\projectile\special\ion.dm" -#include "code\modules\projectiles\projectile\special\meteor.dm" -#include "code\modules\projectiles\projectile\special\mindflayer.dm" -#include "code\modules\projectiles\projectile\special\neurotoxin.dm" -#include "code\modules\projectiles\projectile\special\plasma.dm" -#include "code\modules\projectiles\projectile\special\rocket.dm" -#include "code\modules\projectiles\projectile\special\temperature.dm" -#include "code\modules\projectiles\projectile\special\wormhole.dm" -#include "code\modules\reagents\chem_splash.dm" -#include "code\modules\reagents\chem_wiki_render.dm" -#include "code\modules\reagents\reagent_containers.dm" -#include "code\modules\reagents\reagent_dispenser.dm" -#include "code\modules\reagents\chemistry\colors.dm" -#include "code\modules\reagents\chemistry\holder.dm" -#include "code\modules\reagents\chemistry\reagents.dm" -#include "code\modules\reagents\chemistry\recipes.dm" -#include "code\modules\reagents\chemistry\machinery\chem_dispenser.dm" -#include "code\modules\reagents\chemistry\machinery\chem_heater.dm" -#include "code\modules\reagents\chemistry\machinery\chem_master.dm" -#include "code\modules\reagents\chemistry\machinery\chem_synthesizer.dm" -#include "code\modules\reagents\chemistry\machinery\pandemic.dm" -#include "code\modules\reagents\chemistry\machinery\reagentgrinder.dm" -#include "code\modules\reagents\chemistry\machinery\smoke_machine.dm" -#include "code\modules\reagents\chemistry\reagents\alcohol_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\blob_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\drink_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\drug_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\food_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\impure_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\medicine_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\other_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\pyrotechnic_reagents.dm" -#include "code\modules\reagents\chemistry\reagents\toxin_reagents.dm" -#include "code\modules\reagents\chemistry\recipes\drugs.dm" -#include "code\modules\reagents\chemistry\recipes\medicine.dm" -#include "code\modules\reagents\chemistry\recipes\others.dm" -#include "code\modules\reagents\chemistry\recipes\pyrotechnics.dm" -#include "code\modules\reagents\chemistry\recipes\slime_extracts.dm" -#include "code\modules\reagents\chemistry\recipes\special.dm" -#include "code\modules\reagents\chemistry\recipes\toxins.dm" -#include "code\modules\reagents\reagent_containers\blood_pack.dm" -#include "code\modules\reagents\reagent_containers\borghydro.dm" -#include "code\modules\reagents\reagent_containers\bottle.dm" -#include "code\modules\reagents\reagent_containers\dropper.dm" -#include "code\modules\reagents\reagent_containers\glass.dm" -#include "code\modules\reagents\reagent_containers\hypospray.dm" -#include "code\modules\reagents\reagent_containers\hypovial.dm" -#include "code\modules\reagents\reagent_containers\medspray.dm" -#include "code\modules\reagents\reagent_containers\patch.dm" -#include "code\modules\reagents\reagent_containers\pill.dm" -#include "code\modules\reagents\reagent_containers\rags.dm" -#include "code\modules\reagents\reagent_containers\sleeper_buffer.dm" -#include "code\modules\reagents\reagent_containers\spray.dm" -#include "code\modules\reagents\reagent_containers\syringes.dm" -#include "code\modules\recycling\conveyor2.dm" -#include "code\modules\recycling\sortingmachinery.dm" -#include "code\modules\recycling\disposal\bin.dm" -#include "code\modules\recycling\disposal\construction.dm" -#include "code\modules\recycling\disposal\eject.dm" -#include "code\modules\recycling\disposal\holder.dm" -#include "code\modules\recycling\disposal\multiz.dm" -#include "code\modules\recycling\disposal\outlet.dm" -#include "code\modules\recycling\disposal\pipe.dm" -#include "code\modules\recycling\disposal\pipe_sorting.dm" -#include "code\modules\research\designs.dm" -#include "code\modules\research\destructive_analyzer.dm" -#include "code\modules\research\experimentor.dm" -#include "code\modules\research\rdconsole.dm" -#include "code\modules\research\rdmachines.dm" -#include "code\modules\research\research_disk.dm" -#include "code\modules\research\server.dm" -#include "code\modules\research\stock_parts.dm" -#include "code\modules\research\designs\AI_module_designs.dm" -#include "code\modules\research\designs\autobotter_designs.dm" -#include "code\modules\research\designs\autoylathe_designs.dm" -#include "code\modules\research\designs\biogenerator_designs.dm" -#include "code\modules\research\designs\bluespace_designs.dm" -#include "code\modules\research\designs\computer_part_designs.dm" -#include "code\modules\research\designs\electronics_designs.dm" -#include "code\modules\research\designs\equipment_designs.dm" -#include "code\modules\research\designs\limbgrower_designs.dm" -#include "code\modules\research\designs\mecha_designs.dm" -#include "code\modules\research\designs\mechfabricator_designs.dm" -#include "code\modules\research\designs\medical_designs.dm" -#include "code\modules\research\designs\mining_designs.dm" -#include "code\modules\research\designs\misc_designs.dm" -#include "code\modules\research\designs\nanite_designs.dm" -#include "code\modules\research\designs\power_designs.dm" -#include "code\modules\research\designs\smelting_designs.dm" -#include "code\modules\research\designs\stock_parts_designs.dm" -#include "code\modules\research\designs\telecomms_designs.dm" -#include "code\modules\research\designs\tool_designs.dm" -#include "code\modules\research\designs\weapon_designs.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_construction.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_electronics.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_medical_and_dinnerware.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tcomms_and_misc.dm" -#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tools.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm" -#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm" -#include "code\modules\research\designs\machine_desings\machine_designs_service.dm" -#include "code\modules\research\machinery\_production.dm" -#include "code\modules\research\machinery\circuit_imprinter.dm" -#include "code\modules\research\machinery\departmental_circuit_imprinter.dm" -#include "code\modules\research\machinery\departmental_protolathe.dm" -#include "code\modules\research\machinery\departmental_techfab.dm" -#include "code\modules\research\machinery\protolathe.dm" -#include "code\modules\research\machinery\techfab.dm" -#include "code\modules\research\nanites\nanite_chamber.dm" -#include "code\modules\research\nanites\nanite_chamber_computer.dm" -#include "code\modules\research\nanites\nanite_cloud_controller.dm" -#include "code\modules\research\nanites\nanite_hijacker.dm" -#include "code\modules\research\nanites\nanite_misc_items.dm" -#include "code\modules\research\nanites\nanite_program_hub.dm" -#include "code\modules\research\nanites\nanite_programmer.dm" -#include "code\modules\research\nanites\nanite_programs.dm" -#include "code\modules\research\nanites\nanite_remote.dm" -#include "code\modules\research\nanites\program_disks.dm" -#include "code\modules\research\nanites\public_chamber.dm" -#include "code\modules\research\nanites\nanite_programs\buffing.dm" -#include "code\modules\research\nanites\nanite_programs\healing.dm" -#include "code\modules\research\nanites\nanite_programs\rogue.dm" -#include "code\modules\research\nanites\nanite_programs\sensor.dm" -#include "code\modules\research\nanites\nanite_programs\suppression.dm" -#include "code\modules\research\nanites\nanite_programs\utility.dm" -#include "code\modules\research\nanites\nanite_programs\weapon.dm" -#include "code\modules\research\techweb\__techweb_helpers.dm" -#include "code\modules\research\techweb\_techweb.dm" -#include "code\modules\research\techweb\_techweb_node.dm" -#include "code\modules\research\techweb\all_nodes.dm" -#include "code\modules\research\xenobiology\xenobio_camera.dm" -#include "code\modules\research\xenobiology\xenobiology.dm" -#include "code\modules\research\xenobiology\crossbreeding\__corecross.dm" -#include "code\modules\research\xenobiology\crossbreeding\_clothing.dm" -#include "code\modules\research\xenobiology\crossbreeding\_misc.dm" -#include "code\modules\research\xenobiology\crossbreeding\_mobs.dm" -#include "code\modules\research\xenobiology\crossbreeding\_status_effects.dm" -#include "code\modules\research\xenobiology\crossbreeding\_weapons.dm" -#include "code\modules\research\xenobiology\crossbreeding\burning.dm" -#include "code\modules\research\xenobiology\crossbreeding\charged.dm" -#include "code\modules\research\xenobiology\crossbreeding\chilling.dm" -#include "code\modules\research\xenobiology\crossbreeding\consuming.dm" -#include "code\modules\research\xenobiology\crossbreeding\industrial.dm" -#include "code\modules\research\xenobiology\crossbreeding\prismatic.dm" -#include "code\modules\research\xenobiology\crossbreeding\recurring.dm" -#include "code\modules\research\xenobiology\crossbreeding\regenerative.dm" -#include "code\modules\research\xenobiology\crossbreeding\reproductive.dm" -#include "code\modules\research\xenobiology\crossbreeding\selfsustaining.dm" -#include "code\modules\research\xenobiology\crossbreeding\stabilized.dm" -#include "code\modules\ruins\lavaland_ruin_code.dm" -#include "code\modules\ruins\lavalandruin_code\alien_nest.dm" -#include "code\modules\ruins\lavalandruin_code\biodome_clown_planet.dm" -#include "code\modules\ruins\lavalandruin_code\pizzaparty.dm" -#include "code\modules\ruins\lavalandruin_code\puzzle.dm" -#include "code\modules\ruins\lavalandruin_code\sloth.dm" -#include "code\modules\ruins\lavalandruin_code\surface.dm" -#include "code\modules\ruins\lavalandruin_code\syndicate_base.dm" -#include "code\modules\ruins\objects_and_mobs\ash_walker_den.dm" -#include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm" -#include "code\modules\ruins\objects_and_mobs\sin_ruins.dm" -#include "code\modules\ruins\spaceruin_code\asteroid4.dm" -#include "code\modules\ruins\spaceruin_code\bigderelict1.dm" -#include "code\modules\ruins\spaceruin_code\caravanambush.dm" -#include "code\modules\ruins\spaceruin_code\cloning_lab.dm" -#include "code\modules\ruins\spaceruin_code\crashedclownship.dm" -#include "code\modules\ruins\spaceruin_code\crashedship.dm" -#include "code\modules\ruins\spaceruin_code\deepstorage.dm" -#include "code\modules\ruins\spaceruin_code\DJstation.dm" -#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm" -#include "code\modules\ruins\spaceruin_code\listeningstation.dm" -#include "code\modules\ruins\spaceruin_code\miracle.dm" -#include "code\modules\ruins\spaceruin_code\oldstation.dm" -#include "code\modules\ruins\spaceruin_code\originalcontent.dm" -#include "code\modules\ruins\spaceruin_code\spacehotel.dm" -#include "code\modules\ruins\spaceruin_code\TheDerelict.dm" -#include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm" -#include "code\modules\security_levels\keycard_authentication.dm" -#include "code\modules\security_levels\security_levels.dm" -#include "code\modules\shuttle\arrivals.dm" -#include "code\modules\shuttle\assault_pod.dm" -#include "code\modules\shuttle\computer.dm" -#include "code\modules\shuttle\docking.dm" -#include "code\modules\shuttle\elevator.dm" -#include "code\modules\shuttle\emergency.dm" -#include "code\modules\shuttle\ferry.dm" -#include "code\modules\shuttle\manipulator.dm" -#include "code\modules\shuttle\monastery.dm" -#include "code\modules\shuttle\navigation_computer.dm" -#include "code\modules\shuttle\on_move.dm" -#include "code\modules\shuttle\ripple.dm" -#include "code\modules\shuttle\shuttle.dm" -#include "code\modules\shuttle\shuttle_rotate.dm" -#include "code\modules\shuttle\special.dm" -#include "code\modules\shuttle\supply.dm" -#include "code\modules\shuttle\syndicate.dm" -#include "code\modules\shuttle\white_ship.dm" -#include "code\modules\spells\spell.dm" -#include "code\modules\spells\spell_types\aimed.dm" -#include "code\modules\spells\spell_types\area_teleport.dm" -#include "code\modules\spells\spell_types\barnyard.dm" -#include "code\modules\spells\spell_types\bloodcrawl.dm" -#include "code\modules\spells\spell_types\charge.dm" -#include "code\modules\spells\spell_types\conjure.dm" -#include "code\modules\spells\spell_types\construct_spells.dm" -#include "code\modules\spells\spell_types\devil.dm" -#include "code\modules\spells\spell_types\devil_boons.dm" -#include "code\modules\spells\spell_types\dumbfire.dm" -#include "code\modules\spells\spell_types\emplosion.dm" -#include "code\modules\spells\spell_types\ethereal_jaunt.dm" -#include "code\modules\spells\spell_types\explosion.dm" -#include "code\modules\spells\spell_types\forcewall.dm" -#include "code\modules\spells\spell_types\genetic.dm" -#include "code\modules\spells\spell_types\godhand.dm" -#include "code\modules\spells\spell_types\infinite_guns.dm" -#include "code\modules\spells\spell_types\inflict_handler.dm" -#include "code\modules\spells\spell_types\knock.dm" -#include "code\modules\spells\spell_types\lichdom.dm" -#include "code\modules\spells\spell_types\lightning.dm" -#include "code\modules\spells\spell_types\mime.dm" -#include "code\modules\spells\spell_types\mind_transfer.dm" -#include "code\modules\spells\spell_types\projectile.dm" -#include "code\modules\spells\spell_types\rightandwrong.dm" -#include "code\modules\spells\spell_types\rod_form.dm" -#include "code\modules\spells\spell_types\santa.dm" -#include "code\modules\spells\spell_types\shadow_walk.dm" -#include "code\modules\spells\spell_types\shapeshift.dm" -#include "code\modules\spells\spell_types\spacetime_distortion.dm" -#include "code\modules\spells\spell_types\summonitem.dm" -#include "code\modules\spells\spell_types\taeclowndo.dm" -#include "code\modules\spells\spell_types\telepathy.dm" -#include "code\modules\spells\spell_types\the_traps.dm" -#include "code\modules\spells\spell_types\touch_attacks.dm" -#include "code\modules\spells\spell_types\trigger.dm" -#include "code\modules\spells\spell_types\turf_teleport.dm" -#include "code\modules\spells\spell_types\voice_of_god.dm" -#include "code\modules\spells\spell_types\wizard.dm" -#include "code\modules\station_goals\bsa.dm" -#include "code\modules\station_goals\dna_vault.dm" -#include "code\modules\station_goals\shield.dm" -#include "code\modules\station_goals\station_goal.dm" -#include "code\modules\surgery\amputation.dm" -#include "code\modules\surgery\brain_surgery.dm" -#include "code\modules\surgery\cavity_implant.dm" -#include "code\modules\surgery\core_removal.dm" -#include "code\modules\surgery\coronary_bypass.dm" -#include "code\modules\surgery\dental_implant.dm" -#include "code\modules\surgery\embalming.dm" -#include "code\modules\surgery\emergency_cardioversion_recovery.dm" -#include "code\modules\surgery\experimental_dissection.dm" -#include "code\modules\surgery\eye_surgery.dm" -#include "code\modules\surgery\graft_synthtissue.dm" -#include "code\modules\surgery\healing.dm" -#include "code\modules\surgery\helpers.dm" -#include "code\modules\surgery\implant_removal.dm" -#include "code\modules\surgery\limb_augmentation.dm" -#include "code\modules\surgery\lipoplasty.dm" -#include "code\modules\surgery\lobectomy.dm" -#include "code\modules\surgery\mechanic_steps.dm" -#include "code\modules\surgery\nutcracker.dm" -#include "code\modules\surgery\organ_manipulation.dm" -#include "code\modules\surgery\organic_steps.dm" -#include "code\modules\surgery\plastic_surgery.dm" -#include "code\modules\surgery\prosthetic_replacement.dm" -#include "code\modules\surgery\remove_embedded_object.dm" -#include "code\modules\surgery\surgery.dm" -#include "code\modules\surgery\surgery_step.dm" -#include "code\modules\surgery\tools.dm" -#include "code\modules\surgery\advanced\brainwashing.dm" -#include "code\modules\surgery\advanced\lobotomy.dm" -#include "code\modules\surgery\advanced\necrotic_revival.dm" -#include "code\modules\surgery\advanced\pacification.dm" -#include "code\modules\surgery\advanced\revival.dm" -#include "code\modules\surgery\advanced\toxichealing.dm" -#include "code\modules\surgery\advanced\viral_bonding.dm" -#include "code\modules\surgery\advanced\bioware\bioware.dm" -#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm" -#include "code\modules\surgery\advanced\bioware\ligament_hook.dm" -#include "code\modules\surgery\advanced\bioware\ligament_reinforcement.dm" -#include "code\modules\surgery\advanced\bioware\muscled_veins.dm" -#include "code\modules\surgery\advanced\bioware\nerve_grounding.dm" -#include "code\modules\surgery\advanced\bioware\nerve_splicing.dm" -#include "code\modules\surgery\advanced\bioware\vein_threading.dm" -#include "code\modules\surgery\bodyparts\bodyparts.dm" -#include "code\modules\surgery\bodyparts\dismemberment.dm" -#include "code\modules\surgery\bodyparts\head.dm" -#include "code\modules\surgery\bodyparts\helpers.dm" -#include "code\modules\surgery\bodyparts\robot_bodyparts.dm" -#include "code\modules\surgery\organs\appendix.dm" -#include "code\modules\surgery\organs\augments_arms.dm" -#include "code\modules\surgery\organs\augments_chest.dm" -#include "code\modules\surgery\organs\augments_eyes.dm" -#include "code\modules\surgery\organs\augments_internal.dm" -#include "code\modules\surgery\organs\autosurgeon.dm" -#include "code\modules\surgery\organs\ears.dm" -#include "code\modules\surgery\organs\eyes.dm" -#include "code\modules\surgery\organs\heart.dm" -#include "code\modules\surgery\organs\helpers.dm" -#include "code\modules\surgery\organs\liver.dm" -#include "code\modules\surgery\organs\lungs.dm" -#include "code\modules\surgery\organs\organ_internal.dm" -#include "code\modules\surgery\organs\stomach.dm" -#include "code\modules\surgery\organs\tails.dm" -#include "code\modules\surgery\organs\tongue.dm" -#include "code\modules\surgery\organs\vocal_cords.dm" -#include "code\modules\tgs\includes.dm" -#include "code\modules\tgui\external.dm" -#include "code\modules\tgui\states.dm" -#include "code\modules\tgui\subsystem.dm" -#include "code\modules\tgui\tgui.dm" -#include "code\modules\tgui\states\admin.dm" -#include "code\modules\tgui\states\always.dm" -#include "code\modules\tgui\states\conscious.dm" -#include "code\modules\tgui\states\contained.dm" -#include "code\modules\tgui\states\deep_inventory.dm" -#include "code\modules\tgui\states\default.dm" -#include "code\modules\tgui\states\hands.dm" -#include "code\modules\tgui\states\human_adjacent.dm" -#include "code\modules\tgui\states\inventory.dm" -#include "code\modules\tgui\states\language_menu.dm" -#include "code\modules\tgui\states\not_incapacitated.dm" -#include "code\modules\tgui\states\notcontained.dm" -#include "code\modules\tgui\states\observer.dm" -#include "code\modules\tgui\states\physical.dm" -#include "code\modules\tgui\states\self.dm" -#include "code\modules\tgui\states\zlevel.dm" -#include "code\modules\tooltip\tooltip.dm" -#include "code\modules\unit_tests\_unit_tests.dm" -#include "code\modules\uplink\uplink_devices.dm" -#include "code\modules\uplink\uplink_items.dm" -#include "code\modules\uplink\uplink_purchase_log.dm" -#include "code\modules\uplink\uplink_items\uplink_ammo.dm" -#include "code\modules\uplink\uplink_items\uplink_badass.dm" -#include "code\modules\uplink\uplink_items\uplink_bundles.dm" -#include "code\modules\uplink\uplink_items\uplink_clothing.dm" -#include "code\modules\uplink\uplink_items\uplink_dangerous.dm" -#include "code\modules\uplink\uplink_items\uplink_devices.dm" -#include "code\modules\uplink\uplink_items\uplink_explosives.dm" -#include "code\modules\uplink\uplink_items\uplink_implants.dm" -#include "code\modules\uplink\uplink_items\uplink_roles.dm" -#include "code\modules\uplink\uplink_items\uplink_stealth.dm" -#include "code\modules\uplink\uplink_items\uplink_stealthdevices.dm" -#include "code\modules\uplink\uplink_items\uplink_support.dm" -#include "code\modules\vehicles\_vehicle.dm" -#include "code\modules\vehicles\atv.dm" -#include "code\modules\vehicles\bicycle.dm" -#include "code\modules\vehicles\lavaboat.dm" -#include "code\modules\vehicles\pimpin_ride.dm" -#include "code\modules\vehicles\ridden.dm" -#include "code\modules\vehicles\scooter.dm" -#include "code\modules\vehicles\sealed.dm" -#include "code\modules\vehicles\secway.dm" -#include "code\modules\vehicles\speedbike.dm" -#include "code\modules\vehicles\vehicle_actions.dm" -#include "code\modules\vehicles\vehicle_key.dm" -#include "code\modules\vehicles\wheelchair.dm" -#include "code\modules\vehicles\cars\car.dm" -#include "code\modules\vehicles\cars\clowncar.dm" -#include "code\modules\vending\_vending.dm" -#include "code\modules\vending\assist.dm" -#include "code\modules\vending\autodrobe.dm" -#include "code\modules\vending\boozeomat.dm" -#include "code\modules\vending\cartridge.dm" -#include "code\modules\vending\cigarette.dm" -#include "code\modules\vending\clothesmate.dm" -#include "code\modules\vending\coffee.dm" -#include "code\modules\vending\cola.dm" -#include "code\modules\vending\drinnerware.dm" -#include "code\modules\vending\engineering.dm" -#include "code\modules\vending\engivend.dm" -#include "code\modules\vending\games.dm" -#include "code\modules\vending\kinkmate.dm" -#include "code\modules\vending\liberation.dm" -#include "code\modules\vending\liberation_toy.dm" -#include "code\modules\vending\magivend.dm" -#include "code\modules\vending\medical.dm" -#include "code\modules\vending\medical_wall.dm" -#include "code\modules\vending\megaseed.dm" -#include "code\modules\vending\nutrimax.dm" -#include "code\modules\vending\plasmaresearch.dm" -#include "code\modules\vending\robotics.dm" -#include "code\modules\vending\security.dm" -#include "code\modules\vending\snack.dm" -#include "code\modules\vending\sovietsoda.dm" -#include "code\modules\vending\sovietvend.dm" -#include "code\modules\vending\sustenance.dm" -#include "code\modules\vending\toys.dm" -#include "code\modules\vending\wardrobes.dm" -#include "code\modules\vending\youtool.dm" -#include "code\modules\vore\hook-defs.dm" -#include "code\modules\vore\persistence.dm" -#include "code\modules\vore\trycatch.dm" -#include "code\modules\vore\eating\belly_dat_vr.dm" -#include "code\modules\vore\eating\belly_obj.dm" -#include "code\modules\vore\eating\bellymodes.dm" -#include "code\modules\vore\eating\digest_act.dm" -#include "code\modules\vore\eating\living.dm" -#include "code\modules\vore\eating\vore.dm" -#include "code\modules\vore\eating\voreitems.dm" -#include "code\modules\vore\eating\vorepanel.dm" -#include "code\modules\VR\vr_mob.dm" -#include "code\modules\VR\vr_sleeper.dm" -#include "code\modules\zombie\items.dm" -#include "code\modules\zombie\organs.dm" -#include "interface\interface.dm" -#include "interface\menu.dm" -#include "interface\stylesheet.dm" -#include "modular_citadel\code\__HELPERS\list2list.dm" -#include "modular_citadel\code\__HELPERS\lists.dm" -#include "modular_citadel\code\__HELPERS\mobs.dm" -#include "modular_citadel\code\_onclick\click.dm" -#include "modular_citadel\code\_onclick\item_attack.dm" -#include "modular_citadel\code\_onclick\other_mobs.dm" -#include "modular_citadel\code\_onclick\hud\screen_objects.dm" -#include "modular_citadel\code\_onclick\hud\sprint.dm" -#include "modular_citadel\code\_onclick\hud\stamina.dm" -#include "modular_citadel\code\datums\components\souldeath.dm" -#include "modular_citadel\code\datums\status_effects\chems.dm" -#include "modular_citadel\code\game\machinery\wishgranter.dm" -#include "modular_citadel\code\game\objects\cit_screenshake.dm" -#include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\modules\admin\admin.dm" -#include "modular_citadel\code\modules\admin\chat_commands.dm" -#include "modular_citadel\code\modules\admin\holder2.dm" -#include "modular_citadel\code\modules\admin\secrets.dm" -#include "modular_citadel\code\modules\admin\topic.dm" -#include "modular_citadel\code\modules\arousal\arousal.dm" -#include "modular_citadel\code\modules\arousal\genitals.dm" -#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" -#include "modular_citadel\code\modules\arousal\organs\breasts.dm" -#include "modular_citadel\code\modules\arousal\organs\eggsack.dm" -#include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" -#include "modular_citadel\code\modules\arousal\organs\penis.dm" -#include "modular_citadel\code\modules\arousal\organs\testicles.dm" -#include "modular_citadel\code\modules\arousal\organs\vagina.dm" -#include "modular_citadel\code\modules\arousal\organs\womb.dm" -#include "modular_citadel\code\modules\arousal\toys\dildos.dm" -#include "modular_citadel\code\modules\client\client_defines.dm" -#include "modular_citadel\code\modules\client\client_procs.dm" -#include "modular_citadel\code\modules\client\preferences.dm" -#include "modular_citadel\code\modules\client\preferences_savefile.dm" -#include "modular_citadel\code\modules\client\preferences_toggles.dm" -#include "modular_citadel\code\modules\client\loadout\__donator.dm" -#include "modular_citadel\code\modules\client\loadout\_loadout.dm" -#include "modular_citadel\code\modules\client\loadout\_medical.dm" -#include "modular_citadel\code\modules\client\loadout\_security.dm" -#include "modular_citadel\code\modules\client\loadout\_service.dm" -#include "modular_citadel\code\modules\client\loadout\backpack.dm" -#include "modular_citadel\code\modules\client\loadout\glasses.dm" -#include "modular_citadel\code\modules\client\loadout\gloves.dm" -#include "modular_citadel\code\modules\client\loadout\hands.dm" -#include "modular_citadel\code\modules\client\loadout\head.dm" -#include "modular_citadel\code\modules\client\loadout\mask.dm" -#include "modular_citadel\code\modules\client\loadout\neck.dm" -#include "modular_citadel\code\modules\client\loadout\shoes.dm" -#include "modular_citadel\code\modules\client\loadout\suit.dm" -#include "modular_citadel\code\modules\client\loadout\uniform.dm" -#include "modular_citadel\code\modules\client\verbs\who.dm" -#include "modular_citadel\code\modules\clothing\neck.dm" -#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" -#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" -#include "modular_citadel\code\modules\clothing\suits\suits.dm" -#include "modular_citadel\code\modules\clothing\under\trek_under.dm" -#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" -#include "modular_citadel\code\modules\clothing\under\under.dm" -#include "modular_citadel\code\modules\custom_loadout\custom_items.dm" -#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" -#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" -#include "modular_citadel\code\modules\mentor\follow.dm" -#include "modular_citadel\code\modules\mentor\mentor.dm" -#include "modular_citadel\code\modules\mentor\mentor_memo.dm" -#include "modular_citadel\code\modules\mentor\mentor_verbs.dm" -#include "modular_citadel\code\modules\mentor\mentorhelp.dm" -#include "modular_citadel\code\modules\mentor\mentorpm.dm" -#include "modular_citadel\code\modules\mentor\mentorsay.dm" -#include "modular_citadel\code\modules\mob\cit_emotes.dm" -#include "modular_citadel\code\modules\mob\living\damage_procs.dm" -#include "modular_citadel\code\modules\mob\living\living.dm" -#include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" -#include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" -#include "modular_citadel\code\modules\mob\living\carbon\life.dm" -#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm" -#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm" -#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" -#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" -#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" -#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "modular_citadel\code\modules\projectiles\gun.dm" -#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm" -#include "modular_citadel\code\modules\projectiles\ammunition\ballistic\smg\smg.dm" -#include "modular_citadel\code\modules\projectiles\boxes_magazines\ammo_boxes.dm" -#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\pistol.dm" -#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\smg\smg.dm" -#include "modular_citadel\code\modules\projectiles\bullets\bullets\smg.dm" -#include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm" -#include "modular_citadel\code\modules\projectiles\guns\toys.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm" -#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm" -#include "modular_citadel\code\modules\projectiles\guns\energy\laser.dm" -#include "modular_citadel\code\modules\projectiles\projectiles\reusable.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\astrogen.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\eigentstasium.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\enlargement.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\healing.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\MKUltra.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm" -#include "modular_citadel\code\modules\reagents\chemistry\reagents\SDGF.dm" -#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm" -#include "modular_citadel\code\modules\reagents\objects\clothes.dm" -#include "modular_citadel\code\modules\reagents\objects\items.dm" -#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" -#include "modular_citadel\interface\skin.dmf" -// END_INCLUDE +// DM Environment file for tgstation.dme. +// All manual changes should be made outside the BEGIN_ and END_ blocks. +// New source code should be placed in .dm files: choose File/New --> Code File. +// BEGIN_INTERNALS +// END_INTERNALS + +// BEGIN_FILE_DIR +#define FILE_DIR . +// END_FILE_DIR + +// BEGIN_PREFERENCES +#define DEBUG +// END_PREFERENCES + +// BEGIN_INCLUDE +#include "_maps\_basemap.dm" +#include "code\_compile_options.dm" +#include "code\world.dm" +#include "code\__DEFINES\__513_compatibility.dm" +#include "code\__DEFINES\_globals.dm" +#include "code\__DEFINES\_protect.dm" +#include "code\__DEFINES\_tick.dm" +#include "code\__DEFINES\access.dm" +#include "code\__DEFINES\admin.dm" +#include "code\__DEFINES\antagonists.dm" +#include "code\__DEFINES\atmospherics.dm" +#include "code\__DEFINES\atom_hud.dm" +#include "code\__DEFINES\bsql.config.dm" +#include "code\__DEFINES\bsql.dm" +#include "code\__DEFINES\callbacks.dm" +#include "code\__DEFINES\cargo.dm" +#include "code\__DEFINES\cinematics.dm" +#include "code\__DEFINES\citadel_defines.dm" +#include "code\__DEFINES\cleaning.dm" +#include "code\__DEFINES\clockcult.dm" +#include "code\__DEFINES\colors.dm" +#include "code\__DEFINES\combat.dm" +#include "code\__DEFINES\components.dm" +#include "code\__DEFINES\configuration.dm" +#include "code\__DEFINES\construction.dm" +#include "code\__DEFINES\contracts.dm" +#include "code\__DEFINES\cult.dm" +#include "code\__DEFINES\diseases.dm" +#include "code\__DEFINES\DNA.dm" +#include "code\__DEFINES\donator_groupings.dm" +#include "code\__DEFINES\dynamic.dm" +#include "code\__DEFINES\events.dm" +#include "code\__DEFINES\exports.dm" +#include "code\__DEFINES\fantasy_affixes.dm" +#include "code\__DEFINES\flags.dm" +#include "code\__DEFINES\food.dm" +#include "code\__DEFINES\footsteps.dm" +#include "code\__DEFINES\hud.dm" +#include "code\__DEFINES\integrated_electronics.dm" +#include "code\__DEFINES\interaction_flags.dm" +#include "code\__DEFINES\inventory.dm" +#include "code\__DEFINES\is_helpers.dm" +#include "code\__DEFINES\jobs.dm" +#include "code\__DEFINES\language.dm" +#include "code\__DEFINES\layers.dm" +#include "code\__DEFINES\lighting.dm" +#include "code\__DEFINES\logging.dm" +#include "code\__DEFINES\machines.dm" +#include "code\__DEFINES\maps.dm" +#include "code\__DEFINES\maths.dm" +#include "code\__DEFINES\MC.dm" +#include "code\__DEFINES\medal.dm" +#include "code\__DEFINES\melee.dm" +#include "code\__DEFINES\menu.dm" +#include "code\__DEFINES\misc.dm" +#include "code\__DEFINES\mobs.dm" +#include "code\__DEFINES\monkeys.dm" +#include "code\__DEFINES\movespeed_modification.dm" +#include "code\__DEFINES\nanites.dm" +#include "code\__DEFINES\networks.dm" +#include "code\__DEFINES\obj_flags.dm" +#include "code\__DEFINES\pinpointers.dm" +#include "code\__DEFINES\pipe_construction.dm" +#include "code\__DEFINES\preferences.dm" +#include "code\__DEFINES\procpath.dm" +#include "code\__DEFINES\profile.dm" +#include "code\__DEFINES\qdel.dm" +#include "code\__DEFINES\radiation.dm" +#include "code\__DEFINES\radio.dm" +#include "code\__DEFINES\reactions.dm" +#include "code\__DEFINES\reagents.dm" +#include "code\__DEFINES\reagents_specific_heat.dm" +#include "code\__DEFINES\research.dm" +#include "code\__DEFINES\robots.dm" +#include "code\__DEFINES\role_preferences.dm" +#include "code\__DEFINES\rust_g.config.dm" +#include "code\__DEFINES\rust_g.dm" +#include "code\__DEFINES\say.dm" +#include "code\__DEFINES\shuttles.dm" +#include "code\__DEFINES\sight.dm" +#include "code\__DEFINES\sound.dm" +#include "code\__DEFINES\spaceman_dmm.dm" +#include "code\__DEFINES\stat.dm" +#include "code\__DEFINES\stat_tracking.dm" +#include "code\__DEFINES\status_effects.dm" +#include "code\__DEFINES\subsystems.dm" +#include "code\__DEFINES\tgs.config.dm" +#include "code\__DEFINES\tgs.dm" +#include "code\__DEFINES\tgui.dm" +#include "code\__DEFINES\time.dm" +#include "code\__DEFINES\tools.dm" +#include "code\__DEFINES\traits.dm" +#include "code\__DEFINES\turf_flags.dm" +#include "code\__DEFINES\typeids.dm" +#include "code\__DEFINES\vehicles.dm" +#include "code\__DEFINES\voreconstants.dm" +#include "code\__DEFINES\vote.dm" +#include "code\__DEFINES\vv.dm" +#include "code\__DEFINES\wall_dents.dm" +#include "code\__DEFINES\wires.dm" +#include "code\__HELPERS\_cit_helpers.dm" +#include "code\__HELPERS\_lists.dm" +#include "code\__HELPERS\_logging.dm" +#include "code\__HELPERS\_string_lists.dm" +#include "code\__HELPERS\areas.dm" +#include "code\__HELPERS\AStar.dm" +#include "code\__HELPERS\cmp.dm" +#include "code\__HELPERS\custom_holoforms.dm" +#include "code\__HELPERS\dates.dm" +#include "code\__HELPERS\donator_groupings.dm" +#include "code\__HELPERS\files.dm" +#include "code\__HELPERS\game.dm" +#include "code\__HELPERS\global_lists.dm" +#include "code\__HELPERS\heap.dm" +#include "code\__HELPERS\icon_smoothing.dm" +#include "code\__HELPERS\icons.dm" +#include "code\__HELPERS\level_traits.dm" +#include "code\__HELPERS\matrices.dm" +#include "code\__HELPERS\mobs.dm" +#include "code\__HELPERS\mouse_control.dm" +#include "code\__HELPERS\names.dm" +#include "code\__HELPERS\priority_announce.dm" +#include "code\__HELPERS\pronouns.dm" +#include "code\__HELPERS\qdel.dm" +#include "code\__HELPERS\radiation.dm" +#include "code\__HELPERS\radio.dm" +#include "code\__HELPERS\reagents.dm" +#include "code\__HELPERS\roundend.dm" +#include "code\__HELPERS\sanitize_values.dm" +#include "code\__HELPERS\shell.dm" +#include "code\__HELPERS\stat_tracking.dm" +#include "code\__HELPERS\text.dm" +#include "code\__HELPERS\text_vr.dm" +#include "code\__HELPERS\time.dm" +#include "code\__HELPERS\type2type.dm" +#include "code\__HELPERS\type2type_vr.dm" +#include "code\__HELPERS\typelists.dm" +#include "code\__HELPERS\unsorted.dm" +#include "code\__HELPERS\view.dm" +#include "code\__HELPERS\sorts\__main.dm" +#include "code\__HELPERS\sorts\InsertSort.dm" +#include "code\__HELPERS\sorts\MergeSort.dm" +#include "code\__HELPERS\sorts\TimSort.dm" +#include "code\_globalvars\bitfields.dm" +#include "code\_globalvars\configuration.dm" +#include "code\_globalvars\game_modes.dm" +#include "code\_globalvars\genetics.dm" +#include "code\_globalvars\logging.dm" +#include "code\_globalvars\misc.dm" +#include "code\_globalvars\regexes.dm" +#include "code\_globalvars\lists\flavor_misc.dm" +#include "code\_globalvars\lists\maintenance_loot.dm" +#include "code\_globalvars\lists\mapping.dm" +#include "code\_globalvars\lists\medals.dm" +#include "code\_globalvars\lists\misc.dm" +#include "code\_globalvars\lists\mobs.dm" +#include "code\_globalvars\lists\names.dm" +#include "code\_globalvars\lists\objects.dm" +#include "code\_globalvars\lists\poll_ignore.dm" +#include "code\_globalvars\lists\typecache.dm" +#include "code\_js\byjax.dm" +#include "code\_js\menus.dm" +#include "code\_onclick\adjacent.dm" +#include "code\_onclick\ai.dm" +#include "code\_onclick\click.dm" +#include "code\_onclick\cyborg.dm" +#include "code\_onclick\drag_drop.dm" +#include "code\_onclick\item_attack.dm" +#include "code\_onclick\observer.dm" +#include "code\_onclick\other_mobs.dm" +#include "code\_onclick\overmind.dm" +#include "code\_onclick\telekinesis.dm" +#include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\action_button.dm" +#include "code\_onclick\hud\ai.dm" +#include "code\_onclick\hud\alert.dm" +#include "code\_onclick\hud\alien.dm" +#include "code\_onclick\hud\alien_larva.dm" +#include "code\_onclick\hud\blob_overmind.dm" +#include "code\_onclick\hud\blobbernauthud.dm" +#include "code\_onclick\hud\constructs.dm" +#include "code\_onclick\hud\credits.dm" +#include "code\_onclick\hud\devil.dm" +#include "code\_onclick\hud\drones.dm" +#include "code\_onclick\hud\fullscreen.dm" +#include "code\_onclick\hud\generic_dextrous.dm" +#include "code\_onclick\hud\ghost.dm" +#include "code\_onclick\hud\guardian.dm" +#include "code\_onclick\hud\hud.dm" +#include "code\_onclick\hud\human.dm" +#include "code\_onclick\hud\lavaland_elite.dm" +#include "code\_onclick\hud\monkey.dm" +#include "code\_onclick\hud\movable_screen_objects.dm" +#include "code\_onclick\hud\parallax.dm" +#include "code\_onclick\hud\picture_in_picture.dm" +#include "code\_onclick\hud\plane_master.dm" +#include "code\_onclick\hud\radial.dm" +#include "code\_onclick\hud\radial_persistent.dm" +#include "code\_onclick\hud\revenanthud.dm" +#include "code\_onclick\hud\robot.dm" +#include "code\_onclick\hud\screen_objects.dm" +#include "code\_onclick\hud\swarmer.dm" +#include "code\controllers\admin.dm" +#include "code\controllers\configuration_citadel.dm" +#include "code\controllers\controller.dm" +#include "code\controllers\failsafe.dm" +#include "code\controllers\globals.dm" +#include "code\controllers\hooks.dm" +#include "code\controllers\master.dm" +#include "code\controllers\subsystem.dm" +#include "code\controllers\configuration\config_entry.dm" +#include "code\controllers\configuration\configuration.dm" +#include "code\controllers\configuration\entries\comms.dm" +#include "code\controllers\configuration\entries\dbconfig.dm" +#include "code\controllers\configuration\entries\donator.dm" +#include "code\controllers\configuration\entries\dynamic.dm" +#include "code\controllers\configuration\entries\fail2topic.dm" +#include "code\controllers\configuration\entries\game_options.dm" +#include "code\controllers\configuration\entries\general.dm" +#include "code\controllers\subsystem\acid.dm" +#include "code\controllers\subsystem\adjacent_air.dm" +#include "code\controllers\subsystem\air.dm" +#include "code\controllers\subsystem\air_turfs.dm" +#include "code\controllers\subsystem\assets.dm" +#include "code\controllers\subsystem\atoms.dm" +#include "code\controllers\subsystem\augury.dm" +#include "code\controllers\subsystem\blackbox.dm" +#include "code\controllers\subsystem\chat.dm" +#include "code\controllers\subsystem\communications.dm" +#include "code\controllers\subsystem\dbcore.dm" +#include "code\controllers\subsystem\dcs.dm" +#include "code\controllers\subsystem\disease.dm" +#include "code\controllers\subsystem\events.dm" +#include "code\controllers\subsystem\fail2topic.dm" +#include "code\controllers\subsystem\fire_burning.dm" +#include "code\controllers\subsystem\garbage.dm" +#include "code\controllers\subsystem\icon_smooth.dm" +#include "code\controllers\subsystem\idlenpcpool.dm" +#include "code\controllers\subsystem\input.dm" +#include "code\controllers\subsystem\ipintel.dm" +#include "code\controllers\subsystem\job.dm" +#include "code\controllers\subsystem\jukeboxes.dm" +#include "code\controllers\subsystem\language.dm" +#include "code\controllers\subsystem\lighting.dm" +#include "code\controllers\subsystem\machines.dm" +#include "code\controllers\subsystem\mapping.dm" +#include "code\controllers\subsystem\medals.dm" +#include "code\controllers\subsystem\minor_mapping.dm" +#include "code\controllers\subsystem\mobs.dm" +#include "code\controllers\subsystem\moods.dm" +#include "code\controllers\subsystem\nightshift.dm" +#include "code\controllers\subsystem\npcpool.dm" +#include "code\controllers\subsystem\overlays.dm" +#include "code\controllers\subsystem\pai.dm" +#include "code\controllers\subsystem\parallax.dm" +#include "code\controllers\subsystem\pathfinder.dm" +#include "code\controllers\subsystem\persistence.dm" +#include "code\controllers\subsystem\ping.dm" +#include "code\controllers\subsystem\radiation.dm" +#include "code\controllers\subsystem\radio.dm" +#include "code\controllers\subsystem\research.dm" +#include "code\controllers\subsystem\server_maint.dm" +#include "code\controllers\subsystem\shuttle.dm" +#include "code\controllers\subsystem\spacedrift.dm" +#include "code\controllers\subsystem\stickyban.dm" +#include "code\controllers\subsystem\sun.dm" +#include "code\controllers\subsystem\tgui.dm" +#include "code\controllers\subsystem\throwing.dm" +#include "code\controllers\subsystem\ticker.dm" +#include "code\controllers\subsystem\time_track.dm" +#include "code\controllers\subsystem\timer.dm" +#include "code\controllers\subsystem\title.dm" +#include "code\controllers\subsystem\traumas.dm" +#include "code\controllers\subsystem\vis_overlays.dm" +#include "code\controllers\subsystem\vore.dm" +#include "code\controllers\subsystem\vote.dm" +#include "code\controllers\subsystem\weather.dm" +#include "code\controllers\subsystem\processing\chemistry.dm" +#include "code\controllers\subsystem\processing\circuit.dm" +#include "code\controllers\subsystem\processing\fastprocess.dm" +#include "code\controllers\subsystem\processing\fields.dm" +#include "code\controllers\subsystem\processing\nanites.dm" +#include "code\controllers\subsystem\processing\networks.dm" +#include "code\controllers\subsystem\processing\obj.dm" +#include "code\controllers\subsystem\processing\processing.dm" +#include "code\controllers\subsystem\processing\projectiles.dm" +#include "code\controllers\subsystem\processing\quirks.dm" +#include "code\controllers\subsystem\processing\wet_floors.dm" +#include "code\datums\action.dm" +#include "code\datums\ai_laws.dm" +#include "code\datums\armor.dm" +#include "code\datums\beam.dm" +#include "code\datums\browser.dm" +#include "code\datums\callback.dm" +#include "code\datums\cinematic.dm" +#include "code\datums\dash_weapon.dm" +#include "code\datums\datacore.dm" +#include "code\datums\datum.dm" +#include "code\datums\datumvars.dm" +#include "code\datums\dna.dm" +#include "code\datums\dog_fashion.dm" +#include "code\datums\embedding_behavior.dm" +#include "code\datums\emotes.dm" +#include "code\datums\ert.dm" +#include "code\datums\explosion.dm" +#include "code\datums\forced_movement.dm" +#include "code\datums\holocall.dm" +#include "code\datums\hud.dm" +#include "code\datums\map_config.dm" +#include "code\datums\martial.dm" +#include "code\datums\mind.dm" +#include "code\datums\mutable_appearance.dm" +#include "code\datums\mutations.dm" +#include "code\datums\numbered_display.dm" +#include "code\datums\outfit.dm" +#include "code\datums\position_point_vector.dm" +#include "code\datums\profiling.dm" +#include "code\datums\progressbar.dm" +#include "code\datums\radiation_wave.dm" +#include "code\datums\recipe.dm" +#include "code\datums\ruins.dm" +#include "code\datums\saymode.dm" +#include "code\datums\shuttles.dm" +#include "code\datums\soullink.dm" +#include "code\datums\spawners_menu.dm" +#include "code\datums\verbs.dm" +#include "code\datums\weakrefs.dm" +#include "code\datums\world_topic.dm" +#include "code\datums\actions\beam_rifle.dm" +#include "code\datums\actions\ninja.dm" +#include "code\datums\brain_damage\brain_trauma.dm" +#include "code\datums\brain_damage\hypnosis.dm" +#include "code\datums\brain_damage\imaginary_friend.dm" +#include "code\datums\brain_damage\mild.dm" +#include "code\datums\brain_damage\phobia.dm" +#include "code\datums\brain_damage\severe.dm" +#include "code\datums\brain_damage\special.dm" +#include "code\datums\brain_damage\split_personality.dm" +#include "code\datums\components\_component.dm" +#include "code\datums\components\anti_magic.dm" +#include "code\datums\components\armor_plate.dm" +#include "code\datums\components\bane.dm" +#include "code\datums\components\bouncy.dm" +#include "code\datums\components\butchering.dm" +#include "code\datums\components\caltrop.dm" +#include "code\datums\components\chasm.dm" +#include "code\datums\components\construction.dm" +#include "code\datums\components\decal.dm" +#include "code\datums\components\earprotection.dm" +#include "code\datums\components\edit_complainer.dm" +#include "code\datums\components\empprotection.dm" +#include "code\datums\components\footstep.dm" +#include "code\datums\components\forced_gravity.dm" +#include "code\datums\components\igniter.dm" +#include "code\datums\components\infective.dm" +#include "code\datums\components\jousting.dm" +#include "code\datums\components\knockback.dm" +#include "code\datums\components\knockoff.dm" +#include "code\datums\components\lifesteal.dm" +#include "code\datums\components\lockon_aiming.dm" +#include "code\datums\components\magnetic_catch.dm" +#include "code\datums\components\material_container.dm" +#include "code\datums\components\mirage_border.dm" +#include "code\datums\components\mood.dm" +#include "code\datums\components\nanites.dm" +#include "code\datums\components\ntnet_interface.dm" +#include "code\datums\components\orbiter.dm" +#include "code\datums\components\paintable.dm" +#include "code\datums\components\phantomthief.dm" +#include "code\datums\components\rad_insulation.dm" +#include "code\datums\components\radioactive.dm" +#include "code\datums\components\remote_materials.dm" +#include "code\datums\components\riding.dm" +#include "code\datums\components\rotation.dm" +#include "code\datums\components\shrapnel.dm" +#include "code\datums\components\shrink.dm" +#include "code\datums\components\sizzle.dm" +#include "code\datums\components\slippery.dm" +#include "code\datums\components\spooky.dm" +#include "code\datums\components\squeak.dm" +#include "code\datums\components\stationloving.dm" +#include "code\datums\components\summoning.dm" +#include "code\datums\components\swarming.dm" +#include "code\datums\components\tactical.dm" +#include "code\datums\components\thermite.dm" +#include "code\datums\components\uplink.dm" +#include "code\datums\components\virtual_reality.dm" +#include "code\datums\components\wearertargeting.dm" +#include "code\datums\components\wet_floor.dm" +#include "code\datums\components\fantasy\_fantasy.dm" +#include "code\datums\components\fantasy\affix.dm" +#include "code\datums\components\fantasy\prefixes.dm" +#include "code\datums\components\fantasy\suffixes.dm" +#include "code\datums\components\storage\storage.dm" +#include "code\datums\components\storage\concrete\_concrete.dm" +#include "code\datums\components\storage\concrete\bag_of_holding.dm" +#include "code\datums\components\storage\concrete\bluespace.dm" +#include "code\datums\components\storage\concrete\emergency.dm" +#include "code\datums\components\storage\concrete\implant.dm" +#include "code\datums\components\storage\concrete\pockets.dm" +#include "code\datums\components\storage\concrete\rped.dm" +#include "code\datums\components\storage\concrete\special.dm" +#include "code\datums\components\storage\concrete\stack.dm" +#include "code\datums\diseases\_disease.dm" +#include "code\datums\diseases\_MobProcs.dm" +#include "code\datums\diseases\anxiety.dm" +#include "code\datums\diseases\appendicitis.dm" +#include "code\datums\diseases\beesease.dm" +#include "code\datums\diseases\brainrot.dm" +#include "code\datums\diseases\cold.dm" +#include "code\datums\diseases\cold9.dm" +#include "code\datums\diseases\dna_spread.dm" +#include "code\datums\diseases\fake_gbs.dm" +#include "code\datums\diseases\flu.dm" +#include "code\datums\diseases\fluspanish.dm" +#include "code\datums\diseases\gbs.dm" +#include "code\datums\diseases\heart_failure.dm" +#include "code\datums\diseases\magnitis.dm" +#include "code\datums\diseases\parrotpossession.dm" +#include "code\datums\diseases\pierrot_throat.dm" +#include "code\datums\diseases\retrovirus.dm" +#include "code\datums\diseases\rhumba_beat.dm" +#include "code\datums\diseases\transformation.dm" +#include "code\datums\diseases\tuberculosis.dm" +#include "code\datums\diseases\wizarditis.dm" +#include "code\datums\diseases\advance\advance.dm" +#include "code\datums\diseases\advance\presets.dm" +#include "code\datums\diseases\advance\symptoms\beard.dm" +#include "code\datums\diseases\advance\symptoms\choking.dm" +#include "code\datums\diseases\advance\symptoms\confusion.dm" +#include "code\datums\diseases\advance\symptoms\cough.dm" +#include "code\datums\diseases\advance\symptoms\deafness.dm" +#include "code\datums\diseases\advance\symptoms\dizzy.dm" +#include "code\datums\diseases\advance\symptoms\fever.dm" +#include "code\datums\diseases\advance\symptoms\fire.dm" +#include "code\datums\diseases\advance\symptoms\flesh_eating.dm" +#include "code\datums\diseases\advance\symptoms\hallucigen.dm" +#include "code\datums\diseases\advance\symptoms\headache.dm" +#include "code\datums\diseases\advance\symptoms\heal.dm" +#include "code\datums\diseases\advance\symptoms\itching.dm" +#include "code\datums\diseases\advance\symptoms\nanites.dm" +#include "code\datums\diseases\advance\symptoms\narcolepsy.dm" +#include "code\datums\diseases\advance\symptoms\oxygen.dm" +#include "code\datums\diseases\advance\symptoms\sensory.dm" +#include "code\datums\diseases\advance\symptoms\shedding.dm" +#include "code\datums\diseases\advance\symptoms\shivering.dm" +#include "code\datums\diseases\advance\symptoms\skin.dm" +#include "code\datums\diseases\advance\symptoms\sneeze.dm" +#include "code\datums\diseases\advance\symptoms\species.dm" +#include "code\datums\diseases\advance\symptoms\symptoms.dm" +#include "code\datums\diseases\advance\symptoms\viral.dm" +#include "code\datums\diseases\advance\symptoms\vision.dm" +#include "code\datums\diseases\advance\symptoms\voice_change.dm" +#include "code\datums\diseases\advance\symptoms\vomit.dm" +#include "code\datums\diseases\advance\symptoms\weight.dm" +#include "code\datums\diseases\advance\symptoms\youth.dm" +#include "code\datums\elements\_element.dm" +#include "code\datums\elements\cleaning.dm" +#include "code\datums\elements\earhealing.dm" +#include "code\datums\elements\ghost_role_eligibility.dm" +#include "code\datums\elements\wuv.dm" +#include "code\datums\helper_datums\events.dm" +#include "code\datums\helper_datums\getrev.dm" +#include "code\datums\helper_datums\icon_snapshot.dm" +#include "code\datums\helper_datums\teleport.dm" +#include "code\datums\helper_datums\topic_input.dm" +#include "code\datums\looping_sounds\_looping_sound.dm" +#include "code\datums\looping_sounds\item_sounds.dm" +#include "code\datums\looping_sounds\machinery_sounds.dm" +#include "code\datums\looping_sounds\weather.dm" +#include "code\datums\martial\boxing.dm" +#include "code\datums\martial\cqc.dm" +#include "code\datums\martial\krav_maga.dm" +#include "code\datums\martial\mushpunch.dm" +#include "code\datums\martial\plasma_fist.dm" +#include "code\datums\martial\psychotic_brawl.dm" +#include "code\datums\martial\rising_bass.dm" +#include "code\datums\martial\sleeping_carp.dm" +#include "code\datums\martial\wrestling.dm" +#include "code\datums\mood_events\beauty_events.dm" +#include "code\datums\mood_events\drink_events.dm" +#include "code\datums\mood_events\drug_events.dm" +#include "code\datums\mood_events\generic_negative_events.dm" +#include "code\datums\mood_events\generic_positive_events.dm" +#include "code\datums\mood_events\mood_event.dm" +#include "code\datums\mood_events\needs_events.dm" +#include "code\datums\mutations\body.dm" +#include "code\datums\mutations\chameleon.dm" +#include "code\datums\mutations\cold_resistance.dm" +#include "code\datums\mutations\hulk.dm" +#include "code\datums\mutations\sight.dm" +#include "code\datums\mutations\speech.dm" +#include "code\datums\mutations\telekinesis.dm" +#include "code\datums\ruins\lavaland.dm" +#include "code\datums\ruins\space.dm" +#include "code\datums\ruins\station.dm" +#include "code\datums\status_effects\buffs.dm" +#include "code\datums\status_effects\debuffs.dm" +#include "code\datums\status_effects\gas.dm" +#include "code\datums\status_effects\neutral.dm" +#include "code\datums\status_effects\status_effect.dm" +#include "code\datums\traits\_quirk.dm" +#include "code\datums\traits\good.dm" +#include "code\datums\traits\negative.dm" +#include "code\datums\traits\neutral.dm" +#include "code\datums\weather\weather.dm" +#include "code\datums\weather\weather_types\acid_rain.dm" +#include "code\datums\weather\weather_types\ash_storm.dm" +#include "code\datums\weather\weather_types\floor_is_lava.dm" +#include "code\datums\weather\weather_types\radiation_storm.dm" +#include "code\datums\weather\weather_types\snow_storm.dm" +#include "code\datums\wires\_wires.dm" +#include "code\datums\wires\airalarm.dm" +#include "code\datums\wires\airlock.dm" +#include "code\datums\wires\apc.dm" +#include "code\datums\wires\autolathe.dm" +#include "code\datums\wires\autoylathe.dm" +#include "code\datums\wires\emitter.dm" +#include "code\datums\wires\explosive.dm" +#include "code\datums\wires\microwave.dm" +#include "code\datums\wires\mulebot.dm" +#include "code\datums\wires\particle_accelerator.dm" +#include "code\datums\wires\r_n_d.dm" +#include "code\datums\wires\radio.dm" +#include "code\datums\wires\robot.dm" +#include "code\datums\wires\suit_storage_unit.dm" +#include "code\datums\wires\syndicatebomb.dm" +#include "code\datums\wires\tesla_coil.dm" +#include "code\datums\wires\vending.dm" +#include "code\game\alternate_appearance.dm" +#include "code\game\atoms.dm" +#include "code\game\atoms_movable.dm" +#include "code\game\communications.dm" +#include "code\game\data_huds.dm" +#include "code\game\say.dm" +#include "code\game\shuttle_engines.dm" +#include "code\game\sound.dm" +#include "code\game\world.dm" +#include "code\game\area\ai_monitored.dm" +#include "code\game\area\areas.dm" +#include "code\game\area\Space_Station_13_areas.dm" +#include "code\game\area\areas\away_content.dm" +#include "code\game\area\areas\centcom.dm" +#include "code\game\area\areas\holodeck.dm" +#include "code\game\area\areas\mining.dm" +#include "code\game\area\areas\shuttles.dm" +#include "code\game\area\areas\ruins\_ruins.dm" +#include "code\game\area\areas\ruins\lavaland.dm" +#include "code\game\area\areas\ruins\space.dm" +#include "code\game\area\areas\ruins\templates.dm" +#include "code\game\gamemodes\events.dm" +#include "code\game\gamemodes\game_mode.dm" +#include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\objective_items.dm" +#include "code\game\gamemodes\bloodsucker\bloodsucker.dm" +#include "code\game\gamemodes\bloodsucker\hunter.dm" +#include "code\game\gamemodes\brother\traitor_bro.dm" +#include "code\game\gamemodes\changeling\changeling.dm" +#include "code\game\gamemodes\changeling\traitor_chan.dm" +#include "code\game\gamemodes\clock_cult\clock_cult.dm" +#include "code\game\gamemodes\clown_ops\bananium_bomb.dm" +#include "code\game\gamemodes\clown_ops\clown_ops.dm" +#include "code\game\gamemodes\clown_ops\clown_weapons.dm" +#include "code\game\gamemodes\cult\cult.dm" +#include "code\game\gamemodes\devil\devil_game_mode.dm" +#include "code\game\gamemodes\devil\game_mode.dm" +#include "code\game\gamemodes\devil\objectives.dm" +#include "code\game\gamemodes\devil\devil agent\devil_agent.dm" +#include "code\game\gamemodes\dynamic\dynamic.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_events.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" +#include "code\game\gamemodes\dynamic\dynamic_storytellers.dm" +#include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\gangs\dominator.dm" +#include "code\game\gamemodes\gangs\dominator_countdown.dm" +#include "code\game\gamemodes\gangs\gang.dm" +#include "code\game\gamemodes\gangs\gang_datums.dm" +#include "code\game\gamemodes\gangs\gang_decals.dm" +#include "code\game\gamemodes\gangs\gang_hud.dm" +#include "code\game\gamemodes\gangs\gang_items.dm" +#include "code\game\gamemodes\gangs\gang_pen.dm" +#include "code\game\gamemodes\gangs\gangs.dm" +#include "code\game\gamemodes\gangs\gangtool.dm" +#include "code\game\gamemodes\gangs\implant_gang.dm" +#include "code\game\gamemodes\meteor\meteor.dm" +#include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\monkey\monkey.dm" +#include "code\game\gamemodes\nuclear\nuclear.dm" +#include "code\game\gamemodes\overthrow\objective.dm" +#include "code\game\gamemodes\overthrow\overthrow.dm" +#include "code\game\gamemodes\revolution\revolution.dm" +#include "code\game\gamemodes\sandbox\airlock_maker.dm" +#include "code\game\gamemodes\sandbox\h_sandbox.dm" +#include "code\game\gamemodes\sandbox\sandbox.dm" +#include "code\game\gamemodes\traitor\double_agents.dm" +#include "code\game\gamemodes\traitor\traitor.dm" +#include "code\game\gamemodes\wizard\wizard.dm" +#include "code\game\machinery\_machinery.dm" +#include "code\game\machinery\ai_slipper.dm" +#include "code\game\machinery\airlock_control.dm" +#include "code\game\machinery\announcement_system.dm" +#include "code\game\machinery\aug_manipulator.dm" +#include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\bank_machine.dm" +#include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\bloodbankgen.dm" +#include "code\game\machinery\buttons.dm" +#include "code\game\machinery\cell_charger.dm" +#include "code\game\machinery\cloning.dm" +#include "code\game\machinery\constructable_frame.dm" +#include "code\game\machinery\cryopod.dm" +#include "code\game\machinery\dance_machine.dm" +#include "code\game\machinery\defibrillator_mount.dm" +#include "code\game\machinery\deployable.dm" +#include "code\game\machinery\dish_drive.dm" +#include "code\game\machinery\dna_scanner.dm" +#include "code\game\machinery\doppler_array.dm" +#include "code\game\machinery\droneDispenser.dm" +#include "code\game\machinery\exp_cloner.dm" +#include "code\game\machinery\firealarm.dm" +#include "code\game\machinery\flasher.dm" +#include "code\game\machinery\gulag_item_reclaimer.dm" +#include "code\game\machinery\gulag_teleporter.dm" +#include "code\game\machinery\harvester.dm" +#include "code\game\machinery\hologram.dm" +#include "code\game\machinery\igniter.dm" +#include "code\game\machinery\iv_drip.dm" +#include "code\game\machinery\launch_pad.dm" +#include "code\game\machinery\lightswitch.dm" +#include "code\game\machinery\limbgrower.dm" +#include "code\game\machinery\magnet.dm" +#include "code\game\machinery\mass_driver.dm" +#include "code\game\machinery\navbeacon.dm" +#include "code\game\machinery\newscaster.dm" +#include "code\game\machinery\PDApainter.dm" +#include "code\game\machinery\quantum_pad.dm" +#include "code\game\machinery\recharger.dm" +#include "code\game\machinery\rechargestation.dm" +#include "code\game\machinery\recycler.dm" +#include "code\game\machinery\requests_console.dm" +#include "code\game\machinery\shieldgen.dm" +#include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\slotmachine.dm" +#include "code\game\machinery\spaceheater.dm" +#include "code\game\machinery\status_display.dm" +#include "code\game\machinery\suit_storage_unit.dm" +#include "code\game\machinery\syndicatebeacon.dm" +#include "code\game\machinery\syndicatebomb.dm" +#include "code\game\machinery\teleporter.dm" +#include "code\game\machinery\toylathe.dm" +#include "code\game\machinery\transformer.dm" +#include "code\game\machinery\turnstile.dm" +#include "code\game\machinery\washing_machine.dm" +#include "code\game\machinery\wishgranter.dm" +#include "code\game\machinery\camera\camera.dm" +#include "code\game\machinery\camera\camera_assembly.dm" +#include "code\game\machinery\camera\motion.dm" +#include "code\game\machinery\camera\presets.dm" +#include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\computer\_computer.dm" +#include "code\game\machinery\computer\aifixer.dm" +#include "code\game\machinery\computer\apc_control.dm" +#include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\atmos_alert.dm" +#include "code\game\machinery\computer\atmos_control.dm" +#include "code\game\machinery\computer\buildandrepair.dm" +#include "code\game\machinery\computer\camera.dm" +#include "code\game\machinery\computer\camera_advanced.dm" +#include "code\game\machinery\computer\card.dm" +#include "code\game\machinery\computer\cloning.dm" +#include "code\game\machinery\computer\communications.dm" +#include "code\game\machinery\computer\crew.dm" +#include "code\game\machinery\computer\dna_console.dm" +#include "code\game\machinery\computer\launchpad_control.dm" +#include "code\game\machinery\computer\law.dm" +#include "code\game\machinery\computer\medical.dm" +#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\pod.dm" +#include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\station_alert.dm" +#include "code\game\machinery\computer\telecrystalconsoles.dm" +#include "code\game\machinery\computer\teleporter.dm" +#include "code\game\machinery\computer\arcade\battle.dm" +#include "code\game\machinery\computer\arcade\minesweeper.dm" +#include "code\game\machinery\computer\arcade\misc_arcade.dm" +#include "code\game\machinery\computer\arcade\orion_trail.dm" +#include "code\game\machinery\computer\prisoner\_prisoner.dm" +#include "code\game\machinery\computer\prisoner\gulag_teleporter.dm" +#include "code\game\machinery\computer\prisoner\management.dm" +#include "code\game\machinery\doors\airlock.dm" +#include "code\game\machinery\doors\airlock_electronics.dm" +#include "code\game\machinery\doors\airlock_types.dm" +#include "code\game\machinery\doors\alarmlock.dm" +#include "code\game\machinery\doors\brigdoors.dm" +#include "code\game\machinery\doors\checkForMultipleDoors.dm" +#include "code\game\machinery\doors\door.dm" +#include "code\game\machinery\doors\firedoor.dm" +#include "code\game\machinery\doors\passworddoor.dm" +#include "code\game\machinery\doors\poddoor.dm" +#include "code\game\machinery\doors\shutters.dm" +#include "code\game\machinery\doors\unpowered.dm" +#include "code\game\machinery\doors\windowdoor.dm" +#include "code\game\machinery\embedded_controller\access_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_controller.dm" +#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" +#include "code\game\machinery\embedded_controller\simple_vent_controller.dm" +#include "code\game\machinery\pipe\construction.dm" +#include "code\game\machinery\pipe\pipe_dispenser.dm" +#include "code\game\machinery\porta_turret\portable_turret.dm" +#include "code\game\machinery\porta_turret\portable_turret_construct.dm" +#include "code\game\machinery\porta_turret\portable_turret_cover.dm" +#include "code\game\machinery\telecomms\broadcasting.dm" +#include "code\game\machinery\telecomms\machine_interactions.dm" +#include "code\game\machinery\telecomms\telecomunications.dm" +#include "code\game\machinery\telecomms\computers\logbrowser.dm" +#include "code\game\machinery\telecomms\computers\message.dm" +#include "code\game\machinery\telecomms\computers\telemonitor.dm" +#include "code\game\machinery\telecomms\machines\allinone.dm" +#include "code\game\machinery\telecomms\machines\broadcaster.dm" +#include "code\game\machinery\telecomms\machines\bus.dm" +#include "code\game\machinery\telecomms\machines\hub.dm" +#include "code\game\machinery\telecomms\machines\message_server.dm" +#include "code\game\machinery\telecomms\machines\processor.dm" +#include "code\game\machinery\telecomms\machines\receiver.dm" +#include "code\game\machinery\telecomms\machines\relay.dm" +#include "code\game\machinery\telecomms\machines\server.dm" +#include "code\game\mecha\mech_bay.dm" +#include "code\game\mecha\mech_fabricator.dm" +#include "code\game\mecha\mecha.dm" +#include "code\game\mecha\mecha_actions.dm" +#include "code\game\mecha\mecha_construction_paths.dm" +#include "code\game\mecha\mecha_control_console.dm" +#include "code\game\mecha\mecha_defense.dm" +#include "code\game\mecha\mecha_parts.dm" +#include "code\game\mecha\mecha_topic.dm" +#include "code\game\mecha\mecha_wreckage.dm" +#include "code\game\mecha\combat\combat.dm" +#include "code\game\mecha\combat\durand.dm" +#include "code\game\mecha\combat\gygax.dm" +#include "code\game\mecha\combat\honker.dm" +#include "code\game\mecha\combat\marauder.dm" +#include "code\game\mecha\combat\neovgre.dm" +#include "code\game\mecha\combat\phazon.dm" +#include "code\game\mecha\combat\reticence.dm" +#include "code\game\mecha\equipment\mecha_equipment.dm" +#include "code\game\mecha\equipment\tools\medical_tools.dm" +#include "code\game\mecha\equipment\tools\mining_tools.dm" +#include "code\game\mecha\equipment\tools\other_tools.dm" +#include "code\game\mecha\equipment\tools\work_tools.dm" +#include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\medical\medical.dm" +#include "code\game\mecha\medical\odysseus.dm" +#include "code\game\mecha\working\ripley.dm" +#include "code\game\mecha\working\working.dm" +#include "code\game\objects\buckling.dm" +#include "code\game\objects\empulse.dm" +#include "code\game\objects\items.dm" +#include "code\game\objects\obj_defense.dm" +#include "code\game\objects\objs.dm" +#include "code\game\objects\structures.dm" +#include "code\game\objects\effects\alien_acid.dm" +#include "code\game\objects\effects\anomalies.dm" +#include "code\game\objects\effects\blessing.dm" +#include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\contraband.dm" +#include "code\game\objects\effects\countdown.dm" +#include "code\game\objects\effects\effects.dm" +#include "code\game\objects\effects\forcefields.dm" +#include "code\game\objects\effects\glowshroom.dm" +#include "code\game\objects\effects\landmarks.dm" +#include "code\game\objects\effects\mines.dm" +#include "code\game\objects\effects\misc.dm" +#include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\proximity.dm" +#include "code\game\objects\effects\spiders.dm" +#include "code\game\objects\effects\step_triggers.dm" +#include "code\game\objects\effects\wanted_poster.dm" +#include "code\game\objects\effects\decals\cleanable.dm" +#include "code\game\objects\effects\decals\crayon.dm" +#include "code\game\objects\effects\decals\decal.dm" +#include "code\game\objects\effects\decals\misc.dm" +#include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\cleanable\aliens.dm" +#include "code\game\objects\effects\decals\cleanable\gibs.dm" +#include "code\game\objects\effects\decals\cleanable\humans.dm" +#include "code\game\objects\effects\decals\cleanable\misc.dm" +#include "code\game\objects\effects\decals\cleanable\robots.dm" +#include "code\game\objects\effects\decals\turfdecal\dirt.dm" +#include "code\game\objects\effects\decals\turfdecal\markings.dm" +#include "code\game\objects\effects\decals\turfdecal\tilecoloring.dm" +#include "code\game\objects\effects\decals\turfdecal\weather.dm" +#include "code\game\objects\effects\effect_system\effect_system.dm" +#include "code\game\objects\effects\effect_system\effects_explosion.dm" +#include "code\game\objects\effects\effect_system\effects_foam.dm" +#include "code\game\objects\effects\effect_system\effects_other.dm" +#include "code\game\objects\effects\effect_system\effects_smoke.dm" +#include "code\game\objects\effects\effect_system\effects_sparks.dm" +#include "code\game\objects\effects\effect_system\effects_water.dm" +#include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\bundle.dm" +#include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\lootdrop.dm" +#include "code\game\objects\effects\spawners\structure.dm" +#include "code\game\objects\effects\spawners\traps.dm" +#include "code\game\objects\effects\spawners\vaultspawner.dm" +#include "code\game\objects\effects\spawners\xeno_egg_delivery.dm" +#include "code\game\objects\effects\temporary_visuals\clockcult.dm" +#include "code\game\objects\effects\temporary_visuals\cult.dm" +#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" +#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" +#include "code\game\objects\items\AI_modules.dm" +#include "code\game\objects\items\airlock_painter.dm" +#include "code\game\objects\items\apc_frame.dm" +#include "code\game\objects\items\balls.dm" +#include "code\game\objects\items\blueprints.dm" +#include "code\game\objects\items\body_egg.dm" +#include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\boombox.dm" +#include "code\game\objects\items\candle.dm" +#include "code\game\objects\items\cardboard_cutouts.dm" +#include "code\game\objects\items\cards_ids.dm" +#include "code\game\objects\items\charter.dm" +#include "code\game\objects\items\chrono_eraser.dm" +#include "code\game\objects\items\cigs_lighters.dm" +#include "code\game\objects\items\clown_items.dm" +#include "code\game\objects\items\control_wand.dm" +#include "code\game\objects\items\cosmetics.dm" +#include "code\game\objects\items\courtroom.dm" +#include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\defib.dm" +#include "code\game\objects\items\dehy_carp.dm" +#include "code\game\objects\items\dice.dm" +#include "code\game\objects\items\dna_injector.dm" +#include "code\game\objects\items\documents.dm" +#include "code\game\objects\items\eightball.dm" +#include "code\game\objects\items\extinguisher.dm" +#include "code\game\objects\items\flamethrower.dm" +#include "code\game\objects\items\gift.dm" +#include "code\game\objects\items\granters.dm" +#include "code\game\objects\items\handcuffs.dm" +#include "code\game\objects\items\his_grace.dm" +#include "code\game\objects\items\holosign_creator.dm" +#include "code\game\objects\items\holy_weapons.dm" +#include "code\game\objects\items\hot_potato.dm" +#include "code\game\objects\items\inducer.dm" +#include "code\game\objects\items\kitchen.dm" +#include "code\game\objects\items\latexballoon.dm" +#include "code\game\objects\items\manuals.dm" +#include "code\game\objects\items\miscellaneous.dm" +#include "code\game\objects\items\mop.dm" +#include "code\game\objects\items\paint.dm" +#include "code\game\objects\items\paiwire.dm" +#include "code\game\objects\items\pet_carrier.dm" +#include "code\game\objects\items\pinpointer.dm" +#include "code\game\objects\items\plushes.dm" +#include "code\game\objects\items\pneumaticCannon.dm" +#include "code\game\objects\items\powerfist.dm" +#include "code\game\objects\items\RCD.dm" +#include "code\game\objects\items\RCL.dm" +#include "code\game\objects\items\religion.dm" +#include "code\game\objects\items\RPD.dm" +#include "code\game\objects\items\RSF.dm" +#include "code\game\objects\items\scrolls.dm" +#include "code\game\objects\items\sharpener.dm" +#include "code\game\objects\items\shields.dm" +#include "code\game\objects\items\shooting_range.dm" +#include "code\game\objects\items\signs.dm" +#include "code\game\objects\items\singularityhammer.dm" +#include "code\game\objects\items\stunbaton.dm" +#include "code\game\objects\items\taster.dm" +#include "code\game\objects\items\teleportation.dm" +#include "code\game\objects\items\teleprod.dm" +#include "code\game\objects\items\telescopic_iv.dm" +#include "code\game\objects\items\theft_tools.dm" +#include "code\game\objects\items\toys.dm" +#include "code\game\objects\items\trash.dm" +#include "code\game\objects\items\twohanded.dm" +#include "code\game\objects\items\vending_items.dm" +#include "code\game\objects\items\weaponry.dm" +#include "code\game\objects\items\circuitboards\circuitboard.dm" +#include "code\game\objects\items\circuitboards\computer_circuitboards.dm" +#include "code\game\objects\items\circuitboards\machine_circuitboards.dm" +#include "code\game\objects\items\devices\aicard.dm" +#include "code\game\objects\items\devices\anomaly_neutralizer.dm" +#include "code\game\objects\items\devices\beacon.dm" +#include "code\game\objects\items\devices\camera_bug.dm" +#include "code\game\objects\items\devices\chameleonproj.dm" +#include "code\game\objects\items\devices\compressionkit.dm" +#include "code\game\objects\items\devices\desynchronizer.dm" +#include "code\game\objects\items\devices\dogborg_sleeper.dm" +#include "code\game\objects\items\devices\doorCharge.dm" +#include "code\game\objects\items\devices\electroadaptive_pseudocircuit.dm" +#include "code\game\objects\items\devices\flashlight.dm" +#include "code\game\objects\items\devices\forcefieldprojector.dm" +#include "code\game\objects\items\devices\geiger_counter.dm" +#include "code\game\objects\items\devices\glue.dm" +#include "code\game\objects\items\devices\gps.dm" +#include "code\game\objects\items\devices\instruments.dm" +#include "code\game\objects\items\devices\laserpointer.dm" +#include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\paicard.dm" +#include "code\game\objects\items\devices\pipe_painter.dm" +#include "code\game\objects\items\devices\powersink.dm" +#include "code\game\objects\items\devices\pressureplates.dm" +#include "code\game\objects\items\devices\quantum_keycard.dm" +#include "code\game\objects\items\devices\reverse_bear_trap.dm" +#include "code\game\objects\items\devices\scanners.dm" +#include "code\game\objects\items\devices\sensor_device.dm" +#include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\traitordevices.dm" +#include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\PDA\cart.dm" +#include "code\game\objects\items\devices\PDA\PDA.dm" +#include "code\game\objects\items\devices\PDA\PDA_types.dm" +#include "code\game\objects\items\devices\PDA\radio.dm" +#include "code\game\objects\items\devices\PDA\virus_cart.dm" +#include "code\game\objects\items\devices\radio\electropack.dm" +#include "code\game\objects\items\devices\radio\encryptionkey.dm" +#include "code\game\objects\items\devices\radio\headset.dm" +#include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\grenades\antigravity.dm" +#include "code\game\objects\items\grenades\chem_grenade.dm" +#include "code\game\objects\items\grenades\clusterbuster.dm" +#include "code\game\objects\items\grenades\emgrenade.dm" +#include "code\game\objects\items\grenades\flashbang.dm" +#include "code\game\objects\items\grenades\ghettobomb.dm" +#include "code\game\objects\items\grenades\grenade.dm" +#include "code\game\objects\items\grenades\plastic.dm" +#include "code\game\objects\items\grenades\smokebomb.dm" +#include "code\game\objects\items\grenades\spawnergrenade.dm" +#include "code\game\objects\items\grenades\syndieminibomb.dm" +#include "code\game\objects\items\implants\implant.dm" +#include "code\game\objects\items\implants\implant_abductor.dm" +#include "code\game\objects\items\implants\implant_chem.dm" +#include "code\game\objects\items\implants\implant_clown.dm" +#include "code\game\objects\items\implants\implant_exile.dm" +#include "code\game\objects\items\implants\implant_explosive.dm" +#include "code\game\objects\items\implants\implant_freedom.dm" +#include "code\game\objects\items\implants\implant_krav_maga.dm" +#include "code\game\objects\items\implants\implant_mindshield.dm" +#include "code\game\objects\items\implants\implant_misc.dm" +#include "code\game\objects\items\implants\implant_radio.dm" +#include "code\game\objects\items\implants\implant_spell.dm" +#include "code\game\objects\items\implants\implant_stealth.dm" +#include "code\game\objects\items\implants\implant_storage.dm" +#include "code\game\objects\items\implants\implant_track.dm" +#include "code\game\objects\items\implants\implant_uplink.dm" +#include "code\game\objects\items\implants\implantcase.dm" +#include "code\game\objects\items\implants\implantchair.dm" +#include "code\game\objects\items\implants\implanter.dm" +#include "code\game\objects\items\implants\implantpad.dm" +#include "code\game\objects\items\melee\energy.dm" +#include "code\game\objects\items\melee\misc.dm" +#include "code\game\objects\items\melee\transforming.dm" +#include "code\game\objects\items\robot\ai_upgrades.dm" +#include "code\game\objects\items\robot\robot_items.dm" +#include "code\game\objects\items\robot\robot_parts.dm" +#include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\stacks\bscrystal.dm" +#include "code\game\objects\items\stacks\cash.dm" +#include "code\game\objects\items\stacks\medical.dm" +#include "code\game\objects\items\stacks\rods.dm" +#include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\telecrystal.dm" +#include "code\game\objects\items\stacks\wrap.dm" +#include "code\game\objects\items\stacks\sheets\glass.dm" +#include "code\game\objects\items\stacks\sheets\leather.dm" +#include "code\game\objects\items\stacks\sheets\light.dm" +#include "code\game\objects\items\stacks\sheets\mineral.dm" +#include "code\game\objects\items\stacks\sheets\sheet_types.dm" +#include "code\game\objects\items\stacks\sheets\sheets.dm" +#include "code\game\objects\items\stacks\tiles\light.dm" +#include "code\game\objects\items\stacks\tiles\tile_mineral.dm" +#include "code\game\objects\items\stacks\tiles\tile_types.dm" +#include "code\game\objects\items\storage\backpack.dm" +#include "code\game\objects\items\storage\bags.dm" +#include "code\game\objects\items\storage\belt.dm" +#include "code\game\objects\items\storage\book.dm" +#include "code\game\objects\items\storage\boxes.dm" +#include "code\game\objects\items\storage\briefcase.dm" +#include "code\game\objects\items\storage\dakis.dm" +#include "code\game\objects\items\storage\fancy.dm" +#include "code\game\objects\items\storage\firstaid.dm" +#include "code\game\objects\items\storage\lockbox.dm" +#include "code\game\objects\items\storage\secure.dm" +#include "code\game\objects\items\storage\storage.dm" +#include "code\game\objects\items\storage\toolbox.dm" +#include "code\game\objects\items\storage\uplink_kits.dm" +#include "code\game\objects\items\storage\wallets.dm" +#include "code\game\objects\items\tanks\jetpack.dm" +#include "code\game\objects\items\tanks\tank_types.dm" +#include "code\game\objects\items\tanks\tanks.dm" +#include "code\game\objects\items\tanks\watertank.dm" +#include "code\game\objects\items\tools\crowbar.dm" +#include "code\game\objects\items\tools\screwdriver.dm" +#include "code\game\objects\items\tools\weldingtool.dm" +#include "code\game\objects\items\tools\wirecutters.dm" +#include "code\game\objects\items\tools\wrench.dm" +#include "code\game\objects\structures\ai_core.dm" +#include "code\game\objects\structures\aliens.dm" +#include "code\game\objects\structures\artstuff.dm" +#include "code\game\objects\structures\barsigns.dm" +#include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\destructible_structures.dm" +#include "code\game\objects\structures\displaycase.dm" +#include "code\game\objects\structures\divine.dm" +#include "code\game\objects\structures\door_assembly.dm" +#include "code\game\objects\structures\door_assembly_types.dm" +#include "code\game\objects\structures\dresser.dm" +#include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\false_walls.dm" +#include "code\game\objects\structures\femur_breaker.dm" +#include "code\game\objects\structures\fence.dm" +#include "code\game\objects\structures\fireaxe.dm" +#include "code\game\objects\structures\fireplace.dm" +#include "code\game\objects\structures\flora.dm" +#include "code\game\objects\structures\fluff.dm" +#include "code\game\objects\structures\ghost_role_spawners.dm" +#include "code\game\objects\structures\girders.dm" +#include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\guillotine.dm" +#include "code\game\objects\structures\guncase.dm" +#include "code\game\objects\structures\headpike.dm" +#include "code\game\objects\structures\hivebot.dm" +#include "code\game\objects\structures\holosign.dm" +#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\kitchen_spike.dm" +#include "code\game\objects\structures\ladders.dm" +#include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\life_candle.dm" +#include "code\game\objects\structures\loom.dm" +#include "code\game\objects\structures\manned_turret.dm" +#include "code\game\objects\structures\memorial.dm" +#include "code\game\objects\structures\mineral_doors.dm" +#include "code\game\objects\structures\mirror.dm" +#include "code\game\objects\structures\mop_bucket.dm" +#include "code\game\objects\structures\morgue.dm" +#include "code\game\objects\structures\musician.dm" +#include "code\game\objects\structures\noticeboard.dm" +#include "code\game\objects\structures\petrified_statue.dm" +#include "code\game\objects\structures\plasticflaps.dm" +#include "code\game\objects\structures\reflector.dm" +#include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\showcase.dm" +#include "code\game\objects\structures\spirit_board.dm" +#include "code\game\objects\structures\stairs.dm" +#include "code\game\objects\structures\statues.dm" +#include "code\game\objects\structures\table_frames.dm" +#include "code\game\objects\structures\tables_racks.dm" +#include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\target_stake.dm" +#include "code\game\objects\structures\traps.dm" +#include "code\game\objects\structures\watercloset.dm" +#include "code\game\objects\structures\windoor_assembly.dm" +#include "code\game\objects\structures\window.dm" +#include "code\game\objects\structures\beds_chairs\alien_nest.dm" +#include "code\game\objects\structures\beds_chairs\bed.dm" +#include "code\game\objects\structures\beds_chairs\chair.dm" +#include "code\game\objects\structures\beds_chairs\pew.dm" +#include "code\game\objects\structures\crates_lockers\closets.dm" +#include "code\game\objects\structures\crates_lockers\crates.dm" +#include "code\game\objects\structures\crates_lockers\closets\bodybag.dm" +#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.dm" +#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\genpop.dm" +#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" +#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" +#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\misc.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\crates_lockers\crates\bins.dm" +#include "code\game\objects\structures\crates_lockers\crates\critter.dm" +#include "code\game\objects\structures\crates_lockers\crates\large.dm" +#include "code\game\objects\structures\crates_lockers\crates\secure.dm" +#include "code\game\objects\structures\crates_lockers\crates\wooden.dm" +#include "code\game\objects\structures\signs\_signs.dm" +#include "code\game\objects\structures\signs\signs_departments.dm" +#include "code\game\objects\structures\signs\signs_maps.dm" +#include "code\game\objects\structures\signs\signs_plaques.dm" +#include "code\game\objects\structures\signs\signs_warning.dm" +#include "code\game\objects\structures\transit_tubes\station.dm" +#include "code\game\objects\structures\transit_tubes\transit_tube.dm" +#include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" +#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" +#include "code\game\turfs\baseturf_skipover.dm" +#include "code\game\turfs\change_turf.dm" +#include "code\game\turfs\closed.dm" +#include "code\game\turfs\open.dm" +#include "code\game\turfs\turf.dm" +#include "code\game\turfs\openspace\openspace.dm" +#include "code\game\turfs\simulated\chasm.dm" +#include "code\game\turfs\simulated\dirtystation.dm" +#include "code\game\turfs\simulated\floor.dm" +#include "code\game\turfs\simulated\lava.dm" +#include "code\game\turfs\simulated\minerals.dm" +#include "code\game\turfs\simulated\reebe_void.dm" +#include "code\game\turfs\simulated\river.dm" +#include "code\game\turfs\simulated\walls.dm" +#include "code\game\turfs\simulated\water.dm" +#include "code\game\turfs\simulated\floor\fancy_floor.dm" +#include "code\game\turfs\simulated\floor\light_floor.dm" +#include "code\game\turfs\simulated\floor\mineral_floor.dm" +#include "code\game\turfs\simulated\floor\misc_floor.dm" +#include "code\game\turfs\simulated\floor\plasteel_floor.dm" +#include "code\game\turfs\simulated\floor\plating.dm" +#include "code\game\turfs\simulated\floor\reinf_floor.dm" +#include "code\game\turfs\simulated\floor\plating\asteroid.dm" +#include "code\game\turfs\simulated\floor\plating\dirt.dm" +#include "code\game\turfs\simulated\floor\plating\misc_plating.dm" +#include "code\game\turfs\simulated\wall\mineral_walls.dm" +#include "code\game\turfs\simulated\wall\misc_walls.dm" +#include "code\game\turfs\simulated\wall\reinf_walls.dm" +#include "code\game\turfs\space\space.dm" +#include "code\game\turfs\space\transit.dm" +#include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_investigate.dm" +#include "code\modules\admin\admin_ranks.dm" +#include "code\modules\admin\admin_verbs.dm" +#include "code\modules\admin\adminmenu.dm" +#include "code\modules\admin\antag_panel.dm" +#include "code\modules\admin\banjob.dm" +#include "code\modules\admin\chat_commands.dm" +#include "code\modules\admin\check_antagonists.dm" +#include "code\modules\admin\create_mob.dm" +#include "code\modules\admin\create_object.dm" +#include "code\modules\admin\create_poll.dm" +#include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\fun_balloon.dm" +#include "code\modules\admin\holder2.dm" +#include "code\modules\admin\ipintel.dm" +#include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\NewBan.dm" +#include "code\modules\admin\permissionedit.dm" +#include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\secrets.dm" +#include "code\modules\admin\sound_emitter.dm" +#include "code\modules\admin\sql_message_system.dm" +#include "code\modules\admin\stickyban.dm" +#include "code\modules\admin\topic.dm" +#include "code\modules\admin\whitelist.dm" +#include "code\modules\admin\DB_ban\functions.dm" +#include "code\modules\admin\verbs\adminhelp.dm" +#include "code\modules\admin\verbs\adminjump.dm" +#include "code\modules\admin\verbs\adminpm.dm" +#include "code\modules\admin\verbs\adminsay.dm" +#include "code\modules\admin\verbs\ak47s.dm" +#include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\bluespacearty.dm" +#include "code\modules\admin\verbs\borgpanel.dm" +#include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\cinematic.dm" +#include "code\modules\admin\verbs\deadsay.dm" +#include "code\modules\admin\verbs\debug.dm" +#include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\dice.dm" +#include "code\modules\admin\verbs\fps.dm" +#include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\individual_logging.dm" +#include "code\modules\admin\verbs\machine_upgrade.dm" +#include "code\modules\admin\verbs\manipulate_organs.dm" +#include "code\modules\admin\verbs\map_template_loadverb.dm" +#include "code\modules\admin\verbs\mapping.dm" +#include "code\modules\admin\verbs\maprotation.dm" +#include "code\modules\admin\verbs\massmodvar.dm" +#include "code\modules\admin\verbs\modifyvariables.dm" +#include "code\modules\admin\verbs\one_click_antag.dm" +#include "code\modules\admin\verbs\onlyone.dm" +#include "code\modules\admin\verbs\panicbunker.dm" +#include "code\modules\admin\verbs\playsound.dm" +#include "code\modules\admin\verbs\possess.dm" +#include "code\modules\admin\verbs\pray.dm" +#include "code\modules\admin\verbs\randomverbs.dm" +#include "code\modules\admin\verbs\reestablish_db_connection.dm" +#include "code\modules\admin\verbs\spawnobjasmob.dm" +#include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" +#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm" +#include "code\modules\antagonists\_common\antag_datum.dm" +#include "code\modules\antagonists\_common\antag_helpers.dm" +#include "code\modules\antagonists\_common\antag_hud.dm" +#include "code\modules\antagonists\_common\antag_spawner.dm" +#include "code\modules\antagonists\_common\antag_team.dm" +#include "code\modules\antagonists\abductor\abductor.dm" +#include "code\modules\antagonists\abductor\abductee\abductee_objectives.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_gear.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm" +#include "code\modules\antagonists\abductor\equipment\gland.dm" +#include "code\modules\antagonists\abductor\equipment\glands\access.dm" +#include "code\modules\antagonists\abductor\equipment\glands\blood.dm" +#include "code\modules\antagonists\abductor\equipment\glands\chem.dm" +#include "code\modules\antagonists\abductor\equipment\glands\egg.dm" +#include "code\modules\antagonists\abductor\equipment\glands\electric.dm" +#include "code\modules\antagonists\abductor\equipment\glands\heal.dm" +#include "code\modules\antagonists\abductor\equipment\glands\mindshock.dm" +#include "code\modules\antagonists\abductor\equipment\glands\plasma.dm" +#include "code\modules\antagonists\abductor\equipment\glands\quantum.dm" +#include "code\modules\antagonists\abductor\equipment\glands\slime.dm" +#include "code\modules\antagonists\abductor\equipment\glands\spider.dm" +#include "code\modules\antagonists\abductor\equipment\glands\transform.dm" +#include "code\modules\antagonists\abductor\equipment\glands\trauma.dm" +#include "code\modules\antagonists\abductor\equipment\glands\ventcrawl.dm" +#include "code\modules\antagonists\abductor\equipment\glands\viral.dm" +#include "code\modules\antagonists\abductor\machinery\camera.dm" +#include "code\modules\antagonists\abductor\machinery\console.dm" +#include "code\modules\antagonists\abductor\machinery\dispenser.dm" +#include "code\modules\antagonists\abductor\machinery\experiment.dm" +#include "code\modules\antagonists\abductor\machinery\pad.dm" +#include "code\modules\antagonists\blob\blob.dm" +#include "code\modules\antagonists\blob\blob\blob_report.dm" +#include "code\modules\antagonists\blob\blob\overmind.dm" +#include "code\modules\antagonists\blob\blob\powers.dm" +#include "code\modules\antagonists\blob\blob\theblob.dm" +#include "code\modules\antagonists\blob\blob\blobs\blob_mobs.dm" +#include "code\modules\antagonists\blob\blob\blobs\core.dm" +#include "code\modules\antagonists\blob\blob\blobs\factory.dm" +#include "code\modules\antagonists\blob\blob\blobs\node.dm" +#include "code\modules\antagonists\blob\blob\blobs\resource.dm" +#include "code\modules\antagonists\blob\blob\blobs\shield.dm" +#include "code\modules\antagonists\blood_contract\blood_contract.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_flaws.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_integration.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_life.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_objectives.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_powers.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_sunlight.dm" +#include "code\modules\antagonists\bloodsucker\bloodsucker_ui.dm" +#include "code\modules\antagonists\bloodsucker\datum_bloodsucker.dm" +#include "code\modules\antagonists\bloodsucker\datum_hunter.dm" +#include "code\modules\antagonists\bloodsucker\datum_vassal.dm" +#include "code\modules\antagonists\bloodsucker\items\bloodsucker_organs.dm" +#include "code\modules\antagonists\bloodsucker\items\bloodsucker_stake.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_coffin.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_crypt.dm" +#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_lair.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_brawn.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_cloak.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_feed.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_fortitude.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_gohome.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_haste.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_lunge.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_masquerade.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_mesmerize.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_trespass.dm" +#include "code\modules\antagonists\bloodsucker\powers\bs_veil.dm" +#include "code\modules\antagonists\bloodsucker\powers\v_recuperate.dm" +#include "code\modules\antagonists\brainwashing\brainwashing.dm" +#include "code\modules\antagonists\brother\brother.dm" +#include "code\modules\antagonists\changeling\cellular_emporium.dm" +#include "code\modules\antagonists\changeling\changeling.dm" +#include "code\modules\antagonists\changeling\changeling_power.dm" +#include "code\modules\antagonists\changeling\powers\absorb.dm" +#include "code\modules\antagonists\changeling\powers\adrenaline.dm" +#include "code\modules\antagonists\changeling\powers\augmented_eyesight.dm" +#include "code\modules\antagonists\changeling\powers\biodegrade.dm" +#include "code\modules\antagonists\changeling\powers\chameleon_skin.dm" +#include "code\modules\antagonists\changeling\powers\digitalcamo.dm" +#include "code\modules\antagonists\changeling\powers\fakedeath.dm" +#include "code\modules\antagonists\changeling\powers\fleshmend.dm" +#include "code\modules\antagonists\changeling\powers\headcrab.dm" +#include "code\modules\antagonists\changeling\powers\hivemind.dm" +#include "code\modules\antagonists\changeling\powers\humanform.dm" +#include "code\modules\antagonists\changeling\powers\lesserform.dm" +#include "code\modules\antagonists\changeling\powers\linglink.dm" +#include "code\modules\antagonists\changeling\powers\mimic_voice.dm" +#include "code\modules\antagonists\changeling\powers\mutations.dm" +#include "code\modules\antagonists\changeling\powers\panacea.dm" +#include "code\modules\antagonists\changeling\powers\pheromone_receptors.dm" +#include "code\modules\antagonists\changeling\powers\regenerate.dm" +#include "code\modules\antagonists\changeling\powers\revive.dm" +#include "code\modules\antagonists\changeling\powers\shriek.dm" +#include "code\modules\antagonists\changeling\powers\spiders.dm" +#include "code\modules\antagonists\changeling\powers\strained_muscles.dm" +#include "code\modules\antagonists\changeling\powers\tiny_prick.dm" +#include "code\modules\antagonists\changeling\powers\transform.dm" +#include "code\modules\antagonists\clockcult\clock_effect.dm" +#include "code\modules\antagonists\clockcult\clock_item.dm" +#include "code\modules\antagonists\clockcult\clock_mobs.dm" +#include "code\modules\antagonists\clockcult\clock_scripture.dm" +#include "code\modules\antagonists\clockcult\clock_structure.dm" +#include "code\modules\antagonists\clockcult\clockcult.dm" +#include "code\modules\antagonists\clockcult\clock_effects\city_of_cogs_rift.dm" +#include "code\modules\antagonists\clockcult\clock_effects\clock_overlay.dm" +#include "code\modules\antagonists\clockcult\clock_effects\clock_sigils.dm" +#include "code\modules\antagonists\clockcult\clock_effects\general_markers.dm" +#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm" +#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\power_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_weaponry.dm" +#include "code\modules\antagonists\clockcult\clock_items\construct_chassis.dm" +#include "code\modules\antagonists\clockcult\clock_items\integration_cog.dm" +#include "code\modules\antagonists\clockcult\clock_items\judicial_visor.dm" +#include "code\modules\antagonists\clockcult\clock_items\replica_fabricator.dm" +#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm" +#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm" +#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm" +#include "code\modules\antagonists\clockcult\clock_mobs\clockwork_marauder.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_applications.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_cyborg.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_drivers.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm" +#include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm" +#include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm" +#include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm" +#include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm" +#include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm" +#include "code\modules\antagonists\clockcult\clock_structures\reflector.dm" +#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm" +#include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm" +#include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor_mech.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\repeater.dm" +#include "code\modules\antagonists\clockcult\clock_structures\traps\brass_skewer.dm" +#include "code\modules\antagonists\clockcult\clock_structures\traps\power_null.dm" +#include "code\modules\antagonists\clockcult\clock_structures\traps\steam_vent.dm" +#include "code\modules\antagonists\cult\blood_magic.dm" +#include "code\modules\antagonists\cult\cult.dm" +#include "code\modules\antagonists\cult\cult_comms.dm" +#include "code\modules\antagonists\cult\cult_items.dm" +#include "code\modules\antagonists\cult\cult_structures.dm" +#include "code\modules\antagonists\cult\ritual.dm" +#include "code\modules\antagonists\cult\rune_spawn_action.dm" +#include "code\modules\antagonists\cult\runes.dm" +#include "code\modules\antagonists\devil\devil.dm" +#include "code\modules\antagonists\devil\devil_helpers.dm" +#include "code\modules\antagonists\devil\imp\imp.dm" +#include "code\modules\antagonists\devil\sintouched\objectives.dm" +#include "code\modules\antagonists\devil\sintouched\sintouched.dm" +#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" +#include "code\modules\antagonists\devil\true_devil\inventory.dm" +#include "code\modules\antagonists\disease\disease_abilities.dm" +#include "code\modules\antagonists\disease\disease_datum.dm" +#include "code\modules\antagonists\disease\disease_disease.dm" +#include "code\modules\antagonists\disease\disease_event.dm" +#include "code\modules\antagonists\disease\disease_mob.dm" +#include "code\modules\antagonists\ert\ert.dm" +#include "code\modules\antagonists\greentext\greentext.dm" +#include "code\modules\antagonists\greybois\greybois.dm" +#include "code\modules\antagonists\highlander\highlander.dm" +#include "code\modules\antagonists\magic_servant\magic_servant.dm" +#include "code\modules\antagonists\monkey\monkey.dm" +#include "code\modules\antagonists\morph\morph.dm" +#include "code\modules\antagonists\morph\morph_antag.dm" +#include "code\modules\antagonists\nightmare\nightmare.dm" +#include "code\modules\antagonists\ninja\ninja.dm" +#include "code\modules\antagonists\nukeop\clownop.dm" +#include "code\modules\antagonists\nukeop\nukeop.dm" +#include "code\modules\antagonists\nukeop\equipment\borgchameleon.dm" +#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm" +#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm" +#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm" +#include "code\modules\antagonists\official\official.dm" +#include "code\modules\antagonists\overthrow\overthrow.dm" +#include "code\modules\antagonists\overthrow\overthrow_converter.dm" +#include "code\modules\antagonists\overthrow\overthrow_team.dm" +#include "code\modules\antagonists\pirate\pirate.dm" +#include "code\modules\antagonists\revenant\revenant.dm" +#include "code\modules\antagonists\revenant\revenant_abilities.dm" +#include "code\modules\antagonists\revenant\revenant_antag.dm" +#include "code\modules\antagonists\revenant\revenant_blight.dm" +#include "code\modules\antagonists\revenant\revenant_spawn_event.dm" +#include "code\modules\antagonists\revolution\revolution.dm" +#include "code\modules\antagonists\santa\santa.dm" +#include "code\modules\antagonists\separatist\separatist.dm" +#include "code\modules\antagonists\slaughter\slaughter.dm" +#include "code\modules\antagonists\slaughter\slaughter_antag.dm" +#include "code\modules\antagonists\slaughter\slaughterevent.dm" +#include "code\modules\antagonists\survivalist\survivalist.dm" +#include "code\modules\antagonists\swarmer\swarmer.dm" +#include "code\modules\antagonists\swarmer\swarmer_event.dm" +#include "code\modules\antagonists\traitor\datum_traitor.dm" +#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm" +#include "code\modules\antagonists\traitor\IAA\internal_affairs.dm" +#include "code\modules\antagonists\valentines\heartbreaker.dm" +#include "code\modules\antagonists\valentines\valentine.dm" +#include "code\modules\antagonists\wishgranter\wishgranter.dm" +#include "code\modules\antagonists\wizard\wizard.dm" +#include "code\modules\antagonists\wizard\equipment\artefact.dm" +#include "code\modules\antagonists\wizard\equipment\soulstone.dm" +#include "code\modules\antagonists\wizard\equipment\spellbook.dm" +#include "code\modules\antagonists\xeno\xeno.dm" +#include "code\modules\assembly\assembly.dm" +#include "code\modules\assembly\bomb.dm" +#include "code\modules\assembly\doorcontrol.dm" +#include "code\modules\assembly\flash.dm" +#include "code\modules\assembly\health.dm" +#include "code\modules\assembly\helpers.dm" +#include "code\modules\assembly\holder.dm" +#include "code\modules\assembly\igniter.dm" +#include "code\modules\assembly\infrared.dm" +#include "code\modules\assembly\mousetrap.dm" +#include "code\modules\assembly\playback.dm" +#include "code\modules\assembly\proximity.dm" +#include "code\modules\assembly\shock_kit.dm" +#include "code\modules\assembly\signaler.dm" +#include "code\modules\assembly\timer.dm" +#include "code\modules\assembly\voice.dm" +#include "code\modules\atmospherics\multiz.dm" +#include "code\modules\atmospherics\environmental\LINDA_fire.dm" +#include "code\modules\atmospherics\environmental\LINDA_system.dm" +#include "code\modules\atmospherics\environmental\LINDA_turf_tile.dm" +#include "code\modules\atmospherics\gasmixtures\gas_mixture.dm" +#include "code\modules\atmospherics\gasmixtures\gas_types.dm" +#include "code\modules\atmospherics\gasmixtures\immutable_mixtures.dm" +#include "code\modules\atmospherics\gasmixtures\reactions.dm" +#include "code\modules\atmospherics\machinery\airalarm.dm" +#include "code\modules\atmospherics\machinery\atmosmachinery.dm" +#include "code\modules\atmospherics\machinery\datum_pipeline.dm" +#include "code\modules\atmospherics\machinery\components\components_base.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\binary_devices.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\circulator.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\dp_vent_pump.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\passive_gate.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\pump.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\valve.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\volume_pump.dm" +#include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm" +#include "code\modules\atmospherics\machinery\components\trinary_devices\mixer.dm" +#include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_devices.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\cryo.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\heat_exchanger.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\portables_connector.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\tank.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\unary_devices.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm" +#include "code\modules\atmospherics\machinery\other\meter.dm" +#include "code\modules\atmospherics\machinery\other\miner.dm" +#include "code\modules\atmospherics\machinery\pipes\layermanifold.dm" +#include "code\modules\atmospherics\machinery\pipes\manifold.dm" +#include "code\modules\atmospherics\machinery\pipes\manifold4w.dm" +#include "code\modules\atmospherics\machinery\pipes\pipes.dm" +#include "code\modules\atmospherics\machinery\pipes\simple.dm" +#include "code\modules\atmospherics\machinery\pipes\heat_exchange\he_pipes.dm" +#include "code\modules\atmospherics\machinery\pipes\heat_exchange\junction.dm" +#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold.dm" +#include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm" +#include "code\modules\atmospherics\machinery\portable\canister.dm" +#include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm" +#include "code\modules\atmospherics\machinery\portable\pump.dm" +#include "code\modules\atmospherics\machinery\portable\scrubber.dm" +#include "code\modules\awaymissions\away_props.dm" +#include "code\modules\awaymissions\bluespaceartillery.dm" +#include "code\modules\awaymissions\capture_the_flag.dm" +#include "code\modules\awaymissions\corpse.dm" +#include "code\modules\awaymissions\exile.dm" +#include "code\modules\awaymissions\gateway.dm" +#include "code\modules\awaymissions\pamphlet.dm" +#include "code\modules\awaymissions\signpost.dm" +#include "code\modules\awaymissions\super_secret_room.dm" +#include "code\modules\awaymissions\zlevel.dm" +#include "code\modules\awaymissions\mission_code\Academy.dm" +#include "code\modules\awaymissions\mission_code\Cabin.dm" +#include "code\modules\awaymissions\mission_code\caves.dm" +#include "code\modules\awaymissions\mission_code\centcomAway.dm" +#include "code\modules\awaymissions\mission_code\challenge.dm" +#include "code\modules\awaymissions\mission_code\moonoutpost19.dm" +#include "code\modules\awaymissions\mission_code\murderdome.dm" +#include "code\modules\awaymissions\mission_code\research.dm" +#include "code\modules\awaymissions\mission_code\snowdin.dm" +#include "code\modules\awaymissions\mission_code\spacebattle.dm" +#include "code\modules\awaymissions\mission_code\stationCollision.dm" +#include "code\modules\awaymissions\mission_code\undergroundoutpost45.dm" +#include "code\modules\awaymissions\mission_code\wildwest.dm" +#include "code\modules\bsql\includes.dm" +#include "code\modules\buildmode\bm_mode.dm" +#include "code\modules\buildmode\buildmode.dm" +#include "code\modules\buildmode\buttons.dm" +#include "code\modules\buildmode\effects\line.dm" +#include "code\modules\buildmode\submodes\advanced.dm" +#include "code\modules\buildmode\submodes\area_edit.dm" +#include "code\modules\buildmode\submodes\basic.dm" +#include "code\modules\buildmode\submodes\boom.dm" +#include "code\modules\buildmode\submodes\copy.dm" +#include "code\modules\buildmode\submodes\fill.dm" +#include "code\modules\buildmode\submodes\mapgen.dm" +#include "code\modules\buildmode\submodes\throwing.dm" +#include "code\modules\buildmode\submodes\variable_edit.dm" +#include "code\modules\cargo\bounty.dm" +#include "code\modules\cargo\bounty_console.dm" +#include "code\modules\cargo\centcom_podlauncher.dm" +#include "code\modules\cargo\console.dm" +#include "code\modules\cargo\export_scanner.dm" +#include "code\modules\cargo\exports.dm" +#include "code\modules\cargo\expressconsole.dm" +#include "code\modules\cargo\gondolapod.dm" +#include "code\modules\cargo\order.dm" +#include "code\modules\cargo\packs.dm" +#include "code\modules\cargo\supplypod.dm" +#include "code\modules\cargo\supplypod_beacon.dm" +#include "code\modules\cargo\bounties\assistant.dm" +#include "code\modules\cargo\bounties\botany.dm" +#include "code\modules\cargo\bounties\chef.dm" +#include "code\modules\cargo\bounties\engineering.dm" +#include "code\modules\cargo\bounties\gardencook.dm" +#include "code\modules\cargo\bounties\item.dm" +#include "code\modules\cargo\bounties\mech.dm" +#include "code\modules\cargo\bounties\medical.dm" +#include "code\modules\cargo\bounties\mining.dm" +#include "code\modules\cargo\bounties\reagent.dm" +#include "code\modules\cargo\bounties\science.dm" +#include "code\modules\cargo\bounties\security.dm" +#include "code\modules\cargo\bounties\silly.dm" +#include "code\modules\cargo\bounties\slime.dm" +#include "code\modules\cargo\bounties\special.dm" +#include "code\modules\cargo\bounties\virus.dm" +#include "code\modules\cargo\exports\food_wine.dm" +#include "code\modules\cargo\exports\gear.dm" +#include "code\modules\cargo\exports\large_objects.dm" +#include "code\modules\cargo\exports\manifest.dm" +#include "code\modules\cargo\exports\materials.dm" +#include "code\modules\cargo\exports\organs_robotics.dm" +#include "code\modules\cargo\exports\parts.dm" +#include "code\modules\cargo\exports\seeds.dm" +#include "code\modules\cargo\exports\sheets.dm" +#include "code\modules\cargo\exports\tools.dm" +#include "code\modules\cargo\exports\weapons.dm" +#include "code\modules\cargo\packs\armory.dm" +#include "code\modules\cargo\packs\costumes_toys.dm" +#include "code\modules\cargo\packs\emergency.dm" +#include "code\modules\cargo\packs\engine.dm" +#include "code\modules\cargo\packs\engineering.dm" +#include "code\modules\cargo\packs\livestock.dm" +#include "code\modules\cargo\packs\materials.dm" +#include "code\modules\cargo\packs\medical.dm" +#include "code\modules\cargo\packs\misc.dm" +#include "code\modules\cargo\packs\organic.dm" +#include "code\modules\cargo\packs\science.dm" +#include "code\modules\cargo\packs\security.dm" +#include "code\modules\cargo\packs\service.dm" +#include "code\modules\chatter\chatter.dm" +#include "code\modules\client\asset_cache.dm" +#include "code\modules\client\client_colour.dm" +#include "code\modules\client\client_defines.dm" +#include "code\modules\client\client_procs.dm" +#include "code\modules\client\darkmode.dm" +#include "code\modules\client\message.dm" +#include "code\modules\client\player_details.dm" +#include "code\modules\client\preferences.dm" +#include "code\modules\client\preferences_savefile.dm" +#include "code\modules\client\preferences_toggles.dm" +#include "code\modules\client\preferences_vr.dm" +#include "code\modules\client\verbs\aooc.dm" +#include "code\modules\client\verbs\etips.dm" +#include "code\modules\client\verbs\looc.dm" +#include "code\modules\client\verbs\ooc.dm" +#include "code\modules\client\verbs\ping.dm" +#include "code\modules\client\verbs\suicide.dm" +#include "code\modules\client\verbs\who.dm" +#include "code\modules\clothing\chameleon.dm" +#include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\ears\_ears.dm" +#include "code\modules\clothing\glasses\_glasses.dm" +#include "code\modules\clothing\glasses\disablerglasses.dm" +#include "code\modules\clothing\glasses\engine_goggles.dm" +#include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\glasses\phantomthief.dm" +#include "code\modules\clothing\glasses\vg_glasses.dm" +#include "code\modules\clothing\gloves\_gloves.dm" +#include "code\modules\clothing\gloves\boxing.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\gloves\vg_gloves.dm" +#include "code\modules\clothing\head\_head.dm" +#include "code\modules\clothing\head\beanie.dm" +#include "code\modules\clothing\head\cit_hats.dm" +#include "code\modules\clothing\head\collectable.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\helmet.dm" +#include "code\modules\clothing\head\jobs.dm" +#include "code\modules\clothing\head\misc.dm" +#include "code\modules\clothing\head\misc_special.dm" +#include "code\modules\clothing\head\soft_caps.dm" +#include "code\modules\clothing\head\vg_hats.dm" +#include "code\modules\clothing\masks\_masks.dm" +#include "code\modules\clothing\masks\boxing.dm" +#include "code\modules\clothing\masks\breath.dm" +#include "code\modules\clothing\masks\gasmask.dm" +#include "code\modules\clothing\masks\hailer.dm" +#include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\masks\vg_masks.dm" +#include "code\modules\clothing\neck\_neck.dm" +#include "code\modules\clothing\outfits\ert.dm" +#include "code\modules\clothing\outfits\event.dm" +#include "code\modules\clothing\outfits\plasmaman.dm" +#include "code\modules\clothing\outfits\standard.dm" +#include "code\modules\clothing\outfits\vr.dm" +#include "code\modules\clothing\outfits\vv_outfit.dm" +#include "code\modules\clothing\shoes\_shoes.dm" +#include "code\modules\clothing\shoes\bananashoes.dm" +#include "code\modules\clothing\shoes\colour.dm" +#include "code\modules\clothing\shoes\magboots.dm" +#include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\shoes\taeclowndo.dm" +#include "code\modules\clothing\shoes\vg_shoes.dm" +#include "code\modules\clothing\spacesuits\_spacesuits.dm" +#include "code\modules\clothing\spacesuits\chronosuit.dm" +#include "code\modules\clothing\spacesuits\hardsuit.dm" +#include "code\modules\clothing\spacesuits\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\plasmamen.dm" +#include "code\modules\clothing\spacesuits\syndi.dm" +#include "code\modules\clothing\spacesuits\vg_spess.dm" +#include "code\modules\clothing\suits\_suits.dm" +#include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\cloaks.dm" +#include "code\modules\clothing\suits\jobs.dm" +#include "code\modules\clothing\suits\labcoat.dm" +#include "code\modules\clothing\suits\miscellaneous.dm" +#include "code\modules\clothing\suits\reactive_armour.dm" +#include "code\modules\clothing\suits\toggles.dm" +#include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\vg_suits.dm" +#include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\under\_under.dm" +#include "code\modules\clothing\under\accessories.dm" +#include "code\modules\clothing\under\color.dm" +#include "code\modules\clothing\under\miscellaneous.dm" +#include "code\modules\clothing\under\pants.dm" +#include "code\modules\clothing\under\polychromic_clothes.dm" +#include "code\modules\clothing\under\shorts.dm" +#include "code\modules\clothing\under\syndicate.dm" +#include "code\modules\clothing\under\trek.dm" +#include "code\modules\clothing\under\vg_under.dm" +#include "code\modules\clothing\under\jobs\civilian.dm" +#include "code\modules\clothing\under\jobs\engineering.dm" +#include "code\modules\clothing\under\jobs\medsci.dm" +#include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\clothing\under\jobs\Plasmaman\civilian_service.dm" +#include "code\modules\clothing\under\jobs\Plasmaman\engineering.dm" +#include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm" +#include "code\modules\clothing\under\jobs\Plasmaman\security.dm" +#include "code\modules\crafting\craft.dm" +#include "code\modules\crafting\guncrafting.dm" +#include "code\modules\crafting\recipes.dm" +#include "code\modules\crafting\recipes\recipes_clothing.dm" +#include "code\modules\crafting\recipes\recipes_misc.dm" +#include "code\modules\crafting\recipes\recipes_primal.dm" +#include "code\modules\crafting\recipes\recipes_robot.dm" +#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm" +#include "code\modules\detectivework\detective_work.dm" +#include "code\modules\detectivework\evidence.dm" +#include "code\modules\detectivework\scanner.dm" +#include "code\modules\emoji\emoji_parse.dm" +#include "code\modules\error_handler\error_handler.dm" +#include "code\modules\error_handler\error_viewer.dm" +#include "code\modules\events\_event.dm" +#include "code\modules\events\abductor.dm" +#include "code\modules\events\alien_infestation.dm" +#include "code\modules\events\anomaly.dm" +#include "code\modules\events\anomaly_bluespace.dm" +#include "code\modules\events\anomaly_flux.dm" +#include "code\modules\events\anomaly_grav.dm" +#include "code\modules\events\anomaly_pyro.dm" +#include "code\modules\events\anomaly_vortex.dm" +#include "code\modules\events\aurora_caelus.dm" +#include "code\modules\events\blob.dm" +#include "code\modules\events\brand_intelligence.dm" +#include "code\modules\events\bureaucratic_error.dm" +#include "code\modules\events\camerafailure.dm" +#include "code\modules\events\carp_migration.dm" +#include "code\modules\events\communications_blackout.dm" +#include "code\modules\events\devil.dm" +#include "code\modules\events\disease_outbreak.dm" +#include "code\modules\events\dust.dm" +#include "code\modules\events\electrical_storm.dm" +#include "code\modules\events\false_alarm.dm" +#include "code\modules\events\ghost_role.dm" +#include "code\modules\events\grid_check.dm" +#include "code\modules\events\heart_attack.dm" +#include "code\modules\events\high_priority_bounty.dm" +#include "code\modules\events\immovable_rod.dm" +#include "code\modules\events\ion_storm.dm" +#include "code\modules\events\major_dust.dm" +#include "code\modules\events\mass_hallucination.dm" +#include "code\modules\events\meateor_wave.dm" +#include "code\modules\events\meteor_wave.dm" +#include "code\modules\events\mice_migration.dm" +#include "code\modules\events\nightmare.dm" +#include "code\modules\events\operative.dm" +#include "code\modules\events\pirates.dm" +#include "code\modules\events\portal_storm.dm" +#include "code\modules\events\prison_break.dm" +#include "code\modules\events\processor_overload.dm" +#include "code\modules\events\radiation_storm.dm" +#include "code\modules\events\sentience.dm" +#include "code\modules\events\shuttle_loan.dm" +#include "code\modules\events\spacevine.dm" +#include "code\modules\events\spider_infestation.dm" +#include "code\modules\events\spontaneous_appendicitis.dm" +#include "code\modules\events\vent_clog.dm" +#include "code\modules\events\wormholes.dm" +#include "code\modules\events\holiday\halloween.dm" +#include "code\modules\events\holiday\vday.dm" +#include "code\modules\events\holiday\xmas.dm" +#include "code\modules\events\wizard\aid.dm" +#include "code\modules\events\wizard\blobies.dm" +#include "code\modules\events\wizard\curseditems.dm" +#include "code\modules\events\wizard\departmentrevolt.dm" +#include "code\modules\events\wizard\fakeexplosion.dm" +#include "code\modules\events\wizard\ghost.dm" +#include "code\modules\events\wizard\greentext.dm" +#include "code\modules\events\wizard\imposter.dm" +#include "code\modules\events\wizard\invincible.dm" +#include "code\modules\events\wizard\lava.dm" +#include "code\modules\events\wizard\magicarp.dm" +#include "code\modules\events\wizard\petsplosion.dm" +#include "code\modules\events\wizard\race.dm" +#include "code\modules\events\wizard\rpgloot.dm" +#include "code\modules\events\wizard\shuffle.dm" +#include "code\modules\events\wizard\summons.dm" +#include "code\modules\fields\fields.dm" +#include "code\modules\fields\gravity.dm" +#include "code\modules\fields\peaceborg_dampener.dm" +#include "code\modules\fields\timestop.dm" +#include "code\modules\fields\turf_objects.dm" +#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\food_and_drinks\autobottler.dm" +#include "code\modules\food_and_drinks\food.dm" +#include "code\modules\food_and_drinks\pizzabox.dm" +#include "code\modules\food_and_drinks\drinks\drinks.dm" +#include "code\modules\food_and_drinks\drinks\drinks\bottle.dm" +#include "code\modules\food_and_drinks\drinks\drinks\drinkingglass.dm" +#include "code\modules\food_and_drinks\food\condiment.dm" +#include "code\modules\food_and_drinks\food\customizables.dm" +#include "code\modules\food_and_drinks\food\snacks.dm" +#include "code\modules\food_and_drinks\food\snacks_bread.dm" +#include "code\modules\food_and_drinks\food\snacks_burgers.dm" +#include "code\modules\food_and_drinks\food\snacks_cake.dm" +#include "code\modules\food_and_drinks\food\snacks_egg.dm" +#include "code\modules\food_and_drinks\food\snacks_frozen.dm" +#include "code\modules\food_and_drinks\food\snacks_meat.dm" +#include "code\modules\food_and_drinks\food\snacks_other.dm" +#include "code\modules\food_and_drinks\food\snacks_pastry.dm" +#include "code\modules\food_and_drinks\food\snacks_pie.dm" +#include "code\modules\food_and_drinks\food\snacks_pizza.dm" +#include "code\modules\food_and_drinks\food\snacks_salad.dm" +#include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm" +#include "code\modules\food_and_drinks\food\snacks_soup.dm" +#include "code\modules\food_and_drinks\food\snacks_spaghetti.dm" +#include "code\modules\food_and_drinks\food\snacks_sushi.dm" +#include "code\modules\food_and_drinks\food\snacks_vend.dm" +#include "code\modules\food_and_drinks\food\snacks\dough.dm" +#include "code\modules\food_and_drinks\food\snacks\meat.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\food_cart.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\grill.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\microwave.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\monkeyrecycler.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\processor.dm" +#include "code\modules\food_and_drinks\kitchen_machinery\smartfridge.dm" +#include "code\modules\food_and_drinks\recipes\drinks_recipes.dm" +#include "code\modules\food_and_drinks\recipes\food_mixtures.dm" +#include "code\modules\food_and_drinks\recipes\processor_recipes.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_bread.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_cake.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_egg.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_frozen.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_misc.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pastry.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pie.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pizza.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_salad.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm" +#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm" +#include "code\modules\games\cas.dm" +#include "code\modules\goonchat\browserOutput.dm" +#include "code\modules\goonchat\jsErrorHandler.dm" +#include "code\modules\holiday\easter.dm" +#include "code\modules\holiday\holidays.dm" +#include "code\modules\holiday\halloween\bartholomew.dm" +#include "code\modules\holiday\halloween\jacqueen.dm" +#include "code\modules\holodeck\area_copy.dm" +#include "code\modules\holodeck\computer.dm" +#include "code\modules\holodeck\holo_effect.dm" +#include "code\modules\holodeck\items.dm" +#include "code\modules\holodeck\mobs.dm" +#include "code\modules\holodeck\turfs.dm" +#include "code\modules\hydroponics\biogenerator.dm" +#include "code\modules\hydroponics\fermenting_barrel.dm" +#include "code\modules\hydroponics\gene_modder.dm" +#include "code\modules\hydroponics\grown.dm" +#include "code\modules\hydroponics\growninedible.dm" +#include "code\modules\hydroponics\hydroitemdefines.dm" +#include "code\modules\hydroponics\hydroponics.dm" +#include "code\modules\hydroponics\plant_genes.dm" +#include "code\modules\hydroponics\sample.dm" +#include "code\modules\hydroponics\seed_extractor.dm" +#include "code\modules\hydroponics\seeds.dm" +#include "code\modules\hydroponics\beekeeping\beebox.dm" +#include "code\modules\hydroponics\beekeeping\beekeeper_suit.dm" +#include "code\modules\hydroponics\beekeeping\honey_frame.dm" +#include "code\modules\hydroponics\beekeeping\honeycomb.dm" +#include "code\modules\hydroponics\grown\ambrosia.dm" +#include "code\modules\hydroponics\grown\apple.dm" +#include "code\modules\hydroponics\grown\banana.dm" +#include "code\modules\hydroponics\grown\beans.dm" +#include "code\modules\hydroponics\grown\berries.dm" +#include "code\modules\hydroponics\grown\cannabis.dm" +#include "code\modules\hydroponics\grown\cereals.dm" +#include "code\modules\hydroponics\grown\chili.dm" +#include "code\modules\hydroponics\grown\citrus.dm" +#include "code\modules\hydroponics\grown\cocoa_vanilla.dm" +#include "code\modules\hydroponics\grown\corn.dm" +#include "code\modules\hydroponics\grown\cotton.dm" +#include "code\modules\hydroponics\grown\eggplant.dm" +#include "code\modules\hydroponics\grown\flowers.dm" +#include "code\modules\hydroponics\grown\grass_carpet.dm" +#include "code\modules\hydroponics\grown\kudzu.dm" +#include "code\modules\hydroponics\grown\melon.dm" +#include "code\modules\hydroponics\grown\misc.dm" +#include "code\modules\hydroponics\grown\mushrooms.dm" +#include "code\modules\hydroponics\grown\nettle.dm" +#include "code\modules\hydroponics\grown\onion.dm" +#include "code\modules\hydroponics\grown\peach.dm" +#include "code\modules\hydroponics\grown\peanuts.dm" +#include "code\modules\hydroponics\grown\pineapple.dm" +#include "code\modules\hydroponics\grown\potato.dm" +#include "code\modules\hydroponics\grown\pumpkin.dm" +#include "code\modules\hydroponics\grown\random.dm" +#include "code\modules\hydroponics\grown\replicapod.dm" +#include "code\modules\hydroponics\grown\root.dm" +#include "code\modules\hydroponics\grown\tea_coffee.dm" +#include "code\modules\hydroponics\grown\tobacco.dm" +#include "code\modules\hydroponics\grown\tomato.dm" +#include "code\modules\hydroponics\grown\towercap.dm" +#include "code\modules\integrated_electronics\_defines.dm" +#include "code\modules\integrated_electronics\core\analyzer.dm" +#include "code\modules\integrated_electronics\core\assemblies.dm" +#include "code\modules\integrated_electronics\core\debugger.dm" +#include "code\modules\integrated_electronics\core\detailer.dm" +#include "code\modules\integrated_electronics\core\helpers.dm" +#include "code\modules\integrated_electronics\core\integrated_circuit.dm" +#include "code\modules\integrated_electronics\core\pins.dm" +#include "code\modules\integrated_electronics\core\printer.dm" +#include "code\modules\integrated_electronics\core\saved_circuits.dm" +#include "code\modules\integrated_electronics\core\wirer.dm" +#include "code\modules\integrated_electronics\core\special_pins\boolean_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\char_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\color_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\dir_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\index_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\list_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\number_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\ref_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\selfref_pin.dm" +#include "code\modules\integrated_electronics\core\special_pins\string_pin.dm" +#include "code\modules\integrated_electronics\passive\passive.dm" +#include "code\modules\integrated_electronics\passive\power.dm" +#include "code\modules\integrated_electronics\subtypes\access.dm" +#include "code\modules\integrated_electronics\subtypes\arithmetic.dm" +#include "code\modules\integrated_electronics\subtypes\atmospherics.dm" +#include "code\modules\integrated_electronics\subtypes\converters.dm" +#include "code\modules\integrated_electronics\subtypes\data_transfer.dm" +#include "code\modules\integrated_electronics\subtypes\input.dm" +#include "code\modules\integrated_electronics\subtypes\lists.dm" +#include "code\modules\integrated_electronics\subtypes\logic.dm" +#include "code\modules\integrated_electronics\subtypes\manipulation.dm" +#include "code\modules\integrated_electronics\subtypes\memory.dm" +#include "code\modules\integrated_electronics\subtypes\output.dm" +#include "code\modules\integrated_electronics\subtypes\power.dm" +#include "code\modules\integrated_electronics\subtypes\reagents.dm" +#include "code\modules\integrated_electronics\subtypes\smart.dm" +#include "code\modules\integrated_electronics\subtypes\text.dm" +#include "code\modules\integrated_electronics\subtypes\time.dm" +#include "code\modules\integrated_electronics\subtypes\trig.dm" +#include "code\modules\integrated_electronics\subtypes\weaponized.dm" +#include "code\modules\jobs\access.dm" +#include "code\modules\jobs\job_exp.dm" +#include "code\modules\jobs\jobs.dm" +#include "code\modules\jobs\job_types\_job.dm" +#include "code\modules\jobs\job_types\ai.dm" +#include "code\modules\jobs\job_types\assistant.dm" +#include "code\modules\jobs\job_types\atmospheric_technician.dm" +#include "code\modules\jobs\job_types\bartender.dm" +#include "code\modules\jobs\job_types\botanist.dm" +#include "code\modules\jobs\job_types\captain.dm" +#include "code\modules\jobs\job_types\cargo_technician.dm" +#include "code\modules\jobs\job_types\chaplain.dm" +#include "code\modules\jobs\job_types\chemist.dm" +#include "code\modules\jobs\job_types\chief_engineer.dm" +#include "code\modules\jobs\job_types\chief_medical_officer.dm" +#include "code\modules\jobs\job_types\clown.dm" +#include "code\modules\jobs\job_types\cook.dm" +#include "code\modules\jobs\job_types\curator.dm" +#include "code\modules\jobs\job_types\cyborg.dm" +#include "code\modules\jobs\job_types\detective.dm" +#include "code\modules\jobs\job_types\geneticist.dm" +#include "code\modules\jobs\job_types\head_of_personnel.dm" +#include "code\modules\jobs\job_types\head_of_security.dm" +#include "code\modules\jobs\job_types\janitor.dm" +#include "code\modules\jobs\job_types\lawyer.dm" +#include "code\modules\jobs\job_types\medical_doctor.dm" +#include "code\modules\jobs\job_types\mime.dm" +#include "code\modules\jobs\job_types\quartermaster.dm" +#include "code\modules\jobs\job_types\research_director.dm" +#include "code\modules\jobs\job_types\roboticist.dm" +#include "code\modules\jobs\job_types\scientist.dm" +#include "code\modules\jobs\job_types\security_officer.dm" +#include "code\modules\jobs\job_types\shaft_miner.dm" +#include "code\modules\jobs\job_types\station_engineer.dm" +#include "code\modules\jobs\job_types\virologist.dm" +#include "code\modules\jobs\job_types\warden.dm" +#include "code\modules\jobs\map_changes\map_changes.dm" +#include "code\modules\keybindings\bindings_admin.dm" +#include "code\modules\keybindings\bindings_atom.dm" +#include "code\modules\keybindings\bindings_carbon.dm" +#include "code\modules\keybindings\bindings_client.dm" +#include "code\modules\keybindings\bindings_human.dm" +#include "code\modules\keybindings\bindings_living.dm" +#include "code\modules\keybindings\bindings_mob.dm" +#include "code\modules\keybindings\bindings_robot.dm" +#include "code\modules\keybindings\focus.dm" +#include "code\modules\keybindings\setup.dm" +#include "code\modules\language\aphasia.dm" +#include "code\modules\language\beachbum.dm" +#include "code\modules\language\codespeak.dm" +#include "code\modules\language\common.dm" +#include "code\modules\language\draconic.dm" +#include "code\modules\language\drone.dm" +#include "code\modules\language\language.dm" +#include "code\modules\language\language_holder.dm" +#include "code\modules\language\language_menu.dm" +#include "code\modules\language\machine.dm" +#include "code\modules\language\monkey.dm" +#include "code\modules\language\mushroom.dm" +#include "code\modules\language\narsian.dm" +#include "code\modules\language\ratvarian.dm" +#include "code\modules\language\slime.dm" +#include "code\modules\language\swarmer.dm" +#include "code\modules\language\vampiric.dm" +#include "code\modules\language\xenocommon.dm" +#include "code\modules\library\lib_codex_gigas.dm" +#include "code\modules\library\lib_items.dm" +#include "code\modules\library\lib_machines.dm" +#include "code\modules\library\random_books.dm" +#include "code\modules\library\soapstone.dm" +#include "code\modules\lighting\lighting_area.dm" +#include "code\modules\lighting\lighting_atom.dm" +#include "code\modules\lighting\lighting_corner.dm" +#include "code\modules\lighting\lighting_object.dm" +#include "code\modules\lighting\lighting_setup.dm" +#include "code\modules\lighting\lighting_source.dm" +#include "code\modules\lighting\lighting_turf.dm" +#include "code\modules\mapping\dmm_suite.dm" +#include "code\modules\mapping\map_template.dm" +#include "code\modules\mapping\mapping_helpers.dm" +#include "code\modules\mapping\preloader.dm" +#include "code\modules\mapping\reader.dm" +#include "code\modules\mapping\ruins.dm" +#include "code\modules\mapping\verify.dm" +#include "code\modules\mapping\space_management\multiz_helpers.dm" +#include "code\modules\mapping\space_management\space_level.dm" +#include "code\modules\mapping\space_management\space_reservation.dm" +#include "code\modules\mapping\space_management\space_transition.dm" +#include "code\modules\mapping\space_management\traits.dm" +#include "code\modules\mapping\space_management\zlevel_manager.dm" +#include "code\modules\mining\abandoned_crates.dm" +#include "code\modules\mining\aux_base.dm" +#include "code\modules\mining\aux_base_camera.dm" +#include "code\modules\mining\fulton.dm" +#include "code\modules\mining\machine_processing.dm" +#include "code\modules\mining\machine_redemption.dm" +#include "code\modules\mining\machine_silo.dm" +#include "code\modules\mining\machine_stacking.dm" +#include "code\modules\mining\machine_unloading.dm" +#include "code\modules\mining\machine_vending.dm" +#include "code\modules\mining\mine_items.dm" +#include "code\modules\mining\minebot.dm" +#include "code\modules\mining\mint.dm" +#include "code\modules\mining\money_bag.dm" +#include "code\modules\mining\ores_coins.dm" +#include "code\modules\mining\point_bank.dm" +#include "code\modules\mining\satchel_ore_boxdm.dm" +#include "code\modules\mining\shelters.dm" +#include "code\modules\mining\equipment\explorer_gear.dm" +#include "code\modules\mining\equipment\goliath_hide.dm" +#include "code\modules\mining\equipment\kinetic_crusher.dm" +#include "code\modules\mining\equipment\lazarus_injector.dm" +#include "code\modules\mining\equipment\marker_beacons.dm" +#include "code\modules\mining\equipment\mineral_scanner.dm" +#include "code\modules\mining\equipment\mining_tools.dm" +#include "code\modules\mining\equipment\regenerative_core.dm" +#include "code\modules\mining\equipment\resonator.dm" +#include "code\modules\mining\equipment\survival_pod.dm" +#include "code\modules\mining\equipment\vendor_items.dm" +#include "code\modules\mining\equipment\wormhole_jaunter.dm" +#include "code\modules\mining\laborcamp\laborshuttle.dm" +#include "code\modules\mining\laborcamp\laborstacker.dm" +#include "code\modules\mining\lavaland\ash_flora.dm" +#include "code\modules\mining\lavaland\necropolis_chests.dm" +#include "code\modules\mining\lavaland\ruins\gym.dm" +#include "code\modules\mob\death.dm" +#include "code\modules\mob\emote.dm" +#include "code\modules\mob\inventory.dm" +#include "code\modules\mob\login.dm" +#include "code\modules\mob\logout.dm" +#include "code\modules\mob\mob.dm" +#include "code\modules\mob\mob_defines.dm" +#include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_movement.dm" +#include "code\modules\mob\mob_movespeed.dm" +#include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\say.dm" +#include "code\modules\mob\say_vr.dm" +#include "code\modules\mob\status_procs.dm" +#include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\camera\camera.dm" +#include "code\modules\mob\dead\dead.dm" +#include "code\modules\mob\dead\new_player\login.dm" +#include "code\modules\mob\dead\new_player\logout.dm" +#include "code\modules\mob\dead\new_player\new_player.dm" +#include "code\modules\mob\dead\new_player\poll.dm" +#include "code\modules\mob\dead\new_player\preferences_setup.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\_sprite_accessories.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\alienpeople.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\body_markings.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\caps.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\Citadel_Snowflake.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\ears.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\frills.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\hair_face.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\hair_head.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\ipc_synths.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\legs_and_taurs.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\underwear.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\wings.dm" +#include "code\modules\mob\dead\observer\login.dm" +#include "code\modules\mob\dead\observer\logout.dm" +#include "code\modules\mob\dead\observer\notificationprefs.dm" +#include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\observer_movement.dm" +#include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\living\blood.dm" +#include "code\modules\mob\living\bloodcrawl.dm" +#include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\death.dm" +#include "code\modules\mob\living\emote.dm" +#include "code\modules\mob\living\inhand_holder.dm" +#include "code\modules\mob\living\life.dm" +#include "code\modules\mob\living\living.dm" +#include "code\modules\mob\living\living_defense.dm" +#include "code\modules\mob\living\living_defines.dm" +#include "code\modules\mob\living\living_mobility.dm" +#include "code\modules\mob\living\living_movement.dm" +#include "code\modules\mob\living\login.dm" +#include "code\modules\mob\living\logout.dm" +#include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\status_procs.dm" +#include "code\modules\mob\living\taste.dm" +#include "code\modules\mob\living\update_icons.dm" +#include "code\modules\mob\living\ventcrawling.dm" +#include "code\modules\mob\living\brain\brain.dm" +#include "code\modules\mob\living\brain\brain_item.dm" +#include "code\modules\mob\living\brain\death.dm" +#include "code\modules\mob\living\brain\emote.dm" +#include "code\modules\mob\living\brain\life.dm" +#include "code\modules\mob\living\brain\MMI.dm" +#include "code\modules\mob\living\brain\posibrain.dm" +#include "code\modules\mob\living\brain\say.dm" +#include "code\modules\mob\living\brain\status_procs.dm" +#include "code\modules\mob\living\carbon\carbon.dm" +#include "code\modules\mob\living\carbon\carbon_defense.dm" +#include "code\modules\mob\living\carbon\carbon_defines.dm" +#include "code\modules\mob\living\carbon\carbon_movement.dm" +#include "code\modules\mob\living\carbon\damage_procs.dm" +#include "code\modules\mob\living\carbon\death.dm" +#include "code\modules\mob\living\carbon\emote.dm" +#include "code\modules\mob\living\carbon\examine.dm" +#include "code\modules\mob\living\carbon\inventory.dm" +#include "code\modules\mob\living\carbon\life.dm" +#include "code\modules\mob\living\carbon\say.dm" +#include "code\modules\mob\living\carbon\status_procs.dm" +#include "code\modules\mob\living\carbon\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\alien.dm" +#include "code\modules\mob\living\carbon\alien\alien_defense.dm" +#include "code\modules\mob\living\carbon\alien\damage_procs.dm" +#include "code\modules\mob\living\carbon\alien\death.dm" +#include "code\modules\mob\living\carbon\alien\emote.dm" +#include "code\modules\mob\living\carbon\alien\life.dm" +#include "code\modules\mob\living\carbon\alien\login.dm" +#include "code\modules\mob\living\carbon\alien\logout.dm" +#include "code\modules\mob\living\carbon\alien\organs.dm" +#include "code\modules\mob\living\carbon\alien\say.dm" +#include "code\modules\mob\living\carbon\alien\screen.dm" +#include "code\modules\mob\living\carbon\alien\status_procs.dm" +#include "code\modules\mob\living\carbon\alien\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\death.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\humanoid_defense.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\praetorian.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" +#include "code\modules\mob\living\carbon\alien\larva\death.dm" +#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" +#include "code\modules\mob\living\carbon\alien\larva\larva.dm" +#include "code\modules\mob\living\carbon\alien\larva\larva_defense.dm" +#include "code\modules\mob\living\carbon\alien\larva\life.dm" +#include "code\modules\mob\living\carbon\alien\larva\powers.dm" +#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" +#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" +#include "code\modules\mob\living\carbon\human\damage_procs.dm" +#include "code\modules\mob\living\carbon\human\death.dm" +#include "code\modules\mob\living\carbon\human\dummy.dm" +#include "code\modules\mob\living\carbon\human\emote.dm" +#include "code\modules\mob\living\carbon\human\examine.dm" +#include "code\modules\mob\living\carbon\human\examine_vr.dm" +#include "code\modules\mob\living\carbon\human\human.dm" +#include "code\modules\mob\living\carbon\human\human_defense.dm" +#include "code\modules\mob\living\carbon\human\human_defines.dm" +#include "code\modules\mob\living\carbon\human\human_helpers.dm" +#include "code\modules\mob\living\carbon\human\human_movement.dm" +#include "code\modules\mob\living\carbon\human\inventory.dm" +#include "code\modules\mob\living\carbon\human\life.dm" +#include "code\modules\mob\living\carbon\human\physiology.dm" +#include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\species.dm" +#include "code\modules\mob\living\carbon\human\status_procs.dm" +#include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\species_types\abductors.dm" +#include "code\modules\mob\living\carbon\human\species_types\android.dm" +#include "code\modules\mob\living\carbon\human\species_types\angel.dm" +#include "code\modules\mob\living\carbon\human\species_types\bugmen.dm" +#include "code\modules\mob\living\carbon\human\species_types\corporate.dm" +#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm" +#include "code\modules\mob\living\carbon\human\species_types\dwarves.dm" +#include "code\modules\mob\living\carbon\human\species_types\felinid.dm" +#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\furrypeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\golems.dm" +#include "code\modules\mob\living\carbon\human\species_types\humans.dm" +#include "code\modules\mob\living\carbon\human\species_types\ipc.dm" +#include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\mushpeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm" +#include "code\modules\mob\living\carbon\human\species_types\podpeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\skeletons.dm" +#include "code\modules\mob\living\carbon\human\species_types\synths.dm" +#include "code\modules\mob\living\carbon\human\species_types\vampire.dm" +#include "code\modules\mob\living\carbon\human\species_types\zombies.dm" +#include "code\modules\mob\living\carbon\monkey\combat.dm" +#include "code\modules\mob\living\carbon\monkey\death.dm" +#include "code\modules\mob\living\carbon\monkey\inventory.dm" +#include "code\modules\mob\living\carbon\monkey\life.dm" +#include "code\modules\mob\living\carbon\monkey\monkey.dm" +#include "code\modules\mob\living\carbon\monkey\monkey_defense.dm" +#include "code\modules\mob\living\carbon\monkey\punpun.dm" +#include "code\modules\mob\living\carbon\monkey\update_icons.dm" +#include "code\modules\mob\living\silicon\custom_holoform.dm" +#include "code\modules\mob\living\silicon\damage_procs.dm" +#include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\examine.dm" +#include "code\modules\mob\living\silicon\laws.dm" +#include "code\modules\mob\living\silicon\login.dm" +#include "code\modules\mob\living\silicon\say.dm" +#include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\silicon_defense.dm" +#include "code\modules\mob\living\silicon\silicon_movement.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\ai_defense.dm" +#include "code\modules\mob\living\silicon\ai\death.dm" +#include "code\modules\mob\living\silicon\ai\examine.dm" +#include "code\modules\mob\living\silicon\ai\laws.dm" +#include "code\modules\mob\living\silicon\ai\life.dm" +#include "code\modules\mob\living\silicon\ai\login.dm" +#include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\multicam.dm" +#include "code\modules\mob\living\silicon\ai\say.dm" +#include "code\modules\mob\living\silicon\ai\vox_sounds.dm" +#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" +#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" +#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" +#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" +#include "code\modules\mob\living\silicon\pai\death.dm" +#include "code\modules\mob\living\silicon\pai\pai.dm" +#include "code\modules\mob\living\silicon\pai\pai_defense.dm" +#include "code\modules\mob\living\silicon\pai\pai_shell.dm" +#include "code\modules\mob\living\silicon\pai\personality.dm" +#include "code\modules\mob\living\silicon\pai\say.dm" +#include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\pai\update_icon.dm" +#include "code\modules\mob\living\silicon\robot\death.dm" +#include "code\modules\mob\living\silicon\robot\emote.dm" +#include "code\modules\mob\living\silicon\robot\examine.dm" +#include "code\modules\mob\living\silicon\robot\inventory.dm" +#include "code\modules\mob\living\silicon\robot\laws.dm" +#include "code\modules\mob\living\silicon\robot\life.dm" +#include "code\modules\mob\living\silicon\robot\login.dm" +#include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_defense.dm" +#include "code\modules\mob\living\silicon\robot\robot_mobility.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules.dm" +#include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\say.dm" +#include "code\modules\mob\living\simple_animal\animal_defense.dm" +#include "code\modules\mob\living\simple_animal\astral.dm" +#include "code\modules\mob\living\simple_animal\constructs.dm" +#include "code\modules\mob\living\simple_animal\corpse.dm" +#include "code\modules\mob\living\simple_animal\damage_procs.dm" +#include "code\modules\mob\living\simple_animal\parrot.dm" +#include "code\modules\mob\living\simple_animal\shade.dm" +#include "code\modules\mob\living\simple_animal\simple_animal.dm" +#include "code\modules\mob\living\simple_animal\simple_animal_vr.dm" +#include "code\modules\mob\living\simple_animal\simplemob_vore_values.dm" +#include "code\modules\mob\living\simple_animal\spawner.dm" +#include "code\modules\mob\living\simple_animal\status_procs.dm" +#include "code\modules\mob\living\simple_animal\bot\bot.dm" +#include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" +#include "code\modules\mob\living\simple_animal\bot\construction.dm" +#include "code\modules\mob\living\simple_animal\bot\ed209bot.dm" +#include "code\modules\mob\living\simple_animal\bot\firebot.dm" +#include "code\modules\mob\living\simple_animal\bot\floorbot.dm" +#include "code\modules\mob\living\simple_animal\bot\honkbot.dm" +#include "code\modules\mob\living\simple_animal\bot\medbot.dm" +#include "code\modules\mob\living\simple_animal\bot\mulebot.dm" +#include "code\modules\mob\living\simple_animal\bot\secbot.dm" +#include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm" +#include "code\modules\mob\living\simple_animal\friendly\butterfly.dm" +#include "code\modules\mob\living\simple_animal\friendly\cat.dm" +#include "code\modules\mob\living\simple_animal\friendly\cockroach.dm" +#include "code\modules\mob\living\simple_animal\friendly\crab.dm" +#include "code\modules\mob\living\simple_animal\friendly\dog.dm" +#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\friendly\fox.dm" +#include "code\modules\mob\living\simple_animal\friendly\gondola.dm" +#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" +#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" +#include "code\modules\mob\living\simple_animal\friendly\panda.dm" +#include "code\modules\mob\living\simple_animal\friendly\penguin.dm" +#include "code\modules\mob\living\simple_animal\friendly\pet.dm" +#include "code\modules\mob\living\simple_animal\friendly\sloth.dm" +#include "code\modules\mob\living\simple_animal\friendly\snake.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\interaction.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\say.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm" +#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm" +#include "code\modules\mob\living\simple_animal\guardian\guardian.dm" +#include "code\modules\mob\living\simple_animal\guardian\guardiannaming.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\fire.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\protector.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm" +#include "code\modules\mob\living\simple_animal\guardian\types\support.dm" +#include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\banana_spider.dm" +#include "code\modules\mob\living\simple_animal\hostile\bear.dm" +#include "code\modules\mob\living\simple_animal\hostile\bees.dm" +#include "code\modules\mob\living\simple_animal\hostile\carp.dm" +#include "code\modules\mob\living\simple_animal\hostile\cat_butcher.dm" +#include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm" +#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" +#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" +#include "code\modules\mob\living\simple_animal\hostile\goose.dm" +#include "code\modules\mob\living\simple_animal\hostile\headcrab.dm" +#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" +#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" +#include "code\modules\mob\living\simple_animal\hostile\illusion.dm" +#include "code\modules\mob\living\simple_animal\hostile\killertomato.dm" +#include "code\modules\mob\living\simple_animal\hostile\mecha_pilot.dm" +#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" +#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" +#include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" +#include "code\modules\mob\living\simple_animal\hostile\netherworld.dm" +#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" +#include "code\modules\mob\living\simple_animal\hostile\russian.dm" +#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm" +#include "code\modules\mob\living\simple_animal\hostile\statue.dm" +#include "code\modules\mob\living\simple_animal\hostile\stickman.dm" +#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" +#include "code\modules\mob\living\simple_animal\hostile\tree.dm" +#include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" +#include "code\modules\mob\living\simple_animal\hostile\wizard.dm" +#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm" +#include "code\modules\mob\living\simple_animal\hostile\zombie.dm" +#include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm" +#include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm" +#include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm" +#include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm" +#include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm" +#include "code\modules\mob\living\simple_animal\hostile\jungle\_jungle_mobs.dm" +#include "code\modules\mob\living\simple_animal\hostile\jungle\leaper.dm" +#include "code\modules\mob\living\simple_animal\hostile\jungle\mega_arachnid.dm" +#include "code\modules\mob\living\simple_animal\hostile\jungle\mook.dm" +#include "code\modules\mob\living\simple_animal\hostile\jungle\seedling.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon_vore.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\curse_blob.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\elite.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\goliath_broodmother.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\herald.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\legionnaire.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\pandora.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm" +#include "code\modules\mob\living\simple_animal\slime\death.dm" +#include "code\modules\mob\living\simple_animal\slime\emote.dm" +#include "code\modules\mob\living\simple_animal\slime\life.dm" +#include "code\modules\mob\living\simple_animal\slime\powers.dm" +#include "code\modules\mob\living\simple_animal\slime\say.dm" +#include "code\modules\mob\living\simple_animal\slime\slime.dm" +#include "code\modules\mob\living\simple_animal\slime\slime_mobility.dm" +#include "code\modules\mob\living\simple_animal\slime\subtypes.dm" +#include "code\modules\modular_computers\laptop_vendor.dm" +#include "code\modules\modular_computers\computers\item\computer.dm" +#include "code\modules\modular_computers\computers\item\computer_components.dm" +#include "code\modules\modular_computers\computers\item\computer_damage.dm" +#include "code\modules\modular_computers\computers\item\computer_power.dm" +#include "code\modules\modular_computers\computers\item\computer_ui.dm" +#include "code\modules\modular_computers\computers\item\laptop.dm" +#include "code\modules\modular_computers\computers\item\laptop_presets.dm" +#include "code\modules\modular_computers\computers\item\processor.dm" +#include "code\modules\modular_computers\computers\item\tablet.dm" +#include "code\modules\modular_computers\computers\item\tablet_presets.dm" +#include "code\modules\modular_computers\computers\machinery\console_presets.dm" +#include "code\modules\modular_computers\computers\machinery\modular_computer.dm" +#include "code\modules\modular_computers\computers\machinery\modular_console.dm" +#include "code\modules\modular_computers\file_system\computer_file.dm" +#include "code\modules\modular_computers\file_system\data.dm" +#include "code\modules\modular_computers\file_system\program.dm" +#include "code\modules\modular_computers\file_system\program_events.dm" +#include "code\modules\modular_computers\file_system\programs\airestorer.dm" +#include "code\modules\modular_computers\file_system\programs\alarm.dm" +#include "code\modules\modular_computers\file_system\programs\card.dm" +#include "code\modules\modular_computers\file_system\programs\configurator.dm" +#include "code\modules\modular_computers\file_system\programs\file_browser.dm" +#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" +#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" +#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" +#include "code\modules\modular_computers\file_system\programs\nttransfer.dm" +#include "code\modules\modular_computers\file_system\programs\powermonitor.dm" +#include "code\modules\modular_computers\file_system\programs\sm_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" +#include "code\modules\modular_computers\hardware\_hardware.dm" +#include "code\modules\modular_computers\hardware\ai_slot.dm" +#include "code\modules\modular_computers\hardware\battery_module.dm" +#include "code\modules\modular_computers\hardware\card_slot.dm" +#include "code\modules\modular_computers\hardware\CPU.dm" +#include "code\modules\modular_computers\hardware\hard_drive.dm" +#include "code\modules\modular_computers\hardware\network_card.dm" +#include "code\modules\modular_computers\hardware\portable_disk.dm" +#include "code\modules\modular_computers\hardware\printer.dm" +#include "code\modules\modular_computers\hardware\recharger.dm" +#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" +#include "code\modules\ninja\__ninjaDefines.dm" +#include "code\modules\ninja\energy_katana.dm" +#include "code\modules\ninja\ninja_event.dm" +#include "code\modules\ninja\outfit.dm" +#include "code\modules\ninja\suit\gloves.dm" +#include "code\modules\ninja\suit\head.dm" +#include "code\modules\ninja\suit\mask.dm" +#include "code\modules\ninja\suit\ninjaDrainAct.dm" +#include "code\modules\ninja\suit\shoes.dm" +#include "code\modules\ninja\suit\suit.dm" +#include "code\modules\ninja\suit\suit_attackby.dm" +#include "code\modules\ninja\suit\suit_initialisation.dm" +#include "code\modules\ninja\suit\suit_process.dm" +#include "code\modules\ninja\suit\n_suit_verbs\energy_net_nets.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_adrenaline.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_cost_check.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_empulse.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_net.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_smoke.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm" +#include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm" +#include "code\modules\NTNet\netdata.dm" +#include "code\modules\NTNet\network.dm" +#include "code\modules\NTNet\relays.dm" +#include "code\modules\NTNet\services\_service.dm" +#include "code\modules\oracle_ui\assets.dm" +#include "code\modules\oracle_ui\hookup_procs.dm" +#include "code\modules\oracle_ui\oracle_ui.dm" +#include "code\modules\oracle_ui\themed.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\contract.dm" +#include "code\modules\paperwork\filingcabinet.dm" +#include "code\modules\paperwork\folders.dm" +#include "code\modules\paperwork\handlabeler.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paper_cutter.dm" +#include "code\modules\paperwork\paper_premade.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\paperplane.dm" +#include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\stamps.dm" +#include "code\modules\photography\_pictures.dm" +#include "code\modules\photography\camera\camera.dm" +#include "code\modules\photography\camera\camera_image_capturing.dm" +#include "code\modules\photography\camera\film.dm" +#include "code\modules\photography\camera\other.dm" +#include "code\modules\photography\camera\silicon_camera.dm" +#include "code\modules\photography\photos\album.dm" +#include "code\modules\photography\photos\frame.dm" +#include "code\modules\photography\photos\photo.dm" +#include "code\modules\power\apc.dm" +#include "code\modules\power\cable.dm" +#include "code\modules\power\cell.dm" +#include "code\modules\power\floodlight.dm" +#include "code\modules\power\generator.dm" +#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\lighting.dm" +#include "code\modules\power\monitor.dm" +#include "code\modules\power\multiz.dm" +#include "code\modules\power\port_gen.dm" +#include "code\modules\power\power.dm" +#include "code\modules\power\powernet.dm" +#include "code\modules\power\rtg.dm" +#include "code\modules\power\smes.dm" +#include "code\modules\power\solar.dm" +#include "code\modules\power\terminal.dm" +#include "code\modules\power\tracker.dm" +#include "code\modules\power\turbine.dm" +#include "code\modules\power\antimatter\containment_jar.dm" +#include "code\modules\power\antimatter\control.dm" +#include "code\modules\power\antimatter\shielding.dm" +#include "code\modules\power\singularity\collector.dm" +#include "code\modules\power\singularity\containment_field.dm" +#include "code\modules\power\singularity\emitter.dm" +#include "code\modules\power\singularity\field_generator.dm" +#include "code\modules\power\singularity\generator.dm" +#include "code\modules\power\singularity\investigate.dm" +#include "code\modules\power\singularity\narsie.dm" +#include "code\modules\power\singularity\singularity.dm" +#include "code\modules\power\singularity\particle_accelerator\particle.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" +#include "code\modules\power\supermatter\supermatter.dm" +#include "code\modules\power\tesla\coil.dm" +#include "code\modules\power\tesla\energy_ball.dm" +#include "code\modules\power\tesla\generator.dm" +#include "code\modules\procedural_mapping\mapGenerator.dm" +#include "code\modules\procedural_mapping\mapGeneratorModule.dm" +#include "code\modules\procedural_mapping\mapGeneratorObj.dm" +#include "code\modules\procedural_mapping\mapGeneratorReadme.dm" +#include "code\modules\procedural_mapping\mapGeneratorModules\helpers.dm" +#include "code\modules\procedural_mapping\mapGeneratorModules\nature.dm" +#include "code\modules\procedural_mapping\mapGenerators\asteroid.dm" +#include "code\modules\procedural_mapping\mapGenerators\cellular.dm" +#include "code\modules\procedural_mapping\mapGenerators\cult.dm" +#include "code\modules\procedural_mapping\mapGenerators\lava_river.dm" +#include "code\modules\procedural_mapping\mapGenerators\lavaland.dm" +#include "code\modules\procedural_mapping\mapGenerators\nature.dm" +#include "code\modules\procedural_mapping\mapGenerators\repair.dm" +#include "code\modules\procedural_mapping\mapGenerators\shuttle.dm" +#include "code\modules\procedural_mapping\mapGenerators\syndicate.dm" +#include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\pins.dm" +#include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\ammunition\_ammunition.dm" +#include "code\modules\projectiles\ammunition\_firing.dm" +#include "code\modules\projectiles\ammunition\ballistic\lmg.dm" +#include "code\modules\projectiles\ammunition\ballistic\pistol.dm" +#include "code\modules\projectiles\ammunition\ballistic\revolver.dm" +#include "code\modules\projectiles\ammunition\ballistic\rifle.dm" +#include "code\modules\projectiles\ammunition\ballistic\shotgun.dm" +#include "code\modules\projectiles\ammunition\ballistic\smg.dm" +#include "code\modules\projectiles\ammunition\ballistic\sniper.dm" +#include "code\modules\projectiles\ammunition\caseless\_caseless.dm" +#include "code\modules\projectiles\ammunition\caseless\foam.dm" +#include "code\modules\projectiles\ammunition\caseless\misc.dm" +#include "code\modules\projectiles\ammunition\caseless\rocket.dm" +#include "code\modules\projectiles\ammunition\energy\_energy.dm" +#include "code\modules\projectiles\ammunition\energy\ebow.dm" +#include "code\modules\projectiles\ammunition\energy\gravity.dm" +#include "code\modules\projectiles\ammunition\energy\laser.dm" +#include "code\modules\projectiles\ammunition\energy\lmg.dm" +#include "code\modules\projectiles\ammunition\energy\plasma.dm" +#include "code\modules\projectiles\ammunition\energy\plasma_cit.dm" +#include "code\modules\projectiles\ammunition\energy\portal.dm" +#include "code\modules\projectiles\ammunition\energy\special.dm" +#include "code\modules\projectiles\ammunition\energy\stun.dm" +#include "code\modules\projectiles\ammunition\special\magic.dm" +#include "code\modules\projectiles\ammunition\special\syringe.dm" +#include "code\modules\projectiles\boxes_magazines\_box_magazine.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm" +#include "code\modules\projectiles\boxes_magazines\external\grenade.dm" +#include "code\modules\projectiles\boxes_magazines\external\lmg.dm" +#include "code\modules\projectiles\boxes_magazines\external\pistol.dm" +#include "code\modules\projectiles\boxes_magazines\external\rechargable.dm" +#include "code\modules\projectiles\boxes_magazines\external\rifle.dm" +#include "code\modules\projectiles\boxes_magazines\external\shotgun.dm" +#include "code\modules\projectiles\boxes_magazines\external\smg.dm" +#include "code\modules\projectiles\boxes_magazines\external\sniper.dm" +#include "code\modules\projectiles\boxes_magazines\external\toy.dm" +#include "code\modules\projectiles\boxes_magazines\internal\_cylinder.dm" +#include "code\modules\projectiles\boxes_magazines\internal\_internal.dm" +#include "code\modules\projectiles\boxes_magazines\internal\grenade.dm" +#include "code\modules\projectiles\boxes_magazines\internal\misc.dm" +#include "code\modules\projectiles\boxes_magazines\internal\revolver.dm" +#include "code\modules\projectiles\boxes_magazines\internal\rifle.dm" +#include "code\modules\projectiles\boxes_magazines\internal\shotgun.dm" +#include "code\modules\projectiles\boxes_magazines\internal\toy.dm" +#include "code\modules\projectiles\guns\ballistic.dm" +#include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\magic.dm" +#include "code\modules\projectiles\guns\ballistic\automatic.dm" +#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm" +#include "code\modules\projectiles\guns\ballistic\launchers.dm" +#include "code\modules\projectiles\guns\ballistic\pistol.dm" +#include "code\modules\projectiles\guns\ballistic\revolver.dm" +#include "code\modules\projectiles\guns\ballistic\shotgun.dm" +#include "code\modules\projectiles\guns\ballistic\toy.dm" +#include "code\modules\projectiles\guns\energy\energy_gun.dm" +#include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm" +#include "code\modules\projectiles\guns\energy\laser.dm" +#include "code\modules\projectiles\guns\energy\megabuster.dm" +#include "code\modules\projectiles\guns\energy\mounted.dm" +#include "code\modules\projectiles\guns\energy\plasma_cit.dm" +#include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\special.dm" +#include "code\modules\projectiles\guns\energy\stun.dm" +#include "code\modules\projectiles\guns\magic\staff.dm" +#include "code\modules\projectiles\guns\magic\wand.dm" +#include "code\modules\projectiles\guns\misc\beam_rifle.dm" +#include "code\modules\projectiles\guns\misc\blastcannon.dm" +#include "code\modules\projectiles\guns\misc\chem_gun.dm" +#include "code\modules\projectiles\guns\misc\grenade_launcher.dm" +#include "code\modules\projectiles\guns\misc\medbeam.dm" +#include "code\modules\projectiles\guns\misc\syringe_gun.dm" +#include "code\modules\projectiles\projectile\beams.dm" +#include "code\modules\projectiles\projectile\bullets.dm" +#include "code\modules\projectiles\projectile\magic.dm" +#include "code\modules\projectiles\projectile\megabuster.dm" +#include "code\modules\projectiles\projectile\plasma.dm" +#include "code\modules\projectiles\projectile\bullets\_incendiary.dm" +#include "code\modules\projectiles\projectile\bullets\dart_syringe.dm" +#include "code\modules\projectiles\projectile\bullets\dnainjector.dm" +#include "code\modules\projectiles\projectile\bullets\grenade.dm" +#include "code\modules\projectiles\projectile\bullets\lmg.dm" +#include "code\modules\projectiles\projectile\bullets\pistol.dm" +#include "code\modules\projectiles\projectile\bullets\revolver.dm" +#include "code\modules\projectiles\projectile\bullets\rifle.dm" +#include "code\modules\projectiles\projectile\bullets\shotgun.dm" +#include "code\modules\projectiles\projectile\bullets\smg.dm" +#include "code\modules\projectiles\projectile\bullets\sniper.dm" +#include "code\modules\projectiles\projectile\bullets\special.dm" +#include "code\modules\projectiles\projectile\energy\_energy.dm" +#include "code\modules\projectiles\projectile\energy\ebow.dm" +#include "code\modules\projectiles\projectile\energy\misc.dm" +#include "code\modules\projectiles\projectile\energy\net_snare.dm" +#include "code\modules\projectiles\projectile\energy\nuclear_particle.dm" +#include "code\modules\projectiles\projectile\energy\stun.dm" +#include "code\modules\projectiles\projectile\energy\tesla.dm" +#include "code\modules\projectiles\projectile\magic\spellcard.dm" +#include "code\modules\projectiles\projectile\reusable\_reusable.dm" +#include "code\modules\projectiles\projectile\reusable\foam_dart.dm" +#include "code\modules\projectiles\projectile\reusable\magspear.dm" +#include "code\modules\projectiles\projectile\special\curse.dm" +#include "code\modules\projectiles\projectile\special\floral.dm" +#include "code\modules\projectiles\projectile\special\gravity.dm" +#include "code\modules\projectiles\projectile\special\hallucination.dm" +#include "code\modules\projectiles\projectile\special\ion.dm" +#include "code\modules\projectiles\projectile\special\meteor.dm" +#include "code\modules\projectiles\projectile\special\mindflayer.dm" +#include "code\modules\projectiles\projectile\special\neurotoxin.dm" +#include "code\modules\projectiles\projectile\special\plasma.dm" +#include "code\modules\projectiles\projectile\special\rocket.dm" +#include "code\modules\projectiles\projectile\special\temperature.dm" +#include "code\modules\projectiles\projectile\special\wormhole.dm" +#include "code\modules\reagents\chem_splash.dm" +#include "code\modules\reagents\chem_wiki_render.dm" +#include "code\modules\reagents\reagent_containers.dm" +#include "code\modules\reagents\reagent_dispenser.dm" +#include "code\modules\reagents\chemistry\colors.dm" +#include "code\modules\reagents\chemistry\holder.dm" +#include "code\modules\reagents\chemistry\reagents.dm" +#include "code\modules\reagents\chemistry\recipes.dm" +#include "code\modules\reagents\chemistry\machinery\chem_dispenser.dm" +#include "code\modules\reagents\chemistry\machinery\chem_heater.dm" +#include "code\modules\reagents\chemistry\machinery\chem_master.dm" +#include "code\modules\reagents\chemistry\machinery\chem_synthesizer.dm" +#include "code\modules\reagents\chemistry\machinery\pandemic.dm" +#include "code\modules\reagents\chemistry\machinery\reagentgrinder.dm" +#include "code\modules\reagents\chemistry\machinery\smoke_machine.dm" +#include "code\modules\reagents\chemistry\reagents\alcohol_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\blob_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\drink_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\drug_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\food_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\impure_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\medicine_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\other_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\pyrotechnic_reagents.dm" +#include "code\modules\reagents\chemistry\reagents\toxin_reagents.dm" +#include "code\modules\reagents\chemistry\recipes\drugs.dm" +#include "code\modules\reagents\chemistry\recipes\medicine.dm" +#include "code\modules\reagents\chemistry\recipes\others.dm" +#include "code\modules\reagents\chemistry\recipes\pyrotechnics.dm" +#include "code\modules\reagents\chemistry\recipes\slime_extracts.dm" +#include "code\modules\reagents\chemistry\recipes\special.dm" +#include "code\modules\reagents\chemistry\recipes\toxins.dm" +#include "code\modules\reagents\reagent_containers\blood_pack.dm" +#include "code\modules\reagents\reagent_containers\borghydro.dm" +#include "code\modules\reagents\reagent_containers\bottle.dm" +#include "code\modules\reagents\reagent_containers\dropper.dm" +#include "code\modules\reagents\reagent_containers\glass.dm" +#include "code\modules\reagents\reagent_containers\hypospray.dm" +#include "code\modules\reagents\reagent_containers\hypovial.dm" +#include "code\modules\reagents\reagent_containers\medspray.dm" +#include "code\modules\reagents\reagent_containers\patch.dm" +#include "code\modules\reagents\reagent_containers\pill.dm" +#include "code\modules\reagents\reagent_containers\rags.dm" +#include "code\modules\reagents\reagent_containers\sleeper_buffer.dm" +#include "code\modules\reagents\reagent_containers\spray.dm" +#include "code\modules\reagents\reagent_containers\syringes.dm" +#include "code\modules\recycling\conveyor2.dm" +#include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\recycling\disposal\bin.dm" +#include "code\modules\recycling\disposal\construction.dm" +#include "code\modules\recycling\disposal\eject.dm" +#include "code\modules\recycling\disposal\holder.dm" +#include "code\modules\recycling\disposal\multiz.dm" +#include "code\modules\recycling\disposal\outlet.dm" +#include "code\modules\recycling\disposal\pipe.dm" +#include "code\modules\recycling\disposal\pipe_sorting.dm" +#include "code\modules\research\designs.dm" +#include "code\modules\research\destructive_analyzer.dm" +#include "code\modules\research\experimentor.dm" +#include "code\modules\research\rdconsole.dm" +#include "code\modules\research\rdmachines.dm" +#include "code\modules\research\research_disk.dm" +#include "code\modules\research\server.dm" +#include "code\modules\research\stock_parts.dm" +#include "code\modules\research\designs\AI_module_designs.dm" +#include "code\modules\research\designs\autobotter_designs.dm" +#include "code\modules\research\designs\autoylathe_designs.dm" +#include "code\modules\research\designs\biogenerator_designs.dm" +#include "code\modules\research\designs\bluespace_designs.dm" +#include "code\modules\research\designs\computer_part_designs.dm" +#include "code\modules\research\designs\electronics_designs.dm" +#include "code\modules\research\designs\equipment_designs.dm" +#include "code\modules\research\designs\limbgrower_designs.dm" +#include "code\modules\research\designs\mecha_designs.dm" +#include "code\modules\research\designs\mechfabricator_designs.dm" +#include "code\modules\research\designs\medical_designs.dm" +#include "code\modules\research\designs\mining_designs.dm" +#include "code\modules\research\designs\misc_designs.dm" +#include "code\modules\research\designs\nanite_designs.dm" +#include "code\modules\research\designs\power_designs.dm" +#include "code\modules\research\designs\smelting_designs.dm" +#include "code\modules\research\designs\stock_parts_designs.dm" +#include "code\modules\research\designs\telecomms_designs.dm" +#include "code\modules\research\designs\tool_designs.dm" +#include "code\modules\research\designs\weapon_designs.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_construction.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_electronics.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_medical_and_dinnerware.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tcomms_and_misc.dm" +#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tools.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm" +#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm" +#include "code\modules\research\designs\machine_desings\machine_designs_service.dm" +#include "code\modules\research\machinery\_production.dm" +#include "code\modules\research\machinery\circuit_imprinter.dm" +#include "code\modules\research\machinery\departmental_circuit_imprinter.dm" +#include "code\modules\research\machinery\departmental_protolathe.dm" +#include "code\modules\research\machinery\departmental_techfab.dm" +#include "code\modules\research\machinery\protolathe.dm" +#include "code\modules\research\machinery\techfab.dm" +#include "code\modules\research\nanites\nanite_chamber.dm" +#include "code\modules\research\nanites\nanite_chamber_computer.dm" +#include "code\modules\research\nanites\nanite_cloud_controller.dm" +#include "code\modules\research\nanites\nanite_hijacker.dm" +#include "code\modules\research\nanites\nanite_misc_items.dm" +#include "code\modules\research\nanites\nanite_program_hub.dm" +#include "code\modules\research\nanites\nanite_programmer.dm" +#include "code\modules\research\nanites\nanite_programs.dm" +#include "code\modules\research\nanites\nanite_remote.dm" +#include "code\modules\research\nanites\program_disks.dm" +#include "code\modules\research\nanites\public_chamber.dm" +#include "code\modules\research\nanites\nanite_programs\buffing.dm" +#include "code\modules\research\nanites\nanite_programs\healing.dm" +#include "code\modules\research\nanites\nanite_programs\rogue.dm" +#include "code\modules\research\nanites\nanite_programs\sensor.dm" +#include "code\modules\research\nanites\nanite_programs\suppression.dm" +#include "code\modules\research\nanites\nanite_programs\utility.dm" +#include "code\modules\research\nanites\nanite_programs\weapon.dm" +#include "code\modules\research\techweb\__techweb_helpers.dm" +#include "code\modules\research\techweb\_techweb.dm" +#include "code\modules\research\techweb\_techweb_node.dm" +#include "code\modules\research\techweb\all_nodes.dm" +#include "code\modules\research\xenobiology\xenobio_camera.dm" +#include "code\modules\research\xenobiology\xenobiology.dm" +#include "code\modules\research\xenobiology\crossbreeding\__corecross.dm" +#include "code\modules\research\xenobiology\crossbreeding\_clothing.dm" +#include "code\modules\research\xenobiology\crossbreeding\_misc.dm" +#include "code\modules\research\xenobiology\crossbreeding\_mobs.dm" +#include "code\modules\research\xenobiology\crossbreeding\_status_effects.dm" +#include "code\modules\research\xenobiology\crossbreeding\_weapons.dm" +#include "code\modules\research\xenobiology\crossbreeding\burning.dm" +#include "code\modules\research\xenobiology\crossbreeding\charged.dm" +#include "code\modules\research\xenobiology\crossbreeding\chilling.dm" +#include "code\modules\research\xenobiology\crossbreeding\consuming.dm" +#include "code\modules\research\xenobiology\crossbreeding\industrial.dm" +#include "code\modules\research\xenobiology\crossbreeding\prismatic.dm" +#include "code\modules\research\xenobiology\crossbreeding\recurring.dm" +#include "code\modules\research\xenobiology\crossbreeding\regenerative.dm" +#include "code\modules\research\xenobiology\crossbreeding\reproductive.dm" +#include "code\modules\research\xenobiology\crossbreeding\selfsustaining.dm" +#include "code\modules\research\xenobiology\crossbreeding\stabilized.dm" +#include "code\modules\ruins\lavaland_ruin_code.dm" +#include "code\modules\ruins\lavalandruin_code\alien_nest.dm" +#include "code\modules\ruins\lavalandruin_code\biodome_clown_planet.dm" +#include "code\modules\ruins\lavalandruin_code\pizzaparty.dm" +#include "code\modules\ruins\lavalandruin_code\puzzle.dm" +#include "code\modules\ruins\lavalandruin_code\sloth.dm" +#include "code\modules\ruins\lavalandruin_code\surface.dm" +#include "code\modules\ruins\lavalandruin_code\syndicate_base.dm" +#include "code\modules\ruins\objects_and_mobs\ash_walker_den.dm" +#include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm" +#include "code\modules\ruins\objects_and_mobs\sin_ruins.dm" +#include "code\modules\ruins\spaceruin_code\asteroid4.dm" +#include "code\modules\ruins\spaceruin_code\bigderelict1.dm" +#include "code\modules\ruins\spaceruin_code\caravanambush.dm" +#include "code\modules\ruins\spaceruin_code\cloning_lab.dm" +#include "code\modules\ruins\spaceruin_code\crashedclownship.dm" +#include "code\modules\ruins\spaceruin_code\crashedship.dm" +#include "code\modules\ruins\spaceruin_code\deepstorage.dm" +#include "code\modules\ruins\spaceruin_code\DJstation.dm" +#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm" +#include "code\modules\ruins\spaceruin_code\listeningstation.dm" +#include "code\modules\ruins\spaceruin_code\miracle.dm" +#include "code\modules\ruins\spaceruin_code\oldstation.dm" +#include "code\modules\ruins\spaceruin_code\originalcontent.dm" +#include "code\modules\ruins\spaceruin_code\spacehotel.dm" +#include "code\modules\ruins\spaceruin_code\TheDerelict.dm" +#include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm" +#include "code\modules\security_levels\keycard_authentication.dm" +#include "code\modules\security_levels\security_levels.dm" +#include "code\modules\shuttle\arrivals.dm" +#include "code\modules\shuttle\assault_pod.dm" +#include "code\modules\shuttle\computer.dm" +#include "code\modules\shuttle\docking.dm" +#include "code\modules\shuttle\elevator.dm" +#include "code\modules\shuttle\emergency.dm" +#include "code\modules\shuttle\ferry.dm" +#include "code\modules\shuttle\manipulator.dm" +#include "code\modules\shuttle\monastery.dm" +#include "code\modules\shuttle\navigation_computer.dm" +#include "code\modules\shuttle\on_move.dm" +#include "code\modules\shuttle\ripple.dm" +#include "code\modules\shuttle\shuttle.dm" +#include "code\modules\shuttle\shuttle_rotate.dm" +#include "code\modules\shuttle\special.dm" +#include "code\modules\shuttle\supply.dm" +#include "code\modules\shuttle\syndicate.dm" +#include "code\modules\shuttle\white_ship.dm" +#include "code\modules\spells\spell.dm" +#include "code\modules\spells\spell_types\aimed.dm" +#include "code\modules\spells\spell_types\area_teleport.dm" +#include "code\modules\spells\spell_types\barnyard.dm" +#include "code\modules\spells\spell_types\bloodcrawl.dm" +#include "code\modules\spells\spell_types\charge.dm" +#include "code\modules\spells\spell_types\conjure.dm" +#include "code\modules\spells\spell_types\construct_spells.dm" +#include "code\modules\spells\spell_types\devil.dm" +#include "code\modules\spells\spell_types\devil_boons.dm" +#include "code\modules\spells\spell_types\dumbfire.dm" +#include "code\modules\spells\spell_types\emplosion.dm" +#include "code\modules\spells\spell_types\ethereal_jaunt.dm" +#include "code\modules\spells\spell_types\explosion.dm" +#include "code\modules\spells\spell_types\forcewall.dm" +#include "code\modules\spells\spell_types\genetic.dm" +#include "code\modules\spells\spell_types\godhand.dm" +#include "code\modules\spells\spell_types\infinite_guns.dm" +#include "code\modules\spells\spell_types\inflict_handler.dm" +#include "code\modules\spells\spell_types\knock.dm" +#include "code\modules\spells\spell_types\lichdom.dm" +#include "code\modules\spells\spell_types\lightning.dm" +#include "code\modules\spells\spell_types\mime.dm" +#include "code\modules\spells\spell_types\mind_transfer.dm" +#include "code\modules\spells\spell_types\projectile.dm" +#include "code\modules\spells\spell_types\rightandwrong.dm" +#include "code\modules\spells\spell_types\rod_form.dm" +#include "code\modules\spells\spell_types\santa.dm" +#include "code\modules\spells\spell_types\shadow_walk.dm" +#include "code\modules\spells\spell_types\shapeshift.dm" +#include "code\modules\spells\spell_types\spacetime_distortion.dm" +#include "code\modules\spells\spell_types\summonitem.dm" +#include "code\modules\spells\spell_types\taeclowndo.dm" +#include "code\modules\spells\spell_types\telepathy.dm" +#include "code\modules\spells\spell_types\the_traps.dm" +#include "code\modules\spells\spell_types\touch_attacks.dm" +#include "code\modules\spells\spell_types\trigger.dm" +#include "code\modules\spells\spell_types\turf_teleport.dm" +#include "code\modules\spells\spell_types\voice_of_god.dm" +#include "code\modules\spells\spell_types\wizard.dm" +#include "code\modules\station_goals\bsa.dm" +#include "code\modules\station_goals\dna_vault.dm" +#include "code\modules\station_goals\shield.dm" +#include "code\modules\station_goals\station_goal.dm" +#include "code\modules\surgery\amputation.dm" +#include "code\modules\surgery\brain_surgery.dm" +#include "code\modules\surgery\cavity_implant.dm" +#include "code\modules\surgery\core_removal.dm" +#include "code\modules\surgery\coronary_bypass.dm" +#include "code\modules\surgery\dental_implant.dm" +#include "code\modules\surgery\embalming.dm" +#include "code\modules\surgery\emergency_cardioversion_recovery.dm" +#include "code\modules\surgery\experimental_dissection.dm" +#include "code\modules\surgery\eye_surgery.dm" +#include "code\modules\surgery\graft_synthtissue.dm" +#include "code\modules\surgery\healing.dm" +#include "code\modules\surgery\helpers.dm" +#include "code\modules\surgery\implant_removal.dm" +#include "code\modules\surgery\limb_augmentation.dm" +#include "code\modules\surgery\lipoplasty.dm" +#include "code\modules\surgery\lobectomy.dm" +#include "code\modules\surgery\mechanic_steps.dm" +#include "code\modules\surgery\nutcracker.dm" +#include "code\modules\surgery\organ_manipulation.dm" +#include "code\modules\surgery\organic_steps.dm" +#include "code\modules\surgery\plastic_surgery.dm" +#include "code\modules\surgery\prosthetic_replacement.dm" +#include "code\modules\surgery\remove_embedded_object.dm" +#include "code\modules\surgery\surgery.dm" +#include "code\modules\surgery\surgery_step.dm" +#include "code\modules\surgery\tools.dm" +#include "code\modules\surgery\advanced\brainwashing.dm" +#include "code\modules\surgery\advanced\lobotomy.dm" +#include "code\modules\surgery\advanced\necrotic_revival.dm" +#include "code\modules\surgery\advanced\pacification.dm" +#include "code\modules\surgery\advanced\revival.dm" +#include "code\modules\surgery\advanced\toxichealing.dm" +#include "code\modules\surgery\advanced\viral_bonding.dm" +#include "code\modules\surgery\advanced\bioware\bioware.dm" +#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm" +#include "code\modules\surgery\advanced\bioware\ligament_hook.dm" +#include "code\modules\surgery\advanced\bioware\ligament_reinforcement.dm" +#include "code\modules\surgery\advanced\bioware\muscled_veins.dm" +#include "code\modules\surgery\advanced\bioware\nerve_grounding.dm" +#include "code\modules\surgery\advanced\bioware\nerve_splicing.dm" +#include "code\modules\surgery\advanced\bioware\vein_threading.dm" +#include "code\modules\surgery\bodyparts\bodyparts.dm" +#include "code\modules\surgery\bodyparts\dismemberment.dm" +#include "code\modules\surgery\bodyparts\head.dm" +#include "code\modules\surgery\bodyparts\helpers.dm" +#include "code\modules\surgery\bodyparts\robot_bodyparts.dm" +#include "code\modules\surgery\organs\appendix.dm" +#include "code\modules\surgery\organs\augments_arms.dm" +#include "code\modules\surgery\organs\augments_chest.dm" +#include "code\modules\surgery\organs\augments_eyes.dm" +#include "code\modules\surgery\organs\augments_internal.dm" +#include "code\modules\surgery\organs\autosurgeon.dm" +#include "code\modules\surgery\organs\ears.dm" +#include "code\modules\surgery\organs\eyes.dm" +#include "code\modules\surgery\organs\heart.dm" +#include "code\modules\surgery\organs\helpers.dm" +#include "code\modules\surgery\organs\liver.dm" +#include "code\modules\surgery\organs\lungs.dm" +#include "code\modules\surgery\organs\organ_internal.dm" +#include "code\modules\surgery\organs\stomach.dm" +#include "code\modules\surgery\organs\tails.dm" +#include "code\modules\surgery\organs\tongue.dm" +#include "code\modules\surgery\organs\vocal_cords.dm" +#include "code\modules\tgs\includes.dm" +#include "code\modules\tgui\external.dm" +#include "code\modules\tgui\states.dm" +#include "code\modules\tgui\subsystem.dm" +#include "code\modules\tgui\tgui.dm" +#include "code\modules\tgui\states\admin.dm" +#include "code\modules\tgui\states\always.dm" +#include "code\modules\tgui\states\conscious.dm" +#include "code\modules\tgui\states\contained.dm" +#include "code\modules\tgui\states\deep_inventory.dm" +#include "code\modules\tgui\states\default.dm" +#include "code\modules\tgui\states\hands.dm" +#include "code\modules\tgui\states\human_adjacent.dm" +#include "code\modules\tgui\states\inventory.dm" +#include "code\modules\tgui\states\language_menu.dm" +#include "code\modules\tgui\states\not_incapacitated.dm" +#include "code\modules\tgui\states\notcontained.dm" +#include "code\modules\tgui\states\observer.dm" +#include "code\modules\tgui\states\physical.dm" +#include "code\modules\tgui\states\self.dm" +#include "code\modules\tgui\states\zlevel.dm" +#include "code\modules\tooltip\tooltip.dm" +#include "code\modules\unit_tests\_unit_tests.dm" +#include "code\modules\uplink\uplink_devices.dm" +#include "code\modules\uplink\uplink_items.dm" +#include "code\modules\uplink\uplink_purchase_log.dm" +#include "code\modules\uplink\uplink_items\uplink_ammo.dm" +#include "code\modules\uplink\uplink_items\uplink_badass.dm" +#include "code\modules\uplink\uplink_items\uplink_bundles.dm" +#include "code\modules\uplink\uplink_items\uplink_clothing.dm" +#include "code\modules\uplink\uplink_items\uplink_dangerous.dm" +#include "code\modules\uplink\uplink_items\uplink_devices.dm" +#include "code\modules\uplink\uplink_items\uplink_explosives.dm" +#include "code\modules\uplink\uplink_items\uplink_implants.dm" +#include "code\modules\uplink\uplink_items\uplink_roles.dm" +#include "code\modules\uplink\uplink_items\uplink_stealth.dm" +#include "code\modules\uplink\uplink_items\uplink_stealthdevices.dm" +#include "code\modules\uplink\uplink_items\uplink_support.dm" +#include "code\modules\vehicles\_vehicle.dm" +#include "code\modules\vehicles\atv.dm" +#include "code\modules\vehicles\bicycle.dm" +#include "code\modules\vehicles\lavaboat.dm" +#include "code\modules\vehicles\pimpin_ride.dm" +#include "code\modules\vehicles\ridden.dm" +#include "code\modules\vehicles\scooter.dm" +#include "code\modules\vehicles\sealed.dm" +#include "code\modules\vehicles\secway.dm" +#include "code\modules\vehicles\speedbike.dm" +#include "code\modules\vehicles\vehicle_actions.dm" +#include "code\modules\vehicles\vehicle_key.dm" +#include "code\modules\vehicles\wheelchair.dm" +#include "code\modules\vehicles\cars\car.dm" +#include "code\modules\vehicles\cars\clowncar.dm" +#include "code\modules\vending\_vending.dm" +#include "code\modules\vending\assist.dm" +#include "code\modules\vending\autodrobe.dm" +#include "code\modules\vending\boozeomat.dm" +#include "code\modules\vending\cartridge.dm" +#include "code\modules\vending\cigarette.dm" +#include "code\modules\vending\clothesmate.dm" +#include "code\modules\vending\coffee.dm" +#include "code\modules\vending\cola.dm" +#include "code\modules\vending\drinnerware.dm" +#include "code\modules\vending\engineering.dm" +#include "code\modules\vending\engivend.dm" +#include "code\modules\vending\games.dm" +#include "code\modules\vending\kinkmate.dm" +#include "code\modules\vending\liberation.dm" +#include "code\modules\vending\liberation_toy.dm" +#include "code\modules\vending\magivend.dm" +#include "code\modules\vending\medical.dm" +#include "code\modules\vending\medical_wall.dm" +#include "code\modules\vending\megaseed.dm" +#include "code\modules\vending\nutrimax.dm" +#include "code\modules\vending\plasmaresearch.dm" +#include "code\modules\vending\robotics.dm" +#include "code\modules\vending\security.dm" +#include "code\modules\vending\snack.dm" +#include "code\modules\vending\sovietsoda.dm" +#include "code\modules\vending\sovietvend.dm" +#include "code\modules\vending\sustenance.dm" +#include "code\modules\vending\toys.dm" +#include "code\modules\vending\wardrobes.dm" +#include "code\modules\vending\youtool.dm" +#include "code\modules\vore\hook-defs.dm" +#include "code\modules\vore\persistence.dm" +#include "code\modules\vore\trycatch.dm" +#include "code\modules\vore\eating\belly_dat_vr.dm" +#include "code\modules\vore\eating\belly_obj.dm" +#include "code\modules\vore\eating\bellymodes.dm" +#include "code\modules\vore\eating\digest_act.dm" +#include "code\modules\vore\eating\living.dm" +#include "code\modules\vore\eating\vore.dm" +#include "code\modules\vore\eating\voreitems.dm" +#include "code\modules\vore\eating\vorepanel.dm" +#include "code\modules\VR\vr_mob.dm" +#include "code\modules\VR\vr_sleeper.dm" +#include "code\modules\zombie\items.dm" +#include "code\modules\zombie\organs.dm" +#include "interface\interface.dm" +#include "interface\menu.dm" +#include "interface\stylesheet.dm" +#include "modular_citadel\code\__HELPERS\list2list.dm" +#include "modular_citadel\code\__HELPERS\lists.dm" +#include "modular_citadel\code\__HELPERS\mobs.dm" +#include "modular_citadel\code\_onclick\click.dm" +#include "modular_citadel\code\_onclick\item_attack.dm" +#include "modular_citadel\code\_onclick\other_mobs.dm" +#include "modular_citadel\code\_onclick\hud\screen_objects.dm" +#include "modular_citadel\code\_onclick\hud\sprint.dm" +#include "modular_citadel\code\_onclick\hud\stamina.dm" +#include "modular_citadel\code\datums\components\souldeath.dm" +#include "modular_citadel\code\datums\status_effects\chems.dm" +#include "modular_citadel\code\game\machinery\wishgranter.dm" +#include "modular_citadel\code\game\objects\cit_screenshake.dm" +#include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" +#include "modular_citadel\code\modules\admin\admin.dm" +#include "modular_citadel\code\modules\admin\chat_commands.dm" +#include "modular_citadel\code\modules\admin\holder2.dm" +#include "modular_citadel\code\modules\admin\secrets.dm" +#include "modular_citadel\code\modules\admin\topic.dm" +#include "modular_citadel\code\modules\arousal\arousal.dm" +#include "modular_citadel\code\modules\arousal\genitals.dm" +#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" +#include "modular_citadel\code\modules\arousal\organs\breasts.dm" +#include "modular_citadel\code\modules\arousal\organs\eggsack.dm" +#include "modular_citadel\code\modules\arousal\organs\ovipositor.dm" +#include "modular_citadel\code\modules\arousal\organs\penis.dm" +#include "modular_citadel\code\modules\arousal\organs\testicles.dm" +#include "modular_citadel\code\modules\arousal\organs\vagina.dm" +#include "modular_citadel\code\modules\arousal\organs\womb.dm" +#include "modular_citadel\code\modules\arousal\toys\dildos.dm" +#include "modular_citadel\code\modules\client\client_defines.dm" +#include "modular_citadel\code\modules\client\client_procs.dm" +#include "modular_citadel\code\modules\client\preferences.dm" +#include "modular_citadel\code\modules\client\preferences_savefile.dm" +#include "modular_citadel\code\modules\client\preferences_toggles.dm" +#include "modular_citadel\code\modules\client\loadout\__donator.dm" +#include "modular_citadel\code\modules\client\loadout\_loadout.dm" +#include "modular_citadel\code\modules\client\loadout\_medical.dm" +#include "modular_citadel\code\modules\client\loadout\_security.dm" +#include "modular_citadel\code\modules\client\loadout\_service.dm" +#include "modular_citadel\code\modules\client\loadout\backpack.dm" +#include "modular_citadel\code\modules\client\loadout\glasses.dm" +#include "modular_citadel\code\modules\client\loadout\gloves.dm" +#include "modular_citadel\code\modules\client\loadout\hands.dm" +#include "modular_citadel\code\modules\client\loadout\head.dm" +#include "modular_citadel\code\modules\client\loadout\mask.dm" +#include "modular_citadel\code\modules\client\loadout\neck.dm" +#include "modular_citadel\code\modules\client\loadout\shoes.dm" +#include "modular_citadel\code\modules\client\loadout\suit.dm" +#include "modular_citadel\code\modules\client\loadout\uniform.dm" +#include "modular_citadel\code\modules\client\verbs\who.dm" +#include "modular_citadel\code\modules\clothing\neck.dm" +#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" +#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" +#include "modular_citadel\code\modules\clothing\suits\suits.dm" +#include "modular_citadel\code\modules\clothing\under\trek_under.dm" +#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" +#include "modular_citadel\code\modules\clothing\under\under.dm" +#include "modular_citadel\code\modules\custom_loadout\custom_items.dm" +#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" +#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" +#include "modular_citadel\code\modules\mentor\follow.dm" +#include "modular_citadel\code\modules\mentor\mentor.dm" +#include "modular_citadel\code\modules\mentor\mentor_memo.dm" +#include "modular_citadel\code\modules\mentor\mentor_verbs.dm" +#include "modular_citadel\code\modules\mentor\mentorhelp.dm" +#include "modular_citadel\code\modules\mentor\mentorpm.dm" +#include "modular_citadel\code\modules\mentor\mentorsay.dm" +#include "modular_citadel\code\modules\mob\cit_emotes.dm" +#include "modular_citadel\code\modules\mob\living\damage_procs.dm" +#include "modular_citadel\code\modules\mob\living\living.dm" +#include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" +#include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" +#include "modular_citadel\code\modules\mob\living\carbon\life.dm" +#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" +#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm" +#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "modular_citadel\code\modules\projectiles\gun.dm" +#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm" +#include "modular_citadel\code\modules\projectiles\ammunition\ballistic\smg\smg.dm" +#include "modular_citadel\code\modules\projectiles\boxes_magazines\ammo_boxes.dm" +#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\pistol.dm" +#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\smg\smg.dm" +#include "modular_citadel\code\modules\projectiles\bullets\bullets\smg.dm" +#include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm" +#include "modular_citadel\code\modules\projectiles\guns\toys.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm" +#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm" +#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm" +#include "modular_citadel\code\modules\projectiles\guns\energy\laser.dm" +#include "modular_citadel\code\modules\projectiles\projectiles\reusable.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\astrogen.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\eigentstasium.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\enlargement.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\healing.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\MKUltra.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm" +#include "modular_citadel\code\modules\reagents\chemistry\reagents\SDGF.dm" +#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm" +#include "modular_citadel\code\modules\reagents\objects\clothes.dm" +#include "modular_citadel\code\modules\reagents\objects\items.dm" +#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm" +#include "modular_citadel\interface\skin.dmf" +// END_INCLUDE From 55c0fffd69d8d3ee9570f4370d4f250912938ed4 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 16:20:14 -0700 Subject: [PATCH 42/92] dme --- tgstation.dme | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index c0dc866a47..1ef38195b0 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -70,6 +70,7 @@ #include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\monkeys.dm" +#include "code\__DEFINES\move_force.dm" #include "code\__DEFINES\movespeed_modification.dm" #include "code\__DEFINES\nanites.dm" #include "code\__DEFINES\networks.dm" @@ -391,6 +392,7 @@ #include "code\datums\components\shrink.dm" #include "code\datums\components\sizzle.dm" #include "code\datums\components\slippery.dm" +#include "code\datums\components\spawner.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" #include "code\datums\components\stationloving.dm" @@ -471,6 +473,7 @@ #include "code\datums\diseases\advance\symptoms\youth.dm" #include "code\datums\elements\_element.dm" #include "code\datums\elements\cleaning.dm" +#include "code\datums\elements\dusts_on_catatonia.dm" #include "code\datums\elements\earhealing.dm" #include "code\datums\elements\ghost_role_eligibility.dm" #include "code\datums\elements\wuv.dm" @@ -1070,6 +1073,7 @@ #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" +#include "code\game\objects\structures\spawner.dm" #include "code\game\objects\structures\spirit_board.dm" #include "code\game\objects\structures\stairs.dm" #include "code\game\objects\structures\statues.dm" @@ -1113,6 +1117,7 @@ #include "code\game\objects\structures\crates_lockers\crates\large.dm" #include "code\game\objects\structures\crates_lockers\crates\secure.dm" #include "code\game\objects\structures\crates_lockers\crates\wooden.dm" +#include "code\game\objects\structures\lavaland\necropolis_tendril.dm" #include "code\game\objects\structures\signs\_signs.dm" #include "code\game\objects\structures\signs\signs_departments.dm" #include "code\game\objects\structures\signs\signs_maps.dm" @@ -1471,6 +1476,7 @@ #include "code\modules\atmospherics\machinery\components\binary_devices\dp_vent_pump.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\passive_gate.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\pump.dm" +#include "code\modules\atmospherics\machinery\components\binary_devices\relief_valve.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\valve.dm" #include "code\modules\atmospherics\machinery\components\binary_devices\volume_pump.dm" #include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm" @@ -1479,7 +1485,9 @@ #include "code\modules\atmospherics\machinery\components\unary_devices\cryo.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\heat_exchanger.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\passive_vent.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\portables_connector.dm" +#include "code\modules\atmospherics\machinery\components\unary_devices\relief_valve.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\tank.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm" #include "code\modules\atmospherics\machinery\components\unary_devices\unary_devices.dm" @@ -2012,11 +2020,15 @@ #include "code\modules\lighting\lighting_turf.dm" #include "code\modules\mapping\dmm_suite.dm" #include "code\modules\mapping\map_template.dm" -#include "code\modules\mapping\mapping_helpers.dm" #include "code\modules\mapping\preloader.dm" #include "code\modules\mapping\reader.dm" #include "code\modules\mapping\ruins.dm" #include "code\modules\mapping\verify.dm" +#include "code\modules\mapping\mapping_helpers\_mapping_helpers.dm" +#include "code\modules\mapping\mapping_helpers\baseturf.dm" +#include "code\modules\mapping\mapping_helpers\network_builder\_network_builder.dm" +#include "code\modules\mapping\mapping_helpers\network_builder\atmos_pipe.dm" +#include "code\modules\mapping\mapping_helpers\network_builder\power_cables.dm" #include "code\modules\mapping\space_management\multiz_helpers.dm" #include "code\modules\mapping\space_management\space_level.dm" #include "code\modules\mapping\space_management\space_reservation.dm" @@ -2286,7 +2298,6 @@ #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\simple_animal_vr.dm" #include "code\modules\mob\living\simple_animal\simplemob_vore_values.dm" -#include "code\modules\mob\living\simple_animal\spawner.dm" #include "code\modules\mob\living\simple_animal\status_procs.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" @@ -2391,7 +2402,6 @@ #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\necropolis_tendril.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\elite.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\goliath_broodmother.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\elites\herald.dm" @@ -3090,6 +3100,7 @@ #include "modular_citadel\code\_onclick\hud\stamina.dm" #include "modular_citadel\code\datums\components\souldeath.dm" #include "modular_citadel\code\datums\status_effects\chems.dm" +#include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" From fce8e18cccf8635e4d11928607b3852e8ced6640 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 22:58:20 -0700 Subject: [PATCH 43/92] fix --- code/modules/mob/living/status_procs.dm | 8 ++++---- tgstation.dme | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 829d131ea3..07ad0a5699 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -6,15 +6,15 @@ // override_stam = If this is set, does this amount of stamina damage. /mob/living/proc/DefaultCombatKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) if(!iscarbon(src)) - return Paralyze(amount, updating, ignore_canstun) + return Paralyze(amount, updating, ignore_canknockdown) if(istype(buckled, /obj/vehicle/ridden)) buckled.unbuckle_mob(src) var/drop_items = amount > 80 //80 is cutoff for old item dropping behavior - var/stamdmg = isnull(override_stam)? (amount * 0.25) : override_stam + var/stamdmg = isnull(override_stamdmg)? (amount * 0.25) : override_stamdmg KnockToFloor(drop_items, TRUE, updating) adjustStaminaLoss(stamdmg) - if(!isnull(override_duration)) - Paralyze(override_duration) + if(!isnull(override_hardstun)) + Paralyze(override_hardstun) ////////////////////////////// STUN //////////////////////////////////// diff --git a/tgstation.dme b/tgstation.dme index 1ef38195b0..074a127afb 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3100,7 +3100,6 @@ #include "modular_citadel\code\_onclick\hud\stamina.dm" #include "modular_citadel\code\datums\components\souldeath.dm" #include "modular_citadel\code\datums\status_effects\chems.dm" -#include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" From c0f8c1e68d86ec48700732ffb87748adb7d4ae99 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 23:35:30 -0700 Subject: [PATCH 44/92] ok --- code/modules/mob/living/silicon/ai/ai.dm | 6 +-- modular_citadel/code/modules/admin/topic.dm | 59 +++++++++++++++++++++ tgstation.dme | 2 + 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 modular_citadel/code/modules/admin/topic.dm diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 89894f3674..a95505d6cf 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -18,7 +18,7 @@ icon_state = "ai" move_resist = MOVE_FORCE_OVERPOWERING density = TRUE - mobility_flags = NONE + mobility_flags = ALL status_flags = CANSTUN|CANPUSH a_intent = INTENT_HARM //so we always get pushed instead of trying to swap sight = SEE_TURFS | SEE_MOBS | SEE_OBJS @@ -326,8 +326,8 @@ // AIs are immobile /mob/living/silicon/ai/update_mobility() - mobility_flags = NONE - return NONE + mobility_flags = ALL + return ALL /mob/living/silicon/ai/proc/ai_cancel_call() set category = "Malfunction" diff --git a/modular_citadel/code/modules/admin/topic.dm b/modular_citadel/code/modules/admin/topic.dm new file mode 100644 index 0000000000..26bc902bef --- /dev/null +++ b/modular_citadel/code/modules/admin/topic.dm @@ -0,0 +1,59 @@ +/datum/admins/proc/citaTopic(href, href_list) + if(href_list["makementor"]) + makeMentor(href_list["makementor"]) + else if(href_list["removementor"]) + removeMentor(href_list["removementor"]) + +/datum/admins/proc/makeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin! Cannot mentorize.") + return + if(SSdbcore.Connect()) + var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(query_get_mentor.NextRow()) + to_chat(usr, "[ckey] is already a mentor.") + return + var/datum/DBQuery/query_add_mentor = SSdbcore.NewQuery("INSERT INTO `[format_table_name("mentor")]` (`id`, `ckey`) VALUES (null, '[ckey]')") + if(!query_add_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + new /datum/mentors(ckey) + to_chat(usr, "New mentor added.") + +/datum/admins/proc/removeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") + return + C.remove_mentor_verbs() + C.mentor_datum = null + GLOB.mentors -= C + if(SSdbcore.Connect()) + var/datum/DBQuery/query_remove_mentor = SSdbcore.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(!query_remove_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + to_chat(usr, "Mentor removed.") \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 595ef5eb11..074a127afb 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3103,9 +3103,11 @@ #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" +#include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" +#include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" #include "modular_citadel\code\modules\arousal\genitals.dm" #include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" From c18571425f98e0cbbc45aea6d1fd78854163fc10 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 23:36:57 -0700 Subject: [PATCH 45/92] aa --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 074a127afb..1d64500f75 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3103,7 +3103,6 @@ #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" From 7f17629404622c222a21d21a049cc27187b0b4d7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 23:38:47 -0700 Subject: [PATCH 46/92] O K --- modular_citadel/code/modules/admin/topic.dm | 59 --------------------- tgstation.dme | 1 - 2 files changed, 60 deletions(-) delete mode 100644 modular_citadel/code/modules/admin/topic.dm diff --git a/modular_citadel/code/modules/admin/topic.dm b/modular_citadel/code/modules/admin/topic.dm deleted file mode 100644 index 26bc902bef..0000000000 --- a/modular_citadel/code/modules/admin/topic.dm +++ /dev/null @@ -1,59 +0,0 @@ -/datum/admins/proc/citaTopic(href, href_list) - if(href_list["makementor"]) - makeMentor(href_list["makementor"]) - else if(href_list["removementor"]) - removeMentor(href_list["removementor"]) - -/datum/admins/proc/makeMentor(ckey) - if(!usr.client) - return - if (!check_rights(0)) - return - if(!ckey) - return - var/client/C = GLOB.directory[ckey] - if(C) - if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin! Cannot mentorize.") - return - if(SSdbcore.Connect()) - var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") - if(query_get_mentor.NextRow()) - to_chat(usr, "[ckey] is already a mentor.") - return - var/datum/DBQuery/query_add_mentor = SSdbcore.NewQuery("INSERT INTO `[format_table_name("mentor")]` (`id`, `ckey`) VALUES (null, '[ckey]')") - if(!query_add_mentor.warn_execute()) - return - var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new mentor [ckey]');") - if(!query_add_admin_log.warn_execute()) - return - else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") - new /datum/mentors(ckey) - to_chat(usr, "New mentor added.") - -/datum/admins/proc/removeMentor(ckey) - if(!usr.client) - return - if (!check_rights(0)) - return - if(!ckey) - return - var/client/C = GLOB.directory[ckey] - if(C) - if(check_rights_for(C, R_ADMIN,0)) - to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") - return - C.remove_mentor_verbs() - C.mentor_datum = null - GLOB.mentors -= C - if(SSdbcore.Connect()) - var/datum/DBQuery/query_remove_mentor = SSdbcore.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") - if(!query_remove_mentor.warn_execute()) - return - var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed mentor [ckey]');") - if(!query_add_admin_log.warn_execute()) - return - else - to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") - to_chat(usr, "Mentor removed.") \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 1d64500f75..595ef5eb11 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -3106,7 +3106,6 @@ #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" -#include "modular_citadel\code\modules\admin\topic.dm" #include "modular_citadel\code\modules\arousal\arousal.dm" #include "modular_citadel\code\modules\arousal\genitals.dm" #include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" From 854f1bcbabcb62a2123894ab1f4d0ab1bd612ae3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 19 Jan 2020 23:51:09 -0700 Subject: [PATCH 47/92] fixes --- code/modules/mob/living/living_mobility.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index b379410b7e..7b16331a29 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -104,7 +104,7 @@ mobility_flags |= MOBILITY_MOVE else mobility_flags &= ~MOBILITY_MOVE - var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) || !recoveringstam + var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) && !recoveringstam var/canstand = canstand_involuntary && !resting var/should_be_lying = !canstand From c37abab94e24cb43d0ccb33b4af0151fbf67fc5c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 01:22:52 -0700 Subject: [PATCH 48/92] fix --- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/human/species.dm | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 531bd1ec1c..0f14e8ea86 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -898,7 +898,7 @@ /mob/living/carbon/human/proc/piggyback(mob/living/carbon/target) if(can_piggyback(target)) visible_message("[target] starts to climb onto [src]...") - if(do_after(target, 15, target = src)) + if(do_after(target, 15, target = src, required_mobility_flags = MOBILITY_STAND)) if(can_piggyback(target)) if(target.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) target.visible_message("[target] can't hang onto [src]!") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 35b0cfbfa2..8d04520e4b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1601,7 +1601,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) "\The [user] slaps \the [target]'s ass!",\ "You slap [user == target ? "your" : "\the [target]'s"] ass!",\ "You hear a slap." - ) + ) return FALSE else if(attacker_style && attacker_style.disarm_act(user,target)) return 1 @@ -1831,6 +1831,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) to_chat(user, "You're too exhausted for that.") return + if(user.IsKnockdown() || user.IsParalyzed() || user.IsStun()) + to_chat(user, "You can't seem to force yourself up right now!") + return if(CHECK_MOBILITY(user, MOBILITY_STAND)) to_chat(user, "You can only force yourself up if you're on the ground.") return From 1a0e7de4c228d6b4165365b841bcd6e0da0bcbef Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 01:30:20 -0700 Subject: [PATCH 49/92] s --- code/game/objects/items/toys.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 2c9b189710..77de3377a0 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1081,7 +1081,7 @@ return if(!ishuman(user)) return - if(!CHECK_BITFIELD(user, MOBILITY_USE)) + if(!CHECK_MOBILITY(user, MOBILITY_USE)) return Flip() From 6e31db958ccb2f376838c44172864785cfba3eff Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 20 Jan 2020 12:08:18 -0700 Subject: [PATCH 50/92] fixes --- code/datums/action.dm | 3 ++- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/game/objects/items/toys.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 6 +++--- code/modules/mob/living/living.dm | 9 ++------- code/modules/mob/living/living_mobility.dm | 2 +- .../code/modules/mob/living/carbon/human/human.dm | 1 - 7 files changed, 10 insertions(+), 15 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index e9d0c4ee89..b84be3b809 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -433,7 +433,8 @@ name = "Shift Nerves" /datum/action/item_action/explosive_implant - check_flags = 0 + check_flags = NONE + required_mobility_flags = NONE name = "Activate Explosive Implant" /datum/action/item_action/toggle_research_scanner diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c0b510111f..f333534977 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -448,7 +448,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/mob/living/U = usr //Looking for master was kind of pointless since PDAs don't appear to have one. - if(usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && !href_list["close"]) + if(usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK, FALSE) && !href_list["close"]) add_fingerprint(U) U.set_machine(src) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 77de3377a0..175121cd30 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1075,7 +1075,7 @@ else return ..() -/obj/item/toy/cards/singlecard/attack_self(mob/user) +/obj/item/toy/cards/singlecard/attack_self(mob/living/user) . = ..() if(.) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0f14e8ea86..24f0114914 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -727,8 +727,8 @@ remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, "#000000") cut_overlay(MA) -/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE) - if(incapacitated() || lying ) +/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE, check_resting = TRUE) + if(incapacitated() || (check_resting && resting)) to_chat(src, "You can't do that right now!") return FALSE if(!Adjacent(M) && (M.loc != src)) @@ -876,7 +876,7 @@ return (istype(target) && target.stat == CONSCIOUS) /mob/living/carbon/human/proc/can_be_firemanned(mob/living/carbon/target) - return (ishuman(target) && target.lying) + return (ishuman(target) && !CHECK_MOBILITY(target, MOBILITY_STAND)) /mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target) if(can_be_firemanned(target)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f6443c0c7f..4203f66620 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -368,14 +368,9 @@ death() -/mob/living/incapacitated(ignore_restraints, ignore_grab) - if(stat) +/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, check_immobilized = FALSE) + if(stat || IsUnconscious() || IsStun() || IsParalyzed() || recoveringstam || (check_immobilized && IsImmobilized()) || (!ignore_restraints && restrained(ignore_grab))) return TRUE - if(!CHECK_BITFIELD(mobility_flags, MOBILITY_FLAGS_ANY_INTERACTION)) - return TRUE - if(!ignore_restraints && restrained(ignore_grab)) - return TRUE - return FALSE /mob/living/canUseStorage() if (get_num_arms() <= 0) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 7b16331a29..0239c15179 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -67,7 +67,7 @@ standupwarning = "[src] struggles to stand up." var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." visible_message("[standupwarning]", usernotice, vision_distance = 5) - if(do_after(src, totaldelay, target = src)) + if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_MOVE)) set_resting(FALSE, FALSE) attemptingstandup = FALSE return TRUE diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm index 9993b70d6a..ee88fcb277 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human.dm @@ -25,4 +25,3 @@ if(!has_embedded_objects()) clear_alert("embeddedobject") SEND_SIGNAL(user, COMSIG_CLEAR_MOOD_EVENT, "embedded") - return From 0229db9c61c3fc170433180baff1031fa60c71d5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 18 Feb 2020 18:23:01 -0700 Subject: [PATCH 51/92] trait comsigs --- code/__DEFINES/components.dm | 4 ++++ code/__DEFINES/traits.dm | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index a9daedf4fd..81b397bd6f 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -43,6 +43,10 @@ #define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation #define COMSIG_PARENT_QDELETING "parent_qdeleting" //just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called +/// Trait signals +#define COMPONENT_ADD_TRAIT (1<<0) +#define COMPONENT_REMOVE_TRAIT (1<<1) + // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) #define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index e62dbce38b..4059b7d0ff 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -1,3 +1,5 @@ +#define SIGNAL_TRAIT(trait_ref) "trait [trait_ref]" + // trait accessor defines #define ADD_TRAIT(target, trait, source) \ do { \ @@ -6,12 +8,14 @@ target.status_traits = list(); \ _L = target.status_traits; \ _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_ADD_TRAIT); \ } else { \ _L = target.status_traits; \ if (_L[trait]) { \ _L[trait] |= list(source); \ } else { \ _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_ADD_TRAIT); \ } \ } \ } while (0) @@ -32,6 +36,7 @@ };\ if (!length(_L[trait])) { \ _L -= trait \ + SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_REMOVE_TRAIT); \ }; \ if (!length(_L)) { \ target.status_traits = null \ @@ -47,6 +52,7 @@ _L[_T] &= _S;\ if (!length(_L[_T])) { \ _L -= _T } \ + SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_REMOVE_TRAIT); \ };\ if (!length(_L)) { \ target.status_traits = null\ From 950082f537d50c5d320e72b3c67218b23e84a261 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 18 Feb 2020 20:49:42 -0700 Subject: [PATCH 52/92] k --- code/__DEFINES/traits.dm | 3 +++ code/modules/mob/living/living_mobility.dm | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 4059b7d0ff..58b74e5369 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -144,6 +144,9 @@ #define TRAIT_EXEMPT_HEALTH_EVENTS "exempt-health-events" // mobility flag traits +// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) +// BUT FOR NOW, THESE ARE HOOKED TO DO update_mobility() VIA COMSIG IN living_mobility.dm +// SO IF YOU ADD MORE, BESURE TO UPDATE IT THERE. /// Disallow movement #define TRAIT_MOBILITY_NOMOVE "mobility_nomove" diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 0239c15179..6f3200dc26 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -1,3 +1,11 @@ +/// IN THE FUTURE, WE WILL PROBABLY REFACTOR TO LESSEN THE NEED FOR UPDATE_MOBILITY, BUT FOR NOW.. WE CAN START DOING THIS. +/// FOR BLOCKING MOVEMENT, USE TRAIT_MOBILITY_NOMOVE AS MUCH AS POSSIBLE. IT WILL MAKE REFACTORS IN THE FUTURE EASIER. +/mob/living/ComponentInitialize() + . = ..() + RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOMOVE), .proc/update_mobility) + RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOPICKUP), .proc/update_mobility) + RegisterSignal(src, SIGNAL_TRAIT(TRAIT_MOBILITY_NOUSE), .proc/update_mobility) + //Stuff like mobility flag updates, resting updates, etc. //Force-set resting variable, without needing to resist/etc. @@ -14,7 +22,7 @@ //Force mob to rest, does NOT do stamina damage. //It's really not recommended to use this proc to give feedback, hence why silent is defaulting to true. /mob/living/proc/KnockToFloor(disarm_items = FALSE, silent = TRUE, updating = TRUE) - if(!silent) + if(!silent && !resting) to_chat(src, "You are knocked to the floor!") set_resting(TRUE, TRUE, updating) if(disarm_items) From 4a537d770ddbb1b6e7016b71b408c4e69c3c8597 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 19 Feb 2020 07:20:16 -0700 Subject: [PATCH 53/92] let's make this work --- code/__DEFINES/traits.dm | 6 +++--- .../antagonists/bloodsucker/powers/bs_brawn.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_mobility.dm | 14 ++++++++------ .../modules/mob/living/simple_animal/slime/life.dm | 2 +- code/modules/photography/photos/photo.dm | 6 +++++- 6 files changed, 19 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 58b74e5369..f1cbab9eb8 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -35,7 +35,7 @@ } \ };\ if (!length(_L[trait])) { \ - _L -= trait \ + _L -= trait; \ SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_REMOVE_TRAIT); \ }; \ if (!length(_L)) { \ @@ -51,8 +51,8 @@ for (var/_T in _L) { \ _L[_T] &= _S;\ if (!length(_L[_T])) { \ - _L -= _T } \ - SEND_SIGNAL(target, SIGNAL_TRAIT(trait), COMPONENT_REMOVE_TRAIT); \ + _L -= _T ; \ + SEND_SIGNAL(target, SIGNAL_TRAIT(_T), COMPONENT_REMOVE_TRAIT); } \ };\ if (!length(_L)) { \ target.status_traits = null\ diff --git a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm index 59fc1e9fd8..cf0393ff3a 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm @@ -72,7 +72,7 @@ if(rand(5 + powerlevel) >= 5) target.visible_message("[user] lands a vicious punch, sending [target] away!", \ "[user] has landed a horrifying punch on you, sending you flying!!", null, COMBAT_MESSAGE_RANGE) - target.DefaultCombatKnockdownKnockdown(min(5, rand(10, 10 * powerlevel)) ) + target.DefaultCombatKnockdown(min(5, rand(10, 10 * powerlevel)) ) // Attack! playsound(get_turf(target), 'sound/weapons/punch4.ogg', 60, 1, -1) user.do_attack_animation(target, ATTACK_EFFECT_SMASH) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 41bdc6719e..bae7092eca 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -88,7 +88,7 @@ var/they_can_move = TRUE if(isliving(M)) var/mob/living/L = M - they_can_move = L.canmove //L.mobility_flags & MOBILITY_MOVE + they_can_move = L.mobility_flags & MOBILITY_MOVE //Also spread diseases for(var/thing in diseases) var/datum/disease/D = thing diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 6f3200dc26..3add61f766 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -10,10 +10,13 @@ //Force-set resting variable, without needing to resist/etc. /mob/living/proc/set_resting(new_resting, silent = FALSE, updating = TRUE) - resting = new_resting - if(!silent) - to_chat(src, "You are now [resting? "resting" : "getting up"].") - update_resting(updating) + if(new_resting != resting) + resting = new_resting + if(!silent) + to_chat(src, "You are now [resting? "resting" : "getting up"].") + update_resting(updating) + if(has_gravity() && resting) + playsound(src, "bodyfall", 20, 1) /mob/living/proc/update_resting(update_mobility = TRUE) if(update_mobility) @@ -168,8 +171,7 @@ //Handle lying down, voluntary or involuntary density = !lying if(lying) - if(!lying_prev) - set_resting(TRUE, TRUE, FALSE) + set_resting(TRUE, TRUE, FALSE) if(layer == initial(layer)) //to avoid special cases like hiding larvas. layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs else diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 8097b2224b..d9cf4b2a09 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -41,7 +41,7 @@ AIproc = 1 while(AIproc && stat != DEAD && (attacked || hungry || rabid || buckled)) - if(!canmove) // !(mobility_flags & MOBILITY_MOVE) //also covers buckling. Not sure why buckled is in the while condition if we're going to immediately break, honestly + if(!(mobility_flags & MOBILITY_MOVE)) //also covers buckling. Not sure why buckled is in the while condition if we're going to immediately break, honestly break if(!Target || client) diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index d51f569738..d45a119553 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -84,8 +84,12 @@ set category = "Object" set src in usr + var/mob/living/L = usr + if(!istype(L)) + return + var/n_name = stripped_input(usr, "What would you like to label the photo?", "Photo Labelling", "", MAX_NAME_LEN) //loc.loc check is for making possible renaming photos in clipboards - if(n_name && (loc == usr || loc.loc && loc.loc == usr) && usr.stat == CONSCIOUS && usr.canmove && !usr.restrained()) + if(n_name && (loc == usr || loc.loc && loc.loc == usr) && CHECK_MOBILITY(L, MOBILITY_USE)) name = "photo[(n_name ? text("- '[n_name]'") : null)]" add_fingerprint(usr) From 34fbcd1dc04cf3340bbd30bc6f4bd11904142240 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 19 Feb 2020 07:49:05 -0700 Subject: [PATCH 54/92] fixes --- code/__DEFINES/flags.dm | 4 +++- code/_globalvars/bitfields.dm | 13 ++++++++++++- code/game/atoms_movable.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 4 ++-- code/modules/mob/living/carbon/carbon_movement.dm | 9 +++++++++ code/modules/mob/living/living_mobility.dm | 10 +++++++--- code/modules/mob/living/silicon/silicon_mobility.dm | 4 ++++ .../code/modules/mob/living/carbon/carbon.dm | 10 ---------- tgstation.dme | 1 + 9 files changed, 39 insertions(+), 18 deletions(-) create mode 100644 code/modules/mob/living/silicon/silicon_mobility.dm diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 30a7546f8d..396cf25be1 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -114,6 +114,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define MOBILITY_PULL (1<<6) /// can hold non-nodropped items voluntarily #define MOBILITY_HOLD (1<<7) +/// Can resist out of buckling, grabs, cuffs, etc, in the usual order (buckle --> cuffs --> grab) +#define MOBILITY_RESIST (1<<8) -#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL) +#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_PICKUP | MOBILITY_USE | MOBILITY_UI | MOBILITY_STORAGE | MOBILITY_PULL | MOBILITY_RESIST) #define MOBILITY_FLAGS_ANY_INTERACTION (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_UI | MOBILITY_STORAGE) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index a0139dab83..b4cc682075 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(bitfields, list( "CAN_MASTURBATE_WITH" = CAN_MASTURBATE_WITH, "MASTURBATE_LINKED_ORGAN" = MASTURBATE_LINKED_ORGAN, "CAN_CLIMAX_WITH" = CAN_CLIMAX_WITH - + ), "mob_biotypes" = list ( "MOB_ORGANIC" = MOB_ORGANIC, @@ -227,5 +227,16 @@ GLOBAL_LIST_INIT(bitfields, list( "MOB_EPIC" = MOB_EPIC, "MOB_REPTILE" = MOB_REPTILE, "MOB_SPIRIT" = MOB_SPIRIT + ), + "mobility_flags" = list( + "MOBILITY_MOVE" = MOBILITY_MOVE, + "MOBILITY_STAND" = MOBILITY_STAND, + "MOBILITY_PICKUP" = MOBILITY_PICKUP, + "MOBILITY_USE" = MOBILITY_USE, + "MOBILITY_UI" = MOBILITY_UI, + "MOBILITY_STORAGE" = MOBILITY_STORAGE, + "MOBILITY_PULL" = MOBILITY_PULL, + "MOBILITY_HOLD" = MOBILITY_HOLD, + "MOBILITY_RESIST" = MOBILITY_RESIST ) )) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 99941857e7..1a2001dbc1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -639,7 +639,7 @@ /atom/movable/CanPass(atom/movable/mover, turf/target) if(mover in buckled_mobs) - return 1 + return TRUE return ..() // called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6045c5aa68..8b61390153 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -290,7 +290,7 @@ buckle_cd = O.breakouttime visible_message("[src] attempts to unbuckle [p_them()]self!", \ "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)") - if(do_after(src, buckle_cd, 0, target = src)) + if(do_after(src, buckle_cd, 0, target = src, required_mobility_flags = MOBILITY_RESIST)) if(!buckled) return buckled.user_unbuckle_mob(src,src) @@ -341,7 +341,7 @@ if(!cuff_break) visible_message("[src] attempts to remove [I]!") to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)") - if(do_after(src, breakouttime, 0, target = src)) + if(do_after(src, breakouttime, 0, target = src, required_mobility_flags = MOBILITY_RESIST)) clear_cuffs(I, cuff_break) else to_chat(src, "You fail to remove [I]!") diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 4a99e9c89e..2677de6c2f 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -43,3 +43,12 @@ nutrition -= HUNGER_FACTOR/10 if(m_intent == MOVE_INTENT_RUN) nutrition -= HUNGER_FACTOR/10 + +/mob/living/carbon/CanPass(atom/movable/mover, turf/target) + . = ..() + if(.) + var/mob/living/mobdude = mover + if(istype(mobdude) && !(mobdude in buckled_mobs)) + if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && !CHECK_BITFIELD(mobdude.mobility_flags, MOBILITY_STAND)) + if(!(mobdude.pass_flags & PASSMOB)) + return FALSE diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 3add61f766..175921efe8 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -110,11 +110,18 @@ var/restrained = restrained() var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam + var/canresist = !stun && conscious && !stat_softcrit && !paralyze && (has_arms || ignore_legs || has_legs) && !recoveringstam if(canmove) mobility_flags |= MOBILITY_MOVE else mobility_flags &= ~MOBILITY_MOVE + + if(canresist) + mobility_flags |= MOBILITY_RESIST + else + mobility_flags &= !MOBILITY_RESIST + var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) && !recoveringstam var/canstand = canstand_involuntary && !resting @@ -125,9 +132,6 @@ if(should_be_lying) mobility_flags &= ~MOBILITY_STAND - if(buckled) - if(buckled.buckle_lying != -1) - lying = buckled.buckle_lying if(!lying) //force them on the ground lying = pick(90, 270) else diff --git a/code/modules/mob/living/silicon/silicon_mobility.dm b/code/modules/mob/living/silicon/silicon_mobility.dm new file mode 100644 index 0000000000..8e89242f94 --- /dev/null +++ b/code/modules/mob/living/silicon/silicon_mobility.dm @@ -0,0 +1,4 @@ +/mob/living/silicon/resist_a_rest() + if(!resting) + return FALSE + return set_resting(FALSE) diff --git a/modular_citadel/code/modules/mob/living/carbon/carbon.dm b/modular_citadel/code/modules/mob/living/carbon/carbon.dm index c690925556..44512ac0c7 100644 --- a/modular_citadel/code/modules/mob/living/carbon/carbon.dm +++ b/modular_citadel/code/modules/mob/living/carbon/carbon.dm @@ -8,16 +8,6 @@ //oh no vore time var/voremode = FALSE -/mob/living/carbon/CanPass(atom/movable/mover, turf/target) - . = ..() - if(.) - var/mob/living/mobdude = mover - if(istype(mobdude)) - if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && !CHECK_BITFIELD(mobdude.mobility_flags, MOBILITY_STAND)) - if(!(mobdude.pass_flags & PASSMOB)) - return FALSE - return . - /mob/living/carbon/proc/toggle_combat_mode(forced, silent) if(!forced) if(recoveringstam || stat != CONSCIOUS) diff --git a/tgstation.dme b/tgstation.dme index 05cf6afe28..72f281d29f 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2257,6 +2257,7 @@ #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" #include "code\modules\mob\living\silicon\silicon_defense.dm" +#include "code\modules\mob\living\silicon\silicon_mobility.dm" #include "code\modules\mob\living\silicon\silicon_movement.dm" #include "code\modules\mob\living\silicon\ai\ai.dm" #include "code\modules\mob\living\silicon\ai\ai_defense.dm" From 15c56e6a122e23a4aa8745311e678d47057292aa Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 19 Feb 2020 07:56:16 -0700 Subject: [PATCH 55/92] crlf --- code/datums/world_topic.dm | 380 ++++++++++++++++++------------------- 1 file changed, 190 insertions(+), 190 deletions(-) diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index c7a4663e4a..c2855250f4 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -1,190 +1,190 @@ -// SETUP - -/proc/TopicHandlers() - . = list() - var/list/all_handlers = subtypesof(/datum/world_topic) - for(var/I in all_handlers) - var/datum/world_topic/WT = I - var/keyword = initial(WT.keyword) - if(!keyword) - warning("[WT] has no keyword! Ignoring...") - continue - var/existing_path = .[keyword] - if(existing_path) - warning("[existing_path] and [WT] have the same keyword! Ignoring [WT]...") - else if(keyword == "key") - warning("[WT] has keyword 'key'! Ignoring...") - else - .[keyword] = WT - -// DATUM - -/datum/world_topic - var/keyword - var/log = TRUE - var/key_valid - var/require_comms_key = FALSE - -/datum/world_topic/proc/TryRun(list/input, addr) - key_valid = config && (CONFIG_GET(string/comms_key) == input["key"]) - if(require_comms_key && !key_valid) - return "Bad Key" - input -= "key" - . = Run(input, addr) - if(islist(.)) - . = list2params(.) - -/datum/world_topic/proc/Run(list/input, addr) - CRASH("Run() not implemented for [type]!") - -// TOPICS - -/datum/world_topic/ping - keyword = "ping" - log = FALSE - -/datum/world_topic/ping/Run(list/input, addr) - . = 0 - for (var/client/C in GLOB.clients) - ++. - -/datum/world_topic/playing - keyword = "playing" - log = FALSE - -/datum/world_topic/playing/Run(list/input, addr) - return GLOB.player_list.len - -/datum/world_topic/pr_announce - keyword = "announce" - require_comms_key = TRUE - var/static/list/PRcounts = list() //PR id -> number of times announced this round - -/datum/world_topic/pr_announce/Run(list/input, addr) - var/list/payload = json_decode(input["payload"]) - var/id = "[payload["pull_request"]["id"]]" - if(!PRcounts[id]) - PRcounts[id] = 1 - else - ++PRcounts[id] - if(PRcounts[id] > PR_ANNOUNCEMENTS_PER_ROUND) - return - - var/final_composed = "PR: [input[keyword]]" - for(var/client/C in GLOB.clients) - C.AnnouncePR(final_composed) - -/datum/world_topic/ahelp_relay - keyword = "Ahelp" - require_comms_key = TRUE - -/datum/world_topic/ahelp_relay/Run(list/input, addr) - relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]") - -/datum/world_topic/comms_console - keyword = "Comms_Console" - require_comms_key = TRUE - -/datum/world_topic/comms_console/Run(list/input, addr) - minor_announce(input["message"], "Incoming message from [input["message_sender"]]") - for(var/obj/machinery/computer/communications/CM in GLOB.machines) - CM.overrideCooldown() - -/datum/world_topic/news_report - keyword = "News_Report" - require_comms_key = TRUE - -/datum/world_topic/news_report/Run(list/input, addr) - minor_announce(input["message"], "Breaking Update From [input["message_sender"]]") - -/datum/world_topic/server_hop - keyword = "server_hop" - -/datum/world_topic/server_hop/Run(list/input, addr) - var/expected_key = input[keyword] - for(var/mob/dead/observer/O in GLOB.player_list) - if(O.key == expected_key) - if(O.client?.address == addr) - new /obj/screen/splash(O.client, TRUE) - break - -/datum/world_topic/adminmsg - keyword = "adminmsg" - require_comms_key = TRUE - -/datum/world_topic/adminmsg/Run(list/input, addr) - return IrcPm(input[keyword], input["msg"], input["sender"]) - -/datum/world_topic/namecheck - keyword = "namecheck" - require_comms_key = TRUE - -/datum/world_topic/namecheck/Run(list/input, addr) - //Oh this is a hack, someone refactor the functionality out of the chat command PLS - var/datum/tgs_chat_command/namecheck/NC = new - var/datum/tgs_chat_user/user = new - user.friendly_name = input["sender"] - user.mention = user.friendly_name - return NC.Run(user, input["namecheck"]) - -/datum/world_topic/adminwho - keyword = "adminwho" - require_comms_key = TRUE - -/datum/world_topic/adminwho/Run(list/input, addr) - return ircadminwho() - -/datum/world_topic/status - keyword = "status" - -/datum/world_topic/status/Run(list/input, addr) - if(!key_valid) //If we have a key, then it's safe to trust that this isn't a malicious packet. Also prevents the extra info from leaking - if(GLOB.topic_status_lastcache >= world.time) - return GLOB.topic_status_cache - GLOB.topic_status_lastcache = world.time + 5 - . = list() - .["version"] = GLOB.game_version - .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode - .["respawn"] = config ? !CONFIG_GET(flag/norespawn) : FALSE - .["enter"] = GLOB.enter_allowed - .["vote"] = CONFIG_GET(flag/allow_vote_mode) - .["ai"] = CONFIG_GET(flag/allow_ai) - .["host"] = world.host ? world.host : null - .["round_id"] = GLOB.round_id - .["players"] = GLOB.clients.len - .["revision"] = GLOB.revdata.commit - .["revision_date"] = GLOB.revdata.date - - var/list/adm = get_admin_counts() - var/list/presentmins = adm["present"] - var/list/afkmins = adm["afk"] - .["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho - .["gamestate"] = SSticker.current_state - - .["map_name"] = SSmapping.config?.map_name || "Loading..." - - if(key_valid) - .["active_players"] = get_active_player_count() - if(SSticker.HasRoundStarted()) - .["real_mode"] = SSticker.mode.name - // Key-authed callers may know the truth behind the "secret" - - .["security_level"] = get_security_level() - .["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0 - // Amount of world's ticks in seconds, useful for calculating round duration - - //Time dilation stats. - .["time_dilation_current"] = SStime_track.time_dilation_current - .["time_dilation_avg"] = SStime_track.time_dilation_avg - .["time_dilation_avg_slow"] = SStime_track.time_dilation_avg_slow - .["time_dilation_avg_fast"] = SStime_track.time_dilation_avg_fast - - if(SSshuttle && SSshuttle.emergency) - .["shuttle_mode"] = SSshuttle.emergency.mode - // Shuttle status, see /__DEFINES/stat.dm - .["shuttle_timer"] = SSshuttle.emergency.timeLeft() - // Shuttle timer, in seconds - - if(!key_valid) - GLOB.topic_status_cache = . - +// SETUP + +/proc/TopicHandlers() + . = list() + var/list/all_handlers = subtypesof(/datum/world_topic) + for(var/I in all_handlers) + var/datum/world_topic/WT = I + var/keyword = initial(WT.keyword) + if(!keyword) + warning("[WT] has no keyword! Ignoring...") + continue + var/existing_path = .[keyword] + if(existing_path) + warning("[existing_path] and [WT] have the same keyword! Ignoring [WT]...") + else if(keyword == "key") + warning("[WT] has keyword 'key'! Ignoring...") + else + .[keyword] = WT + +// DATUM + +/datum/world_topic + var/keyword + var/log = TRUE + var/key_valid + var/require_comms_key = FALSE + +/datum/world_topic/proc/TryRun(list/input, addr) + key_valid = config && (CONFIG_GET(string/comms_key) == input["key"]) + if(require_comms_key && !key_valid) + return "Bad Key" + input -= "key" + . = Run(input, addr) + if(islist(.)) + . = list2params(.) + +/datum/world_topic/proc/Run(list/input, addr) + CRASH("Run() not implemented for [type]!") + +// TOPICS + +/datum/world_topic/ping + keyword = "ping" + log = FALSE + +/datum/world_topic/ping/Run(list/input, addr) + . = 0 + for (var/client/C in GLOB.clients) + ++. + +/datum/world_topic/playing + keyword = "playing" + log = FALSE + +/datum/world_topic/playing/Run(list/input, addr) + return GLOB.player_list.len + +/datum/world_topic/pr_announce + keyword = "announce" + require_comms_key = TRUE + var/static/list/PRcounts = list() //PR id -> number of times announced this round + +/datum/world_topic/pr_announce/Run(list/input, addr) + var/list/payload = json_decode(input["payload"]) + var/id = "[payload["pull_request"]["id"]]" + if(!PRcounts[id]) + PRcounts[id] = 1 + else + ++PRcounts[id] + if(PRcounts[id] > PR_ANNOUNCEMENTS_PER_ROUND) + return + + var/final_composed = "PR: [input[keyword]]" + for(var/client/C in GLOB.clients) + C.AnnouncePR(final_composed) + +/datum/world_topic/ahelp_relay + keyword = "Ahelp" + require_comms_key = TRUE + +/datum/world_topic/ahelp_relay/Run(list/input, addr) + relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]") + +/datum/world_topic/comms_console + keyword = "Comms_Console" + require_comms_key = TRUE + +/datum/world_topic/comms_console/Run(list/input, addr) + minor_announce(input["message"], "Incoming message from [input["message_sender"]]") + for(var/obj/machinery/computer/communications/CM in GLOB.machines) + CM.overrideCooldown() + +/datum/world_topic/news_report + keyword = "News_Report" + require_comms_key = TRUE + +/datum/world_topic/news_report/Run(list/input, addr) + minor_announce(input["message"], "Breaking Update From [input["message_sender"]]") + +/datum/world_topic/server_hop + keyword = "server_hop" + +/datum/world_topic/server_hop/Run(list/input, addr) + var/expected_key = input[keyword] + for(var/mob/dead/observer/O in GLOB.player_list) + if(O.key == expected_key) + if(O.client?.address == addr) + new /obj/screen/splash(O.client, TRUE) + break + +/datum/world_topic/adminmsg + keyword = "adminmsg" + require_comms_key = TRUE + +/datum/world_topic/adminmsg/Run(list/input, addr) + return IrcPm(input[keyword], input["msg"], input["sender"]) + +/datum/world_topic/namecheck + keyword = "namecheck" + require_comms_key = TRUE + +/datum/world_topic/namecheck/Run(list/input, addr) + //Oh this is a hack, someone refactor the functionality out of the chat command PLS + var/datum/tgs_chat_command/namecheck/NC = new + var/datum/tgs_chat_user/user = new + user.friendly_name = input["sender"] + user.mention = user.friendly_name + return NC.Run(user, input["namecheck"]) + +/datum/world_topic/adminwho + keyword = "adminwho" + require_comms_key = TRUE + +/datum/world_topic/adminwho/Run(list/input, addr) + return ircadminwho() + +/datum/world_topic/status + keyword = "status" + +/datum/world_topic/status/Run(list/input, addr) + if(!key_valid) //If we have a key, then it's safe to trust that this isn't a malicious packet. Also prevents the extra info from leaking + if(GLOB.topic_status_lastcache >= world.time) + return GLOB.topic_status_cache + GLOB.topic_status_lastcache = world.time + 5 + . = list() + .["version"] = GLOB.game_version + .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode + .["respawn"] = config ? !CONFIG_GET(flag/norespawn) : FALSE + .["enter"] = GLOB.enter_allowed + .["vote"] = CONFIG_GET(flag/allow_vote_mode) + .["ai"] = CONFIG_GET(flag/allow_ai) + .["host"] = world.host ? world.host : null + .["round_id"] = GLOB.round_id + .["players"] = GLOB.clients.len + .["revision"] = GLOB.revdata.commit + .["revision_date"] = GLOB.revdata.date + + var/list/adm = get_admin_counts() + var/list/presentmins = adm["present"] + var/list/afkmins = adm["afk"] + .["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho + .["gamestate"] = SSticker.current_state + + .["map_name"] = SSmapping.config?.map_name || "Loading..." + + if(key_valid) + .["active_players"] = get_active_player_count() + if(SSticker.HasRoundStarted()) + .["real_mode"] = SSticker.mode.name + // Key-authed callers may know the truth behind the "secret" + + .["security_level"] = get_security_level() + .["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0 + // Amount of world's ticks in seconds, useful for calculating round duration + + //Time dilation stats. + .["time_dilation_current"] = SStime_track.time_dilation_current + .["time_dilation_avg"] = SStime_track.time_dilation_avg + .["time_dilation_avg_slow"] = SStime_track.time_dilation_avg_slow + .["time_dilation_avg_fast"] = SStime_track.time_dilation_avg_fast + + if(SSshuttle && SSshuttle.emergency) + .["shuttle_mode"] = SSshuttle.emergency.mode + // Shuttle status, see /__DEFINES/stat.dm + .["shuttle_timer"] = SSshuttle.emergency.timeLeft() + // Shuttle timer, in seconds + + if(!key_valid) + GLOB.topic_status_cache = . + From 9289ca8873d356dbe94f219e7a312156ebbf488c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 19 Feb 2020 08:14:28 -0700 Subject: [PATCH 56/92] fix --- code/modules/food_and_drinks/kitchen_machinery/processor.dm | 2 +- code/modules/projectiles/guns/energy/dueling.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 4c63d4a273..3fa188fb94 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -134,7 +134,7 @@ var/mob/living/L = usr if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE)) - return ..() + return empty() add_fingerprint(usr) diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index 615bb5d939..2f0aa00027 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -334,7 +334,7 @@ L.death() //Die, powergamers. if(DUEL_HUGBOX_NONLETHAL) L.adjustStaminaLoss(200, forced = TRUE) //Die, powergamers x 2 - L.Knockdown(100, override_hardstun = 100) //For good measure. + L.Paralyze(100) //For good measure. //Storage case. /obj/item/storage/lockbox/dueling From e85699df50e5e7e34ff982f638f810ee0f68b9a1 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 14:18:45 -0700 Subject: [PATCH 57/92] compile fix --- code/modules/antagonists/bloodsucker/powers/haste.dm | 4 ++-- code/modules/pool/pool_controller.dm | 2 +- code/modules/pool/pool_main.dm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/antagonists/bloodsucker/powers/haste.dm b/code/modules/antagonists/bloodsucker/powers/haste.dm index 47c93b794e..fdd7d72db9 100644 --- a/code/modules/antagonists/bloodsucker/powers/haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/haste.dm @@ -76,11 +76,11 @@ sleep(speed) UnregisterSignal(owner, COMSIG_MOVABLE_MOVED) hit = null - user.update_canmove() + user.update_mobility() /datum/action/bloodsucker/targeted/haste/DeactivatePower(mob/living/user = owner, mob/living/target) ..() // activate = FALSE - user.update_canmove() + user.update_mobility() /datum/action/bloodsucker/targeted/haste/proc/on_move() for(var/mob/living/L in dview(1, get_turf(owner))) diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm index 681adb0ef3..7d8dc4b02c 100644 --- a/code/modules/pool/pool_controller.dm +++ b/code/modules/pool/pool_controller.dm @@ -111,7 +111,7 @@ /obj/machinery/pool/controller/AltClick(mob/user) . = ..() - if(!isliving(user) || !user.Adjacent(src) || !user.CanReach(src) || user.IsStun() || user.IsKnockdown() || user.incapacitated()) + if(!isliving(user) || !user.Adjacent(src) || !user.CanReach(src) || !CHECK_MOBILITY(user, MOBILITY_USE)) return FALSE visible_message("[user] starts to drain [src]!") draining = TRUE diff --git a/code/modules/pool/pool_main.dm b/code/modules/pool/pool_main.dm index 2b260b5c0b..f72c39c956 100644 --- a/code/modules/pool/pool_main.dm +++ b/code/modules/pool/pool_main.dm @@ -52,7 +52,7 @@ // Mousedrop hook to normal turfs to get out of pools. /turf/open/MouseDrop_T(atom/from, mob/user) // I could make this /open/floor and not have the !istype but ehh - kev - if(isliving(from) && HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !user.IsStun() && !user.IsKnockdown() && !user.incapacitated() && !istype(src, /turf/open/pool)) + if(isliving(from) && HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !CHECK_MOBILITY(user, MOBILITY_USE) && !istype(src, /turf/open/pool)) var/mob/living/L = from //The element only exists if you're on water and a living mob, so let's skip those checks. var/pre_msg From 665e95d8270c701ce1a371f113156f6a0600669e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 15:03:22 -0700 Subject: [PATCH 58/92] compile --- code/modules/pool/pool_controller.dm | 6 ++++-- code/modules/pool/pool_main.dm | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm index 7d8dc4b02c..52be51d1c1 100644 --- a/code/modules/pool/pool_controller.dm +++ b/code/modules/pool/pool_controller.dm @@ -109,9 +109,11 @@ to_chat(user, "The interface on [src] is already too damaged to short it again.") return -/obj/machinery/pool/controller/AltClick(mob/user) +/obj/machinery/pool/controller/AltClick(mob/living/user) . = ..() - if(!isliving(user) || !user.Adjacent(src) || !user.CanReach(src) || !CHECK_MOBILITY(user, MOBILITY_USE)) + if(!istype(user)) + return FALSE + if(!user.Adjacent(src) || !user.CanReach(src) || !CHECK_MOBILITY(user, MOBILITY_USE)) return FALSE visible_message("[user] starts to drain [src]!") draining = TRUE diff --git a/code/modules/pool/pool_main.dm b/code/modules/pool/pool_main.dm index f72c39c956..f557500240 100644 --- a/code/modules/pool/pool_main.dm +++ b/code/modules/pool/pool_main.dm @@ -50,9 +50,11 @@ layer = BELOW_MOB_LAYER // Mousedrop hook to normal turfs to get out of pools. -/turf/open/MouseDrop_T(atom/from, mob/user) +/turf/open/MouseDrop_T(atom/from, mob/living/user) + if(!istype(user)) + return ..() // I could make this /open/floor and not have the !istype but ehh - kev - if(isliving(from) && HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !CHECK_MOBILITY(user, MOBILITY_USE) && !istype(src, /turf/open/pool)) + if(HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !CHECK_MOBILITY(user, MOBILITY_USE) && !istype(src, /turf/open/pool)) var/mob/living/L = from //The element only exists if you're on water and a living mob, so let's skip those checks. var/pre_msg From f2a17b8b35c22455787f885f2d3ca363b6cb1890 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 18:17:07 -0700 Subject: [PATCH 59/92] Update robot_mobility.dm --- code/modules/mob/living/silicon/robot/robot_mobility.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index e2ec8aeb55..61333d553a 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -2,12 +2,12 @@ var/newflags = NONE if(!stat) if(!resting) - newflags |= MOBILITY_STAND + newflags |= (MOBILITY_STAND | MOBILITY_RESIST) if(!locked_down) newflags |= MOBILITY_MOVE newflags |= MOBILITY_PULL if(!locked_down) - newflags |= (MOBILITY_UI | MOBILITY_STORAGE) + newflags |= MOBILITY_FLAGS_ANY_INTERACTION mobility_flags = newflags update_transform() update_action_buttons_icon() From 24ba8b4d0437882c0e5a6dab3f0611adef324575 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 18:17:54 -0700 Subject: [PATCH 60/92] Update haste.dm --- code/modules/antagonists/bloodsucker/powers/haste.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/antagonists/bloodsucker/powers/haste.dm b/code/modules/antagonists/bloodsucker/powers/haste.dm index fdd7d72db9..143950b32f 100644 --- a/code/modules/antagonists/bloodsucker/powers/haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/haste.dm @@ -87,5 +87,6 @@ if(!hit[L] && (L != owner)) hit[L] = TRUE playsound(L, "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1) - L.Knockdown(10 + level_current * 5, override_hardstun = 0.1) + L.DefaultCombatKnockdown(10 + level_current * 5) + L.Paralyze(0.1) L.spin(10, 1) From 5a580dda2054bf2f1ba8b6763cfafdfadb890e5c Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 18:18:37 -0700 Subject: [PATCH 61/92] Update suppression.dm --- code/modules/research/nanites/nanite_programs/suppression.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index 611e9e774e..1c882cead3 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -50,7 +50,7 @@ trigger_cooldown = 300 rogue_types = list(/datum/nanite_program/shocking, /datum/nanite_program/nerve_decay) -/datum/nanite_program/triggered/stun/trigger() +/datum/nanite_program/triggered/stun/trigger(delayed) if(!..()) return host_mob.DefaultCombatKnockdown(80) From b8d60a33bd19a9e5f9ddd624cc33a936be35b989 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 21 Feb 2020 23:29:13 -0700 Subject: [PATCH 62/92] partial fix --- code/modules/mob/living/living_mobility.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 175921efe8..e3e159c179 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -15,8 +15,6 @@ if(!silent) to_chat(src, "You are now [resting? "resting" : "getting up"].") update_resting(updating) - if(has_gravity() && resting) - playsound(src, "bodyfall", 20, 1) /mob/living/proc/update_resting(update_mobility = TRUE) if(update_mobility) @@ -54,6 +52,8 @@ if(ignoretimer) set_resting(FALSE, FALSE) return TRUE + else if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) + to_chat(src, "You are unable to stand up right now.") else var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest if(getStaminaLoss() >= STAMINA_SOFTCRIT) @@ -79,7 +79,7 @@ var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." visible_message("[standupwarning]", usernotice, vision_distance = 5) if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_MOVE)) - set_resting(FALSE, FALSE) + set_resting(FALSE, TRUE) attemptingstandup = FALSE return TRUE else @@ -89,6 +89,7 @@ playsound(src, "bodyfall", 20, 1) return FALSE + //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_mobility() @@ -134,6 +135,8 @@ mobility_flags &= ~MOBILITY_STAND if(!lying) //force them on the ground lying = pick(90, 270) + if(has_gravity() && !buckled) + playsound(src, "bodyfall", 20, 1) else mobility_flags |= MOBILITY_STAND lying = 0 From 424eb48d9ef9e53ac9b31997d4e9379a52b18b70 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 24 Feb 2020 01:59:45 -0700 Subject: [PATCH 63/92] fixes --- code/game/atoms.dm | 10 +- code/game/mecha/mecha.dm | 1 - .../structures/crates_lockers/closets.dm | 2 +- .../living/carbon/alien/humanoid/humanoid.dm | 6 +- code/modules/mob/living/carbon/carbon.dm | 20 ++-- code/modules/mob/living/living.dm | 92 +++++++++++++------ code/modules/mob/living/living_defines.dm | 5 +- code/modules/mob/living/living_mobility.dm | 4 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- .../mob/living/simple_animal/bot/mulebot.dm | 4 +- code/modules/mob/mob_movement.dm | 6 +- 11 files changed, 95 insertions(+), 57 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 4adfdf72d2..d4407dea9e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -28,7 +28,6 @@ var/list/managed_overlays var/datum/proximity_monitor/proximity_monitor - var/buckle_message_cooldown = 0 var/fingerprintslast var/list/filter_data //For handling persistent filters @@ -356,11 +355,12 @@ . = list() SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .) -/atom/proc/relaymove(mob/user) - if(buckle_message_cooldown <= world.time) - buckle_message_cooldown = world.time + 50 +/atom/proc/relaymove(mob/living/user) + if(!istype(user)) + return //why are you buckling nonliving mobs to atoms? + if(user.buckle_message_cooldown <= world.time) + user.buckle_message_cooldown = world.time + 50 to_chat(user, "You can't move while buckled to [src]!") - return /atom/proc/contents_explosion(severity, target) return //For handling the effects of explosions on contents that would not normally be effected diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 3cb3141887..02115d3e30 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -941,7 +941,6 @@ /obj/mecha/container_resist(mob/living/user) go_out() - /obj/mecha/Exited(atom/movable/M, atom/newloc) if(occupant && occupant == M) // The occupant exited the mech without calling go_out() go_out(TRUE, newloc) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f26045f1f0..254296cd38 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -511,7 +511,7 @@ user.visible_message("[src] begins to shake violently!", \ "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ "You hear banging from [src].") - if(do_after(user,(breakout_time), target = src)) + if(do_after(user,(breakout_time), target = src, required_mobility_flags = MOBILITY_RESIST)) if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded) ) return //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 347106f6c1..048b5062ec 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -69,11 +69,11 @@ playsound(src, 'sound/voice/hiss5.ogg', 40, 1, 1) //Alien roars when starting to break free ..(I, cuff_break = INSTANT_CUFFBREAK) -/mob/living/carbon/alien/humanoid/resist_grab(moving_resist) - if(pulledby.grab_state) +/mob/living/carbon/alien/humanoid/do_resist_grab(moving_resist, forced, silent = FALSE) + if(pulledby.grab_state && !silent) visible_message("[src] has broken free of [pulledby]'s grip!") pulledby.stop_pulling() - . = 0 + return TRUE /mob/living/carbon/alien/humanoid/get_standard_pixel_y_offset(lying = 0) if(leaping) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b5f870186a..85d2de9af2 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -281,19 +281,23 @@ return FALSE /mob/living/carbon/resist_buckle() + . = FALSE if(restrained()) - changeNext_move(CLICK_CD_BREAKOUT) - last_special = world.time + CLICK_CD_BREAKOUT + // too soon. + if(last_special > world.time) + return var/buckle_cd = 600 if(handcuffed) var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED) buckle_cd = O.breakouttime + changeNext_move(min(CLICK_CD_BREAKOUT, buckle_cd)) + last_special = world.time + min(CLICK_CD_BREAKOUT, buckle_cd) visible_message("[src] attempts to unbuckle [p_them()]self!", \ "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)") if(do_after(src, buckle_cd, 0, target = src, required_mobility_flags = MOBILITY_RESIST)) if(!buckled) return - buckled.user_unbuckle_mob(src,src) + buckled.user_unbuckle_mob(src, src) else if(src && buckled) to_chat(src, "You fail to unbuckle yourself!") @@ -313,9 +317,12 @@ ExtinguishMob() return -/mob/living/carbon/resist_restraints() +/mob/living/carbon/resist_restraints(ignore_delay = FALSE) var/obj/item/I = null var/type = 0 + if(!ignore_delay && (last_special > world.time)) + to_chat(src, "You don't have the energy to resist your restraints that fast!") + return if(handcuffed) I = handcuffed type = 1 @@ -324,14 +331,13 @@ type = 2 if(I) if(type == 1) - changeNext_move(CLICK_CD_BREAKOUT) + changeNext_move(min(CLICK_CD_BREAKOUT, I.breakouttime)) last_special = world.time + CLICK_CD_BREAKOUT if(type == 2) - changeNext_move(CLICK_CD_RANGE) + changeNext_move(min(CLICK_CD_RANGE, I.breakouttime)) last_special = world.time + CLICK_CD_RANGE cuff_resist(I) - /mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) if(I.item_flags & BEING_REMOVED) to_chat(src, "You're already attempting to remove [I]!") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 76b9135d14..cf39898e23 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -646,66 +646,98 @@ ..(pressure_difference, direction, pressure_resistance_prob_delta) /mob/living/can_resist() - return !((next_move > world.time) || incapacitated(ignore_restraints = TRUE)) + return !((next_move > world.time) || !CHECK_MOBILITY(src, MOBILITY_RESIST)) +/// Resist verb for attempting to get out of whatever is restraining your motion. Gives you resist clickdelay if do_resist() returns true. /mob/living/verb/resist() set name = "Resist" set category = "IC" if(!can_resist()) return - changeNext_move(CLICK_CD_RESIST) + if(do_resist()) + changeNext_move(CLICK_CD_RESIST) + +/// The actual proc for resisting. Return TRUE to give clickdelay. +/mob/living/proc/do_resist() SEND_SIGNAL(src, COMSIG_LIVING_RESIST, src) //resisting grabs (as if it helps anyone...) - if(!restrained(ignore_grab = 1) && pulledby) - visible_message("[src] resists against [pulledby]'s grip!") - log_combat(src, pulledby, "resisted grab") - resist_grab() - return + // only works if you're not cuffed. + if(!restrained(ignore_grab = TRUE) && pulledby) + var/old_gs = pulledby.grab_state + attempt_resist_grab(FALSE) + // Return as we should only resist one thing at a time. Give clickdelay if the grab wasn't passive. + return old_gs? TRUE : FALSE - //unbuckling yourself + // unbuckling yourself. stops the chain if you try it. if(buckled && last_special <= world.time) - resist_buckle() + log_combat(src, buckled, "resisted buckle") + return resist_buckle() - // CIT CHANGE - climbing out of a gut - if(attempt_vr(src,"vore_process_resist",args)) return TRUE + // CIT CHANGE - climbing out of a gut. + if(attempt_vr(src,"vore_process_resist",args)) + //Sure, give clickdelay for anti spam. shouldn't be combat voring anyways. + return TRUE //Breaking out of a container (Locker, sleeper, cryo...) - else if(isobj(loc)) + if(isobj(loc)) var/obj/C = loc C.container_resist(src) + // This shouldn't give clickdelays sometime (e.g. going out of a mech/unwelded and unlocked locker/disposals bin/etc) but there's so many overrides that I am not going to bother right now. + return TRUE - else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) + if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) if(on_fire) resist_fire() //stop, drop, and roll - return - if(resting) //cit change - allows resisting out of resting - resist_a_rest() // ditto - return - if(resist_embedded()) //Citadel Change for embedded removal memes - return - if(last_special <= world.time) - resist_restraints() //trying to remove cuffs. - return + // Give clickdelay + return TRUE + if(resting) //cit change - allows resisting out of resting + resist_a_rest() // ditto + // DO NOT GIVE CLCIKDELAY - resist_a_rest() handles spam prevention. Somewhat. + return FALSE + if(last_special <= world.time) + resist_restraints() //trying to remove cuffs. + // DO NOT GIVE CLICKDELAY - last_special handles this. + return FALSE + if(CHECK_MOBILITY(src, MOBILITY_USE) && resist_embedded()) //Citadel Change for embedded removal memes - requires being able to use items. + // DO NOT GIVE DEFAULT CLICKDELAY - This is a combat action. + changeNext_move(CLICK_CD_MELEE) + return FALSE +/// Proc to resist a grab. moving_resist is TRUE if this began by someone attempting to move. Return FALSE if still grabbed/failed to break out. Use this instead of resist_grab() directly. +/mob/proc/attempt_resist_grab(moving_resist, forced, log = TRUE) + if(!pulledby) //not being grabbed + return TRUE + var/old_gs = pulledby.grab_state //how strong the grab is + var/old_pulled = pulledby + var/success = do_resist_grab(moving_resist, forced) + if(log) + log_combat(src, old_pulled, "[success? "successfully broke free of" : "failed to resist"] a grab of strength [old_gs][moving_resist? " (moving)":""][forced? " (forced)":""]") + return success -/mob/proc/resist_grab(moving_resist) - return 1 //returning 0 means we successfully broke free + /*! + * Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general! + * Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free"). + * Forced does NOT force success! + */ -/mob/living/resist_grab(moving_resist) - . = 1 +/mob/proc/do_resist_grab(moving_resist, forced, silent = FALSE) + return FALSE + +/mob/living/do_resist_grab(moving_resist, forced, silent = FALSE) + . = ..() if(pulledby.grab_state) if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && prob(30/pulledby.grab_state)) visible_message("[src] has broken free of [pulledby]'s grip!") - log_combat(pulledby, src, "broke grab") pulledby.stop_pulling() - return 0 - if(moving_resist && client) //we resisted by trying to move + return TRUE + else if(moving_resist && client) //we resisted by trying to move // this is a horrible system and whoever thought using client instead of mob is okay is not an okay person client.move_delay = world.time + 20 + visible_message("[src] resists against [pulledby]'s grip!") else pulledby.stop_pulling() - return 0 + return TRUE /mob/living/proc/resist_buckle() buckled.user_unbuckle_mob(src,src) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 40ebcc5bca..ed46568489 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -114,4 +114,7 @@ var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob - var/rotate_on_lying = FALSE \ No newline at end of file + var/rotate_on_lying = FALSE + + /// Next world.time when we can get the "you can't move while buckled to [thing]" message. + var/buckle_message_cooldown = 0 diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index e3e159c179..af9db25011 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -78,7 +78,7 @@ standupwarning = "[src] struggles to stand up." var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." visible_message("[standupwarning]", usernotice, vision_distance = 5) - if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_MOVE)) + if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_RESIST)) set_resting(FALSE, TRUE) attemptingstandup = FALSE return TRUE @@ -110,7 +110,7 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !immobilize && !stun && conscious && !paralyze && !buckled && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam + var/canmove = !immobilize && !stun && conscious && !paralyze && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam var/canresist = !stun && conscious && !stat_softcrit && !paralyze && (has_arms || ignore_legs || has_legs) && !recoveringstam if(canmove) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index be67efe87d..3bb5a25671 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -989,7 +989,7 @@ deployed_shell.undeploy() diag_hud_set_deployed() -/mob/living/silicon/ai/resist() +/mob/living/silicon/ai/do_resist() return /mob/living/silicon/ai/spawned/Initialize(mapload, datum/ai_laws/L, mob/target_ai) diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 4ebbfde318..ab7ce96336 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -747,8 +747,8 @@ else return null -/mob/living/simple_animal/bot/mulebot/resist() - ..() +/mob/living/simple_animal/bot/mulebot/do_resist() + . = ..() if(load) unload() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 01573fefbb..071ef1f49e 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -107,9 +107,7 @@ if(P && !ismob(P) && P.density) mob.setDir(turn(mob.dir, 180)) -///Process_Grab() -///Called by client/Move() -///Checks to see if you are being grabbed and if so attemps to break it +/// Process_Grab(): checks for grab, attempts to break if so. Return TRUE to prevent movement. /client/proc/Process_Grab() if(mob.pulledby) if(mob.incapacitated(ignore_restraints = 1)) @@ -120,7 +118,7 @@ to_chat(src, "You're restrained! You can't move!") return TRUE else - return mob.resist_grab(1) + return !mob.attempt_resist_grab(TRUE) ///Process_Incorpmove ///Called by client/Move() From 2eae147e93d31fd9363c6befc280b17f66fb9f13 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 24 Feb 2020 16:51:35 -0700 Subject: [PATCH 64/92] ok --- code/modules/mob/living/carbon/carbon_movement.dm | 9 ++++----- code/modules/mob/living/living_movement.dm | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 2677de6c2f..109473fc31 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -47,8 +47,7 @@ /mob/living/carbon/CanPass(atom/movable/mover, turf/target) . = ..() if(.) - var/mob/living/mobdude = mover - if(istype(mobdude) && !(mobdude in buckled_mobs)) - if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && !CHECK_BITFIELD(mobdude.mobility_flags, MOBILITY_STAND)) - if(!(mobdude.pass_flags & PASSMOB)) - return FALSE + if(isliving(mover)) + var/mob/living/L = mover + if(!lying && L.lying) //they're down but we're not + return (L == buckled) || (L in buckled_mobs) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index e0ea6350d7..3e7a6fde0b 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -13,9 +13,9 @@ if(buckled == mover) return TRUE if(ismob(mover)) - if (mover in buckled_mobs) + if(mover in buckled_mobs) return TRUE - return (!mover.density || !density || lying || (mover.throwing && mover.throwing.thrower == src && !ismob(mover))) + return (!mover.density || !density || (mover.throwing && mover.throwing.thrower == src && !ismob(mover))) /mob/living/toggle_move_intent() . = ..() From 8b06f6d4e919c96d8630a84f786e2c943ec46595 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 25 Feb 2020 03:08:34 -0700 Subject: [PATCH 65/92] message fix --- code/modules/mob/living/living.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index cf39898e23..e26d65adee 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -734,7 +734,7 @@ return TRUE else if(moving_resist && client) //we resisted by trying to move // this is a horrible system and whoever thought using client instead of mob is okay is not an okay person client.move_delay = world.time + 20 - visible_message("[src] resists against [pulledby]'s grip!") + visible_message("[src] resists against [pulledby]'s grip!") else pulledby.stop_pulling() return TRUE From bfb8139225118d0aad9e6394782c8d4d3309a07d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 25 Feb 2020 03:18:37 -0700 Subject: [PATCH 66/92] DefaultCombatknockdown --- code/game/objects/items/devices/radio/electropack.dm | 2 +- code/game/objects/structures/beds_chairs/chair.dm | 4 ++-- code/game/objects/structures/traps.dm | 4 ++-- code/game/turfs/open.dm | 2 +- .../modules/mob/living/simple_animal/hostile/sharks.dm | 2 +- code/modules/pool/pool_main.dm | 10 +++++----- code/modules/pool/pool_structures.dm | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index f0543e75ff..914f2a149a 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -192,7 +192,7 @@ Code: s.set_up(3, 1, L) s.start() - L.Knockdown(100) + L.DefaultCombatKnockdown(100) if(master) master.receive_signal() diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index b6695e0bc6..1cbf829bc6 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -110,7 +110,7 @@ user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") var/C = new item_chair(loc) user.put_in_hands(C) - poordude.Knockdown(20)//rip in peace + poordude.DefaultCombatKnockdown(20)//rip in peace user.adjustStaminaLoss(5) unbuckle_all_mobs(TRUE) qdel(src) @@ -612,4 +612,4 @@ icon_state = "sofacorner" /obj/structure/chair/sofa/corner/handle_layer() //only the armrest/back of this chair should cover the mob. - return \ No newline at end of file + return diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index 6660b797bf..fa9c052aa3 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -147,7 +147,7 @@ /obj/structure/trap/cult/trap_effect(mob/living/L) to_chat(L, "With a crack, the hostile constructs come out of hiding, stunning you!") L.electrocute_act(10, src, safety = TRUE) // electrocute act does a message. - L.Knockdown(20) + L.DefaultCombatKnockdown(20) new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) new /mob/living/simple_animal/hostile/construct/proteon/hostile(loc) - QDEL_IN(src, 30) \ No newline at end of file + QDEL_IN(src, 30) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index c4c7ab2d7b..066249505d 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -272,7 +272,7 @@ var/olddir = C.dir if(!(lube & SLIDE_ICE)) - C.Knockdown(knockdown_amount) + C.DefaultCombatKnockdown(knockdown_amount) C.stop_pulling() else C.Stun(20) diff --git a/code/modules/mob/living/simple_animal/hostile/sharks.dm b/code/modules/mob/living/simple_animal/hostile/sharks.dm index c94e49b286..4e16a1f7bd 100644 --- a/code/modules/mob/living/simple_animal/hostile/sharks.dm +++ b/code/modules/mob/living/simple_animal/hostile/sharks.dm @@ -44,7 +44,7 @@ var/mob/living/carbon/L = . if(istype(L)) if(prob(25)) - L.Knockdown(20) + L.DefaultCombatKnockdown(20) L.visible_message("\the [src] knocks down \the [L]!") diff --git a/code/modules/pool/pool_main.dm b/code/modules/pool/pool_main.dm index f557500240..40aac0e88d 100644 --- a/code/modules/pool/pool_main.dm +++ b/code/modules/pool/pool_main.dm @@ -121,10 +121,10 @@ H.visible_message("[H] falls in the water!", "You fall in the water!") playsound(src, 'sound/effects/splash.ogg', 60, TRUE, 1) - H.Knockdown(20) + H.DefaultCombatKnockdown(20) return else - H.Knockdown(60) + H.DefaultCombatKnockdown(60) H.adjustOxyLoss(5) H.emote("cough") H.visible_message("[H] falls in and takes a drink!", @@ -135,19 +135,19 @@ H.visible_message("[H] falls in the drained pool!", "You fall in the drained pool!") H.adjustBruteLoss(7) - H.Knockdown(80) + H.DefaultCombatKnockdown(80) playsound(src, 'sound/effects/woodhit.ogg', 60, TRUE, 1) else H.visible_message("[H] falls in the drained pool, and cracks his skull!", "You fall in the drained pool, and crack your skull!") H.apply_damage(15, BRUTE, "head") - H.Knockdown(200) // This should hurt. And it does. + H.DefaultCombatKnockdown(200) // This should hurt. And it does. playsound(src, 'sound/effects/woodhit.ogg', 60, TRUE, 1) playsound(src, 'sound/misc/crack.ogg', 100, TRUE) else H.visible_message("[H] falls in the drained pool, but had an helmet!", "You fall in the drained pool, but you had an helmet!") - H.Knockdown(40) + H.DefaultCombatKnockdown(40) playsound(src, 'sound/effects/woodhit.ogg', 60, TRUE, 1) else if(filled) victim.adjustStaminaLoss(1) diff --git a/code/modules/pool/pool_structures.dm b/code/modules/pool/pool_structures.dm index 92350abf44..4cea485237 100644 --- a/code/modules/pool/pool_structures.dm +++ b/code/modules/pool/pool_structures.dm @@ -119,7 +119,7 @@ "You misstep!") var/atom/throw_target = get_edge_target_turf(src, dir) jumper.throw_at(throw_target, 0, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper)) - jumper.Knockdown(100) + jumper.DefaultCombatKnockdown(100) jumper.adjustBruteLoss(10) if(91 to 100) @@ -156,4 +156,4 @@ to_chat(victim, "That was stupid of you..") victim.visible_message("[victim] smashes into the ground!") victim.apply_damage(50) - victim.Knockdown(200) + victim.DefaultCombatKnockdown(200) From 40c2bdf5ee43df6748c0d848ed565a81aa3485a0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 25 Feb 2020 14:06:12 -0700 Subject: [PATCH 67/92] oh boy --- code/game/objects/buckling.dm | 3 +-- code/modules/mob/mob.dm | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 33ed274350..0e14af75a9 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -36,8 +36,7 @@ //procs that handle the actual buckling and unbuckling /atom/movable/proc/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) - if(!buckled_mobs) - buckled_mobs = list() + LAZYINITLIST(buckled_mobs) if(!istype(M)) return FALSE diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1b44dbf568..a523c22d53 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -760,7 +760,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) //You can buckle on mobs if you're next to them since most are dense /mob/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) if(M.buckled) - return 0 + return FALSE var/turf/T = get_turf(src) if(M.loc != T) var/old_density = density @@ -768,7 +768,7 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) var/can_step = step_towards(M, T) density = old_density if(!can_step) - return 0 + return FALSE return ..() //Default buckling shift visual for mobs From 5a320c7933e276ccb82dfe8459547e7af2d0ddd1 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 25 Feb 2020 14:37:40 -0700 Subject: [PATCH 68/92] fugg u --- code/modules/mob/living/carbon/carbon_movement.dm | 11 +++++------ code/modules/mob/living/living_movement.dm | 10 +++++++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 109473fc31..fae8ef56be 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -44,10 +44,9 @@ if(m_intent == MOVE_INTENT_RUN) nutrition -= HUNGER_FACTOR/10 -/mob/living/carbon/CanPass(atom/movable/mover, turf/target) +/mob/living/carbon/can_move_under_living(mob/living/other) . = ..() - if(.) - if(isliving(mover)) - var/mob/living/L = mover - if(!lying && L.lying) //they're down but we're not - return (L == buckled) || (L in buckled_mobs) + if(!.) //we failed earlier don't need to fail again + return + if(!other.lying && lying) //they're up, we're down. + return FALSE diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 3e7a6fde0b..7e5fb4ec7f 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -12,10 +12,14 @@ return (!density || lying) if(buckled == mover) return TRUE + if(!ismob(mover)) + if(mover.throwing?.thrower == src) + return TRUE if(ismob(mover)) if(mover in buckled_mobs) return TRUE - return (!mover.density || !density || (mover.throwing && mover.throwing.thrower == src && !ismob(mover))) + var/mob/living/L = mover //typecast first, check isliving and only check this if living using short circuit + return (!density || (isliving(mover) && !mover.density && L.can_move_under_living(src))) /mob/living/toggle_move_intent() . = ..() @@ -25,6 +29,10 @@ update_move_intent_slowdown() return ..() +/// whether or not we can slide under another living mob. defaults to if we're not dense. CanPass should check "overriding circumstances" like buckled mobs/having PASSMOB flag, etc. +/mob/living/proc/can_move_under_living(mob/living/other) + return !density + /mob/living/proc/update_move_intent_slowdown() var/mod = 0 if(m_intent == MOVE_INTENT_WALK) From 76c1d5ddb9ff5e03543420c5b029cb2ebfc41fce Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 25 Feb 2020 15:40:00 -0700 Subject: [PATCH 69/92] k --- code/modules/mob/living/carbon/carbon.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 85d2de9af2..e5e757a165 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -305,17 +305,19 @@ buckled.user_unbuckle_mob(src,src) /mob/living/carbon/resist_fire() + if(last_special > world.time) + return fire_stacks -= 5 DefaultCombatKnockdown(60, TRUE, TRUE) spin(32,2) visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \ "You stop, drop, and roll!") + last_special = world.time + 30 sleep(30) if(fire_stacks <= 0) visible_message("[src] has successfully extinguished [p_them()]self!", \ "You extinguish yourself.") ExtinguishMob() - return /mob/living/carbon/resist_restraints(ignore_delay = FALSE) var/obj/item/I = null From 872872d9f93e3b14d1966bd792991fb546a13273 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 26 Feb 2020 05:38:34 -0700 Subject: [PATCH 70/92] move stuff --- code/game/atoms_movable.dm | 302 ----------------- code/game/atoms_movement.dm | 306 ++++++++++++++++++ .../mob/living/carbon/human/human_mobility.dm | 42 +++ code/modules/mob/living/living.dm | 60 ---- code/modules/mob/living/living_mobility.dm | 44 +-- code/modules/mob/living/living_movement.dm | 62 +++- .../modules/mob/living/silicon/robot/robot.dm | 73 ----- .../living/silicon/robot/robot_mobility.dm | 1 + .../mob/living/silicon/robot/update_icons.dm | 59 ++++ .../mob/living/silicon/silicon_mobility.dm | 4 - tgstation.dme | 3 +- 11 files changed, 473 insertions(+), 483 deletions(-) create mode 100644 code/game/atoms_movement.dm create mode 100644 code/modules/mob/living/carbon/human/human_mobility.dm create mode 100644 code/modules/mob/living/silicon/robot/update_icons.dm delete mode 100644 code/modules/mob/living/silicon/silicon_mobility.dm diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 1a2001dbc1..95b6d0c214 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -194,160 +194,6 @@ stop_pulling() return -//////////////////////////////////////// -// Here's where we rewrite how byond handles movement except slightly different -// To be removed on step_ conversion -// All this work to prevent a second bump -/atom/movable/Move(atom/newloc, direct=0) - . = FALSE - if(!newloc || newloc == loc) - return - - if(!direct) - direct = get_dir(src, newloc) - setDir(direct) - - if(!loc.Exit(src, newloc)) - return - - if(!newloc.Enter(src, src.loc)) - return - - // Past this is the point of no return - var/atom/oldloc = loc - var/area/oldarea = get_area(oldloc) - var/area/newarea = get_area(newloc) - loc = newloc - . = TRUE - oldloc.Exited(src, newloc) - if(oldarea != newarea) - oldarea.Exited(src, newloc) - - for(var/i in oldloc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Uncrossed(src) - - newloc.Entered(src, oldloc) - if(oldarea != newarea) - newarea.Entered(src, oldloc) - - for(var/i in loc) - if(i == src) // Multi tile objects - continue - var/atom/movable/thing = i - thing.Crossed(src) -// -//////////////////////////////////////// - -/atom/movable/Move(atom/newloc, direct) - var/atom/movable/pullee = pulling - var/turf/T = loc - if(pulling) - if(pullee && get_dist(src, pullee) > 1) - stop_pulling() - - if(pullee && pullee.loc != loc && !isturf(pullee.loc) ) //to be removed once all code that changes an object's loc uses forceMove(). - log_game("DEBUG:[src]'s pull on [pullee] wasn't broken despite [pullee] being in [pullee.loc]. Pull stopped manually.") - stop_pulling() - if(!loc || !newloc) - return FALSE - var/atom/oldloc = loc - - if(loc != newloc) - if (!(direct & (direct - 1))) //Cardinal move - . = ..() - else //Diagonal move, split it into cardinal moves - moving_diagonally = FIRST_DIAG_STEP - var/first_step_dir - // The `&& moving_diagonally` checks are so that a forceMove taking - // place due to a Crossed, Bumped, etc. call will interrupt - // the second half of the diagonal movement, or the second attempt - // at a first half if step() fails because we hit something. - if (direct & NORTH) - if (direct & EAST) - if (step(src, NORTH) && moving_diagonally) - first_step_dir = NORTH - moving_diagonally = SECOND_DIAG_STEP - . = step(src, EAST) - else if (moving_diagonally && step(src, EAST)) - first_step_dir = EAST - moving_diagonally = SECOND_DIAG_STEP - . = step(src, NORTH) - else if (direct & WEST) - if (step(src, NORTH) && moving_diagonally) - first_step_dir = NORTH - moving_diagonally = SECOND_DIAG_STEP - . = step(src, WEST) - else if (moving_diagonally && step(src, WEST)) - first_step_dir = WEST - moving_diagonally = SECOND_DIAG_STEP - . = step(src, NORTH) - else if (direct & SOUTH) - if (direct & EAST) - if (step(src, SOUTH) && moving_diagonally) - first_step_dir = SOUTH - moving_diagonally = SECOND_DIAG_STEP - . = step(src, EAST) - else if (moving_diagonally && step(src, EAST)) - first_step_dir = EAST - moving_diagonally = SECOND_DIAG_STEP - . = step(src, SOUTH) - else if (direct & WEST) - if (step(src, SOUTH) && moving_diagonally) - first_step_dir = SOUTH - moving_diagonally = SECOND_DIAG_STEP - . = step(src, WEST) - else if (moving_diagonally && step(src, WEST)) - first_step_dir = WEST - moving_diagonally = SECOND_DIAG_STEP - . = step(src, SOUTH) - if(moving_diagonally == SECOND_DIAG_STEP) - if(!.) - setDir(first_step_dir) - else if (!inertia_moving) - inertia_next_move = world.time + inertia_move_delay - newtonian_move(direct) - moving_diagonally = 0 - return - - if(!loc || (loc == oldloc && oldloc != newloc)) - last_move = 0 - return - - if(.) - Moved(oldloc, direct) - if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move. - if(pulling.anchored) - stop_pulling() - else - var/pull_dir = get_dir(src, pulling) - //puller and pullee more than one tile away or in diagonal position - if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) - pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position - if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up - stop_pulling() - if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. - pulledby.stop_pulling() - - - last_move = direct - setDir(direct) - if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) - return FALSE - -//Called after a successful Move(). By this point, we've already moved -/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) - SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) - if (!inertia_moving) - inertia_next_move = world.time + inertia_move_delay - newtonian_move(Dir) - if (length(client_mobs_in_contents)) - update_parallax_contents() - - return TRUE - /atom/movable/Destroy(force) QDEL_NULL(proximity_monitor) QDEL_NULL(language_holder) @@ -372,143 +218,6 @@ orbiting.end_orbit(src) orbiting = null -// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly. -// You probably want CanPass() -/atom/movable/Cross(atom/movable/AM) - . = TRUE - SEND_SIGNAL(src, COMSIG_MOVABLE_CROSS, AM) - return CanPass(AM, AM.loc, TRUE) - -//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! -/atom/movable/Crossed(atom/movable/AM, oldloc) - SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) - -/atom/movable/Uncross(atom/movable/AM, atom/newloc) - . = ..() - if(SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSS, AM) & COMPONENT_MOVABLE_BLOCK_UNCROSS) - return FALSE - if(isturf(newloc) && !CheckExit(AM, newloc)) - return FALSE - -/atom/movable/Uncrossed(atom/movable/AM) - SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSSED, AM) - -/atom/movable/Bump(atom/A) - if(!A) - CRASH("Bump was called with no argument.") - SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, A) - . = ..() - if(!QDELETED(throwing)) - throwing.hit_atom(A) - . = TRUE - if(QDELETED(A)) - return - A.Bumped(src) - -/atom/movable/proc/forceMove(atom/destination) - . = FALSE - if(destination) - . = doMove(destination) - else - CRASH("No valid destination passed into forceMove") - -/atom/movable/proc/moveToNullspace() - return doMove(null) - -/atom/movable/proc/doMove(atom/destination) - . = FALSE - if(destination) - if(pulledby) - pulledby.stop_pulling() - var/atom/oldloc = loc - var/same_loc = oldloc == destination - var/area/old_area = get_area(oldloc) - var/area/destarea = get_area(destination) - - loc = destination - moving_diagonally = 0 - - if(!same_loc) - if(oldloc) - oldloc.Exited(src, destination) - if(old_area && old_area != destarea) - old_area.Exited(src, destination) - for(var/atom/movable/AM in oldloc) - AM.Uncrossed(src) - var/turf/oldturf = get_turf(oldloc) - var/turf/destturf = get_turf(destination) - var/old_z = (oldturf ? oldturf.z : null) - var/dest_z = (destturf ? destturf.z : null) - if (old_z != dest_z) - onTransitZ(old_z, dest_z) - destination.Entered(src, oldloc) - if(destarea && old_area != destarea) - destarea.Entered(src, oldloc) - - for(var/atom/movable/AM in destination) - if(AM == src) - continue - AM.Crossed(src, oldloc) - - Moved(oldloc, NONE, TRUE) - . = TRUE - - //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) - else - . = TRUE - if (loc) - var/atom/oldloc = loc - var/area/old_area = get_area(oldloc) - oldloc.Exited(src, null) - if(old_area) - old_area.Exited(src, null) - loc = null - -/atom/movable/proc/onTransitZ(old_z,new_z) - SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) - for (var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. - var/atom/movable/AM = item - AM.onTransitZ(old_z,new_z) - -/atom/movable/proc/setMovetype(newval) - movement_type = newval - -//Called whenever an object moves and by mobs when they attempt to move themselves through space -//And when an object or action applies a force on src, see newtonian_move() below -//Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting -//Mobs should return 1 if they should be able to move of their own volition, see client/Move() in mob_movement.dm -//movement_dir == 0 when stopping or any dir when trying to move -/atom/movable/proc/Process_Spacemove(movement_dir = 0) - if(has_gravity(src)) - return 1 - - if(pulledby) - return 1 - - if(throwing) - return 1 - - if(!isturf(loc)) - return 1 - - if(locate(/obj/structure/lattice) in range(1, get_turf(src))) //Not realistic but makes pushing things in space easier - return 1 - - return 0 - - -/atom/movable/proc/newtonian_move(direction) //Only moves the object if it's under no gravity - if(!loc || Process_Spacemove(0)) - inertia_dir = 0 - return 0 - - inertia_dir = direction - if(!direction) - return 1 - inertia_last_loc = loc - SSspacedrift.processing[src] = src - return 1 - /atom/movable/proc/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) set waitfor = 0 SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum) @@ -610,17 +319,6 @@ SSthrowing.currentrun[src] = TT TT.tick() -/atom/movable/proc/handle_buckled_mob_movement(newloc,direct) - for(var/m in buckled_mobs) - var/mob/living/buckled_mob = m - if(!buckled_mob.Move(newloc, direct)) - forceMove(buckled_mob.loc) - last_move = buckled_mob.last_move - inertia_dir = last_move - buckled_mob.inertia_dir = last_move - return 0 - return 1 - /atom/movable/proc/force_pushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) return FALSE diff --git a/code/game/atoms_movement.dm b/code/game/atoms_movement.dm new file mode 100644 index 0000000000..f862b87b7a --- /dev/null +++ b/code/game/atoms_movement.dm @@ -0,0 +1,306 @@ +// File for movement procs for atom/movable + + +//////////////////////////////////////// +// Here's where we rewrite how byond handles movement except slightly different +// To be removed on step_ conversion +// All this work to prevent a second bump +/atom/movable/Move(atom/newloc, direct=0) + . = FALSE + if(!newloc || newloc == loc) + return + + if(!direct) + direct = get_dir(src, newloc) + setDir(direct) + + if(!loc.Exit(src, newloc)) + return + + if(!newloc.Enter(src, src.loc)) + return + + // Past this is the point of no return + var/atom/oldloc = loc + var/area/oldarea = get_area(oldloc) + var/area/newarea = get_area(newloc) + loc = newloc + . = TRUE + oldloc.Exited(src, newloc) + if(oldarea != newarea) + oldarea.Exited(src, newloc) + + for(var/i in oldloc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Uncrossed(src) + + newloc.Entered(src, oldloc) + if(oldarea != newarea) + newarea.Entered(src, oldloc) + + for(var/i in loc) + if(i == src) // Multi tile objects + continue + var/atom/movable/thing = i + thing.Crossed(src) +// +//////////////////////////////////////// + +/atom/movable/Move(atom/newloc, direct) + var/atom/movable/pullee = pulling + var/turf/T = loc + if(pulling) + if(pullee && get_dist(src, pullee) > 1) + stop_pulling() + + if(pullee && pullee.loc != loc && !isturf(pullee.loc) ) //to be removed once all code that changes an object's loc uses forceMove(). + log_game("DEBUG:[src]'s pull on [pullee] wasn't broken despite [pullee] being in [pullee.loc]. Pull stopped manually.") + stop_pulling() + if(!loc || !newloc) + return FALSE + var/atom/oldloc = loc + + if(loc != newloc) + if (!(direct & (direct - 1))) //Cardinal move + . = ..() + else //Diagonal move, split it into cardinal moves + moving_diagonally = FIRST_DIAG_STEP + var/first_step_dir + // The `&& moving_diagonally` checks are so that a forceMove taking + // place due to a Crossed, Bumped, etc. call will interrupt + // the second half of the diagonal movement, or the second attempt + // at a first half if step() fails because we hit something. + if (direct & NORTH) + if (direct & EAST) + if (step(src, NORTH) && moving_diagonally) + first_step_dir = NORTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, EAST) + else if (moving_diagonally && step(src, EAST)) + first_step_dir = EAST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, NORTH) + else if (direct & WEST) + if (step(src, NORTH) && moving_diagonally) + first_step_dir = NORTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, WEST) + else if (moving_diagonally && step(src, WEST)) + first_step_dir = WEST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, NORTH) + else if (direct & SOUTH) + if (direct & EAST) + if (step(src, SOUTH) && moving_diagonally) + first_step_dir = SOUTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, EAST) + else if (moving_diagonally && step(src, EAST)) + first_step_dir = EAST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, SOUTH) + else if (direct & WEST) + if (step(src, SOUTH) && moving_diagonally) + first_step_dir = SOUTH + moving_diagonally = SECOND_DIAG_STEP + . = step(src, WEST) + else if (moving_diagonally && step(src, WEST)) + first_step_dir = WEST + moving_diagonally = SECOND_DIAG_STEP + . = step(src, SOUTH) + if(moving_diagonally == SECOND_DIAG_STEP) + if(!.) + setDir(first_step_dir) + else if (!inertia_moving) + inertia_next_move = world.time + inertia_move_delay + newtonian_move(direct) + moving_diagonally = 0 + return + + if(!loc || (loc == oldloc && oldloc != newloc)) + last_move = 0 + return + + if(.) + Moved(oldloc, direct) + + if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move. + if(pulling.anchored) + stop_pulling() + else + var/pull_dir = get_dir(src, pulling) + //puller and pullee more than one tile away or in diagonal position + if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) + pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position + if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up + stop_pulling() + if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. + pulledby.stop_pulling() + + last_move = direct + setDir(direct) + if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) + return FALSE + +/atom/movable/proc/handle_buckled_mob_movement(newloc,direct) + for(var/m in buckled_mobs) + var/mob/living/buckled_mob = m + if(!buckled_mob.Move(newloc, direct)) + forceMove(buckled_mob.loc) + last_move = buckled_mob.last_move + inertia_dir = last_move + buckled_mob.inertia_dir = last_move + return FALSE + return TRUE + +//Called after a successful Move(). By this point, we've already moved +/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE) + SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced) + if (!inertia_moving) + inertia_next_move = world.time + inertia_move_delay + newtonian_move(Dir) + if (length(client_mobs_in_contents)) + update_parallax_contents() + + return TRUE + + +// Make sure you know what you're doing if you call this, this is intended to only be called by byond directly. +// You probably want CanPass() +/atom/movable/Cross(atom/movable/AM) + . = TRUE + SEND_SIGNAL(src, COMSIG_MOVABLE_CROSS, AM) + return CanPass(AM, AM.loc, TRUE) + +//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called! +/atom/movable/Crossed(atom/movable/AM, oldloc) + SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM) + +/atom/movable/Uncross(atom/movable/AM, atom/newloc) + . = ..() + if(SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSS, AM) & COMPONENT_MOVABLE_BLOCK_UNCROSS) + return FALSE + if(isturf(newloc) && !CheckExit(AM, newloc)) + return FALSE + +/atom/movable/Uncrossed(atom/movable/AM) + SEND_SIGNAL(src, COMSIG_MOVABLE_UNCROSSED, AM) + +/atom/movable/Bump(atom/A) + if(!A) + CRASH("Bump was called with no argument.") + SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, A) + . = ..() + if(!QDELETED(throwing)) + throwing.hit_atom(A) + . = TRUE + if(QDELETED(A)) + return + A.Bumped(src) + +/atom/movable/proc/onTransitZ(old_z,new_z) + SEND_SIGNAL(src, COMSIG_MOVABLE_Z_CHANGED, old_z, new_z) + for (var/item in src) // Notify contents of Z-transition. This can be overridden IF we know the items contents do not care. + var/atom/movable/AM = item + AM.onTransitZ(old_z,new_z) + +/atom/movable/proc/setMovetype(newval) + movement_type = newval + +///////////// FORCED MOVEMENT ///////////// + +/atom/movable/proc/forceMove(atom/destination) + . = FALSE + if(destination) + . = doMove(destination) + else + CRASH("No valid destination passed into forceMove") + +/atom/movable/proc/moveToNullspace() + return doMove(null) + +/atom/movable/proc/doMove(atom/destination) + . = FALSE + if(destination) + if(pulledby) + pulledby.stop_pulling() + var/atom/oldloc = loc + var/same_loc = oldloc == destination + var/area/old_area = get_area(oldloc) + var/area/destarea = get_area(destination) + + loc = destination + moving_diagonally = 0 + + if(!same_loc) + if(oldloc) + oldloc.Exited(src, destination) + if(old_area && old_area != destarea) + old_area.Exited(src, destination) + for(var/atom/movable/AM in oldloc) + AM.Uncrossed(src) + var/turf/oldturf = get_turf(oldloc) + var/turf/destturf = get_turf(destination) + var/old_z = (oldturf ? oldturf.z : null) + var/dest_z = (destturf ? destturf.z : null) + if (old_z != dest_z) + onTransitZ(old_z, dest_z) + destination.Entered(src, oldloc) + if(destarea && old_area != destarea) + destarea.Entered(src, oldloc) + + for(var/atom/movable/AM in destination) + if(AM == src) + continue + AM.Crossed(src, oldloc) + + Moved(oldloc, NONE, TRUE) + . = TRUE + + //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) + else + . = TRUE + if (loc) + var/atom/oldloc = loc + var/area/old_area = get_area(oldloc) + oldloc.Exited(src, null) + if(old_area) + old_area.Exited(src, null) + loc = null + +//Called whenever an object moves and by mobs when they attempt to move themselves through space +//And when an object or action applies a force on src, see newtonian_move() below +//Return 0 to have src start/keep drifting in a no-grav area and 1 to stop/not start drifting +//Mobs should return 1 if they should be able to move of their own volition, see client/Move() in mob_movement.dm +//movement_dir == 0 when stopping or any dir when trying to move +/atom/movable/proc/Process_Spacemove(movement_dir = 0) + if(has_gravity(src)) + return 1 + + if(pulledby) + return 1 + + if(throwing) + return 1 + + if(!isturf(loc)) + return 1 + + if(locate(/obj/structure/lattice) in range(1, get_turf(src))) //Not realistic but makes pushing things in space easier + return 1 + + return 0 + +/atom/movable/proc/newtonian_move(direction) //Only moves the object if it's under no gravity + if(!loc || Process_Spacemove(0)) + inertia_dir = 0 + return 0 + + inertia_dir = direction + if(!direction) + return 1 + inertia_last_loc = loc + SSspacedrift.processing[src] = src + return 1 diff --git a/code/modules/mob/living/carbon/human/human_mobility.dm b/code/modules/mob/living/carbon/human/human_mobility.dm new file mode 100644 index 0000000000..c9074e5797 --- /dev/null +++ b/code/modules/mob/living/carbon/human/human_mobility.dm @@ -0,0 +1,42 @@ +/mob/living/carbon/human/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) + if(!resting || stat || attemptingstandup) + return FALSE + if(ignoretimer) + set_resting(FALSE, FALSE) + return TRUE + else if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) + to_chat(src, "You are unable to stand up right now.") + else + var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest + if(getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(src, "You're too exhausted to get up!") + return FALSE + attemptingstandup = TRUE + var/health_deficiency = max((maxHealth - (health - getStaminaLoss()))*0.5, 0) + if(!has_gravity()) + health_deficiency = health_deficiency*0.2 + totaldelay += health_deficiency + var/standupwarning = "[src] and everyone around them should probably yell at the dev team" + switch(health_deficiency) + if(-INFINITY to 10) + standupwarning = "[src] stands right up!" + if(10 to 35) + standupwarning = "[src] tries to stand up." + if(35 to 60) + standupwarning = "[src] slowly pushes [p_them()]self upright." + if(60 to 80) + standupwarning = "[src] weakly attempts to stand up." + if(80 to INFINITY) + standupwarning = "[src] struggles to stand up." + var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." + visible_message("[standupwarning]", usernotice, vision_distance = 5) + if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_RESIST)) + set_resting(FALSE, TRUE) + attemptingstandup = FALSE + return TRUE + else + visible_message("[src] falls right back down.", "You fall right back down.") + attemptingstandup = FALSE + if(has_gravity()) + playsound(src, "bodyfall", 20, 1) + return FALSE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e26d65adee..1bd35bb867 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -550,30 +550,6 @@ var/obj/item/item = i SEND_SIGNAL(item, COMSIG_ITEM_WEARERCROSSED, AM) -/mob/living/Move(atom/newloc, direct) - if (buckled && buckled.loc != newloc) //not updating position - if (!buckled.anchored) - return buckled.Move(newloc, direct) - else - return 0 - - var/old_direction = dir - var/turf/T = loc - - if(pulling) - update_pull_movespeed() - - . = ..() - - if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. - pulledby.stop_pulling() - - if(active_storage && !(CanReach(active_storage.parent,view_only = TRUE))) - active_storage.close(src) - - if(lying && !buckled && prob(getBruteLoss()*200/maxHealth)) - makeTrail(newloc, T, old_direction) - /mob/living/proc/makeTrail(turf/target_turf, turf/start, direction) if(!has_gravity()) return @@ -1115,42 +1091,6 @@ return LINGHIVE_LINK return LINGHIVE_NONE -/mob/living/forceMove(atom/destination) - stop_pulling() - if(buckled) - buckled.unbuckle_mob(src, force = TRUE) - if(has_buckled_mobs()) - unbuckle_all_mobs(force = TRUE) - . = ..() - if(.) - if(client) - reset_perspective() - update_mobility() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. - -/mob/living/proc/update_z(new_z) // 1+ to register, null to unregister - if(isnull(new_z) && audiovisual_redirect) - return - if (registered_z != new_z) - if (registered_z) - SSmobs.clients_by_zlevel[registered_z] -= src - if (client || audiovisual_redirect) - if (new_z) - SSmobs.clients_by_zlevel[new_z] += src - for (var/I in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 - var/mob/living/simple_animal/SA = SSidlenpcpool.idle_mobs_by_zlevel[new_z][I] - if (SA) - SA.toggle_ai(AI_ON) // Guarantees responsiveness for when appearing right next to mobs - else - SSidlenpcpool.idle_mobs_by_zlevel[new_z] -= SA - - registered_z = new_z - else - registered_z = null - -/mob/living/onTransitZ(old_z,new_z) - ..() - update_z(new_z) - /mob/living/MouseDrop(mob/over) . = ..() var/mob/living/user = usr diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index af9db25011..6222ee4ab7 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -47,48 +47,8 @@ resist_a_rest() /mob/living/proc/resist_a_rest(automatic = FALSE, ignoretimer = FALSE) //Lets mobs resist out of resting. Major QOL change with combat reworks. - if(!resting || stat || attemptingstandup) - return FALSE - if(ignoretimer) - set_resting(FALSE, FALSE) - return TRUE - else if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) - to_chat(src, "You are unable to stand up right now.") - else - var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest - if(getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(src, "You're too exhausted to get up!") - return FALSE - attemptingstandup = TRUE - var/health_deficiency = max((maxHealth - (health - getStaminaLoss()))*0.5, 0) - if(!has_gravity()) - health_deficiency = health_deficiency*0.2 - totaldelay += health_deficiency - var/standupwarning = "[src] and everyone around them should probably yell at the dev team" - switch(health_deficiency) - if(-INFINITY to 10) - standupwarning = "[src] stands right up!" - if(10 to 35) - standupwarning = "[src] tries to stand up." - if(35 to 60) - standupwarning = "[src] slowly pushes [p_them()]self upright." - if(60 to 80) - standupwarning = "[src] weakly attempts to stand up." - if(80 to INFINITY) - standupwarning = "[src] struggles to stand up." - var/usernotice = automatic ? "You are now getting up. (Auto)" : "You are now getting up." - visible_message("[standupwarning]", usernotice, vision_distance = 5) - if(do_after(src, totaldelay, target = src, required_mobility_flags = MOBILITY_RESIST)) - set_resting(FALSE, TRUE) - attemptingstandup = FALSE - return TRUE - else - visible_message("[src] falls right back down.", "You fall right back down.") - attemptingstandup = FALSE - if(has_gravity()) - playsound(src, "bodyfall", 20, 1) - return FALSE - + set_resting(FALSE, TRUE) + return TRUE //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 7e5fb4ec7f..c5f48880ba 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -58,4 +58,64 @@ remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING) /mob/living/canZMove(dir, turf/target) - return can_zTravel(target, dir) && (movement_type & FLYING) \ No newline at end of file + return can_zTravel(target, dir) && (movement_type & FLYING) + +/mob/living/Move(atom/newloc, direct) + if (buckled && buckled.loc != newloc) //not updating position + if (!buckled.anchored) + return buckled.Move(newloc, direct) + else + return 0 + + var/old_direction = dir + var/turf/T = loc + + if(pulling) + update_pull_movespeed() + + . = ..() + + if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. + pulledby.stop_pulling() + + if(active_storage && !(CanReach(active_storage.parent,view_only = TRUE))) + active_storage.close(src) + + if(lying && !buckled && prob(getBruteLoss()*200/maxHealth)) + makeTrail(newloc, T, old_direction) + +/mob/living/forceMove(atom/destination) + stop_pulling() + if(buckled) + buckled.unbuckle_mob(src, force = TRUE) + if(has_buckled_mobs()) + unbuckle_all_mobs(force = TRUE) + . = ..() + if(.) + if(client) + reset_perspective() + update_mobility() //if the mob was asleep inside a container and then got forceMoved out we need to make them fall. + +/mob/living/proc/update_z(new_z) // 1+ to register, null to unregister + if(isnull(new_z) && audiovisual_redirect) + return + if (registered_z != new_z) + if (registered_z) + SSmobs.clients_by_zlevel[registered_z] -= src + if (client || audiovisual_redirect) + if (new_z) + SSmobs.clients_by_zlevel[new_z] += src + for (var/I in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 + var/mob/living/simple_animal/SA = SSidlenpcpool.idle_mobs_by_zlevel[new_z][I] + if (SA) + SA.toggle_ai(AI_ON) // Guarantees responsiveness for when appearing right next to mobs + else + SSidlenpcpool.idle_mobs_by_zlevel[new_z] -= SA + + registered_z = new_z + else + registered_z = null + +/mob/living/onTransitZ(old_z,new_z) + ..() + update_z(new_z) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 136ba5af27..d4f520a611 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -655,65 +655,6 @@ /mob/living/silicon/robot/regenerate_icons() return update_icons() -/mob/living/silicon/robot/update_icons() - cut_overlays() - icon_state = module.cyborg_base_icon - //Citadel changes start here - Allows modules to use different icon files, and allows modules to specify a pixel offset - icon = (module.cyborg_icon_override ? module.cyborg_icon_override : initial(icon)) - if(laser) - add_overlay("laser")//Is this even used??? - Yes borg/inventory.dm - if(disabler) - add_overlay("disabler")//ditto - - if(sleeper_g && module.sleeper_overlay) - add_overlay("[module.sleeper_overlay]_g[sleeper_nv ? "_nv" : ""]") - if(sleeper_r && module.sleeper_overlay) - add_overlay("[module.sleeper_overlay]_r[sleeper_nv ? "_nv" : ""]") - if(stat == DEAD && module.has_snowflake_deadsprite) - icon_state = "[module.cyborg_base_icon]-wreck" - - if(module.cyborg_pixel_offset) - pixel_x = module.cyborg_pixel_offset - //End of citadel changes - - if(module.cyborg_base_icon == "robot") - icon = 'icons/mob/robots.dmi' - pixel_x = initial(pixel_x) - if(stat != DEAD && !(IsUnconscious() ||IsStun() || IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. - if(!eye_lights) - eye_lights = new() - if(lamp_intensity > 2) - eye_lights.icon_state = "[module.special_light_key ? "[module.special_light_key]":"[module.cyborg_base_icon]"]_l" - else - eye_lights.icon_state = "[module.special_light_key ? "[module.special_light_key]":"[module.cyborg_base_icon]"]_e[is_servant_of_ratvar(src) ? "_r" : ""]" - eye_lights.icon = icon - add_overlay(eye_lights) - - if(opened) - if(wiresexposed) - add_overlay("ov-opencover +w") - else if(cell) - add_overlay("ov-opencover +c") - else - add_overlay("ov-opencover -c") - if(hat) - var/mutable_appearance/head_overlay = hat.build_worn_icon(state = hat.icon_state, default_layer = 20, default_icon_file = 'icons/mob/head.dmi') - head_overlay.pixel_y += hat_offset - add_overlay(head_overlay) - update_fire() - - if(client && stat != DEAD && module.dogborg == TRUE) - if(resting) - if(sitting) - icon_state = "[module.cyborg_base_icon]-sit" - if(bellyup) - icon_state = "[module.cyborg_base_icon]-bellyup" - else if(!sitting && !bellyup) - icon_state = "[module.cyborg_base_icon]-rest" - cut_overlays() - else - icon_state = "[module.cyborg_base_icon]" - /mob/living/silicon/robot/proc/self_destruct() if(emagged) if(mmi) @@ -1268,20 +1209,6 @@ for(var/i in connected_ai.aicamera.stored) aicamera.stored[i] = TRUE -/mob/living/silicon/robot/lay_down() - . = ..() - update_mobility() - -/mob/living/silicon/robot/update_mobility() - . = ..() - if(client && stat != DEAD && dogborg == FALSE) - if(resting) - cut_overlays() - icon_state = "[module.cyborg_base_icon]-rest" - else - icon_state = "[module.cyborg_base_icon]" - update_icons() - /mob/living/silicon/robot/proc/rest_style() set name = "Switch Rest Style" set category = "Robot Commands" diff --git a/code/modules/mob/living/silicon/robot/robot_mobility.dm b/code/modules/mob/living/silicon/robot/robot_mobility.dm index 61333d553a..c5863b523f 100644 --- a/code/modules/mob/living/silicon/robot/robot_mobility.dm +++ b/code/modules/mob/living/silicon/robot/robot_mobility.dm @@ -11,4 +11,5 @@ mobility_flags = newflags update_transform() update_action_buttons_icon() + update_icons() return mobility_flags diff --git a/code/modules/mob/living/silicon/robot/update_icons.dm b/code/modules/mob/living/silicon/robot/update_icons.dm new file mode 100644 index 0000000000..8d40e35706 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/update_icons.dm @@ -0,0 +1,59 @@ +/// this is bad code +/mob/living/silicon/robot/update_icons() + cut_overlays() + icon_state = module.cyborg_base_icon + //Citadel changes start here - Allows modules to use different icon files, and allows modules to specify a pixel offset + icon = (module.cyborg_icon_override ? module.cyborg_icon_override : initial(icon)) + if(laser) + add_overlay("laser")//Is this even used??? - Yes borg/inventory.dm + if(disabler) + add_overlay("disabler")//ditto + + if(sleeper_g && module.sleeper_overlay) + add_overlay("[module.sleeper_overlay]_g[sleeper_nv ? "_nv" : ""]") + if(sleeper_r && module.sleeper_overlay) + add_overlay("[module.sleeper_overlay]_r[sleeper_nv ? "_nv" : ""]") + if(stat == DEAD && module.has_snowflake_deadsprite) + icon_state = "[module.cyborg_base_icon]-wreck" + + if(module.cyborg_pixel_offset) + pixel_x = module.cyborg_pixel_offset + //End of citadel changes + + if(module.cyborg_base_icon == "robot") + icon = 'icons/mob/robots.dmi' + pixel_x = initial(pixel_x) + if(stat != DEAD && !(IsUnconscious() ||IsStun() || IsKnockdown() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. + if(!eye_lights) + eye_lights = new() + if(lamp_intensity > 2) + eye_lights.icon_state = "[module.special_light_key ? "[module.special_light_key]":"[module.cyborg_base_icon]"]_l" + else + eye_lights.icon_state = "[module.special_light_key ? "[module.special_light_key]":"[module.cyborg_base_icon]"]_e[is_servant_of_ratvar(src) ? "_r" : ""]" + eye_lights.icon = icon + add_overlay(eye_lights) + + if(opened) + if(wiresexposed) + add_overlay("ov-opencover +w") + else if(cell) + add_overlay("ov-opencover +c") + else + add_overlay("ov-opencover -c") + if(hat) + var/mutable_appearance/head_overlay = hat.build_worn_icon(state = hat.icon_state, default_layer = 20, default_icon_file = 'icons/mob/head.dmi') + head_overlay.pixel_y += hat_offset + add_overlay(head_overlay) + update_fire() + + if(client && stat != DEAD && module.dogborg == TRUE) + if(resting) + if(sitting) + icon_state = "[module.cyborg_base_icon]-sit" + if(bellyup) + icon_state = "[module.cyborg_base_icon]-bellyup" + else if(!sitting && !bellyup) + icon_state = "[module.cyborg_base_icon]-rest" + cut_overlays() + else + icon_state = "[module.cyborg_base_icon]" diff --git a/code/modules/mob/living/silicon/silicon_mobility.dm b/code/modules/mob/living/silicon/silicon_mobility.dm deleted file mode 100644 index 8e89242f94..0000000000 --- a/code/modules/mob/living/silicon/silicon_mobility.dm +++ /dev/null @@ -1,4 +0,0 @@ -/mob/living/silicon/resist_a_rest() - if(!resting) - return FALSE - return set_resting(FALSE) diff --git a/tgstation.dme b/tgstation.dme index 7ea28a8dae..69eac2b236 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2220,6 +2220,7 @@ #include "code\modules\mob\living\carbon\human\human_defense.dm" #include "code\modules\mob\living\carbon\human\human_defines.dm" #include "code\modules\mob\living\carbon\human\human_helpers.dm" +#include "code\modules\mob\living\carbon\human\human_mobility.dm" #include "code\modules\mob\living\carbon\human\human_movement.dm" #include "code\modules\mob\living\carbon\human\inventory.dm" #include "code\modules\mob\living\carbon\human\life.dm" @@ -2268,7 +2269,6 @@ #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" #include "code\modules\mob\living\silicon\silicon_defense.dm" -#include "code\modules\mob\living\silicon\silicon_mobility.dm" #include "code\modules\mob\living\silicon\silicon_movement.dm" #include "code\modules\mob\living\silicon\ai\ai.dm" #include "code\modules\mob\living\silicon\ai\ai_defense.dm" @@ -2306,6 +2306,7 @@ #include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\say.dm" +#include "code\modules\mob\living\silicon\robot\update_icons.dm" #include "code\modules\mob\living\simple_animal\animal_defense.dm" #include "code\modules\mob\living\simple_animal\astral.dm" #include "code\modules\mob\living\simple_animal\constructs.dm" From 25a2b34c38e6d751e4b7c01cd19d832a92c23b0f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 26 Feb 2020 05:59:53 -0700 Subject: [PATCH 71/92] some fixes --- code/game/atoms_movement.dm | 39 +++++++++++----------- code/modules/mob/living/living_movement.dm | 2 +- tgstation.dme | 1 + 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/code/game/atoms_movement.dm b/code/game/atoms_movement.dm index f862b87b7a..d418652cd8 100644 --- a/code/game/atoms_movement.dm +++ b/code/game/atoms_movement.dm @@ -120,30 +120,31 @@ return if(!loc || (loc == oldloc && oldloc != newloc)) - last_move = 0 + last_move = NONE return if(.) + last_move = direct + setDir(direct) + + if(has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) + return FALSE + + if(pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move. + if(pulling.anchored) + stop_pulling() + else + var/pull_dir = get_dir(src, pulling) + //puller and pullee more than one tile away or in diagonal position + if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) + pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position + if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up + stop_pulling() + if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. + pulledby.stop_pulling() + Moved(oldloc, direct) - if(. && pulling && pulling == pullee) //we were pulling a thing and didn't lose it during our move. - if(pulling.anchored) - stop_pulling() - else - var/pull_dir = get_dir(src, pulling) - //puller and pullee more than one tile away or in diagonal position - if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) - pulling.Move(T, get_dir(pulling, T)) //the pullee tries to reach our previous position - if(pulling && get_dist(src, pulling) > 1) //the pullee couldn't keep up - stop_pulling() - if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. - pulledby.stop_pulling() - - last_move = direct - setDir(direct) - if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc,direct)) //movement failed due to buckled mob(s) - return FALSE - /atom/movable/proc/handle_buckled_mob_movement(newloc,direct) for(var/m in buckled_mobs) var/mob/living/buckled_mob = m diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index c5f48880ba..c713c80a7b 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -19,7 +19,7 @@ if(mover in buckled_mobs) return TRUE var/mob/living/L = mover //typecast first, check isliving and only check this if living using short circuit - return (!density || (isliving(mover) && !mover.density && L.can_move_under_living(src))) + return (!density || (!mover.density && (!isliving(mover) || L.can_move_under_living(src)))) /mob/living/toggle_move_intent() . = ..() diff --git a/tgstation.dme b/tgstation.dme index 69eac2b236..27668a7074 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -573,6 +573,7 @@ #include "code\game\alternate_appearance.dm" #include "code\game\atoms.dm" #include "code\game\atoms_movable.dm" +#include "code\game\atoms_movement.dm" #include "code\game\communications.dm" #include "code\game\data_huds.dm" #include "code\game\say.dm" From 1711fcaa06a29c8a4f747f6e4bdce4e4bffed8d3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 26 Feb 2020 15:56:01 -0700 Subject: [PATCH 72/92] k --- .../modules/mob/living/carbon/human/species_types/jellypeople.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index eb1e194c0f..cf2950ff6f 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -83,6 +83,7 @@ button_icon_state = "slimeheal" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" + required_mobility_flags = NONE /datum/action/innate/regenerate_limbs/IsAvailable() if(..()) From f4e49f339bc57b4066ad3502822360d8bcb19122 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 18:29:27 -0700 Subject: [PATCH 73/92] k --- code/modules/mob/living/carbon/human/human_mobility.dm | 5 ++++- code/modules/mob/living/living_mobility.dm | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_mobility.dm b/code/modules/mob/living/carbon/human/human_mobility.dm index c9074e5797..36fde353b9 100644 --- a/code/modules/mob/living/carbon/human/human_mobility.dm +++ b/code/modules/mob/living/carbon/human/human_mobility.dm @@ -4,7 +4,10 @@ if(ignoretimer) set_resting(FALSE, FALSE) return TRUE - else if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) + if(!lying) //if they're in a chair or something they don't need to force themselves off the ground. + set_resting(FALSE, FALSE) + return TRUE + else if(!CHECK_MOBILITY(src, MOBILITY_RESIST)) to_chat(src, "You are unable to stand up right now.") else var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 6222ee4ab7..86bd6c7a3a 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -70,8 +70,9 @@ var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/restrained = restrained() var/pinned = resting && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE // Cit change - adds pinning for aggressive-grabbing people on the ground - var/canmove = !immobilize && !stun && conscious && !paralyze && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && (has_arms || ignore_legs || has_legs) && !pinned && !recoveringstam - var/canresist = !stun && conscious && !stat_softcrit && !paralyze && (has_arms || ignore_legs || has_legs) && !recoveringstam + var/has_limbs = has_arms || ignore_legs || has_legs + var/canmove = !immobilize && !stun && conscious && !paralyze && (!stat_softcrit || !pulledby) && !chokehold && !IsFrozen() && has_limbs && !pinned && !recoveringstam + var/canresist = !stun && conscious && !stat_softcrit && !paralyze && has_limbs && !recoveringstam if(canmove) mobility_flags |= MOBILITY_MOVE From 045d5b2dbf69a35e6800f4aec1fd4cc9f6fbfd8f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:06:52 -0700 Subject: [PATCH 74/92] fixes --- code/game/objects/items/holy_weapons.dm | 16 ++++++++-------- code/game/objects/structures/watercloset.dm | 2 +- code/game/objects/structures/windoor_assembly.dm | 2 +- code/modules/assembly/flash.dm | 3 +-- .../machinery/components/unary_devices/cryo.dm | 2 +- code/modules/mob/living/living.dm | 8 ++++---- .../mob/living/simple_animal/slime/life.dm | 10 +++++----- code/modules/mob/mob.dm | 2 ++ .../code/modules/mob/living/living.dm | 4 ++-- 9 files changed, 25 insertions(+), 24 deletions(-) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 30376b452b..4d275e2034 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -64,16 +64,16 @@ else playsound(src, 'sound/machines/buzz-sigh.ogg', 40, 1) -/obj/item/holybeacon/proc/beacon_armor(mob/living/M) +/obj/item/holybeacon/proc/beacon_armor(mob/living/L) var/list/holy_armor_list = typesof(/obj/item/storage/box/holy) var/list/display_names = list() for(var/V in holy_armor_list) var/atom/A = V display_names += list(initial(A.name) = A) - var/choice = input(M,"What holy armor kit would you like to order?","Holy Armor Theme") as null|anything in display_names + var/choice = input(L,"What holy armor kit would you like to order?","Holy Armor Theme") as null|anything in display_names var/turf/T = get_turf(src) - if(!T || QDELETED(src) || !choice || !CHECK_BITFIELD(M.mobility_flags, MOBILITY_USE) || !in_range(M, src) || GLOB.holy_armor_type) + if(!T || QDELETED(src) || !choice || !CHECK_MOBILITY(L, MOBILITY_USE) || !in_range(L, src) || GLOB.holy_armor_type) return var/index = display_names.Find(choice) @@ -86,7 +86,7 @@ if(holy_armor_box) qdel(src) - M.put_in_hands(holy_armor_box) + L.put_in_hands(holy_armor_box) /obj/item/storage/box/holy name = "Templar Kit" @@ -244,7 +244,7 @@ if(user.mind && (user.mind.isholy) && !reskinned) reskin_holy_weapon(user) -/obj/item/nullrod/proc/reskin_holy_weapon(mob/living/M) +/obj/item/nullrod/proc/reskin_holy_weapon(mob/living/L) if(GLOB.holy_weapon_type) return var/obj/item/holy_weapon @@ -255,8 +255,8 @@ if (initial(rodtype.chaplain_spawnable)) display_names[initial(rodtype.name)] = rodtype - var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names - if(QDELETED(src) || !choice || !in_range(M, src) || !CHECK_MOBILITY(M, MOBILITY_USE) || reskinned) + var/choice = input(L, "What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names + if(QDELETED(src) || !choice || !in_range(L, src) || !CHECK_MOBILITY(L, MOBILITY_USE) || reskinned) return var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new @@ -269,7 +269,7 @@ if(holy_weapon) holy_weapon.reskinned = TRUE qdel(src) - M.put_in_active_hand(holy_weapon) + L.put_in_active_hand(holy_weapon) /obj/item/nullrod/proc/jedi_spin(mob/living/user) for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH)) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 0d82c0295a..4033afa022 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -529,7 +529,7 @@ if(B.cell.charge > 0 && B.status == 1) flick("baton_active", src) var/stunforce = B.stamforce - user.DefaultCombatKnockdown(stunforce) + user.DefaultCombatKnockdown(stunforce * 2) user.stuttering = stunforce/20 B.deductcharge(B.hitcost) user.visible_message("[user] shocks [user.p_them()]self while attempting to wash the active [B.name]!", \ diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index dd7dcd4dbf..e824567b50 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -344,7 +344,7 @@ set category = "Object" set src in oview(1) var/mob/living/L = usr - if(!CHECK_BITFIELD(L, MOBILITY_PULL)) + if(!CHECK_MOBILITY(L, MOBILITY_PULL)) return if(facing == "l") diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index d4d3843a54..13ea317b9b 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -197,13 +197,12 @@ else to_chat(user, "This mind seems resistant to the flash!") - /obj/item/assembly/flash/cyborg /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) - if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && CHECK_BITFIELD(M.mobility_flags, MOBILITY_STAND) && !M.get_eye_protection()) + if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && CHECK_MOBILITY(M, MOBILITY_STAND) && !M.get_eye_protection()) M.DefaultCombatKnockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 052106456f..e013a86fd2 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -280,7 +280,7 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/living/carbon/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !istype(target) || !user.IsAdvancedToolUser()) return - if(!CHECK_BITFIELD(target.mobility_flags, MOBILITY_MOVE)) + if(!CHECK_MOBILITY(target, MOBILITY_MOVE)) close_machine(target) else user.visible_message("[user] starts shoving [target] inside [src].", "You start shoving [target] inside [src].") diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 1bd35bb867..cefb411644 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -88,7 +88,7 @@ var/they_can_move = TRUE if(isliving(M)) var/mob/living/L = M - they_can_move = L.mobility_flags & MOBILITY_MOVE + they_can_move = CHECK_MOBILITY(L, MOBILITY_MOVE) //Also spread diseases for(var/thing in diseases) var/datum/disease/D = thing @@ -663,7 +663,7 @@ // This shouldn't give clickdelays sometime (e.g. going out of a mech/unwelded and unlocked locker/disposals bin/etc) but there's so many overrides that I am not going to bother right now. return TRUE - if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) + if(CHECK_MOBILITY(src, MOBILITY_MOVE)) if(on_fire) resist_fire() //stop, drop, and roll // Give clickdelay @@ -704,7 +704,7 @@ /mob/living/do_resist_grab(moving_resist, forced, silent = FALSE) . = ..() if(pulledby.grab_state) - if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && prob(30/pulledby.grab_state)) + if(CHECK_MOBILITY(src, MOBILITY_STAND) && prob(30/pulledby.grab_state)) visible_message("[src] has broken free of [pulledby]'s grip!") pulledby.stop_pulling() return TRUE @@ -1184,4 +1184,4 @@ reagents.add_reagent_list(healing_chems) /mob/living/canface() - return ..() && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) + return ..() && CHECK_MOBILITY(src, MOBILITY_MOVE) diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index d9cf4b2a09..a923da6ed6 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -41,7 +41,7 @@ AIproc = 1 while(AIproc && stat != DEAD && (attacked || hungry || rabid || buckled)) - if(!(mobility_flags & MOBILITY_MOVE)) //also covers buckling. Not sure why buckled is in the while condition if we're going to immediately break, honestly + if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) //also covers buckling. Not sure why buckled is in the while condition if we're going to immediately break, honestly break if(!Target || client) @@ -291,7 +291,7 @@ Discipline-- if(!client) - if(!CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) + if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) return if(buckled) @@ -376,13 +376,13 @@ if (Leader) if(holding_still) holding_still = max(holding_still - 1, 0) - else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc)) + else if(CHECK_MOBILITY(src, MOBILITY_MOVE) && isturf(loc)) step_to(src, Leader) else if(hungry) if (holding_still) holding_still = max(holding_still - hungry, 0) - else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && prob(50)) + else if(CHECK_MOBILITY(src, MOBILITY_MOVE) && isturf(loc) && prob(50)) step(src, pick(GLOB.cardinals)) else @@ -390,7 +390,7 @@ holding_still = max(holding_still - 1, 0) else if (docile && pulledby) holding_still = 10 - else if(CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && prob(33)) + else if(CHECK_MOBILITY(src, MOBILITY_MOVE) && isturf(loc) && prob(33)) step(src, pick(GLOB.cardinals)) else if(!AIproc) INVOKE_ASYNC(src, .proc/AIprocess) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a523c22d53..2bc4aa8a32 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -665,6 +665,8 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) return FALSE if(anchored) return FALSE + if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) + return FALSE if(notransform) return FALSE if(restrained()) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index b370bfa078..51c21f4388 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -1,4 +1,4 @@ -/mob/living +|/mob/living var/sprinting = FALSE var/recoveringstam = FALSE var/incomingstammult = 1 @@ -25,7 +25,7 @@ /mob/living/movement_delay(ignorewalk = 0) . = ..() - if(!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) + if(!CHECK_MOBILITY(src, MOBILITY_STAND)) . += 6 /atom From 995aa6cdecc9ccc8053948e843c39762b869d74d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:07:34 -0700 Subject: [PATCH 75/92] fix --- modular_citadel/code/modules/mob/living/living.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 51c21f4388..c0e045365f 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -1,4 +1,4 @@ -|/mob/living +/mob/living var/sprinting = FALSE var/recoveringstam = FALSE var/incomingstammult = 1 From 9bd4719c0acdd585fe1718745f991da8ff40f44f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:09:29 -0700 Subject: [PATCH 76/92] wrong type --- code/modules/mob/living/living_movement.dm | 5 +++++ code/modules/mob/mob.dm | 2 -- modular_citadel/code/modules/mob/living/living.dm | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index c713c80a7b..f2f62e7351 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -119,3 +119,8 @@ /mob/living/onTransitZ(old_z,new_z) ..() update_z(new_z) + +/mob/living/proc/canface() + if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) + return FALSE + return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 2bc4aa8a32..a523c22d53 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -665,8 +665,6 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) return FALSE if(anchored) return FALSE - if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) - return FALSE if(notransform) return FALSE if(restrained()) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index c0e045365f..51c21f4388 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -1,4 +1,4 @@ -/mob/living +|/mob/living var/sprinting = FALSE var/recoveringstam = FALSE var/incomingstammult = 1 From 67c857292fe06bbf669f72adb7bb5cd6528bc0d6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:09:33 -0700 Subject: [PATCH 77/92] Aa --- modular_citadel/code/modules/mob/living/living.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 51c21f4388..c0e045365f 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -1,4 +1,4 @@ -|/mob/living +/mob/living var/sprinting = FALSE var/recoveringstam = FALSE var/incomingstammult = 1 From ce8153e7fd78cdf19256e68f4b1597e91fcae3d7 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:12:52 -0700 Subject: [PATCH 78/92] aa --- code/modules/antagonists/bloodsucker/powers/lunge.dm | 3 ++- tgstation.dme | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm index 13f980f403..b1e9f79b81 100644 --- a/code/modules/antagonists/bloodsucker/powers/lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm @@ -58,7 +58,8 @@ var/do_knockdown = !is_A_facing_B(target,owner) || owner.alpha <= 0 || istype(owner.loc, /obj/structure/closet) // CAUSES: Target has their back to me, I'm invisible, or I'm in a Closet // Step One: Heatseek toward Target's Turf - addtimer(CALLBACK(owner, .proc/_walk, 0), 2 SECONDS) target.playsound_local(get_turf(owner), 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // target-only telegraphing + addtimer(CALLBACK(owner, .proc/_walk, 0), 2 SECONDS) + target.playsound_local(get_turf(owner), 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // target-only telegraphing owner.playsound_local(owner, 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // audio feedback to the user if(do_mob(owner, owner, 6, TRUE, TRUE)) walk_towards(owner, T, 0.1, 10) // yes i know i shouldn't use this but i don't know how to work in anything better diff --git a/tgstation.dme b/tgstation.dme index 447c7552a2..ff6ec1312a 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -79,8 +79,8 @@ #include "code\__DEFINES\obj_flags.dm" #include "code\__DEFINES\pinpointers.dm" #include "code\__DEFINES\pipe_construction.dm" -#include "code\__DEFINES\power.dm" #include "code\__DEFINES\pool.dm" +#include "code\__DEFINES\power.dm" #include "code\__DEFINES\preferences.dm" #include "code\__DEFINES\procpath.dm" #include "code\__DEFINES\profile.dm" From f01a58a795f97b7c186b3b5e53ce61602f49cfa5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 27 Feb 2020 20:15:28 -0700 Subject: [PATCH 79/92] fix --- code/modules/antagonists/bloodsucker/powers/lunge.dm | 3 ++- code/modules/mob/living/living_movement.dm | 2 +- code/modules/mob/living/simple_animal/friendly/bumbles.dm | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm index b1e9f79b81..a8df8952ee 100644 --- a/code/modules/antagonists/bloodsucker/powers/lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm @@ -52,6 +52,7 @@ // set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done. var/mob/living/carbon/target = A var/turf/T = get_turf(target) + var/mob/living/L = owner // Clear Vars owner.pulling = null // Will we Knock them Down? @@ -63,7 +64,7 @@ owner.playsound_local(owner, 'sound/bloodsucker/lunge_warn.ogg', 60, FALSE, pressure_affected = FALSE) // audio feedback to the user if(do_mob(owner, owner, 6, TRUE, TRUE)) walk_towards(owner, T, 0.1, 10) // yes i know i shouldn't use this but i don't know how to work in anything better - if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(owner, MOBILITY_STAND)) + if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && !CHECK_MOBILITY(L, MOBILITY_STAND)) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index f2f62e7351..ad079ea737 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -120,7 +120,7 @@ ..() update_z(new_z) -/mob/living/proc/canface() +/mob/living/canface() if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) return FALSE return ..() diff --git a/code/modules/mob/living/simple_animal/friendly/bumbles.dm b/code/modules/mob/living/simple_animal/friendly/bumbles.dm index 17e1490c3f..013bb31b63 100644 --- a/code/modules/mob/living/simple_animal/friendly/bumbles.dm +++ b/code/modules/mob/living/simple_animal/friendly/bumbles.dm @@ -33,7 +33,7 @@ . = ..() AddElement(/datum/element/wuv, "bzzs!") -/mob/living/simple_animal/pet/bumbles/update_canmove() +/mob/living/simple_animal/pet/bumbles/update_mobility() . = ..() if(client && stat != DEAD) if (resting) From 7f7dced8b03faf95e10b6f908ed51a67f8537327 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 28 Feb 2020 06:15:08 -0700 Subject: [PATCH 80/92] no message for automated --- code/modules/mob/living/carbon/human/human_mobility.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_mobility.dm b/code/modules/mob/living/carbon/human/human_mobility.dm index 36fde353b9..d2b700b1b9 100644 --- a/code/modules/mob/living/carbon/human/human_mobility.dm +++ b/code/modules/mob/living/carbon/human/human_mobility.dm @@ -8,7 +8,9 @@ set_resting(FALSE, FALSE) return TRUE else if(!CHECK_MOBILITY(src, MOBILITY_RESIST)) - to_chat(src, "You are unable to stand up right now.") + if(!automatic) + to_chat(src, "You are unable to stand up right now.") + return FALSE else var/totaldelay = 3 //A little bit less than half of a second as a baseline for getting up from a rest if(getStaminaLoss() >= STAMINA_SOFTCRIT) From 7ade79ce80413e1e82defefc1afa4f10a5e75872 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 2 Mar 2020 03:05:51 -0700 Subject: [PATCH 81/92] small fix --- code/modules/mob/living/carbon/human/human_mobility.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_mobility.dm b/code/modules/mob/living/carbon/human/human_mobility.dm index d2b700b1b9..61ceb42336 100644 --- a/code/modules/mob/living/carbon/human/human_mobility.dm +++ b/code/modules/mob/living/carbon/human/human_mobility.dm @@ -40,8 +40,9 @@ attemptingstandup = FALSE return TRUE else - visible_message("[src] falls right back down.", "You fall right back down.") attemptingstandup = FALSE - if(has_gravity()) - playsound(src, "bodyfall", 20, 1) + if(resting) //we didn't shove ourselves up or something + visible_message("[src] falls right back down.", "You fall right back down.") + if(has_gravity()) + playsound(src, "bodyfall", 20, 1) return FALSE From c21bd60929e0331c30349f3a374fa4836322a2c0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 03:04:23 -0700 Subject: [PATCH 82/92] fix --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- code/game/objects/structures/musician.dm | 4 ++-- code/modules/mob/living/living_mobility.dm | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 41a86db546..a01fc5e404 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -747,7 +747,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/t = stripped_input(U, "Please enter message", name) if (!t || toff) return - if(!U.canUseTopic(src, BE_CLOSE)) + if(!U.canUseTopic(src, BE_CLOSE, FALSE, NO_TK, FALSE)) return if(emped) t = Gibberish(t, 100) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index df6d033af4..9b59e85e2e 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -82,7 +82,7 @@ /datum/song/proc/shouldStopPlaying(mob/user) if(instrumentObj) - if(!user.canUseTopic(instrumentObj)) + if(!user.canUseTopic(instrumentObj, TRUE, FALSE, FALSE, FALSE)) return TRUE return !instrumentObj.anchored // add special cases to stop in subclasses else @@ -220,7 +220,7 @@ updateDialog(usr) // make sure updates when complete /datum/song/Topic(href, href_list) - if(!usr.canUseTopic(instrumentObj)) + if(!usr.canUseTopic(instrumentObj, TRUE, FALSE, FALSE, FALSE)) usr << browse(null, "window=instrument") usr.unset_machine() return diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 86bd6c7a3a..9a350a0871 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -82,7 +82,7 @@ if(canresist) mobility_flags |= MOBILITY_RESIST else - mobility_flags &= !MOBILITY_RESIST + mobility_flags &= ~MOBILITY_RESIST var/canstand_involuntary = conscious && !stat_softcrit && !knockdown && !chokehold && !paralyze && (ignore_legs || has_legs) && !(buckled && buckled.buckle_lying) && !recoveringstam var/canstand = canstand_involuntary && !resting @@ -107,7 +107,7 @@ else mobility_flags |= MOBILITY_UI|MOBILITY_PULL - var/canitem_general = !paralyze && !stun && conscious && !chokehold && !restrained && has_arms && !recoveringstam + var/canitem_general = !paralyze && !stun && conscious && !(stat_softcrit) && !chokehold && !restrained && has_arms && !recoveringstam if(canitem_general) mobility_flags |= (MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_STORAGE | MOBILITY_HOLD) else From 8b0b685fa7b2243c9f149c54f10e3fe6b34d5a23 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:40:33 -0700 Subject: [PATCH 83/92] CHECK_MOBILITY --- code/__DEFINES/flags.dm | 2 +- code/game/machinery/dance_machine.dm | 2 +- code/game/machinery/pipe/pipe_dispenser.dm | 2 +- code/game/objects/items/storage/bags.dm | 2 +- .../objects/structures/crates_lockers/closets/cardboardbox.dm | 2 +- code/game/objects/structures/tables_racks.dm | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 396cf25be1..6b26bae4ad 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 //Mob mobility var flags /// any flag -#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags) +#define CHECK_MOBILITY(target, flags) CHECK_MOBILITY(target, flags) #define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags) /// can move diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 6a5853a9ae..9ecc19e40f 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -433,5 +433,5 @@ . = ..() if(active) for(var/mob/living/M in rangers) - if(prob(5+(allowed(M)*4)) && CHECK_BITFIELD(M.mobility_flags, MOBILITY_MOVE)) + if(prob(5+(allowed(M)*4)) && CHECK_MOBILITY(M, MOBILITY_MOVE)) dance(M) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 2f72bd3aea..b0e26ce129 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -95,7 +95,7 @@ //Allow you to drag-drop disposal pipes and transit tubes into it /obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/pipe, mob/living/user) - if(!istype(user) || !CHECK_BITFIELD(user.mobility_flags, MOBILITY_USE)) + if(!istype(user) || !CHECK_MOBILITY(user, MOBILITY_USE)) return if (!istype(pipe, /obj/structure/disposalconstruct) && !istype(pipe, /obj/structure/c_transit_tube) && !istype(pipe, /obj/structure/c_transit_tube_pod)) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index e0bb27fb1c..7a6e1e3db6 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -247,7 +247,7 @@ set category = "Object" set desc = "Activate to convert your plants into plantable seeds." var/mob/living/L = usr - if(istype(L) && !CHECK_BITFIELD(L.mobility_flags, MOBILITY_USE)) + if(istype(L) && !CHECK_MOBILITY(L, MOBILITY_USE)) return for(var/obj/item/O in contents) seedify(O, 1) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 8e78d1102a..ae2e1a070a 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -19,7 +19,7 @@ var/use_mob_movespeed = FALSE //Citadel adds snowflake box handling /obj/structure/closet/cardboard/relaymove(mob/living/user, direction) - if(opened || move_delay || !CHECK_BITFIELD(user.mobility_flags, MOBILITY_MOVE) || !isturf(loc) || !has_gravity(loc)) + if(opened || move_delay || !CHECK_MOBILITY(user, MOBILITY_MOVE) || !isturf(loc) || !has_gravity(loc)) return move_delay = TRUE var/oldloc = loc diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 72e7a04182..2df64a71ad 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -137,7 +137,7 @@ SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table) /obj/structure/table/shove_act(mob/living/target, mob/living/user) - if(CHECK_BITFIELD(target.mobility_flags, MOBILITY_STAND)) + if(CHECK_MOBILITY(target, MOBILITY_STAND)) target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_TABLE) user.visible_message("[user.name] shoves [target.name] onto \the [src]!", "You shove [target.name] onto \the [src]!", null, COMBAT_MESSAGE_RANGE) @@ -575,7 +575,7 @@ /obj/structure/table/optable/proc/check_patient() var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, loc) if(M) - if(!CHECK_BITFIELD(M.mobility_flags, MOBILITY_STAND)) + if(!CHECK_MOBILITY(M, MOBILITY_STAND)) patient = M return 1 else From 1d198aca889a0f3fb1d18b166a10ac629623df1e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:41:08 -0700 Subject: [PATCH 84/92] CHECK_MOBILITY --- code/modules/mob/living/carbon/alien/humanoid/update_icons.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/examine.dm | 2 +- code/modules/mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/carbon/monkey/combat.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 4 ++-- code/modules/mob/living/simple_animal/friendly/cat.dm | 2 +- code/modules/mob/living/simple_animal/parrot.dm | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index ba87277669..ca62df0b57 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -17,7 +17,7 @@ else if(leap_on_click) icon_state = "alien[caste]_pounce" - else if(lying || !CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) || asleep) + else if(lying || !CHECK_MOBILITY(src, MOBILITY_STAND) || asleep) icon_state = "alien[caste]_sleep" else if(mob_size == MOB_SIZE_LARGE) icon_state = "alien[caste]" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e5e757a165..5f9e838330 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -580,7 +580,7 @@ if(stam > DAMAGE_PRECISION) var/total_health = (health - stam) if(total_health <= crit_threshold && !stat) - if(CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) + if(CHECK_MOBILITY(src, MOBILITY_STAND)) to_chat(src, "You're too exhausted to keep going...") KnockToFloor(TRUE) update_health_hud() diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 8863ab1aba..efd81c1744 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -91,7 +91,7 @@ . += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner." if(combatmode) - . += "[t_He] [t_is] visibly tense[CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) ? "." : ", and [t_is] standing in combative stance."]" + . += "[t_He] [t_is] visibly tense[CHECK_MOBILITY(src, MOBILITY_STAND) ? "." : ", and [t_is] standing in combative stance."]" var/trait_exam = common_trait_examine() if (!isnull(trait_exam)) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index db91fa1169..5db1263147 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -294,7 +294,7 @@ if(M.force > 35) // durand and other heavy mechas DefaultCombatKnockdown(50) src.throw_at(throw_target, rand(1,5), 7) - else if(M.force >= 20 && CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) // lightweight mechas like gygax + else if(M.force >= 20 && CHECK_MOBILITY(src, MOBILITY_STAND)) // lightweight mechas like gygax DefaultCombatKnockdown(30) src.throw_at(throw_target, rand(1,3), 7) update |= temp.receive_damage(dmg, 0) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 56088672b2..a06d65ad4b 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -50,7 +50,7 @@ // taken from /mob/living/carbon/human/interactive/ /mob/living/carbon/monkey/proc/IsDeadOrIncap(checkDead = TRUE) - if(!CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE)) + if(!CHECK_MOBILITY(src, MOBILITY_MOVE)) return TRUE if(health <= 0 && checkDead) return TRUE diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 1961c66dc1..31589f1cab 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -13,7 +13,7 @@ if(!client) if(stat == CONSCIOUS) - if(on_fire || buckled || restrained() || (!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND) && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE))) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) + if(on_fire || buckled || restrained() || (!CHECK_MOBILITY(src, MOBILITY_STAND) && CHECK_MOBILITY(src, MOBILITY_MOVE))) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) if(!resisting && prob(MONKEY_RESIST_PROB)) resisting = TRUE walk_to(src,0) @@ -21,7 +21,7 @@ else if(resisting) resisting = FALSE else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) - if(prob(25) && CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) && isturf(loc) && !pulledby) + if(prob(25) && CHECK_MOBILITY(src, MOBILITY_MOVE) && isturf(loc) && !pulledby) step(src, pick(GLOB.cardinals)) else if(prob(1)) emote(pick("scratch","jump","roll","tail")) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 96ec5b606c..1297fddb69 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -46,7 +46,7 @@ /mob/living/simple_animal/pet/cat/update_mobility() . = ..() if(client && stat != DEAD) - if(!CHECK_BITFIELD(mobility_flags, MOBILITY_STAND)) + if(!CHECK_MOBILITY(src, MOBILITY_STAND)) icon_state = "[icon_living]_rest" collar_type = "[initial(collar_type)]_rest" else diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 4a62fc143e..9ad9a121ca 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -381,7 +381,7 @@ /mob/living/simple_animal/parrot/handle_automated_movement() - if(!isturf(loc) || !CHECK_BITFIELD(mobility_flags, MOBILITY_MOVE) || buckled) + if(!isturf(loc) || !CHECK_MOBILITY(src, MOBILITY_MOVE) || buckled) return //If it can't move, dont let it move. (The buckled check probably isn't necessary thanks to canmove) if(client && stat == CONSCIOUS && parrot_state != icon_living) From b2be57d5feca851f29a09b96627f2dd8c66cdca1 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:43:54 -0700 Subject: [PATCH 85/92] macro recursion woops --- code/__DEFINES/flags.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 6b26bae4ad..396cf25be1 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 //Mob mobility var flags /// any flag -#define CHECK_MOBILITY(target, flags) CHECK_MOBILITY(target, flags) +#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags) #define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags) /// can move From 334f1cc1cf18f46317e3b2c753ccc6f12921b5cd Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:48:39 -0700 Subject: [PATCH 86/92] linzolle --- code/modules/mob/living/living.dm | 11 +++++------ code/modules/mob/living/living_mobility.dm | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b147fc2cee..d9a22674ae 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -692,12 +692,11 @@ log_combat(src, old_pulled, "[success? "successfully broke free of" : "failed to resist"] a grab of strength [old_gs][moving_resist? " (moving)":""][forced? " (forced)":""]") return success - /*! - * Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general! - * Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free"). - * Forced does NOT force success! - */ - +/*! + * Proc that actually does the grab resisting. Return TRUE if successful. Does not check that a grab exists! Use attempt_resist_grab() instead of this in general! + * Forced is if something other than the user mashing movement keys/pressing resist button did it, silent is if it makes messages (like "attempted to resist" and "broken free"). + * Forced does NOT force success! + */ /mob/proc/do_resist_grab(moving_resist, forced, silent = FALSE) return FALSE diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm index 9a350a0871..4b2afd0448 100644 --- a/code/modules/mob/living/living_mobility.dm +++ b/code/modules/mob/living/living_mobility.dm @@ -124,12 +124,12 @@ DISABLE_BITFIELD(mobility_flags, MOBILITY_USE) //Handle update-effects. - if(!(mobility_flags & MOBILITY_HOLD)) + if(!CHECK_MOBILITY(src, MOBILITY_HOLD)) drop_all_held_items() - if(!(mobility_flags & MOBILITY_PULL)) + if(!CHECK_MOBILITY(src, MOBILITY_PULL)) if(pulling) stop_pulling() - if(!(mobility_flags & MOBILITY_UI)) + if(!CHECK_MOBILITY(src, MOBILITY_UI)) unset_machine() if(isliving(pulledby)) @@ -149,7 +149,7 @@ lying_prev = lying //Handle citadel autoresist - if((mobility_flags & MOBILITY_MOVE) && !intentionalresting && canstand_involuntary && iscarbon(src) && client?.prefs?.autostand)//CIT CHANGE - adds autostanding as a preference + if(CHECK_MOBILITY(src, MOBILITY_MOVE) && !intentionalresting && canstand_involuntary && iscarbon(src) && client?.prefs?.autostand)//CIT CHANGE - adds autostanding as a preference addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto return mobility_flags From f8187d0fbfdf8edf5a068c0842303386cc319848 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:51:50 -0700 Subject: [PATCH 87/92] optimize move under living --- code/modules/mob/living/living_movement.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index ad079ea737..fd8454dc28 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -19,7 +19,7 @@ if(mover in buckled_mobs) return TRUE var/mob/living/L = mover //typecast first, check isliving and only check this if living using short circuit - return (!density || (!mover.density && (!isliving(mover) || L.can_move_under_living(src)))) + return (!density || (isliving(mover)? L.can_move_under_living(src) : mover.density)) /mob/living/toggle_move_intent() . = ..() From b6431b0ef604e2920356ac30414a8d745241acef Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:54:53 -0700 Subject: [PATCH 88/92] changes --- code/game/objects/items/robot/robot_parts.dm | 3 +-- code/game/objects/structures/tables_racks.dm | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 37d9e376a2..6621095b72 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -317,8 +317,7 @@ O.robot_suit = src if(!locomotion) - O.locked_down = 1 - O.update_mobility() + O.SetLockdown(TRUE) to_chat(O, "Error: Servo motors unresponsive.") else diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 2df64a71ad..02740ce858 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -573,14 +573,14 @@ check_patient() /obj/structure/table/optable/proc/check_patient() - var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, loc) - if(M) - if(!CHECK_MOBILITY(M, MOBILITY_STAND)) - patient = M - return 1 + var/mob/living/carbon/human/H = locate() in loc + if(H) + if(!CHECK_MOBILITY(H, MOBILITY_STAND)) + patient = H + return TRUE else patient = null - return 0 + return FALSE /* * Racks From 7291417244fbf85e6a63a3068cc9558668d316f1 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 20:57:03 -0700 Subject: [PATCH 89/92] fix --- code/modules/mob/living/carbon/alien/larva/update_icons.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/larva/update_icons.dm b/code/modules/mob/living/carbon/alien/larva/update_icons.dm index d1c9fa7cde..e6e7e657e8 100644 --- a/code/modules/mob/living/carbon/alien/larva/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/larva/update_icons.dm @@ -14,7 +14,7 @@ icon_state = "larva[state]_dead" else if(handcuffed || legcuffed) //This should be an overlay. Who made this an icon_state? icon_state = "larva[state]_cuff" - else if(stat == UNCONSCIOUS || lying || resting) + else if(stat == UNCONSCIOUS || !CHECK_MOBILITY(src, MOBILITY_STAND)) icon_state = "larva[state]_sleep" else if(IsStun() || IsParalyzed()) icon_state = "larva[state]_stun" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 47ce6b627c..bd7cbb48f9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -491,7 +491,7 @@ to_chat(usr, "Unable to locate a data core entry for this person.") /mob/living/carbon/human/proc/canUseHUD() - return (mobility_flags & MOBILITY_UI) + return CHECK_MOBILITY(src, MOBILITY_UI) /mob/living/carbon/human/can_inject(mob/user, error_msg, target_zone, penetrate_thick = FALSE, bypass_immunity = FALSE) . = 1 // Default to returning true. @@ -725,7 +725,7 @@ cut_overlay(MA) /mob/living/carbon/human/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE, check_resting = TRUE) - if(incapacitated() || (check_resting && resting)) + if(incapacitated() || (check_resting && !CHECK_MOBILITY(src, MOBILITY_STAND))) to_chat(src, "You can't do that right now!") return FALSE if(!Adjacent(M) && (M.loc != src)) From 2d02ae00773a47372eefdabc1a591c30ae05d796 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Tue, 3 Mar 2020 21:06:29 -0700 Subject: [PATCH 90/92] oops --- code/datums/martial/rising_bass.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm index 60fab7cf66..22605e5624 100644 --- a/code/datums/martial/rising_bass.dm +++ b/code/datums/martial/rising_bass.dm @@ -115,11 +115,7 @@ return basic_hit(A,D) /datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D) -<<<<<<< HEAD if(CHECK_MOBILITY(D, MOBILITY_STAND) && repulsecool < world.time) -======= - if((!D.IsKnockdown() || !D.lying) && repulsecool > world.time) ->>>>>>> citadel/master A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) D.visible_message("[A] smashes [D] in the chest, throwing them away!", \ "[A] smashes you in the chest, repelling you away!") From b718e0e0d6273b3c9a1a81bf2548aaec9e9a9e38 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 4 Mar 2020 16:46:09 -0700 Subject: [PATCH 91/92] fuck --- code/modules/mob/living/living_movement.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index fd8454dc28..f278d22891 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -19,7 +19,7 @@ if(mover in buckled_mobs) return TRUE var/mob/living/L = mover //typecast first, check isliving and only check this if living using short circuit - return (!density || (isliving(mover)? L.can_move_under_living(src) : mover.density)) + return (!density || (isliving(mover)? L.can_move_under_living(src) : !mover.density)) /mob/living/toggle_move_intent() . = ..() From 5bca5690c467251150445d75c07214db4521dd76 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 5 Mar 2020 01:00:35 -0700 Subject: [PATCH 92/92] ok --- code/modules/mob/living/ventcrawling.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 7f8513bfd9..36a596f42e 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( if(vent_found_parent && (vent_found_parent.members.len || vent_found_parent.other_atmosmch)) visible_message("[src] begins climbing into the ventilation system..." ,"You begin climbing into the ventilation system...") - if(!do_after(src, 25, target = vent_found)) + if(!do_after(src, 25, target = vent_found, required_mobility_flags = MOBILITY_MOVE)) return if(!client)