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)
- {
- return;
- }
-
- if (!TryGetWeapon(args.SenderSession.AttachedEntity.Value, out var weaponUid, out var weapon))
- {
+ if (args.SenderSession.AttachedEntity is not {} user)
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>
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: