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."))