From f09584e99a03bb42f5bc1fe4a331f3c6ba82bd3c Mon Sep 17 00:00:00 2001 From: Markolie Date: Sun, 9 Aug 2015 19:36:39 +0200 Subject: [PATCH] Fix amputees picking up items, make sure viruses don't affect robotic limbs --- code/game/objects/items.dm | 5 ++++- code/modules/virus2/effect.dm | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index ab0454b9c61..e14f8ef4406 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -138,8 +138,11 @@ var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] if (user.hand) temp = H.organs_by_name["l_hand"] + if(!temp) + user << "You try to use your hand, but it's missing!" + return 0 if(temp && !temp.is_usable()) - user << "You try to move your [temp.name], but cannot!" + user << "You try to move your [temp.name], but cannot!" return 0 if (istype(src.loc, /obj/item/weapon/storage)) diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 5cb0986fb88..242200d0c8d 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -218,7 +218,7 @@ var/mob/living/carbon/human/H = mob var/organ = pick(list("r_arm","l_arm","r_leg","r_leg")) var/obj/item/organ/external/E = H.organs_by_name[organ] - if (!(E.status & ORGAN_DEAD)) + if (!(E.status & ORGAN_DEAD) && !(E.status & ORGAN_ROBOT)) E.status |= ORGAN_DEAD H << "You can't feel your [E.name] anymore..." for (var/obj/item/organ/external/C in E.children) @@ -233,9 +233,10 @@ if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob for (var/obj/item/organ/external/E in H.organs) - E.status &= ~ORGAN_DEAD - for (var/obj/item/organ/external/C in E.children) - C.status &= ~ORGAN_DEAD + if(!(E.status & ORGAN_ROBOT)) + E.status &= ~ORGAN_DEAD + for (var/obj/item/organ/external/C in E.children) + C.status &= ~ORGAN_DEAD /datum/disease2/effect/immortal @@ -245,7 +246,7 @@ if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob for (var/obj/item/organ/external/E in H.organs) - if (E.status & ORGAN_BROKEN && prob(30)) + if (E.status & ORGAN_BROKEN && prob(30) && !(E.status & ORGAN_ROBOT)) E.status ^= ORGAN_BROKEN var/heal_amt = -5*multiplier mob.apply_damages(heal_amt,heal_amt,heal_amt,heal_amt) @@ -324,14 +325,14 @@ if(2) if(ishuman(mob)) for (var/obj/item/organ/external/E in H.organs) - if(pick(1,0)) + if(pick(1,0) && !(E.status & ORGAN_ROBOT)) E.droplimb(0,DROPLIMB_BLUNT) if(3) if(ishuman(mob)) if(H.species.name != "Skellington") mob << " Your necrotic skin ruptures!" for (var/obj/item/organ/external/E in H.organs) - if(pick(1,0)) + if(pick(1,0) && !(E.status & ORGAN_ROBOT)) E.createwound(CUT, pick(2,4)) if(prob(30)) if(H.species.name != "Skellington") @@ -453,13 +454,15 @@ if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob for (var/obj/item/organ/external/E in H.organs) - E.min_broken_damage = max(5, E.min_broken_damage - 30) + if(!(E.status & ORGAN_ROBOT)) + E.min_broken_damage = max(5, E.min_broken_damage - 30) deactivate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob, /mob/living/carbon/human)) var/mob/living/carbon/human/H = mob for (var/obj/item/organ/external/E in H.organs) - E.min_broken_damage = initial(E.min_broken_damage) + if(!(E.status & ORGAN_ROBOT)) + E.min_broken_damage = initial(E.min_broken_damage) /datum/disease2/effect/shakey name = "World Shaking Syndrome"