Fix weapon error logs (#28264)
This commit is contained in:
@@ -174,49 +174,39 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
|
||||
private void OnLightAttack(LightAttackEvent msg, EntitySessionEventArgs args)
|
||||
{
|
||||
var user = args.SenderSession.AttachedEntity;
|
||||
|
||||
if (user == null)
|
||||
if (args.SenderSession.AttachedEntity is not {} user)
|
||||
return;
|
||||
|
||||
if (!TryGetWeapon(user.Value, out var weaponUid, out var weapon) ||
|
||||
if (!TryGetWeapon(user, out var weaponUid, out var weapon) ||
|
||||
weaponUid != GetEntity(msg.Weapon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AttemptAttack(args.SenderSession.AttachedEntity!.Value, weaponUid, weapon, msg, args.SenderSession);
|
||||
AttemptAttack(user, weaponUid, weapon, msg, args.SenderSession);
|
||||
}
|
||||
|
||||
private void OnHeavyAttack(HeavyAttackEvent msg, EntitySessionEventArgs args)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity == null)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity is not {} user)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryGetWeapon(args.SenderSession.AttachedEntity.Value, out var weaponUid, out var weapon) ||
|
||||
if (!TryGetWeapon(user, out var weaponUid, out var weapon) ||
|
||||
weaponUid != GetEntity(msg.Weapon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AttemptAttack(args.SenderSession.AttachedEntity.Value, weaponUid, weapon, msg, args.SenderSession);
|
||||
AttemptAttack(user, weaponUid, weapon, msg, args.SenderSession);
|
||||
}
|
||||
|
||||
private void OnDisarmAttack(DisarmAttackEvent msg, EntitySessionEventArgs args)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity == null)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity is not {} user)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TryGetWeapon(args.SenderSession.AttachedEntity.Value, out var weaponUid, out var weapon))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
AttemptAttack(args.SenderSession.AttachedEntity.Value, weaponUid, weapon, msg, args.SenderSession);
|
||||
if (TryGetWeapon(user, out var weaponUid, out var weapon))
|
||||
AttemptAttack(user, weaponUid, weapon, msg, args.SenderSession);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -343,23 +333,32 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
if (!CombatMode.IsInCombatMode(user))
|
||||
return false;
|
||||
|
||||
EntityUid? target = null;
|
||||
switch (attack)
|
||||
{
|
||||
case LightAttackEvent light:
|
||||
var lightTarget = GetEntity(light.Target);
|
||||
if (light.Target != null && !TryGetEntity(light.Target, out target))
|
||||
{
|
||||
// Target was lightly attacked & deleted.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Blocker.CanAttack(user, lightTarget, (weaponUid, weapon)))
|
||||
if (!Blocker.CanAttack(user, target, (weaponUid, weapon)))
|
||||
return false;
|
||||
|
||||
// Can't self-attack if you're the weapon
|
||||
if (weaponUid == lightTarget)
|
||||
if (weaponUid == target)
|
||||
return false;
|
||||
|
||||
break;
|
||||
case DisarmAttackEvent disarm:
|
||||
var disarmTarget = GetEntity(disarm.Target);
|
||||
if (disarm.Target != null && !TryGetEntity(disarm.Target, out target))
|
||||
{
|
||||
// Target was lightly attacked & deleted.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Blocker.CanAttack(user, disarmTarget, (weaponUid, weapon), true))
|
||||
if (!Blocker.CanAttack(user, target, (weaponUid, weapon), true))
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user