diff --git a/code/__HELPERS/_hyper_helpers.dm b/code/__HELPERS/_hyper_helpers.dm index f5d0e8b90..5e23e5857 100644 --- a/code/__HELPERS/_hyper_helpers.dm +++ b/code/__HELPERS/_hyper_helpers.dm @@ -6,5 +6,5 @@ GLOBAL_LIST_EMPTY(cosmetic_legs) /proc/init_cosmetic_parts(datum/cosmetic_part/type, list/global_list) for(var/subtype in subtypesof(type)) var/datum/cosmetic_part/part = new subtype() - global_list[part.name] = part + global_list[part.id] = part return global_list \ No newline at end of file diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 5cf43e8fd..9ab5a52fa 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -149,11 +149,6 @@ var/color2 = random_short_color() var/color3 = random_short_color() - var/cosmetic_head = pick(GLOB.cosmetic_heads) - var/cosmetic_chest = pick(GLOB.cosmetic_chests) - var/cosmetic_arms = pick(GLOB.cosmetic_arms) - var/cosmetic_legs = pick(GLOB.cosmetic_legs) - //CIT CHANGE - changes this entire return to support cit's snowflake parts return(list( "mcolor" = color1, @@ -243,12 +238,12 @@ "flavor_text" = "", "silicon_flavor_text" = "", "ooc_text" = "", - "cosmetic_head" = GLOB.cosmetic_heads[cosmetic_head], - "cosmetic_chest" = GLOB.cosmetic_chests[cosmetic_chest], - "cosmetic_l_arm" = GLOB.cosmetic_arms[cosmetic_arms], - "cosmetic_r_arm" = GLOB.cosmetic_arms[cosmetic_arms], - "cosmetic_l_leg" = GLOB.cosmetic_legs[cosmetic_legs], - "cosmetic_r_leg" = GLOB.cosmetic_legs[cosmetic_legs])) + "cosmetic_head" = GLOB.cosmetic_heads["default"], + "cosmetic_chest" = GLOB.cosmetic_chests["default"], + "cosmetic_l_arm" = GLOB.cosmetic_arms["default"], + "cosmetic_r_arm" = GLOB.cosmetic_arms["default"], + "cosmetic_l_leg" = GLOB.cosmetic_legs["default"], + "cosmetic_r_leg" = GLOB.cosmetic_legs["default"])) /proc/random_hair_style(gender) switch(gender) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index bef78febb..59bc2d63e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2349,14 +2349,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/supported_species = possible_part.supported_species if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id)) continue - selectable_parts[path] = possible_part + selectable_parts[possible_part.name] = path if(!selectable_parts.len) to_chat(user, "There are no valid alt heads for this species!") var/new_cosmetic_part var/question = "Choose your character's alt head style:" new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts if(new_cosmetic_part) - features["cosmetic_head"] = GLOB.cosmetic_heads[new_cosmetic_part] + features["cosmetic_head"] = GLOB.cosmetic_heads[selectable_parts[new_cosmetic_part]] update_preview_icon() if("cosmetic_chest") @@ -2366,14 +2366,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/supported_species = possible_part.supported_species if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id)) continue - selectable_parts[path] = possible_part + selectable_parts[possible_part.name] = path if(!selectable_parts.len) to_chat(user, "There are no valid alt chests for this species!") var/new_cosmetic_part var/question = "Choose your character's alt chest style:" new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts if(new_cosmetic_part) - features["cosmetic_chest"] = GLOB.cosmetic_chests[new_cosmetic_part] + features["cosmetic_chest"] = GLOB.cosmetic_chests[selectable_parts[new_cosmetic_part]] update_preview_icon() // currently symmetrical @@ -2384,15 +2384,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/supported_species = possible_part.supported_species if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id)) continue - selectable_parts[path] = possible_part + selectable_parts[possible_part.name] = path if(!selectable_parts.len) to_chat(user, "There are no valid alt arms for this species!") var/new_cosmetic_part var/question = "Choose your character's alt arms style:" new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts if(new_cosmetic_part) - features["cosmetic_l_arm"] = GLOB.cosmetic_arms[new_cosmetic_part] - features["cosmetic_r_arm"] = GLOB.cosmetic_arms[new_cosmetic_part] + features["cosmetic_l_arm"] = GLOB.cosmetic_arms[selectable_parts[new_cosmetic_part]] + features["cosmetic_r_arm"] = GLOB.cosmetic_arms[selectable_parts[new_cosmetic_part]] update_preview_icon() if("cosmetic_legs") @@ -2402,15 +2402,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/supported_species = possible_part.supported_species if(!show_mismatched_markings && supported_species && !supported_species.Find(pref_species.id)) continue - selectable_parts[path] = possible_part + selectable_parts[possible_part.name] = path if(!selectable_parts.len) to_chat(user, "There are no valid alt legs for this species!") var/new_cosmetic_part var/question = "Choose your character's alt legs style:" new_cosmetic_part = input(user, question, "Character Preference") as null|anything in selectable_parts if(new_cosmetic_part) - features["cosmetic_l_leg"] = GLOB.cosmetic_legs[new_cosmetic_part] - features["cosmetic_r_leg"] = GLOB.cosmetic_legs[new_cosmetic_part] + features["cosmetic_l_leg"] = GLOB.cosmetic_legs[selectable_parts[new_cosmetic_part]] + features["cosmetic_r_leg"] = GLOB.cosmetic_legs[selectable_parts[new_cosmetic_part]] update_preview_icon() // End hyper edit diff --git a/hyperstation/code/modules/client/hyper_pref_savefile.dm b/hyperstation/code/modules/client/hyper_pref_savefile.dm index c9aedbf31..3eb2a661c 100644 --- a/hyperstation/code/modules/client/hyper_pref_savefile.dm +++ b/hyperstation/code/modules/client/hyper_pref_savefile.dm @@ -26,9 +26,9 @@ var/datum/cosmetic_part/r_arm = features["cosmetic_r_arm"] var/datum/cosmetic_part/l_leg = features["cosmetic_l_leg"] var/datum/cosmetic_part/r_leg = features["cosmetic_r_leg"] - WRITE_FILE(S["feature_cosmetic_head"], head.name) - WRITE_FILE(S["feature_cosmetic_chest"], chest.name) - WRITE_FILE(S["feature_cosmetic_l_arm"], l_arm.name) - WRITE_FILE(S["feature_cosmetic_r_arm"], r_arm.name) - WRITE_FILE(S["feature_cosmetic_l_leg"], l_leg.name) - WRITE_FILE(S["feature_cosmetic_r_leg"], r_leg.name) \ No newline at end of file + WRITE_FILE(S["feature_cosmetic_head"], head.id) + WRITE_FILE(S["feature_cosmetic_chest"], chest.id) + WRITE_FILE(S["feature_cosmetic_l_arm"], l_arm.id) + WRITE_FILE(S["feature_cosmetic_r_arm"], r_arm.id) + WRITE_FILE(S["feature_cosmetic_l_leg"], l_leg.id) + WRITE_FILE(S["feature_cosmetic_r_leg"], r_leg.id) \ No newline at end of file diff --git a/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm index 51a415e81..a08db8726 100644 --- a/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm +++ b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm @@ -13,6 +13,8 @@ safely. */ /datum/cosmetic_part + /** A unique string that is used to identify this part for save files. Allows name changes without breaking saves */ + var/id /** The name of the cosmetic part. This shows up in the preferences dropdown. */ var/name var/icon = 'hyperstation/icons/mob/char_parts.dmi' @@ -33,57 +35,86 @@ safely. // ========================================= /datum/cosmetic_part/head/default + id = "default" name = "default" icon = null +/datum/cosmetic_part/head/ipc_round + id = "ipc_round" + name = "round ipc head" + icon_state = "ipc_round" + supported_species = list("ipc") + // CHESTS // ========================================= /datum/cosmetic_part/chest/default + id = "default" name = "default" icon = null /datum/cosmetic_part/chest/ipc_sleek + id = "ipc_sleek" name = "sleek ipc chest" icon_state = "ipc_sleek" supported_species = list("ipc") color_src = MATRIXED +/datum/cosmetic_part/chest/ipc_jointed + id = "ipc_jointed" + name = "jointed ipc chest" + icon_state = "ipc_jointed" + supported_species = list("ipc") + color_src = MATRIXED + // ARMS // ========================================= /datum/cosmetic_part/arms/default + id = "default" name = "default" icon = null /datum/cosmetic_part/arms/avian_alt + id = "avian_alt" name = "avian claws" icon_state = "avian_alt" supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") /datum/cosmetic_part/arms/insect + id = "insect" name = "insect arms" icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' icon_state = "insect" supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") /datum/cosmetic_part/arms/ipc_sleek + id = "ipc_sleek" name = "sleek ipc arms" icon_state = "ipc_sleek" supported_species = list("ipc") color_src = MATRIXED +/datum/cosmetic_part/arms/ipc_jointed + id = "ipc_jointed" + name = "jointed ipc arms" + icon_state = "ipc_jointed" + supported_species = list("ipc") + color_src = MATRIXED + // LEGS // ========================================= /datum/cosmetic_part/legs/default + id = "default" name = "default" icon = null /datum/cosmetic_part/legs/avian + id = "avian" name = "avian legs" icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' icon_state = "avian" @@ -91,6 +122,7 @@ safely. support_digitigrade = FALSE /datum/cosmetic_part/legs/mammal + id = "mammal" name = "mammal legs" icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' icon_state = "mammal" @@ -98,6 +130,7 @@ safely. support_digitigrade = TRUE /datum/cosmetic_part/legs/insect + id = "insect" name = "insect legs" icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' icon_state = "insect" @@ -105,8 +138,17 @@ safely. support_digitigrade = TRUE /datum/cosmetic_part/legs/ipc_sleek + id = "ipc_sleek" name = "sleek ipc legs" icon_state = "ipc_sleek" supported_species = list("ipc") color_src = MATRIXED + support_digitigrade = FALSE + +/datum/cosmetic_part/legs/ipc_jointed + id = "ipc_jointed" + name = "jointed ipc legs" + icon_state = "ipc_jointed" + supported_species = list("ipc") + color_src = MATRIXED support_digitigrade = FALSE \ No newline at end of file diff --git a/hyperstation/icons/mob/char_parts.dmi b/hyperstation/icons/mob/char_parts.dmi index 216df9afe..9a6d12c50 100644 Binary files a/hyperstation/icons/mob/char_parts.dmi and b/hyperstation/icons/mob/char_parts.dmi differ diff --git a/modular_citadel/icons/mob/ipc_antennas.dmi b/modular_citadel/icons/mob/ipc_antennas.dmi index d7cdf3859..77c4930ef 100644 Binary files a/modular_citadel/icons/mob/ipc_antennas.dmi and b/modular_citadel/icons/mob/ipc_antennas.dmi differ