|
837 | 837 | var/changed_something = FALSE
|
838 | 838 | var/obj/item/organ/new_organ = pick(GLOB.bioscrambler_valid_organs)
|
839 | 839 | var/obj/item/organ/replaced = get_organ_slot(initial(new_organ.slot))
|
840 |
| - if (!(replaced?.organ_flags & ORGAN_SYNTHETIC)) |
| 840 | + if (!(replaced?.organ_flags & (ORGAN_SYNTHETIC | ORGAN_UNREMOVABLE | ORGAN_HIDDEN))) // monkestation edit: also check ORGAN_UNREMOVABLE and ORGAN_HIDDEN |
841 | 841 | changed_something = TRUE
|
842 | 842 | new_organ = new new_organ()
|
843 | 843 | new_organ.replace_into(src)
|
844 | 844 |
|
845 | 845 | var/obj/item/bodypart/new_part = pick(GLOB.bioscrambler_valid_parts)
|
846 | 846 | var/obj/item/bodypart/picked_user_part = get_bodypart(initial(new_part.body_zone))
|
847 |
| - if (!(picked_user_part?.bodytype & BODYTYPE_ROBOTIC)) |
| 847 | + if (!(picked_user_part?.bodytype & BODYTYPE_ROBOTIC) || (picked_user_part?.bodypart_flags & BODYPART_UNREMOVABLE)) // monkestation edit: check BODYPART_UNREMOVABLE |
848 | 848 | changed_something = TRUE
|
849 | 849 | new_part = new new_part()
|
850 | 850 | new_part.replace_limb(src, special = TRUE)
|
|
862 | 862 | /mob/living/carbon/proc/init_bioscrambler_lists()
|
863 | 863 | var/list/body_parts = typesof(/obj/item/bodypart/chest) + typesof(/obj/item/bodypart/head) + subtypesof(/obj/item/bodypart/arm) + subtypesof(/obj/item/bodypart/leg)
|
864 | 864 | for (var/obj/item/bodypart/part as anything in body_parts)
|
865 |
| - if(!is_type_in_typecache(part, GLOB.bioscrambler_parts_blacklist) && !(part::bodytype & BODYTYPE_ROBOTIC) && !(part::limb_id in GLOB.bioscrambler_limb_id_blacklist)) |
| 865 | + if(!is_type_in_typecache(part, GLOB.bioscrambler_parts_blacklist) && !(part::bodytype & BODYTYPE_ROBOTIC) && !(part::bodypart_flags & BODYPART_UNREMOVABLE) && !(part::limb_id in GLOB.bioscrambler_limb_id_blacklist)) // monkestation edit: check BODYPART_UNREMOVABLE |
866 | 866 | continue
|
867 | 867 | body_parts -= part
|
868 | 868 | GLOB.bioscrambler_valid_parts = body_parts
|
869 | 869 |
|
870 | 870 | var/list/organs = subtypesof(/obj/item/organ/internal) + subtypesof(/obj/item/organ/external)
|
871 | 871 | for (var/obj/item/organ/organ_type as anything in organs)
|
872 |
| - if(!is_type_in_typecache(organ_type, GLOB.bioscrambler_organs_blacklist) && !(organ_type::organ_flags & ORGAN_SYNTHETIC) && organ_type::zone != "abstract") |
| 872 | + if(!is_type_in_typecache(organ_type, GLOB.bioscrambler_organs_blacklist) && !(organ_type::organ_flags & (ORGAN_SYNTHETIC | ORGAN_UNREMOVABLE | ORGAN_HIDDEN)) && organ_type::zone != "abstract") // monkestation edit: also check ORGAN_UNREMOVABLE and ORGAN_HIDDEN |
873 | 873 | continue
|
874 | 874 | organs -= organ_type
|
875 | 875 | GLOB.bioscrambler_valid_organs = organs
|
|
0 commit comments