From 2f055d1aedec5dedb7c6f12401819e7e50d639b1 Mon Sep 17 00:00:00 2001 From: rhailrake <49613070+rhailrake@users.noreply.github.com> Date: Wed, 10 May 2023 01:11:06 +0600 Subject: [PATCH] Patch 1.9 (#39) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Возьми ее на руки и скажи... * tweaks --- .../Unit/EntitySystems/DisposalUnitSystem.cs | 4 + .../Resist/EscapeInventorySystem.cs | 14 +- .../White/Carrying/BeingCarriedComponent.cs | 11 + .../White/Carrying/CarriableComponent.cs | 17 + .../White/Carrying/CarryingComponent.cs | 11 + .../White/Carrying/CarryingSystem.cs | 312 ++++++++++++++++++ Content.Shared/CCVar/CCVars.cs | 4 +- .../White/Carrying/CarryingDoAfterEvent.cs | 10 + .../Carrying/CarryingSlowdownComponent.cs | 28 ++ .../White/Carrying/CarryingSlowdownSystem.cs | 47 +++ Resources/Locale/ru-RU/white/reflect.ftl | 1 + .../Catalog/Fills/Lockers/security.yml | 4 +- .../Clothing/OuterClothing/hardsuits.yml | 30 +- .../Prototypes/Entities/Mobs/Species/base.yml | 1 + .../Objects/Specific/Medical/healing.yml | 16 +- .../Entities/Objects/Specific/chemistry.yml | 2 +- .../Weapons/Guns/Battery/battery_guns.yml | 2 + .../Structures/Machines/chem_master.yml | 2 +- .../Roles/Jobs/Cargo/quartermaster.yml | 2 +- .../Roles/Jobs/Command/head_of_personnel.yml | 2 +- .../Engineering/atmospheric_technician.yml | 1 + .../Roles/Jobs/Engineering/chief_engineer.yml | 2 +- .../Jobs/Engineering/technical_assistant.yml | 2 +- .../Jobs/Medical/chief_medical_officer.yml | 2 +- .../Roles/Jobs/Medical/medical_intern.yml | 2 +- .../Roles/Jobs/Science/research_assistant.yml | 4 +- .../Roles/Jobs/Science/research_director.yml | 2 +- 27 files changed, 495 insertions(+), 40 deletions(-) create mode 100644 Content.Server/White/Carrying/BeingCarriedComponent.cs create mode 100644 Content.Server/White/Carrying/CarriableComponent.cs create mode 100644 Content.Server/White/Carrying/CarryingComponent.cs create mode 100644 Content.Server/White/Carrying/CarryingSystem.cs create mode 100644 Content.Shared/White/Carrying/CarryingDoAfterEvent.cs create mode 100644 Content.Shared/White/Carrying/CarryingSlowdownComponent.cs create mode 100644 Content.Shared/White/Carrying/CarryingSlowdownSystem.cs diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs index 0dfc1ffe0d..55d71703d6 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs @@ -3,6 +3,7 @@ using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; using Content.Server.Disposal.Tube; +using Content.Server.Carrying; using Content.Server.Disposal.Tube.Components; using Content.Server.Disposal.Unit.Components; using Content.Server.Popups; @@ -503,6 +504,9 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem if (!CanInsert(unitId, unit, toInsertId)) return false; + if (HasComp(toInsertId)) + return false; + bool insertingSelf = userId == toInsertId; var delay = insertingSelf ? unit.EntryDelay : unit.DraggedEntryDelay; diff --git a/Content.Server/Resist/EscapeInventorySystem.cs b/Content.Server/Resist/EscapeInventorySystem.cs index 1249269de5..06f66bae3e 100644 --- a/Content.Server/Resist/EscapeInventorySystem.cs +++ b/Content.Server/Resist/EscapeInventorySystem.cs @@ -1,6 +1,10 @@ using Content.Server.Contests; using Content.Server.Popups; using Content.Server.Storage.Components; +using Content.Server.Carrying; +using Content.Shared.Storage; +using Content.Shared.Inventory; +using Content.Shared.Hands.EntitySystems; using Content.Shared.ActionBlocker; using Content.Shared.DoAfter; using Content.Shared.Hands.EntitySystems; @@ -21,6 +25,7 @@ public sealed class EscapeInventorySystem : EntitySystem [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; [Dependency] private readonly ContestsSystem _contests = default!; + [Dependency] private readonly CarryingSystem _carryingSystem = default!; /// /// You can't escape the hands of an entity this many times more massive than you. @@ -64,7 +69,7 @@ public sealed class EscapeInventorySystem : EntitySystem AttemptEscape(uid, container.Owner, component); } - private void AttemptEscape(EntityUid user, EntityUid container, CanEscapeInventoryComponent component, float multiplier = 1f) + public void AttemptEscape(EntityUid user, EntityUid container, CanEscapeInventoryComponent component, float multiplier = 1f) { if (component.IsEscaping) return; @@ -93,7 +98,14 @@ public sealed class EscapeInventorySystem : EntitySystem if (args.Handled || args.Cancelled) return; + if (TryComp(uid, out var carried)) + { + _carryingSystem.DropCarried(carried.Carrier, uid); + return; + } + _containerSystem.AttachParentToContainerOrGrid((uid, Transform(uid))); + args.Handled = true; } diff --git a/Content.Server/White/Carrying/BeingCarriedComponent.cs b/Content.Server/White/Carrying/BeingCarriedComponent.cs new file mode 100644 index 0000000000..22423900e5 --- /dev/null +++ b/Content.Server/White/Carrying/BeingCarriedComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server.Carrying +{ + /// + /// Stores the carrier of an entity being carried. + /// + [RegisterComponent] + public sealed class BeingCarriedComponent : Component + { + public EntityUid Carrier = default!; + } +} diff --git a/Content.Server/White/Carrying/CarriableComponent.cs b/Content.Server/White/Carrying/CarriableComponent.cs new file mode 100644 index 0000000000..0f6a802ad0 --- /dev/null +++ b/Content.Server/White/Carrying/CarriableComponent.cs @@ -0,0 +1,17 @@ +using System.Threading; + +namespace Content.Server.Carrying +{ + [RegisterComponent] + public sealed class CarriableComponent : Component + { + /// + /// Number of free hands required + /// to carry the entity + /// + [DataField("freeHandsRequired")] + public int FreeHandsRequired = 2; + + public CancellationTokenSource? CancelToken; + } +} diff --git a/Content.Server/White/Carrying/CarryingComponent.cs b/Content.Server/White/Carrying/CarryingComponent.cs new file mode 100644 index 0000000000..c13ca92c4e --- /dev/null +++ b/Content.Server/White/Carrying/CarryingComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server.Carrying +{ + /// + /// Added to an entity when they are carrying somebody. + /// + [RegisterComponent] + public sealed class CarryingComponent : Component + { + public EntityUid Carried = default!; + } +} diff --git a/Content.Server/White/Carrying/CarryingSystem.cs b/Content.Server/White/Carrying/CarryingSystem.cs new file mode 100644 index 0000000000..c661fadf15 --- /dev/null +++ b/Content.Server/White/Carrying/CarryingSystem.cs @@ -0,0 +1,312 @@ +using System.Threading; +using Content.Server.DoAfter; +using Content.Server.Body.Systems; +using Content.Server.Hands.Systems; +using Content.Server.Resist; +using Content.Server.Popups; +using Content.Server.Contests; +using Content.Server.Climbing; +using Content.Shared.Mobs; +using Content.Shared.DoAfter; +using Content.Shared.Buckle.Components; +using Content.Shared.Hands.Components; +using Content.Shared.Hands; +using Content.Shared.Stunnable; +using Content.Shared.Interaction.Events; +using Content.Shared.Verbs; +using Content.Shared.Carrying; +using Content.Shared.Movement.Events; +using Content.Shared.Movement.Systems; +using Content.Shared.Pulling; +using Content.Shared.Pulling.Components; +using Content.Shared.Standing; +using Content.Shared.ActionBlocker; +using Content.Shared.Throwing; +using Content.Shared.Physics.Pull; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Map.Components; + +namespace Content.Server.Carrying +{ + public sealed class CarryingSystem : EntitySystem + { + [Dependency] private readonly HandVirtualItemSystem _virtualItemSystem = default!; + [Dependency] private readonly CarryingSlowdownSystem _slowdown = default!; + [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly StandingStateSystem _standingState = default!; + [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; + [Dependency] private readonly SharedPullingSystem _pullingSystem = default!; + [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly EscapeInventorySystem _escapeInventorySystem = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly ContestsSystem _contests = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent>(AddCarryVerb); + SubscribeLocalEvent(OnVirtualItemDeleted); + SubscribeLocalEvent(OnThrow); + SubscribeLocalEvent(OnParentChanged); + SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnInteractionAttempt); + SubscribeLocalEvent(OnMoveInput); + SubscribeLocalEvent(OnMoveAttempt); + SubscribeLocalEvent(OnStandAttempt); + SubscribeLocalEvent(OnInteractedWith); + SubscribeLocalEvent(OnPullAttempt); + SubscribeLocalEvent(OnStartClimb); + SubscribeLocalEvent(OnBuckleChange); + SubscribeLocalEvent(OnDoAfter); + } + + + private void AddCarryVerb(EntityUid uid, CarriableComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + if (!CanCarry(args.User, uid, component)) + return; + + if (HasComp(args.User)) // yeah not dealing with that + return; + + if (HasComp(args.User) || HasComp(args.Target)) + return; + + if (!_mobStateSystem.IsAlive(args.User)) + return; + + if (args.User == args.Target) + return; + + AlternativeVerb verb = new() + { + Act = () => + { + StartCarryDoAfter(args.User, uid, component); + }, + Text = Loc.GetString("carry-verb"), + Priority = 2 + }; + args.Verbs.Add(verb); + } + + /// + /// Since the carried entity is stored as 2 virtual items, when deleted we want to drop them. + /// + private void OnVirtualItemDeleted(EntityUid uid, CarryingComponent component, VirtualItemDeletedEvent args) + { + if (!HasComp(args.BlockingEntity)) + return; + + DropCarried(uid, args.BlockingEntity); + } + + /// + /// Basically using virtual item passthrough to throw the carried person. A new age! + /// Maybe other things besides throwing should use virt items like this... + /// + private void OnThrow(EntityUid uid, CarryingComponent component, BeforeThrowEvent args) + { + if (!TryComp(args.ItemUid, out var virtItem) || !HasComp(virtItem.BlockingEntity)) + return; + + args.ItemUid = virtItem.BlockingEntity; + + var multiplier = _contests.MassContest(uid, virtItem.BlockingEntity); + args.ThrowStrength = 5f * multiplier; + } + + private void OnParentChanged(EntityUid uid, CarryingComponent component, ref EntParentChangedMessage args) + { + if (Transform(uid).MapID != args.OldMapId) + return; + + DropCarried(uid, component.Carried); + } + + private void OnMobStateChanged(EntityUid uid, CarryingComponent component, MobStateChangedEvent args) + { + DropCarried(uid, component.Carried); + } + + /// + /// Only let the person being carried interact with their carrier and things on their person. + /// + private void OnInteractionAttempt(EntityUid uid, BeingCarriedComponent component, InteractionAttemptEvent args) + { + if (args.Target == null) + return; + + var targetParent = Transform(args.Target.Value).ParentUid; + + if (args.Target.Value != component.Carrier && targetParent != component.Carrier && targetParent != uid) + args.Cancel(); + } + + /// + /// Try to escape via the escape inventory system. + /// + private void OnMoveInput(EntityUid uid, BeingCarriedComponent component, ref MoveInputEvent args) + { + if (!TryComp(uid, out var escape)) + return; + + if (_actionBlockerSystem.CanInteract(uid, component.Carrier)) + { + _escapeInventorySystem.AttemptEscape(uid, component.Carrier, escape, _contests.MassContest(uid, component.Carrier)); + } + } + + private void OnMoveAttempt(EntityUid uid, BeingCarriedComponent component, UpdateCanMoveEvent args) + { + args.Cancel(); + } + + private void OnStandAttempt(EntityUid uid, BeingCarriedComponent component, StandAttemptEvent args) + { + args.Cancel(); + } + + private void OnInteractedWith(EntityUid uid, BeingCarriedComponent component, GettingInteractedWithAttemptEvent args) + { + if (args.Uid != component.Carrier) + args.Cancel(); + } + + private void OnPullAttempt(EntityUid uid, BeingCarriedComponent component, PullAttemptEvent args) + { + args.Cancelled = true; + } + + private void OnStartClimb(EntityUid uid, BeingCarriedComponent component, StartClimbEvent args) + { + DropCarried(component.Carrier, uid); + } + + private void OnBuckleChange(EntityUid uid, BeingCarriedComponent component, ref BuckleChangeEvent args) + { + DropCarried(component.Carrier, uid); + } + + private void OnDoAfter(EntityUid uid, CarriableComponent component, CarryDoAfterEvent args) + { + component.CancelToken = null; + if (args.Handled || args.Cancelled) + return; + + if (!CanCarry(args.Args.User, uid, component)) + return; + + Carry(args.Args.User, uid); + args.Handled = true; + } + private void StartCarryDoAfter(EntityUid carrier, EntityUid carried, CarriableComponent component) + { + TimeSpan length = TimeSpan.FromSeconds(3); + + var mod = _contests.MassContest(carrier, carried); + + if (mod != 0) + length /= mod; + + if (length >= TimeSpan.FromSeconds(9)) + { + _popupSystem.PopupEntity(Loc.GetString("carry-too-heavy"), carried, carrier, Shared.Popups.PopupType.SmallCaution); + return; + } + + if (!HasComp(carried)) + length *= 2f; + + component.CancelToken = new CancellationTokenSource(); + + var ev = new CarryDoAfterEvent(); + var args = new DoAfterArgs(carrier, length, ev, carried, target: carried) + { + BreakOnTargetMove = true, + BreakOnUserMove = true, + NeedHand = true + }; + + _doAfterSystem.TryStartDoAfter(args); + } + + private void Carry(EntityUid carrier, EntityUid carried) + { + if (TryComp(carried, out var pullable)) + _pullingSystem.TryStopPull(pullable); + + Transform(carrier).AttachToGridOrMap(); + Transform(carried).AttachToGridOrMap(); + Transform(carried).Coordinates = Transform(carrier).Coordinates; + Transform(carried).AttachParent(Transform(carrier)); + _virtualItemSystem.TrySpawnVirtualItemInHand(carried, carrier); + _virtualItemSystem.TrySpawnVirtualItemInHand(carried, carrier); + var carryingComp = EnsureComp(carrier); + ApplyCarrySlowdown(carrier, carried); + var carriedComp = EnsureComp(carried); + EnsureComp(carried); + EnsureComp(carried); + + carryingComp.Carried = carried; + carriedComp.Carrier = carrier; + + _actionBlockerSystem.UpdateCanMove(carried); + } + + public void DropCarried(EntityUid carrier, EntityUid carried) + { + RemComp(carrier); // get rid of this first so we don't recusrively fire that event + RemComp(carrier); + RemComp(carried); + RemComp(carried); + RemComp(carried); + _actionBlockerSystem.UpdateCanMove(carried); + _virtualItemSystem.DeleteInHandsMatching(carrier, carried); + Transform(carried).AttachToGridOrMap(); + _standingState.Stand(carried); + _movementSpeed.RefreshMovementSpeedModifiers(carrier); + } + + private void ApplyCarrySlowdown(EntityUid carrier, EntityUid carried) + { + var massRatio = _contests.MassContest(carrier, carried); + + if (massRatio == 0) + massRatio = 1; + + var massRatioSq = Math.Pow(massRatio, 2); + var modifier = (1 - (0.15 / massRatioSq)); + modifier = Math.Max(0.1, modifier); + var slowdownComp = EnsureComp(carrier); + _slowdown.SetModifier(carrier, (float) modifier, (float) modifier, slowdownComp); + } + + public bool CanCarry(EntityUid carrier, EntityUid carried, CarriableComponent? carriedComp = null) + { + if (!Resolve(carried, ref carriedComp, false)) + return false; + + if (carriedComp.CancelToken != null) + return false; + + if (!HasComp(Transform(carrier).ParentUid)) + return false; + + if (HasComp(carrier) || HasComp(carried)) + return false; + + if (!TryComp(carrier, out var hands)) + return false; + + if (hands.CountFreeHands() < carriedComp.FreeHandsRequired) + return false; + + return true; + } + } +} diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index a34d2f762e..9c0edfae7d 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1329,7 +1329,7 @@ namespace Content.Shared.CCVar /// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible. /// public static readonly CVarDef CameraRotationLocked = - CVarDef.Create("shuttle.camera_rotation_locked", false, CVar.REPLICATED); + CVarDef.Create("shuttle.camera_rotation_locked", true, CVar.REPLICATED); /// /// Whether the arrivals terminal should be on a planet map. @@ -1424,7 +1424,7 @@ namespace Content.Shared.CCVar /// Time in minutes after round start to auto-call the shuttle. Set to zero to disable. /// public static readonly CVarDef EmergencyShuttleAutoCallTime = - CVarDef.Create("shuttle.auto_call_time", 90, CVar.SERVERONLY); + CVarDef.Create("shuttle.auto_call_time", 0, CVar.SERVERONLY); /// /// Time in minutes after the round was extended (by recalling the shuttle) to call diff --git a/Content.Shared/White/Carrying/CarryingDoAfterEvent.cs b/Content.Shared/White/Carrying/CarryingDoAfterEvent.cs new file mode 100644 index 0000000000..642dde5ddf --- /dev/null +++ b/Content.Shared/White/Carrying/CarryingDoAfterEvent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.Serialization; +using Content.Shared.DoAfter; + +namespace Content.Shared.Carrying +{ + [Serializable, NetSerializable] + public sealed class CarryDoAfterEvent : SimpleDoAfterEvent + { + } +} diff --git a/Content.Shared/White/Carrying/CarryingSlowdownComponent.cs b/Content.Shared/White/Carrying/CarryingSlowdownComponent.cs new file mode 100644 index 0000000000..f9913c36a0 --- /dev/null +++ b/Content.Shared/White/Carrying/CarryingSlowdownComponent.cs @@ -0,0 +1,28 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Carrying +{ + [RegisterComponent, NetworkedComponent, Access(typeof(CarryingSlowdownSystem))] + + public sealed class CarryingSlowdownComponent : Component + { + [DataField("walkModifier", required: true)] [ViewVariables(VVAccess.ReadWrite)] + public float WalkModifier = 1.0f; + + [DataField("sprintModifier", required: true)] [ViewVariables(VVAccess.ReadWrite)] + public float SprintModifier = 1.0f; + } + + [Serializable, NetSerializable] + public sealed class CarryingSlowdownComponentState : ComponentState + { + public float WalkModifier; + public float SprintModifier; + public CarryingSlowdownComponentState(float walkModifier, float sprintModifier) + { + WalkModifier = walkModifier; + SprintModifier = sprintModifier; + } + } +} \ No newline at end of file diff --git a/Content.Shared/White/Carrying/CarryingSlowdownSystem.cs b/Content.Shared/White/Carrying/CarryingSlowdownSystem.cs new file mode 100644 index 0000000000..9b9c8cec10 --- /dev/null +++ b/Content.Shared/White/Carrying/CarryingSlowdownSystem.cs @@ -0,0 +1,47 @@ +using Content.Shared.Movement.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Carrying +{ + public sealed class CarryingSlowdownSystem : EntitySystem + { + [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + SubscribeLocalEvent(OnRefreshMoveSpeed); + } + + public void SetModifier(EntityUid uid, float walkSpeedModifier, float sprintSpeedModifier, CarryingSlowdownComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + component.WalkModifier = walkSpeedModifier; + component.SprintModifier = sprintSpeedModifier; + _movementSpeed.RefreshMovementSpeedModifiers(uid); + } + private void OnGetState(EntityUid uid, CarryingSlowdownComponent component, ref ComponentGetState args) + { + args.State = new CarryingSlowdownComponentState(component.WalkModifier, component.SprintModifier); + } + + private void OnHandleState(EntityUid uid, CarryingSlowdownComponent component, ref ComponentHandleState args) + { + if (args.Current is CarryingSlowdownComponentState state) + { + component.WalkModifier = state.WalkModifier; + component.SprintModifier = state.SprintModifier; + + _movementSpeed.RefreshMovementSpeedModifiers(uid); + } + } + private void OnRefreshMoveSpeed(EntityUid uid, CarryingSlowdownComponent component, RefreshMovementSpeedModifiersEvent args) + { + args.ModifySpeed(component.WalkModifier, component.SprintModifier); + } + } +} diff --git a/Resources/Locale/ru-RU/white/reflect.ftl b/Resources/Locale/ru-RU/white/reflect.ftl index 8095de12df..49f31f81e5 100644 --- a/Resources/Locale/ru-RU/white/reflect.ftl +++ b/Resources/Locale/ru-RU/white/reflect.ftl @@ -1 +1,2 @@ reflect-shot = Отразил! +carry-verb = Тащить на руках diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 86e3eb3f44..d4c9a96c6c 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -30,7 +30,7 @@ - type: StorageFill contents: - id: FlashlightSeclite - - id: WeaponEgun + - id: WeaponDisabler - id: ClothingHeadHatWarden - id: ClothingHeadHatBeretWarden - id: ClothingBeltSecurityFilled @@ -105,7 +105,7 @@ prob: 0.7 - id: ClothingNeckCloakMoth #bzzz Moth-pocalypse prob: 0.15 - - id: WeaponEgun + - id: WeaponDisabler - type: entity id: LockerDetectiveFilled diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index f88ad818ac..7f109b532a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -785,7 +785,7 @@ - type: entity parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitDeathsquad - name: death squad hardsuit + name: deathsquad hardsuit description: An advanced hardsuit favored by commandos for use in special operations. components: - type: Sprite @@ -795,26 +795,24 @@ - type: PressureProtection highPressureMultiplier: 0.02 lowPressureMultiplier: 1000 - - type: TemperatureProtection - coefficient: 0.001 - - type: ExplosionResistance - damageCoefficient: 0.2 - - type: Armor - modifiers: - coefficients: - Blunt: 0.1 #best armor in the game - Slash: 0.1 - Piercing: 0.1 - Heat: 0.1 - Radiation: 0.1 - Caustic: 0.1 - type: ClothingSpeedModifier walkModifier: 1.0 sprintModifier: 1.0 - - type: HeldSpeedModifier + - type: Armor + modifiers: + coefficients: + Blunt: 0.2 #best armor in the game + Slash: 0.2 + Piercing: 0.2 + Heat: 0.2 + Radiation: 0.2 + Caustic: 0.2 + - type: ExplosionResistance + damageCoefficient: 0.2 - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitDeathsquad + #CBURN Hardsuit - type: entity parent: ClothingOuterHardsuitBase @@ -913,4 +911,4 @@ sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetHardsuitSanta \ No newline at end of file + clothingPrototype: ClothingHeadHelmetHardsuitSanta diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 2887e6651d..4e145b8967 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -225,6 +225,7 @@ - CanPilot - FootstepSound - DoorBumpOpener + - type: Carriable - type: entity save: false diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 25b9823175..9b7da9f2fa 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -323,7 +323,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Dexalin Quantity: 10 @@ -346,7 +346,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Dylovene Quantity: 10 @@ -369,7 +369,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Hyronalin Quantity: 10 @@ -392,7 +392,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Iron Quantity: 10 @@ -438,7 +438,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Kelotane Quantity: 10 @@ -484,7 +484,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: SpaceDrugs Quantity: 15 @@ -497,7 +497,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Tricordrazine Quantity: 10 @@ -569,7 +569,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 reagents: - ReagentId: Romerol Quantity: 10 diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index 2fad96411f..f909521dad 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -441,7 +441,7 @@ - type: SolutionContainerManager solutions: food: - maxVol: 20 + maxVol: 50 - type: SolutionSpiker sourceSolution: food - type: DeleteOnTrigger diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index b36af49041..fbcb55ae38 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -733,3 +733,5 @@ - type: Appearance - type: StaticPrice price: 800 + - type: Item + size: 20 diff --git a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml index e215a70f4c..cd893c4326 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml @@ -18,7 +18,7 @@ sprite: Structures/Machines/mixer.rsi state: mixer_loaded - type: ChemMaster - pillDosageLimit: 20 + pillDosageLimit: 50 - type: Physics bodyType: Static - type: Fixtures diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 42cab23dde..bc5033dc58 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -22,7 +22,7 @@ whitelistedSpecies: - Human - Dwarf - canBeAntag: false + canBeAntag: true access: - Cargo - Salvage diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 79936c86c8..78feba6477 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -23,7 +23,7 @@ supervisors: job-supervisors-captain whitelistedSpecies: - Human - canBeAntag: false + canBeAntag: true access: - Command - HeadOfPersonnel diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index e09f48465c..fa763b05cc 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -10,6 +10,7 @@ startingGear: AtmosphericTechnicianGear icon: "JobIconAtmosphericTechnician" supervisors: job-supervisors-ce + canBeAntag: true access: - Maintenance - Engineering diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index af7f118de4..ce85dcb9ff 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -23,7 +23,7 @@ whitelistedSpecies: - Human - Dwarf - canBeAntag: false + canBeAntag: true access: - Maintenance - Engineering diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 1372195889..02b3f677ff 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -11,7 +11,7 @@ startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" supervisors: job-supervisors-engineering - canBeAntag: false + canBeAntag: true access: - Maintenance - Engineering diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 86951ee98b..6d28f2e9d8 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -25,7 +25,7 @@ whitelistedSpecies: - Human - Dwarf - canBeAntag: false + canBeAntag: true access: - Medical - Command diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index c6ff734587..31d5b0ebbe 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -11,7 +11,7 @@ startingGear: MedicalInternGear icon: "JobIconMedicalIntern" supervisors: job-supervisors-medicine - canBeAntag: false + canBeAntag: true access: - Medical - Maintenance diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 379cfb8780..92233a245d 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -1,4 +1,4 @@ -- type: job +- type: job id: ResearchAssistant name: job-name-research-assistant description: job-description-research-assistant @@ -11,7 +11,7 @@ startingGear: ResearchAssistantGear icon: "JobIconResearchAssistant" supervisors: job-supervisors-science - canBeAntag: false + canBeAntag: true access: - Research - Maintenance diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 7441e7f0fd..306a35f9ee 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -17,7 +17,7 @@ whitelistedSpecies: - Human - Dwarf - canBeAntag: false + canBeAntag: true access: - Research - Command