diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index c0c312cbc2..6835cb13d4 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -49,7 +49,7 @@ BONUS var/mob/living/carbon/M = A.affected_mob var/picked_bodypart = pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) var/obj/item/bodypart/bodypart = M.get_bodypart(picked_bodypart) - if(bodypart && bodypart.status == BODYPART_ORGANIC && !bodypart.is_pseudopart) //robotic limbs will mean less scratching overall + if(bodypart && bodypart.is_organic_limb() && !bodypart.is_pseudopart) //robotic limbs will mean less scratching overall var/can_scratch = scratch && !M.incapacitated() && get_location_accessible(M, picked_bodypart) M.visible_message("[can_scratch ? "[M] scratches [M.p_their()] [bodypart.name]." : ""]", "Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]") if(can_scratch) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index a96b0104f1..01d684adad 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -59,7 +59,7 @@ if(!affecting) //Missing limb? to_chat(user, "[C] doesn't have \a [parse_zone(user.zone_selected)]!") return - if(affecting.status == BODYPART_ORGANIC) //Limb must be organic to be healed - RR + if(affecting.is_organic_limb(FALSE)) //Limb must be organic to be healed - RR if(affecting.brute_dam && brute || affecting.burn_dam && burn) user.visible_message("[user] applies \the [src] on [C]'s [affecting.name].", "You apply \the [src] on [C]'s [affecting.name].") if(affecting.heal_damage(brute, burn)) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index ee196f8c1b..d873b42d33 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -228,7 +228,7 @@ for(var/BP in PP.bodyparts) var/obj/item/bodypart/NN = BP - if(NN.status == BODYPART_ORGANIC && NN.species_id != "plasmaman") //getting every organic, non-plasmaman limb (augments/androids are immune to this) + if(NN.is_organic_limb() && NN.species_id != "plasmaman") //getting every organic, non-plasmaman limb (augments/androids are immune to this) plasma_parts += NN if(NN.is_robotic_limb(FALSE)) robo_parts += NN diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 566c004142..eefd422727 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -80,7 +80,7 @@ I.do_stagger_action(src, user, totitemdamage) if(I.force) apply_damage(totitemdamage, I.damtype, affecting, wound_bonus = I.wound_bonus, bare_wound_bonus = I.bare_wound_bonus, sharpness = I.get_sharpness()) //CIT CHANGE - replaces I.force with totitemdamage - if(I.damtype == BRUTE && affecting.status == BODYPART_ORGANIC) + if(I.damtype == BRUTE && affecting.is_organic_limb(FALSE)) var/basebloodychance = affecting.brute_dam + totitemdamage if(prob(basebloodychance)) I.add_mob_blood(src) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 0845fa45f7..9eade70c6b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1651,7 +1651,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/bloody = 0 if(((I.damtype == BRUTE) && I.force && prob(25 + (I.force * 2)))) - if(affecting.status == BODYPART_ORGANIC) + if(affecting.is_organic_limb(FALSE)) I.add_mob_blood(H) //Make the weapon bloody, not the person. if(prob(I.force * 2)) //blood spatter! bloody = 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index cfb35fbb00..8489ab0aac 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -688,7 +688,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if continue . += "-[BP.body_zone]" - if(BP.status == BODYPART_ORGANIC) + if(BP.is_organic_limb(FALSE)) . += "-organic" else . += "-robotic" diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 1a796fb2bc..a1ea18a8b9 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -259,7 +259,7 @@ . += "-digitigrade[BP.use_digitigrade]" if(BP.animal_origin) . += "-[BP.animal_origin]" - if(BP.status == BODYPART_ORGANIC) + if(BP.is_organic_limb(FALSE)) . += "-organic" else . += "-robotic" diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 835ffe2d89..5aeac1bc38 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -391,10 +391,12 @@ if(!affecting) to_chat(user, "The limb is missing!") return - if(affecting.status != BODYPART_ORGANIC) + if(!affecting.is_organic_limb()) to_chat(user, "Medicine won't work on a robotic limb!") return - + else if(!affecting.is_organic_limb(FALSE) && mode != HYPO_INJECT) + to_chat(user, "Biomechanical limbs can only be treated via their integrated injection port, not via spraying!") + return //Always log attemped injections for admins var/contained = vial.reagents.log_list() log_combat(user, L, "attemped to inject", src, addition="which had [contained]") diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index 40ad167531..052e85a3d1 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -46,9 +46,11 @@ return if(!L.can_inject(user, TRUE, user.zone_selected, FALSE, TRUE)) //stopped by clothing, like patches return - if(affecting.status != BODYPART_ORGANIC) + if(!affecting.is_organic_limb()) to_chat(user, "Medicine won't work on a robotic limb!") return + else if(!affecting.is_organic_limb(FALSE)) + to_chat(user, "Medical sprays won't work on a biomechanical limb!") if(L == user) L.visible_message("[user] attempts to [apply_method] [src] on [user.p_them()]self.") diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 1e23f46d9f..8cf98008db 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -19,8 +19,10 @@ return if(!L.can_inject(user, TRUE, user.zone_selected, FALSE, TRUE)) //stopped by clothing, not by species immunity. return - if(affecting.status != BODYPART_ORGANIC) + if(!affecting.is_organic_limb()) to_chat(user, "Medicine won't work on a robotic limb!") + else if(!affecting.is_organic_limb(FALSE)) + to_chat(user, "Medical patches won't work on a biomechanical limb!") return ..() diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index b4938bab1b..0a34b3bab3 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -745,7 +745,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) + if(!isnull(body_markings) && is_organic_limb(FALSE)) if(!use_digitigrade) if(body_zone == BODY_ZONE_CHEST) . += image(body_markings_icon, "[body_markings]_[body_zone]_[icon_gender]", -MARKING_LAYER, image_dir) @@ -922,7 +922,7 @@ update_disabled() /obj/item/bodypart/proc/get_bleed_rate() - if(status != BODYPART_ORGANIC) // maybe in the future we can bleed oil from aug parts, but not now + if(!is_organic_limb()) // maybe in the future we can bleed oil from aug parts, but not now return var/bleed_rate = 0 if(generic_bleedstacks > 0) diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index 239bd8a98d..cf626ce7b4 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -10,14 +10,14 @@ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) possible_locs = list(BODY_ZONE_HEAD) - requires_bodypart_type = BODYPART_ORGANIC + requires_bodypart_type = 0 /datum/surgery_step/fix_brain name = "fix brain" implements = list(TOOL_HEMOSTAT = 85, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) //don't worry, pouring some alcohol on their open brain will get that chance to 100 time = 120 //long and complicated /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target, obj/item/tool) var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) - if(!B) + if(!B || istype(B, /obj/item/organ/brain/ipc)) return FALSE return TRUE diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index df82a765c8..652c49519a 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -27,15 +27,16 @@ if(!S.requires_bodypart) continue if(S.requires_bodypart_type) //ugly but it'll do. - if(S.requires_bodypart_type == BODYPART_ORGANIC) - if(!affecting.is_organic_limb(FALSE)) - continue - else if(S.requires_bodypart_type == BODYPART_ROBOTIC) - if(!affecting.is_robotic_limb()) - continue - else if(S.requires_bodypart_type == BODYPART_HYBRID) - if(!affecting.is_organic_limb() || !affecting.is_robotic_limb()) - continue + switch(S.requires_bodypart_type) + if(BODYPART_ORGANIC) + if(!affecting.is_organic_limb(FALSE)) + continue + if(BODYPART_ROBOTIC) + if(!affecting.is_robotic_limb()) + continue + if(BODYPART_HYBRID) + if(!affecting.is_organic_limb() || !affecting.is_robotic_limb()) + continue if(S.requires_real_bodypart && affecting.is_pseudopart) continue else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb @@ -67,15 +68,16 @@ if(!S.requires_bodypart) return if(S.requires_bodypart_type) //*scream - if(S.requires_bodypart_type == BODYPART_ORGANIC) - if(!affecting.is_organic_limb(FALSE)) - return - else if(S.requires_bodypart_type == BODYPART_ROBOTIC) - if(!affecting.is_robotic_limb()) - return - else if(S.requires_bodypart_type == BODYPART_HYBRID) - if(!affecting.is_organic_limb() || !affecting.is_robotic_limb()) - return + switch(S.requires_bodypart_type) + if(BODYPART_ORGANIC) + if(!affecting.is_organic_limb(FALSE)) + return + if(BODYPART_ROBOTIC) + if(!affecting.is_robotic_limb()) + return + if(BODYPART_HYBRID) + if(!affecting.is_organic_limb() || !affecting.is_robotic_limb()) + return else if(C && S.requires_bodypart) return if(S.lying_required && !(M.lying))