From 27ebe7a6feefd002351e6211c138c46963dac405 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sat, 7 Jul 2018 21:33:42 -0400 Subject: [PATCH] Standardized Robotic Organ Checking--Removes Mechassited Organs --- code/__DEFINES/mobs.dm | 1 - code/_onclick/item_attack.dm | 2 +- .../miniantags/abduction/abduction_surgery.dm | 4 +- .../gamemodes/miniantags/abduction/gland.dm | 1 - code/game/gamemodes/miniantags/borer/borer.dm | 2 +- code/game/machinery/adv_med.dm | 8 +-- code/game/objects/items.dm | 2 +- code/game/objects/items/devices/scanners.dm | 2 +- code/game/objects/items/stacks/medical.dm | 2 +- code/game/objects/items/stacks/nanopaste.dm | 2 +- code/game/objects/items/weapons/shards.dm | 4 +- code/game/objects/items/weapons/tools.dm | 2 +- code/modules/client/preference/preferences.dm | 4 +- code/modules/mob/living/carbon/carbon.dm | 2 +- .../mob/living/carbon/human/appearance.dm | 2 +- .../mob/living/carbon/human/examine.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/human_damage.dm | 10 ++-- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/carbon/human/human_organs.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 7 +-- .../mob/living/carbon/human/update_icons.dm | 2 +- .../mob/living/silicon/robot/component.dm | 4 +- code/modules/power/cable.dm | 2 +- code/modules/surgery/bones.dm | 10 ++-- code/modules/surgery/cavity_implant.dm | 6 +- code/modules/surgery/encased.dm | 2 +- code/modules/surgery/generic.dm | 2 +- code/modules/surgery/helpers.dm | 4 +- code/modules/surgery/implant_removal.dm | 4 +- code/modules/surgery/limb_augmentation.dm | 2 +- code/modules/surgery/limb_reattach.dm | 8 +-- .../surgery/organs/augments_internal.dm | 2 - code/modules/surgery/organs/blood.dm | 2 +- code/modules/surgery/organs/organ.dm | 54 +++++------------- code/modules/surgery/organs/organ_external.dm | 36 ++++++------ code/modules/surgery/organs/organ_icon.dm | 10 ++-- code/modules/surgery/organs/organ_internal.dm | 22 ++----- code/modules/surgery/organs/subtypes/vox.dm | 2 +- code/modules/surgery/organs_internal.dm | 17 ++---- code/modules/surgery/other.dm | 6 +- code/modules/surgery/plastic_surgery.dm | 2 +- .../modules/surgery/remove_embedded_object.dm | 4 +- code/modules/surgery/robotics.dm | 16 +++--- code/modules/surgery/surgery.dm | 4 +- icons/obj/surgery.dmi | Bin 37307 -> 37127 bytes 46 files changed, 114 insertions(+), 174 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index efe8a4aac86..c504af46cfa 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -6,7 +6,6 @@ #define ORGAN_SPLINTED 4 #define ORGAN_DEAD 8 #define ORGAN_MUTATED 16 -#define ORGAN_ASSISTED 32 #define DROPLIMB_SHARP 0 #define DROPLIMB_BLUNT 1 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index ddd6e14a5b0..bf481d4e747 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -37,7 +37,7 @@ return 1 if(istype(src,/obj/item/organ/external)) var/obj/item/organ/external/E = src - if(E.robotic == 2) // Robot limbs are less messy to attach + if(E.is_robotic()) // Robot limbs are less messy to attach if(!attempt_initiate_surgery(src, M, user,1)) return 0 else diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index 2d3bed1e0cf..d07381b7cce 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -11,7 +11,7 @@ var/obj/item/organ/external/affected = H.get_organ(target_zone) if(!affected) return FALSE - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return FALSE var/mob/living/carbon/human/H = user // You must either: Be of the abductor species, or contain an abductor implant @@ -89,7 +89,7 @@ var/obj/item/organ/external/affected = H.get_organ(target_zone) if(!affected) return FALSE - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return FALSE var/mob/living/carbon/human/H = user // You must either: Be of the abductor species, or contain an abductor implant diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index a5660f86883..8e7219e401a 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -13,7 +13,6 @@ var/human_only = 0 var/active = 0 tough = TRUE //not easily broken by combat damage - sterile = TRUE //not very germy /obj/item/organ/internal/heart/gland/proc/ownerCheck() if(ishuman(owner)) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 11ec158db84..9593ee6b792 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -308,7 +308,7 @@ var/list/choices = list() for(var/mob/living/carbon/human/H in view(1,src)) var/obj/item/organ/external/head/head = H.get_organ("head") - if(head.status & ORGAN_ROBOT) + if(head.is_robotic()) continue if(H.stat != DEAD && Adjacent(H) && !H.has_brain_worms()) choices += H diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 59009e9930f..040fd848cfd 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -427,7 +427,7 @@ var/organStatus[0] if(E.status & ORGAN_BROKEN) organStatus["broken"] = E.broken_description - if(E.status & ORGAN_ROBOT) + if(E.is_robotic()) organStatus["robotic"] = 1 if(E.status & ORGAN_SPLINTED) organStatus["splinted"] = 1 @@ -456,7 +456,7 @@ organData["maxHealth"] = I.max_damage organData["bruised"] = I.min_broken_damage organData["broken"] = I.min_bruised_damage - organData["robotic"] = I.robotic + organData["robotic"] = I.is_robotic() organData["dead"] = (I.status & ORGAN_DEAD) intOrganData.Add(list(organData)) @@ -596,8 +596,8 @@ splint = "Splinted:" if(e.status & ORGAN_BROKEN) AN = "[e.broken_description]:" - if(e.status & ORGAN_ROBOT) - robot = "Prosthetic:" + if(e.is_robotic()) + robot = "Robotic:" if(e.open) open = "Open:" switch(e.germ_level) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d83660e4de6..646c93977fc 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -465,7 +465,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d eyes.receive_damage(rand(3,4), 1) if(eyes.damage >= eyes.min_bruised_damage) if(M.stat != 2) - if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly + if(!eyes.is_robotic()) //robot eyes bleeding might be a bit silly to_chat(M, "Your eyes start to bleed profusely!") if(prob(50)) if(M.stat != DEAD) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 9912957c2bb..62d8dc6c87d 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -245,7 +245,7 @@ REAGENT SCANNER user.show_message("Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") var/implant_detect for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs) - if(CI.status == ORGAN_ROBOT) + if(CI.is_robotic()) implant_detect += "[H.name] is modified with a [CI.name].
" if(implant_detect) user.show_message("Detected cybernetic modifications:") diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 2ae1a2d6e00..bba03c4b07b 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -34,7 +34,7 @@ to_chat(user, "That limb is missing!") return 1 - if(affecting.status & ORGAN_ROBOT) + if(affecting.is_robotic()) to_chat(user, "This can't be used on a robotic limb.") return 1 diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 593ef9a820f..ec5ba4ef684 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -28,7 +28,7 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/S = H.get_organ(user.zone_sel.selecting) - if(S && (S.status & ORGAN_ROBOT)) + if(S && S.is_robotic()) if(S.get_damage()) S.heal_damage(15, 15, robo_repair = 1) H.updatehealth() diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index b0d7477bbbb..0f771fee03d 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -45,7 +45,7 @@ var/mob/living/carbon/human/H = user if(!H.gloves) var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") - if(affecting.status & ORGAN_ROBOT) + if(affecting.is_robotic()) return to_chat(H, "[src] cuts into your hand!") if(affecting.receive_damage(force*0.5)) @@ -82,7 +82,7 @@ var/obj/item/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) if(!affecting) return - if(affecting.status & ORGAN_ROBOT) + if(affecting.is_robotic()) return H.Weaken(3) if(affecting.receive_damage(5, 0)) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 867cc473932..43904d27359 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -400,7 +400,7 @@ if(!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != INTENT_HELP || S.open == 2) + if(!S.is_robotic() || user.a_intent != INTENT_HELP || S.open == 2) return ..() if(!isOn()) //why wasn't this being checked already? diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index db4f33ac121..7f68f216890 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -2130,9 +2130,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts else var/obj/item/organ/internal/I = character.get_int_organ_tag(name) if(I) - if(status == "assisted") - I.mechassist() - else if(status == "mechanical") + if(status == "mechanical") I.robotize() character.dna.b_type = b_type diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index aa890cbd17f..604dfc36f32 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -342,7 +342,7 @@ AdjustEyeBlurry(damage * rand(3, 6)) if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2) - if(!(E.status & ORGAN_ROBOT)) + if(!E.is_robotic()) to_chat(src, "Your eyes start to burn badly!") else //snowflake conditions piss me off for the record to_chat(src, "The flash blinds you!") diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 80b871e7996..152262b69ea 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -129,7 +129,7 @@ /mob/living/carbon/human/proc/change_alt_head(var/alternate_head) var/obj/item/organ/external/head/H = get_organ("head") - if(!H || H.alt_head == alternate_head || (H.status & ORGAN_ROBOT) || (!(species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in alt_heads_list)) + if(!H || H.alt_head == alternate_head || H.is_robotic() || (!(species.bodyflags & HAS_ALT_HEADS) && alternate_head != "None") || !(alternate_head in alt_heads_list)) return H.alt_head = alternate_head diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index ef352b5a8f8..e382796cd09 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -210,7 +210,7 @@ wound_flavor_text["[organ_tag]"] = "[p_they(TRUE)] [p_are()] missing [p_their()] [organ_descriptor].\n" else if(!isSynthetic()) - if(E.status & ORGAN_ROBOT) + if(E.is_robotic()) wound_flavor_text["[E.limb_name]"] = "[p_they(TRUE)] [p_have()] a robotic [E.name]!\n" else if(E.status & ORGAN_SPLINTED) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index cca71c1e8d6..ad249d8307f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1065,7 +1065,7 @@ if(!affecting) . = 0 fail_msg = "[p_they(TRUE)] [p_are()] missing that limb." - else if(affecting.status & ORGAN_ROBOT) + else if(affecting.is_robotic()) . = 0 fail_msg = "That limb is robotic." else diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 5ed14b3a18e..c2c16382995 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -115,7 +115,7 @@ O.receive_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. - O.heal_damage(-amount, 0, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) + O.heal_damage(-amount, 0, internal = 0, robo_repair = O.is_robotic()) /mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null) @@ -129,7 +129,7 @@ O.receive_damage(0, amount, sharp=is_sharp(damage_source), used_weapon=damage_source) else //if you don't want to heal robot organs, they you will have to check that yourself before using this proc. - O.heal_damage(0, -amount, internal=0, robo_repair=(O.status & ORGAN_ROBOT)) + O.heal_damage(0, -amount, internal = 0, robo_repair = O.is_robotic()) /mob/living/carbon/human/Paralyse(amount) @@ -149,7 +149,7 @@ if(prob(mut_prob)) var/list/obj/item/organ/external/candidates = list() //TYPECASTED LISTS ARE NOT A FUCKING THING WHAT THE FUCK for(var/obj/item/organ/external/O in bodyparts) - if(O.status & ORGAN_ROBOT) + if(O.is_robotic()) continue if(!(O.status & ORGAN_MUTATED)) candidates |= O @@ -205,9 +205,9 @@ var/list/obj/item/organ/external/parts = list() for(var/obj/item/organ/external/O in bodyparts) if((brute && O.brute_dam) || (burn && O.burn_dam)) - if(!(flags & AFFECT_ROBOTIC_ORGAN) && O.status & ORGAN_ROBOT) + if(!(flags & AFFECT_ROBOTIC_ORGAN) && O.is_robotic()) continue - if(!(flags & AFFECT_ORGANIC_ORGAN) && !(O.status & ORGAN_ROBOT)) + if(!(flags & AFFECT_ORGANIC_ORGAN) && !O.is_robotic()) continue parts += O return parts diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 5b78b450357..2991e0a7111 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -165,7 +165,7 @@ emp_act /mob/living/carbon/human/emag_act(user as mob, var/obj/item/organ/external/affecting) if(!istype(affecting)) return - if(!(affecting.status & ORGAN_ROBOT)) + if(!affecting.is_robotic()) to_chat(user, "That limb isn't robotic.") return if(affecting.sabotaged) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 9a78eafadd8..3f478e65d40 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -178,7 +178,7 @@ I use this to standardize shadowling dethrall code /mob/living/carbon/human/has_organic_damage() var/odmg = 0 for(var/obj/item/organ/external/O in bodyparts) - if(O.status & ORGAN_ROBOT) + if(O.is_robotic()) odmg += O.brute_dam odmg += O.burn_dam return (health < (100 - odmg)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 22e2e0ffe25..2e9e9b88656 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -993,7 +993,7 @@ if(!H) //H.status will runtime if there is no H (obviously) return - if(H.status & ORGAN_ROBOT) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. + if(H.is_robotic()) //Handle robotic hearts specially with a wuuuubb. This also applies to machine-people. if(shock_stage >= 10 || istype(get_turf(src), /turf/space)) //PULSE_THREADY - maximum value for pulse, currently it 5. //High pulse value corresponds to a fast rate of heartbeat. @@ -1020,10 +1020,7 @@ if(heartbeat >= rate) heartbeat = 0 - if(H.status & ORGAN_ASSISTED) - src << sound('sound/effects/pacemakebeat.ogg',0,0,CHANNEL_HEARTBEAT,50) - else - src << sound('sound/effects/singlebeat.ogg',0,0,CHANNEL_HEARTBEAT,50) + src << sound('sound/effects/singlebeat.ogg',0,0,CHANNEL_HEARTBEAT,50) else heartbeat++ diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 328e4c14ab8..3a1ac4d3a83 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -241,7 +241,7 @@ var/global/list/damage_icon_parts = list() var/obj/item/organ/external/part = bodyparts_by_name[organ_tag] if(isnull(part)) icon_key += "0" - else if(part.status & ORGAN_ROBOT) + else if(part.is_robotic()) icon_key += "2[part.model ? "-[part.model]": ""]" else if(part.status & ORGAN_DEAD) icon_key += "3" diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index e3407c06f3d..5802bdeb9ec 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -234,7 +234,7 @@ var/organ_found if(H.internal_organs.len) for(var/obj/item/organ/external/E in H.bodyparts) - if(!(E.status & ORGAN_ROBOT)) + if(!E.is_robotic()) continue organ_found = 1 to_chat(user, "[E.name]: [round(E.brute_dam)] [round(E.burn_dam)]") @@ -245,7 +245,7 @@ organ_found = null if(H.internal_organs.len) for(var/obj/item/organ/internal/O in H.internal_organs) - if(!(O.status & ORGAN_ROBOT)) + if(!O.is_robotic()) continue organ_found = 1 to_chat(user, "[capitalize(O.name)]: [O.damage]") diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 25a47f19e04..ae64d5d4d6e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -528,7 +528,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list( if(!S) return - if(!(S.status & ORGAN_ROBOT) || user.a_intent != INTENT_HELP || S.open == 2) + if(!S.is_robotic() || user.a_intent != INTENT_HELP || S.open == 2) return ..() if(S.burn_dam) diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index a053b568dc7..fb45bddb9ba 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -19,7 +19,7 @@ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 if(affected.cannot_break) return 0 @@ -43,7 +43,7 @@ /datum/surgery_step/glue_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) - return affected && !(affected.status & ORGAN_ROBOT) && !(affected.cannot_break) + return affected && !affected.is_robotic() && !(affected.cannot_break) /datum/surgery_step/glue_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) @@ -77,7 +77,7 @@ /datum/surgery_step/set_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) - return affected && !(affected.status & ORGAN_ROBOT) + return affected && !affected.is_robotic() /datum/surgery_step/set_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) @@ -116,7 +116,7 @@ /datum/surgery_step/mend_skull/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) - return affected && !(affected.status & ORGAN_ROBOT) && affected.limb_name == "head" + return affected && !affected.is_robotic() && affected.limb_name == "head" /datum/surgery_step/mend_skull/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] is beginning piece together [target]'s skull with \the [tool]." , \ @@ -153,7 +153,7 @@ /datum/surgery_step/finish_bone/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) - return affected && !(affected.status & ORGAN_ROBOT) + return affected && !affected.is_robotic() /datum/surgery_step/finish_bone/begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 2ab2aca37c7..16d1b18dc1b 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -23,7 +23,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 @@ -33,7 +33,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - return (affected.status & ORGAN_ROBOT) + return affected.is_robotic() /datum/surgery_step/cavity priority = 1 @@ -187,7 +187,7 @@ else user.visible_message(" [user] puts \the [tool] inside [target]'s [get_cavity(affected)] cavity.", \ " You put \the [tool] inside [target]'s [get_cavity(affected)] cavity." ) - if((tool.w_class > get_max_wclass(affected)/2 && prob(50) && !(affected.status & ORGAN_ROBOT))) + if((tool.w_class > get_max_wclass(affected) / 2 && prob(50) && !affected.is_robotic())) to_chat(user, " You tear some vessels trying to fit the object in the cavity.") affected.internal_bleeding = TRUE affected.owner.custom_pain("You feel something rip in your [affected.name]!") diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm index b9a33fcecab..e1402083dbd 100644 --- a/code/modules/surgery/encased.dm +++ b/code/modules/surgery/encased.dm @@ -15,7 +15,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 1e1b3a10365..c66d95df899 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -12,7 +12,7 @@ var/obj/item/organ/external/affected = target.get_organ(target_zone) if(affected == null) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index 986ce671860..715f3e9837b 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -21,7 +21,7 @@ for(var/datum/surgery/S in all_surgeries) if(!S.possible_locs.Find(selected_zone)) continue - if(affecting && S.requires_organic_bodypart && affecting.status == ORGAN_ROBOT) + if(affecting && S.requires_organic_bodypart && affecting.is_robotic()) continue if(!S.can_start(user, M)) continue @@ -39,7 +39,7 @@ S = available_surgeries["Apply Robotic Prosthetic"] if(istype(I,/obj/item/organ/external)) var/obj/item/organ/external/E = I - if(E.robotic == 2) + if(E.is_robotic()) S = available_surgeries["Synthetic Limb Reattachment"] if(S) var/datum/surgery/procedure = new S.type diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index c36df974ea3..435ce92b94e 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -19,7 +19,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 @@ -29,7 +29,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 return 1 diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 9674f4aec49..48a16b00a67 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -11,7 +11,7 @@ return 0 if(affected.status & ORGAN_BROKEN) //The arm has to be in prime condition to augment it. return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index d64d00c34bb..2e8a3b85300 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -15,7 +15,7 @@ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 if(affected.cannot_amputate) return 0 @@ -131,7 +131,7 @@ /datum/surgery_step/limb/attach/proc/is_correct_limb(obj/item/organ/external/E) - if(E.status & ORGAN_ROBOT) + if(E.is_robotic()) return 0 return 1 @@ -149,13 +149,13 @@ name = "attach robotic limb" /datum/surgery_step/limb/attach/robo/is_correct_limb(obj/item/organ/external/E) - if(!(E.status & ORGAN_ROBOT)) + if(!E.is_robotic()) return 0 return 1 /datum/surgery_step/limb/attach/robo/attach_limb(mob/living/user, mob/living/carbon/human/target, obj/item/organ/external/E) // Fixes fabricator IPC heads - if(!(E.dna) && E.robotic == 2 && target.dna) + if(!(E.dna) && E.is_robotic() && target.dna) E.set_dna(target.dna) ..() if(E.limb_name == "head") diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 64d62d3f6b4..f0b05ad0659 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -7,8 +7,6 @@ var/implant_color = "#FFFFFF" var/implant_overlay tough = TRUE // Immune to damage - sterile = TRUE // Doesn't accumulate germs - robotic = 2 // these are cybernetic after all /obj/item/organ/internal/cyberimp/New(var/mob/M = null) . = ..() diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 9f732fdef4d..fecbdb05287 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -64,7 +64,7 @@ var/obj/item/organ/external/BP = X var/brutedamage = BP.brute_dam - if(BP.status & ORGAN_ROBOT) + if(BP.is_robotic()) continue //We want an accurate reading of .len diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 5837fab5925..cde97918a50 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -13,7 +13,6 @@ var/organ_tag = "organ" var/parent_organ = "chest" - var/robotic = 0 //For being a robot var/list/datum/autopsy_data/autopsy_data = list() var/list/trace_chemicals = list() // traces of chemicals in the organ, @@ -75,7 +74,7 @@ blood_DNA[dna.unique_enzymes] = dna.b_type /obj/item/organ/proc/necrotize(update_sprite=TRUE) - if(status & ORGAN_ROBOT) + if(is_robotic()) return damage = max_damage status |= ORGAN_DEAD @@ -95,7 +94,7 @@ return //Process infections - if((status & ORGAN_ROBOT) || sterile || (owner && (IS_PLANT in owner.species.species_traits))) + if(is_robotic() || sterile || (owner && (IS_PLANT in owner.species.species_traits))) germ_level = 0 return @@ -175,10 +174,8 @@ /obj/item/organ/proc/rejuvenate() damage = 0 germ_level = 0 - if(status & ORGAN_ROBOT) //Robotic organs stay robotic. + if(is_robotic()) //Robotic organs stay robotic. status = ORGAN_ROBOT - else if(status & ORGAN_ASSISTED) //Assisted organs stay assisted. - status = ORGAN_ASSISTED else status = 0 if(!owner) @@ -224,7 +221,7 @@ /obj/item/organ/proc/receive_damage(amount, silent = 0) if(tough) return - if(status & ORGAN_ROBOT) + if(is_robotic()) damage = between(0, damage + (amount * 0.8), max_damage) else damage = between(0, damage + amount, max_damage) @@ -240,21 +237,12 @@ necrotize() /obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc - robotic = 2 status &= ~ORGAN_BROKEN status &= ~ORGAN_SPLINTED status |= ORGAN_ROBOT -/obj/item/organ/proc/mechassist() //Used to add things like pacemakers, etc - robotize(1) //Skip the icon/name setting that occurs in robotize to avoid having to reset the icon file. - status &= ~ORGAN_ROBOT - status |= ORGAN_ASSISTED - robotic = 1 - min_bruised_damage = 15 - min_broken_damage = 35 - /obj/item/organ/external/emp_act(severity) - if(!(status & ORGAN_ROBOT) || emp_proof) + if(!is_robotic() || emp_proof) return if(tough) switch(severity) @@ -274,25 +262,21 @@ receive_damage(0, 7) /obj/item/organ/internal/emp_act(severity) - if(!robotic || emp_proof) + if(!is_robotic() || emp_proof) return - if(robotic == 2) + if(is_robotic()) switch(severity) - if(1.0) + if(1) receive_damage(20, 1) - if(2.0) + if(2) receive_damage(7, 1) - else if(robotic == 1) - receive_damage(11, 1) /obj/item/organ/internal/heart/emp_act(intensity) if(emp_proof) return - if(owner && robotic == 2) + if(owner && is_robotic()) Stop() // In the name of looooove~! owner.visible_message("[owner] clutches [owner.p_their()] chest and gasps!","You clutch your chest in pain!") - else if(owner && robotic == 1) - receive_damage(11,1) /obj/item/organ/proc/remove(var/mob/living/user,special = 0) if(!istype(owner)) @@ -335,20 +319,15 @@ I use this so that this can be made better once the organ overhaul rolls out -- return 0 return src == O.get_int_organ(organ_tag) -/obj/item/organ/proc/is_robotic(var/purist = FALSE) - if(purist && (robotic > 1 || status & (ORGAN_ROBOT))) //Only the robotiest. +/obj/item/organ/proc/is_robotic() + if(status & ORGAN_ROBOT) return TRUE - if(robotic || status & (ORGAN_ROBOT|ORGAN_ASSISTED)) //Any tech will do. - return TRUE - return FALSE /obj/item/organ/serialize() var/data = ..() if(status != 0) data["status"] = status - if(robotic > 0) - data["robotic"] = robotic // Save the DNA datum if: The owner doesn't exist, or the dna doesn't match // the owner @@ -356,14 +335,7 @@ I use this so that this can be made better once the organ overhaul rolls out -- data["dna"] = dna.serialize() return data -/obj/item/organ/deserialize(var/data) - switch(data["robotic"]) - if(1) - mechassist() - if(2) - robotize() - else - // Nothing +/obj/item/organ/deserialize(data) if(isnum(data["status"])) status = data["status"] if(islist(data["dna"])) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 960ce7c0da1..bd064a7d062 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -241,7 +241,7 @@ #undef LIMB_DMG_PROB /obj/item/organ/external/proc/heal_damage(brute, burn, internal = 0, robo_repair = 0) - if(status & ORGAN_ROBOT && !robo_repair) + if(is_robotic() && !robo_repair) return brute_dam = max(brute_dam - brute, 0) @@ -260,10 +260,8 @@ This function completely restores a damaged organ to perfect condition. */ /obj/item/organ/external/rejuvenate() damage_state = "00" - if(status & ORGAN_ROBOT) //Robotic organs stay robotic. + if(is_robotic()) //Robotic organs stay robotic. status = ORGAN_ROBOT - else if(status & ORGAN_ASSISTED) //Assisted organs stay assisted. - status = ORGAN_ASSISTED else status = 0 germ_level = 0 @@ -330,7 +328,7 @@ Note that amputating the affected organ does in fact remove the infection from t */ /obj/item/organ/external/proc/update_germs() - if((status & ORGAN_ROBOT) || (IS_PLANT in owner.species.species_traits)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. + if(is_robotic() || (IS_PLANT in owner.species.species_traits)) //Robotic limbs shouldn't be infected, nor should nonexistant limbs. germ_level = 0 return @@ -381,12 +379,12 @@ Note that amputating the affected organ does in fact remove the infection from t //spread the infection to child and parent organs if(children) for(var/obj/item/organ/external/child in children) - if(child.germ_level < germ_level && !(child.status & ORGAN_ROBOT)) + if(child.germ_level < germ_level && !child.is_robotic()) if(child.germ_level < INFECTION_LEVEL_ONE*2 || prob(30)) child.germ_level++ if(parent) - if(parent.germ_level < germ_level && !(parent.status & ORGAN_ROBOT)) + if(parent.germ_level < germ_level && !parent.is_robotic()) if(parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30)) parent.germ_level++ @@ -398,14 +396,14 @@ Note that amputating the affected organ does in fact remove the infection from t //Updates brute_damn and burn_damn from wound damages. Updates BLEEDING status. /obj/item/organ/external/proc/check_fracture() - if(config.bones_can_break && brute_dam > min_broken_damage && !(status & ORGAN_ROBOT)) + if(config.bones_can_break && brute_dam > min_broken_damage && !is_robotic()) fracture() /obj/item/organ/external/proc/check_for_internal_bleeding(damage) if(NO_BLOOD in owner.species.species_traits) return var/local_damage = brute_dam + damage - if(damage > 15 && local_damage > 30 && prob(damage) && !(status & ORGAN_ROBOT)) + if(damage > 15 && local_damage > 30 && prob(damage) && !is_robotic()) internal_bleeding = TRUE owner.custom_pain("You feel something rip in your [name]!") @@ -462,20 +460,20 @@ Note that amputating the affected organ does in fact remove the infection from t switch(disintegrate) if(DROPLIMB_SHARP) if(!clean) - var/gore_sound = "[(status & ORGAN_ROBOT) ? "tortured metal" : "ripping tendons and flesh"]" + var/gore_sound = "[is_robotic() ? "tortured metal" : "ripping tendons and flesh"]" owner.visible_message( "\The [owner]'s [src.name] flies off in an arc!",\ "Your [src.name] goes flying off!",\ "You hear a terrible sound of [gore_sound].") if(DROPLIMB_BURN) - var/gore = "[(status & ORGAN_ROBOT) ? "": " of burning flesh"]" + var/gore = "[is_robotic() ? "" : " of burning flesh"]" owner.visible_message( "\The [owner]'s [src.name] flashes away into ashes!",\ "Your [src.name] flashes away into ashes!",\ "You hear a crackling sound[gore].") if(DROPLIMB_BLUNT) - var/gore = "[(status & ORGAN_ROBOT) ? "": " in shower of gore"]" - var/gore_sound = "[(status & ORGAN_ROBOT) ? "rending sound of tortured metal" : "sickening splatter of gore"]" + var/gore = "[is_robotic() ? "": " in shower of gore"]" + var/gore_sound = "[is_robotic() ? "rending sound of tortured metal" : "sickening splatter of gore"]" owner.visible_message( "\The [owner]'s [src.name] explodes[gore]!",\ "Your [src.name] explodes[gore]!",\ @@ -573,7 +571,7 @@ Note that amputating the affected organ does in fact remove the infection from t //empties the bodypart from its organs and other things inside it /obj/item/organ/external/proc/drop_organs(mob/user) var/turf/T = get_turf(src) - if(status != ORGAN_ROBOT) + if(!is_robotic()) playsound(T, 'sound/effects/splat.ogg', 25, 1) for(var/obj/item/I in src) I.forceMove(T) @@ -598,7 +596,7 @@ Note that amputating the affected organ does in fact remove the infection from t holder.unEquip(holder.legcuffed) /obj/item/organ/external/proc/fracture() - if(status & ORGAN_ROBOT) + if(is_robotic()) return //ORGAN_BROKEN doesn't have the same meaning for robot limbs if((status & ORGAN_BROKEN) || cannot_break) @@ -620,7 +618,7 @@ Note that amputating the affected organ does in fact remove the infection from t release_restraints() /obj/item/organ/external/proc/mend_fracture() - if(status & ORGAN_ROBOT) + if(is_robotic()) return 0 //ORGAN_BROKEN doesn't have the same meaning for robot limbs if(brute_dam > min_broken_damage) return 0 //will just immediately fracture again @@ -679,12 +677,12 @@ Note that amputating the affected organ does in fact remove the infection from t return FALSE /obj/item/organ/external/proc/is_usable() - if(((status & ORGAN_ROBOT) && get_damage() >= max_damage) && !tough) //robot limbs just become inoperable at max damage + if((is_robotic() && get_damage() >= max_damage) && !tough) //robot limbs just become inoperable at max damage return return !(status & (ORGAN_MUTATED|ORGAN_DEAD)) /obj/item/organ/external/proc/is_malfunctioning() - return ((status & ORGAN_ROBOT) && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam) && !tough) + return (is_robotic() && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam) && !tough) /obj/item/organ/external/remove(var/mob/living/user, var/ignore_children) @@ -766,7 +764,7 @@ Note that amputating the affected organ does in fact remove the infection from t /obj/item/organ/external/serialize() var/list/data = ..() - if(robotic == 2) + if(is_robotic()) data["company"] = model // If we wanted to store wound information, here is where it would go return data diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm index e1be25758b5..d1c1070b19d 100644 --- a/code/modules/surgery/organs/organ_icon.dm +++ b/code/modules/surgery/organs/organ_icon.dm @@ -25,7 +25,7 @@ var/global/list/limb_icon_cache = list() deform = new_deform ? new_deform : deform /obj/item/organ/external/proc/sync_colour_to_human(var/mob/living/carbon/human/H) - if(status & ORGAN_ROBOT && !(species && species.name == "Machine")) //machine people get skin color + if(is_robotic() && !(species && species.name == "Machine")) //machine people get skin color return if(species && H.species && species.name != H.species.name) return @@ -44,7 +44,7 @@ var/global/list/limb_icon_cache = list() change_organ_icobase(C.icobase, C.deform) /obj/item/organ/external/proc/sync_colour_to_dna() - if(status & ORGAN_ROBOT) + if(is_robotic()) return if(!isnull(dna.GetUIValue(DNA_UI_SKIN_TONE)) && ((species.bodyflags & HAS_SKIN_TONE) || (species.bodyflags & HAS_ICON_SKIN_TONE))) s_col = null @@ -76,7 +76,7 @@ var/global/list/limb_icon_cache = list() var/icon_file = new_icons[1] var/new_icon_state = new_icons[2] mob_icon = new /icon(icon_file, new_icon_state) - if(!skeletal && !(status & ORGAN_ROBOT)) + if(!skeletal && !is_robotic()) if(status & ORGAN_DEAD) mob_icon.ColorTone(rgb(10,50,0)) mob_icon.SetIntensity(0.7) @@ -172,7 +172,7 @@ var/global/list/limb_icon_cache = list() if(skeletal) icon_file = 'icons/mob/human_races/r_skeleton.dmi' - else if(status & ORGAN_ROBOT) + else if(is_robotic()) icon_file = 'icons/mob/human_races/robotic.dmi' else if(status & ORGAN_MUTATED) @@ -184,7 +184,7 @@ var/global/list/limb_icon_cache = list() /obj/item/organ/external/chest/get_icon_state(skeletal) var/result = ..() - if(fat && !skeletal && !(status & ORGAN_ROBOT) && (CAN_BE_FAT in species.species_traits)) + if(fat && !skeletal && !is_robotic() && (CAN_BE_FAT in species.species_traits)) result[2] += "_fat" return result diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 42d2c98a66d..67e8febdd17 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -90,7 +90,7 @@ return /obj/item/organ/internal/proc/prepare_eat() - if(status == ORGAN_ROBOT) + if(is_robotic()) return //no eating cybernetic implants! var/obj/item/reagent_containers/food/snacks/organ/S = new S.name = name @@ -315,7 +315,7 @@ return eyes_icon /obj/item/organ/internal/eyes/proc/get_colourmatrix() //Returns a special colour matrix if the eyes are organic and the mob is colourblind, otherwise it uses the current one. - if(!robotic && owner.disabilities & COLOURBLIND) + if(!is_robotic() && owner.disabilities & COLOURBLIND) return colourblind_matrix else return colourmatrix @@ -355,8 +355,8 @@ owner.SetEyeBlurry(0) owner.SetEyeBlind(0) -/obj/item/organ/internal/robotize(var/icon_bypass) //If icon bypass isn't null, skip the processing here and go straight to the parent call. - if(!icon_bypass && !(status & ORGAN_ROBOT)) //Don't override the icons for the already-mechanical IPC organs. +/obj/item/organ/internal/robotize() //If icon bypass isn't null, skip the processing here and go straight to the parent call. + if(!is_robotic()) //Don't override the icons for the already-mechanical IPC organs. var/list/states = icon_states('icons/obj/surgery.dmi') //Insensitive to specially-defined icon files for species like the Drask or whomever else. Everyone gets the same robotic heart. if(slot == "heart" && ("[slot]-prosthetic-on" in states) && ("[slot]-prosthetic-off" in states)) //Give the robotic heart its robotic heart icons if they exist. var/obj/item/organ/internal/heart/H = src @@ -375,19 +375,7 @@ dark_view = 2 ..() //Make sure the organ's got the robotic status indicators before updating the client colour. if(owner) - owner.update_client_colour(0) //Since both mechassisted and mechanical eyes give dark_view of 2 and full colour vision atm, just having this here is fine as mechassist() will call it anyway. - -/obj/item/organ/internal/mechassist() - ..() //Go back, call robotize(), adjust the robotic status indicators and the organ damage parameters. - var/list/states = icon_states(icon) //Sensitive to specially-defined icon files since the organs are not fully synthetic. - if(slot == "heart" && ("[organ_tag]-assisted-on" in states) && ("[organ_tag]-assisted-off" in states)) //Give the mechassisted heart its mechassisted heart icons if they exist. - var/obj/item/organ/internal/heart/H = src - H.icon_base = "[organ_tag]-assisted" - H.dead_icon = "[organ_tag]-assisted-off" - H.update_icon() - else if("[organ_tag]-assisted" in states) //Give the mechassisted organ its mechassisted organ icons if they exist. - icon_state = "[organ_tag]-assisted" - name = "mechanically assisted [initial(name)]" //Avoid setting the organ's name to something like "mechanically assisted mechanical eyes". + owner.update_client_colour(0) //Since mechanical eyes give dark_view of 2 and full colour vision atm, just having this here is fine. /obj/item/organ/internal/liver name = "liver" diff --git a/code/modules/surgery/organs/subtypes/vox.dm b/code/modules/surgery/organs/subtypes/vox.dm index bb56c41030d..3b30b85f30c 100644 --- a/code/modules/surgery/organs/subtypes/vox.dm +++ b/code/modules/surgery/organs/subtypes/vox.dm @@ -9,7 +9,7 @@ parent_organ = "head" organ_tag = "stack" slot = "vox_stack" - robotic = 2 + status = ORGAN_ROBOT vital = 1 /obj/item/organ/internal/stack/vox diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 4c0094592e9..7fbfedf849f 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -32,7 +32,7 @@ if(!affected) // I'd like to see you do surgery on LITERALLY NOTHING return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 if(!affected.encased) //no bone, problem. return 0 @@ -43,7 +43,7 @@ var/mob/living/carbon/human/H = target var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - if(affected && (affected.status & ORGAN_ROBOT)) + if(affected && affected.is_robotic()) return 0//no operating on robotic limbs in an organic surgery if(!affected) // I'd like to see you do surgery on LITERALLY NOTHING @@ -208,12 +208,7 @@ for(var/obj/item/organ/internal/I in affected.internal_organs) if(I && I.damage) - if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste)) - if(!(I.sterile)) - spread_germs_to_organ(I, user, tool) - user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \ - "You start treating damage to [target]'s [I.name] with [tool_name]." ) - else if(I.robotic >= 2 && istype(tool, /obj/item/stack/nanopaste)) + if(I.is_robotic() && istype(tool, /obj/item/stack/nanopaste)) user.visible_message("[user] starts treating damage to [target]'s [I.name] with [tool_name].", \ "You start treating damage to [target]'s [I.name] with [tool_name]." ) @@ -246,11 +241,7 @@ if(I) I.surgeryize() if(I && I.damage) - if(I.robotic < 2 && !istype (tool, /obj/item/stack/nanopaste)) - user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \ - " You treat damage to [target]'s [I.name] with [tool_name]." ) - I.damage = 0 - else if(I.robotic >= 2 && istype (tool, /obj/item/stack/nanopaste)) + if(I.is_robotic() && istype(tool, /obj/item/stack/nanopaste)) user.visible_message(" [user] treats damage to [target]'s [I.name] with [tool_name].", \ " You treat damage to [target]'s [I.name] with [tool_name]." ) I.damage = 0 diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 455a6a8de04..467f1e64a00 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -24,7 +24,7 @@ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 return 0 @@ -260,7 +260,7 @@ if(!B) // No brain to remove the tumor from return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 if(!(B in affected.internal_organs)) return 0 @@ -276,7 +276,7 @@ if(!B) // No brain to remove the tumor from return 0 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 if(!(B in affected.internal_organs)) return 0 diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 4d14d2e8a79..a0e4c2a3976 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -9,7 +9,7 @@ var/obj/item/organ/external/head/head = H.get_organ(user.zone_sel.selecting) if(!head) return FALSE - if(head.status & ORGAN_ROBOT) + if(head.is_robotic()) return FALSE return TRUE diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 56162dcabc8..3dde9ce1a09 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -13,7 +13,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(affected.status & ORGAN_ROBOT) + if(affected.is_robotic()) return 0 return 1 @@ -23,7 +23,7 @@ var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 return 1 diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index ed82328c47d..0fc8b2852cc 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -28,7 +28,7 @@ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 return 1 @@ -38,7 +38,7 @@ var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) if(!affected) return 0 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 if(affected.cannot_amputate) return 0 @@ -64,7 +64,7 @@ if(!..()) return 0 var/obj/item/organ/external/affected = target.get_organ(target_zone) - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) return 0 return 1 @@ -305,7 +305,7 @@ current_type = "insert" var/obj/item/organ/internal/I = tool - if(I.status != ORGAN_ROBOT || I.robotic != 2) + if(!I.is_robotic()) to_chat(user, "You can only implant cybernetic organs.") if(target_zone != I.parent_organ || target.get_organ_slot(I.slot)) @@ -343,7 +343,7 @@ to_chat(user, "That brain is not usable.") return -1 - if(!(affected.status & ORGAN_ROBOT)) + if(!affected.is_robotic()) to_chat(user, "You cannot install a computer brain into a meat enclosure.") return -1 @@ -365,7 +365,7 @@ else if(implement_type in implements_extract) current_type = "extract" var/list/organs = target.get_organs_zone(target_zone) - if(!(affected && (affected.status & ORGAN_ROBOT))) + if(!(affected && affected.is_robotic())) return -1 if(!organs.len) to_chat(user, "There is no removeable organs in [target]'s [parse_zone(target_zone)]!") @@ -395,7 +395,7 @@ var/found_damaged_organ = FALSE for(var/obj/item/organ/internal/I in affected.internal_organs) - if(I && I.damage && I.robotic >= 2) + if(I && I.damage && I.is_robotic()) user.visible_message("[user] starts mending the damage to [target]'s [I.name]'s mechanisms.", \ "You start mending the damage to [target]'s [I.name]'s mechanisms.") found_damaged_organ = TRUE @@ -421,7 +421,7 @@ return for(var/obj/item/organ/internal/I in affected.internal_organs) if(I && I.damage) - if(I.robotic >= 2) + if(I.is_robotic()) user.visible_message(" [user] repairs [target]'s [I.name] with [tool].", \ " You repair [target]'s [I.name] with [tool]." ) I.damage = 0 diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 56da8f031e3..0c7aadc36c5 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -187,7 +187,7 @@ return null /proc/spread_germs_to_organ(obj/item/organ/E, mob/living/carbon/human/user, obj/item/tool) - if(!istype(user) || !istype(E) || !(E.status & ORGAN_ROBOT) || E.sterile) + if(!istype(user) || !istype(E) || E.is_robotic() || E.sterile) return var/germ_level = user.germ_level @@ -220,7 +220,7 @@ if(E.internal_organs.len) germs = germs / (E.internal_organs.len + 1) // +1 for the external limb this eventually applies to; let's not multiply germs now. for(var/obj/item/organ/internal/O in E.internal_organs) - if(!(O.status & ORGAN_ROBOT)) + if(!O.is_robotic()) O.germ_level += germs E.germ_level += germs diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index a47c56cba87028431da263ce5d2e857580c2db73..09619058db23101da5cb10570f1cbc7b998ad27c 100644 GIT binary patch literal 37127 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