From f45e803bd069359cf3a92c88e216d0f4c09bf8d1 Mon Sep 17 00:00:00 2001 From: sarcoph <83266791+sarcoph@users.noreply.github.com> Date: Fri, 13 May 2022 05:09:32 -0800 Subject: [PATCH] IPC randomization and toggleable markings --- code/__HELPERS/mobs.dm | 18 ++++++++++-- code/modules/client/preferences.dm | 8 +++++- code/modules/surgery/bodyparts/bodyparts.dm | 28 ++++++++++--------- .../modules/client/hyper_pref_savefile.dm | 4 ++- .../mob/dead/new_player/sprite_accessories.dm | 1 + 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9ab5a52fa..ae5638d48 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -136,15 +136,27 @@ var/datum/sprite_accessory/S = instance if(!S.ckeys_allowed) snowflake_mam_snouts_list[S.name] = mspath + var/list/snowflake_ipc_antenna_list = list() for(var/mspath in GLOB.ipc_antennas_list) - var/datum/sprite_accessory/mam_snouts/instance = GLOB.ipc_antennas_list[mspath] + var/datum/sprite_accessory/antenna/instance = GLOB.ipc_antennas_list[mspath] if(istype(instance, /datum/sprite_accessory)) var/datum/sprite_accessory/S = instance if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) continue if(!S.ckeys_allowed) snowflake_ipc_antenna_list[S.name] = mspath + + var/list/snowflake_ipc_screen_list = list() + for(var/mspath in GLOB.ipc_screens_list) + var/datum/sprite_accessory/screen/instance = GLOB.ipc_screens_list[mspath] + if(istype(instance, /datum/sprite_accessory)) + var/datum/sprite_accessory/S = instance + if(intendedspecies && S.recommended_species && !S.recommended_species.Find(intendedspecies)) + continue + if(!S.ckeys_allowed) + snowflake_ipc_screen_list[S.name] = mspath + var/color1 = random_short_color() var/color2 = random_short_color() var/color3 = random_short_color() @@ -233,8 +245,8 @@ "womb_cum_mult" = CUM_RATE_MULT, "womb_efficiency" = CUM_EFFICIENCY, "womb_fluid" = "femcum", - "ipc_screen" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None", - "ipc_antenna" = "None", + "ipc_screen" = snowflake_ipc_screen_list ? pick(snowflake_ipc_screen_list) : "None", + "ipc_antenna" = snowflake_ipc_antenna_list ? pick(snowflake_ipc_antenna_list) : "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_text" = "", diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 59bc2d63e..b8d8a1879 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -201,7 +201,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) "cosmetic_l_arm" = /datum/cosmetic_part/arms/default, "cosmetic_r_arm" = /datum/cosmetic_part/arms/default, "cosmetic_l_leg" = /datum/cosmetic_part/legs/default, - "cosmetic_r_leg" = /datum/cosmetic_part/legs/default + "cosmetic_r_leg" = /datum/cosmetic_part/legs/default, + "cosmetic_markings" = FALSE ) /// Security record note section @@ -840,6 +841,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "

Cosmetic Parts

" + dat += "Use markings on cosmetic parts? " + dat += "[features["cosmetic_markings"] ? "Yes" : "No"]" dat += "
" dat += "
" dat += "

Head

