mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
TWEAK METADATA UNFINISHED
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
/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/colors)
|
||||
valid_colors = colors
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/color/get_contents(var/metadata)
|
||||
return "Color: <font color='[metadata]'>⚫</font>"
|
||||
|
||||
/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/paths)
|
||||
valid_paths = 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)
|
||||
|
||||
/*
|
||||
* Ragent adjustment
|
||||
*/
|
||||
|
||||
/datum/gear_tweak/reagents
|
||||
var/list/valid_reagents
|
||||
|
||||
/datum/gear_tweak/reagents/New(var/list/reagents)
|
||||
valid_reagents = reagents.Copy()
|
||||
..()
|
||||
|
||||
/datum/gear_tweak/reagents/get_contents(var/metadata)
|
||||
return "Reagents: [metadata]"
|
||||
|
||||
/datum/gear_tweak/reagents/get_default()
|
||||
return "Random"
|
||||
|
||||
/datum/gear_tweak/reagents/get_metadata(var/user, var/list/metadata)
|
||||
. = input(user, "Choose an entry.", "Character Preference", metadata) as null|anything in (valid_reagents + list("Random", "None"))
|
||||
if(!.)
|
||||
return metadata
|
||||
|
||||
/datum/gear_tweak/reagents/tweak_item(var/obj/item/I, var/list/metadata)
|
||||
if(metadata == "None")
|
||||
return
|
||||
if(metadata == "Random")
|
||||
. = valid_reagents[pick(valid_reagents)]
|
||||
else
|
||||
. = valid_reagents[metadata]
|
||||
I.reagents.add_reagent(., I.reagents.get_free_space())
|
||||
@@ -68,7 +68,11 @@ var/list/gear_datums = list()
|
||||
path = npath
|
||||
location = nlocation
|
||||
|
||||
/datum/gear/proc/spawn_item(var/location)
|
||||
/datum/gear/proc/spawn_item(location, metadata)
|
||||
var/datum/gear_data/gd = new(path, location)
|
||||
for(var/datum/gear_tweak/gt in gear_tweaks)
|
||||
gt.tweak_gear_data(metadata["[gt]"], gd)
|
||||
var/item = new gd.path(gd.location)
|
||||
for(var/datum/gear_tweak/gt in gear_tweaks)
|
||||
gt.tweak_item(item, metadata["[gt]"])
|
||||
return item
|
||||
@@ -4,6 +4,17 @@
|
||||
slot = slot_w_uniform
|
||||
sort_category = "Uniforms and Casual Dress"
|
||||
|
||||
/datum/gear/uniform/skirt
|
||||
display_name = "skirt"
|
||||
|
||||
/datum/gear/uniform/skirt/New()
|
||||
..()
|
||||
var/list/jumpskirts = list()
|
||||
for(var/jump in subtypesof(/obj/item/clothing/under1))
|
||||
if(findtext(path2text(jump), "skirt"))
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(skirt_list))
|
||||
|
||||
|
||||
/datum/gear/uniform/skirt
|
||||
display_name = "plaid skirt, blue"
|
||||
path = /obj/item/clothing/under/dress/plaid_blue
|
||||
|
||||
@@ -456,6 +456,11 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "<tr style='vertical-align:top;'><td width=25%><a style='white-space:normal;' [ticked ? "class='linkOn' " : ""]href='?_src_=prefs;preference=gear;toggle_gear=[G.display_name]'>[G.display_name]</a></td>"
|
||||
dat += "<td width = 10% style='vertical-align:top'>[G.cost]</td>"
|
||||
dat += "<td><font size=2><i>[G.description]</i></font></td></tr>"
|
||||
if(ticked)
|
||||
. += "<tr><td colspan=3>"
|
||||
for(var/datum/gear_tweak/tweak in G.gear_tweaks)
|
||||
. += " <a href='?_src_=prefs;preference=gear;gear=[G.display_name];tweak=\ref[tweak]'>[tweak.get_contents(get_tweak_metadata(G, tweak))]</a>"
|
||||
. += "</td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
dat += "<hr><center>"
|
||||
@@ -470,6 +475,25 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
popup.set_content(dat)
|
||||
popup.open(0)
|
||||
|
||||
|
||||
/datum/preferences/proc/get_gear_metadata(var/datum/gear/G)
|
||||
. = gear[G.display_name]
|
||||
if(!.)
|
||||
. = list()
|
||||
gear[G.display_name] = .
|
||||
|
||||
/datum/preferences/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/preferences/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/preferences/proc/SetChoices(mob/user, limit = 12, list/splitJobs = list("Civilian","Research Director","AI","Bartender"), width = 760, height = 790)
|
||||
if(!job_master)
|
||||
return
|
||||
@@ -1035,6 +1059,15 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if(istype(G)) total_cost += G.cost
|
||||
if((total_cost+TG.cost) <= MAX_GEAR_COST)
|
||||
gear += TG.display_name
|
||||
else 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
|
||||
var/metadata = tweak.get_metadata(user, get_tweak_metadata(gear, tweak))
|
||||
if(!metadata || !CanUseTopic(user))
|
||||
return
|
||||
set_tweak_metadata(gear, tweak, metadata)
|
||||
else if(href_list["select_category"])
|
||||
gear_tab = href_list["select_category"]
|
||||
else if(href_list["clear_loadout"])
|
||||
|
||||
Reference in New Issue
Block a user