diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
index b1c3b4c2017..3133f642d51 100644
--- a/code/__DEFINES/status_effects.dm
+++ b/code/__DEFINES/status_effects.dm
@@ -178,6 +178,3 @@
// Basically variants with differing effect times to their parent datums, nothing special
#define STATUS_EFFECT_PACIFIED_BATTERER /datum/status_effect/pacifism/batterer
-
-#define STATUS_EFFECT_CLINGTENTACLE_BATTERER /datum/status_effect/cling_tentacle/batterer
-
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 1f8b01d7ccb..8a550b5d866 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -294,10 +294,6 @@
/datum/status_effect/cling_tentacle/on_remove()
REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, "[id]")
-/datum/status_effect/cling_tentacle/batterer
- id = "cling_tentacle_batterer"
- alert_type = null
- duration = 7 SECONDS
// start of `living` level status procs.
/**
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 3b812495354..fe752ee1eac 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -282,6 +282,12 @@
var/max_uses = 5
/// Is this item on cooldown from being thrown
var/on_throwing_cooldown = FALSE
+ /// How many SSobj ticks have passed (Roughly 2 seconds of in game time), used to see when to recharge a use on this item
+ var/recharge_ticks = 0
+
+/obj/item/batterer/Initialize(mapload)
+ . = ..()
+ START_PROCESSING(SSobj, src)
/obj/item/batterer/examine(mob/user)
. = ..()
@@ -291,14 +297,23 @@
if(times_used < max_uses)
. += "[src] has [max_uses-times_used] charges left."
+/obj/item/batterer/process()
+ if(times_used)
+ recharge_ticks++
+ if(recharge_ticks >= 10) // recharges one use after around 20 seconds
+ recharge_ticks = initial(recharge_ticks)
+ times_used--
+ icon_state = "batterer"
+
/obj/item/batterer/attack_self(mob/living/carbon/user)
activate_batterer(user)
/obj/item/batterer/proc/activate_batterer(mob/user)
times_used++
if(user)
- if(times_used >= max_uses)
+ if(times_used > max_uses)
to_chat(user, "The mind batterer has been burnt out!")
+ times_used--
return
if(!do_after_once(user, 2 SECONDS, target = src, allow_moving = TRUE, attempt_cancel_message = "You think it's best to save this for later."))
times_used--
@@ -306,15 +321,17 @@
to_chat(user, "You trigger [src]. It has [max_uses-times_used] charges left.")
for(var/mob/living/M in oview(7, get_turf(src)))
+ if(!M.client)
+ continue
if(issilicon(M))
M.Weaken(10 SECONDS)
else
- M.Confused(30 SECONDS)
+ M.Confused(45 SECONDS)
M.adjustBrainLoss(10)
to_chat(M, "You feel a sudden, electric jolt travel through yourself,")
switch(rand(1, 10))
if(1)
- M.apply_status_effect(STATUS_EFFECT_CLINGTENTACLE_BATTERER)
+ M.Immobilize(7 SECONDS)
to_chat(M, "and your legs lock up for a moment!")
if(2)
M.apply_status_effect(STATUS_EFFECT_PACIFIED_BATTERER)