From 594fd17f23961d0a3ee31f03ea6ddf31ca86cad1 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 2 Sep 2020 15:34:13 +0100 Subject: [PATCH] test --- code/_globalvars/lists/flavor_misc.dm | 5 ++- code/modules/client/preferences.dm | 36 +++++++++++------- code/modules/client/preferences_savefile.dm | 6 ++- .../augmentation/customized_prosthetics.dmi | Bin 0 -> 23106 bytes 4 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 icons/mob/augmentation/customized_prosthetics.dmi diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 71c2b2e13b..09d4aadf50 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -279,7 +279,8 @@ GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) -//species ids that have greyscale sprites +//body ids that have greyscale sprites GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant","jelly","slime","golem","lum","stargazer","mush","ethereal","snail","c_golem","b_golem","mammal","xeno","ipc","insect","synthliz","avian","aquatic")) -//species ids that need snowflake coloring applied +//body ids that have prosthetic sprites +GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon")) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 48b86c68dd..44567a0306 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -431,7 +431,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Limb Modification:
" dat += "Modify Limbs
" for(var/modification in modified_limbs) - dat += "[modification]: [modified_limbs[modification]]
" + if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC) + dat += "[modification]: prosthetic - [modified_limbs[modification][2]]
" + else + dat += "[modification]: [modified_limbs[modification]]
" dat += "
" dat += "Species:[pref_species.name]
" dat += "Custom Species Name:[custom_species ? custom_species : "None"]
" @@ -1237,7 +1240,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/datum/quirk/T = SSquirks.quirks[V] bal -= initial(T.value) for(var/modification in modified_limbs) - if(modified_limbs[modification] == "Prosthetic") + if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC) return bal + 1 //max 1 point regardless of how many prosthetics return bal @@ -1497,19 +1500,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/modification_type = input(user, "Choose the modification to the limb:", "Character Preference") as null|anything in LOADOUT_LIMBS if(modification_type) if(modification_type == LOADOUT_LIMB_PROSTHETIC) - var/number_of_prosthetics = 0 - for(var/modification in modified_limbs) - if(modified_limbs[modification] == LOADOUT_LIMB_PROSTHETIC) - number_of_prosthetics += 1 - if(number_of_prosthetics >= MAXIMUM_LOADOUT_PROSTHETICS) - to_chat(user, "You can only have up to two prosthetic limbs!") - return + var/prosthetic_type = input(user, "Choose the type of prosthetic", "Character Preference") as null|anything in (list("old_prosthetic") + GLOB.prosthetic_limb_types) + if(prosthetic_type) + var/number_of_prosthetics = 0 + for(var/modification in modified_limbs) + if(modified_limbs[modification][1] == LOADOUT_LIMB_PROSTHETIC) + number_of_prosthetics += 1 + if(number_of_prosthetics >= MAXIMUM_LOADOUT_PROSTHETICS) + to_chat(user, "You can only have up to two prosthetic limbs!") + else + //save the actual prosthetic data + modified_limbs[limb_type] = list(modification_type, prosthetic_type) else if(modification_type == LOADOUT_LIMB_NORMAL) modified_limbs -= limb_type - ShowChoices(user) - return 1 - modified_limbs[limb_type] = modification_type + else + modified_limbs[limb_type] = list(modification_type) if("underwear") var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in GLOB.underwear_list @@ -2588,7 +2594,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) //limb stuff character.regenerate_limbs() //possible optimisation: check for changes before regenerating? for(var/modified_limb in modified_limbs) - var/modification = modified_limbs[modified_limb] + var/modification = modified_limbs[modified_limb][1] var/obj/item/bodypart/old_part = character.get_bodypart(modified_limb) if(modification == LOADOUT_LIMB_PROSTHETIC) var/obj/item/bodypart/new_limb @@ -2601,6 +2607,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) new_limb = new/obj/item/bodypart/l_leg/robot/surplus(character) if(BODY_ZONE_R_LEG) new_limb = new/obj/item/bodypart/r_leg/robot/surplus(character) + var/prosthetic_type = modified_limbs[modified_limb][2] + if(prosthetic_type != "old_prosthetic") //lets just leave the old sprites as they are + new_limb.icon = 'icons/mob/augmentation/customized_prosthetics.dmi' + new_limb.icon_state = "[prosthetic_type]_[modified_limb]" new_limb.replace_limb(character) qdel(old_part) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c0a578862a..093d87f15a 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -514,7 +514,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["scars3"] >> scars_list["3"] S["scars4"] >> scars_list["4"] S["scars5"] >> scars_list["5"] - json_decode(S["modified_limbs"]) >> modified_limbs + if(S["modified_limbs"]) + json_decode(S["modified_limbs"]) >> modified_limbs S["chosen_limb_id"] >> chosen_limb_id //Custom names @@ -871,7 +872,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["scars3"] , scars_list["3"]) WRITE_FILE(S["scars4"] , scars_list["4"]) WRITE_FILE(S["scars5"] , scars_list["5"]) - WRITE_FILE(S["modified_limbs"] , json_encode(modified_limbs)) + if(modified_limbs) + WRITE_FILE(S["modified_limbs"] , json_encode(modified_limbs)) WRITE_FILE(S["chosen_limb_id"], chosen_limb_id) //gear loadout diff --git a/icons/mob/augmentation/customized_prosthetics.dmi b/icons/mob/augmentation/customized_prosthetics.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ee5e74b93f5be4605de5614f9e8cafd8c690582a GIT binary patch literal 23106 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 R5Mo0k&Kh076rXmw`){HUeC_}M literal 0 HcmV?d00001