diff --git a/code/datums/spell.dm b/code/datums/spell.dm
index 2453b36f2a7..9c558508127 100644
--- a/code/datums/spell.dm
+++ b/code/datums/spell.dm
@@ -243,8 +243,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
for(var/mob/living/target in view_or_range(range, user, selection_type))
targets += target
if(1) //single target can be picked
- if(range < 0)
+ if(range == -1)
targets += user
+ else if(range == -2)
+ targets += input("Choose the target for the spell.", "Targeting") as mob in living_mob_list
else
var/possible_targets = list()
diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm
index 9dd771da11b..b5f22b81886 100644
--- a/code/game/dna/genes/powers.dm
+++ b/code/game/dna/genes/powers.dm
@@ -42,19 +42,6 @@
New()
block=INCREASERUNBLOCK
-/datum/dna/gene/basic/remotetalk
- name="Telepathy"
- activation_messages=list("You expand your mind outwards.")
- mutation=M_REMOTE_TALK
- instability=1
-
- New()
- block=REMOTETALKBLOCK
-
- activate(var/mob/M, var/connected, var/flags)
- ..(M,connected,flags)
- M.verbs += /mob/living/carbon/human/proc/remotesay
-
/datum/dna/gene/basic/heat_resist
name="Heat Resistance"
@@ -137,39 +124,6 @@
..(M,connected,flags)
M.pass_flags |= 1
-/* OLD HULK BEHAVIOR
-/datum/dna/gene/basic/hulk
- name="Hulk"
- activation_messages=list("Your muscles hurt.")
- mutation=M_HULK
-
- New()
- block=HULKBLOCK
-
- can_activate(var/mob/M,var/flags)
- // Can't be big AND small.
- if(M_DWARF in M.mutations)
- return 0
- return ..(M,flags)
-
- OnDrawUnderlays(var/mob/M,var/g,var/fat)
- if(M_HULK in M.mutations)
- if(fat)
- return "hulk_[fat]_s"
- else
- return "hulk_[g]_s"
- return 0
-
- OnMobLife(var/mob/living/carbon/human/M)
- if(!istype(M)) return
- if(M.health <= 25)
- M.mutations.Remove(M_HULK)
- M.dna.SetSEState(HULKBLOCK,0)
- M.update_mutations() //update our mutation overlays
- M << "\red You suddenly feel very weak."
- M.Weaken(3)
- M.emote("collapse")
-*/
/datum/dna/gene/basic/xray
name="X-Ray Vision"
activation_messages=list("The walls suddenly disappear.")
diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm
index 4719e37b01c..836c1046e12 100644
--- a/code/game/dna/genes/vg_powers.dm
+++ b/code/game/dna/genes/vg_powers.dm
@@ -193,37 +193,44 @@ Obviously, requires DNA2.
M.visible_message("\blue \The [src] morphs and changes [M.get_visible_gender() == MALE ? "his" : M.get_visible_gender() == FEMALE ? "her" : "their"] appearance!", "\blue You change your appearance!", "\red Oh, god! What the hell was that? It sounded like flesh getting squished and bone ground into a different shape!")
+/datum/dna/gene/basic/grant_spell/remotetalk
+ name="Telepathy"
+ activation_messages=list("You expand your mind outwards.")
+ mutation=M_REMOTE_TALK
+ instability=1
+
+ spelltype =/obj/effect/proc_holder/spell/targeted/remotetalk
+
+ New()
+ block=REMOTETALKBLOCK
+
+/obj/effect/proc_holder/spell/targeted/remotetalk
+ name = "Project Mind"
+ desc = "Make people understand your thoughts at any range!"
+ charge_max = 1800
+
+ clothes_req = 0
+ stat_allowed = 0
+ invocation_type = "none"
+ range = -2
+ selection_type = "range"
+
+ icon_power_button = "genetic_remotetalk"
-
-
-/mob/living/carbon/human/proc/remotesay()
- set name = "Project mind"
- set category = "Abilities"
-
- if(stat!=CONSCIOUS)
- reset_view(0)
- remoteview_target = null
- return
-
- if(!(M_REMOTE_TALK in src.mutations))
- src.verbs -= /mob/living/carbon/human/proc/remotesay
- return
- var/list/creatures = list()
- for(var/mob/living/carbon/human/h in world)
- creatures += h
- var/mob/target = input ("Who do you want to project your mind to ?") as null|anything in creatures
- if (isnull(target))
- return
+/obj/effect/proc_holder/spell/targeted/remotetalk/cast(list/targets)
+ if(!ishuman(usr)) return
var/say = input ("What do you wish to say")
- if(M_REMOTE_TALK in target.mutations)
- target.show_message("\blue You hear [src.real_name]'s voice: [say]")
- else
- target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
- usr.show_message("\blue You project your mind into [target.real_name]: [say]")
- for(var/mob/dead/observer/G in world)
- G.show_message("Telepathic message from [src] to [target]: [say]")
+
+ for(var/mob/living/target in targets)
+ if(M_REMOTE_TALK in target.mutations)
+ target.show_message("\blue You hear [usr.real_name]'s voice: [say]")
+ else
+ target.show_message("\blue You hear a voice that seems to echo around the room: [say]")
+ usr.show_message("\blue You project your mind into [target.real_name]: [say]")
+ for(var/mob/dead/observer/G in player_list)
+ G.show_message("Telepathic message from [usr] to [target]: [say]")
/mob/living/carbon/human/proc/remoteobserve()
set name = "Remote View"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index c880823f3fc..bf4245fbf87 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -47,7 +47,6 @@
/mob/living/carbon/human/grey/New(var/new_loc)
..(new_loc, "Grey")
mutations.Add(M_REMOTE_TALK)
- verbs += /mob/living/carbon/human/proc/remotesay
/mob/living/carbon/human/human/New(var/new_loc)
..(new_loc, "Human")