From aed3baba152a568b0b291fe714beb68f6934761c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Tue, 6 Aug 2024 01:28:53 -0400 Subject: [PATCH] CPR Remake (#487) # Description This is a re implementation and complete rewrite of the original Nyanotrasen CPR feature, this time as its own completely standalone system. Unlike the original CPR, this system requires no modification of base game code, and can be toggled on and off via CVars while the server is running. Fixes #473 Fixes #49 # Changelog :cl: - add: CPR has been added to the game. People with CPR training can now perform CPR on anyone who is in either crit or dead states. - add: CPR Training has been added to the game as a new positive trait. All medical staff start with this trait for free. --------- Signed-off-by: VMSolidus --- Content.Server/Atmos/Rotting/RottingSystem.cs | 107 +------------ .../Atmos/Rotting/SharedRottingSystem.cs | 141 +++++++++++++++++- Content.Shared/CCVar/CCVars.cs | 49 ++++++ .../CPR/Components/CPRTrainingComponent.cs | 33 ++++ .../Medical/CPR/Systems/CPRSystem.CVars.cs | 27 ++++ .../Medical/CPR/Systems/CPRSystem.cs | 132 ++++++++++++++++ Resources/Audio/Effects/CPR.ogg | Bin 0 -> 68840 bytes .../components/cpr-training-component.ftl | 6 + Resources/Locale/en-US/traits/traits.ftl | 7 + .../DeltaV/Roles/Jobs/Security/brigmedic.yml | 3 + .../Prototypes/Roles/Jobs/Medical/chemist.yml | 4 + .../Jobs/Medical/chief_medical_officer.yml | 1 + .../Roles/Jobs/Medical/medical_doctor.yml | 4 + .../Roles/Jobs/Medical/medical_intern.yml | 4 + .../Roles/Jobs/Medical/paramedic.yml | 4 + .../Roles/Jobs/Medical/senior_physician.yml | 4 + Resources/Prototypes/Traits/skills.yml | 17 +++ 17 files changed, 431 insertions(+), 112 deletions(-) create mode 100644 Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs create mode 100644 Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs create mode 100644 Content.Shared/Medical/CPR/Systems/CPRSystem.cs create mode 100644 Resources/Audio/Effects/CPR.ogg create mode 100644 Resources/Locale/en-US/medical/components/cpr-training-component.ftl diff --git a/Content.Server/Atmos/Rotting/RottingSystem.cs b/Content.Server/Atmos/Rotting/RottingSystem.cs index 47bac84e0ca..5070b3f197f 100644 --- a/Content.Server/Atmos/Rotting/RottingSystem.cs +++ b/Content.Server/Atmos/Rotting/RottingSystem.cs @@ -1,15 +1,9 @@ -using Content.Shared.Damage; -using Content.Shared.Atmos; using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Components; using Content.Server.Temperature.Components; +using Content.Shared.Atmos; using Content.Shared.Atmos.Rotting; -using Content.Shared.Examine; -using Content.Shared.IdentityManagement; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.Rejuvenate; +using Content.Shared.Damage; using Robust.Server.Containers; using Robust.Shared.Physics.Components; using Robust.Shared.Timing; @@ -22,83 +16,16 @@ public sealed class RottingSystem : SharedRottingSystem [Dependency] private readonly AtmosphereSystem _atmosphere = default!; [Dependency] private readonly ContainerSystem _container = default!; [Dependency] private readonly DamageableSystem _damageable = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnPerishableMapInit); - SubscribeLocalEvent(OnMobStateChanged); - SubscribeLocalEvent(OnPerishableExamined); - - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnRottingMobStateChanged); SubscribeLocalEvent(OnGibbed); - SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(OnTempIsRotting); } - private void OnPerishableMapInit(EntityUid uid, PerishableComponent component, MapInitEvent args) - { - component.RotNextUpdate = _timing.CurTime + component.PerishUpdateRate; - } - - private void OnMobStateChanged(EntityUid uid, PerishableComponent component, MobStateChangedEvent args) - { - if (args.NewMobState != MobState.Dead && args.OldMobState != MobState.Dead) - return; - - if (HasComp(uid)) - return; - - component.RotAccumulator = TimeSpan.Zero; - component.RotNextUpdate = _timing.CurTime + component.PerishUpdateRate; - } - - private void OnShutdown(EntityUid uid, RottingComponent component, ComponentShutdown args) - { - if (TryComp(uid, out var perishable)) - { - perishable.RotNextUpdate = TimeSpan.Zero; - } - } - - private void OnRottingMobStateChanged(EntityUid uid, RottingComponent component, MobStateChangedEvent args) - { - if (args.NewMobState == MobState.Dead) - return; - RemCompDeferred(uid, component); - } - - public bool IsRotProgressing(EntityUid uid, PerishableComponent? perishable) - { - // things don't perish by default. - if (!Resolve(uid, ref perishable, false)) - return false; - - // only dead things or inanimate objects can rot - if (TryComp(uid, out var mobState) && !_mobState.IsDead(uid, mobState)) - return false; - - if (_container.TryGetOuterContainer(uid, Transform(uid), out var container) && - HasComp(container.Owner)) - { - return false; - } - - var ev = new IsRottingEvent(); - RaiseLocalEvent(uid, ref ev); - - return !ev.Handled; - } - - public bool IsRotten(EntityUid uid, RottingComponent? rotting = null) - { - return Resolve(uid, ref rotting, false); - } - private void OnGibbed(EntityUid uid, RottingComponent component, BeingGibbedEvent args) { if (!TryComp(uid, out var physics)) @@ -112,36 +39,6 @@ private void OnGibbed(EntityUid uid, RottingComponent component, BeingGibbedEven tileMix?.AdjustMoles(Gas.Ammonia, molsToDump); } - private void OnPerishableExamined(Entity perishable, ref ExaminedEvent args) - { - int stage = PerishStage(perishable, MaxStages); - if (stage < 1 || stage > MaxStages) - { - // We dont push an examined string if it hasen't started "perishing" or it's already rotting - return; - } - - var isMob = HasComp(perishable); - var description = "perishable-" + stage + (!isMob ? "-nonmob" : string.Empty); - args.PushMarkup(Loc.GetString(description, ("target", Identity.Entity(perishable, EntityManager)))); - } - - /// - /// Return an integer from 0 to maxStage representing how close to rotting an entity is. Used to - /// generate examine messages for items that are starting to rot. - /// - public int PerishStage(Entity perishable, int maxStages) - { - if (perishable.Comp.RotAfter.TotalSeconds == 0 || perishable.Comp.RotAccumulator.TotalSeconds == 0) - return 0; - return (int)(1 + maxStages * perishable.Comp.RotAccumulator.TotalSeconds / perishable.Comp.RotAfter.TotalSeconds); - } - - private void OnRejuvenate(EntityUid uid, RottingComponent component, RejuvenateEvent args) - { - RemCompDeferred(uid); - } - private void OnTempIsRotting(EntityUid uid, TemperatureComponent component, ref IsRottingEvent args) { if (args.Handled) diff --git a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs index 5e1758203a8..840818dee59 100644 --- a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs +++ b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs @@ -1,29 +1,85 @@ using Content.Shared.Examine; using Content.Shared.IdentityManagement; +using Content.Shared.Mobs; using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Rejuvenate; +using Robust.Shared.Containers; +using Robust.Shared.Timing; namespace Content.Shared.Atmos.Rotting; public abstract class SharedRottingSystem : EntitySystem { + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + public const int MaxStages = 3; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnPerishableMapInit); + SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnPerishableExamined); + + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnRottingMobStateChanged); + SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(OnExamined); } - /// - /// Return the rot stage, usually from 0 to 2 inclusive. - /// - public int RotStage(EntityUid uid, RottingComponent? comp = null, PerishableComponent? perishable = null) + private void OnPerishableMapInit(EntityUid uid, PerishableComponent component, MapInitEvent args) { - if (!Resolve(uid, ref comp, ref perishable)) - return 0; + component.RotNextUpdate = _timing.CurTime + component.PerishUpdateRate; + } - return (int) (comp.TotalRotTime.TotalSeconds / perishable.RotAfter.TotalSeconds); + private void OnMobStateChanged(EntityUid uid, PerishableComponent component, MobStateChangedEvent args) + { + if (args.NewMobState != MobState.Dead && args.OldMobState != MobState.Dead) + return; + + if (HasComp(uid)) + return; + + component.RotAccumulator = TimeSpan.Zero; + component.RotNextUpdate = _timing.CurTime + component.PerishUpdateRate; + } + + private void OnPerishableExamined(Entity perishable, ref ExaminedEvent args) + { + int stage = PerishStage(perishable, MaxStages); + if (stage < 1 || stage > MaxStages) + { + // We dont push an examined string if it hasen't started "perishing" or it's already rotting + return; + } + + var isMob = HasComp(perishable); + var description = "perishable-" + stage + (!isMob ? "-nonmob" : string.Empty); + args.PushMarkup(Loc.GetString(description, ("target", Identity.Entity(perishable, EntityManager)))); + } + + private void OnShutdown(EntityUid uid, RottingComponent component, ComponentShutdown args) + { + if (TryComp(uid, out var perishable)) + { + perishable.RotNextUpdate = TimeSpan.Zero; + } + } + + private void OnRottingMobStateChanged(EntityUid uid, RottingComponent component, MobStateChangedEvent args) + { + if (args.NewMobState == MobState.Dead) + return; + RemCompDeferred(uid, component); + } + + private void OnRejuvenate(EntityUid uid, RottingComponent component, RejuvenateEvent args) + { + RemCompDeferred(uid); } private void OnExamined(EntityUid uid, RottingComponent component, ExaminedEvent args) @@ -41,4 +97,75 @@ private void OnExamined(EntityUid uid, RottingComponent component, ExaminedEvent args.PushMarkup(Loc.GetString(description, ("target", Identity.Entity(uid, EntityManager)))); } + + /// + /// Return an integer from 0 to maxStage representing how close to rotting an entity is. Used to + /// generate examine messages for items that are starting to rot. + /// + public int PerishStage(Entity perishable, int maxStages) + { + if (perishable.Comp.RotAfter.TotalSeconds == 0 || perishable.Comp.RotAccumulator.TotalSeconds == 0) + return 0; + return (int)(1 + maxStages * perishable.Comp.RotAccumulator.TotalSeconds / perishable.Comp.RotAfter.TotalSeconds); + } + + public bool IsRotProgressing(EntityUid uid, PerishableComponent? perishable) + { + // things don't perish by default. + if (!Resolve(uid, ref perishable, false)) + return false; + + // only dead things or inanimate objects can rot + if (TryComp(uid, out var mobState) && !_mobState.IsDead(uid, mobState)) + return false; + + if (_container.TryGetOuterContainer(uid, Transform(uid), out var container) && + HasComp(container.Owner)) + { + return false; + } + + var ev = new IsRottingEvent(); + RaiseLocalEvent(uid, ref ev); + + return !ev.Handled; + } + + public bool IsRotten(EntityUid uid, RottingComponent? rotting = null) + { + return Resolve(uid, ref rotting, false); + } + + public void ReduceAccumulator(EntityUid uid, TimeSpan time) + { + if (!TryComp(uid, out var perishable)) + return; + + if (!TryComp(uid, out var rotting)) + { + perishable.RotAccumulator -= time; + return; + } + var total = (rotting.TotalRotTime + perishable.RotAccumulator) - time; + + if (total < perishable.RotAfter) + { + RemCompDeferred(uid, rotting); + perishable.RotAccumulator = total; + } + + else + rotting.TotalRotTime = total - perishable.RotAfter; + } + + /// + /// Return the rot stage, usually from 0 to 2 inclusive. + /// + public int RotStage(EntityUid uid, RottingComponent? comp = null, PerishableComponent? perishable = null) + { + if (!Resolve(uid, ref comp, ref perishable)) + return 0; + + return (int) (comp.TotalRotTime.TotalSeconds / perishable.RotAfter.TotalSeconds); + } } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index facbd1d71b6..3fc7e7247e6 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -2291,6 +2291,55 @@ public static readonly CVarDef /// public static readonly CVarDef StationGoalsChance = CVarDef.Create("game.station_goals_chance", 0.1f, CVar.SERVERONLY); + + + #region CPR System + /// + /// Controls whether the entire CPR system runs. When false, nobody can perform CPR. You should probably remove the trait too + /// if you are wishing to permanently disable the system on your server. + /// + public static readonly CVarDef EnableCPR = + CVarDef.Create("cpr.enable", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// Toggles whether or not CPR reduces rot timers(As an abstraction of delaying brain death, the IRL actual purpose of CPR) + /// + public static readonly CVarDef CPRReducesRot = + CVarDef.Create("cpr.reduces_rot", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// Toggles whether or not CPR heals airloss, included for completeness sake. I'm not going to stop you if your intention is to make CPR do nothing. + /// I guess it might be funny to troll your players with? I won't judge. + /// + public static readonly CVarDef CPRHealsAirloss = + CVarDef.Create("cpr.heals_airloss", true, CVar.REPLICATED | CVar.SERVER); + + /// + /// The chance for a patient to be resuscitated when CPR is successfully performed. + /// Setting this above 0 isn't very realistic, but people who see CPR in movies and TV will expect CPR to work this way. + /// + public static readonly CVarDef CPRResuscitationChance = + CVarDef.Create("cpr.resuscitation_chance", 0.05f, CVar.REPLICATED | CVar.SERVER); + + /// + /// By default, CPR reduces rot timers by an amount of seconds equal to the time spent performing CPR. This is an optional multiplier that can increase or decrease the amount + /// of rot reduction. Set it to 2 for if you want 3 seconds of CPR to reduce 6 seconds of rot. + /// + /// + /// If you're wondering why there isn't a CVar for setting the duration of the doafter, that's because it's not actually possible to have a timespan in cvar form + /// Curiously, it's also not possible for **shared** systems to set variable timespans. Which is where this system lives. + /// + public static readonly CVarDef CPRRotReductionMultiplier = + CVarDef.Create("cpr.rot_reduction_multiplier", 1f, CVar.REPLICATED | CVar.SERVER); + + /// + /// By default, CPR heals airloss by 1 point for every second spent performing CPR. Just like above, this directly multiplies the healing amount. + /// Set it to 2 to get 6 points of airloss healing for every 3 seconds of CPR. + /// + public static readonly CVarDef CPRAirlossReductionMultiplier = + CVarDef.Create("cpr.airloss_reduction_multiplier", 1f, CVar.REPLICATED | CVar.SERVER); + + #endregion #region Contests System diff --git a/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs new file mode 100644 index 00000000000..e01250858a1 --- /dev/null +++ b/Content.Shared/Medical/CPR/Components/CPRTrainingComponent.cs @@ -0,0 +1,33 @@ +using Robust.Shared.GameStates; +using Content.Shared.DoAfter; +using Robust.Shared.Audio; +using Robust.Shared.Serialization; + +namespace Content.Shared.Medical.CPR +{ + [RegisterComponent, NetworkedComponent] + public sealed partial class CPRTrainingComponent : Component + { + [DataField] + public SoundSpecifier CPRSound = new SoundPathSpecifier("/Audio/Effects/CPR.ogg"); + + /// + /// How long the doafter for CPR takes + /// + [DataField] + public TimeSpan DoAfterDuration = TimeSpan.FromSeconds(3); + + [DataField] + public int AirlossHeal = 6; + + [DataField] + public float CrackRibsModifier = 1f; + public EntityUid? CPRPlayingStream; + } + + [Serializable, NetSerializable] + public sealed partial class CPRDoAfterEvent : SimpleDoAfterEvent + { + + } +} diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs new file mode 100644 index 00000000000..9840b8ffbd4 --- /dev/null +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.CVars.cs @@ -0,0 +1,27 @@ +using Content.Shared.CCVar; +using Robust.Shared.Configuration; + +namespace Content.Shared.Medical.CPR +{ + public sealed partial class CPRSystem + { + [Dependency] private readonly IConfigurationManager _cfg = default!; + + public bool EnableCPR { get; private set; } + public bool HealsAirloss { get; private set; } + public bool ReducesRot { get; private set; } + public float ResuscitationChance { get; private set; } + public float RotReductionMultiplier { get; private set; } + public float AirlossReductionMultiplier { get; private set; } + + private void InitializeCVars() + { + Subs.CVar(_cfg, CCVars.EnableCPR, value => EnableCPR = value, true); + Subs.CVar(_cfg, CCVars.CPRHealsAirloss, value => HealsAirloss = value, true); + Subs.CVar(_cfg, CCVars.CPRReducesRot, value => ReducesRot = value, true); + Subs.CVar(_cfg, CCVars.CPRResuscitationChance, value => ResuscitationChance = value, true); + Subs.CVar(_cfg, CCVars.CPRRotReductionMultiplier, value => RotReductionMultiplier = value, true); + Subs.CVar(_cfg, CCVars.CPRAirlossReductionMultiplier, value => AirlossReductionMultiplier = value, true); + } + } +} diff --git a/Content.Shared/Medical/CPR/Systems/CPRSystem.cs b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs new file mode 100644 index 00000000000..799c0664a66 --- /dev/null +++ b/Content.Shared/Medical/CPR/Systems/CPRSystem.cs @@ -0,0 +1,132 @@ +using Content.Shared.Popups; +using Content.Shared.Atmos.Rotting; +using Content.Shared.Damage; +using Content.Shared.DoAfter; +using Content.Shared.Inventory; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Verbs; +using Robust.Shared.Network; +using Robust.Shared.Utility; +using Robust.Shared.Random; +using Robust.Shared.Audio.Systems; + +namespace Content.Shared.Medical.CPR +{ + public sealed partial class CPRSystem : EntitySystem + { + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly SharedRottingSystem _rottingSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly INetManager _net = default!; + public override void Initialize() + { + base.Initialize(); + InitializeCVars(); + SubscribeLocalEvent>(AddCPRVerb); + SubscribeLocalEvent(OnCPRDoAfter); + } + + private void AddCPRVerb(EntityUid uid, CPRTrainingComponent component, GetVerbsEvent args) + { + if (!EnableCPR || !args.CanInteract || !args.CanAccess + || !TryComp(args.Target, out var targetState) + || targetState.CurrentState == MobState.Alive) + return; + + InnateVerb verb = new() + { + Act = () => + { + StartCPR(uid, args.Target, component); + }, + Text = Loc.GetString("cpr-verb"), + Icon = new SpriteSpecifier.Rsi(new("Interface/Alerts/human_alive.rsi"), "health4"), + Priority = 2 + }; + args.Verbs.Add(verb); + } + + private void StartCPR(EntityUid performer, EntityUid target, CPRTrainingComponent cprComponent) + { + if (HasComp(target)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-target-rotting", ("entity", target)), performer, performer); + return; + } + + if (_inventory.TryGetSlotEntity(target, "outerClothing", out var outer)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove", ("clothing", outer)), performer, performer, PopupType.MediumCaution); + return; + } + + if (_inventory.TryGetSlotEntity(target, "mask", out var mask)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove", ("clothing", mask)), performer, performer, PopupType.MediumCaution); + return; + } + + if (_inventory.TryGetSlotEntity(performer, "mask", out var maskSelf)) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-must-remove-own-mask", ("clothing", maskSelf)), performer, performer, PopupType.MediumCaution); + return; + } + + if (_net.IsServer) + { + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person", ("target", target)), target, performer, PopupType.Medium); + _popupSystem.PopupEntity(Loc.GetString("cpr-start-second-person-patient", ("user", performer)), target, target, PopupType.Medium); + cprComponent.CPRPlayingStream = _audio.PlayPvs(cprComponent.CPRSound, performer).Value.Entity; + } + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, performer, cprComponent.DoAfterDuration, new CPRDoAfterEvent(), performer, target, performer) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + NeedHand = true, + BlockDuplicate = true + }); + } + + private void OnCPRDoAfter(EntityUid performer, CPRTrainingComponent component, CPRDoAfterEvent args) + { + component.CPRPlayingStream = _audio.Stop(component.CPRPlayingStream); + + if (args.Target == null) + return; + + if (HealsAirloss) + { + // There is PROBABLY a better way to do this, by all means let me know + var healing = new DamageSpecifier() + { + DamageDict = new() + { + { "Asphyxiation", -component.AirlossHeal * AirlossReductionMultiplier} + } + }; + _damageable.TryChangeDamage(args.Target, healing, true, origin: performer); + } + + if (ReducesRot) + _rottingSystem.ReduceAccumulator((EntityUid) args.Target, component.DoAfterDuration * RotReductionMultiplier); + + if (_robustRandom.Prob(ResuscitationChance) + && _mobThreshold.TryGetThresholdForState((EntityUid) args.Target, MobState.Dead, out var threshold) + && TryComp(args.Target, out var damageableComponent) + && TryComp(args.Target, out var state) + && damageableComponent.TotalDamage < threshold) + { + _mobStateSystem.ChangeMobState(args.Target.Value, MobState.Critical, state, performer); + } + } + } +} diff --git a/Resources/Audio/Effects/CPR.ogg b/Resources/Audio/Effects/CPR.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2c7cedd2033c906029dcd1a8d90ab45b68bb0eba GIT binary patch literal 68840 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.mL>w?>>sa5J>hq2ux0H{*l6BSYS#*3Iz* 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

UUXQ{C-_~qG0dZv#l zCq_`E1x}SXgE`LQ zbrkgM_!ki11;k1qn1qlZ>3gGrlgiLc#;m7K+btJxRUTw*KY!M+G`4Gt zL!o!!t=q2pemc#DBobXk8@LecZ1vX+_U7cn-s3Nuw@%JLOx~W!vzwR2bO^gmY#ziR zUK28rv(w!%)+>qaP>q0wG|pQ;ayN|XGy)-K(|n*6JhSMK^}`F;Gat8djN-&9FH=U! zsK3F?$t=T;b=4`y+%#7bn0I?kP%P>~@yAbAJQn=iG=p{a8IT`UnE>*YwrMn$s#oO5 z6iX+$Om%$BuDNgi;4^=+4O`#AosL~gZ`25mst4u!QO5{fn{Aw>=I2~KYu4*$`>aF< zbDaIJ<%@4cdef;_BOB-{)ka=X;=rvhAHaElEJ}-Cge??rQT1Bep`4 z!1bNMLnhXf^IT+eXG*#(G(xB&sGsoAVnit6VgDJan8Bk4j?{f?<(_{#p~^jeN+mmo zGjPAi%Fd`+hRUKI1anaj?b928=EI88MEdokw_o2lKr4qJXd)+7R^F?3vf9ZSx|Q)G%#oW)tK_F)G}i&WSGGgV`sud z@r&}eb`%(1F&@sw@a0-a7d_o{$3&06>Ph{Bc)?bOqvA$`en>yJUJO-l^t=q%U1`WL z&qmmLx9pS}1!N15KFR3mckDlFz1VA(*~nVgEZvv#^SJ1MKUePm&`;*)_Q5%%&-gK(#xusMm618_PK{3@q~EU~XZe$M&vt;f`H3MH)H${hE|8*v&w7%IHE zPrkO={i3yfl-3lldHS4xJjzgBp&%7|R^q$$kp%K$)Rj6lJJX{zYT7qr)bh~8*I|OQ z&L4bMQ=tOvb)D@n{%fE!#gpQp$R{n7&enr!dSA4fthW9_%PR7IG)munD@O8?ip}58 zca0nu96BFafheG3^VgdK=Q%hmS(?upPCSZIhtCMT-uYi{(qMOW6`rGjAR;NjPF{u*AI~i89u%rBwDN`}Qeqk4b3f(A;2d zDH3A|Ri0Lh6oH_qWe4p=I3}vleR@IH16MxdA)A{vzv6*shF6v7j2rEF`SBaE10h|Z*(!2 ze~QwpJ)Sy=2YaX)ZgcPMDT`6<@f zg%_l-DW-TWxzD}PFlbg;_7oJW+6ek9H{b>|QHofMuIW6{&+GnW`RMH3^SKbY_2tkO zvn}aqp|=Vr5&S0k2&RTn(u?#vW(9ou0$4mYcreMDiSf8$7q1eJx^zT5us!&vy;(f?OFBw;9M`vdbK zK{?81CVms{)hG|uU0UO)g_fji5c8?fnu0Eh| zkLwv}W6It$n=sDMD!>=$$m#9M2_s61?#A{)7m9y1`eG&pEwWz&ak0>}+{#72V%ud; zjgxJpME!VWj%M=@>MwT-tb^P>tC6n8JduY^!cRcVGkeb`U?!F%0DR4#*wG66TX&!Z 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/medical/components/cpr-training-component.ftl b/Resources/Locale/en-US/medical/components/cpr-training-component.ftl new file mode 100644 index 00000000000..7ed824a369f --- /dev/null +++ b/Resources/Locale/en-US/medical/components/cpr-training-component.ftl @@ -0,0 +1,6 @@ +cpr-start-second-person = You start performing CPR on {CAPITALIZE($target)}. +cpr-start-second-person-patient = {CAPITALIZE(THE($user))} starts performing CPR on you. +cpr-must-remove = You must remove {THE($clothing)} from the patient. +cpr-must-remove-own-mask = You must remove your {THE($clothing)}. +cpr-target-rotting = {CAPITALIZE($entity)} is too far gone... +cpr-verb = Perform CPR diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 600a9834fd4..f4c4b158fce 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -35,6 +35,13 @@ trait-description-Stutter = You t-t-talk with a bit of a s-s-stutter... trait-name-Snoring = Snoring trait-description-Snoring = You will snore while sleeping. +trait-name-CPRTraining = CPR Training +trait-description-CPRTraining = At some point in your life, you have received training in how to perform CPR. + This trait is automatically given for free to medical doctors, and is intended for non-medical characters + +trait-name-NormalVisionHarpy = Trichromat Modification +trait-description-NormalVisionHarpy = Your eyes have been modified by means of advanced medicine to see in the standard colors of Red, Green, and Blue. + trait-name-Southern = Southern Drawl trait-description-Southern = You have a different way of speakin'. diff --git a/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml b/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml index daf7f1195c0..f4b2fe95e14 100644 --- a/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml +++ b/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml @@ -26,6 +26,9 @@ special: - !type:AddImplantSpecial implants: [ MindShieldImplant ] + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: CorpsmanGear # see Prototypes/Roles/Jobs/Fun/misc_startinggear.yml for "BrigmedicGear" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index 3fe22792092..66466352cbe 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -14,6 +14,10 @@ - Medical - Chemistry - Maintenance + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: ChemistGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 4a65b791283..61b1df7784f 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -44,6 +44,7 @@ components: - type: PsionicBonusChance #Nyano - Summary: makes it more likely to become psionic. flatBonus: 0.025 + - type: CPRTraining - type: startingGear id: CMOGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index cc048470f0c..627b0e17dc3 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -16,6 +16,10 @@ extendedAccess: - Chemistry - Paramedic # DeltaV - Add Paramedic access + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: DoctorGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 0166a3dfadb..003eab22d25 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -15,6 +15,10 @@ access: - Medical - Maintenance + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: MedicalInternGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index 9e3484a8dcf..0937a4627ae 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -23,6 +23,10 @@ - Paramedic # DeltaV - Add Paramedic access extendedAccess: - Chemistry + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: ParamedicGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index ac6e0620f5a..d13fd18afdd 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -21,6 +21,10 @@ - Medical - Maintenance - Chemistry + special: + - !type:AddComponentSpecial + components: + - type: CPRTraining - type: startingGear id: SeniorPhysicianGear diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 16b628a56d8..b23e0216224 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -1,3 +1,20 @@ +- type: trait + id: CPRTraining + category: Mental + points: -2 + components: + - type: CPRTraining + requirements: + - !type:CharacterJobRequirement + inverted: true + jobs: + - MedicalDoctor + - Chemist + - MedicalIntern + - Paramedic + - ChiefMedicalOfficer + - Brigmedic + - type: trait id: HeavyweightDrunk category: Physical