mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-18 02:19:30 +01:00
This PR adds a pair of new "BioAugs" as loadout options for Galatean characters, called Mind Blanker. They come in two variants, and both are available exclusively to Galateans. The basic version of the mind blanker makes its user immune to mind-affecting psionic powers. The advanced version of it inflicts lethal biofeedback on any psychic that attempts to enter the user's mind, while also providing the user with the same protection as the basic version. The advanced version is more expensive, and is exclusively available to Galatean Consulars. This PR was requested by Human Lore for their "Galatean Bioaugments" list. <img width="739" height="334" alt="image" src="https://github.com/user-attachments/assets/8dd0e65c-2834-4949-8a03-8966f22eeca4" /> --------- Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it> Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
93 lines
3.7 KiB
Plaintext
93 lines
3.7 KiB
Plaintext
///A list of `/turf` where the Srom is located, and people entering the shared dream (presumably Skrells sleeping) will be casted to
|
|
GLOBAL_LIST_EMPTY_TYPED(dream_entries, /turf)
|
|
|
|
/mob
|
|
var/mob/living/brain_ghost/bg
|
|
|
|
/mob/living/carbon/human
|
|
var/datum/weakref/srom_pulled_by
|
|
var/datum/weakref/srom_pulling
|
|
|
|
/mob/living/carbon/human/proc/handle_shared_dreaming(var/force_wakeup = FALSE)
|
|
SHOULD_NOT_SLEEP(TRUE)
|
|
|
|
// If they're an Unconsious person with the abillity to do Skrellepathy.
|
|
// If either changes, they should be nocked back to the real world.
|
|
var/mob/living/carbon/human/srom_puller = srom_pulled_by?.resolve()
|
|
if((has_psionics() || (srom_puller && Adjacent(srom_puller))) && stat == UNCONSCIOUS && sleeping > 1)
|
|
if(!istype(bg) && client) // Don't spawn a brainghost if we're not logged in.
|
|
bg = new /mob/living/brain_ghost(src, src) // Generate a new brainghost.
|
|
if(isnull(bg)) // Prevents you from getting kicked if the brain ghost didn't spawn - geeves
|
|
return
|
|
vr_mob = bg
|
|
bg.ckey = ckey
|
|
bg.client = client
|
|
ckey = "@[bg.ckey]"
|
|
to_chat(bg, SPAN_NOTICE("As you lose consiousness, you feel yourself entering Srom."))
|
|
to_chat(bg, SPAN_WARNING("Whilst in shared dreaming, you find it difficult to hide your secrets."))
|
|
if(willfully_sleeping)
|
|
to_chat(bg, "To wake up, use the \"Awaken\" verb in the IC tab.")
|
|
if(!srom_pulling && has_psionics())
|
|
var/obj/item/grab/G = r_hand
|
|
if(!G)
|
|
G = l_hand
|
|
if(G)
|
|
var/mob/living/carbon/human/victim = G.affecting
|
|
if(ishuman(victim) && !isSynthetic(victim) && victim.is_psi_pingable(srom_puller))
|
|
to_chat(bg, SPAN_NOTICE("You have taken [victim] to the Srom with you."))
|
|
victim.srom_pulled_by = WEAKREF(src)
|
|
srom_pulling = WEAKREF(victim)
|
|
for(var/thing in SSpsi.processing)
|
|
var/datum/psi_complexus/psi = thing
|
|
to_chat(psi.owner, SPAN_CULT("You sense an increase in the activity of Srom..."))
|
|
sound_to(psi.owner, sound('sound/effects/psi/power_used.ogg'))
|
|
log_and_message_admins("has entered the shared dream", bg)
|
|
// Does NOT
|
|
else
|
|
if(istype(bg) || force_wakeup)
|
|
// If we choose to be asleep, keep sleeping.
|
|
if(willfully_sleeping && sleeping && stat == UNCONSCIOUS)
|
|
if(has_psionics() || srom_pulled_by)
|
|
sleeping = 5
|
|
return
|
|
for(var/thing in SSpsi.processing)
|
|
var/datum/psi_complexus/psi = thing
|
|
to_chat(psi.owner, SPAN_CULT("You feel the activity of Srom decrease."))
|
|
log_and_message_admins("has left the shared dream",bg)
|
|
var/mob/living/brain_ghost/old_bg = bg
|
|
bg = null
|
|
vr_mob = null
|
|
var/return_text = "You are ripped from the Srom as your body awakens."
|
|
var/mob/return_mob = src
|
|
|
|
if(srom_pulled_by)
|
|
if(!has_psi_aug())
|
|
dizziness += 40
|
|
confused += 40
|
|
slurring += 40
|
|
eye_blurry += 40
|
|
return_text += " You feel dizzy, confused and weird..."
|
|
else
|
|
return_text += " Your augment staves off most of the post-Srom pull symptoms, but you still feel like your mind is clouded."
|
|
adjustBrainLoss(10)
|
|
srom_pulled_by = null
|
|
|
|
var/mob/living/carbon/human/victim = srom_pulling?.resolve()
|
|
if(victim)
|
|
victim.srom_pulled_by = null
|
|
srom_pulling = null
|
|
|
|
var/mob/living/simple_animal/borer/B = has_brain_worms()
|
|
if(B?.host_brain)
|
|
return_mob = B.host_brain
|
|
return_text = "You are ripped from the Srom as you return to the captivity of your own mind."
|
|
|
|
if(stat == DEAD)
|
|
return_text = "You are ripped from the Srom." // You're dead - ensures there's no message about feeling weird or waking up.
|
|
|
|
return_mob.ckey = old_bg.ckey
|
|
old_bg.visible_message(SPAN_NOTICE("[old_bg] begins to fade as they depart from the dream..."))
|
|
animate(old_bg, alpha=0, time = 20)
|
|
QDEL_IN(old_bg, 20)
|
|
to_chat(return_mob, SPAN_WARNING("[return_text]"))
|