diff --git a/Content.Client/CombatMode/CombatModeComponent.cs b/Content.Client/CombatMode/CombatModeComponent.cs deleted file mode 100644 index 441a9ebcfc..0000000000 --- a/Content.Client/CombatMode/CombatModeComponent.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Content.Client.ContextMenu.UI; -using Content.Client.Verbs; -using Content.Shared.CombatMode; -using Content.Shared.Targeting; -using Robust.Client.Player; -using Robust.Client.UserInterface; - -namespace Content.Client.CombatMode -{ - [RegisterComponent] - [ComponentReference(typeof(SharedCombatModeComponent))] - public sealed class CombatModeComponent : SharedCombatModeComponent - { - [Dependency] private readonly IPlayerManager _playerManager = default!; - - public override bool IsInCombatMode - { - get => base.IsInCombatMode; - set - { - base.IsInCombatMode = value; - UpdateHud(); - } - } - - public override TargetingZone ActiveZone - { - get => base.ActiveZone; - set - { - base.ActiveZone = value; - UpdateHud(); - } - } - - private void UpdateHud() - { - if (Owner != _playerManager.LocalPlayer?.ControlledEntity) - { - return; - } - - IoCManager.Resolve().GetUIController().Close(); - } - } -} diff --git a/Content.Client/CombatMode/CombatModeSystem.cs b/Content.Client/CombatMode/CombatModeSystem.cs index 6c9de790dc..63792385c1 100644 --- a/Content.Client/CombatMode/CombatModeSystem.cs +++ b/Content.Client/CombatMode/CombatModeSystem.cs @@ -12,27 +12,36 @@ namespace Content.Client.CombatMode { [Dependency] private readonly IPlayerManager _playerManager = default!; + public event Action? LocalPlayerCombatModeUpdated; + public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnHandleState); + SubscribeLocalEvent(OnHandleState); } - private void OnHandleState(EntityUid uid, SharedCombatModeComponent component, ref ComponentHandleState args) + private void OnHandleState(EntityUid uid, CombatModeComponent component, ref ComponentHandleState args) { if (args.Current is not CombatModeComponentState state) return; component.IsInCombatMode = state.IsInCombatMode; component.ActiveZone = state.TargetingZone; + UpdateHud(uid); } + public override void Shutdown() { CommandBinds.Unregister(); base.Shutdown(); } + private void OnTargetingZoneChanged(TargetingZone obj) + { + EntityManager.RaisePredictiveEvent(new CombatModeSystemMessages.SetTargetZoneMessage(obj)); + } + public bool IsInCombatMode() { var entity = _playerManager.LocalPlayer?.ControlledEntity; @@ -43,9 +52,26 @@ namespace Content.Client.CombatMode return IsInCombatMode(entity.Value); } - private void OnTargetingZoneChanged(TargetingZone obj) + public override void SetInCombatMode(EntityUid entity, bool inCombatMode, CombatModeComponent? component = null) { - EntityManager.RaisePredictiveEvent(new CombatModeSystemMessages.SetTargetZoneMessage(obj)); + base.SetInCombatMode(entity, inCombatMode, component); + UpdateHud(entity); + } + + public override void SetActiveZone(EntityUid entity, TargetingZone zone, CombatModeComponent? component = null) + { + base.SetActiveZone(entity, zone, component); + UpdateHud(entity); + } + + private void UpdateHud(EntityUid entity) + { + if (entity != _playerManager.LocalPlayer?.ControlledEntity) + { + return; + } + + LocalPlayerCombatModeUpdated?.Invoke(); } } } diff --git a/Content.Client/ContextMenu/UI/ContextMenuUIController.cs b/Content.Client/ContextMenu/UI/ContextMenuUIController.cs index 8544b17b14..b6737b9768 100644 --- a/Content.Client/ContextMenu/UI/ContextMenuUIController.cs +++ b/Content.Client/ContextMenu/UI/ContextMenuUIController.cs @@ -1,8 +1,10 @@ using System.Threading; +using Content.Client.CombatMode; using Content.Client.Gameplay; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Timer = Robust.Shared.Timing.Timer; + namespace Content.Client.ContextMenu.UI { /// @@ -13,7 +15,7 @@ namespace Content.Client.ContextMenu.UI /// /// This largely involves setting up timers to open and close sub-menus when hovering over other menu elements. /// - public sealed class ContextMenuUIController : UIController, IOnStateEntered, IOnStateExited + public sealed class ContextMenuUIController : UIController, IOnStateEntered, IOnStateExited, IOnSystemChanged { public static readonly TimeSpan HoverDelay = TimeSpan.FromSeconds(0.2); @@ -206,5 +208,20 @@ namespace Content.Client.ContextMenu.UI menu.InvalidateMeasure(); } + + private void OnCombatModeUpdated() + { + Close(); + } + + public void OnSystemLoaded(CombatModeSystem system) + { + system.LocalPlayerCombatModeUpdated += OnCombatModeUpdated; + } + + public void OnSystemUnloaded(CombatModeSystem system) + { + system.LocalPlayerCombatModeUpdated -= OnCombatModeUpdated; + } } } diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 52e6386bba..91ac67beda 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -1,5 +1,5 @@ -using Content.Client.CombatMode; using Content.Client.Gameplay; +using Content.Shared.CombatMode; using Content.Shared.Hands.Components; using Content.Shared.Mobs.Components; using Content.Shared.StatusEffect; diff --git a/Content.Server/CombatMode/CombatModeComponent.cs b/Content.Server/CombatMode/CombatModeComponent.cs deleted file mode 100644 index 94674417a8..0000000000 --- a/Content.Server/CombatMode/CombatModeComponent.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Content.Shared.CombatMode; - -namespace Content.Server.CombatMode -{ - /// - /// Stores whether an entity is in "combat mode" - /// This is used to differentiate between regular item interactions or - /// using *everything* as a weapon. - /// - [RegisterComponent] - [ComponentReference(typeof(SharedCombatModeComponent))] - public sealed class CombatModeComponent : SharedCombatModeComponent - { - } -} diff --git a/Content.Server/CombatMode/CombatModeSystem.cs b/Content.Server/CombatMode/CombatModeSystem.cs index b539f55254..3ad2e5aa19 100644 --- a/Content.Server/CombatMode/CombatModeSystem.cs +++ b/Content.Server/CombatMode/CombatModeSystem.cs @@ -11,10 +11,10 @@ namespace Content.Server.CombatMode { base.Initialize(); - SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnGetState); } - private void OnGetState(EntityUid uid, SharedCombatModeComponent component, ref ComponentGetState args) + private void OnGetState(EntityUid uid, CombatModeComponent component, ref ComponentGetState args) { args.State = new CombatModeComponentState(component.IsInCombatMode, component.ActiveZone); } diff --git a/Content.Server/NPC/Systems/NPCCombatSystem.Melee.cs b/Content.Server/NPC/Systems/NPCCombatSystem.Melee.cs index d8b0902ad3..4b2560f236 100644 --- a/Content.Server/NPC/Systems/NPCCombatSystem.Melee.cs +++ b/Content.Server/NPC/Systems/NPCCombatSystem.Melee.cs @@ -1,6 +1,6 @@ -using Content.Server.CombatMode; using Content.Server.NPC.Components; using Content.Server.NPC.Events; +using Content.Shared.CombatMode; using Content.Shared.NPC; using Content.Shared.Weapons.Melee; using Robust.Shared.Map; @@ -69,7 +69,7 @@ public sealed partial class NPCCombatSystem { if (TryComp(uid, out var combatMode)) { - combatMode.IsInCombatMode = false; + _combat.SetInCombatMode(uid, false, combatMode); } _steering.Unregister(component.Owner); @@ -79,7 +79,7 @@ public sealed partial class NPCCombatSystem { if (TryComp(uid, out var combatMode)) { - combatMode.IsInCombatMode = true; + _combat.SetInCombatMode(uid, true, combatMode); } // TODO: Cleanup later, just looking for parity for now. diff --git a/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs b/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs index 19367703b9..eeec0383c6 100644 --- a/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs +++ b/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs @@ -8,6 +8,7 @@ namespace Content.Server.NPC.Systems; public sealed partial class NPCCombatSystem { + [Dependency] private readonly SharedCombatModeSystem _combat = default!; [Dependency] private readonly RotateToFaceSystem _rotate = default!; // TODO: Don't predict for hitscan @@ -26,9 +27,9 @@ public sealed partial class NPCCombatSystem private void OnRangedStartup(EntityUid uid, NPCRangedCombatComponent component, ComponentStartup args) { - if (TryComp(uid, out var combat)) + if (TryComp(uid, out var combat)) { - combat.IsInCombatMode = true; + _combat.SetInCombatMode(uid, true, combat); } else { @@ -38,9 +39,9 @@ public sealed partial class NPCCombatSystem private void OnRangedShutdown(EntityUid uid, NPCRangedCombatComponent component, ComponentShutdown args) { - if (TryComp(uid, out var combat)) + if (TryComp(uid, out var combat)) { - combat.IsInCombatMode = false; + _combat.SetInCombatMode(uid, false, combat); } } @@ -48,7 +49,7 @@ public sealed partial class NPCCombatSystem { var bodyQuery = GetEntityQuery(); var xformQuery = GetEntityQuery(); - var combatQuery = GetEntityQuery(); + var combatQuery = GetEntityQuery(); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var comp, out var xform)) @@ -73,7 +74,7 @@ public sealed partial class NPCCombatSystem if (combatQuery.TryGetComponent(uid, out var combatMode)) { - combatMode.IsInCombatMode = true; + _combat.SetInCombatMode(uid, true, combatMode); } if (!_gun.TryGetGun(uid, out var gunUid, out var gun)) diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs index 526eaab55a..8fd83e5162 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs @@ -1,7 +1,7 @@ -using Content.Server.CombatMode; using Content.Server.Destructible; using Content.Server.NPC.Components; using Content.Server.NPC.Pathfinding; +using Content.Shared.CombatMode; using Content.Shared.Doors.Components; using Content.Shared.NPC; using Robust.Shared.Physics; @@ -115,7 +115,7 @@ public sealed partial class NPCSteeringSystem { if (_melee.TryGetWeapon(uid, out var meleeUid, out var meleeWeapon) && meleeWeapon.NextAttack <= _timing.CurTime && TryComp(uid, out var combatMode)) { - combatMode.IsInCombatMode = true; + _combat.SetInCombatMode(uid, true, combatMode); var destructibleQuery = GetEntityQuery(); // TODO: This is a hack around grilles and windows. @@ -131,7 +131,7 @@ public sealed partial class NPCSteeringSystem } } - combatMode.IsInCombatMode = false; + _combat.SetInCombatMode(uid, false, combatMode); if (obstacleEnts.Count == 0) return SteeringObstacleStatus.Completed; diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.cs index 70f6de7410..8df27d48e8 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.cs @@ -7,6 +7,7 @@ using Content.Server.NPC.Components; using Content.Server.NPC.Events; using Content.Server.NPC.Pathfinding; using Content.Shared.CCVar; +using Content.Shared.CombatMode; using Content.Shared.Interaction; using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; @@ -55,6 +56,7 @@ namespace Content.Server.NPC.Systems [Dependency] private readonly SharedMoverController _mover = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedCombatModeSystem _combat = default!; /// /// Enabled antistuck detection so if an NPC is in the same spot for a while it will re-path. diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index 86271b0b0c..338ff50698 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -110,7 +110,7 @@ namespace Content.Server.Strip { base.StartOpeningStripper(user, component, openInCombat); - if (TryComp(user, out var mode) && mode.IsInCombatMode && !openInCombat) + if (TryComp(user, out var mode) && mode.IsInCombatMode && !openInCombat) return; if (TryComp(user, out var actor)) diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 234e795861..212ac90e29 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; using Content.Server.Chemistry.EntitySystems; -using Content.Server.CombatMode; using Content.Server.CombatMode.Disarm; using Content.Server.Contests; using Content.Server.Examine; @@ -202,7 +201,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem RaiseNetworkEvent(new DamageEffectEvent(Color.Red, targets), filter); } - private float CalculateDisarmChance(EntityUid disarmer, EntityUid disarmed, EntityUid? inTargetHand, SharedCombatModeComponent disarmerComp) + private float CalculateDisarmChance(EntityUid disarmer, EntityUid disarmed, EntityUid? inTargetHand, CombatModeComponent disarmerComp) { if (HasComp(disarmer)) return 1.0f; diff --git a/Content.Server/Zombies/ZombifyOnDeathSystem.cs b/Content.Server/Zombies/ZombifyOnDeathSystem.cs index 5c3c262bff..97c6a251b4 100644 --- a/Content.Server/Zombies/ZombifyOnDeathSystem.cs +++ b/Content.Server/Zombies/ZombifyOnDeathSystem.cs @@ -5,7 +5,6 @@ using Content.Server.Body.Systems; using Content.Server.Chat; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; -using Content.Server.CombatMode; using Content.Server.Disease.Components; using Content.Server.Ghost.Roles.Components; using Content.Server.Humanoid; @@ -18,6 +17,7 @@ using Content.Server.Popups; using Content.Server.Speech.Components; using Content.Server.Temperature.Components; using Content.Server.Traitor; +using Content.Shared.CombatMode; using Content.Shared.Damage; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -53,6 +53,7 @@ namespace Content.Server.Zombies [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; [Dependency] private readonly AutoEmoteSystem _autoEmote = default!; [Dependency] private readonly EmoteOnDamageSystem _emoteOnDamage = default!; + [Dependency] private readonly SharedCombatModeSystem _combat = default!; [Dependency] private readonly IChatManager _chatMan = default!; [Dependency] private readonly IPrototypeManager _proto = default!; @@ -116,7 +117,7 @@ namespace Content.Server.Zombies //in an attempt to make an entity not attack. This is the easiest way to do it. RemComp(target); var combat = AddComp(target); - combat.IsInCombatMode = true; + _combat.SetInCombatMode(target, true, combat); //This is the actual damage of the zombie. We assign the visual appearance //and range here because of stuff we'll find out later diff --git a/Content.Shared/CombatMode/SharedCombatModeComponent.cs b/Content.Shared/CombatMode/CombatModeComponent.cs similarity index 81% rename from Content.Shared/CombatMode/SharedCombatModeComponent.cs rename to Content.Shared/CombatMode/CombatModeComponent.cs index 833e400ca5..a7ec35e3e4 100644 --- a/Content.Shared/CombatMode/SharedCombatModeComponent.cs +++ b/Content.Shared/CombatMode/CombatModeComponent.cs @@ -1,17 +1,20 @@ using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Content.Shared.Targeting; -using Content.Shared.Verbs; using Robust.Shared.Audio; using Robust.Shared.GameStates; -using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Utility; namespace Content.Shared.CombatMode { - [NetworkedComponent()] - public abstract class SharedCombatModeComponent : Component + /// + /// Stores whether an entity is in "combat mode" + /// This is used to differentiate between regular item interactions or + /// using *everything* as a weapon. + /// + [RegisterComponent, NetworkedComponent] + [Access(typeof(SharedCombatModeSystem))] + public sealed class CombatModeComponent : Component { #region Disarm @@ -40,7 +43,7 @@ namespace Content.Shared.CombatMode public InstantAction? CombatToggleAction; [ViewVariables(VVAccess.ReadWrite)] - public virtual bool IsInCombatMode + public bool IsInCombatMode { get => _isInCombatMode; set @@ -55,7 +58,7 @@ namespace Content.Shared.CombatMode } [ViewVariables(VVAccess.ReadWrite)] - public virtual TargetingZone ActiveZone + public TargetingZone ActiveZone { get => _activeZone; set diff --git a/Content.Shared/CombatMode/Pacification/PacificationSystem.cs b/Content.Shared/CombatMode/Pacification/PacificationSystem.cs index 3f0e79dc31..a223c61053 100644 --- a/Content.Shared/CombatMode/Pacification/PacificationSystem.cs +++ b/Content.Shared/CombatMode/Pacification/PacificationSystem.cs @@ -6,6 +6,7 @@ namespace Content.Shared.CombatMode.Pacification public sealed class PacificationSystem : EntitySystem { [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly SharedCombatModeSystem _combatSystem = default!; public override void Initialize() { @@ -22,13 +23,13 @@ namespace Content.Shared.CombatMode.Pacification private void OnStartup(EntityUid uid, PacifiedComponent component, ComponentStartup args) { - if (!TryComp(uid, out var combatMode)) + if (!TryComp(uid, out var combatMode)) return; if (combatMode.CanDisarm != null) - combatMode.CanDisarm = false; + _combatSystem.SetCanDisarm(uid, false, combatMode); - combatMode.IsInCombatMode = false; + _combatSystem.SetInCombatMode(uid, false, combatMode); if (combatMode.CombatToggleAction != null) { @@ -38,11 +39,11 @@ namespace Content.Shared.CombatMode.Pacification private void OnShutdown(EntityUid uid, PacifiedComponent component, ComponentShutdown args) { - if (!TryComp(uid, out var combatMode)) + if (!TryComp(uid, out var combatMode)) return; if (combatMode.CanDisarm != null) - combatMode.CanDisarm = true; + _combatSystem.SetCanDisarm(uid, true, combatMode); if (combatMode.CombatToggleAction != null) _actionsSystem.SetEnabled(combatMode.CombatToggleAction, true); diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index c5c5b3d880..fb05e32039 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -15,12 +15,12 @@ namespace Content.Shared.CombatMode { base.Initialize(); - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnActionPerform); + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnActionPerform); } - private void OnStartup(EntityUid uid, SharedCombatModeComponent component, ComponentStartup args) + private void OnStartup(EntityUid uid, CombatModeComponent component, ComponentStartup args) { if (component.CombatToggleAction == null && _protoMan.TryIndex(component.CombatToggleActionId, out InstantActionPrototype? toggleProto)) @@ -32,26 +32,52 @@ namespace Content.Shared.CombatMode _actionsSystem.AddAction(uid, component.CombatToggleAction, null); } - private void OnShutdown(EntityUid uid, SharedCombatModeComponent component, ComponentShutdown args) + private void OnShutdown(EntityUid uid, CombatModeComponent component, ComponentShutdown args) { if (component.CombatToggleAction != null) _actionsSystem.RemoveAction(uid, component.CombatToggleAction); } - public bool IsInCombatMode(EntityUid? entity, SharedCombatModeComponent? component = null) - { - return entity != null && Resolve(entity.Value, ref component, false) && component.IsInCombatMode; - } - - private void OnActionPerform(EntityUid uid, SharedCombatModeComponent component, ToggleCombatActionEvent args) + private void OnActionPerform(EntityUid uid, CombatModeComponent component, ToggleCombatActionEvent args) { if (args.Handled) return; - component.IsInCombatMode = !component.IsInCombatMode; + SetInCombatMode(uid, !component.IsInCombatMode, component); args.Handled = true; } + public void SetCanDisarm(EntityUid entity, bool canDisarm, CombatModeComponent? component = null) + { + if (!Resolve(entity, ref component)) + return; + + component.CanDisarm = canDisarm; + } + + public bool IsInCombatMode(EntityUid? entity, CombatModeComponent? component = null) + { + return entity != null && Resolve(entity.Value, ref component, false) && component.IsInCombatMode; + } + + public virtual void SetInCombatMode(EntityUid entity, bool inCombatMode, + CombatModeComponent? component = null) + { + if (!Resolve(entity, ref component)) + return; + + component.IsInCombatMode = inCombatMode; + } + + public virtual void SetActiveZone(EntityUid entity, TargetingZone zone, + CombatModeComponent? component = null) + { + if (!Resolve(entity, ref component)) + return; + + component.ActiveZone = zone; + } + [Serializable, NetSerializable] protected sealed class CombatModeComponentState : ComponentState { diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index aaee8de719..7d8de660a2 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -250,7 +250,7 @@ namespace Content.Shared.Interaction if (target != null && Deleted(target.Value)) return; - if (!altInteract && TryComp(user, out SharedCombatModeComponent? combatMode) && combatMode.IsInCombatMode) + if (!altInteract && TryComp(user, out CombatModeComponent? combatMode) && combatMode.IsInCombatMode) { // Eat the input return; diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index abc35d8300..bc42856392 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -73,10 +73,6 @@ description: Nice to have, but you can't build a civilization on a foundation of honey alone. components: - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MovementSpeedModifier baseWalkSpeed : 7 baseSprintSpeed : 7 @@ -134,10 +130,6 @@ description: How nice a bee. Oh no, it looks angry and wants my pizza. components: - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MeleeWeapon hidden: true angle: 0 @@ -652,7 +644,6 @@ description: A large marsupial herbivore. It has powerful hind legs and... boxing gloves? components: - type: CombatMode - disarm: null - type: Sprite drawdepth: Mobs layers: @@ -690,7 +681,6 @@ description: New church of neo-darwinists actually believe that EVERY animal evolved from a monkey. Tastes like pork, and killing them is both fun and relaxing. components: - type: CombatMode - disarm: null - type: NameIdentifier group: Monkey - type: SentienceTarget @@ -858,10 +848,6 @@ enabled: false autoPopulate: false name: action-name-combat - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: Bloodstream bloodMaxVolume: 50 - type: DiseaseCarrier #The other class lab animal and disease vector @@ -1329,10 +1315,6 @@ - id: FoodMeatSpider amount: 2 - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MobThresholds thresholds: 0: Alive @@ -2028,10 +2010,6 @@ types: Blunt: 0.1 - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MeleeWeapon hidden: true soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/bear.yml b/Resources/Prototypes/Entities/Mobs/NPCs/bear.yml index 25bae1d497..69a2a99670 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/bear.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/bear.yml @@ -56,10 +56,6 @@ bloodMaxVolume: 300 bloodReagent: Cryoxadone - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: Temperature heatDamageThreshold: 500 coldDamageThreshold: 0 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 2d3e5d2508..66087f4d7b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -20,10 +20,6 @@ - map: [ "enum.DamageStateVisualLayers.Base" ] state: base - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: Physics - type: Fixtures fixtures: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml index ac6379ab7a..9c98789536 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml @@ -39,10 +39,6 @@ - type: Bloodstream bloodMaxVolume: 100 - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MeleeWeapon hidden: true soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml index e3314820bc..b5029cedb8 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml @@ -57,10 +57,6 @@ - type: Bloodstream bloodMaxVolume: 50 - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MeleeWeapon hidden: true soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 783d286e17..e8a22f7045 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -9,7 +9,6 @@ - type: DiseaseProtection protection: 1 - type: CombatMode - disarm: null - type: InputMover - type: MobMover - type: HTN diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index f897fc3024..67524ec40f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -18,10 +18,6 @@ - Dragon - type: Speech - type: CombatMode - disarmAction: - enabled: false - autoPopulate: false - name: action-name-disarm - type: MobMover - type: InputMover - type: MovementSpeedModifier diff --git a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml index c6b5d46e59..0f9b19ce85 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml @@ -5,7 +5,6 @@ id: MobDwarf components: - type: CombatMode - disarm: null - type: InteractionPopup successChance: 1 interactSuccessString: hugging-success-generic diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 60f86a10b8..7da10c790f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -5,7 +5,6 @@ id: MobHuman components: - type: CombatMode - disarm: null - type: InteractionPopup successChance: 1 interactSuccessString: hugging-success-generic diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml index 4890c8b6a8..254bd0ff09 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml @@ -5,7 +5,6 @@ id: MobReptilian components: - type: CombatMode - disarm: null - type: InteractionPopup successChance: 1 interactSuccessString: hugging-success-generic diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml index c379eeb95e..d1fa5a268f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/slime.yml @@ -4,7 +4,6 @@ id: MobSlimePerson components: - type: CombatMode - disarm: null - type: InteractionPopup successChance: 1 interactSuccessString: hugging-success-generic diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml index a74e95680c..6862c3d92e 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/vox.yml @@ -5,7 +5,6 @@ id: MobVox components: - type: CombatMode - disarm: null - type: InteractionPopup successChance: 1 interactSuccessString: hugging-success-generic