diff --git a/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm b/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm index 96eaa7d8fb..1f84842e54 100644 --- a/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm +++ b/code/datums/components/xeno/ai_behavior_overrides/capture_override_behavior.dm @@ -22,7 +22,7 @@ if(isfacehugger(checked_xeno)) return FALSE - var/mob/parent_mob = parent + var/mob/living/parent_mob = parent var/captee_stat = parent_mob.stat var/mob/pulledby = parent_mob.pulledby @@ -45,7 +45,7 @@ if(distance > 10) return FALSE - if(captee_stat == CONSCIOUS) + if(captee_stat == CONSCIOUS && !(locate(/datum/effects/crit) in parent_mob.effects_list)) return FALSE if(isxeno(pulledby) && pulledby != checked_xeno) diff --git a/code/datums/effects/mob_crit/human_crit.dm b/code/datums/effects/mob_crit/human_crit.dm index ff4d0eeda0..8b25b2bc2a 100644 --- a/code/datums/effects/mob_crit/human_crit.dm +++ b/code/datums/effects/mob_crit/human_crit.dm @@ -8,7 +8,8 @@ qdel(src) return FALSE - affected_mob.apply_effect(3, PARALYZE) + affected_mob.KnockDown(3) + affected_mob.Stun(3) if(!affected_mob.reagents || !affected_mob.reagents.has_reagent("inaprovaline")) affected_mob.apply_damage(1, OXY) diff --git a/code/datums/effects/pain/human_pain.dm b/code/datums/effects/pain/human_pain.dm index 9c8070596b..bddd793077 100644 --- a/code/datums/effects/pain/human_pain.dm +++ b/code/datums/effects/pain/human_pain.dm @@ -58,7 +58,8 @@ var/mob/living/carbon/affected_mob = affected_atom if(do_once) - affected_mob.apply_effect(3, PARALYZE) + affected_mob.KnockDown(3) + affected_mob.Stun(3) do_once = FALSE affected_mob.EyeBlur(2) @@ -83,7 +84,8 @@ affected_mob.EyeBlur(2) if(affected_mob.pain && affected_mob.pain.feels_pain) affected_mob.TalkStutter(2) - affected_mob.apply_effect(2, PARALYZE) + affected_mob.KnockDown(2) + affected_mob.Stun(2) if(!affected_mob.reagents || !affected_mob.reagents.has_reagent("inaprovaline")) affected_mob.apply_damage(0.5, OXY) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 243ecd9342..58cfd2c797 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -218,6 +218,9 @@ if(DEAD) mob_state = "Dead" + if(mob_state == "Conscious" && (locate(/datum/effects/crit) in marine_human.effects_list)) + mob_state = "Incapacitated" + if(!istype(marine_human.head, /obj/item/clothing/head/helmet/marine)) has_helmet = FALSE diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index fa35cb1fe9..a1c3b5a4d0 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -22,7 +22,7 @@ return 1 // If unconcious with oxygen damage, do CPR. If dead, we do CPR - if(!(stat == UNCONSCIOUS && getOxyLoss() > 0) && !(stat == DEAD)) + if(!((stat == UNCONSCIOUS || (locate(/datum/effects/crit) in effects_list)) && getOxyLoss() > 0) && !(stat == DEAD)) help_shake_act(attacking_mob) return 1 diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm index b84c8e9d24..32dd9ddef8 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_hud_updates.dm @@ -7,7 +7,7 @@ if(stat != DEAD) //the dead get zero fullscreens - if(stat == UNCONSCIOUS) + if(stat == UNCONSCIOUS || (locate(/datum/effects/crit) in effects_list)) var/severity = 0 switch(health) if(-20 to -10) severity = 1 diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm index 5b37238d28..65f98d928e 100644 --- a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm +++ b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm @@ -42,7 +42,8 @@ //UNCONSCIOUS. NO-ONE IS HOME if(regular_update && ((getOxyLoss() > 50))) - apply_effect(3, PARALYZE) + KnockDown(3) + Stun(3) if((src.species.flags & HAS_HARDCRIT) && HEALTH_THRESHOLD_CRIT > health) var/already_in_crit = FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm index 177cd07433..e817c73462 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm @@ -127,7 +127,7 @@ At bare minimum, make sure the relevant checks from parent types gets copied in // MOBS // ///////////////////////////// /mob/living/ai_check_stat(mob/living/carbon/xenomorph/X) - return stat == CONSCIOUS + return stat == CONSCIOUS && !(locate(/datum/effects/crit) in effects_list) ///////////////////////////// diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx index 0c2c4e801c..db9987529e 100644 --- a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx @@ -370,12 +370,13 @@ const SquadMonitor = (props) => { let determine_status_color = (status) => { let conscious = status.includes('Conscious'); + let incapacitated = status.includes('Incapacitated'); let unconscious = status.includes('Unconscious'); let state_color = 'red'; if (conscious) { state_color = 'green'; - } else if (unconscious) { + } else if (incapacitated || unconscious) { state_color = 'yellow'; } return state_color;