Fungal Telepathy (#30817)

* Mushroom Racials

* Revert exoskeleton

* telepathy formatting
This commit is contained in:
Kurfursten
2021-10-01 20:42:37 -05:00
committed by GitHub
parent b55bbfb6e3
commit 3555950bb1
3 changed files with 60 additions and 7 deletions

View File

@@ -3,8 +3,11 @@
var/muteletter_tries = 3
var/list/muteletters_check = list()
///mob/living/carbon/human/say(var/message)
// ..(message)
/mob/living/carbon/human/say(var/message)
if(species && (species.flags & SPECIES_NO_MOUTH) && !get_message_mode(message))
species.silent_speech(src,message)
else
..()
// This is obsolete if the human is using a language.
// Verbs in such a situation are given in /datum/language/get_spoken_verb().

View File

@@ -285,6 +285,8 @@ var/global/list/whitelisted_species = list("Human")
/datum/species/proc/OutOfCrit(var/mob/living/carbon/human/H)
/datum/species/proc/silent_speech(message)
// -- Outfit datums --
/datum/species/proc/final_equip(var/mob/living/carbon/human/H)
@@ -1283,10 +1285,10 @@ var/list/has_died_as_golem = list()
primitive = /mob/living/carbon/monkey/mushroom
spells = list(/spell/targeted/genetic/invert_eyes)
spells = list(/spell/targeted/genetic/invert_eyes, /spell/targeted/genetic/fungaltelepathy)
default_mutations=list(M_REMOTE_TALK)
default_block_names=list("REMOTETALK")
default_mutations=list() //exoskeleton someday...
blood_color = MUSHROOM_BLOOD
flesh_color = "#D3D3D3"
@@ -1309,9 +1311,10 @@ var/list/has_died_as_golem = list()
species_intro = "You are a Mushroom Person.<br>\
You are an odd creature. Your lack of a mouth prevents you from eating, but you can stand or lay on food to absorb it.<br>\
You have a resistance to burn and toxin, but a weakness to brute damage. You are adept at seeing in the dark, moreso with your light inversion ability.<br>\
Additionally, you cannot speak. Instead you can remotely talk into somebodies mind should you examine them, or they talk to you.<br>\
You have a resistance to burn and toxin, but you are vulnerable to brute attacks.<br>\
You are adept at seeing in the dark, moreso with your light inversion ability. When you speak, it will only go to the target chosen with your Fungal Telepathy.<br>\
You also have access to the Sporemind, which allows you to communicate with others on the Sporemind through :~"
var/mob/living/telepathic_target
/datum/species/mushroom/makeName()
return capitalize(pick(mush_first)) + " " + capitalize(pick(mush_last))
@@ -1320,6 +1323,14 @@ var/list/has_died_as_golem = list()
..()
H.default_gib()
/datum/species/mushroom/silent_speech(mob/M, message)
if(istype(telepathic_target) && M.can_mind_interact(telepathic_target))
telepathic_target.show_message("<span class='mushroom'>You feel <b>[M]</b>'s thoughts: [message]</span>.")
M.show_message("<span class='mushroom'>Projected to <b>[telepathic_target]</b>: [message]</span>")
log_admin("[key_name(M)] mushroom projects his mind towards (believed:[telepathic_target]/actual:[key_name(telepathic_target)]: [message]</span>")
for(var/mob/dead/observer/G in dead_mob_list)
G.show_message("<i>Mushroom telepathy from <b>[M]</b> to <b>[telepathic_target]</b>: [message]</i>")
/datum/species/lich
name = "Undead"
icobase = 'icons/mob/human_races/r_lich.dmi'

View File

@@ -21,3 +21,42 @@
var/datum/organ/internal/eyes/mushroom/E = M.internal_organs_by_name["eyes"]
if(istype(E))
E.dark_mode = !E.dark_mode
/spell/targeted/genetic/fungaltelepathy
name = "Fungal telepathy"
desc = "Allows you to remotely speak to another being. You must either hear them speak or examine them to make contact."
panel = "Mutant Powers"
user_type = USER_TYPE_GENETIC
charge_type = Sp_RECHARGE
charge_max = 50
invocation_type = SpI_NONE
range = GLOBALCAST //the world
max_targets = 1
selection_type = "view"
spell_flags = SELECTABLE|TALKED_BEFORE
override_base = "genetic"
hud_state = "gen_project"
compatible_mobs = list(/mob/living/carbon/human, /datum/mind)
mind_affecting = 1
/spell/targeted/genetic/fungaltelepathy/cast(var/list/targets, mob/living/carbon/human/user)
if(!user || !istype(user))
return
if(user.mind.miming)
to_chat(user, "<span class = 'warning'>You find yourself unable to convey your thoughts outside of gestures.</span>")
return
for(var/T in targets)
var/mob/living/target
if (isliving(T))
target = T
if (istype (T, /datum/mind))
target = user.can_mind_interact(T)
if(!T || !istype(target) || tinfoil_check(target))
return
to_chat(user, "<span class = 'notice'>You orient your mind toward [target].</span>")
var/datum/species/mushroom/M = user.species
if(!istype(M))
return
M.telepathic_target = target