" @@ -2815,6 +2818,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("all") be_random_body = !be_random_body + if("cosmetic_markings") + features["cosmetic_markings"] = !features["cosmetic_markings"] + if("hear_midis") toggles ^= SOUND_MIDI diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 2be66de29..b0208f9db 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -387,12 +387,6 @@ else digitigrade_type = null - if(cosmetic_icon && is_organic_limb()) - if(cosmetic_icon.icon) - base_bp_icon = cosmetic_icon.icon - use_digitigrade = cosmetic_icon.support_digitigrade ? use_digitigrade : NOT_DIGITIGRADE - color_src = cosmetic_icon.color_src ? cosmetic_icon.color_src : MUTCOLORS - if("mam_body_markings" in S.default_features) var/datum/sprite_accessory/Smark Smark = GLOB.mam_body_markings_list[H.dna.features["mam_body_markings"]] @@ -407,6 +401,15 @@ else body_markings = null auxmarking = null + + if(cosmetic_icon && is_organic_limb()) + if(cosmetic_icon.icon) + base_bp_icon = cosmetic_icon.icon + use_digitigrade = cosmetic_icon.support_digitigrade ? use_digitigrade : NOT_DIGITIGRADE + color_src = cosmetic_icon.color_src ? cosmetic_icon.color_src : MUTCOLORS + if(!H.dna.features["cosmetic_markings"]) + body_markings = null + auxmarking = null if((MUTCOLORS in S.species_traits) || (MUTCOLORS_PARTSONLY in S.species_traits)) markings_color = list(colorlist) @@ -464,7 +467,7 @@ if(burnstate) . += image('icons/mob/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, image_dir) - if(!isnull(body_markings) && status == BODYPART_ORGANIC && !has_cosmetic_state) + if(!isnull(body_markings) && status == BODYPART_ORGANIC) if(!use_digitigrade) if(BODY_ZONE_CHEST) . += image(body_markings_icon, "[body_markings]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir) @@ -509,7 +512,7 @@ limb.icon_state = "[limb_style]_[body_zone]" // Body markings - if(body_markings && !has_cosmetic_state) + if(body_markings) if(is_husk) marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir) else if(is_husk && use_digitigrade) @@ -529,7 +532,7 @@ if(aux_zone) aux = image(limb.icon, "[limb_style]_[aux_zone]", -aux_layer, image_dir) . += aux - if(body_markings && !has_cosmetic_state) + if(body_markings) if(is_husk) auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir) else @@ -546,14 +549,14 @@ if(aux_zone) aux = image(limb.icon, "[aux_zone]", -aux_layer, image_dir) . += aux - if(!isnull(auxmarking) && !has_cosmetic_state) + if(!isnull(auxmarking)) if(is_husk) auxmarking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[aux_zone]", -aux_layer, image_dir) else auxmarking = image(body_markings_icon, "[body_markings]_[aux_zone]", -aux_layer, image_dir) . += auxmarking - if(!isnull(body_markings) && !has_cosmetic_state) + if(!isnull(body_markings)) if(is_husk) marking = image('modular_citadel/icons/mob/markings_notmammals.dmi', "husk_[body_zone]", -MARKING_LAYER, image_dir) else if(is_husk && use_digitigrade) @@ -582,8 +585,7 @@ limb.color = list(markings_color) if(aux_zone) aux.color = list(markings_color) - if(has_cosmetic_state) - return + if(!isnull(auxmarking)) auxmarking.color = list(markings_color) if(!isnull(body_markings)) diff --git a/hyperstation/code/modules/client/hyper_pref_savefile.dm b/hyperstation/code/modules/client/hyper_pref_savefile.dm index 3eb2a661c..a0a71216b 100644 --- a/hyperstation/code/modules/client/hyper_pref_savefile.dm +++ b/hyperstation/code/modules/client/hyper_pref_savefile.dm @@ -5,6 +5,7 @@ S["feature_cosmetic_r_arm"] >> features["cosmetic_r_arm"] S["feature_cosmetic_l_leg"] >> features["cosmetic_l_leg"] S["feature_cosmetic_r_leg"] >> features["cosmetic_r_leg"] + S["cosmetic_markings"] >> features["cosmetic_markings"] var/cosmetic_head = sanitize_inlist(features["cosmetic_head"], GLOB.cosmetic_heads, "default") var/cosmetic_chest = sanitize_inlist(features["cosmetic_chest"], GLOB.cosmetic_chests, "default") var/cosmetic_l_arm = sanitize_inlist(features["cosmetic_l_arm"], GLOB.cosmetic_arms, "default") @@ -31,4 +32,5 @@ 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 + WRITE_FILE(S["feature_cosmetic_r_leg"], r_leg.id) + WRITE_FILE(S["cosmetic_markings"], features["cosmetic_markings"]) \ No newline at end of file diff --git a/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm index d60fa54f9..cc97b26c5 100644 --- a/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/hyperstation/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -441,6 +441,7 @@ from modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm: taur_mode = PAW_TAURIC ckeys_allowed = list("chemlight") + /* IPCS ==========================================================