Fix CanDisarm (#11843)

This commit is contained in:
metalgearsloth
2022-10-15 15:14:07 +11:00
committed by GitHub
parent 635057fb7a
commit a93d6eb5b6
5 changed files with 16 additions and 10 deletions

View File

@@ -202,8 +202,11 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (!base.DoDisarm(user, ev, component))
return false;
if (!HasComp<CombatModeComponent>(user))
if (!TryComp<CombatModeComponent>(user, out var combatMode) ||
combatMode.CanDisarm != true)
{
return false;
}
// If target doesn't have hands then we can't disarm so will let the player know it's pointless.
if (!HasComp<HandsComponent>(ev.Target!.Value))

View File

@@ -308,8 +308,11 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (!base.DoDisarm(user, ev, component))
return false;
if (!TryComp<CombatModeComponent>(user, out var combatMode))
if (!TryComp<CombatModeComponent>(user, out var combatMode) ||
combatMode.CanDisarm != true)
{
return false;
}
var target = ev.Target!.Value;

View File

@@ -22,9 +22,6 @@ namespace Content.Shared.CombatMode
[ViewVariables(VVAccess.ReadWrite), DataField("disarm")]
public bool? CanDisarm;
[DataField("disarmFailSound")]
public readonly SoundSpecifier DisarmFailSound = new SoundPathSpecifier("/Audio/Weapons/punchmiss.ogg");
[DataField("disarmSuccessSound")]
public readonly SoundSpecifier DisarmSuccessSound = new SoundPathSpecifier("/Audio/Effects/thudswoosh.ogg");

View File

@@ -243,8 +243,6 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
weapon.NextAttack += TimeSpan.FromSeconds(1f / weapon.AttackRate);
// Attack confirmed
// Play a sound to give instant feedback; same with playing the animations
Audio.PlayPredicted(weapon.SwingSound, weapon.Owner, user);
switch (attack)
{
@@ -252,7 +250,9 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
DoLightAttack(user, light, weapon);
break;
case DisarmAttackEvent disarm:
DoDisarm(user, disarm, weapon);
if (!DoDisarm(user, disarm, weapon))
return;
break;
case HeavyAttackEvent heavy:
DoHeavyAttack(user, heavy, weapon);
@@ -261,6 +261,9 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
throw new NotImplementedException();
}
// Play a sound to give instant feedback; same with playing the animations
Audio.PlayPredicted(weapon.SwingSound, weapon.Owner, user);
DoLungeAnimation(user, weapon.Angle, attack.Coordinates.ToMap(EntityManager), weapon.Animation);
weapon.Attacking = true;
Dirty(weapon);

View File

@@ -234,7 +234,7 @@
fireStackAlternateState: 3
- type: EnsnareableVisualizer
- type: CombatMode
disarm: true
canDisarm: true
- type: Climbing
- type: Cuffable
- type: Ensnareable