From b8b2f988acbb50ec0ebdb1633492d3e0e3fba437 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 18 Oct 2021 00:16:26 +0200 Subject: [PATCH] [MIRROR] Brings recycling results of advanced tools up to their printing costs [MDB IGNORE] (#8896) * Brings recycling results of advanced tools up to their printing costs (#62092) Advanced tools have either been using their parent basic tools' custom_materials or their custom_materials were lowered for what I presume was destructive experimentor work. This counts for recycling these items in an autolathe as well. In the first case, alien tools were made out of the same material amount as their basic counterparts, and in the second case - the recycling results were heavily lowered. Also kills off some single-letter vars since I'm here. * Brings recycling results of advanced tools up to their printing costs Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com> --- code/game/objects/items/devices/multitool.dm | 19 ++--- code/game/objects/items/tools/crowbar.dm | 29 +++---- code/game/objects/items/tools/screwdriver.dm | 3 +- code/game/objects/items/tools/weldingtool.dm | 85 ++++++++++---------- code/game/objects/items/tools/wirecutters.dm | 19 ++--- code/game/objects/items/tools/wrench.dm | 5 +- code/modules/surgery/tools.dm | 33 ++++---- 7 files changed, 101 insertions(+), 92 deletions(-) diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index ffe9b42afb2..fae13782f39 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -105,20 +105,20 @@ /obj/item/multitool/ai_detect/proc/show_hud(mob/user) if(user && hud_type) - var/atom/movable/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"] - PM.alpha = 64 - var/datum/atom_hud/H = GLOB.huds[hud_type] - if(!H.hudusers[user]) - H.add_hud_to(user) + var/atom/movable/screen/plane_master/camera_static/ai_detect_plane = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"] + ai_detect_plane.alpha = 64 + var/datum/atom_hud/hud = GLOB.huds[hud_type] + if(!hud.hudusers[user]) + hud.add_hud_to(user) eye.eye_user = user eye.setLoc(get_turf(src)) /obj/item/multitool/ai_detect/proc/remove_hud(mob/user) if(user && hud_type) - var/atom/movable/screen/plane_master/camera_static/PM = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"] - PM.alpha = 255 - var/datum/atom_hud/H = GLOB.huds[hud_type] - H.remove_hud_from(user) + var/atom/movable/screen/plane_master/camera_static/ai_detect_plane = user.hud_used.plane_masters["[CAMERA_STATIC_PLANE]"] + ai_detect_plane.alpha = 255 + var/datum/atom_hud/hud = GLOB.huds[hud_type] + hud.remove_hud_from(user) if(eye) eye.setLoc(null) eye.eye_user = null @@ -169,6 +169,7 @@ desc = "An omni-technological interface." icon = 'icons/obj/abductor.dmi' icon_state = "multitool" + custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) toolspeed = 0.1 /obj/item/multitool/cyborg//SKYRAT EDIT - ICON OVERRIDEN BY AESTHETICS - SEE MODULE diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 56908ebd0d7..0e9dc0b3e57 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -36,6 +36,7 @@ desc = "A hard-light crowbar. It appears to pry by itself, without any effort required." icon = 'icons/obj/abductor.dmi' usesound = 'sound/weapons/sonic_jackhammer.ogg' + custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) icon_state = "crowbar" toolspeed = 0.1 @@ -67,7 +68,7 @@ worn_icon_state = "jawsoflife" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) + custom_materials = list(/datum/material/iron = 4500, /datum/material/silver = 2500, /datum/material/titanium = 3500) usesound = 'sound/items/jaws_pry.ogg' force = 15 toolspeed = 0.7 @@ -115,23 +116,23 @@ user.visible_message(span_suicide("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!")) playsound(loc, 'sound/items/jaws_cut.ogg', 50, TRUE, -1) if(iscarbon(user)) - var/mob/living/carbon/C = user - var/obj/item/bodypart/BP = C.get_bodypart(BODY_ZONE_HEAD) - if(BP) - BP.drop_limb() + var/mob/living/carbon/suicide_victim = user + var/obj/item/bodypart/target_bodypart = suicide_victim.get_bodypart(BODY_ZONE_HEAD) + if(target_bodypart) + target_bodypart.drop_limb() playsound(loc, "desecration", 50, TRUE, -1) return (BRUTELOSS) -/obj/item/crowbar/power/attack(mob/living/carbon/C, mob/user) - if(istype(C) && C.handcuffed && tool_behaviour == TOOL_WIRECUTTER) - user.visible_message(span_notice("[user] cuts [C]'s restraints with [src]!")) - qdel(C.handcuffed) +/obj/item/crowbar/power/attack(mob/living/carbon/attacked_carbon, mob/user) + if(istype(attacked_carbon) && attacked_carbon.handcuffed && tool_behaviour == TOOL_WIRECUTTER) + user.visible_message(span_notice("[user] cuts [attacked_carbon]'s restraints with [src]!")) + qdel(attacked_carbon.handcuffed) return - else if(istype(C) && C.has_status_effect(STATUS_EFFECT_CHOKINGSTRAND) && tool_behaviour == TOOL_WIRECUTTER) - user.visible_message(span_notice("[user] attempts to cut the durathread strand from around [C]'s neck.")) - if(do_after(user, 1.5 SECONDS, C)) - user.visible_message(span_notice("[user] succesfully cuts the durathread strand from around [C]'s neck.")) - C.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) + else if(istype(attacked_carbon) && attacked_carbon.has_status_effect(STATUS_EFFECT_CHOKINGSTRAND) && tool_behaviour == TOOL_WIRECUTTER) + user.visible_message(span_notice("[user] attempts to cut the durathread strand from around [attacked_carbon]'s neck.")) + if(do_after(user, 1.5 SECONDS, attacked_carbon)) + user.visible_message(span_notice("[user] succesfully cuts the durathread strand from around [attacked_carbon]'s neck.")) + attacked_carbon.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) playsound(loc, usesound, 50, TRUE, -1) return else diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 230b1232179..b9affa866e7 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -60,6 +60,7 @@ icon = 'icons/obj/abductor.dmi' icon_state = "screwdriver_a" inhand_icon_state = "screwdriver_nuke" + custom_materials = list(/datum/material/iron=5000, /datum/material/silver=2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) usesound = 'sound/items/pshoom.ogg' toolspeed = 0.1 random_color = FALSE @@ -78,7 +79,7 @@ worn_icon_state = "drill" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - custom_materials = list(/datum/material/iron=150,/datum/material/silver=50,/datum/material/titanium=25) //done for balance reasons, making them high value for research, but harder to get + custom_materials = list(/datum/material/iron=3500, /datum/material/silver=1500, /datum/material/titanium=2500) //what research value? force = 8 //might or might not be too high, subject to change w_class = WEIGHT_CLASS_SMALL throwforce = 8 diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index a8a3b1c6314..8a66dbe2081 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -101,11 +101,11 @@ return (FIRELOSS) -/obj/item/weldingtool/attackby(obj/item/I, mob/user, params) - if(I.tool_behaviour == TOOL_SCREWDRIVER) - flamethrower_screwdriver(I, user) - else if(istype(I, /obj/item/stack/rods)) - flamethrower_rods(I, user) +/obj/item/weldingtool/attackby(obj/item/tool, mob/user, params) + if(tool.tool_behaviour == TOOL_SCREWDRIVER) + flamethrower_screwdriver(tool, user) + else if(istype(tool, /obj/item/stack/rods)) + flamethrower_rods(tool, user) else . = ..() update_appearance() @@ -115,24 +115,24 @@ dyn_explosion(src, plasmaAmount/5, explosion_cause = src)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder qdel(src) -/obj/item/weldingtool/attack(mob/living/carbon/human/H, mob/living/user) - if(!istype(H)) +/obj/item/weldingtool/attack(mob/living/carbon/human/attacked_humanoid, mob/living/user) + if(!istype(attacked_humanoid)) return ..() - var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) + var/obj/item/bodypart/affecting = attacked_humanoid.get_bodypart(check_zone(user.zone_selected)) if(affecting && affecting.status == BODYPART_ROBOTIC && !user.combat_mode) - if(src.use_tool(H, user, 0, volume=50, amount=1)) - if(user == H) - user.visible_message(span_notice("[user] starts to fix some of the dents on [H]'s [affecting.name]."), - span_notice("You start fixing some of the dents on [H == user ? "your" : "[H]'s"] [affecting.name].")) - if(!do_mob(user, H, 50)) + if(src.use_tool(attacked_humanoid, user, 0, volume=50, amount=1)) + if(user == attacked_humanoid) + user.visible_message(span_notice("[user] starts to fix some of the dents on [attacked_humanoid]'s [affecting.name]."), + span_notice("You start fixing some of the dents on [attacked_humanoid == user ? "your" : "[attacked_humanoid]'s"] [affecting.name].")) + if(!do_mob(user, attacked_humanoid, 50)) return - item_heal_robotic(H, user, 15, 0) + item_heal_robotic(attacked_humanoid, user, 15, 0) else return ..() -/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) +/obj/item/weldingtool/afterattack(atom/attacked_atom, mob/user, proximity) . = ..() if(!proximity) return @@ -140,18 +140,18 @@ if(isOn()) handle_fuel_and_temps(1, user) - if(!QDELETED(O) && isliving(O)) // can't ignite something that doesn't exist - var/mob/living/L = O - if(L.IgniteMob()) - message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(L)] on fire with [src] at [AREACOORD(user)]") - log_game("[key_name(user)] set [key_name(L)] on fire with [src] at [AREACOORD(user)]") + if(!QDELETED(attacked_atom) && isliving(attacked_atom)) // can't ignite something that doesn't exist + var/mob/living/attacked_mob = attacked_atom + if(attacked_mob.IgniteMob()) + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(attacked_mob)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(attacked_mob)] on fire with [src] at [AREACOORD(user)]") - if(!status && O.is_refillable()) - reagents.trans_to(O, reagents.total_volume, transfered_by = user) - to_chat(user, span_notice("You empty [src]'s fuel tank into [O].")) + if(!status && attacked_atom.is_refillable()) + reagents.trans_to(attacked_atom, reagents.total_volume, transfered_by = user) + to_chat(user, span_notice("You empty [src]'s fuel tank into [attacked_atom].")) update_appearance() -/obj/item/weldingtool/attack_qdeleted(atom/O, mob/user, proximity) +/obj/item/weldingtool/attack_qdeleted(atom/attacked_atom, mob/user, proximity) . = ..() if(!proximity) return @@ -159,11 +159,11 @@ if(isOn()) handle_fuel_and_temps(1, user) - if(!QDELETED(O) && isliving(O)) // can't ignite something that doesn't exist - var/mob/living/L = O - if(L.IgniteMob()) - message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(L)] on fire with [src] at [AREACOORD(user)]") - log_game("[key_name(user)] set [key_name(L)] on fire with [src] at [AREACOORD(user)]") + if(!QDELETED(attacked_atom) && isliving(attacked_atom)) // can't ignite something that doesn't exist + var/mob/living/attacked_mob = attacked_atom + if(attacked_mob.IgniteMob()) + message_admins("[ADMIN_LOOKUPFLW(user)] set [key_name_admin(attacked_mob)] on fire with [src] at [AREACOORD(user)]") + log_game("[key_name(user)] set [key_name(attacked_mob)] on fire with [src] at [AREACOORD(user)]") /obj/item/weldingtool/attack_self(mob/user) @@ -278,7 +278,7 @@ return FALSE -/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) +/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/tool, mob/user) if(welding) to_chat(user, span_warning("Turn it off first!")) return @@ -291,23 +291,23 @@ reagents.flags |= OPENCONTAINER add_fingerprint(user) -/obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) +/obj/item/weldingtool/proc/flamethrower_rods(obj/item/tool, mob/user) if(!status) - var/obj/item/stack/rods/R = I - if (R.use(1)) - var/obj/item/flamethrower/F = new /obj/item/flamethrower(user.loc) - if(!remove_item_from_storage(F)) - user.transferItemToLoc(src, F, TRUE) - F.weldtool = src + var/obj/item/stack/rods/used_rods = tool + if (used_rods.use(1)) + var/obj/item/flamethrower/flamethrower_frame = new /obj/item/flamethrower(user.loc) + if(!remove_item_from_storage(flamethrower_frame)) + user.transferItemToLoc(src, flamethrower_frame, TRUE) + flamethrower_frame.weldtool = src add_fingerprint(user) to_chat(user, span_notice("You add a rod to a welder, starting to build a flamethrower.")) - user.put_in_hands(F) + user.put_in_hands(flamethrower_frame) else to_chat(user, span_warning("You need one rod to start building a flamethrower!")) -/obj/item/weldingtool/ignition_effect(atom/A, mob/user) - if(use_tool(A, user, 0, amount=1)) - return span_notice("[user] casually lights [A] with [src], what a badass.") +/obj/item/weldingtool/ignition_effect(atom/ignitable_atom, mob/user) + if(use_tool(ignitable_atom, user, 0, amount=1)) + return span_notice("[user] casually lights [ignitable_atom] with [src], what a badass.") else return "" @@ -352,6 +352,7 @@ icon = 'icons/obj/abductor.dmi' icon_state = "welder" toolspeed = 0.1 + custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) light_system = NO_LIGHT_SUPPORT light_range = 0 change_icons = FALSE @@ -375,7 +376,7 @@ icon_state = "exwelder" inhand_icon_state = "exwelder" max_fuel = 40 - custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) + custom_materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/plasma = 1500, /datum/material/uranium = 200) change_icons = 0 can_off_process = 1 light_range = 1 diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 22ec085e018..d6cee7af56b 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -45,16 +45,16 @@ set_greyscale(colors=list(wirecutter_colors[our_color])) return ..() -/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user) - if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable)) - user.visible_message(span_notice("[user] cuts [C]'s restraints with [src]!")) - qdel(C.handcuffed) +/obj/item/wirecutters/attack(mob/living/carbon/attacked_carbon, mob/user) + if(istype(attacked_carbon) && attacked_carbon.handcuffed && istype(attacked_carbon.handcuffed, /obj/item/restraints/handcuffs/cable)) + user.visible_message(span_notice("[user] cuts [attacked_carbon]'s restraints with [src]!")) + qdel(attacked_carbon.handcuffed) return - else if(istype(C) && C.has_status_effect(STATUS_EFFECT_CHOKINGSTRAND)) - user.visible_message(span_notice("[user] attempts to cut the durathread strand from around [C]'s neck.")) - if(do_after(user, 1.5 SECONDS, C)) - user.visible_message(span_notice("[user] succesfully cuts the durathread strand from around [C]'s neck.")) - C.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) + else if(istype(attacked_carbon) && attacked_carbon.has_status_effect(STATUS_EFFECT_CHOKINGSTRAND)) + user.visible_message(span_notice("[user] attempts to cut the durathread strand from around [attacked_carbon]'s neck.")) + if(do_after(user, 1.5 SECONDS, attacked_carbon)) + user.visible_message(span_notice("[user] succesfully cuts the durathread strand from around [attacked_carbon]'s neck.")) + attacked_carbon.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) playsound(loc, usesound, 50, TRUE, -1) return else @@ -69,6 +69,7 @@ name = "alien wirecutters" desc = "Extremely sharp wirecutters, made out of a silvery-green metal." icon = 'icons/obj/abductor.dmi' + custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) icon_state = "cutters" toolspeed = 0.1 random_color = FALSE diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 19056834c43..87ceb43ab11 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -32,6 +32,7 @@ desc = "A polarized wrench. It causes anything placed between the jaws to turn." icon = 'icons/obj/abductor.dmi' icon_state = "wrench" + custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000) usesound = 'sound/effects/empulse.ogg' toolspeed = 0.1 @@ -65,8 +66,8 @@ sleep(20) if(!user) return - for(var/obj/item/W in user) - user.dropItemToGround(W) + for(var/obj/item/suicide_wrench in user) + user.dropItemToGround(suicide_wrench) suicider = user.real_name user.dust() return OXYLOSS diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index bb769f07f68..c233e5585c8 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -57,8 +57,8 @@ tool_behaviour = TOOL_CAUTERY toolspeed = 1 -/obj/item/cautery/ignition_effect(atom/A, mob/user) - . = span_notice("[user] touches the end of [src] to \the [A], igniting it with a puff of smoke.") +/obj/item/cautery/ignition_effect(atom/ignitable_atom, mob/user) + . = span_notice("[user] touches the end of [src] to \the [ignitable_atom], igniting it with a puff of smoke.") /obj/item/cautery/augment desc = "A heated element that cauterizes wounds." @@ -69,6 +69,7 @@ desc = "It projects a high power laser used for medical applications." icon = 'icons/obj/surgery.dmi' icon_state = "e_cautery" + custom_materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/plasma = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 3000) hitsound = 'sound/items/welder.ogg' toolspeed = 0.7 light_system = MOVABLE_LIGHT @@ -240,20 +241,20 @@ item_flags = NOBLUDGEON var/list/advanced_surgeries = list() -/obj/item/surgical_processor/afterattack(obj/item/O, mob/user, proximity) +/obj/item/surgical_processor/afterattack(obj/item/design_holder, mob/user, proximity) . = ..() if(!proximity) return - if(istype(O, /obj/item/disk/surgery)) - to_chat(user, span_notice("You load the surgery protocol from [O] into [src].")) - var/obj/item/disk/surgery/D = O - if(do_after(user, 10, target = O)) - advanced_surgeries |= D.surgeries + if(istype(design_holder, /obj/item/disk/surgery)) + to_chat(user, span_notice("You load the surgery protocol from [design_holder] into [src].")) + var/obj/item/disk/surgery/surgery_disk = design_holder + if(do_after(user, 10, target = design_holder)) + advanced_surgeries |= surgery_disk.surgeries return TRUE - if(istype(O, /obj/machinery/computer/operating)) - to_chat(user, span_notice("You copy surgery protocols from [O] into [src].")) - var/obj/machinery/computer/operating/OC = O - if(do_after(user, 10, target = O)) + if(istype(design_holder, /obj/machinery/computer/operating)) + to_chat(user, span_notice("You copy surgery protocols from [design_holder] into [src].")) + var/obj/machinery/computer/operating/OC = design_holder + if(do_after(user, 10, target = design_holder)) advanced_surgeries |= OC.advanced_surgeries return TRUE return @@ -263,6 +264,7 @@ desc = "An advanced scalpel which uses laser technology to cut." icon = 'icons/obj/surgery.dmi' icon_state = "e_scalpel" + custom_materials = list(/datum/material/iron = 6000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 1500, /datum/material/diamond = 200, /datum/material/titanium = 4000) hitsound = 'sound/weapons/blade1.ogg' force = 16 toolspeed = 0.7 @@ -310,6 +312,7 @@ name = "mechanical pinches" desc = "An agglomerate of rods and gears." icon = 'icons/obj/surgery.dmi' + custom_materials = list(/datum/material/iron = 12000, /datum/material/glass = 4000, /datum/material/silver = 4000, /datum/material/titanium = 5000) icon_state = "adv_retractor" toolspeed = 0.7 @@ -359,14 +362,14 @@ sharpness = SHARP_EDGED custom_premium_price = PAYCHECK_MEDIUM * 14 -/obj/item/shears/attack(mob/living/M, mob/living/user) - if(!iscarbon(M) || user.combat_mode) +/obj/item/shears/attack(mob/living/amputee, mob/living/user) + if(!iscarbon(amputee) || user.combat_mode) return ..() if(user.zone_selected == BODY_ZONE_CHEST) return ..() - var/mob/living/carbon/patient = M + var/mob/living/carbon/patient = amputee if(HAS_TRAIT(patient, TRAIT_NODISMEMBER)) to_chat(user, span_warning("The patient's limbs look too sturdy to amputate."))