diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm index dd16f7ee66e..dcd979ee1fd 100644 --- a/code/__HELPERS/traits.dm +++ b/code/__HELPERS/traits.dm @@ -222,6 +222,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define CHANGELING_DRAIN "drain" #define TRAIT_HULK "hulk" #define STASIS_MUTE "stasis" +#define SCRYING "scrying" // for mobs that have ghosted, but their ghosts are allowed to return to their body outside of aghosting (spirit rune, scrying orb, etc) #define SCRYING_ORB "scrying-orb" #define CULT_EYES "cult_eyes" #define DOGGO_SPACESUIT "doggo_spacesuit" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index e34425862df..2dd6444094b 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -947,6 +947,7 @@ structure_check() searches for nearby cultist structures required for the invoca new_human.dust() /obj/effect/rune/manifest/proc/ghostify(mob/living/user, turf/T) + ADD_TRAIT(user, SCRYING, CULT_TRAIT) user.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) user.visible_message("[user] freezes statue-still, glowing an unearthly red.", "You see what lies beyond. All is revealed. In this form you find that your voice booms above all others.") @@ -977,6 +978,7 @@ structure_check() searches for nearby cultist structures required for the invoca CM.Remove(ghost) V.Remove(ghost) //GM.Remove(ghost) + REMOVE_TRAIT(user, SCRYING, CULT_TRAIT) user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) user = null rune_in_use = FALSE diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 795ac8ec8d2..c8e3fd4de38 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -213,6 +213,7 @@ force = 15 hitsound = 'sound/items/welder2.ogg' var/mob/current_owner + var/mob/dead/observer/ghost // owners ghost when active /obj/item/scrying/Initialize(mapload) . = ..() @@ -245,9 +246,32 @@ current_owner.update_icons() /obj/item/scrying/attack_self(mob/user as mob) - to_chat(user, " You can see...everything!") - visible_message("[user] stares into [src], [user.p_their()] eyes glazing over.") - user.ghostize(1) + if(in_use) + return + in_use = TRUE + ADD_TRAIT(user, SCRYING, SCRYING_ORB) + user.add_atom_colour(COLOR_BLUE, ADMIN_COLOUR_PRIORITY) // stolen spirit rune code + user.visible_message("[user] stares into [src], [user.p_their()] eyes glazing over.", + " You stare into [src], you can see the entire universe!") + ghost = user.ghostize(TRUE) + ghost.name = "Magic Spirit of [ghost.name]" + ghost.color = COLOR_BLUE + while(!QDELETED(user)) + if(user.key || QDELETED(src)) + user.visible_message("[user] blinks, returning to the world around [user.p_them()].", + "You look away from [src].") + break + if(user.get_active_hand() != src) + user.grab_ghost() + user.visible_message("[user]'s focus is forced away from [src].", + "Your vision is ripped away from [src].") + break + sleep(5) + in_use = FALSE + if(QDELETED(user)) + return + user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, COLOR_BLUE) + REMOVE_TRAIT(user, SCRYING, SCRYING_ORB) /////////////////////Multiverse Blade//////////////////// GLOBAL_LIST_EMPTY(multiverse) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 142a08f098e..32920e20fea 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -95,8 +95,14 @@ if(blood_DNA) msg += "[p_they(TRUE)] [p_have()] [hand_blood_color != "#030303" ? "blood-stained":"oil-stained"] hands!\n" if("eyes") - if(iscultist(src) && HAS_TRAIT(src, CULT_EYES)) - msg += "[p_their(TRUE)] eyes are glowing an unnatural red!\n" + if(HAS_TRAIT(src, SCRYING)) + if(iscultist(src) && HAS_TRAIT(src, CULT_EYES)) + msg += "[p_their(TRUE)] glowing red eyes are glazed over!\n" + else + msg += "[p_their(TRUE)] eyes are glazed over.\n" + else + if(iscultist(src) && HAS_TRAIT(src, CULT_EYES)) + msg += "[p_their(TRUE)] eyes are glowing an unnatural red!\n" continue //handcuffed? @@ -269,10 +275,11 @@ if(get_int_organ(/obj/item/organ/internal/brain)) if(dna.species.show_ssd) - if(!key) - msg += "[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.\n" - else if(!client) - msg += "[p_they(TRUE)] [p_have()] suddenly fallen asleep, suffering from Space Sleep Disorder. [p_they(TRUE)] may wake up soon.\n" + if(!HAS_TRAIT(src, SCRYING)) + if(!key) + msg += "[p_they(TRUE)] [p_are()] totally catatonic. The stresses of life in deep-space must have been too much for [p_them()]. Any recovery is unlikely.\n" + else if(!client) + msg += "[p_they(TRUE)] [p_have()] suddenly fallen asleep, suffering from Space Sleep Disorder. [p_they(TRUE)] may wake up soon.\n" if(decaylevel == 1) msg += "[p_they(TRUE)] [p_are()] starting to smell.\n"