From 25c85d6e2ab113dcf31979285263d086a7bb51d4 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. --- code/game/objects/items/weapons/tools.dm | 27 +++++++++++++++++++++-- code/modules/power/cable.dm | 28 ++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index ad7ec85f148..5f93605169a 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -449,11 +449,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) @@ -464,7 +468,26 @@ 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 7456e549155..e1eba818f13 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -638,11 +638,14 @@ obj/structure/cable/proc/cableColor(var/colorC) /obj/item/weapon/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 && use(1)) S.heal_damage(0,15,0,1) + if(user != M) user.visible_message("\The [user] repairs some burn damage on [M]'s [S.display_name] with \the [src]",\ "\The [user] repairs some burn damage on your [S.display_name]",\ @@ -651,7 +654,28 @@ obj/structure/cable/proc/cableColor(var/colorC) user.visible_message("\The [user] repairs some burn damage on their [S.display_name] with \the [src]",\ "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 ..()