diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm
index 5fcbb3948a9..a75cd14e7ae 100644
--- a/code/game/dna/genes/goon_powers.dm
+++ b/code/game/dna/genes/goon_powers.dm
@@ -468,101 +468,116 @@
////////////////////////////////////////////////////////////////////////
// WAS: /datum/bioEffect/empath
-/datum/dna/gene/basic/grant_verb/empath
+/datum/dna/gene/basic/grant_spell/empath
name = "Empathic Thought"
desc = "The subject becomes able to read the minds of others for certain information."
- verbtype = /proc/bioproc_empath
+ spelltype = /obj/effect/proc_holder/spell/targeted/empath
activation_messages = list("You suddenly notice more about others than you did before.")
deactivation_messages = list("You no longer feel able to sense intentions.")
instability=1
+ mutation=M_EMPATH
+
New()
..()
block = EMPATHBLOCK
-/proc/bioproc_empath(var/mob/living/carbon/M in range(7,usr))
- set name = "Read Mind"
- set desc = "Read the minds of others for information."
- set category = "Mutant Abilities"
+/obj/effect/proc_holder/spell/targeted/empath
+ name = "Read Mind"
+ desc = "Read the minds of others for information."
+ charge_max = 1800
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = -2
+ selection_type = "range"
- if(!iscarbon(M))
- usr << "\red You may only use this on other organic beings."
+ icon_power_button = "genetic_empath"
+
+/obj/effect/proc_holder/spell/targeted/empath/choose_targets(mob/user = usr)
+ var/list/targets
+ targets += input("Choose the target to spy on.", "Targeting") as mob in range(7,usr)
+
+/obj/effect/proc_holder/spell/targeted/empath/cast(list/targets)
+ if(!ishuman(usr)) return
+
+
+ for(var/mob/living/carbon/M in targets)
+ if(!iscarbon(M))
+ usr << "\red You may only use this on other organic beings."
+ return
+
+ if (M_PSY_RESIST in M.mutations)
+ usr << "\red You can't see into [M.name]'s mind at all!"
+ return
+
+ if (M.stat == 2)
+ usr << "\red [M.name] is dead and cannot have their mind read."
+ return
+ if (M.health < 0)
+ usr << "\red [M.name] is dying, and their thoughts are too scrambled to read."
+ return
+
+ usr << "\blue Mind Reading of [M.name]:"
+ var/pain_condition = M.health
+ // lower health means more pain
+ var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
+ "their hair","what to do next","their job","space","amusing things","sad things",
+ "annoying things","happy things","something incoherent","something they did wrong")
+ var/thoughts = "thinking about [pick(randomthoughts)]"
+ if (M.fire_stacks)
+ pain_condition -= 50
+ thoughts = "preoccupied with the fire"
+ if (M.radiation)
+ pain_condition -= 25
+
+ switch(pain_condition)
+ if (81 to INFINITY)
+ usr << "\blue Condition: [M.name] feels good."
+ if (61 to 80)
+ usr << "\blue Condition: [M.name] is suffering mild pain."
+ if (41 to 60)
+ usr << "\blue Condition: [M.name] is suffering significant pain."
+ if (21 to 40)
+ usr << "\blue Condition: [M.name] is suffering severe pain."
+ else
+ usr << "\blue Condition: [M.name] is suffering excruciating pain."
+ thoughts = "haunted by their own mortality"
+
+ switch(M.a_intent)
+ if ("help")
+ usr << "\blue Mood: You sense benevolent thoughts from [M.name]."
+ if ("disarm")
+ usr << "\blue Mood: You sense cautious thoughts from [M.name]."
+ if ("grab")
+ usr << "\blue Mood: You sense hostile thoughts from [M.name]."
+ if ("harm")
+ usr << "\blue Mood: You sense cruel thoughts from [M.name]."
+ for(var/mob/living/L in view(7,M))
+ if (L == M)
+ continue
+ thoughts = "thinking about punching [L.name]"
+ break
+ else
+ usr << "\blue Mood: You sense strange thoughts from [M.name]."
+
+ if (istype(M,/mob/living/carbon/human))
+ var/numbers[0]
+ var/mob/living/carbon/human/H = M
+ if(H.mind && H.mind.initial_account)
+ numbers += H.mind.initial_account.account_number
+ numbers += H.mind.initial_account.remote_access_pin
+ if(numbers.len>0)
+ usr << "\blue Numbers: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name]."
+ usr << "\blue Thoughts: [M.name] is currently [thoughts]."
+
+ if (M_EMPATH in M.mutations)
+ M << "\red You sense [usr.name] reading your mind."
+ else if (prob(5) || M.mind.assigned_role=="Chaplain")
+ M << "\red You sense someone intruding upon your thoughts..."
return
- if(usr.stat)
- return
-
- if (M_PSY_RESIST in M.mutations)
- usr << "\red You can't see into [M.name]'s mind at all!"
- return
-
- if (M.stat == 2)
- usr << "\red [M.name] is dead and cannot have their mind read."
- return
- if (M.health < 0)
- usr << "\red [M.name] is dying, and their thoughts are too scrambled to read."
- return
-
- usr << "\blue Mind Reading of [M.name]:"
- var/pain_condition = M.health
- // lower health means more pain
- var/list/randomthoughts = list("what to have for lunch","the future","the past","money",
- "their hair","what to do next","their job","space","amusing things","sad things",
- "annoying things","happy things","something incoherent","something they did wrong")
- var/thoughts = "thinking about [pick(randomthoughts)]"
- if (M.fire_stacks)
- pain_condition -= 50
- thoughts = "preoccupied with the fire"
- if (M.radiation)
- pain_condition -= 25
-
- switch(pain_condition)
- if (81 to INFINITY)
- usr << "\blue Condition: [M.name] feels good."
- if (61 to 80)
- usr << "\blue Condition: [M.name] is suffering mild pain."
- if (41 to 60)
- usr << "\blue Condition: [M.name] is suffering significant pain."
- if (21 to 40)
- usr << "\blue Condition: [M.name] is suffering severe pain."
- else
- usr << "\blue Condition: [M.name] is suffering excruciating pain."
- thoughts = "haunted by their own mortality"
-
- switch(M.a_intent)
- if ("help")
- usr << "\blue Mood: You sense benevolent thoughts from [M.name]."
- if ("disarm")
- usr << "\blue Mood: You sense cautious thoughts from [M.name]."
- if ("grab")
- usr << "\blue Mood: You sense hostile thoughts from [M.name]."
- if ("harm")
- usr << "\blue Mood: You sense cruel thoughts from [M.name]."
- for(var/mob/living/L in view(7,M))
- if (L == M)
- continue
- thoughts = "thinking about punching [L.name]"
- break
- else
- usr << "\blue Mood: You sense strange thoughts from [M.name]."
-
- if (istype(M,/mob/living/carbon/human))
- var/numbers[0]
- var/mob/living/carbon/human/H = M
- if(H.mind && H.mind.initial_account)
- numbers += H.mind.initial_account.account_number
- numbers += H.mind.initial_account.remote_access_pin
- if(numbers.len>0)
- usr << "\blue Numbers: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name]."
- usr << "\blue Thoughts: [M.name] is currently [thoughts]."
-
- if (/datum/dna/gene/basic/grant_verb/empath in M.active_genes)
- M << "\red You sense [usr.name] reading your mind."
- else if (prob(5) || M.mind.assigned_role=="Chaplain")
- M << "\red You sense someone intruding upon your thoughts..."
- return
-
////////////////////////////////////////////////////////////////////////
// WAS: /datum/bioEffect/superfart
diff --git a/code/setup.dm b/code/setup.dm
index 64568ac149c..0c93f8ceed3 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -389,6 +389,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define M_SOBER 203 // Increased alcohol metabolism
#define M_PSY_RESIST 204 // Block remoteview
#define M_SUPER_FART 205 // Duh
+#define M_EMPATH 206 //Read minds
// /vg/ muts
#define M_LOUD 208 // CAUSES INTENSE YELLING