Improves Cryoing

- Changes cryoing, such that if you use OOC->Ghost while in a cryopod,
you are instantly moved to long-term storage. After all, you can't get
back into your body at that point anyway, so keeping your body around
for 30 minutes before announcing that you've disappeared is pointless.
- Changes the notification given to antags whose target cryos, to make
it slightly more obvious.
- Makes long-term storage announcements include stored person's rank (if they have one).

Added rank to cryo storage announcement

Removes list() call from pick()
This commit is contained in:
Kyep
2016-07-09 18:40:06 -07:00
parent 61b436e92d
commit 43afd64396
2 changed files with 18 additions and 7 deletions
+11 -4
View File
@@ -319,7 +319,7 @@
else if(O.target && istype(O.target,/datum/mind))
if(O.target == occupant.mind)
if(O.owner && O.owner.current)
to_chat(O.owner.current, "<span class='warning'>You get the feeling your target is no longer within your reach. Time for Plan [pick(list("A","B","C","D","X","Y","Z"))]...</span>")
to_chat(O.owner.current, "<span class='userdanger'>You get the feeling your target is no longer within reach. Time for Plan [pick("A","B","C","D","X","Y","Z")]. Objectives updated!</span>")
O.target = null
spawn(1) //This should ideally fire after the occupant is deleted.
if(!O) return
@@ -344,6 +344,7 @@
// Delete them from datacore.
var/announce_rank = null
if(PDA_Manifest.len)
PDA_Manifest.Cut()
for(var/datum/data/record/R in data_core.medical)
@@ -354,6 +355,7 @@
qdel(T)
for(var/datum/data/record/G in data_core.general)
if((G.fields["name"] == occupant.real_name))
announce_rank = G.fields["rank"]
qdel(G)
if(orient_right)
@@ -369,10 +371,15 @@
ailist += A
if(ailist.len)
var/mob/living/silicon/ai/announcer = pick(ailist)
announcer.say(";[occupant.real_name] [on_store_message]")
if (announce_rank)
announcer.say(";[occupant.real_name] ([announce_rank]) [on_store_message]")
else
announcer.say(";[occupant.real_name] [on_store_message]")
else
announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
if (announce_rank)
announce.autosay("[occupant.real_name] ([announce_rank]) [on_store_message]", "[on_store_name]")
else
announce.autosay("[occupant.real_name] [on_store_message]", "[on_store_name]")
visible_message("<span class='notice'>\The [src] hums and hisses as it moves [occupant.real_name] into storage.</span>")
// Delete the mob.
+7 -3
View File
@@ -72,7 +72,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
mind = body.mind //we don't transfer the mind but we keep a reference to it.
ghostimage = image(icon = icon, loc = src, icon_state = icon_state)
ghostimage.overlays = overlays
ghostimage.dir = dir
@@ -157,13 +157,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
resting = 1
var/mob/dead/observer/ghost = ghostize(0) //0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3
ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly.
var/obj/structure/morgue/Morgue = locate() in M.loc
if(istype(M.loc,/obj/structure/morgue))
Morgue = M.loc
if(Morgue)
Morgue.update()
if(istype(M.loc,/obj/machinery/cryopod))
var/obj/machinery/cryopod/P = M.loc
if(!P.control_computer)
P.find_control_computer(urgent=1)
if(P.control_computer)
P.despawn_occupant()
return