var/list/loadout_categories = list() var/list/gear_datums = list() /datum/loadout_category var/category = "" var/list/gear = list() /datum/loadout_category/New(var/cat) category = cat ..() /hook/startup/proc/populate_gear_list() //create a list of gear datums to sort for(var/geartype in typesof(/datum/gear)-/datum/gear) var/datum/gear/G = geartype var/use_name = initial(G.display_name) var/use_category = initial(G.sort_category) if(!use_name) error("Loadout - Missing display name: [G]") continue if(!initial(G.cost)) error("Loadout - Missing cost: [G]") continue if(!initial(G.path)) error("Loadout - Missing path definition: [G]") continue if(!loadout_categories[use_category]) loadout_categories[use_category] = new /datum/loadout_category(use_category) var/datum/loadout_category/LC = loadout_categories[use_category] gear_datums[use_name] = new geartype LC.gear[use_name] = gear_datums[use_name] loadout_categories = sortAssoc(loadout_categories) for(var/loadout_category in loadout_categories) var/datum/loadout_category/LC = loadout_categories[loadout_category] LC.gear = sortAssoc(LC.gear) return 1 /datum/category_item/player_setup_item/loadout name = "Loadout" sort_order = 1 var/current_tab = "General" /datum/category_item/player_setup_item/loadout/load_character(var/savefile/S) S["gear"] >> pref.gear /datum/category_item/player_setup_item/loadout/save_character(var/savefile/S) S["gear"] << pref.gear /datum/category_item/player_setup_item/loadout/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/loadout/sanitize_character() for(var/gear_name in pref.gear) if(!(gear_name in gear_datums)) pref.gear -= gear_name 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/loadout/content() 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 var/fcolor = "#3366CC" if(total_cost < MAX_GEAR_COST) fcolor = "#E67300" . += list() . += "
| [G.display_name]" 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 . += " [tweak.get_contents(tweak_input)]" . += " | " . += "[G.cost] | " . += "[initial(temp.desc)] |