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 946e06bb257..7e8eca55adf 100644 --- a/code/defines/turf.dm +++ b/code/defines/turf.dm @@ -316,7 +316,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/gamemodes/events/spacevines.dm b/code/game/gamemodes/events/spacevines.dm index b6839944e0f..8eae7a0cd5d 100644 --- a/code/game/gamemodes/events/spacevines.dm +++ b/code/game/gamemodes/events/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 24550199c62..2c436eda99e 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 a5617d2d5e2..f4de191c570 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 0d58f013629..ca026ce2e4b 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) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index df0ea43e15d..066178956d5 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -233,13 +233,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 c8da66c6635..977a179f346 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -639,13 +639,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) @@ -701,22 +707,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 46164b106d3..9dc9298fa70 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -756,8 +756,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 a4a47e81a66..b30cd7211f7 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/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index dd91a9a57db..d5d470db103 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -31,11 +31,12 @@ /obj/effect/decal/mecha_wreckage/attackby(obj/item/weapon/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(salvage_num <= 0) user << "You don't see anything that can be cut with [W]." return - if (!isemptylist(welder_salvage) && W:remove_fuel(0,user)) + if (!isemptylist(welder_salvage) && WT.remove_fuel(0,user)) var/type = prob(70)?pick(welder_salvage):null if(type) var/N = new type(get_turf(user)) 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 042e20e6dd4..54ce1884aa8 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) @@ -153,8 +154,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 80309b1c1fa..629e3c2c02a 100644 --- a/code/game/objects/door_assembly.dm +++ b/code/game/objects/door_assembly.dm @@ -175,20 +175,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 5179e6cd6e4..a5565b78c15 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -495,18 +495,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 1b1ec87223f..e0d64f9ede3 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -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 5dc2b9c8953..15a74acb478 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -123,20 +123,30 @@ 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) && (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/melee/energy/sword) && (W:active)) - light("\red [user] swings their [W], barely missing their nose. They light their [name] in the process.") + else if(istype(W, /obj/item/weapon/melee/energy/sword)) + var/obj/item/weapon/melee/energy/sword/S = W + if(S.active) + light("\red [user] swings their [W], barely missing their nose. They light their [name] in the process.") - else if(istype(W, /obj/item/weapon/match) && (W:lit > 0)) - light("\red [user] lights their [name] with their [W].") + 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].") return @@ -250,18 +260,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 5de9b3215d6..b2197a1acc3 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -71,217 +71,256 @@ 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() - 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.sdisabilities |= 1 - 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 + //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 + + +/obj/item/weapon/weldingtool/attack_self(mob/user as mob) + toggle() + 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 + 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 + +//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.sdisabilities |= 1 + 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 + return /obj/item/weapon/weldingtool/largetank @@ -322,7 +361,7 @@ WELDINGTOOOL m_amt = 80 origin_tech = "materials=1;engineering=1" - New() - if(prob(50)) - icon_state = "cutters-y" - item_state = "cutters_yellow" \ No newline at end of file +/obj/item/weapon/wirecutters/New() + if(prob(50)) + icon_state = "cutters-y" + item_state = "cutters_yellow" \ No newline at end of file diff --git a/code/game/objects/mineral_doors.dm b/code/game/objects/mineral_doors.dm index 17118f65f19..fb844265017 100644 --- a/code/game/objects/mineral_doors.dm +++ b/code/game/objects/mineral_doors.dm @@ -215,7 +215,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 d8d5b5c0bf4..cb14a32ec71 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 330cb6245ed..9f3d91c92d9 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 1acc05d70c0..27be50d553f 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -253,9 +253,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 f90ed28bb99..3be189a0534 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -238,24 +238,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 - W:eyecheck(user) 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 21d262f20e6..d8beaeb8f76 100644 --- a/code/game/objects/uplinks.dm +++ b/code/game/objects/uplinks.dm @@ -81,112 +81,180 @@ A list of items and costs is stored under the datum of every game mode, alongsid 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) + 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"] - 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"]) - + 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 0e8283bcf25..a7dd03fc2f6 100644 --- a/code/game/objects/windoor_assembly.dm +++ b/code/game/objects/windoor_assembly.dm @@ -58,22 +58,22 @@ obj/structure/windoor_assembly/Del() /obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob) + //I really should have spread this out across more states but thin little windoors are hard to sprite. switch(state) if("01") - 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 windoor assembly.", "You start to dissassemble the windoor 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 windoor assembly!" new /obj/item/stack/sheet/rglass(get_turf(src), 5) if(secure) new /obj/item/stack/rods(get_turf(src), 4) del(src) - W:welding = 1 else user << "\blue You need more welding fuel to dissassemble the windoor assembly." return diff --git a/code/game/turf.dm b/code/game/turf.dm index 47dcb2d3af9..f3e01ccfaf2 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -432,14 +432,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." @@ -592,14 +589,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 @@ -657,14 +652,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 @@ -1292,7 +1285,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 2b5de41de28..ab650a8ec94 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -357,7 +357,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 288950487fe..4c7504e72c9 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -369,8 +369,9 @@ 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 (W:remove_fuel(0)) + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if (WT.remove_fuel(0)) adjustBruteLoss(-30) updatehealth() add_fingerprint(user) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 122e6987bf1..0b5b9abb48e 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -364,29 +364,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) + 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 [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.") - 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) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 4196e8d8a9b..1f03a5dbb3f 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -146,7 +146,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 @@ -154,29 +155,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 adce022bb8b..f0b39f6e801 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -118,35 +118,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 diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index a026b50de44..af21add1669 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -195,8 +195,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 @@ -225,7 +225,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 6bcfa0c15e7..ce1a8bc83e3 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -67,8 +67,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 @@ -76,7 +77,6 @@ C.density = 1 C.update() del(src) - W:welding = 1 return else user << "You need more welding fuel to complete this task." @@ -813,23 +813,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() @@ -1109,23 +1107,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 // would transfer to next pipe segment, but we are in a trunk // if not entering from disposal bin, @@ -1241,8 +1237,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 @@ -1250,7 +1246,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 e7491a8d332..08a4cd16a1d 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -288,8 +288,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 @@ -297,7 +297,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/config/admins.txt b/config/admins.txt index d851bcdf48d..8e59145aed2 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -1,28 +1,2 @@ -quarxink - Game Master -tle - Game Master -xsi - Game Master -sillazi - Game Master -herpa - Game Master -scaredofshadows - Game Master -chicagoted - Game Master -neofite - Game Master -uristmcdorf - Game Master -cinless - Game Master -trubblebass - Game Master -mport2004 - Game Admin -lj82 - Game Admin -fatmanfive - Game Admin -thickwillynilly - Game Admin -euronumbers - Game Admin -deuryn - Game Admin -rosenritter - Game Admin -lastwish - Game Admin -tashdurandel - Game Admin -mario90900 - Game Admin -atomictroop - Game Admin -fateweaver - Game Admin -agouri - Game Master -errorage - Game Master -uhangi - Game Master -superxpdude - Game Master -petethegoat - Game Master \ No newline at end of file +nodrak - Game Master +carnwennan - Game Master \ No newline at end of file diff --git a/data/ban_unban_log.txt b/data/ban_unban_log.txt index e69de29bb2d..94a0dfc37f9 100644 --- a/data/ban_unban_log.txt +++ b/data/ban_unban_log.txt @@ -0,0 +1 @@ +Nodrak/(Nodrak) unjobbanned Guest-784924112/(Brody Guess) from Cyborg diff --git a/data/mode.txt b/data/mode.txt index bd81a61cbfd..ae791fed369 100644 --- a/data/mode.txt +++ b/data/mode.txt @@ -1 +1 @@ -traitor +extended