Loadout Modsuit Configuration (#19924)

* The PMCG modsuit can now be configured inside the loadout.


![image](https://github.com/user-attachments/assets/30a5b76a-0f2f-4f6e-a6ac-084ba5932cec)
This commit is contained in:
Geeves
2024-12-24 18:04:40 +02:00
committed by GitHub
parent acb227f24e
commit 5c2c77a4b3
4 changed files with 97 additions and 28 deletions
@@ -352,6 +352,7 @@
pmcg_headwear["Grupo Amapola utility cover"] = /obj/item/clothing/head/grupo_amapola/ute
gear_tweaks += new /datum/gear_tweak/path(pmcg_headwear)
// START: PMCG MODSUIT
/datum/gear/faction/pmc_modsuit
display_name = "PMCG modsuit"
description = "A modular PMCG fatigue jumpsuit."
@@ -359,6 +360,59 @@
slot = slot_w_uniform
faction = "Private Military Contracting Group"
/datum/gear/faction/pmc_modsuit/New()
..()
gear_tweaks += list(gear_tweak_modsuit_configuration)
var/datum/gear_tweak/modsuit_configuration/gear_tweak_modsuit_configuration = new()
/datum/gear_tweak/modsuit_configuration
/// the configuration of the modsuit, using just a list of the names
var/list/configuration_options = list()
/datum/gear_tweak/modsuit_configuration/get_contents(var/metadata)
return "Modsuit Configuration: [metadata]"
/datum/gear_tweak/modsuit_configuration/get_default()
var/obj/item/clothing/under/pmc_modsuit/modsuit_type = /obj/item/clothing/under/pmc_modsuit
return initial(modsuit_type.modsuit_mode)
/// Instantiates the modsuit item so we can set up the configuration whenever it's needed, only called when the options haven't been configured yet
/datum/gear_tweak/modsuit_configuration/proc/load_configuration_options()
// forgive me, for i have sinned. there is no way to initial() a list, so we need to instantiate the item and grab its data here
// and we can't do that in /New, cuz that fails CI. instead, we grab it on-demand here if the options aren't populated
var/obj/item/clothing/under/pmc_modsuit/initial_uniform = new()
for(var/option in initial_uniform.configuration_options)
configuration_options |= option
qdel(initial_uniform)
/datum/gear_tweak/modsuit_configuration/get_metadata(var/user, var/metadata, var/title = "Character Preference")
if(!length(configuration_options))
load_configuration_options()
var/selected_configuration = tgui_input_list(user, "How do you want your modsuit to be set up?", title, configuration_options, metadata)
if(selected_configuration)
return selected_configuration
/datum/gear_tweak/modsuit_configuration/tweak_item(var/obj/item/clothing/under/pmc_modsuit/modsuit, var/metadata, var/mob/living/carbon/human/H)
if(!metadata)
return
if(!length(configuration_options))
load_configuration_options()
// if this mode isn't in the options, don't continue, this'll protect us from old data if the mode names ever change
if(!(metadata in configuration_options))
return
modsuit.modsuit_mode = metadata
modsuit.selected_modsuit()
// END: PMCG MODSUIT
/datum/gear/faction/pmcg_sec_uniforms
display_name = "PMCG/EPMC security uniform selection"
description = "A selection of PMCG and EPMC security uniforms."