diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index d5a6181f146..e59c8efe63e 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -17,7 +17,6 @@ volume = 250 possible_transfer_amounts = null - /obj/item/reagent_containers/spray/afterattack(atom/A, mob/user) if(istype(A, /obj/item/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ || istype(A, /obj/item/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics)) @@ -113,6 +112,19 @@ desc = "BLAM!-brand non-foaming space cleaner!" list_reagents = list("cleaner" = 250) +/obj/item/reagent_containers/spray/cleaner/safety + desc = "BLAM!-brand non-foaming space cleaner! This spray bottle can only accept space cleaner." + +/obj/item/reagent_containers/spray/cleaner/safety/on_reagent_change() + for(var/filth in reagents.reagent_list) + var/datum/reagent/R = filth + if(R.id != "cleaner") //all chems other than space cleaner are filthy. + reagents.del_reagent(R.id) + if(ismob(loc)) + to_chat(loc, "[src] identifies and removes a filthy substance.") + else + visible_message("[src] identifies and removes a filthy substance.") + /obj/item/reagent_containers/spray/cleaner/drone name = "space cleaner" desc = "BLAM!-brand non-foaming space cleaner!" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 3dabea7dc6b..32a570a9964 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -323,6 +323,39 @@ build_path = /obj/item/organ/internal/cyberimp/arm/toolset category = list("Medical") +/datum/design/cyberimp_janitorial + name = "Janitorial Toolset Implant" + desc = "A set of janitorial tools hidden behind a concealed panel on the user's arm." + id = "ci-janitorial" + req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/internal/cyberimp/arm/janitorial + category = list("Medical") + +/datum/design/cyberimp_botanical + name = "Botanical Toolset Implant" + desc = "A set of botanical tools hidden behind a concealed panel on the user's arm." + id = "ci-botanical" + req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500) + construction_time = 200 + build_path = /obj/item/organ/internal/cyberimp/arm/botanical + category = list("Medical") + +/datum/design/cyberimp_hacking + name = "Hacking Arm Implant" + desc = "A small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think." + id = "ci-hacking" + req_tech = list("materials" = 3, "engineering" = 5, "biotech" = 4, "programming" = 4, "abductor" = 4) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000) + construction_time = 200 + build_path = /obj/item/organ/internal/cyberimp/arm/hacking + category = list("Medical") + /datum/design/cyberimp_diagnostic_hud name = "Diagnostic HUD implant" desc = "These cybernetic eye implants will display a diagnostic HUD over everything you see. Wiggle eyes to control." @@ -402,7 +435,7 @@ /datum/design/cyberimp_antistun name = "CNS Rebooter implant" - desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." + desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned. Incompatible with the Neural Jumpstarter." id = "ci-antistun" req_tech = list("materials" = 6, "programming" = 5, "biotech" = 6) build_type = PROTOLATHE | MECHFAB @@ -411,6 +444,17 @@ build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun category = list("Medical") +/datum/design/cyberimp_antisleep + name = "Neural Jumperstarter implant" + desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious. Has a short cooldown, incompatible with the CNS Rebooter." + id = "ci-antisleep" + req_tech = list("materials" = 6, "programming" = 5, "biotech" = 6) + build_type = PROTOLATHE | MECHFAB + construction_time = 60 + materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000) + build_path = /obj/item/organ/internal/cyberimp/brain/anti_sleep + category = list("Medical") + /datum/design/cyberimp_clownvoice name = "Comical implant" desc = "Uh oh." diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 08553c47188..1bb9f42955b 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -212,6 +212,17 @@ return TRUE return FALSE +/obj/item/organ/internal/cyberimp/arm/hacking + name = "hacking arm implant" + desc = "A small arm implant containing an advanced screwdriver, wirecutters, and multitool designed for engineers and on-the-field machine modification. Actually legal, despite what the name may make you think." + origin_tech = "materials=3;engineering=4;biotech=3;powerstorage=4;abductor=3" + contents = newlist(/obj/item/screwdriver/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/abductor) + action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/device.dmi') + action_icon_state = list(/datum/action/item_action/organ_action/toggle = "hacktool") + +/obj/item/organ/internal/cyberimp/arm/hacking/l + parent_organ = "l_arm" + /obj/item/organ/internal/cyberimp/arm/esword name = "arm-mounted energy blade" desc = "An illegal, and highly dangerous cybernetic implant that can project a deadly blade of concentrated enregy." @@ -278,6 +289,30 @@ parent_organ = "l_arm" slot = "l_arm_device" +/obj/item/organ/internal/cyberimp/arm/janitorial + name = "janitorial toolset implant" + desc = "A set of janitorial tools hidden behind a concealed panel on the user's arm" + contents = newlist(/obj/item/mop/advanced, /obj/item/soap, /obj/item/lightreplacer, /obj/item/holosign_creator, /obj/item/melee/flyswatter, /obj/item/reagent_containers/spray/cleaner/safety) + origin_tech = "materials=3;engineering=4;biotech=3" + action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi') + action_icon_state = list(/datum/action/item_action/organ_action/toggle = "janibelt") + +/obj/item/organ/internal/cyberimp/arm/janitorial/l + parent_organ = "l_arm" + slot = "l_arm_device" + +/obj/item/organ/internal/cyberimp/arm/botanical + name = "botanical toolset implant" + desc = "A set of botanical tools hidden behind a concealed panel on the user's arm" + contents = newlist(/obj/item/plant_analyzer, /obj/item/cultivator, /obj/item/hatchet, /obj/item/shovel/spade, /obj/item/wirecutters, /obj/item/wrench) + origin_tech = "materials=3;engineering=4;biotech=3" + action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/clothing/belts.dmi') + action_icon_state = list(/datum/action/item_action/organ_action/toggle = "botanybelt") + +/obj/item/organ/internal/cyberimp/arm/botanical/l + parent_organ = "l_arm" + slot = "l_arm_device" + // lets make IPCs even *more* vulnerable to EMPs! /obj/item/organ/internal/cyberimp/arm/power_cord name = "APC-compatible power adapter implant" diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 8e007f60f89..e4fad849d4b 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -122,7 +122,7 @@ /obj/item/organ/internal/cyberimp/brain/anti_stun name = "CNS Rebooter implant" - desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." + desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned. Incompatible with the Neural Jumpstarter." implant_color = "#FFFF00" slot = "brain_antistun" origin_tech = "materials=5;programming=4;biotech=5" @@ -161,6 +161,54 @@ origin_tech = "materials=6;programming=5;biotech=5" emp_proof = TRUE +/obj/item/organ/internal/cyberimp/brain/anti_sleep + name = "Nerual Jumpstarter implant" + desc = "This implant will automatically attempt to jolt you awake when it detects you have fallen unconscious. Has a short cooldown, incompatible with the CNS Rebooter." + implant_color = "#0356fc" + slot = "brain_antistun" //one or the other not both. + origin_tech = "materials=5;programming=4;biotech=5" + var/cooldown = FALSE + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/on_life() + ..() + if(crit_fail) + return + if(owner.stat == UNCONSCIOUS && cooldown == FALSE) + owner.AdjustSleeping(-100, FALSE) + owner.AdjustParalysis(-100, FALSE) + to_chat(owner, "You feel a rush of energy course through your body!") + cooldown = TRUE + addtimer(CALLBACK(src, .proc/sleepy_timer_end), 50) + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/sleepy_timer_end() + cooldown = FALSE + to_chat(owner, "You hear a small beep in your head as your Neural Jumpstarter finishes recharging.") + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/emp_act(severity) + . = ..() + if(crit_fail || emp_proof) + return + crit_fail = TRUE + owner.AdjustSleeping(200) + cooldown = TRUE + addtimer(CALLBACK(src, .proc/reboot), 90 / severity) + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/proc/reboot() + crit_fail = FALSE + cooldown = FALSE + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened + name = "Hardened Neural Jumpstarter implant" + desc = "A military-grade version of the standard implant, for NT's more elite forces." + origin_tech = "materials=6;programming=5;biotech=5" + emp_proof = TRUE + +/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible + name = "Hardened Neural Jumpstarter implant" + desc = "A military-grade version of the standard implant, for NT's more elite forces. This one is compatible with the CNS Rebooter implant" + slot = "brain_antisleep" + emp_proof = TRUE + /obj/item/organ/internal/cyberimp/brain/clown_voice name = "Comical implant" desc = "Uh oh."