diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index cb52b2252fa..2ae5d1db1e8 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -79,13 +79,6 @@ datum/controller/game_controller/proc/setup() for(var/i=0, iGenerating resource distribution map." + var/datum/ore_distribution/O = new() + O.populate_distribution_map() + + //Set up spawn points. + populate_spawn_points() + + //Set up gear list. + populate_gear_list() + world << "\red \b Initializations complete." sleep(-1) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2e32dfed3aa..c65a8f472e7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -75,7 +75,7 @@ datum/preferences var/b_eyes = 0 //Eye color var/species = "Human" //Species datum to use. var/language = "None" //Secondary language - var/datum/gear //Custom/fluff item loadout. + var/list/gear //Custom/fluff item loadout. //Mob preview var/icon/preview_icon = null @@ -132,7 +132,7 @@ datum/preferences gender = pick(MALE, FEMALE) real_name = random_name(gender) - gear = new /datum/gear() + gear = list() /datum/preferences proc/ZeroSkills(var/forced = 0) @@ -342,6 +342,22 @@ datum/preferences else dat += "

" + dat += "Custom Loadout: " + var/total_cost = 0 + if(gear && gear.len) + dat += "
" + for(var/gear_name in gear) + if(gear_datums[gear_name]) + var/datum/gear/G = gear_datums[gear_name] + total_cost += G.cost + dat += "[gear_name] ([G.cost]) " + dat += "\[remove\]
" + if(total_cost < MAX_GEAR_COST) + dat += "\[add\]
" + dat += "Used: [total_cost] points.
" + else + dat += "none.
" + if(gender == MALE) dat += "Underwear: [underwear_m[underwear]]
" else @@ -837,6 +853,22 @@ datum/preferences ShowChoices(user) return 1 + else if (href_list["preference"] == "loadout") + + if(href_list["task"] == "input") + + var/choice = input("Select gear to add.") as null|anything in gear_datums + if(choice && gear_datums[choice]) + gear += choice + + else if(href_list["task"] == "remove") + var/to_remove = href_list["gear"] + if(!to_remove) return + for(var/gear_name in gear) + if(gear_name == to_remove) + gear -= gear_name + break + switch(href_list["task"]) if("random") switch(href_list["preference"]) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index a9a10574300..29065325618 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -1,43 +1,131 @@ +var/global/list/gear_datums = list() + +proc/populate_gear_list() + for(var/type in typesof(/datum/gear)-/datum/gear) + var/datum/gear/G = new type() + gear_datums[G.display_name] = G + /datum/gear - display_name - display_icon //Icon for preview. - display_icon_name //Icon state for preview. - path //Path to item. - cost //Number of points used. + var/display_name //Name/index. + var/path //Path to item. + var/cost //Number of points used. + var/slot //Slot to equip to. + var/list/allowed_roles //Roles that can spawn with this item. //Standard gear datums. /datum/gear/tie_horrible - display_name = "Horrible tie" - display_icon = 'icons/obj/clothing/ties.dmi' - display_icon_name = "horribletie" + display_name = "horrible tie" path = /obj/item/clothing/tie/horrible cost = 2 +/datum/gear/hairflower + display_name = "hair flower pin" + path = /obj/item/clothing/head/hairflower + cost = 1 + slot = SLOT_HEAD + +/datum/gear/bandana + display_name = "pirate bandana" + path = /obj/item/clothing/head/bandana + cost = 1 + slot = SLOT_HEAD + +/datum/gear/overalls + display_name = "overalls" + path = /obj/item/clothing/suit/apron/overalls + cost = 1 + slot = SLOT_OCLOTHING + +/datum/gear/wcoat + display_name = "waistcoat" + path = /obj/item/clothing/suit/wcoat + cost = 1 + slot = SLOT_OCLOTHING + +/datum/gear/prescription + display_name = "prescription sunglasses" + path = /obj/item/clothing/glasses/sunglasses/prescription + cost = 2 + slot = SLOT_EYES + +/datum/gear/eyepatch + display_name = "eyepatch" + path = /obj/item/clothing/glasses/eyepatch + cost = 1 + slot = SLOT_EYES + +/datum/gear/flatcap + display_name = "flat cap" + path = /obj/item/clothing/head/flatcap + cost = 1 + slot = SLOT_HEAD + +/datum/gear/labcoat + display_name = "labcoat" + path = /obj/item/clothing/suit/storage/labcoat + cost = 2 + slot = SLOT_OCLOTHING + +/datum/gear/sandal + display_name = "sandals" + path = /obj/item/clothing/shoes/sandal + cost = 1 + slot = SLOT_FEET + +/datum/gear/leather + display_name = "leather shoes" + path = /obj/item/clothing/shoes/leather + cost = 1 + slot = SLOT_FEET + +/datum/gear/dress_shoes + display_name = "dress shoes" + path = /obj/item/clothing/shoes/centcom + cost = 1 + slot = SLOT_FEET + +//Security +/datum/gear/security + display_name = "Security HUD" + path = /obj/item/clothing/glasses/hud/security + cost = 1 + slot = SLOT_EYES + allowed_roles = list("Security Officer","Head of Security","Warden") + +/datum/gear/sec_beret + display_name = "security beret" + path = /obj/item/clothing/head/beret/sec + cost = 1 + slot = SLOT_HEAD + allowed_roles = list("Security Officer","Head of Security","Warden") + +//Engineering +/datum/gear/eng_beret + display_name = "engineering beret" + path = /obj/item/clothing/head/beret/eng + cost = 1 + slot = SLOT_HEAD + allowed_roles = list("Station Engineering","Atmospheric Technician","Chief Engineer") + //Species-specific gear datums. /datum/gear/zhan_furs display_name = "Zhan-Khazan furs" - display_icon = '' - display_icon_name = "zhan_furs" path = /obj/item/clothing/suit/tajaran/furs cost = 3 /datum/gear/zhan_scarf display_name = "Zhan-Khazan headscarf" - display_icon = '' - display_icon_name = "zhan_scarf" path = /obj/item/clothing/head/tajaran/scarf cost = 2 /datum/gear/unathi_robe - display_name = "Roughspun robe" - display_icon = '' - display_icon_name = "" - path = + display_name = "roughspun robe" + path = /obj/item/clothing/suit/unathi/robe cost = 3 + slot = SLOT_OCLOTHING /datum/gear/unathi_mantle - display_name = "Hide mantle" - display_icon = '' - display_icon_name = "" - path = - cost = 2 \ No newline at end of file + display_name = "hide mantle" + path = /obj/item/clothing/suit/unathi/mantle + cost = 2 + slot = SLOT_OCLOTHING \ No newline at end of file diff --git a/code/modules/mining/drilling/distribution.dm b/code/modules/mining/drilling/distribution.dm index 2ca9a3f685c..1b4c698ea9b 100644 --- a/code/modules/mining/drilling/distribution.dm +++ b/code/modules/mining/drilling/distribution.dm @@ -75,9 +75,6 @@ Deep minerals: //Halfassed diamond-square algorithm with some fuckery since it's a single dimension array. /datum/ore_distribution/proc/populate_distribution_map() - //Announce it! - world << "Generating resource distribution map." - //Seed beginning values. var/x = 1 var/y = 1 diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 05af15dd9d7..27a4b4aa117 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -170,7 +170,7 @@ flesh_color = "#AFA59E" custom_gear_options = list( - /obj/item/clothing/head/tajaran/scarf + /obj/item/clothing/head/tajaran/scarf, /obj/item/clothing/suit/tajaran/furs ) diff --git a/code/setup.dm b/code/setup.dm index 3f87fb2d2aa..ed724d54a02 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -796,14 +796,15 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define IDLE_STATE 0 #define WAIT_LAUNCH 1 #define WAIT_ARRIVE 2 -#define WAIT_FINISH 3 +#define WAIT_FINISH 3 + - //computer3 error codes, move lower in the file when it passes dev -Sayu #define PROG_CRASH 1 // Generic crash #define MISSING_PERIPHERAL 2 // Missing hardware #define BUSTED_ASS_COMPUTER 4 // Self-perpetuating error. BAC will continue to crash forever. #define MISSING_PROGRAM 8 // Some files try to automatically launch a program. This is that failing. #define FILE_DRM 16 // Some files want to not be copied/moved. This is them complaining that you tried. - #define NETWORK_FAILURE 32 - + #define NETWORK_FAILURE 32 + +#define MAX_GEAR_COST 5 //Used in chargen for loadout limit. \ No newline at end of file