diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 4f9ef69353..45065d0a72 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -594,7 +594,7 @@
jobs += ""
//Other races (Blue) ... And also graffiti.
- var/list/misc_roles = list("Dionaea", "Graffiti")
+ var/list/misc_roles = list("Dionaea", "Graffiti", "Custom loadout")
jobs += "
| Other Roles |
|---|
"
for(var/entry in misc_roles)
if(jobban_isbanned(M, entry))
diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm
index 71af8715a5..8d9206b64c 100644
--- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm
+++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm
@@ -141,6 +141,74 @@
. = valid_reagents[metadata]
I.reagents.add_reagent(., I.reagents.get_free_space())
+//Custom name and desciption code
+//note to devs downstream: where 'gear_tweaks = list(gear_tweak_free_color_choice)' was used before for color selection
+//in the loadout, now 'gear_tweaks += gear_tweak_free_color_choice' will need to be used, otherwise the item will not
+// be able to be given a custom name or description
+/*
+Custom Name
+*/
+
+var/datum/gear_tweak/custom_name/gear_tweak_free_name = new()
+
+/datum/gear_tweak/custom_name
+ var/list/valid_custom_names
+
+/datum/gear_tweak/custom_name/New(var/list/valid_custom_names)
+ src.valid_custom_names = valid_custom_names
+ ..()
+
+/datum/gear_tweak/custom_name/get_contents(var/metadata)
+ return "Name: [metadata]"
+
+/datum/gear_tweak/custom_name/get_default()
+ return ""
+
+/datum/gear_tweak/custom_name/get_metadata(var/user, var/metadata)
+ if(jobban_isbanned(user, "Custom loadout"))
+ to_chat(user, SPAN_WARNING("You are banned from using custom loadout names/descriptions."))
+ return
+ if(valid_custom_names)
+ return input(user, "Choose an item name.", "Character Preference", metadata) as null|anything in valid_custom_names
+ return sanitize(input(user, "Choose the item's name. Leave it blank to use the default name.", "Item Name", metadata) as text|null, MAX_LNAME_LEN, extra = 0)
+
+/datum/gear_tweak/custom_name/tweak_item(var/obj/item/I, var/metadata)
+ if(!metadata)
+ return I.name
+ I.name = metadata
+
+/*
+Custom Description
+*/
+var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new()
+
+/datum/gear_tweak/custom_desc
+ var/list/valid_custom_desc
+
+/datum/gear_tweak/custom_desc/New(var/list/valid_custom_desc)
+ src.valid_custom_desc = valid_custom_desc
+ ..()
+
+/datum/gear_tweak/custom_desc/get_contents(var/metadata)
+ return "Description: [metadata]"
+
+/datum/gear_tweak/custom_desc/get_default()
+ return ""
+
+/datum/gear_tweak/custom_desc/get_metadata(var/user, var/metadata)
+ if(jobban_isbanned(user, "Custom loadout"))
+ to_chat(user, SPAN_WARNING("You are banned from using custom loadout names/descriptions."))
+ return
+ if(valid_custom_desc)
+ return input(user, "Choose an item description.", "Character Preference", metadata) as null|anything in valid_custom_desc
+ return sanitize(input(user, "Choose the item's description. Leave it blank to use the default description.", "Item Description", metadata) as message|null, extra = 0)
+
+/datum/gear_tweak/custom_desc/tweak_item(var/obj/item/I, var/metadata)
+ if(!metadata)
+ return I.desc
+ I.desc = metadata
+
+//end of custom description
/datum/gear_tweak/tablet
var/list/ValidProcessors = list(/obj/item/weapon/computer_hardware/processor_unit/small)
diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm
index c87ddcd1c4..73dbcc2e3e 100644
--- a/code/modules/client/preference_setup/loadout/loadout.dm
+++ b/code/modules/client/preference_setup/loadout/loadout.dm
@@ -246,6 +246,7 @@ var/list/gear_datums = list()
if(!description)
var/obj/O = path
description = initial(O.desc)
+ gear_tweaks = list(gear_tweak_free_name, gear_tweak_free_desc)
/datum/gear_data
var/path
diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
index b84d91e8d2..84ab99557e 100644
--- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm
@@ -24,7 +24,7 @@
/datum/gear/accessory/armband/colored/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/wallet
display_name = "wallet, orange"
@@ -40,7 +40,7 @@
/datum/gear/accessory/wallet/womens/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/clutch
display_name = "clutch bag"
@@ -49,7 +49,7 @@
/datum/gear/accessory/clutch/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/purse
display_name = "purse"
@@ -58,7 +58,7 @@
/datum/gear/accessory/purse/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/wcoat
display_name = "waistcoat selection"
@@ -119,7 +119,7 @@
/datum/gear/accessory/scarfcolor/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/jacket
display_name = "suit jacket selection"
@@ -265,7 +265,7 @@
/datum/gear/accessory/sash/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/asym
display_name = "asymmetric jacket selection"
diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm
index 4b4f979ef5..542348fec4 100644
--- a/code/modules/client/preference_setup/loadout/loadout_general.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_general.dm
@@ -126,7 +126,7 @@
/datum/gear/towel/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/cahwhite
display_name = "Cards Against The Galaxy (white deck)"
diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm
index b72549e866..2564b8d98e 100644
--- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm
@@ -62,7 +62,7 @@
/datum/gear/gloves/evening/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/gloves/duty
display_name = "gloves, work"
diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm
index 4a6437cea1..366b54f81a 100644
--- a/code/modules/client/preference_setup/loadout/loadout_head.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_head.dm
@@ -119,7 +119,7 @@
/datum/gear/head/cap/white/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/cap/mbill
display_name = "cap, bill"
@@ -155,7 +155,7 @@
/datum/gear/head/hairflower/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/pin
display_name = "pin selection"
@@ -229,7 +229,7 @@
/datum/gear/head/hijab/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/kippa
display_name = "kippa"
@@ -237,7 +237,7 @@
/datum/gear/head/kippa/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/turban
display_name = "turban"
@@ -245,7 +245,7 @@
/datum/gear/head/turban/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/taqiyah
display_name = "taqiyah"
@@ -253,7 +253,7 @@
/datum/gear/head/taqiyah/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/kitty
display_name = "kitty ears"
@@ -269,7 +269,7 @@
/datum/gear/head/beanie/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/loose_beanie
display_name = "loose beanie"
@@ -277,7 +277,7 @@
/datum/gear/head/loose_beanie/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/beretg
display_name = "beret"
@@ -285,7 +285,7 @@
/datum/gear/head/beretg/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/sombrero
display_name = "sombrero"
@@ -297,7 +297,7 @@
/datum/gear/head/flatcapg/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/bow/small
display_name = "hair bow, small (colorable)"
@@ -305,7 +305,7 @@
/datum/gear/head/bow/small/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/head/welding/
display_name = "welding, normal (engineering/robotics)"
diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
index d5e7caeae5..b6795dfebe 100644
--- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
@@ -95,7 +95,7 @@
/datum/gear/shoes/flipflops/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/athletic
display_name = "athletic shoes"
@@ -103,7 +103,7 @@
/datum/gear/shoes/athletic/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/skater
display_name = "skater shoes"
@@ -111,7 +111,7 @@
/datum/gear/shoes/skater/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/flats
display_name = "flats"
@@ -119,7 +119,7 @@
/datum/gear/shoes/flats/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/cowboy
display_name = "cowboy boots"
@@ -157,7 +157,7 @@
/datum/gear/shoes/heels/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/shoes/slippers
display_name = "bunny slippers"
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index 57f3c1cb6e..cd2ce4aa94 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -12,7 +12,7 @@
/datum/gear/suit/apron_white/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/greatcoat
display_name = "greatcoat"
@@ -104,7 +104,7 @@ datum/gear/suit/duster
/datum/gear/suit/duster/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/hazard_vest
display_name = "hazard vest selection"
@@ -288,7 +288,7 @@ datum/gear/suit/duster
/datum/gear/suit/roles/poncho/cloak/custom/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/unathi_robe
display_name = "roughspun robe"
@@ -435,7 +435,7 @@ datum/gear/suit/duster
/datum/gear/suit/miscellaneous/kimono/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/miscellaneous/sec_dep_jacket
display_name = "department jacket, security"
@@ -463,7 +463,7 @@ datum/gear/suit/duster
/datum/gear/suit/miscellaneous/peacoat/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/miscellaneous/kamishimo
display_name = "kamishimo"
@@ -509,4 +509,4 @@ datum/gear/suit/duster
/datum/gear/suit/miscellaneous/cardigan/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
\ No newline at end of file
+ gear_tweaks += gear_tweak_free_color_choice
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
index 0cfa68b46c..fd2486240d 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
@@ -347,7 +347,7 @@
/datum/gear/uniform/shortplaindress/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/longdress
display_name = "long dress"
@@ -355,7 +355,7 @@
/datum/gear/uniform/longdress/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/longwidedress
display_name = "long wide dress"
@@ -363,7 +363,7 @@
/datum/gear/uniform/longwidedress/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/reddress
display_name = "red dress with belt"
@@ -452,7 +452,7 @@
/datum/gear/uniform/yogapants/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/black_corset
display_name = "black corset"
@@ -508,7 +508,7 @@
/datum/gear/uniform/pleated/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/lilacdress
display_name = "lilac dress"
diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm
index cf6f8c2ab8..2fc5b7d0a2 100644
--- a/code/modules/client/preference_setup/loadout/loadout_utility.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm
@@ -165,7 +165,7 @@
/datum/gear/utility/wheelchair/color/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/utility/umbrella
display_name = "Umbrella"
@@ -174,7 +174,7 @@
/datum/gear/utility/umbrella/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/****************
modular computers
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
index dc222014ef..eabf443bef 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
@@ -80,7 +80,7 @@
/datum/gear/ears/skrell/colored/band/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/ears/skrell/colored/chain
display_name = "Colored chain (Skrell)"
@@ -90,7 +90,7 @@
/datum/gear/ears/skrell/colored/chain/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/smock
display_name = "smock selection (Teshari)"
@@ -147,7 +147,7 @@
/datum/gear/shoes/footwraps/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/cohesionsuits
display_name = "cohesion suit selection (Promethean)"
@@ -358,7 +358,7 @@
/datum/gear/uniform/smockcolor/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/uniform/undercoatcolor
display_name = "undercoat, recolorable (Teshari)"
@@ -368,7 +368,7 @@
/datum/gear/uniform/undercoatcolor/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/cloakcolor
display_name = "cloak, recolorable (Teshari)"
@@ -378,7 +378,7 @@
/datum/gear/suit/cloakcolor/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/labcoat_tesh
display_name = "labcoat, colorable (Teshari)"
path = /obj/item/clothing/suit/storage/toggle/labcoat/teshari
@@ -387,7 +387,7 @@
/datum/gear/suit/labcoat_tesh/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/teshcoat
display_name = "small black coat, recolorable stripes (Teshari)"
@@ -397,7 +397,7 @@
/datum/gear/suit/teshcoat/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/suit/teshcoatwhite
display_name = "smallcoat, recolorable (Teshari)"
@@ -407,7 +407,7 @@
/datum/gear/suit/teshcoatwhite/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
+ gear_tweaks += gear_tweak_free_color_choice
/datum/gear/accessory/teshneckscarf
display_name = "neckscarf, recolorable (Teshari)"
@@ -417,4 +417,4 @@
/datum/gear/accessory/teshneckscarf/New()
..()
- gear_tweaks = list(gear_tweak_free_color_choice)
\ No newline at end of file
+ gear_tweaks += gear_tweak_free_color_choice
\ No newline at end of file