Adds a speech modifier to pAIs on EMP (#46411)

About The Pull Request

Makes it so pAIs either stutter, slur, or talk like a brainlet when they're EMPed. This can be fixed by someone pressing the "Reset speech synthesis module" button on the pAI card. Additionally, adds a 40% chance for their default language to be swapped.
Readded the mute, albeit a bit shorter, due to feedback.
Idea courtesy of Rogus.
image
Why It's Good For The Game

Mutes are boring. This adds a debuff that while less severe, persists for longer and requires the help of another player to fix.
Changelog

cl
tweak: pAI speech modules have been upgraded to be more EMP resistant, but they can now malfunction on EMP.
/cl
This commit is contained in:
Names Are Hard
2019-09-16 16:48:25 +12:00
committed by oranges
parent 0e7cc266c6
commit f764a3934a
2 changed files with 20 additions and 1 deletions
@@ -52,6 +52,7 @@
var/mob/living/carbon/human/H = user
if(H.real_name == pai.master || H.dna.unique_enzymes == pai.master_dna)
dat += "<A href='byond://?src=[REF(src)];toggle_holo=1'>\[[pai.canholo? "Disable" : "Enable"] holomatrix projectors\]</a><br>"
dat += "<A href='byond://?src=[REF(src)];fix_speech=1'>\[Reset speech synthesis module\]</a><br>"
dat += "<A href='byond://?src=[REF(src)];wipe=1'>\[Wipe current pAI personality\]</a><br>"
else
dat += "No personality installed.<br>"
@@ -92,6 +93,10 @@
to_chat(pai, "<span class='userdanger'>Your mental faculties leave you.</span>")
to_chat(pai, "<span class='rose'>oblivion... </span>")
qdel(pai)
if(href_list["fix_speech"])
pai.stuttering = 0
pai.slurring = 0
pai.derpspeech = 0
if(href_list["toggle_transmit"] || href_list["toggle_receive"])
var/transmitting = href_list["toggle_transmit"] //it can't be both so if we know it's not transmitting it must be receiving.
var/transmit_holder = (transmitting ? WIRE_TX : WIRE_RX)
@@ -8,10 +8,24 @@
return
take_holo_damage(50/severity)
Paralyze(400/severity)
silent = max(30/severity, silent)
silent = max(20/severity, silent)
if(holoform)
fold_in(force = TRUE)
//Need more effects that aren't instadeath or permanent law corruption.
//Ask and you shall receive
switch(rand(1, 3))
if(1)
stuttering = 1
to_chat(src, "<span class='danger'>Warning: Feedback loop detected in speech module.</span>")
if(2)
slurring = 1
to_chat(src, "<span class='danger'>Warning: Audio synthesizer CPU stuck.</span>")
if(3)
derpspeech = 1
to_chat(src, "<span class='danger'>Warning: Vocabulary databank corrupted.</span>")
if(prob(40))
mind.language_holder.selected_default_language = pick(mind.language_holder.languages)
/mob/living/silicon/pai/ex_act(severity, target)
take_holo_damage(severity * 50)