diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 2d2883d8b7..2676a7ea6a 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -69,7 +69,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem var useDown = _inputSystem.CmdStates.GetState(EngineKeyFunctions.Use); var altDown = _inputSystem.CmdStates.GetState(EngineKeyFunctions.UseSecondary); - if (useDown != BoundKeyState.Down && altDown != BoundKeyState.Down) + if (weapon.AutoAttack || useDown != BoundKeyState.Down && altDown != BoundKeyState.Down) { if (weapon.Attacking) { diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs index d76d7340ff..cec7402fac 100644 --- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs +++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs @@ -60,6 +60,12 @@ public sealed partial class MeleeWeaponComponent : Component [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool Attacking = false; + /// + /// If true, attacks will be repeated automatically without requiring the mouse button to be lifted. + /// + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool AutoAttack; + /// /// Base damage for this weapon. Can be modified via heavy damage or other means. /// diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 3780be491b..270ecf94dd 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -353,6 +353,7 @@ - type: Clothing sprite: Clothing/Hands/Gloves/northstar.rsi - type: MeleeWeapon + autoAttack: true attackRate: 4 damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index dcead72ce6..bfdd94add6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -14,12 +14,15 @@ sprite: Objects/Weapons/Melee/chainsaw.rsi state: icon - type: MeleeWeapon + autoAttack: true + angle: 0 wideAnimationRotation: -135 + attackRate: 4 damage: types: - Slash: 5 - Blunt: 5 - Structural: 10 + Slash: 2 + Blunt: 2 + Structural: 4 soundHit: path: /Audio/Weapons/chainsaw.ogg params: @@ -27,8 +30,8 @@ - type: IncreaseDamageOnWield damage: types: - Slash: 10 - Structural: 10 + Slash: 4 + Structural: 4 - type: Item size: Normal sprite: Objects/Weapons/Melee/chainsaw.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml index b252d286d1..21c1cedd01 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml @@ -49,6 +49,8 @@ sprite: Objects/Tools/handdrill.rsi state: handdrill - type: MeleeWeapon + autoAttack: true + angle: 0 wideAnimationRotation: -90 soundHit: path: "/Audio/Items/drill_hit.ogg"