diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index c73ebf4d41..679962b210 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -168,18 +168,19 @@ #define MODIFIER_GENETIC 1 // Modifiers with this flag will be copied to mobs who get cloned. // Bodyparts and organs. -#define O_MOUTH "mouth" #define O_EYES "eyes" #define O_HEART "heart" -#define O_CELL "cell" #define O_LUNGS "lungs" #define O_BRAIN "brain" #define O_LIVER "liver" #define O_KIDNEYS "kidneys" #define O_APPENDIX "appendix" #define O_VOICE "voicebox" +#define O_STANDARD list(O_EYES, O_HEART, O_LUNGS, O_BRAIN, O_LIVER, O_KIDNEYS, O_APPENDIX, O_VOICE) // Non-Standard organs +#define O_MOUTH "mouth" +#define O_CELL "cell" #define O_PLASMA "plasma vessel" #define O_HIVE "hive node" #define O_NUTRIENT "nutrient vessel" @@ -191,7 +192,9 @@ #define O_ACID "acid gland" #define O_EGG "egg sac" #define O_RESIN "resin spinner" +#define O_ALL list(O_STANDARD, O_MOUTH, O_CELL, O_PLASMA, O_HIVE, O_NUTRIENT, O_STRATA, O_RESPONSE, O_GBLADDER, O_POLYP, O_ANCHOR, O_ACID, O_EGG, O_RESIN) +// External organs, aka limbs #define BP_L_FOOT "l_foot" #define BP_R_FOOT "r_foot" #define BP_L_LEG "l_leg" diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index e098283a2e..71e82bbc19 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -142,6 +142,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(!status) continue var/obj/item/organ/I = character.internal_organs_by_name[name] + if(istype(I, /obj/item/organ/internal/brain)) + var/obj/item/organ/external/E = character.get_organ(I.parent_organ) + if(E.robotic < ORGAN_ASSISTED) + continue if(I) if(status == "assisted") I.mechassist() @@ -188,8 +192,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O for(var/name in pref.organ_data) var/status = pref.organ_data[name] var/organ_name = null - switch(name) + switch(name) if(BP_TORSO) organ_name = "torso" if(BP_GROIN) @@ -582,6 +586,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O choice_options = list("Prosthesis") if("Full Body") limb = BP_TORSO + second_limb = BP_HEAD third_limb = BP_GROIN choice_options = list("Normal","Prosthesis") @@ -590,12 +595,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O switch(new_state) if("Normal") + pref.organ_data[limb] = null + pref.rlimb_data[limb] = null if(limb == BP_TORSO) for(var/other_limb in BP_ALL - BP_TORSO) pref.organ_data[other_limb] = null pref.rlimb_data[other_limb] = null - pref.organ_data[limb] = null - pref.rlimb_data[limb] = null + for(var/internal in O_STANDARD) + pref.organ_data[internal] = null + pref.rlimb_data[internal] = null if(third_limb) pref.organ_data[third_limb] = null pref.rlimb_data[third_limb] = null