mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-26 06:22:26 +01:00
Adds Skrellepathy V2 (#5618)
This commit is contained in:
@@ -175,38 +175,91 @@
|
||||
/mob/living/carbon/human/proc/commune()
|
||||
set category = "Abilities"
|
||||
set name = "Commune with creature"
|
||||
set desc = "Send a telepathic message to an unlucky recipient."
|
||||
set desc = "Send a telepathic message to a recipient."
|
||||
|
||||
var/obj/item/organ/external/rhand = src.get_organ("r_hand")
|
||||
var/obj/item/organ/external/lhand = src.get_organ("l_hand")
|
||||
if((!rhand || !rhand.is_usable()) && (!lhand || !lhand.is_usable()))
|
||||
to_chat(src,"<span class='warning'>You can't communicate without the ability to use your hands!</span>")
|
||||
return
|
||||
if((lhand.is_stump()) && (rhand.is_stump()))
|
||||
to_chat(src,"<span class='warning'>You can't communicate without functioning hands!</span>")
|
||||
return
|
||||
if(src.r_hand != null && src.l_hand != null)
|
||||
to_chat(src,"<span class='warning'>You can't communicate while your hands are full!</span>")
|
||||
return
|
||||
if(stat || paralysis || stunned || weakened || restrained())
|
||||
to_chat(src,"<span class='warning'>You can't communicate while unable to move your hands to your head!</span>")
|
||||
return
|
||||
if(last_special > world.time)
|
||||
to_chat(src,"<span class='notice'>Your mind requires rest!</span>")
|
||||
return
|
||||
|
||||
last_special = world.time + 100
|
||||
|
||||
visible_message("<span class='notice'>[src] touches their fingers to their temple.</span>")
|
||||
|
||||
var/list/targets = list()
|
||||
var/target = null
|
||||
for(var/mob/living/M in view(client.view, client.eye))
|
||||
targets += M
|
||||
var/mob/living/target = null
|
||||
var/text = null
|
||||
|
||||
targets += getmobs() //Fill list, prompt user with list
|
||||
target = input("Select a creature!", "Speak to creature", null, null) as null|anything in targets
|
||||
|
||||
if(!target) return
|
||||
if(!target)
|
||||
return
|
||||
|
||||
text = input("What would you like to say?", "Speak to creature", null, null)
|
||||
|
||||
text = sanitize(text)
|
||||
|
||||
if(!text) return
|
||||
|
||||
var/mob/M = targets[target]
|
||||
|
||||
if(istype(M, /mob/abstract/observer) || M.stat == DEAD)
|
||||
src << "Not even a [src.species.name] can speak to the dead."
|
||||
if(!text)
|
||||
return
|
||||
|
||||
log_say("[key_name(src)] communed to [key_name(M)]: [text]",ckey=key_name(src))
|
||||
if(target.stat == DEAD)
|
||||
to_chat(src,"<span class='cult'>Not even a [src.species.name] can speak to the dead.</span>")
|
||||
return
|
||||
|
||||
if (target.isSynthetic())
|
||||
to_chat(src,"<span class='warning'>This can only be used on living organisms.</span>")
|
||||
return
|
||||
|
||||
|
||||
if (target.is_diona())
|
||||
to_chat(src,"<span class='alium'>The creature's mind is not solid enough and slips through like sand.</span>")
|
||||
return
|
||||
|
||||
if(!(target in view(client.view, client.eye)))
|
||||
to_chat(src,"<span class='warning'>[target] is too far for your mind to grasp!</span>")
|
||||
return
|
||||
|
||||
log_say("[key_name(src)] communed to [key_name(target)]: [text]",ckey=key_name(src))
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/abstract/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.client.prefs.toggles & CHAT_GHOSTEARS)
|
||||
to_chat(M,"<span class='notice'>[src] telepathically says to [target]:</span> [text]")
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if (/mob/living/carbon/human/proc/commune in target.verbs)
|
||||
to_chat(H,"<span class='psychic'>You instinctively sense [src] sending their thoughts into your mind, hearing:</span> [text]")
|
||||
else if(prob(25) && (target.mind && target.mind.assigned_role=="Chaplain"))
|
||||
to_chat(H,"<span class='changeling'>You sense [src]'s thoughts enter your mind, whispering quietly:</span> [text]")
|
||||
else
|
||||
to_chat(H,"<span class='alium'>You feel pressure behind your eyes as alien thoughts enter your mind:</span> [text]")
|
||||
if(istype(H))
|
||||
if (/mob/living/carbon/human/proc/commune in target.verbs)
|
||||
return
|
||||
if(prob(10) && (H.species.flags & NO_BLOOD))
|
||||
to_chat(H,"<span class='warning'>Your nose begins to bleed...</span>")
|
||||
H.drip(3)
|
||||
else if(prob(25) && (H.species.flags & NO_PAIN))
|
||||
to_chat(H,"<span class='warning'>Your head hurts...</span>")
|
||||
else if(prob(50))
|
||||
to_chat(H,"<span class='warning'>Your mind buzzes...</span>")
|
||||
|
||||
M << "<span class='notice'>Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</span>"
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.name == src.species.name)
|
||||
return
|
||||
H << "<span class='warning'>Your nose begins to bleed...</span>"
|
||||
H.drip(1)
|
||||
|
||||
/mob/living/carbon/human/proc/regurgitate()
|
||||
set name = "Regurgitate"
|
||||
|
||||
@@ -258,6 +258,10 @@
|
||||
H.h_style = "Skrell Female Tentacles"
|
||||
H.update_hair()
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/commune
|
||||
)
|
||||
|
||||
/datum/species/diona
|
||||
name = "Diona"
|
||||
short_name = "dio"
|
||||
|
||||
@@ -66,6 +66,8 @@ h1.alert, h2.alert {color: #000000;}
|
||||
|
||||
.emote {font-style: italic;}
|
||||
|
||||
.psychic {color: #56d277;}
|
||||
|
||||
/* Game Messages */
|
||||
|
||||
.attack {color: #ff0000;}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: ParadoxSpace
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- rscadd: "Adds a basic telepathic ability to Skrell."
|
||||
Reference in New Issue
Block a user