//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/godwoken name = "Godwoken Syndrome" desc = "Patient occasionally and uncontrollably channels an eldritch god when speaking." scan_desc = "god delusion" gain_text = "You feel a higher power inside your mind..." lose_text = "The divine presence leaves your head, no longer interested." var/next_speech = 0 var/inspiration = FALSE /datum/brain_trauma/special/godwoken/on_life() ..() if(!inspiration && world.time > next_speech && prob(4)) to_chat(owner, "[pick("You feel inspired!","You feel power course through you...","You feel something within you itching to speak...")]") inspiration = TRUE /datum/brain_trauma/special/godwoken/on_say(message) if(world.time > next_speech && inspiration) playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 300, 1, 5) var/cooldown = voice_of_god(message, owner, list("colossus","yell"), 2) cooldown *= 0.33 next_speech = world.time + cooldown inspiration = FALSE return "" else return message /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 /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/hallucination/simple/bluespace_stream/first = new(first_turf, owner) var/obj/effect/hallucination/simple/bluespace_stream/second = new(second_turf, owner) first.linked_to = second second.linked_to = first first.seer = owner second.seer = owner /obj/effect/hallucination/simple/bluespace_stream name = "bluespace stream" desc = "You see a hidden pathway through bluespace..." image_icon = 'icons/effects/effects.dmi' image_state = "bluestream" image_layer = ABOVE_MOB_LAYER var/obj/effect/hallucination/simple/bluespace_stream/linked_to var/mob/living/carbon/seer /obj/effect/hallucination/simple/bluespace_stream/Initialize() . = ..() QDEL_IN(src, 300) /obj/effect/hallucination/simple/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 [user.p_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, target = src)) new /obj/effect/temp_visual/bluespace_fissure(get_turf(src)) new /obj/effect/temp_visual/bluespace_fissure(get_turf(linked_to)) user.forceMove(get_turf(linked_to)) user.visible_message("[user] [slip_in_message].", ignored_mob = user) user.visible_message("[user] [slip_out_message].", "...and find your way to the other side.") /datum/brain_trauma/special/psychotic_brawling name = "Violent Psychosis" desc = "Patient fights in unpredictable ways, ranging from helping his target to hitting them with brutal strength." scan_desc = "violent psychosis" gain_text = "You feel unhinged..." lose_text = "You feel more balanced." var/datum/martial_art/psychotic_brawling/psychotic_brawling /datum/brain_trauma/special/psychotic_brawling/on_gain() ..() psychotic_brawling = new(null) if(!psychotic_brawling.teach(owner, TRUE)) to_chat(owner, "But your martial knowledge keeps you grounded.") qdel(src) /datum/brain_trauma/special/psychotic_brawling/on_lose() ..() psychotic_brawling.remove(owner) QDEL_NULL(psychotic_brawling)