diff --git a/GainStation13/code/modules/mapping/ghost_roles.dm b/GainStation13/code/modules/mapping/ghost_roles.dm
index 21d5f16cc5..f37da590dd 100644
--- a/GainStation13/code/modules/mapping/ghost_roles.dm
+++ b/GainStation13/code/modules/mapping/ghost_roles.dm
@@ -12,6 +12,7 @@
flavour_text = "After you've sold your soul to corporate overlords, your contract obliged you to enter cryostasis. \
Finally, after God knows how long, the cryopod system have awakened you with only a single sentence of information - welcome and lure in new guests into the freshly opened GATO restaurant!"
assignedrole = "Restaurant worker"
+ mirrorcanloadappearance = TRUE
/obj/effect/mob_spawn/human/fastfoodmanager
name = "Corporate cryostasis pod"
@@ -27,6 +28,7 @@
flavour_text = "After you've sold your soul to corporate overlords, your contract obliged you to enter cryostasis. \
Finally, after God knows how long, the cryopod system have awakened you with only a single sentence of information - make sure to keep the best care of GATO's restaurant, currently under your management! You have a higher say over your workers, but do not abuse this power."
assignedrole = "Restaurant manager"
+ mirrorcanloadappearance = TRUE
/obj/effect/mob_spawn/human/fastfood/Initialize(mapload)
. = ..()
@@ -108,6 +110,7 @@
death = FALSE
roundstart = FALSE
mob_species = /datum/species/human
+ mirrorcanloadappearance = TRUE
/datum/outfit/feeders_den/fanatic
name = "Feeder Fanatic"
@@ -152,6 +155,7 @@
death = FALSE
roundstart = FALSE
mob_species = /datum/species/human
+ mirrorcanloadappearance = TRUE
/datum/outfit/feeders_den/victim
name = "Den Victim"
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index ffb48ce633..a88d250eb7 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -21,6 +21,7 @@
if(ishuman(user))
var/mob/living/carbon/human/H = user
+ H.checkloadappearance() // GS13 EDIT
//see code/modules/mob/dead/new_player/preferences.dm at approx line 545 for comments!
//this is largely copypasted from there.
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index 9c0abf70b5..1313d21312 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -56,6 +56,12 @@
if(send_to_spawnpoint)
move_to_spawnpoint()
+ //GS13 EDIT START
+ var/mob/living/carbon/human/H = owner.current
+ H.checkloadappearance()
+ //GS13 EDIT END
+
+
/datum/antagonist/nukeop/get_team()
return nuke_team
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index 5747e5190d..65988577b7 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -30,6 +30,11 @@
create_objectives()
if(move_to_lair)
send_to_lair()
+ //GS13 EDIT START
+ var/mob/living/carbon/human/H = owner.current
+ H.mirrorcanloadappearance = TRUE
+ H.checkloadappearance()
+ //GS13 EDIT END
. = ..()
if(allow_rename)
rename_wizard()
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 46e80b3255..041dd4be96 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -32,6 +32,7 @@
var/banType = "lavaland"
var/ghost_usable = TRUE
var/skip_reentry_check = FALSE //Skips the ghost role blacklist time for people who ghost/suicide/cryo
+ var/mirrorcanloadappearance = TRUE //GS13 EDIT
///override this to add special spawn conditions to a ghost role
/obj/effect/mob_spawn/proc/allow_spawn(mob/user, silent = FALSE)
@@ -139,6 +140,7 @@
M.mind.assigned_role = assignedrole
special(M, name)
MM.name = M.real_name
+ M.checkloadappearance() // GS13 EDIT
if(uses > 0)
uses--
if(!permanent && !uses)
@@ -251,6 +253,10 @@
W.assignment = id_job
W.registered_name = H.real_name
W.update_label()
+ //GS13 EDIT START
+ if (mirrorcanloadappearance)
+ H.mirrorcanloadappearance = TRUE
+ //GS13 EDIT END
//Instant version - use when spawning corpses during runtime
/obj/effect/mob_spawn/human/corpse
diff --git a/hyperstation/code/modules/mob/mob_helpers.dm b/hyperstation/code/modules/mob/mob_helpers.dm
index 50edbc330e..3aadbe3916 100644
--- a/hyperstation/code/modules/mob/mob_helpers.dm
+++ b/hyperstation/code/modules/mob/mob_helpers.dm
@@ -1,11 +1,14 @@
mob/proc/checkloadappearance()
var/mob/living/carbon/human/H = src
+ if(!istype(H))
+ return FALSE
+
//This will be where the person gets to select their appearance instead of the random character
- if (world.time <= (H.time_initialized + 900) && H.mirrorcanloadappearance == TRUE)
+ if (H.mirrorcanloadappearance == TRUE)
SEND_SOUND(H, 'sound/misc/server-ready.ogg')
to_chat(H, "This ghost role allows you to select your loaded character's appearance. Make sure you have your ID in your ID slot, if you have one.")
- if(alert(H, "Would you like to load your currently loaded character's appearance?", "This can only be done up until 90s after you spawn.", "Yes", "No") == "Yes" && world.time <= (H.time_initialized + 900))
- if(alert(H, "You should only load a character that has not currently died in the round. Do you accept this?", "Warning", "Yes", "No") == "Yes" && world.time <= (H.time_initialized + 900))
+ if(alert(H, "Would you like to load your currently loaded character's appearance?", "This can only be done up until 90s after you spawn.", "Yes", "No") == "Yes")
+ if(alert(H, "You should only load a character that has not currently died in the round. Do you accept this?", "Warning", "Yes", "No") == "Yes")
H.client?.prefs?.copy_to(H)
if (H.custom_body_size) //Do they have a custom size set?
H.resize(H.custom_body_size)
@@ -27,3 +30,6 @@ mob/proc/checkloadappearance()
else
to_chat(H, "You either took too long or chose not to change. Alrighty. Remember, you have 90 seconds from spawn to get to a mirror and still do it if you wish.")
return
+
+/mob/living/carbon/human
+ var/mirrorcanloadappearance = FALSE //Can the mob load their true appearance with a mirror?
diff --git a/tgstation.dme b/tgstation.dme
index f3bbf44f7f..02317ed49d 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4060,6 +4060,7 @@
#include "hyperstation\code\modules\arousal\arousalhud.dm"
#include "hyperstation\code\modules\clothing\sizeaccessories.dm"
#include "hyperstation\code\modules\food_and_drinks\recipes\drinks_recipes.dm"
+#include "hyperstation\code\modules\mob\mob_helpers.dm"
#include "hyperstation\code\modules\mob\living\status_indicators.dm"
#include "hyperstation\code\modules\reagents\chemistry\reagents\drink_reagents.dm"
#include "hyperstation\code\modules\reagents\chemistry\reagents\food_reagents.dm"