mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
Now possible to tweak colors of loadout items.
Used to greatly cut down on the number of hats (hijabs, kippots, and turbans).
This commit is contained in:
@@ -1,28 +1,40 @@
|
||||
/datum/gear_tweak/proc/apply_tweak(var/obj/item/I)
|
||||
/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/apply_tweak(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/item_color
|
||||
var/list/valid_colors
|
||||
|
||||
/datum/gear_tweak/color/New(var/item_color)
|
||||
src.item_color = item_color
|
||||
/datum/gear_tweak/color/New(var/list/valid_colors)
|
||||
src.valid_colors = valid_colors
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/color/apply_tweak(var/obj/item/I)
|
||||
I.color = item_color
|
||||
/datum/gear_tweak/color/get_contents(var/metadata)
|
||||
return "(Color<font color='[metadata]'>⚫</font>)"
|
||||
|
||||
/*
|
||||
* Icon state adjustment
|
||||
*/
|
||||
/datum/gear_tweak/icon_state
|
||||
var/icon_state
|
||||
/datum/gear_tweak/color/get_default()
|
||||
return valid_colors ? valid_colors[1] : COLOR_GRAY
|
||||
|
||||
/datum/gear_tweak/icon_state/New(var/icon_state)
|
||||
src.icon_state = icon_state
|
||||
..()
|
||||
/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/icon_state/apply_tweak(var/obj/item/I)
|
||||
I.icon_state = icon_state
|
||||
/datum/gear_tweak/color/apply_tweak(var/obj/item/I, var/metadata)
|
||||
if(valid_colors && !(metadata in valid_colors))
|
||||
return
|
||||
I.color = metadata
|
||||
|
||||
@@ -92,6 +92,7 @@ var/list/gear_datums = list()
|
||||
var/fcolor = "#3366CC"
|
||||
if(total_cost < MAX_GEAR_COST)
|
||||
fcolor = "#E67300"
|
||||
. += list()
|
||||
. += "<table align = 'center' width = 500px>"
|
||||
. += "<tr><td colspan=3><center><b><font color = '[fcolor]'>[total_cost]/[MAX_GEAR_COST]</font> loadout points spent.</b> \[<a href='?src=\ref[src];clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
|
||||
|
||||
@@ -123,10 +124,23 @@ var/list/gear_datums = list()
|
||||
var/datum/gear/G = LC.gear[gear_name]
|
||||
var/ticked = (G.display_name in pref.gear)
|
||||
var/obj/item/temp = G.path
|
||||
. += "<tr><td width=25%><a href='?src=\ref[src];toggle_gear=[G.display_name]'><font color='[ticked ? "#E67300" : "#3366CC"]'>[G.display_name]</font></a></td>"
|
||||
. += "<tr style='vertical-align:top'><td width=25%><a href='?src=\ref[src];toggle_gear=[G.display_name]'><font color='[ticked ? "#E67300" : "#3366CC"]'>[G.display_name]</font></a>"
|
||||
if(ticked)
|
||||
var/metadata = pref.gear[G.display_name]
|
||||
if(!metadata)
|
||||
metadata = list()
|
||||
pref.gear[G.display_name] = metadata
|
||||
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
|
||||
var/tweak_input = metadata["[tweak]"]
|
||||
if(!tweak_input)
|
||||
tweak_input = tweak.get_default()
|
||||
metadata["[tweak]"] = tweak_input
|
||||
. += " <a href='?src=\ref[src];gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(tweak_input)]</a>"
|
||||
. += "</td>"
|
||||
. += "<td width = 10%>[G.cost]</td>"
|
||||
. += "<td><font size=2><i>[initial(temp.desc)]</i></font></td></tr>"
|
||||
. += "</table>"
|
||||
. = jointext(.)
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/OnTopic(href, href_list, user)
|
||||
if(href_list["toggle_gear"])
|
||||
@@ -141,6 +155,17 @@ var/list/gear_datums = list()
|
||||
if((total_cost+TG.cost) <= MAX_GEAR_COST)
|
||||
pref.gear += TG.display_name
|
||||
return TOPIC_REFRESH
|
||||
if(href_list["gear"] && href_list["tweak"])
|
||||
var/datum/gear/gear = gear_datums[href_list["gear"]]
|
||||
var/datum/gear_tweak/tweak = locate(href_list["tweak"])
|
||||
if(!tweak || !istype(gear) || !(tweak in gear.gear_tweaks))
|
||||
return TOPIC_NOACTION
|
||||
var/metadata = tweak.get_metadata(user)
|
||||
if(!metadata && !CanUseTopic(user))
|
||||
return TOPIC_NOACTION
|
||||
var/gear_metadata = pref.gear[gear.display_name]
|
||||
gear_metadata["[tweak]"] = metadata
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["select_category"])
|
||||
current_tab = href_list["select_category"]
|
||||
return TOPIC_REFRESH
|
||||
@@ -159,8 +184,8 @@ var/list/gear_datums = list()
|
||||
var/sort_category = "General"
|
||||
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
|
||||
|
||||
/datum/gear/proc/spawn_item(var/location)
|
||||
/datum/gear/proc/spawn_item(var/location, var/metadata)
|
||||
var/item = new path(location)
|
||||
for(var/datum/gear_tweak/gt in gear_tweaks)
|
||||
gt.apply_tweak(item)
|
||||
gt.apply_tweak(item, metadata["[gt]"])
|
||||
return item
|
||||
|
||||
@@ -187,253 +187,25 @@
|
||||
whitelisted = "Tajara"
|
||||
|
||||
/datum/gear/head/hijab
|
||||
display_name = "hijab, black"
|
||||
display_name = "hijab"
|
||||
path = /obj/item/clothing/head/hijab
|
||||
|
||||
/datum/gear/head/hijab/white
|
||||
display_name = "hijab, white"
|
||||
path = /obj/item/clothing/head/hijab/white
|
||||
|
||||
/datum/gear/head/hijab/aqua
|
||||
display_name = "hijab, aqua"
|
||||
path = /obj/item/clothing/head/hijab/aqua
|
||||
|
||||
/datum/gear/head/hijab/blue
|
||||
display_name = "hijab, blue"
|
||||
path = /obj/item/clothing/head/hijab/blue
|
||||
|
||||
/datum/gear/head/hijab/brown
|
||||
display_name = "hijab, brown"
|
||||
path = /obj/item/clothing/head/hijab/brown
|
||||
|
||||
/datum/gear/head/hijab/darkblue
|
||||
display_name = "hijab, dark blue"
|
||||
path = /obj/item/clothing/head/hijab/darkblue
|
||||
|
||||
/datum/gear/head/hijab/darkred
|
||||
display_name = "hijab, dark red"
|
||||
path = /obj/item/clothing/head/hijab/darkred
|
||||
|
||||
/datum/gear/head/hijab/green
|
||||
display_name = "hijab, green"
|
||||
path = /obj/item/clothing/head/hijab/green
|
||||
|
||||
/datum/gear/head/hijab/grey
|
||||
display_name = "hijab, grey"
|
||||
path = /obj/item/clothing/head/hijab/grey
|
||||
|
||||
/datum/gear/head/hijab/lightblue
|
||||
display_name = "hijab, light blue"
|
||||
path = /obj/item/clothing/head/hijab/lightblue
|
||||
|
||||
/datum/gear/head/hijab/lightbrown
|
||||
display_name = "hijab, light brown"
|
||||
path = /obj/item/clothing/head/hijab/lightbrown
|
||||
|
||||
/datum/gear/head/hijab/lightgreen
|
||||
display_name = "hijab, light green"
|
||||
path = /obj/item/clothing/head/hijab/lightgreen
|
||||
|
||||
/datum/gear/head/hijab/lightpurple
|
||||
display_name = "hijab, light purple"
|
||||
path = /obj/item/clothing/head/hijab/lightpurple
|
||||
|
||||
/datum/gear/head/hijab/lightred
|
||||
display_name = "hijab, light red"
|
||||
path = /obj/item/clothing/head/hijab/lightred
|
||||
|
||||
/datum/gear/head/hijab/maroon
|
||||
display_name = "hijab, maroon"
|
||||
path = /obj/item/clothing/head/hijab/maroon
|
||||
|
||||
/datum/gear/head/hijab/orange
|
||||
display_name = "hijab, orange"
|
||||
path = /obj/item/clothing/head/hijab/orange
|
||||
|
||||
/datum/gear/head/hijab/pink
|
||||
display_name = "hijab, pink"
|
||||
path = /obj/item/clothing/head/hijab/pink
|
||||
|
||||
/datum/gear/head/hijab/purple
|
||||
display_name = "hijab, purple"
|
||||
path = /obj/item/clothing/head/hijab/purple
|
||||
|
||||
/datum/gear/head/hijab/red
|
||||
display_name = "hijab, red"
|
||||
path = /obj/item/clothing/head/hijab/red
|
||||
|
||||
/datum/gear/head/hijab/yellowgreen
|
||||
display_name = "hijab, yellow green"
|
||||
path = /obj/item/clothing/head/hijab/yellowgreen
|
||||
|
||||
/datum/gear/head/hijab/yellow
|
||||
display_name = "hijab, yellow"
|
||||
path = /obj/item/clothing/head/hijab/yellow
|
||||
/datum/gear/head/hijab/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/kippa
|
||||
display_name = "kippa, black"
|
||||
display_name = "kippa"
|
||||
path = /obj/item/clothing/head/kippa
|
||||
|
||||
/datum/gear/head/kippa/white
|
||||
display_name = "kippa, white"
|
||||
path = /obj/item/clothing/head/kippa/white
|
||||
|
||||
/datum/gear/head/kippa/aqua
|
||||
display_name = "kippa, aqua"
|
||||
path = /obj/item/clothing/head/kippa/aqua
|
||||
|
||||
/datum/gear/head/kippa/blue
|
||||
display_name = "kippa, blue"
|
||||
path = /obj/item/clothing/head/kippa/blue
|
||||
|
||||
/datum/gear/head/kippa/brown
|
||||
display_name = "kippa, brown"
|
||||
path = /obj/item/clothing/head/kippa/brown
|
||||
|
||||
/datum/gear/head/kippa/darkblue
|
||||
display_name = "kippa, dark blue"
|
||||
path = /obj/item/clothing/head/kippa/darkblue
|
||||
|
||||
/datum/gear/head/kippa/darkred
|
||||
display_name = "kippa, dark red"
|
||||
path = /obj/item/clothing/head/kippa/darkred
|
||||
|
||||
/datum/gear/head/kippa/green
|
||||
display_name = "kippa, green"
|
||||
path = /obj/item/clothing/head/kippa/green
|
||||
|
||||
/datum/gear/head/kippa/grey
|
||||
display_name = "kippa, grey"
|
||||
path = /obj/item/clothing/head/kippa/grey
|
||||
|
||||
/datum/gear/head/kippa/lightblue
|
||||
display_name = "kippa, light blue"
|
||||
path = /obj/item/clothing/head/kippa/lightblue
|
||||
|
||||
/datum/gear/head/kippa/lightbrown
|
||||
display_name = "kippa, light brown"
|
||||
path = /obj/item/clothing/head/kippa/lightbrown
|
||||
|
||||
/datum/gear/head/kippa/lightgreen
|
||||
display_name = "kippa, light green"
|
||||
path = /obj/item/clothing/head/kippa/lightgreen
|
||||
|
||||
/datum/gear/head/kippa/lightpurple
|
||||
display_name = "kippa, light purple"
|
||||
path = /obj/item/clothing/head/kippa/lightpurple
|
||||
|
||||
/datum/gear/head/kippa/lightred
|
||||
display_name = "kippa, light red"
|
||||
path = /obj/item/clothing/head/kippa/lightred
|
||||
|
||||
/datum/gear/head/kippa/maroon
|
||||
display_name = "kippa, maroon"
|
||||
path = /obj/item/clothing/head/kippa/maroon
|
||||
|
||||
/datum/gear/head/kippa/orange
|
||||
display_name = "kippa, orange"
|
||||
path = /obj/item/clothing/head/kippa/orange
|
||||
|
||||
/datum/gear/head/kippa/pink
|
||||
display_name = "kippa, pink"
|
||||
path = /obj/item/clothing/head/kippa/pink
|
||||
|
||||
/datum/gear/head/kippa/purple
|
||||
display_name = "kippa, purple"
|
||||
path = /obj/item/clothing/head/kippa/purple
|
||||
|
||||
/datum/gear/head/kippa/red
|
||||
display_name = "kippa, red"
|
||||
path = /obj/item/clothing/head/kippa/red
|
||||
|
||||
/datum/gear/head/kippa/yellowgreen
|
||||
display_name = "kippa, yellow green"
|
||||
path = /obj/item/clothing/head/kippa/yellowgreen
|
||||
|
||||
/datum/gear/head/kippa/yellow
|
||||
display_name = "kippa, yellow"
|
||||
path = /obj/item/clothing/head/kippa/yellow
|
||||
/datum/gear/head/kippa/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
/datum/gear/head/turban
|
||||
display_name = "turban, black"
|
||||
display_name = "turban"
|
||||
path = /obj/item/clothing/head/turban
|
||||
|
||||
/datum/gear/head/turban/white
|
||||
display_name = "turban, white"
|
||||
path = /obj/item/clothing/head/turban/white
|
||||
|
||||
/datum/gear/head/turban/aqua
|
||||
display_name = "turban, aqua"
|
||||
path = /obj/item/clothing/head/turban/aqua
|
||||
|
||||
/datum/gear/head/turban/blue
|
||||
display_name = "turban, blue"
|
||||
path = /obj/item/clothing/head/turban/blue
|
||||
|
||||
/datum/gear/head/turban/brown
|
||||
display_name = "turban, brown"
|
||||
path = /obj/item/clothing/head/turban/brown
|
||||
|
||||
/datum/gear/head/turban/darkblue
|
||||
display_name = "turban, dark blue"
|
||||
path = /obj/item/clothing/head/turban/darkblue
|
||||
|
||||
/datum/gear/head/turban/darkred
|
||||
display_name = "turban, dark red"
|
||||
path = /obj/item/clothing/head/turban/darkred
|
||||
|
||||
/datum/gear/head/turban/green
|
||||
display_name = "turban, green"
|
||||
path = /obj/item/clothing/head/turban/green
|
||||
|
||||
/datum/gear/head/turban/grey
|
||||
display_name = "turban, grey"
|
||||
path = /obj/item/clothing/head/turban/grey
|
||||
|
||||
/datum/gear/head/turban/lightblue
|
||||
display_name = "turban, light blue"
|
||||
path = /obj/item/clothing/head/turban/lightblue
|
||||
|
||||
/datum/gear/head/turban/lightbrown
|
||||
display_name = "turban, light brown"
|
||||
path = /obj/item/clothing/head/turban/lightbrown
|
||||
|
||||
/datum/gear/head/turban/lightgreen
|
||||
display_name = "turban, light green"
|
||||
path = /obj/item/clothing/head/turban/lightgreen
|
||||
|
||||
/datum/gear/head/turban/lightpurple
|
||||
display_name = "turban, light purple"
|
||||
path = /obj/item/clothing/head/turban/lightpurple
|
||||
|
||||
/datum/gear/head/turban/lightred
|
||||
display_name = "turban, light red"
|
||||
path = /obj/item/clothing/head/turban/lightred
|
||||
|
||||
/datum/gear/head/turban/maroon
|
||||
display_name = "turban, maroon"
|
||||
path = /obj/item/clothing/head/turban/maroon
|
||||
|
||||
/datum/gear/head/turban/orange
|
||||
display_name = "turban, orange"
|
||||
path = /obj/item/clothing/head/turban/orange
|
||||
|
||||
/datum/gear/head/turban/pink
|
||||
display_name = "turban, pink"
|
||||
path = /obj/item/clothing/head/turban/pink
|
||||
|
||||
/datum/gear/head/turban/purple
|
||||
display_name = "turban, purple"
|
||||
path = /obj/item/clothing/head/turban/purple
|
||||
|
||||
/datum/gear/head/turban/red
|
||||
display_name = "turban, red"
|
||||
path = /obj/item/clothing/head/turban/red
|
||||
|
||||
/datum/gear/head/turban/yellowgreen
|
||||
display_name = "turban, yellow green"
|
||||
path = /obj/item/clothing/head/turban/yellowgreen
|
||||
|
||||
/datum/gear/head/turban/yellow
|
||||
display_name = "turban, yellow"
|
||||
path = /obj/item/clothing/head/turban/yellow
|
||||
/datum/gear/head/turban/New()
|
||||
..()
|
||||
gear_tweaks = list(gear_tweak_free_color_choice)
|
||||
|
||||
Reference in New Issue
Block a user