From f348b44bef7d7813d868933641872ee51fc5a1ee Mon Sep 17 00:00:00 2001 From: Metis <100518708+sheepishgoat@users.noreply.github.com> Date: Mon, 14 Oct 2024 23:57:52 -0400 Subject: [PATCH] ghost roles fix --- GainStation13/code/modules/mapping/ghost_roles.dm | 4 ++++ code/game/objects/structures/mirror.dm | 1 + code/modules/antagonists/nukeop/nukeop.dm | 6 ++++++ code/modules/antagonists/wizard/wizard.dm | 5 +++++ code/modules/awaymissions/corpse.dm | 6 ++++++ hyperstation/code/modules/mob/mob_helpers.dm | 12 +++++++++--- tgstation.dme | 1 + 7 files changed, 32 insertions(+), 3 deletions(-) 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"