diff --git a/code/mob/living/critter/flock/flockdrone.dm b/code/mob/living/critter/flock/flockdrone.dm
index 76b4f9fbb..53bccd623 100644
--- a/code/mob/living/critter/flock/flockdrone.dm
+++ b/code/mob/living/critter/flock/flockdrone.dm
@@ -33,7 +33,7 @@
// antigrab powers
var/antigrab_counter = 0
- var/antigrab_fires_at = 100
+ var/antigrab_fires_at = 2
var/glow_color = "#26ffe6a2"
@@ -399,6 +399,20 @@
if (src.dormant)
return
+ //if we're blocking that means we're not grabbed
+ if (!length(src.grabbed_by) || src.find_type_in_hand(/obj/item/grab/block))
+ src.antigrab_counter = 0
+ else
+ src.antigrab_counter++
+ if (src.antigrab_counter >= src.antigrab_fires_at)
+ playsound(src, "sound/effects/electric_shock.ogg", 40, 1, -3)
+ boutput(src, "\[SYSTEM: Anti-grapple countermeasures deployed.\]")
+ for(var/obj/item/grab/G in src.grabbed_by)
+ var/mob/living/L = G.assailant
+ L.shock(src, 5000)
+ qdel(G) //in case they don't fall over from our shock
+ src.antigrab_counter = 0
+
var/obj/item/I = absorber.item
if (!I)
@@ -456,20 +470,6 @@
/mob/living/critter/flock/drone/process_move(keys)
- if(keys && length(src.grabbed_by))
- if (length(src.grabbed_by) == 1 && src.find_type_in_hand(/obj/item/grab/block))
- src.antigrab_counter = 0
- else
- ++src.antigrab_counter
- if(src.antigrab_counter >= src.antigrab_fires_at)
- playsound(src, "sound/effects/electric_shock.ogg", 40, 1, -3)
- boutput(src, "\[SYSTEM: Anti-grapple countermeasures deployed.\]")
- for(var/obj/item/grab/G in src.grabbed_by)
- var/mob/living/L = G.assailant
- L.shock(src, 5000)
- src.antigrab_counter = 0
- else
- src.antigrab_counter = 0
if(keys & KEY_RUN && src.resources >= 1)
if(!src.floorrunning && isfeathertile(src.loc))
if (length(src.grabbed_by))
diff --git a/code/turf/turf_flock.dm b/code/turf/turf_flock.dm
index a307b80e0..46501fc38 100644
--- a/code/turf/turf_flock.dm
+++ b/code/turf/turf_flock.dm
@@ -49,6 +49,9 @@
// do not call parent, this is not an ordinary floor
if(!C || !user)
return
+ if (istype(C, /obj/item/grab))
+ grab_smash(C, user)
+ return
if(ispryingtool(C) && src.broken)
playsound(src, "sound/items/Crowbar.ogg", 80, 1)
src.break_tile_to_plating()