From eb7ae97624dec4d4e0e59bb187118686ebfeb5e0 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Thu, 7 Jun 2012 03:30:13 +0100 Subject: [PATCH] TG: Welding tool: Mostly code-related, the players won't notice much. - Welding tool code how has proper comments! Maybe not "proper" but at least I don't lie and say a proc is/does something that it doesn't actually do. - Welders now start full of fuel instead of some random amount between 10-20 - Someone decided it would be a good idea to set the welding tool's 'on/off' var in a ton of attackby() procs. These objects and turfs shouldnt even touch this variable. This is why people have been noticing their welding being on without the sprite or damagetype and amount reflecting that. - - I've removed a bunch of these instances but there are so many objects and turfs spread out through the code, there's no way to know if I've got them all (This is the majority of the files) - - I've created a new proc in welding tools that checks to see if they are turned on or not. "isOn()" - - Since I'm not sure if I've gotten every instance of this force-var-on, I've set the welding tool to update it's icon every process(). I hate adding checks like this to processes but it's necessary for now. - Added a setWelding() proc. If you HAVE to turn the welding tool on or off, use this, don't just change the var. In fact, dont even touch the 'welding' var anymore - Fixes issue 435 While changing the hundreds(literally) of cases of welding tool uses I've - Changed some :'s (object:varorproc) I've come across into .'s (object.varorproc) - Added checks to make sure the welding tool is actually on before using it (some attackby()'s didnt have this. Heck, some checked how much fuel you had, but didn't actually USE the fuel) - Added sanity checks after some do_after()s that were missing them Added traitor uplink items back to erro's stat tracker - Added 'random' with the tag "RN" - Added thermal meson glasses with the tag "TM" - Reorganized uplinks.dm a little by moving the 'random' item generation to its own proc - NOTE: I have absolutely no way to test this on my own, but it should work! I've tested a bunch of construction/deconstructions with the welding tool, but again I've probably missed a few things. If there are any problems, please let me know and I'll fix them asap. Revision: r3741 Author: johnsonmt88 --- .../components/unary/vent_pump.dm | 10 +- code/defines/turf.dm | 3 +- code/game/events/EventProcs/spacevines.dm | 3 +- code/game/machinery/bots/ed209bot.dm | 5 +- code/game/machinery/bots/secbot.dm | 5 +- code/game/machinery/computer/ai_core.dm | 8 +- .../game/machinery/computer/buildandrepair.dm | 7 +- code/game/machinery/portable_turret.dm | 54 +- code/game/mecha/mecha.dm | 5 +- code/game/mecha/mecha_construction_paths.dm | 4 +- code/game/objects/alien/egg.dm | 2 +- code/game/objects/alien/weeds.dm | 2 +- code/game/objects/closets.dm | 10 +- code/game/objects/door_assembly.dm | 9 +- code/game/objects/items.dm | 13 +- code/game/objects/items/candle.dm | 26 +- .../objects/items/weapons/cigs_lighters.dm | 31 +- code/game/objects/items/weapons/tools.dm | 476 ++++++++++-------- code/game/objects/mineral_doors.dm | 3 +- code/game/objects/shooting_range.dm | 3 +- code/game/objects/stacks/glass.dm | 27 +- code/game/objects/stacks/metal.dm | 7 +- code/game/objects/structures.dm | 8 +- code/game/objects/tables_racks.dm | 9 +- code/game/objects/uplinks.dm | 273 ++++++---- code/game/objects/windoor_assembly.dm | 2 +- code/game/turf.dm | 15 +- code/modules/mob/living/carbon/human/life.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 5 +- code/modules/power/apc.dm | 42 +- code/modules/power/singularity/emitter.dm | 15 +- .../power/singularity/field_generator.dm | 16 +- .../recycling/disposal-construction.dm | 3 +- code/modules/recycling/disposal.dm | 65 ++- code/modules/recycling/sortingmachinery.dm | 3 +- 35 files changed, 661 insertions(+), 510 deletions(-) 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."