From d9b420642a8020268fb5b61f3689418e47208587 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 4 Nov 2014 17:25:01 +0100 Subject: [PATCH] Manifest ghost visibility-toggle Ghosts which have been made visible by cultists can afterward turn themselves (in)visible at will, with a cooldown before being able to turn themselves visible after having faded from sight. --- code/game/gamemodes/cult/ritual.dm | 3 +- code/modules/mob/dead/observer/observer.dm | 39 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index e60795f5fd9..30737a71cb5 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -346,7 +346,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", msg_admin_attack("[user.name] ([user.ckey]) used [name] on [M.name] ([M.ckey]) (JMP)") if(istype(M,/mob/dead)) - M.invisibility = 0 + var/mob/dead/D = M + D.manifest() user.visible_message( \ "\red [user] drags the ghost to our plan of reality!", \ "\red You drag the ghost to our plan of reality!" \ diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 5e6bd3cba1b..fd37fcae6b7 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -550,3 +550,42 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp W.message = message W.add_hiddenprint(src) W.visible_message("\red Invisible fingers crudely paint something in blood on [T]...") + +/mob/dead/proc/manifest() + verbs += /mob/dead/proc/toggle_visibility + toggle_visibility() + +/mob/dead/proc/toggle_icon(var/icon) + if(!client) + return + + var/iconRemoved = 0 + for(var/image/I in client.images) + if(I.icon_state == icon) + iconRemoved = 1 + del(I) + + if(!iconRemoved) + var/image/J = image('icons/mob/mob.dmi', loc = src, icon_state = icon) + client.images += J + +/mob/dead/proc/toggle_visibility() + set category = "Ghost" + set name = "Toggle Visibility" + set desc = "Allows you to turn (in)visible (almost) at will." + + var/toggled_invisible + + if(invisibility && world.time < toggled_invisible + 600) + src << "You must gather strength before you can turn visible again..." + return + + if(invisibility == 0) + toggled_invisible = world.time + visible_message("It fades from sight...", "You are now invisible") + else + src << "