From 75d8633fbea4d54bf235c47fff6f370219172dfb Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 3 May 2014 21:10:26 +0930 Subject: [PATCH] Adding some repair procs to cables and welders for IPC use. Conflicts: code/modules/power/cable.dm --- code/game/objects/items/weapons/tools.dm | 27 +++++++++++++++++++-- code/modules/power/cable.dm | 30 +++++++++++++++++++++--- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index fcb457ca24a..738c35cbaf5 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -456,11 +456,15 @@ item_state = "crowbar_red" /obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob) + if(hasorgans(M)) + var/datum/organ/external/S = M:organs_by_name[user.zone_sel.selecting] + if (!S) return if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help") return ..() + if(S.brute_dam) S.heal_damage(15,0,0,1) if(user != M) @@ -471,8 +475,27 @@ user.visible_message("\red \The [user] patches some dents on their [S.display_name] with \the [src]",\ "\red You patch some dents on your [S.display_name]",\ "You hear a welder.") - else - user << "Nothing to fix!" + return + + if(istype(M,/mob/living/carbon/human)) + + var/mob/living/carbon/human/H = M + + if(H.species.flags & IS_SYNTHETIC) + + if(H.getFireLoss() > 0) + + if(M == user) + user << "\red You can't repair damage to your own body - it's against OH&S." + return + + user.visible_message("\red \The [user] patches some dents on \the [M] with \the [src]",\ + "\red \The [user] patches some of your dents.",\ + "You hear a welder.") + H.heal_organ_damage(5,0) + return + + user << "Nothing to fix!" else return ..() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e30dab34734..a2bacaaace8 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -615,11 +615,14 @@ obj/structure/cable/proc/cableColor(var/colorC) /obj/item/stack/cable_coil/attack(mob/M as mob, mob/user as mob) if(hasorgans(M)) + var/datum/organ/external/S = M:get_organ(user.zone_sel.selecting) if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help") return ..() - if(S.burn_dam > 0 && src.use(1)) + + if(S.burn_dam > 0 && use(1)) S.heal_damage(0,15,0,1) + if(user != M) user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\ "\red You repair some burn damage on your [S.display_name]",\ @@ -628,7 +631,28 @@ obj/structure/cable/proc/cableColor(var/colorC) user.visible_message("\red \The [user] repairs some burn damage on their [S.display_name] with \the [src]",\ "\red You repair some burn damage on your [S.display_name]",\ "You hear wires being cut.") - else - user << "Nothing to fix!" + + return + + if(istype(M,/mob/living/carbon/human)) + + var/mob/living/carbon/human/H = M + + if(H.species.flags & IS_SYNTHETIC) + + if(H.getFireLoss() > 0) + + if(M == user) + user << "\red You can't repair damage to your own body - it's against OH&S." + return + + user.visible_message("\The [user] repairs some burn damage on [M] with \the [src]",\ + "\The [user] repairs some of your burn damage.",\ + "You hear wires being cut.") + H.heal_organ_damage(0,5) + return + + user << "Nothing to fix!" + else return ..()