mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-14 04:02:31 +00:00
Added new panel for loadout.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/datum/category_item/player_setup_item/general/equipment
|
||||
name = "Equipment"
|
||||
name = "Clothing"
|
||||
sort_order = 4
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
|
||||
@@ -8,7 +8,6 @@
|
||||
S["socks"] >> pref.socks
|
||||
S["backbag"] >> pref.backbag
|
||||
S["pdachoice"] >> pref.pdachoice
|
||||
S["gear"] >> pref.gear
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
|
||||
S["underwear"] << pref.underwear
|
||||
@@ -16,7 +15,6 @@
|
||||
S["socks"] << pref.socks
|
||||
S["backbag"] << pref.backbag
|
||||
S["pdachoice"] << pref.pdachoice
|
||||
S["gear"] << pref.gear
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/sanitize_character()
|
||||
pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag))
|
||||
@@ -32,61 +30,17 @@
|
||||
if(!get_key_by_value(socks_t, pref.socks))
|
||||
pref.socks = socks_t[1]
|
||||
|
||||
var/total_cost = 0
|
||||
for(var/gear_name in pref.gear)
|
||||
if(!gear_datums[gear_name])
|
||||
pref.gear -= gear_name
|
||||
else if(!(gear_name in valid_gear_choices()))
|
||||
pref.gear -= gear_name
|
||||
else
|
||||
var/datum/gear/G = gear_datums[gear_name]
|
||||
if(total_cost + G.cost > MAX_GEAR_COST)
|
||||
pref.gear -= gear_name
|
||||
else
|
||||
total_cost += G.cost
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/content()
|
||||
. += "<b>Equipment Loadout:</b><br>"
|
||||
. += "<b>Equipment:</b><br>"
|
||||
. += "Underwear: <a href='?src=\ref[src];change_underwear=1'><b>[get_key_by_value(get_undies(),pref.underwear)]</b></a><br>"
|
||||
. += "Undershirt: <a href='?src=\ref[src];change_undershirt=1'><b>[get_key_by_value(undershirt_t,pref.undershirt)]</b></a><br>"
|
||||
. += "Socks: <a href='?src=\ref[src];change_socks=1'><b>[get_key_by_value(socks_t,pref.socks)]</b></a><br>"
|
||||
. += "Backpack Type: <a href='?src=\ref[src];change_backpack=1'><b>[backbaglist[pref.backbag]]</b></a><br>"
|
||||
. += "PDA Type: <a href='?src=\ref[src];change_pda=1'><b>[pdachoicelist[pref.pdachoice]]</b></a><br>"
|
||||
|
||||
. += "<br><b>Custom Loadout:</b><br>"
|
||||
var/total_cost = 0
|
||||
|
||||
if(pref.gear && pref.gear.len)
|
||||
for(var/i = 1; i <= pref.gear.len; i++)
|
||||
var/datum/gear/G = gear_datums[pref.gear[i]]
|
||||
if(G)
|
||||
total_cost += G.cost
|
||||
. += "[pref.gear[i]] ([G.cost] points) <a href='?src=\ref[src];remove_loadout=[i]'>Remove</a><br>"
|
||||
|
||||
. += "<b>Used:</b> [total_cost] points."
|
||||
else
|
||||
. += "None."
|
||||
|
||||
if(total_cost < MAX_GEAR_COST)
|
||||
. += " <a href='?src=\ref[src];add_loadout=1'>Add</a>"
|
||||
if(pref.gear && pref.gear.len)
|
||||
. += " <a href='?src=\ref[src];clear_loadout=1'>Clear</a>"
|
||||
. += "<br>"
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/proc/get_undies()
|
||||
return pref.gender == MALE ? underwear_m : underwear_f
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/proc/valid_gear_choices(var/max_cost)
|
||||
var/list/valid_gear_choices = list()
|
||||
for(var/gear_name in gear_datums)
|
||||
var/datum/gear/G = gear_datums[gear_name]
|
||||
if(G.whitelisted && !is_alien_whitelisted(preference_mob(), G.whitelisted))
|
||||
continue
|
||||
if(max_cost && G.cost > max_cost)
|
||||
continue
|
||||
valid_gear_choices += gear_name
|
||||
return valid_gear_choices
|
||||
|
||||
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
if(href_list["change_underwear"])
|
||||
var/underwear_options = get_undies()
|
||||
@@ -118,33 +72,4 @@
|
||||
if(!isnull(new_pdachoice) && CanUseTopic(user))
|
||||
pref.pdachoice = pdachoicelist.Find(new_pdachoice)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["add_loadout"])
|
||||
var/total_cost = 0
|
||||
for(var/gear_name in pref.gear)
|
||||
if(gear_datums[gear_name])
|
||||
var/datum/gear/G = gear_datums[gear_name]
|
||||
total_cost += G.cost
|
||||
|
||||
var/choice = input(user, "Select gear to add:", "Character Preference") as null|anything in valid_gear_choices(MAX_GEAR_COST - total_cost)
|
||||
if(choice && gear_datums[choice] && CanUseTopic(user))
|
||||
var/datum/gear/C = gear_datums[choice]
|
||||
total_cost += C.cost
|
||||
if(C && total_cost <= MAX_GEAR_COST)
|
||||
pref.gear += choice
|
||||
user << "<span class='notice'>Added \the '[choice]' for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining).</span>"
|
||||
else
|
||||
user << "<span class='warning'>Adding \the '[choice]' will exceed the maximum loadout cost of [MAX_GEAR_COST] points.</span>"
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["remove_loadout"])
|
||||
var/i_remove = text2num(href_list["remove_loadout"])
|
||||
if(i_remove < 1 || i_remove > pref.gear.len) return TOPIC_NOACTION
|
||||
pref.gear.Cut(i_remove, i_remove + 1)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["clear_loadout"])
|
||||
pref.gear.Cut()
|
||||
return TOPIC_REFRESH
|
||||
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user