diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 26f0e2a2400..444c319334b 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1034,6 +1034,17 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/try_to_crowbar(mob/living/user, obj/item/I) //*scream
if(operating)
return
+ if(istype(I, /obj/item/twohanded/fireaxe)) //let's make this more specific //FUCK YOU
+ var/obj/item/twohanded/fireaxe/F = I
+ if(F.wielded)
+ spawn(0)
+ if(density)
+ open(1)
+ else
+ close(1)
+ else
+ to_chat(user, "You need to be wielding the fire axe to do that!")
+ return
var/beingcrowbarred = FALSE
if(I.tool_behaviour == TOOL_CROWBAR && I.tool_use_check(user, 0))
beingcrowbarred = TRUE
@@ -1049,17 +1060,6 @@ About the new airlock wires panel:
if(locked)
to_chat(user, "The airlock's bolts prevent it from being forced!")
return
- if(istype(I, /obj/item/twohanded/fireaxe)) //let's make this more specific //FUCK YOU
- var/obj/item/twohanded/fireaxe/F = I
- if(F.wielded)
- spawn(0)
- if(density)
- open(1)
- else
- close(1)
- else
- to_chat(user, "You need to be wielding the fire axe to do that!")
- return
else if(!arePowerSystemsOn())
spawn(0)
if(density)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 83ce512ebd9..14d1de97327 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -185,12 +185,12 @@
/obj/machinery/door/proc/unrestricted_side(mob/M) //Allows for specific side of airlocks to be unrestrected (IE, can exit maint freely, but need access to enter)
return get_dir(src, M) & unres_sides
-/obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user)
+/obj/machinery/door/proc/try_to_crowbar(mob/user, obj/item/I)
return
/obj/machinery/door/attackby(obj/item/I, mob/user, params)
if(user.a_intent != INTENT_HARM && istype(I, /obj/item/twohanded/fireaxe))
- try_to_crowbar(I, user)
+ try_to_crowbar(user, I)
return 1
else if(!(I.flags & NOBLUDGEON) && user.a_intent != INTENT_HARM)
try_to_activate_door(user)
@@ -206,7 +206,7 @@
return
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
- try_to_crowbar(I, user)
+ try_to_crowbar(user, I)
/obj/machinery/door/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
. = ..()
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index a69535e9fc9..ae87480e929 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -302,9 +302,9 @@
qdel(src)
else
- try_to_crowbar(I, user)
+ try_to_crowbar(user, I)
-/obj/machinery/door/window/try_to_crowbar(obj/item/I, mob/user)
+/obj/machinery/door/window/try_to_crowbar(mob/user, obj/item/I)
if(!hasPower())
if(density)
open(2)
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index aacd605b730..0bfbef39289 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -535,7 +535,7 @@
if(!istype(target, /obj/machinery/door))//early return if we're not trying to open a door
return
var/obj/machinery/door/D = target //the door we want to open
- D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function
+ D.try_to_crowbar(chassis.occupant, src)//use the door's crowbar function
if(isliving(target)) //interact with living beings
var/mob/living/M = target
if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not.
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 8672c65ea69..7dd41815a4c 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -250,7 +250,7 @@
var/turf/simulated/floor/F = src
F.burn_tile()
- F.icon_state = "wall_thermite"
+ F.icon_state = "plating"
if(user)
to_chat(user, "The thermite starts melting through the wall.")
@@ -329,6 +329,9 @@
/turf/simulated/wall/welder_act(mob/user, obj/item/I)
. = TRUE
+ if(thermite && I.use_tool(src, user, volume = I.tool_volume))
+ thermitemelt(user)
+ return
if(rotting)
if(I.use_tool(src, user, volume = I.tool_volume))
for(var/obj/effect/overlay/wall_rot/WR in src)
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index 7988f9cccf1..4c211291ae0 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -93,6 +93,9 @@
return ..()
/turf/simulated/wall/r_wall/welder_act(mob/user, obj/item/I)
+ if(thermite && I.use_tool(src, user, volume = I.tool_volume))
+ thermitemelt(user)
+ return TRUE
if(!(d_state in list(RWALL_COVER, RWALL_SUPPORT_RODS, RWALL_CUT_COVER)))
return ..()
. = TRUE
diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
index 17eee91080e..a1f2d74e77e 100644
--- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
+++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm
@@ -198,6 +198,7 @@
if(!S.reagents)
S.create_reagents(volume)
S.reagents.add_reagent("thermite", volume)
+ S.thermite = TRUE
S.overlays.Cut()
S.overlays = image('icons/effects/effects.dmi', icon_state = "thermite")
if(S.active_hotspot)
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index a069d386841..59f6d395aff 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -27,7 +27,7 @@
var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush.
var/last_sound = 0
var/required_mode_to_deconstruct = -1
- var/deconstructs_to = PIPE_DISPOSALS_CHUTE
+ var/deconstructs_to = PIPE_DISPOSALS_BIN
active_power_usage = 600
idle_power_usage = 100
@@ -98,21 +98,7 @@
return
src.add_fingerprint(user)
- if(mode<=0) // It's off
- if(istype(I, /obj/item/screwdriver))
- if(contents.len > 0)
- to_chat(user, "Eject the items first!")
- return
- if(mode==0) // It's off but still not unscrewed
- mode=-1 // Set it to doubleoff l0l
- playsound(src.loc, I.usesound, 50, 1)
- to_chat(user, "You remove the screws around the power connection.")
- return
- else if(mode==-1)
- mode=0
- playsound(src.loc, I.usesound, 50, 1)
- to_chat(user, "You attach the screws around the power connection.")
- return
+
if(istype(I, /obj/item/melee/energy/blade))
to_chat(user, "You can't place that item inside the disposal unit.")
return
@@ -158,6 +144,24 @@
update()
+
+
+
+/obj/machinery/disposal/screwdriver_act(mob/user, obj/item/I)
+ if(mode>0) // It's on
+ return
+ . = TRUE
+ if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ return
+ if(contents.len > 0)
+ to_chat(user, "Eject the items first!")
+ return
+ if(mode==0) // It's off but still not unscrewed
+ mode=-1 // Set it to doubleoff l0l
+ else if(mode==-1)
+ mode=0
+ to_chat(user, "You [mode ? "unfasten": "fasten"] the screws around the power connection.")
+
/obj/machinery/disposal/welder_act(mob/user, obj/item/I)
. = TRUE
if(mode != required_mode_to_deconstruct)
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 5bbf8d93f90..95e076d2670 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -273,8 +273,7 @@
icon_state = "intake"
required_mode_to_deconstruct = 1
deconstructs_to = PIPE_DISPOSALS_CHUTE
-
- var/c_mode = 0
+ var/can_deconstruct = FALSE
/obj/machinery/disposal/deliveryChute/New()
..()
@@ -345,21 +344,31 @@
update()
return
-/obj/machinery/disposal/deliveryChute/attackby(obj/item/I, mob/user, params)
- if(!I || !user)
+/obj/machinery/disposal/deliveryChute/screwdriver_act(mob/user, obj/item/I)
+ . = TRUE
+ if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
+ can_deconstruct = !can_deconstruct
+ to_chat(user, "You [can_deconstruct ? "unfasten": "fasten"] the screws around the power connection.")
- if(istype(I, /obj/item/screwdriver))
- if(c_mode==0)
- c_mode=1
- playsound(src.loc, I.usesound, 50, 1)
- to_chat(user, "You remove the screws around the power connection.")
- return
- else if(c_mode==1)
- c_mode=0
- playsound(src.loc, I.usesound, 50, 1)
- to_chat(user, "You attach the screws around the power connection.")
- return
+/obj/machinery/disposal/deliveryChute/welder_act(mob/user, obj/item/I)
+ . = TRUE
+ if(!can_deconstruct)
+ return
+ if(contents.len > 0)
+ to_chat(user, "Eject the items first!")
+ return
+ if(!I.tool_use_check(user, 0))
+ return
+ WELDER_ATTEMPT_FLOOR_SLICE_MESSAGE
+ if(I.use_tool(src, user, 20, volume = I.tool_volume))
+ WELDER_FLOOR_SLICE_SUCCESS_MESSAGE
+ var/obj/structure/disposalconstruct/C = new (loc)
+ C.ptype = deconstructs_to
+ C.update()
+ C.anchored = TRUE
+ C.density = TRUE
+ qdel(src)
/obj/item/shippingPackage
name = "Shipping package"