diff --git a/aurorastation.dme b/aurorastation.dme
index 81343162641..623be5eb423 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -1307,6 +1307,7 @@
#include "code\modules\client\preferences_spawnpoints.dm"
#include "code\modules\client\preferences_toggles.dm"
#include "code\modules\client\ui_style.dm"
+#include "code\modules\client\preference_setup\_defines.dm"
#include "code\modules\client\preference_setup\preference_setup.dm"
#include "code\modules\client\preference_setup\preferences_sql.dm"
#include "code\modules\client\preference_setup\antagonism\01_candidacy.dm"
diff --git a/code/modules/client/preference_setup/_defines.dm b/code/modules/client/preference_setup/_defines.dm
new file mode 100644
index 00000000000..424aa1dacb8
--- /dev/null
+++ b/code/modules/client/preference_setup/_defines.dm
@@ -0,0 +1,3 @@
+#define EQUIP_PREVIEW_LOADOUT 1
+#define EQUIP_PREVIEW_JOB 2
+#define EQUIP_PREVIEW_ALL (EQUIP_PREVIEW_LOADOUT|EQUIP_PREVIEW_JOB)
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm
index c94d051e33c..463dc5c6a43 100644
--- a/code/modules/client/preference_setup/general/03_body.dm
+++ b/code/modules/client/preference_setup/general/03_body.dm
@@ -1,5 +1,8 @@
var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
+/datum/preferences
+ var/equip_preview_mob = EQUIP_PREVIEW_ALL
+
/datum/category_item/player_setup_item/general/body
name = "Body"
sort_order = 3
@@ -195,7 +198,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
out += "
"
out += "Species: [pref.species]
"
out += "Blood Type: [pref.b_type]
"
- out += "Cycle preview background
"
if(has_flag(mob_species, HAS_SKIN_TONE))
out += "Skin Tone: [-pref.s_tone + 35]/220
"
out += "Disabilities: Adjust
"
@@ -282,7 +284,13 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else
out += "
"
- out += "Hair
"
+ out += "
Preview"
+ out += " Cycle background"
+ out += " [pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]"
+ out += " [pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]"
+ out += " | "
+
+ out += "Hair
"
if(has_flag(mob_species, HAS_HAIR_COLOR))
out += "Change Color [HTML_RECT(rgb(pref.r_hair, pref.g_hair, pref.b_hair))] "
out += " Style: [pref.h_style]
"
@@ -671,6 +679,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.bgstate = next_in_list(pref.bgstate, pref.bgstate_options)
return TOPIC_REFRESH_UPDATE_PREVIEW
+ else if(href_list["toggle_preview_value"])
+ pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"])
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
return ..()
/datum/category_item/player_setup_item/general/body/proc/SetSpecies(mob/user)
diff --git a/code/modules/mob/abstract/new_player/preferences_setup.dm b/code/modules/mob/abstract/new_player/preferences_setup.dm
index 8b837b2a4af..74060bd66f9 100644
--- a/code/modules/mob/abstract/new_player/preferences_setup.dm
+++ b/code/modules/mob/abstract/new_player/preferences_setup.dm
@@ -194,6 +194,9 @@
/datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin)
copy_to(mannequin)
+ if(!equip_preview_mob)
+ return
+
// Determine what job is marked as 'High' priority, and dress them up as such.
var/datum/job/previewJob
if(job_civilian_low & ASSISTANT)
@@ -217,12 +220,15 @@
var/list/leftovers = list()
var/list/used_slots = list()
+
+ if((equip_preview_mob & EQUIP_PREVIEW_LOADOUT) && !(previewJob && (equip_preview_mob & EQUIP_PREVIEW_JOB) && (previewJob.type == /datum/job/ai || previewJob.type == /datum/job/cyborg)))
+ SSjobs.EquipCustom(mannequin, previewJob, src, leftovers, null, used_slots)
- SSjobs.EquipCustom(mannequin, previewJob, src, leftovers, null, used_slots)
+ if((equip_preview_mob & EQUIP_PREVIEW_JOB) && previewJob)
+ previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title])
- previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title])
-
- SSjobs.EquipCustomDeferred(mannequin, src, leftovers, used_slots)
+ if(equip_preview_mob & EQUIP_PREVIEW_LOADOUT && leftovers.len)
+ SSjobs.EquipCustomDeferred(mannequin, src, leftovers, used_slots)
if (!SSATOMS_IS_PROBABLY_DONE)
SSatoms.ForceInitializeContents(mannequin)
diff --git a/html/changelogs/Ferner-200913-coding_previewimprovement.yml b/html/changelogs/Ferner-200913-coding_previewimprovement.yml
new file mode 100644
index 00000000000..3e357de3e1b
--- /dev/null
+++ b/html/changelogs/Ferner-200913-coding_previewimprovement.yml
@@ -0,0 +1,4 @@
+author: Ferner
+delete-after: True
+changes:
+ - rscadd: "Added buttons to hide your character's loadout and/or job clothing in the character preview."
\ No newline at end of file