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)
|
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:
|
||||||
|
|||||||
Reference in New Issue
Block a user