diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 3388cfd9667..2b151f04136 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -252,11 +252,12 @@ return attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - if (W:remove_fuel(0,user)) - W:welding = 2 + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if (WT.remove_fuel(0,user)) user << "\blue Now welding the vent." if(do_after(user, 20)) + if(!src || !WT.isOn()) return playsound(src.loc, 'Welder2.ogg', 50, 1) if(!welded) user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.") @@ -266,7 +267,8 @@ user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.") welded = 0 update_icon() - W:welding = 1 + else + user << "\blue The welding tool needs to be on to start this task." else user << "\blue You need more welding fuel to complete this task." return 1 diff --git a/code/defines/turf.dm b/code/defines/turf.dm index c0756e3d4d2..3d9befcfba7 100644 --- a/code/defines/turf.dm +++ b/code/defines/turf.dm @@ -332,7 +332,8 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/weldingtool)) - if(W:welding) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) return TemperatureAct(100) ..() diff --git a/code/game/events/EventProcs/spacevines.dm b/code/game/events/EventProcs/spacevines.dm index b372981383a..f074e2b884d 100644 --- a/code/game/events/EventProcs/spacevines.dm +++ b/code/game/events/EventProcs/spacevines.dm @@ -38,7 +38,8 @@ else //weapons with subtypes if(istype(W, /obj/item/weapon/melee/energy/sword)) del src else if(istype(W, /obj/item/weapon/weldingtool)) - if(W:welding) del src + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) del src //TODO: add plant-b-gone ..() diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 92cc9281ef9..be5c8639ffe 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -813,8 +813,9 @@ Auto Patrol: []"}, src.item_state = "ed209_shell" src.icon_state = "ed209_shell" del(W) - else if((istype(W, /obj/item/weapon/weldingtool) && W:welding) && (src.build_step == 3)) - if (W:remove_fuel(0,user)) + else if(istype(W, /obj/item/weapon/weldingtool) && src.build_step == 3) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0,user)) src.build_step++ src.name = "shielded frame assembly" user << "You welded the vest to [src]!" diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 46905532dbf..4531d76cba3 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -730,8 +730,9 @@ 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(0,user)) + if((istype(W, /obj/item/weapon/weldingtool)) && (!src.build_step)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.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/ai_core.dm b/code/game/machinery/computer/ai_core.dm index 4215c0a2b53..750db980e6b 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -20,13 +20,16 @@ anchored = 1 state = 1 if(istype(P, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = P + if(!WT.isOn()) + user << "The welder must be on for this task." + return playsound(loc, 'Welder.ogg', 50, 1) - P:welding = 2 if(do_after(user, 20)) + if(!src || !WT.remove_fuel(0, user)) return user << "\blue You deconstruct the frame." new /obj/item/stack/sheet/plasteel( loc, 4) del(src) - P:welding = 1 if(1) if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'Ratchet.ogg', 50, 1) @@ -162,6 +165,7 @@ playsound(loc, 'Screwdriver.ogg', 50, 1) user << "\blue You connect the monitor." new /mob/living/silicon/ai ( loc, laws, brain ) +// feedback_inc("cyborg_ais_created",1) del(src) /obj/structure/AIcore/deactivated diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index cfcef2eb3b7..15d63c6d56f 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -259,13 +259,16 @@ src.anchored = 1 src.state = 1 if(istype(P, /obj/item/weapon/weldingtool)) - P:welding = 2 + var/obj/item/weapon/weldingtool/WT = P + if(!WT.remove_fuel(0, user)) + user << "The welding tool must be on to complete this task." + return playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 20)) + if(!src || !WT.isOn()) return 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/portable_turret.dm b/code/game/machinery/portable_turret.dm index 2df8cb6f5c8..3174443256d 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -456,6 +456,7 @@ Neutralize All Unidentified Life Signs: []
"}, /obj/machinery/porta_turret/proc/shootAt(var/atom/movable/target) // shoots at a target + if(!emagged) // if it hasn't been emagged, it has to obey a cooldown rate if(last_fired || !raised) return // prevents rapid-fire shooting, unless it's been emagged last_fired = 1 @@ -644,13 +645,19 @@ Neutralize All Unidentified Life Signs: []
"}, return else if(istype(W, /obj/item/weapon/weldingtool)) - if (W:remove_fuel(5,user)) // uses up 5 fuel. - playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1) - if(do_after(user, 20)) - build_step = 1 - user << "You remove the turret's interior metal armor." - new /obj/item/stack/sheet/metal( loc, 2) - return + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) return + if (WT.get_fuel() < 5) // uses up 5 fuel. + user << "\red You need more fuel to complete this task." + return + + playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1) + if(do_after(user, 20)) + if(!src || !WT.remove_fuel(5, user)) return + build_step = 1 + user << "You remove the turret's interior metal armor." + new /obj/item/stack/sheet/metal( loc, 2) + return if(3) @@ -706,22 +713,27 @@ Neutralize All Unidentified Life Signs: []
"}, if(7) if(istype(W, /obj/item/weapon/weldingtool)) - if (W:remove_fuel(5,user)) - playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1) - if(do_after(user, 30)) - build_step = 8 - user << "\blue You weld the turret's armor down." + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) return + if (WT.get_fuel() < 5) + user << "\red You need more fuel to complete this task." - // The final step: create a full turret - var/obj/machinery/porta_turret/Turret = new/obj/machinery/porta_turret(locate(x,y,z)) - Turret.name = finish_name - Turret.installation = src.installation - Turret.gun_charge = src.gun_charge + playsound(src.loc, pick('Welder.ogg', 'Welder2.ogg'), 50, 1) + if(do_after(user, 30)) + if(!src || !WT.remove_fuel(5, user)) return + build_step = 8 + user << "\blue You weld the turret's armor down." - Turret.cover=new/obj/machinery/porta_turret_cover(src.loc) - Turret.cover.Parent_Turret=Turret - Turret.cover.name = finish_name - del(src) + // The final step: create a full turret + var/obj/machinery/porta_turret/Turret = new/obj/machinery/porta_turret(locate(x,y,z)) + Turret.name = finish_name + Turret.installation = src.installation + Turret.gun_charge = src.gun_charge + + Turret.cover=new/obj/machinery/porta_turret_cover(src.loc) + Turret.cover.Parent_Turret=Turret + Turret.cover.name = finish_name + del(src) else if(istype(W, /obj/item/weapon/crowbar)) playsound(src.loc, 'Crowbar.ogg', 75, 1) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 52f897ef19b..f2ac1f25269 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -757,8 +757,9 @@ user << "There's already a powercell installed." return - else if(istype(W, /obj/item/weapon/weldingtool) && W:welding && user.a_intent != "hurt") - if (W:remove_fuel(0,user)) + else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "hurt") + var/obj/item/weapon/weldingtool/WT = W + if (WT.remove_fuel(0,user)) if (hasInternalDamage(MECHA_INT_TANK_BREACH)) clearInternalDamage(MECHA_INT_TANK_BREACH) user << "\blue You repair the damaged gas tank." diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 939f7578c1e..1b574e9dd2b 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -5,7 +5,7 @@ /datum/construction/mecha/custom_action(step, atom/used_atom, mob/user) if(istype(used_atom, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = used_atom - if (W:remove_fuel(0, user)) + if (W.remove_fuel(0, user)) playsound(holder, 'Welder2.ogg', 50, 1) else return 0 @@ -38,7 +38,7 @@ /datum/construction/reversible/mecha/custom_action(index as num, diff as num, atom/used_atom, mob/user as mob) if(istype(used_atom, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = used_atom - if (W:remove_fuel(0, user)) + if (W.remove_fuel(0, user)) playsound(holder, 'Welder2.ogg', 50, 1) else return 0 diff --git a/code/game/objects/alien/egg.dm b/code/game/objects/alien/egg.dm index 2f6ee03982e..8f73d2cd11a 100644 --- a/code/game/objects/alien/egg.dm +++ b/code/game/objects/alien/egg.dm @@ -82,7 +82,7 @@ if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W - if(WT.welding) + if(WT.remove_fuel(0, user)) damage = 15 playsound(src.loc, 'Welder.ogg', 100, 1) diff --git a/code/game/objects/alien/weeds.dm b/code/game/objects/alien/weeds.dm index b65d00044b3..3c07c2fd732 100644 --- a/code/game/objects/alien/weeds.dm +++ b/code/game/objects/alien/weeds.dm @@ -76,7 +76,7 @@ Alien plants should do something if theres a lot of poison if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W - if(WT.welding) + if(WT.remove_fuel(0, user)) damage = 15 playsound(loc, 'Welder.ogg', 100, 1) diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index 1ec2acdda74..c623440b0ff 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -133,8 +133,9 @@ if(istype(W, /obj/item/weapon/grab)) 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(0,user)) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.remove_fuel(0,user)) user << "\blue You need more welding fuel to complete this task." return new /obj/item/stack/sheet/metal(src.loc) @@ -156,8 +157,9 @@ else if(istype(W, /obj/item/weapon/packageWrap)) return - else if(istype(W, /obj/item/weapon/weldingtool) && W:welding ) - if(!W:remove_fuel(0,user)) + else if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(!WT.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 4c9e9c7207c..c3e67162baf 100644 --- a/code/game/objects/door_assembly.dm +++ b/code/game/objects/door_assembly.dm @@ -179,20 +179,19 @@ obj/structure/door_assembly glass = 1 /obj/structure/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 + if(istype(W, /obj/item/weapon/weldingtool) && !anchored ) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0,user)) 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)) - if(!src) return + if(!src || !WT.isOn()) return user << "\blue You dissasembled the airlock assembly!" new /obj/item/stack/sheet/metal(get_turf(src), 4) 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.dm b/code/game/objects/items.dm index ba9c5a979fa..a740c7d9d71 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -511,18 +511,19 @@ if (is_sharp(W)) burst() +//Is this even used for anything besides balloons? Yes I took out the W:lit stuff because : really shouldnt be used. /proc/is_sharp(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT? return ( \ istype(W, /obj/item/weapon/screwdriver) || \ istype(W, /obj/item/weapon/pen) || \ - istype(W, /obj/item/weapon/weldingtool) && W:welding || \ - istype(W, /obj/item/weapon/lighter/zippo) && W:lit || \ - istype(W, /obj/item/weapon/match) && W:lit || \ - istype(W, /obj/item/clothing/mask/cigarette) && W:lit || \ + istype(W, /obj/item/weapon/weldingtool) || \ + istype(W, /obj/item/weapon/lighter/zippo) || \ + istype(W, /obj/item/weapon/match) || \ + istype(W, /obj/item/clothing/mask/cigarette) || \ istype(W, /obj/item/weapon/wirecutters) || \ istype(W, /obj/item/weapon/circular_saw) || \ - istype(W, /obj/item/weapon/melee/energy/sword) && W:active || \ - istype(W, /obj/item/weapon/melee/energy/blade) || \ + istype(W, /obj/item/weapon/melee/energy/sword) || \ + istype(W, /obj/item/weapon/melee/energy/blade) || \ istype(W, /obj/item/weapon/shovel) || \ istype(W, /obj/item/weapon/kitchenknife) || \ istype(W, /obj/item/weapon/butch) || \ diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index d93e157d767..3e103f23ab6 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -1,4 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05 +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 #define CANDLE_LUM 3 @@ -27,14 +27,22 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - light("\red [user] casually lights the [name] with [W], what a badass.") - else if(istype(W, /obj/item/weapon/lighter) && W:lit) - light() - else if(istype(W, /obj/item/weapon/match) && W:lit) - light() - else if(istype(W, /obj/item/candle) && W:lit) - light() + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool + light("\red [user] casually lights the [name] with [W], what a badass.") + else if(istype(W, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = W + if(L.lit) + light() + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit) + light() + else if(istype(W, /obj/item/candle)) + var/obj/item/candle/C = W + if(C.lit) + light() light(var/flavor_text = "\red [usr] lights the [name].") diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index cec30461897..02e30257ed7 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -128,8 +128,10 @@ ZIPPO /obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - light("\red [user] casually lights the [name] with [W], what a badass.") + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool + light("\red [user] casually lights the [name] with [W], what a badass.") else if(istype(W, /obj/item/weapon/lighter/zippo)) var/obj/item/weapon/lighter/zippo/Z = W @@ -266,18 +268,25 @@ ZIPPO attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) - light("\red [user] casually lights the [name] with [W], what a badass.") + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.isOn()) + light("\red [user] casually lights the [name] with [W], what a badass.") - else if(istype(W, /obj/item/weapon/lighter/zippo) && (W:lit > 0)) - light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") + else if(istype(W, /obj/item/weapon/lighter/zippo)) + var/obj/item/weapon/lighter/zippo/Z = W + if(Z.lit > 0) + light("\red With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.") - else if(istype(W, /obj/item/weapon/lighter) && (W:lit > 0)) - light("\red After some fiddling, [user] manages to light their [name] with [W].") + else if(istype(W, /obj/item/weapon/lighter)) + var/obj/item/weapon/lighter/L = W + if(L.lit > 0) + light("\red After some fiddling, [user] manages to light their [name] with [W].") - else if(istype(W, /obj/item/weapon/match) && (W:lit > 0)) - light("\red [user] lights \his [name] with \his [W].") - return + else if(istype(W, /obj/item/weapon/match)) + var/obj/item/weapon/match/M = W + if(M.lit > 0) + light("\red [user] lights their [name] with their [W].") light(var/flavor_text = "[usr] lights the [name].") if(!src.lit) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 5a23cfbb8ab..4bc4a25de19 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -71,242 +71,278 @@ WELDINGTOOOL icon_state = "welder" flags = FPRINT | TABLEPASS| CONDUCT slot_flags = SLOT_BELT + + //Amount of OUCH when it's thrown force = 3.0 throwforce = 5.0 throw_speed = 1 throw_range = 5 w_class = 2.0 + + //Cost to make in the autolathe m_amt = 70 g_amt = 30 + + //R&D tech level origin_tech = "engineering=1" - var/welding = 0 - var/status = 1 - var/max_fuel = 20 - proc - get_fuel() - remove_fuel(var/amount = 1, var/mob/M = null) - check_status() - toggle(var/message = 0) - eyecheck(mob/user as mob) + + //Welding tool specific stuff + var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) + var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) + var/max_fuel = 20 //The max amount of fuel the welder can hold + +/obj/item/weapon/weldingtool/New() +// var/random_fuel = min(rand(10,20),max_fuel) + var/datum/reagents/R = new/datum/reagents(max_fuel) + reagents = R + R.my_atom = src + R.add_reagent("fuel", max_fuel) + return - New() - var/random_fuel = min(rand(10,20),max_fuel) - var/datum/reagents/R = new/datum/reagents(max_fuel) - reagents = R - R.my_atom = src - R.add_reagent("fuel", random_fuel) - return +/obj/item/weapon/weldingtool/examine() + set src in usr + usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ) + return - examine() - set src in usr - usr << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ) - return - - - attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/screwdriver)) - if(welding) - user << "\red Stop welding first!" - return - status = !status - if(status) - user << "\blue You resecure the welder." - else - user << "\blue The welder can now be attached and modified." - src.add_fingerprint(user) +/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/screwdriver)) + if(welding) + user << "\red Stop welding first!" return - - if((!status) && (istype(W,/obj/item/stack/rods))) - var/obj/item/stack/rods/R = W - R.use(1) - var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc) - src.loc = F - F.weldtool = src - if (user.client) - user.client.screen -= src - if (user.r_hand == src) - user.u_equip(src) - else - user.u_equip(src) - src.master = F - src.layer = initial(src.layer) - user.u_equip(src) - if (user.client) - user.client.screen -= src - src.loc = F - src.add_fingerprint(user) - return - - ..() - return - - - process() - switch(welding) - if(0) - processing_objects.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 - if(M.l_hand == src || M.r_hand == src) - location = get_turf(M) - if (istype(location, /turf)) - location.hotspot_expose(700, 5) - - - afterattack(obj/O as obj, mob/user as mob) - if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding) - O.reagents.trans_to(src, max_fuel) - user << "\blue Welder refueled" - playsound(src.loc, 'refill.ogg', 50, 1, -6) - return - else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding) - message_admins("[key_name_admin(user)] triggered a fueltank explosion.") - log_game("[key_name(user)] triggered a fueltank explosion.") - user << "\red That was stupid of you." - explosion(O.loc,-1,0,2) - if(O) - del(O) - return - if (src.welding) - remove_fuel(1) - var/turf/location = get_turf(user) - if (istype(location, /turf)) - location.hotspot_expose(700, 50, 1) - return - - - attack_self(mob/user as mob) - toggle() - user.update_clothing() - return - - -///GET prop for fuel - get_fuel() - return reagents.get_reagent_amount("fuel") - - -///SET prop for fuel -///Will also turn it off if it is out of fuel -///The mob argument is not needed but if included will call eyecheck() on it if the welder is on. - remove_fuel(var/amount = 1, var/mob/M = null) - if(!welding || !check_status()) - return 0 - if(get_fuel() >= amount) - reagents.remove_reagent("fuel", amount) - check_status() - if(M) - eyecheck(M)//TODO:eyecheck should really be in mob not here - return 1 + status = !status + if(status) + user << "\blue You resecure the welder." else - if(M) - M << "\blue You need more welding fuel to complete this task." - return 0 + user << "\blue The welder can now be attached and modified." + src.add_fingerprint(user) + return + + if((!status) && (istype(W,/obj/item/stack/rods))) + var/obj/item/stack/rods/R = W + R.use(1) + var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc) + src.loc = F + F.weldtool = src + if (user.client) + user.client.screen -= src + if (user.r_hand == src) + user.u_equip(src) + else + user.u_equip(src) + src.master = F + src.layer = initial(src.layer) + user.u_equip(src) + if (user.client) + user.client.screen -= src + src.loc = F + src.add_fingerprint(user) + return + + ..() + return -///Quick check to see if we even have any fuel and should shut off -///This could use a better name - check_status() - if((get_fuel() <= 0) && welding) - toggle(1) - return 0 - return 1 - - -//toggles the welder off and on - toggle(var/message = 0) - if(!status) return - src.welding = !( src.welding ) - if (src.welding) - if (remove_fuel(1)) - usr << "\blue You switch the [src] on." +/obj/item/weapon/weldingtool/process() + switch(welding) + //If off + if(0) + if(src.icon_state != "welder") //Check that the sprite is correct, if it isnt, it means toggle() was not called + src.force = 3 + src.damtype = "brute" + src.icon_state = "welder" + src.welding = 0 + processing_objects.Remove(src) + return + //Welders left on now use up fuel, but lets not have them run out quite that fast + if(1) + if(src.icon_state != "welder1") //Check that the sprite is correct, if it isnt, it means toggle() was not called src.force = 15 src.damtype = "fire" src.icon_state = "welder1" - processing_objects.Add(src) - else - usr << "\blue Need more fuel!" - src.welding = 0 - return - else - if(!message) - usr << "\blue You switch the [src] off." - else - usr << "\blue The [src] shuts off!" - src.force = 3 - src.damtype = "brute" - src.icon_state = "welder" - src.welding = 0 + if(prob(5)) + remove_fuel(1) + + //If you're actually actively welding, use fuel faster. + //Is this actually used or set anywhere? - Nodrak + if(2) + if(prob(75)) + remove_fuel(1) - eyecheck(mob/user as mob) - //check eye protection - if(!iscarbon(user)) return 1 - var/safety = user:eyecheck() - switch(safety) - if(1) - usr << "\red Your eyes sting a little." - user.eye_stat += rand(1, 2) - if(user.eye_stat > 12) - user.eye_blurry += rand(3,6) - if(0) - usr << "\red Your eyes burn." - user.eye_stat += rand(2, 4) - if(user.eye_stat > 10) - user.eye_blurry += rand(4,10) - if(-1) - usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely." - user.eye_blurry += rand(12,20) - user.eye_stat += rand(12, 16) - if(user.eye_stat > 10 && safety < 2) - user << "\red Your eyes are really starting to hurt. This can't be good for you!" - if (prob(user.eye_stat - 25 + 1)) - user << "\red You go blind!" - user.disabilities |= 128 - else if (prob(user.eye_stat - 15 + 1)) - user << "\red You go blind!" - user.eye_blind = 5 - user.eye_blurry = 5 - user.disabilities |= 1 -// spawn(100) -// user.disabilities &= ~1 //Simpler to just leave them short sighted. + //I'm not sure what this does. I assume it has to do with starting fires... + //...but it doesnt check to see if the welder is on or not. + var/turf/location = src.loc + if(istype(location, /mob/)) + var/mob/M = location + if(M.l_hand == src || M.r_hand == src) + location = get_turf(M) + if (istype(location, /turf)) + location.hotspot_expose(700, 5) + + +/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob) + if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding) + O.reagents.trans_to(src, max_fuel) + user << "\blue Welder refueled" + playsound(src.loc, 'refill.ogg', 50, 1, -6) return + else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding) + message_admins("[key_name_admin(user)] triggered a fueltank explosion.") + log_game("[key_name(user)] triggered a fueltank explosion.") + user << "\red That was stupid of you." + explosion(O.loc,-1,0,2) + if(O) + del(O) + return + if (src.welding) + remove_fuel(1) + var/turf/location = get_turf(user) + if (istype(location, /turf)) + location.hotspot_expose(700, 50, 1) + return - attack(mob/M as mob, mob/user as mob) - if(hasorgans(M)) - var/datum/organ/external/S = M:organs[user.zone_sel.selecting] - if(S) - message_admins("It appears [M] has \"null\" where there should be a [user.zone_sel.selecting]. Check into this, and tell SkyMarshal: \"[M.type]\"") - return ..() - if(!S.robot || user.a_intent != "help") - return ..() - if(S.brute_dam) - S.heal_damage(15,0,0,1) - if(user != M) - user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\ - "\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\ - "You hear a welder.") - else - user.visible_message("\red You patch some dents on your [S.display_name]",\ - "\red \The [user] patches some dents on their [S.display_name] with \the [src]",\ - "You hear a welder.") - else - user << "Nothing to fix!" + +/obj/item/weapon/weldingtool/attack_self(mob/user as mob) + toggle() + user.update_clothing() + return + +//Returns the amount of fuel in the welder +/obj/item/weapon/weldingtool/proc/get_fuel() + return reagents.get_reagent_amount("fuel") + + +//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use() +/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null) + if(!welding || !check_fuel()) + return 0 + if(get_fuel() >= amount) + reagents.remove_reagent("fuel", amount) + check_fuel() + if(M) + eyecheck(M) + return 1 + else + if(M) + M << "\blue You need more welding fuel to complete this task." + return 0 + +//Returns whether or not the welding tool is currently on. +/obj/item/weapon/weldingtool/proc/isOn() + return src.welding + +//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1) +//so that the welding tool updates accordingly +/obj/item/weapon/weldingtool/proc/setWelding(var/temp_welding) + //If we're turning it on + if(temp_welding > 0) + if (remove_fuel(1)) + usr << "\blue The [src] switches on." + src.force = 15 + src.damtype = "fire" + src.icon_state = "welder1" + processing_objects.Add(src) else - return ..() + usr << "\blue Need more fuel!" + src.welding = 0 + return + //Otherwise + else + usr << "\blue The [src] switches off." + src.force = 3 + src.damtype = "brute" + src.icon_state = "welder" + src.welding = 0 +//Turns off the welder if there is no more fuel (does this really need to be its own proc?) +/obj/item/weapon/weldingtool/proc/check_fuel() + if((get_fuel() <= 0) && welding) + toggle(1) + return 0 + return 1 + + +//Toggles the welder off and on +/obj/item/weapon/weldingtool/proc/toggle(var/message = 0) + if(!status) return + src.welding = !( src.welding ) + if (src.welding) + if (remove_fuel(1)) + usr << "\blue You switch the [src] on." + src.force = 15 + src.damtype = "fire" + src.icon_state = "welder1" + processing_objects.Add(src) + else + usr << "\blue Need more fuel!" + src.welding = 0 + return + else + if(!message) + usr << "\blue You switch the [src] off." + else + usr << "\blue The [src] shuts off!" + src.force = 3 + src.damtype = "brute" + src.icon_state = "welder" + src.welding = 0 + return + +//Decides whether or not to damage a player's eyes based on what they're wearing as protection +//Note: This should probably be moved to mob +/obj/item/weapon/weldingtool/proc/eyecheck(mob/user as mob) + if(!iscarbon(user)) return 1 + var/safety = user:eyecheck() + switch(safety) + if(1) + usr << "\red Your eyes sting a little." + user.eye_stat += rand(1, 2) + if(user.eye_stat > 12) + user.eye_blurry += rand(3,6) + if(0) + usr << "\red Your eyes burn." + user.eye_stat += rand(2, 4) + if(user.eye_stat > 10) + user.eye_blurry += rand(4,10) + if(-1) + usr << "\red Your thermals intensify the welder's glow. Your eyes itch and burn severely." + user.eye_blurry += rand(12,20) + user.eye_stat += rand(12, 16) + if(user.eye_stat > 10 && safety < 2) + user << "\red Your eyes are really starting to hurt. This can't be good for you!" + if (prob(user.eye_stat - 25 + 1)) + user << "\red You go blind!" + user.disabilities |= 128 + else if (prob(user.eye_stat - 15 + 1)) + user << "\red You go blind!" + user.eye_blind = 5 + user.eye_blurry = 5 + user.disabilities |= 1 +// spawn(100) +// user.disabilities &= ~1 //Simpler to just leave them short sighted. + return + +/obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob) + if(hasorgans(M)) + var/datum/organ/external/S = M:organs[user.zone_sel.selecting] + if(!S.robot || user.a_intent != "help") + return ..() + if(S.brute_dam) + S.heal_damage(15,0,0,1) + if(user != M) + user.visible_message("\red You patch some dents on \the [M]'s [S.display_name]",\ + "\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src]",\ + "You hear a welder.") + else + user.visible_message("\red You patch some dents on your [S.display_name]",\ + "\red \The [user] patches some dents on their [S.display_name] with \the [src]",\ + "You hear a welder.") + else + user << "Nothing to fix!" + else + return ..() /obj/item/weapon/weldingtool/largetank name = "Industrial Welding Tool" @@ -325,13 +361,21 @@ WELDINGTOOOL /obj/item/weapon/weldingtool/experimental name = "Experimental Welding Tool" - max_fuel = 80 + max_fuel = 40 w_class = 3.0 m_amt = 70 g_amt = 120 + origin_tech = "engineering=4;plasma=3" + icon_state = "ewelder" + var/last_gen = 0 +/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve + var/gen_amount = ((world.time-last_gen)/25) + reagents += (gen_amount) + if(reagents > max_fuel) + reagents = max_fuel /obj/item/weapon/wirecutters name = "wirecutters" desc = "This cuts wires." @@ -346,10 +390,10 @@ WELDINGTOOOL m_amt = 80 origin_tech = "materials=1;engineering=1" - New() - if(prob(50)) - icon_state = "cutters-y" - item_state = "cutters_yellow" +/obj/item/weapon/wirecutters/New() + if(prob(50)) + icon_state = "cutters-y" + item_state = "cutters_yellow" /obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob) if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable))) diff --git a/code/game/objects/mineral_doors.dm b/code/game/objects/mineral_doors.dm index f99a8d395fe..9e7fcb5fb2f 100644 --- a/code/game/objects/mineral_doors.dm +++ b/code/game/objects/mineral_doors.dm @@ -188,7 +188,8 @@ attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/weldingtool)) - if(W:welding) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) TemperatureAct(100) ..() diff --git a/code/game/objects/shooting_range.dm b/code/game/objects/shooting_range.dm index d678e9d88c4..6731b3e9e2c 100644 --- a/code/game/objects/shooting_range.dm +++ b/code/game/objects/shooting_range.dm @@ -95,7 +95,8 @@ attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/weldingtool)) - if(W:welding == 1) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) overlays = null usr << "You slice off [src]'s uneven chunks of aluminum and scorch marks." return diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm index a11beacd82f..88803375fc3 100644 --- a/code/game/objects/stacks/glass.dm +++ b/code/game/objects/stacks/glass.dm @@ -237,19 +237,20 @@ SHARDS /obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() - if ( istype(W, /obj/item/weapon/weldingtool) && W:welding ) - W:eyecheck(user) - var/obj/item/stack/sheet/glass/NG = new (user.loc) - for (var/obj/item/stack/sheet/glass/G in user.loc) - if(G==NG) - continue - if(G.amount>=G.max_amount) - continue - G.attackby(NG, user) - usr << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheets." - //SN src = null - del(src) - return + if ( istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) + var/obj/item/stack/sheet/glass/NG = new (user.loc) + for (var/obj/item/stack/sheet/glass/G in user.loc) + if(G==NG) + continue + if(G.amount>=G.max_amount) + continue + G.attackby(NG, user) + usr << "You add the newly-formed glass to the stack. It now contains [NG.amount] sheets." + //SN src = null + del(src) + return return ..() /obj/item/weapon/shard/HasEntered(AM as mob|obj) diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm index 087c562efa2..f4c9d52e19d 100644 --- a/code/game/objects/stacks/metal.dm +++ b/code/game/objects/stacks/metal.dm @@ -12,11 +12,14 @@ FLOOR TILES /obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) ..() - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(amount < 2) user << "\red You need at least two rods to do this." return - if(W:remove_fuel(0,user)) + + if(WT.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/structures.dm b/code/game/objects/structures.dm index 132fd7e00cc..9d7f29078aa 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -173,7 +173,6 @@ obj/structure/meteorhit(obj/O as obj) else return - /obj/structure/girder/displaced icon_state = "displaced" anchored = 0 @@ -259,9 +258,10 @@ obj/structure/meteorhit(obj/O as obj) var/turf/T = get_turf(src) T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead return - if (istype(C, /obj/item/weapon/weldingtool) && C:welding) - user << "\blue Slicing lattice joints ..." - C:eyecheck(user) + if (istype(C, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = C + if(WT.remove_fuel(0, user)) + user << "\blue Slicing lattice joints ..." new /obj/item/stack/rods(src.loc) del(src) diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index 1ffe6a64c7b..dfc0f319551 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -283,23 +283,22 @@ TABLE AND RACK OBJECT INTERATIONS return if (istype(W, /obj/item/weapon/weldingtool)) - if(W:welding == 1) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) if(src.status == 2) - W:welding = 2 user << "\blue Now weakening the reinforced table" playsound(src.loc, 'Welder.ogg', 50, 1) if (do_after(user, 50)) + if(!src || !WT.isOn()) return 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) if (do_after(user, 50)) + if(!src || !WT.isOn()) return user << "\blue Table strengthened" src.status = 2 - W:welding = 1 return if(isrobot(user)) return diff --git a/code/game/objects/uplinks.dm b/code/game/objects/uplinks.dm index c431b4c5890..95b897b3741 100644 --- a/code/game/objects/uplinks.dm +++ b/code/game/objects/uplinks.dm @@ -81,113 +81,184 @@ A list of items and costs is stored under the datum of every game mode, alongsid // src.menu_message += "Random Item (??)
" src.menu_message += "
" return +/* +//If 'random' was selected + proc/chooseRandomItem() + var/list/randomItems = list() + + //Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list + //Add only items the player can afford: + if(uses > 19) + randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops) + + if(uses > 9) + randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon + randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter + randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle + + //if(uses > 8) //Nothing... yet. + //if(uses > 7) //Nothing... yet. + + if(uses > 6) + randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module + randomItems.Add("/obj/item/device/radio/beacon/syndicate") //Singularity Beacon + + if(uses > 5) + randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver + + if(uses > 4) + randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow + randomItems.Add("/obj/item/device/powersink") //Powersink + + if(uses > 3) + randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword + randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer + randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector + + if(uses > 2) + randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades + randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen + randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge + randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit + randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card + randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer + randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit + randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key + randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant + randomItems.Add("/obj/item/clothing/glasses/thermal") //Thermal Imaging Goggles + + if(uses > 1) +/* + var/list/usrItems = usr.get_contents() //Checks to see if the user has a revolver before giving ammo + var/hasRevolver = 0 + for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it + if(istype(I,/obj/item/weapon/gun/projectile)) + hasRevolver = 1 + + if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo +*/ + randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo + randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes + randomItems.Add("/obj/item/weapon/plastique") //C4 + + if(uses > 0) + randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap + randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox + + if(!randomItems) + del(randomItems) + return 0 + else + var/buyItem = pick(randomItems) + + switch(buyItem) //Ok, this gets a little messy, sorry. + if("/obj/item/weapon/circuitboard/teleporter") + uses -= 20 + if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink" , "/obj/item/weapon/storage/box/syndicate") + uses -= 10 + if("/obj/item/weapon/aiModule/syndicate" , "/obj/item/device/radio/beacon/syndicate") + uses -= 7 + if("/obj/item/weapon/gun/projectile") + uses -= 6 + if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink") + uses -= 5 + if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon") + uses -= 4 + if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \ + "/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \ + "/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal") + uses -= 3 + if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique") + uses -= 2 + if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate") + uses -= 1 + del(randomItems) + return buyItem + + proc/handleStatTracking(var/boughtItem) + //For stat tracking, sorry for making it so ugly + if(!boughtItem) return + + switch(boughtItem) + if("/obj/item/weapon/circuitboard/teleporter") + feedback_add_details("traitor_uplink_items_bought","TP") + if("/obj/item/toy/syndicateballoon") + feedback_add_details("traitor_uplink_items_bought","BS") + if("/obj/item/weapon/storage/syndie_kit/imp_uplink") + feedback_add_details("traitor_uplink_items_bought","UI") + if("/obj/item/weapon/storage/box/syndicate") + feedback_add_details("traitor_uplink_items_bought","BU") + if("/obj/item/weapon/aiModule/syndicate") + feedback_add_details("traitor_uplink_items_bought","AI") + if("/obj/item/device/radio/beacon/syndicate") + feedback_add_details("traitor_uplink_items_bought","SB") + if("/obj/item/weapon/gun/projectile") + feedback_add_details("traitor_uplink_items_bought","RE") + if("/obj/item/weapon/gun/energy/crossbow") + feedback_add_details("traitor_uplink_items_bought","XB") + if("/obj/item/device/powersink") + feedback_add_details("traitor_uplink_items_bought","PS") + if("/obj/item/weapon/melee/energy/sword") + feedback_add_details("traitor_uplink_items_bought","ES") + if("/obj/item/clothing/mask/gas/voice") + feedback_add_details("traitor_uplink_items_bought","VC") + if("/obj/item/device/chameleon") + feedback_add_details("traitor_uplink_items_bought","CP") + if("/obj/item/weapon/storage/emp_kit") + feedback_add_details("traitor_uplink_items_bought","EM") + if("/obj/item/weapon/pen/paralysis") + feedback_add_details("traitor_uplink_items_bought","PP") + if("/obj/item/weapon/cartridge/syndicate") + feedback_add_details("traitor_uplink_items_bought","DC") + if("/obj/item/clothing/under/chameleon") + feedback_add_details("traitor_uplink_items_bought","CJ") + if("/obj/item/weapon/card/id/syndicate") + feedback_add_details("traitor_uplink_items_bought","AC") + if("/obj/item/weapon/card/emag") + feedback_add_details("traitor_uplink_items_bought","EC") + if("/obj/item/weapon/storage/syndie_kit/space") + feedback_add_details("traitor_uplink_items_bought","SS") + if("/obj/item/device/encryptionkey/binary") + feedback_add_details("traitor_uplink_items_bought","BT") + if("/obj/item/weapon/storage/syndie_kit/imp_freedom") + feedback_add_details("traitor_uplink_items_bought","FI") + if("/obj/item/clothing/glasses/thermal") + feedback_add_details("traitor_uplink_items_bought","TM") + if("/obj/item/ammo_magazine/a357") + feedback_add_details("traitor_uplink_items_bought","RA") + if("/obj/item/clothing/shoes/syndigaloshes") + feedback_add_details("traitor_uplink_items_bought","SH") + if("/obj/item/weapon/plastique") + feedback_add_details("traitor_uplink_items_bought","C4") + if("/obj/item/weapon/soap/syndie") + feedback_add_details("traitor_uplink_items_bought","SP") + if("/obj/item/weapon/storage/toolbox/syndicate") + feedback_add_details("traitor_uplink_items_bought","ST") +*/ Topic(href, href_list) if (href_list["buy_item"]) -/* if(href_list["buy_item"] == "random") - var/list/randomItems = list() - - //Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list - //Add only items the player can afford: - if(uses > 19) - randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops) - - if(uses > 9) - randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon - randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter - randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle - - //if(uses > 8) //Nothing... yet. - //if(uses > 7) //Nothing... yet. - - if(uses > 6) - randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module - randomItems.Add("/obj/item/device/radio/beacon/syndicate") //Singularity Beacon - - if(uses > 5) - randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver - - if(uses > 4) - randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow - randomItems.Add("/obj/item/device/powersink") //Powersink - - if(uses > 3) - randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword - randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer - randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector - - if(uses > 2) - randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades - randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen - randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge - randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit - randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card - randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer - randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit - randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key - randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant - randomItems.Add("/obj/item/clothing/glasses/thermal") //Thermal Imaging Goggles - - if(uses > 1) -/* - var/list/usrItems = usr.get_contents() //Checks to see if the user has a revolver before giving ammo - var/hasRevolver = 0 - for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it - if(istype(I,/obj/item/weapon/gun/projectile)) - hasRevolver = 1 - - if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo -*/ - randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo - randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes - randomItems.Add("/obj/item/weapon/plastique") //C4 - - if(uses > 0) - randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap - randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox - - if(!randomItems) - del(randomItems) - return 0 - else - href_list["buy_item"] = pick(randomItems) - - switch(href_list["buy_item"]) //Ok, this gets a little messy, sorry. - if("/obj/item/weapon/circuitboard/teleporter") - uses -= 20 - if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink" , "/obj/item/weapon/storage/box/syndicate") - uses -= 10 - if("/obj/item/weapon/aiModule/syndicate" , "/obj/item/device/radio/beacon/syndicate") - uses -= 7 - if("/obj/item/weapon/gun/projectile") - uses -= 6 - if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink") - uses -= 5 - if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon") - uses -= 4 - if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \ - "/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \ - "/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal") - uses -= 3 - if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique") - uses -= 2 - if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate") - uses -= 1 - - del(randomItems) - return 1 -*/ - - - if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item + if(href_list["buy_item"] == "random") return 0 +/* + var/boughtItem = chooseRandomItem() + if(boughtItem) + href_list["buy_item"] = boughtItem + feedback_add_details("traitor_uplink_items_bought","RN") + return 1 + else + return 0 +*/ + else + if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item + return 0 - //if(usr:mind && ticker.mode.traitors[usr:mind]) - //var/datum/traitorinfo/info = ticker.mode.traitors[usr:mind] - //info.spawnlist += href_list["buy_item"] - - uses -= text2num(href_list["cost"]) + //if(usr:mind && ticker.mode.traitors[usr:mind]) + //var/datum/traitorinfo/info = ticker.mode.traitors[usr:mind] + //info.spawnlist += href_list["buy_item"] + uses -= text2num(href_list["cost"]) +// handleStatTracking(href_list["buy_item"]) //Note: chooseRandomItem handles it's own stat tracking. This proc is not meant for 'random'. return 1 diff --git a/code/game/objects/windoor_assembly.dm b/code/game/objects/windoor_assembly.dm index c1b220927f2..b233c15e67b 100644 --- a/code/game/objects/windoor_assembly.dm +++ b/code/game/objects/windoor_assembly.dm @@ -68,7 +68,7 @@ obj/structure/windoor_assembly/Del() playsound(src.loc, 'Welder2.ogg', 50, 1) if(do_after(user, 40)) - if(!src) return + if(!src || !WT.isOn()) return user << "\blue You dissasembled the windoor assembly!" new /obj/item/stack/sheet/rglass(get_turf(src), 5) if(secure) diff --git a/code/game/turf.dm b/code/game/turf.dm index e5ec62ea5a2..a724fdcb48b 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -447,14 +447,11 @@ if( istype(W, /obj/item/weapon/weldingtool) ) var/obj/item/weapon/weldingtool/WT = W if( WT.remove_fuel(0,user) ) - WT.welding = 2 - user << "You begin slicing through the outer plating." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(100) - if( !istype(src, /turf/simulated/wall) || !user || !WT || !T ) return - WT.welding = 1 + if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T ) return if( user.loc == T && user.equipped() == WT ) user << "You remove the outer plating." @@ -607,14 +604,12 @@ if( istype(W, /obj/item/weapon/weldingtool) ) var/obj/item/weapon/weldingtool/WT = W if( WT.remove_fuel(0,user) ) - WT.welding = 2 user << "You begin slicing through the metal cover." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(60) - if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !T ) return - WT.welding = 1 + if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return if( d_state == 2 && user.loc == T && user.equipped() == WT ) src.d_state = 3 @@ -672,14 +667,12 @@ if( istype(W, /obj/item/weapon/weldingtool) ) var/obj/item/weapon/weldingtool/WT = W if( WT.remove_fuel(0,user) ) - WT.welding = 2 user << "You begin slicing through the support rods." playsound(src.loc, 'Welder.ogg', 100, 1) sleep(100) - if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !T ) return - WT.welding = 1 + if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return if( d_state == 5 && user.loc == T && user.equipped() == WT ) src.d_state = 6 @@ -1308,7 +1301,7 @@ turf/simulated/floor/return_siding_icon_state() if(istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/welder = C - if(welder.welding && (is_plating())) + if(welder.isOn() && (is_plating())) if(broken || burnt) if(welder.remove_fuel(0,user)) user << "\red You fix some dents on the broken plating." diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 86db839b1a3..f9f18dd6600 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -481,7 +481,7 @@ return null update_canmove() - if(sleeping || paralysis || stunned || weakened || resting || buckled || (changeling && changeling.changeling_fakedeath)) + if(stat || sleeping || paralysis || stunned || weakened || resting || buckled || (changeling && changeling.changeling_fakedeath)) canmove = 0 else diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e8523031224..30f5e66be48 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -420,11 +420,12 @@ if (istype(W, /obj/item/weapon/handcuffs)) // fuck i don't even know why isrobot() in handcuff code isn't working so this will have to do return - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W if(getBruteLoss() == 0) user << "There are no dents to fix here!" return - else if (W:remove_fuel(0)) + else if (WT.remove_fuel(0)) adjustBruteLoss(-30) if(getBruteLoss() < 0) bruteloss = 0 updatehealth() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index d83533c369d..05b1c48a284 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -394,29 +394,27 @@ else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack)) user << "\red You cannot put the board inside, the frame is damaged." return - else if (istype(W, /obj/item/weapon/weldingtool) && W:welding && opened && has_electronics==0 && !terminal) - if (W:get_fuel() < 3) - user << "\blue You need more welding fuel to do this." + else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal) + var/obj/item/weapon/weldingtool/WT = W + if (WT.get_fuel() < 3) + user << "\blue You need more welding fuel to complete this task." return user << "You start welding APC frame..." - 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(\ - "\red \The [src] has been cut apart by [user.name] with the welding tool.",\ - "You disassemble the broken APC frame.",\ - "\red You hear welding.") - else - new /obj/item/apc_frame(loc) - user.visible_message(\ - "\red \The [src] has been cut from the wall by [user.name] with the welding tool.",\ - "You cut APC frame from the wall.",\ - "\red You hear welding.") - W:welding = 1 + playsound(src.loc, 'Welder.ogg', 50, 1) + if(do_after(user, 50)) + if(!src || !WT.remove_fuel(3, user)) return + if (emagged || malfhack || (stat & BROKEN) || opened==2) + new /obj/item/stack/sheet/metal(loc) + user.visible_message(\ + "\red [src] has been cut apart by [user.name] with the weldingtool.",\ + "You disassembled the broken APC frame.",\ + "\red You hear welding.") + else + new /obj/item/apc_frame(loc) + user.visible_message(\ + "\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 else if (istype(W, /obj/item/apc_frame) && opened && emagged) @@ -769,7 +767,7 @@ (istype(robot) && (robot in malfai.connected_robots)) \ ) \ ) - user << "\red \The [src] has it's AI control disabled!" + user << "\red \The [src] has its AI control disabled!" user << browse(null, "window=apc") user.machine = null return 0 diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 6a439efe201..baab68ff9bb 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -1,4 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05 +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 /obj/machinery/emitter name = "Emitter" @@ -149,7 +149,8 @@ user << "\red The [src.name] needs to be unwelded from the floor." return - if(istype(W, /obj/item/weapon/weldingtool) && W:welding) + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W if(active) user << "Turn off the [src] first." return @@ -157,29 +158,27 @@ if(0) user << "\red The [src.name] needs to be wrenched to the floor." if(1) - if (W:remove_fuel(0,user)) - W:welding = 2 + if (WT.remove_fuel(0,user)) 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.", \ "You hear welding") if (do_after(user,20)) + if(!src || !WT.isOn()) return state = 2 user << "You weld the [src] to the floor." - W:welding = 1 else user << "\red You need more welding fuel to complete this task." if(2) - if (W:remove_fuel(0,user)) - W:welding = 2 + if (WT.remove_fuel(0,user)) 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.", \ "You hear welding") if (do_after(user,20)) + if(!src || !WT.isOn()) return state = 1 user << "You cut the [src] free from the floor." - W:welding = 1 else user << "\red 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 cbf636bbb76..ab0b3fa862d 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -1,4 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05 +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 var/containment_fail_announced = 0 @@ -119,35 +119,34 @@ field_generator power level display if(2) user << "\red The [src.name] needs to be unwelded from the floor." return - else if(istype(W, /obj/item/weapon/weldingtool) && W:welding) + else if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W switch(state) if(0) user << "\red The [src.name] needs to be wrenched to the floor." return if(1) - if (W:remove_fuel(0,user)) - W:welding = 2 + if (WT.remove_fuel(0,user)) 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.", \ "You hear welding") if (do_after(user,20)) + if(!src || !WT.isOn()) return 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 + if (WT.remove_fuel(0,user)) 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.", \ "You hear welding") if (do_after(user,20)) + if(!src || !WT.isOn()) return state = 1 user << "You cut the [src] free from the floor." - W:welding = 2 else return else @@ -356,4 +355,5 @@ field_generator power level display if((world.time - O.last_warning) > 50) //to stop message-spam temp = 0 message_admins("A singulo exists and a containment field has failed.",1) + investigate_log("has failed whilst a singulo exists.","singulo") O.last_warning = world.time diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index 43a5fee3115..7d8025ff6c1 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -203,8 +203,8 @@ if(W.remove_fuel(0,user)) playsound(src.loc, 'Welder2.ogg', 100, 1) user << "Welding the [nicetype] in place." - W:welding = 2 if(do_after(user, 20)) + if(!src || !W.isOn()) return user << "The [nicetype] has been welded in place!" update() // TODO: Make this neat if(ispipe) // Pipe @@ -233,7 +233,6 @@ del(src) return - W:welding = 1 else user << "You need more welding fuel to complete this task." return diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index f007eacbaf9..3ded32fecf0 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -68,8 +68,9 @@ if(W.remove_fuel(0,user)) playsound(src.loc, 'Welder2.ogg', 100, 1) user << "You start slicing the floorweld off the disposal unit." - W:welding = 2 + if(do_after(user,20)) + if(!src || !W.isOn()) return user << "You sliced the floorweld off the disposal unit." var/obj/structure/disposalconstruct/C = new (src.loc) C.ptype = 6 // 6 = disposal unit @@ -77,7 +78,6 @@ C.density = 1 C.update() del(src) - W:welding = 1 return else user << "You need more welding fuel to complete this task." @@ -900,23 +900,21 @@ if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I - if(W.welding) - 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 - var/atom/wloc = W.loc - user << "Slicing the disposal pipe." - sleep(30) - if(user.loc == uloc && wloc == W.loc) - welded() - else - user << "You must stay still while welding the pipe." - W:welding = 1 + if(W.remove_fuel(0,user)) + playsound(src.loc, 'Welder2.ogg', 100, 1) + // check if anything changed over 2 seconds + var/turf/uloc = user.loc + var/atom/wloc = W.loc + user << "Slicing the disposal pipe." + sleep(30) + if(!W.isOn()) return + if(user.loc == uloc && wloc == W.loc) + welded() else - user << "You need more welding fuel to cut the pipe." - return + user << "You must stay still while welding the pipe." + else + user << "You need more welding fuel to cut the pipe." + return // called when pipe is cut with welder proc/welded() @@ -1242,6 +1240,10 @@ return P + + + + //a trunk joining to a disposal bin or outlet on the same turf /obj/structure/disposalpipe/trunk icon_state = "pipe-t" @@ -1301,20 +1303,16 @@ if(istype(I, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = I - if(W.welding) - 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 - var/atom/wloc = W.loc - user << "Slicing the disposal pipe." - sleep(30) - if(user.loc == uloc && wloc == W.loc) - welded() - else - user << "You must stay still while welding the pipe." - W:welding = 1 + if(W.remove_fuel(0,user)) + playsound(src.loc, 'Welder2.ogg', 100, 1) + // check if anything changed over 2 seconds + var/turf/uloc = user.loc + var/atom/wloc = W.loc + user << "Slicing the disposal pipe." + sleep(30) + if(!W.isOn()) return + if(user.loc == uloc && wloc == W.loc) + welded() else user << "You must stay still while welding the pipe." else @@ -1447,8 +1445,8 @@ if(W.remove_fuel(0,user)) playsound(src.loc, 'Welder2.ogg', 100, 1) user << "You start slicing the floorweld off the disposal outlet." - W:welding = 2 if(do_after(user,20)) + if(!src || !W.isOn()) return user << "You sliced the floorweld off the disposal outlet." var/obj/structure/disposalconstruct/C = new (src.loc) C.ptype = 7 // 7 = outlet @@ -1456,7 +1454,6 @@ C.anchored = 1 C.density = 1 del(src) - W:welding = 1 return else user << "You need more welding fuel to complete this task." diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 98ebbaaa2d5..1da3ee7bbb5 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -446,8 +446,8 @@ if(W.remove_fuel(0,user)) playsound(src.loc, 'Welder2.ogg', 100, 1) user << "You start slicing the floorweld off the delivery chute." - W:welding = 2 if(do_after(user,20)) + if(!src || !W.isOn()) return user << "You sliced the floorweld off the delivery chute." var/obj/structure/disposalconstruct/C = new (src.loc) C.ptype = 8 // 8 = Delivery chute @@ -455,7 +455,6 @@ C.anchored = 1 C.density = 1 del(src) - W:welding = 1 return else user << "You need more welding fuel to complete this task."