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) private void OnLightAttack(LightAttackEvent msg, EntitySessionEventArgs args)
{ {
var user = args.SenderSession.AttachedEntity; if (args.SenderSession.AttachedEntity is not {} user)
if (user == null)
return; return;
if (!TryGetWeapon(user.Value, out var weaponUid, out var weapon) || if (!TryGetWeapon(user, out var weaponUid, out var weapon) ||
weaponUid != GetEntity(msg.Weapon)) weaponUid != GetEntity(msg.Weapon))
{ {
return; 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) private void OnHeavyAttack(HeavyAttackEvent msg, EntitySessionEventArgs args)
{ {
if (args.SenderSession.AttachedEntity == null) if (args.SenderSession.AttachedEntity is not {} user)
{
return; 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)) weaponUid != GetEntity(msg.Weapon))
{ {
return; 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) private void OnDisarmAttack(DisarmAttackEvent msg, EntitySessionEventArgs args)
{ {
if (args.SenderSession.AttachedEntity == null) if (args.SenderSession.AttachedEntity is not {} user)
{
return; return;
}
if (!TryGetWeapon(args.SenderSession.AttachedEntity.Value, out var weaponUid, out var weapon)) if (TryGetWeapon(user, out var weaponUid, out var weapon))
{ AttemptAttack(user, weaponUid, weapon, msg, args.SenderSession);
return;
}
AttemptAttack(args.SenderSession.AttachedEntity.Value, weaponUid, weapon, msg, args.SenderSession);
} }
/// <summary> /// <summary>
@@ -343,23 +333,32 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
if (!CombatMode.IsInCombatMode(user)) if (!CombatMode.IsInCombatMode(user))
return false; return false;
EntityUid? target = null;
switch (attack) switch (attack)
{ {
case LightAttackEvent light: 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; return false;
// Can't self-attack if you're the weapon // Can't self-attack if you're the weapon
if (weaponUid == lightTarget) if (weaponUid == target)
return false; return false;
break; break;
case DisarmAttackEvent disarm: 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; return false;
break; break;
default: default: