diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm
index a17d81795ef..c8c291131a2 100644
--- a/code/modules/mob/living/carbon/human/whisper.dm
+++ b/code/modules/mob/living/carbon/human/whisper.dm
@@ -11,6 +11,10 @@
src << "You are muted."
return
+ if(!speech_allowed && usr == src)
+ usr << "\red You can't speak."
+ return
+
if (src.stat == 2)
return src.say_dead(message)
diff --git a/code/modules/mob/living/parasite/meme.dm b/code/modules/mob/living/parasite/meme.dm
index 7a9061a18c2..f56e9436f2f 100644
--- a/code/modules/mob/living/parasite/meme.dm
+++ b/code/modules/mob/living/parasite/meme.dm
@@ -173,7 +173,19 @@ mob/living/parasite/meme/proc/select_indoctrinated(var/title, var/message)
if(candidates.len == 1)
target = candidates[1]
else
- target = input(message,title) as null|mob in candidates
+ var/selected
+
+ var/list/text_candidates = list()
+ var/list/map_text_to_mob = list()
+
+ for(var/mob/living/carbon/human/M in candidates)
+ text_candidates += M.real_name
+ map_text_to_mob[M.real_name] = M
+
+ selected = input(message,title) as null|mob in text_candidates
+ if(!selected) return null
+
+ target = map_text_to_mob[selected]
return target
@@ -282,7 +294,7 @@ mob/living/parasite/meme/verb/Agony()
host.paralysis = max(host.paralysis, 2)
- host.flash_pain()
+ host.flash_weak_pain()
host << "\red You feel excrutiating pain all over your body! It is so bad you can't think or articulate yourself properly.."
usr << "You send a jolt of agonizing pain through [host], they should be unable to concentrate on anything else for half a minute."
@@ -290,8 +302,9 @@ mob/living/parasite/meme/verb/Agony()
host.emote("scream")
for(var/i=0, i<10, i++)
+ host.stuttering = 2
sleep(50)
- if(prob(50)) host.flash_weak_pain()
+ if(prob(80)) host.flash_weak_pain()
if(prob(10)) host.paralysis = max(host.paralysis, 2)
if(prob(15)) host.emote("twitch")
else if(prob(15)) host.emote("scream")