Fix weapon error logs (#28264)

This commit is contained in:
Leon Friedrich
2024-05-25 15:13:24 +12:00
committed by GitHub
parent 98503fc793
commit d0cf620a85

View File

@@ -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: