[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>
This commit is contained in:
SkyratBot
2021-10-17 23:16:26 +01:00
committed by GitHub
co-authored by Sealed101
parent 56f53b1163
commit b8b2f988ac
7 changed files with 101 additions and 92 deletions
+10 -9
View File
@@ -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
+15 -14
View File
@@ -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
+2 -1
View File
@@ -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
+43 -42
View File
@@ -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
+10 -9
View File
@@ -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
+3 -2
View File
@@ -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
+18 -15
View File
@@ -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."))