diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm
index 5543a54caa6..6cdfdc736d9 100644
--- a/code/game/gamemodes/miniantags/borer/borer.dm
+++ b/code/game/gamemodes/miniantags/borer/borer.dm
@@ -91,6 +91,7 @@
)
var/talk_inside_host = FALSE // So that borers don't accidentally give themselves away on a botched message
var/used_dominate
+ var/attempting_to_dominate = FALSE // To prevent people from spam opening the Dominate Victim input
var/chemicals = 10 // Chemicals used for reproduction and chemical injection.
var/max_chems = 250
var/mob/living/carbon/human/host // Human host for the brain worm.
@@ -325,6 +326,9 @@
to_chat(src, "You cannot infest someone who is already infested!")
return
+ if(incapacitated())
+ return
+
to_chat(src, "You slither up [M] and begin probing at [M.p_their()] ear canal...")
if(!do_after(src, 50, target = M))
@@ -471,7 +475,7 @@
set category = "Borer"
set name = "Dominate Victim"
set desc = "Freeze the limbs of a potential host with supernatural fear."
-
+
if(world.time - used_dominate < 150)
to_chat(src, "You cannot use that ability again so soon.")
return
@@ -483,23 +487,43 @@
if(stat)
to_chat(src, "You cannot do that in your current state.")
return
-
+
+ if(attempting_to_dominate)
+ to_chat(src, "You're already targeting someone!")
+ return
+
var/list/choices = list()
for(var/mob/living/carbon/C in view(3,src))
if(C.stat != DEAD)
choices += C
-
+
if(world.time - used_dominate < 300)
to_chat(src, "You cannot use that ability again so soon.")
return
-
+
+ attempting_to_dominate = TRUE
+
var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices
- if(!M || !src)
+ if(!M)
+ attempting_to_dominate = FALSE
+ return
+
+ if(!src) //different statement to avoid a runtime since if the source is deleted then attempting_to_dominate would also be deleted
return
if(M.has_brain_worms())
to_chat(src, "You cannot dominate someone who is already infested!")
+ attempting_to_dominate = FALSE
+ return
+
+ if(incapacitated())
+ attempting_to_dominate = FALSE
+ return
+
+ if(get_dist(src, M) > 7) //to avoid people remotely doing from across the map etc, 7 is the default view range
+ to_chat(src, "You're too far away!")
+ attempting_to_dominate = FALSE
return
to_chat(src, "You focus your psychic lance on [M] and freeze [M.p_their()] limbs with a wave of terrible dread.")
@@ -507,6 +531,7 @@
M.Weaken(3)
used_dominate = world.time
+ attempting_to_dominate = FALSE
/mob/living/simple_animal/borer/verb/release_host()
set category = "Borer"