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"