//Brain traumas that are rare and/or somewhat beneficial; //they are the easiest to cure, which means that if you want //to keep them, you can't cure your other traumas /datum/brain_trauma/special /datum/brain_trauma/special/bluespace_prophet name = "Bluespace Prophecy" desc = "Patient can sense the bob and weave of bluespace around them, showing them passageways no one else can see." scan_desc = "bluespace attunement" gain_text = "You feel the bluespace pulsing around you..." lose_text = "The faint pulsing of bluespace fades into silence." var/next_portal = 0 cure_type = CURE_SURGERY /datum/brain_trauma/special/bluespace_prophet/on_life() if(world.time > next_portal) next_portal = world.time + 100 var/list/turf/possible_turfs = list() for(var/turf/T in range(owner, 8)) if(!T.density) var/clear = TRUE for(var/obj/O in T) if(O.density) clear = FALSE break if(clear) possible_turfs += T if(!LAZYLEN(possible_turfs)) return var/turf/first_turf = pick(possible_turfs) if(!first_turf) return possible_turfs -= (possible_turfs & range(first_turf, 3)) var/turf/second_turf = pick(possible_turfs) if(!second_turf) return var/obj/effect/bluespace_stream/first = new(first_turf, owner) var/obj/effect/bluespace_stream/second = new(second_turf, owner) first.linked_to = second second.linked_to = first first.seer = owner second.seer = owner /obj/effect/bluespace_stream name = "bluespace stream" desc = "You see a hidden pathway through bluespace..." var/image_icon = 'icons/effects/effects.dmi' var/image_state = "bluestream" var/image_layer = 4.1 invisibility = INVISIBILITY_OBSERVER var/obj/effect/bluespace_stream/linked_to var/mob/living/carbon/seer var/mob/living/carbon/target = null var/image/current_image = null /obj/effect/bluespace_stream/Initialize(mapload, var/mob/living/carbon/T) . = ..() target = T current_image = GetImage() if(target.client) target.client.images |= current_image QDEL_IN(src, 300) /obj/effect/bluespace_stream/proc/GetImage() var/image/I = image(image_icon,src,image_state,image_layer,dir=src.dir) return I /obj/effect/overlay/temp/bluespace_fissure name = "bluespace fissure" icon_state = "bluestream_fade" duration = 9 /obj/effect/bluespace_stream/attack_hand(mob/user) if(user != seer || !linked_to) return var/slip_in_message = pick("slides sideways in an odd way, and disappears", "jumps into an unseen dimension",\ "sticks one leg straight out, wiggles their foot, and is suddenly gone", "stops, then blinks out of reality", \ "is pulled into an invisible vortex, vanishing from sight") var/slip_out_message = pick("silently fades in", "leaps out of thin air","appears", "walks out of an invisible doorway",\ "slides out of a fold in spacetime") to_chat(user, "You try to align with the bluespace stream...") if(do_after(user, 20)) new /obj/effect/overlay/temp/bluespace_fissure(get_turf(src)) new /obj/effect/overlay/temp/bluespace_fissure(get_turf(linked_to)) user.forceMove(get_turf(linked_to)) user.visible_message(span("warning", "[user] [slip_in_message]."), span("notice", "You enter \the [src]...")) user.visible_message(span("warning", "[user] [slip_out_message]."), span("notice", "...and find your way to the other side.")) /datum/brain_trauma/special/love name = "Hyper-dependency" desc = "Patient feels lovesick and is emotionally dependent to a specific person." scan_desc = "severe dependency" gain_text = "" lose_text = "You feel love leave your heart." var/stress = 0 var/datum/weakref/beloved = null cure_type = CURE_HYPNOSIS /datum/brain_trauma/special/love/on_gain() ..() for(var/mob/living/L in view(7,owner)) if(L != owner) beloved = L break if(beloved) to_chat(owner, "You can't help but love [beloved]. You can't bear to be apart from them, and would do anything they say.") else to_chat(owner, "You feel a brief burst of passion, but it quickly fades.") qdel() /datum/brain_trauma/special/love/on_life() ..() if(check_alone()) stress = min(stress + 0.5, 100) if(stress > 10 && (prob(10))) stress_reaction() else stress = max(0, stress - 4) if(prob(5) && stress > 0) var/mushy = pick("You feel so good when [beloved] is with you.","You can't believe you ever lived without [beloved].","You'd do anything for [beloved].","[beloved] makes everything better.","You can never let [beloved] leave again.") to_chat(owner, "[mushy]") /datum/brain_trauma/special/love/proc/check_alone() if(owner.disabilities & BLIND) return TRUE for(var/mob/living/L in view(owner, 7)) if(L == beloved) return FALSE return TRUE /datum/brain_trauma/special/love/proc/stress_reaction() if(owner.stat != CONSCIOUS) return var/high_stress = (stress > 60) //things get psychosomatic from here on switch(rand(1,6)) if(1) if(!high_stress) to_chat(owner, "You feel sick...") else to_chat(owner, "You feel really sick at the thought of being seperated from [beloved]!") addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress if(2) if(!high_stress) to_chat(owner, "You can't stop shaking...") owner.dizziness += 20 owner.confused += 20 owner.Jitter(20) else to_chat(owner, "You feel weak and scared! If only [beloved] was here!") owner.dizziness += 20 owner.confused += 20 owner.Jitter(20) owner.adjustHalLoss(50) if(3, 4) if(!high_stress) to_chat(owner, "You feel really lonely without [beloved]...") else to_chat(owner, "You're going mad with loneliness! You need [beloved]!") owner.hallucination += 20 if(5) if(!high_stress) to_chat(owner, "Your heart skips a beat. Oh, [beloved]!") owner.adjustOxyLoss(8) else if(prob(15) && ishuman(owner)) var/mob/living/carbon/human/H = owner var/obj/item/organ/heart/heart = H.internal_organs_by_name["heart"] heart.take_damage(heart.min_bruised_damage) to_chat(H, "You feel a stabbing pain in your heart!") else to_chat(owner, "You feel your heart lurching in your chest... Oh, [beloved]!") owner.adjustOxyLoss(8)