diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 8f0ed6d452..5510bae9ce 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -159,14 +159,13 @@ /obj/item/device/kit/paint/gygax/recitence ) name = "Random Gygax exosuit modkit" -/* + /datum/supply_packs/robotics/jumper_cables name = "Jumper kit crate" contains = list( - /obj/item/device/defib_kit/jumper_kit = 4 + /obj/item/device/defib_kit/jumper_kit = 2 ) cost = 30 containertype = /obj/structure/closet/crate/secure/science containername = "Jumper kit crate" access = access_robotics -*/ \ No newline at end of file diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index e7beded00a..20c516bbad 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -210,6 +210,7 @@ var/chargetime = (2 SECONDS) var/chargecost = 1000 //units of charge var/burn_damage_amt = 5 + var/use_on_synthetic = 0 //If 1, this is only useful on FBPs, if 0, this is only useful on fleshies var/wielded = 0 var/cooldown = 0 @@ -260,8 +261,12 @@ //Checks for various conditions to see if the mob is revivable /obj/item/weapon/shockpaddles/proc/can_defib(mob/living/carbon/human/H) //This is checked before doing the defib operation - if((H.species.flags & NO_SCAN) || H.isSynthetic()) + if((H.species.flags & NO_SCAN)) return "buzzes, \"Unrecogized physiology. Operation aborted.\"" + else if(H.isSynthetic() && !use_on_synthetic) + return "buzzes, \"Synthetic Body. Operation aborted.\"" + else if(!H.isSynthetic() && use_on_synthetic) + return "buzzes, \"Organic Body. Operation aborted.\"" if(H.stat != DEAD) return "buzzes, \"Patient is not in a valid state. Operation aborted.\"" @@ -274,7 +279,7 @@ /obj/item/weapon/shockpaddles/proc/can_revive(mob/living/carbon/human/H) //This is checked right before attempting to revive var/deadtime = world.time - H.timeofdeath - if (deadtime > DEFIB_TIME_LIMIT) + if (deadtime > DEFIB_TIME_LIMIT && !H.isSynthetic()) return "buzzes, \"Resuscitation failed - Excessive neural degeneration. Further attempts futile.\"" H.updatehealth() @@ -624,8 +629,29 @@ chargetime = (1 SECONDS) */ -//Stub +//FBP Defibs /obj/item/device/defib_kit/jumper_kit + name = "jumper cable kit" + desc = "A device that delivers powerful shocks to detachable jumper cables that are capable of reviving full body prosthetics." + icon_state = "jumperunit" + item_state = "jumperunit" + paddles = /obj/item/weapon/shockpaddles/linked/jumper + +/obj/item/device/defib_kit/jumper_kit/loaded + bcell = /obj/item/weapon/cell/high + +/obj/item/weapon/shockpaddles/linked/jumper + name = "jumper cables" + icon_state = "jumperpaddles" + item_state = "jumperpaddles" + use_on_synthetic = 1 + +/obj/item/weapon/shockpaddles/robot/jumper + name = "jumper cables" + desc = "A pair of advanced shockpaddles powered by a robot's internal power cell, able to penetrate thick clothing." + icon_state = "jumperpaddles0" + item_state = "jumperpaddles0" + use_on_synthetic = 1 #undef DEFIB_TIME_LIMIT #undef DEFIB_TIME_LOSS diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 08ce9203ad..2e83513972 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -221,6 +221,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/surgical/circular_saw(src) src.modules += new /obj/item/weapon/surgical/surgicaldrill(src) src.modules += new /obj/item/weapon/gripper/no_use/organ(src) + src.modules += new /obj/item/weapon/shockpaddles/robot(src) src.emag = new /obj/item/weapon/reagent_containers/spray(src) src.emag.reagents.add_reagent("pacid", 250) src.emag.name = "Polyacid spray" @@ -276,6 +277,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/reagent_containers/syringe(src) src.modules += new /obj/item/weapon/gripper/no_use/organ(src) src.modules += new /obj/item/weapon/gripper/chemistry(src) + src.modules += new /obj/item/weapon/shockpaddles/robot(src) src.emag = new /obj/item/weapon/reagent_containers/spray(src) src.emag.reagents.add_reagent("pacid", 250) src.emag.name = "Polyacid spray" @@ -707,6 +709,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/reagent_containers/syringe(src) src.modules += new /obj/item/weapon/reagent_containers/glass/beaker/large(src) src.modules += new /obj/item/weapon/storage/part_replacer(src) + src.modules += new /obj/item/weapon/shockpaddles/robot/jumper(src) src.emag = new /obj/item/weapon/hand_tele(src) var/datum/matter_synth/nanite = new /datum/matter_synth/nanite(10000) diff --git a/icons/obj/defibrillator.dmi b/icons/obj/defibrillator.dmi index 7be0d18d00..8bd6306047 100644 Binary files a/icons/obj/defibrillator.dmi and b/icons/obj/defibrillator.dmi differ