HandsSystem Refactor (#38438)
* checkpoint * pt 2 * pt... i forgot * pt 4 * patch * More test fixes * optimization!!! * the REAL hand system * fix RetractableItemActionSystem.cs oversight * the review * test * remove test usage of body prototype * Update Content.IntegrationTests/Tests/Interaction/InteractionTest.cs Co-authored-by: Tayrtahn <tayrtahn@gmail.com> * hellcode * hellcode 2 * Minor cleanup * test * Chasing the last of the bugs * changes --------- Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
This commit is contained in:
@@ -12,6 +12,7 @@ using Content.Shared.Database;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
@@ -51,6 +52,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
[Dependency] protected readonly ISharedAdminLogManager AdminLogger = default!;
|
||||
[Dependency] protected readonly ActionBlockerSystem Blocker = default!;
|
||||
[Dependency] protected readonly DamageableSystem Damageable = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly InventorySystem _inventory = default!;
|
||||
[Dependency] private readonly MeleeSoundSystem _meleeSound = default!;
|
||||
[Dependency] protected readonly MobStateSystem MobState = default!;
|
||||
@@ -288,15 +290,14 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
}
|
||||
|
||||
// Use inhands entity if we got one.
|
||||
if (EntityManager.TryGetComponent(entity, out HandsComponent? hands) &&
|
||||
hands.ActiveHandEntity is { } held)
|
||||
if (_hands.TryGetActiveItem(entity, out var held))
|
||||
{
|
||||
// Make sure the entity is a weapon AND it doesn't need
|
||||
// to be equipped to be used (E.g boxing gloves).
|
||||
if (EntityManager.TryGetComponent(held, out melee) &&
|
||||
!melee.MustBeEquippedToUse)
|
||||
{
|
||||
weaponUid = held;
|
||||
weaponUid = held.Value;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -858,9 +859,9 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
|
||||
EntityUid? inTargetHand = null;
|
||||
|
||||
if (targetHandsComponent?.ActiveHand is { IsEmpty: false })
|
||||
if (_hands.TryGetActiveItem(target.Value, out var activeHeldEntity))
|
||||
{
|
||||
inTargetHand = targetHandsComponent.ActiveHand.HeldEntity!.Value;
|
||||
inTargetHand = activeHeldEntity.Value;
|
||||
}
|
||||
|
||||
var attemptEvent = new DisarmAttemptEvent(target.Value, user, inTargetHand);
|
||||
|
||||
Reference in New Issue
Block a user