/datum/gear_tweak/proc/get_contents(var/metadata) return /datum/gear_tweak/proc/get_metadata(var/user, var/metadata) return /datum/gear_tweak/proc/get_default() return /datum/gear_tweak/proc/tweak_gear_data(var/metadata, var/datum/gear_data) return /datum/gear_tweak/proc/tweak_item(var/obj/item/I, var/metadata) return /* * Color adjustment */ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new() /datum/gear_tweak/color var/list/valid_colors /datum/gear_tweak/color/New(var/list/valid_colors) src.valid_colors = valid_colors ..() /datum/gear_tweak/color/get_contents(var/metadata) return "Color: " /datum/gear_tweak/color/get_default() return valid_colors ? valid_colors[1] : COLOR_GRAY /datum/gear_tweak/color/get_metadata(var/user, var/metadata) if(valid_colors) return input(user, "Choose an item color.", "Character Preference", metadata) as null|anything in valid_colors return input(user, "Choose an item color.", "Global Preference", metadata) as color|null /datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata) if(valid_colors && !(metadata in valid_colors)) return I.color = metadata /* * Path adjustment */ /datum/gear_tweak/path var/list/valid_paths /datum/gear_tweak/path/New(var/list/valid_paths) src.valid_paths = valid_paths ..() /datum/gear_tweak/path/get_contents(var/metadata) return "Type: [metadata]" /datum/gear_tweak/path/get_default() return valid_paths[1] /datum/gear_tweak/path/get_metadata(var/user, var/metadata) return input(user, "Choose a type.", "Character Preference", metadata) as null|anything in valid_paths /datum/gear_tweak/path/tweak_gear_data(var/metadata, var/datum/gear_data/gear_data) if(!(metadata in valid_paths)) return gear_data.path = valid_paths[metadata] /* * Content adjustment */ /datum/gear_tweak/contents var/list/valid_contents /datum/gear_tweak/contents/New() valid_contents = args.Copy() ..() /datum/gear_tweak/contents/get_contents(var/metadata) return "Contents: [english_list(metadata, and_text = ", ")]" /datum/gear_tweak/contents/get_default() . = list() for(var/i = 1 to valid_contents.len) . += "Random" /datum/gear_tweak/contents/get_metadata(var/user, var/list/metadata) . = list() for(var/i = metadata.len to valid_contents.len) metadata += "Random" for(var/i = 1 to valid_contents.len) var/entry = input(user, "Choose an entry.", "Character Preference", metadata[i]) as null|anything in (valid_contents[i] + list("Random", "None")) if(entry) . += entry else return metadata /datum/gear_tweak/contents/tweak_item(var/obj/item/I, var/list/metadata) if(metadata.len != valid_contents.len) return for(var/i = 1 to valid_contents.len) 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]] new path(I)