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] 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)