diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index e766467820f..9f874d424c5 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -246,6 +246,7 @@ attackby(obj/item/W, mob/user) if(istype(W, /obj/item/weapon/weldingtool) && W:welding) if (W:remove_fuel(0,user)) + W:welding = 2 user << "\blue Now welding the vent." if(do_after(user, 20)) playsound(src.loc, 'Welder2.ogg', 50, 1) @@ -255,6 +256,7 @@ else user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") welded = 0 + W:welding = 1 else user << "\blue You need more welding fuel to complete this task." return 1 diff --git a/code/WorkInProgress/recycling/disposal-construction.dm b/code/WorkInProgress/recycling/disposal-construction.dm index 255bcfcb98e..5c01ad5b58d 100644 --- a/code/WorkInProgress/recycling/disposal-construction.dm +++ b/code/WorkInProgress/recycling/disposal-construction.dm @@ -132,9 +132,10 @@ else if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I - if(W.remove_fuel(2,user)) + if(W.remove_fuel(0,user)) playsound(src.loc, 'Welder2.ogg', 100, 1) user << "Welding the pipe in place." + W:welding = 2 if(do_after(user, 20)) update() var/pipetype = dpipetype() @@ -145,6 +146,7 @@ P.updateicon() del(src) return + W:welding = 1 else user << "You need more welding fuel to complete this task." return diff --git a/code/WorkInProgress/recycling/disposal.dm b/code/WorkInProgress/recycling/disposal.dm index 62ee519a282..bae2523da6b 100644 --- a/code/WorkInProgress/recycling/disposal.dm +++ b/code/WorkInProgress/recycling/disposal.dm @@ -694,7 +694,8 @@ var/obj/item/weapon/weldingtool/W = I if(W.welding) - if(W.remove_fuel(3,user)) + if(W.remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder2.ogg', 100, 1) // check if anything changed over 2 seconds var/turf/uloc = user.loc @@ -705,7 +706,7 @@ welded() else user << "You must stay still while welding the pipe." - return + W:welding = 1 else user << "You need more welding fuel to cut the pipe." return diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 79d29824b8b..082d0bacd6c 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -727,7 +727,7 @@ Auto Patrol: []"}, /obj/item/weapon/secbot_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if ((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (!src.build_step)) - if(W:remove_fuel(1,user)) + if(W:remove_fuel(0,user)) src.build_step++ src.overlays += image('aibots.dmi', "hs_hole") user << "You weld a hole in [src]!" diff --git a/code/game/machinery/computer/AIcore.dm b/code/game/machinery/computer/AIcore.dm index 51ed8058f2b..4371988e4be 100644 --- a/code/game/machinery/computer/AIcore.dm +++ b/code/game/machinery/computer/AIcore.dm @@ -21,10 +21,12 @@ src.state = 1 if(istype(P, /obj/item/weapon/weldingtool)) playsound(src.loc, 'Welder.ogg', 50, 1) + P:welding = 2 if(do_after(user, 20)) user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/r_metal( src.loc, 4) del(src) + P:welding = 1 if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'Ratchet.ogg', 50, 1) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 31f3fabf54c..e9b5513ba8b 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -138,11 +138,13 @@ src.anchored = 1 src.state = 1 if(istype(P, /obj/item/weapon/weldingtool)) + P:welding = 2 playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 20)) user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/metal( src.loc, 5 ) del(src) + P:welding = 1 if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(src.loc, 'Ratchet.ogg', 50, 1) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4d0c3fc5353..805b7e0452f 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -849,7 +849,7 @@ About the new airlock wires panel: src.add_fingerprint(user) if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density)) var/obj/item/weapon/weldingtool/W = C - if(W.remove_fuel(2,user)) + if(W.remove_fuel(0,user)) if (!src.welded) src.welded = 1 else diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 0cf61c49247..b742b23fef9 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -20,7 +20,7 @@ src.add_fingerprint(user) if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density)) var/obj/item/weapon/weldingtool/W = C - if(W.remove_fuel(2, user)) + if(W.remove_fuel(0, user)) src.blocked = !src.blocked user << text("\red You [blocked?"welded":"unwelded"] the [src]") update_icon() diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index f72fa72bcd3..762699e7092 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -151,7 +151,7 @@ src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - if (!W:remove_fuel(1,user)) + if (!W:remove_fuel(0,user)) user << "\blue You need more welding fuel to complete this task." return new /obj/item/stack/sheet/metal(src.loc) @@ -169,7 +169,7 @@ W.loc = src.loc else if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - if (!W:remove_fuel(1,user)) + if (!W:remove_fuel(0,user)) user << "\blue You need more welding fuel to complete this task." return src.welded =! src.welded diff --git a/code/game/objects/door_assembly.dm b/code/game/objects/door_assembly.dm index 2d0a1fc02c7..16b890f925b 100644 --- a/code/game/objects/door_assembly.dm +++ b/code/game/objects/door_assembly.dm @@ -85,6 +85,7 @@ obj/door_assembly /obj/door_assembly/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/weldingtool) && W:welding && !anchored ) if (W:remove_fuel(0,user)) + W:welding = 2 user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.") playsound(src.loc, 'Welder2.ogg', 50, 1) if(do_after(user, 40)) @@ -93,6 +94,7 @@ obj/door_assembly if(src.glass==1) new /obj/item/stack/sheet/rglass(get_turf(src)) del(src) + W:welding = 1 else user << "\blue You need more welding fuel to dissassemble the airlock assembly." return diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 7c26c2f185f..c12f590d860 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -153,9 +153,18 @@ WELDINGTOOOL process() - if(!welding) - processing_items.Remove(src) - return + switch(welding) + if(0) + processing_items.Remove(src) + return + if(1) + if(prob(5))//Welders left on now use up fuel, but lets not have them run out quite that fast + remove_fuel(1) + if(2) + if(prob(75)) + remove_fuel(1) + //if you're actually actively welding, use fuel faster. + var/turf/location = src.loc if(istype(location, /mob/)) var/mob/M = location @@ -163,8 +172,7 @@ WELDINGTOOOL location = get_turf(M) if (istype(location, /turf)) location.hotspot_expose(700, 5) - if(prob(20))//Welders left on now use up fuel, but lets not have them run out quite that fast - remove_fuel(1) + afterattack(obj/O as obj, mob/user as mob) @@ -309,6 +317,7 @@ WELDINGTOOOL max_fuel = 40 m_amt = 70 g_amt = 60 + /obj/item/weapon/weldingtool/hugetank name = "Upgraded Welding Tool" max_fuel = 80 diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm index 8108e8ab850..08dba690dd1 100644 --- a/code/game/objects/stacks/metal.dm +++ b/code/game/objects/stacks/metal.dm @@ -16,7 +16,7 @@ FLOOR TILES if(amount < 2) user << "\red You need at least two rods to do this." return - if(W:remove_fuel(2,user)) + if(W:remove_fuel(0,user)) var/obj/item/stack/sheet/metal/new_item = new(usr.loc) new_item.add_to_stacks(usr) for (var/mob/M in viewers(src)) diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index c9321d2fe05..94647369f23 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -147,17 +147,21 @@ if (istype(W, /obj/item/weapon/weldingtool)) if(W:welding == 1) if(src.status == 2) + W:welding = 2 user << "\blue Now weakening the reinforced table" playsound(src.loc, 'Welder.ogg', 50, 1) sleep(50) user << "\blue Table weakened" src.status = 1 + W:welding = 1 else + W:welding = 2 user << "\blue Now strengthening the reinforced table" playsound(src.loc, 'Welder.ogg', 50, 1) sleep(50) user << "\blue Table strengthened" src.status = 2 + W:welding = 1 return if(isrobot(user)) return diff --git a/code/game/turf.dm b/code/game/turf.dm index 15ca5aed840..b98a6809fdd 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -347,6 +347,7 @@ return if (W:remove_fuel(0,user)) + W:welding = 2 user << "\blue Now disassembling the outer wall plating." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(100) @@ -354,6 +355,7 @@ if ((get_turf(user) == T && user.equipped() == W)) user << "\blue You disassembled the outer wall plating." dismantle_wall() + W:welding = 1 else user << "\blue You need more welding fuel to complete this task." return @@ -396,14 +398,17 @@ return if (src.d_state == 2) + W:welding = 2 user << "\blue Slicing metal cover." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(60) if ((user.loc == T && user.equipped() == W)) src.d_state = 3 user << "\blue You removed the metal cover." + W:welding = 1 else if (src.d_state == 5) + W:welding = 2 user << "\blue Removing support rods." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(100) @@ -411,6 +416,7 @@ src.d_state = 6 new /obj/item/stack/rods( src ) user << "\blue You removed the support rods." + W:welding = 1 else if (istype(W, /obj/item/weapon/wrench)) if (src.d_state == 4) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index b566d2627d2..c412bf50ec2 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -366,9 +366,11 @@ user << "\blue You need more welding fuel to complete this task." return user << "You start welding APC frame..." - if(W:remove_fuel(2,user)) + if(W:remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 50)) + if (emagged || malfhack || (stat & BROKEN) || opened==2) new /obj/item/stack/sheet/metal(loc) user.visible_message(\ @@ -381,8 +383,9 @@ "\red [src] has been cut from the wall by [user.name] with the weldingtool.",\ "You cut APC frame from the wall.",\ "\red You hear welding.") - del(src) - return + W:welding = 1 + del(src) + return else if (istype(W, /obj/item/apc_frame) && opened && emagged) emagged = 0 if (opened==2) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 909a8adc9cf..ac094eae861 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -145,6 +145,7 @@ return if(1) if (W:remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder2.ogg', 50, 1) user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \ "You start to weld the [src] to the floor.", \ @@ -152,11 +153,13 @@ if (do_after(user,20)) state = 2 user << "You weld the [src] to the floor." + W:welding = 1 else user << "\blue You need more welding fuel to complete this task." return if(2) if (W:remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder2.ogg', 50, 1) user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \ "You start to cut the [src] free from the floor.", \ @@ -164,6 +167,7 @@ if (do_after(user,20)) state = 1 user << "You cut the [src] free from the floor." + W:welding = 1 else user << "\blue You need more welding fuel to complete this task." return diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 09b99e4c62a..244700ecd05 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -109,6 +109,7 @@ return if(1) if (W:remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder2.ogg', 50, 1) user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \ "You start to weld the [src] to the floor.", \ @@ -116,10 +117,12 @@ if (do_after(user,20)) state = 2 user << "You weld the field generator to the floor." + W:welding = 1 else return if(2) if (W:remove_fuel(0,user)) + W:welding = 2 playsound(src.loc, 'Welder2.ogg', 50, 1) user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \ "You start to cut the [src] free from the floor.", \ @@ -127,6 +130,7 @@ if (do_after(user,20)) state = 1 user << "You cut the [src] free from the floor." + W:welding = 2 else return else