mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 14:33:10 +00:00
Ports multiple loadout slots from baystation (#8813)
What it says in the title. Characters can have up to three loadout slots now.
This commit is contained in:
@@ -39,21 +39,28 @@ var/list/gear_datums = list()
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/load_character(var/savefile/S)
|
||||
S["gear"] >> pref.gear
|
||||
S["gear_list"] >> pref.gear_list
|
||||
if(pref.gear_list!=null && pref.gear_slot!=null)
|
||||
pref.gear = pref.gear_list["[pref.gear_slot]"]
|
||||
else
|
||||
S["gear"] >> pref.gear
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/save_character(var/savefile/S)
|
||||
S["gear"] << pref.gear
|
||||
pref.gear_list["[pref.gear_slot]"] = pref.gear
|
||||
to_file(S["gear_list"], pref.gear_list)
|
||||
to_file(S["gear_slot"], pref.gear_slot)
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/gather_load_parameters()
|
||||
return list("id" = pref.current_character)
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/gather_load_query()
|
||||
return list("ss13_characters" = list("vars" = list("gear"), "args" = list("id")))
|
||||
return list("ss13_characters" = list("vars" = list("gear" = "gear_list", "gear_slot"), "args" = list("id")))
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/gather_save_query()
|
||||
return list("ss13_characters" = list("gear", "id" = 1, "ckey" = 1))
|
||||
return list("ss13_characters" = list("gear", "gear_slot", "id" = 1, "ckey" = 1))
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/gather_save_parameters()
|
||||
return list("gear" = json_encode(pref.gear), "id" = pref.current_character, "ckey" = PREF_CLIENT_CKEY)
|
||||
return list("gear" = json_encode(pref.gear_list), "gear_slot" = pref.gear_slot, "id" = pref.current_character, "ckey" = PREF_CLIENT_CKEY)
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost)
|
||||
. = list()
|
||||
@@ -73,18 +80,35 @@ var/list/gear_datums = list()
|
||||
/datum/category_item/player_setup_item/loadout/sanitize_character(var/sql_load = 0)
|
||||
if (sql_load)
|
||||
gear_reset = FALSE
|
||||
|
||||
pref.gear_slot = text2num(pref.gear_slot)
|
||||
|
||||
if (istext(pref.gear))
|
||||
try
|
||||
pref.gear = json_decode(pref.gear)
|
||||
pref.gear_list = json_decode(pref.gear_list)
|
||||
catch
|
||||
log_debug("SQL CHARACTER LOAD: Unable to load custom loadout for client [pref.client ? pref.client.ckey : "UNKNOWN"].")
|
||||
|
||||
pref.gear = list()
|
||||
gear_reset = TRUE
|
||||
|
||||
var/mob/preference_mob = preference_mob()
|
||||
if(!islist(pref.gear))
|
||||
pref.gear = list()
|
||||
|
||||
if(!islist(pref.gear_list))
|
||||
pref.gear_list = list()
|
||||
|
||||
if(!isnull(pref.gear_slot) && islist(pref.gear_list["[pref.gear_slot]"]))
|
||||
pref.gear = pref.gear_list["[pref.gear_slot]"]
|
||||
else
|
||||
// old format, try to recover it.
|
||||
if(!islist(pref.gear_list["1"]))
|
||||
pref.gear = pref.gear_list.Copy()
|
||||
pref.gear_list = list("1" = pref.gear)
|
||||
pref.gear_slot = 1
|
||||
else
|
||||
pref.gear = list()
|
||||
pref.gear_list = list("1" = pref.gear)
|
||||
pref.gear_slot = 1
|
||||
gear_reset = TRUE
|
||||
|
||||
for(var/gear_name in pref.gear)
|
||||
if(!(gear_name in gear_datums))
|
||||
@@ -120,7 +144,7 @@ var/list/gear_datums = list()
|
||||
. += "<table align = 'center' width = 100%>"
|
||||
if (gear_reset)
|
||||
. += "<tr><td colspan=3><center><i>Your loadout failed to load and will be reset if you save this slot.</i></center></td></tr>"
|
||||
. += "<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>"
|
||||
. += "<tr><td colspan=3><center><a href='?src=\ref[src];prev_slot=1'>\<\<</a><b><font color = '[fcolor]'>\[[pref.gear_slot]\]</font> </b><a href='?src=\ref[src];next_slot=1'>\>\></a><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>"
|
||||
|
||||
. += "<tr><td colspan=3><center><b>"
|
||||
var/firstcat = 1
|
||||
@@ -217,6 +241,27 @@ var/list/gear_datums = list()
|
||||
return TOPIC_NOACTION
|
||||
set_tweak_metadata(gear, tweak, metadata)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
if(href_list["next_slot"] || href_list["prev_slot"])
|
||||
//Set the current slot in the gear list to the currently selected gear
|
||||
pref.gear_list["[pref.gear_slot]"] = pref.gear
|
||||
//If we're moving up a slot..
|
||||
if(href_list["next_slot"])
|
||||
//change the current slot number
|
||||
pref.gear_slot = ((pref.gear_slot+1) % 3) + 1
|
||||
//If we're moving down a slot..
|
||||
else if(href_list["prev_slot"])
|
||||
//change current slot one down
|
||||
pref.gear_slot = ((pref.gear_slot-1) % 3) + 1
|
||||
// Set the currently selected gear to whatever's in the new slot
|
||||
if(pref.gear_list["[pref.gear_slot]"])
|
||||
pref.gear = pref.gear_list["[pref.gear_slot]"]
|
||||
else
|
||||
pref.gear = list()
|
||||
pref.gear_list["[pref.gear_slot]"] = list()
|
||||
// Refresh?
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["select_category"])
|
||||
current_tab = href_list["select_category"]
|
||||
return TOPIC_REFRESH
|
||||
@@ -281,4 +326,4 @@ var/list/gear_datums = list()
|
||||
var/item = new gd.path(gd.location)
|
||||
for(var/datum/gear_tweak/gt in gear_tweaks)
|
||||
gt.tweak_item(item, gt.get_random())
|
||||
return item
|
||||
return item
|
||||
|
||||
Reference in New Issue
Block a user