Custom Stickersheets (#20076)

Adds custom stickersheets (you pick 4 stickers in loadout, each
selection adds 3 stickers)

'None' and "Random' are now at the top of TGUI lists for content gear
tweaks for QoL


![image](https://github.com/user-attachments/assets/41340b7f-9f45-4657-adf0-f704c5c51b75)

---------

Co-authored-by: Ben10083 <Ben10083@users.noreply.github.com>
This commit is contained in:
Ben
2024-11-05 13:28:39 -05:00
committed by GitHub
parent 2f745f1ad6
commit c0167b6bdb
5 changed files with 100 additions and 8 deletions
@@ -192,7 +192,7 @@ Content adjustment
for(var/i = metadata.len to (valid_contents.len - 1))
metadata += "Random"
for(var/i = 1 to valid_contents.len)
var/entry = tgui_input_list(user, "Choose an entry.", "Character Preference", (valid_contents[i] + list("Random", "None")), metadata[i])
var/entry = tgui_input_list(user, "Choose an entry.", "Character Preference", (list("None", "Random") + valid_contents[i]), metadata[i])
if(entry)
. += entry
else
@@ -144,3 +144,36 @@
stickersheet["Uueoa-Esa sticker sheet"] = /obj/item/storage/stickersheet/hegemony
stickersheet["Anti-Establishment sticker sheet"] = /obj/item/storage/stickersheet/resistance
gear_tweaks += new /datum/gear_tweak/path(stickersheet)
/datum/gear/toy/stickersheet_custom
display_name = "sticker sheet (custom)"
description = "A sticker sheet that can hold a variety of stickers."
cost = 1
path = /obj/item/storage/stickersheet
/datum/gear/toy/stickersheet_custom/New()
..()
var/list/stickersheet = list()
for(var/sticker as anything in subtypesof(/obj/item/sticker))
var/obj/O = sticker
stickersheet[initial(O.name)] = sticker
gear_tweaks += new /datum/gear_tweak/contents/stickersheet(stickersheet,stickersheet,stickersheet,stickersheet)
// Same as contents/tweak_item except it adds 3 of each item into the stickersheet (4 * 3 = 12)
/datum/gear_tweak/contents/stickersheet/tweak_item(var/obj/item/storage/stickersheet/sheet, var/list/metadata, var/mob/living/carbon/human/H)
if(length(metadata) != length(valid_contents))
return
for(var/i = 1 to length(valid_contents))
var/path
var/list/contents = valid_contents[i]
if(metadata[i] == "Random")
path = pick(contents)
path = contents[path]
else if(metadata[i] == "None")
continue
else
path = contents[metadata[i]]
if(path) // repeat 3 times for each item
for(i = 0, i < 3, ++i)
new path(sheet)