mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-28 02:53:11 +00:00
Can now select the design and contents of your loadout lunchbox.
Also allows gear tweaks to take up a whole row on their own, due to potential length. Also fixes a couple of incorrect && logical operations. Should have been ||.
This commit is contained in:
@@ -409,7 +409,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
choice_options = list("Normal","Prosthesis")
|
||||
|
||||
var/new_state = input(user, "What state do you wish the limb to be in?") as null|anything in choice_options
|
||||
if(!new_state && !CanUseTopic(user)) return TOPIC_NOACTION
|
||||
if(!new_state || !CanUseTopic(user)) return TOPIC_NOACTION
|
||||
|
||||
switch(new_state)
|
||||
if("Normal")
|
||||
|
||||
@@ -27,7 +27,7 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/color/get_contents(var/metadata)
|
||||
return "(Color<font color='[metadata]'>⚫</font>)"
|
||||
return "Color: <font color='[metadata]'>⚫</font>"
|
||||
|
||||
/datum/gear_tweak/color/get_default()
|
||||
return valid_colors ? valid_colors[1] : COLOR_GRAY
|
||||
@@ -54,7 +54,7 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/path/get_contents(var/metadata)
|
||||
return "(Type: [metadata])"
|
||||
return "Type: [metadata]"
|
||||
|
||||
/datum/gear_tweak/path/get_default()
|
||||
return valid_paths[1]
|
||||
@@ -75,20 +75,21 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
var/list/valid_contents
|
||||
|
||||
/datum/gear_tweak/contents/New()
|
||||
valid_contents = args
|
||||
valid_contents = args.Copy()
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/contents/get_contents(var/metadata)
|
||||
return "(Contents)"
|
||||
return "Contents: [english_list(metadata, and_text = ", ")]"
|
||||
|
||||
/datum/gear_tweak/contents/get_default()
|
||||
. = list()
|
||||
for(var/i = 1 to valid_contents.len)
|
||||
var/list/contents = valid_contents[i]
|
||||
. += contents[1]
|
||||
. += "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)
|
||||
@@ -100,12 +101,13 @@ var/datum/gear_tweak/color/gear_tweak_free_color_choice = new()
|
||||
if(metadata.len != valid_contents.len)
|
||||
return
|
||||
for(var/i = 1 to valid_contents.len)
|
||||
var/path
|
||||
var/list/contents = valid_contents[i]
|
||||
var/path = contents[metadata[i]]
|
||||
if(path)
|
||||
if(path == "Random")
|
||||
path = pick(contents)
|
||||
path = contents[path]
|
||||
else if(path == "None")
|
||||
continue
|
||||
new path(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)
|
||||
|
||||
@@ -123,25 +123,34 @@ var/list/gear_datums = list()
|
||||
for(var/gear_name in LC.gear)
|
||||
var/datum/gear/G = LC.gear[gear_name]
|
||||
var/ticked = (G.display_name in pref.gear)
|
||||
var/obj/item/temp = G.path
|
||||
. += "<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>"
|
||||
. += "<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></td>"
|
||||
. += "<td width = 10% style='vertical-align:top'>[G.cost]</td>"
|
||||
. += "<td><font size=2><i>[G.description]</i></font></td></tr>"
|
||||
if(ticked)
|
||||
var/metadata = pref.gear[G.display_name]
|
||||
if(!metadata)
|
||||
metadata = list()
|
||||
pref.gear[G.display_name] = metadata
|
||||
. += "<tr><td colspan=3>"
|
||||
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>"
|
||||
. += " <a href='?src=\ref[src];gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(get_tweak_metadata(G, tweak))]</a>"
|
||||
. += "</td></tr>"
|
||||
. += "</table>"
|
||||
. = jointext(.)
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/proc/get_gear_metadata(var/datum/gear/G)
|
||||
. = pref.gear[G.display_name]
|
||||
if(!.)
|
||||
. = list()
|
||||
pref.gear[G.display_name] = .
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak)
|
||||
var/list/metadata = get_gear_metadata(G)
|
||||
. = metadata["[tweak]"]
|
||||
if(!.)
|
||||
. = tweak.get_default()
|
||||
metadata["[tweak]"] = .
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/proc/set_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak, var/new_metadata)
|
||||
var/list/metadata = get_gear_metadata(G)
|
||||
metadata["[tweak]"] = new_metadata
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/OnTopic(href, href_list, user)
|
||||
if(href_list["toggle_gear"])
|
||||
var/datum/gear/TG = gear_datums[href_list["toggle_gear"]]
|
||||
@@ -160,11 +169,10 @@ var/list/gear_datums = list()
|
||||
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))
|
||||
var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak))
|
||||
if(!metadata || !CanUseTopic(user))
|
||||
return TOPIC_NOACTION
|
||||
var/gear_metadata = pref.gear[gear.display_name]
|
||||
gear_metadata["[tweak]"] = metadata
|
||||
set_tweak_metadata(gear, tweak, metadata)
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["select_category"])
|
||||
current_tab = href_list["select_category"]
|
||||
@@ -176,6 +184,7 @@ var/list/gear_datums = list()
|
||||
|
||||
/datum/gear
|
||||
var/display_name //Name/index. Must be unique.
|
||||
var/description //Description of this gear. If left blank will default to the description of the pathed item.
|
||||
var/path //Path to item.
|
||||
var/cost = 1 //Number of points used. Items in general cost 1 point, storage/armor/gloves/special use costs 2 points.
|
||||
var/slot //Slot to equip to.
|
||||
@@ -184,6 +193,12 @@ 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/New()
|
||||
..()
|
||||
if(!description)
|
||||
var/obj/O = path
|
||||
description = initial(O.desc)
|
||||
|
||||
/datum/gear_data
|
||||
var/path
|
||||
var/location
|
||||
|
||||
@@ -39,34 +39,17 @@
|
||||
path = /obj/item/weapon/haircomb
|
||||
|
||||
/datum/gear/lunchbox
|
||||
display_name = "lunchbox, rainbow"
|
||||
display_name = "lunchbox"
|
||||
description = "A little lunchbox."
|
||||
cost = 2
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/filled
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox
|
||||
|
||||
/datum/gear/lunchbox/heartlunchbox
|
||||
display_name = "lunchbox, heart"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/heart/filled
|
||||
|
||||
/datum/gear/lunchbox/catlunchbox
|
||||
display_name = "lunchbox, cat"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/cat/filled
|
||||
|
||||
/datum/gear/lunchbox/ntlunchbox
|
||||
display_name = "lunchbox, Nanotrasen"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/nt/filled
|
||||
|
||||
/datum/gear/lunchbox/marslunchbox
|
||||
display_name = "lunchbox, Mars university"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/mars/filled
|
||||
|
||||
/datum/gear/lunchbox/ctilunchbox
|
||||
display_name = "lunchbox, CTI"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/cti/filled
|
||||
|
||||
/datum/gear/lunchbox/nymphlunchbox
|
||||
display_name = "lunchbox, Diona nymph"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/nymph/filled
|
||||
|
||||
/datum/gear/lunchbox/syndicatelunchbox
|
||||
display_name = "lunchbox, black and red"
|
||||
path = /obj/item/weapon/storage/toolbox/lunchbox/syndicate/filled
|
||||
/datum/gear/lunchbox/New()
|
||||
..()
|
||||
var/list/lunchboxes = list()
|
||||
for(var/lunchbox_type in typesof(/obj/item/weapon/storage/toolbox/lunchbox))
|
||||
var/obj/item/weapon/storage/toolbox/lunchbox/lunchbox = lunchbox_type
|
||||
if(!initial(lunchbox.filled))
|
||||
lunchboxes[initial(lunchbox.name)] = lunchbox_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lunchboxes))
|
||||
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
else if(href_list["preconfigured"])
|
||||
var/selected = input(user, "Select a skillset", "Skillset") as null|anything in SKILL_PRE
|
||||
if(!selected && !CanUseTopic(user)) return
|
||||
if(!selected || !CanUseTopic(user)) return
|
||||
|
||||
pref.ZeroSkills(1)
|
||||
for(var/V in SKILL_PRE[selected])
|
||||
|
||||
Reference in New Issue
Block a user