diff --git a/code/__defines/flags.dm b/code/__defines/flags.dm
index 8af1d98622..18a2ec59ab 100644
--- a/code/__defines/flags.dm
+++ b/code/__defines/flags.dm
@@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
// Flags bitmasks. - Used in /atom/var/flags
#define NOBLUDGEON (1<<0) // When an item has this it produces no "X has been hit by Y with Z" message with the default handler.
-#define CONDUCT (1<<1) // Conducts electricity. (metal etc.)
+#define NOCONDUCT (1<<1) // Conducts electricity. (metal etc.)
#define ON_BORDER (1<<2) // Item has priority to check when entering or leaving.
#define NOBLOODY (1<<3) // Used for items if they don't want to get a blood overlay.
#define OPENCONTAINER (1<<4) // Is an open container for chemistry purposes.
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index 22dcf982fc..470774cf7b 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -222,7 +222,6 @@ var/global/list/PDA_Manifest = list()
throwforce = 0.0
throw_speed = 1
throw_range = 20
- flags = CONDUCT
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
user.drop_item()
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 75c95d0b0c..493d5ccd38 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -3,7 +3,6 @@
desc = "Should anything ever go wrong..."
icon = 'icons/obj/items.dmi'
icon_state = "red_phone"
- flags = CONDUCT
force = 3.0
throwforce = 2.0
throw_speed = 1
@@ -85,7 +84,6 @@
slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi',
)
- flags = CONDUCT
force = 5.0
throwforce = 7.0
w_class = ITEMSIZE_NORMAL
@@ -210,7 +208,7 @@
var/traitor_frequency = 0.0
var/mob/currentUser = null
var/obj/item/device/radio/origradio = null
- flags = CONDUCT | ONBELT
+ flags = ONBELT
w_class = ITEMSIZE_SMALL
item_state = "radio"
throw_speed = 4
@@ -228,7 +226,6 @@
var/selfdestruct = 0.0
var/traitor_frequency = 0.0
var/obj/item/device/radio/origradio = null
- flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "radio"
throwforce = 5
@@ -283,7 +280,6 @@
icon_state = "std_module"
item_state = "std_mod"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
var/mtype = 1 // 1=electronic 2=hardware
/obj/item/weapon/module/card_reader
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index f6e113c5b2..333d93bf50 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -2,7 +2,6 @@
name = "pinpointer"
icon = 'icons/obj/device.dmi'
icon_state = "pinoff"
- flags = CONDUCT
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
item_state = "electronic"
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 85544958cf..ed23884103 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -4,7 +4,6 @@
icon_state = "yellow"
density = 1
var/health = 100.0
- flags = CONDUCT
w_class = ITEMSIZE_HUGE
layer = TABLE_LAYER // Above catwalks, hopefully below other things
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index d21d751e7e..9f97ab0360 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -167,7 +167,7 @@
center = locate(x+center_x, y+center_y, z)
if(center)
for(var/obj/M in orange(magnetic_field, center))
- if(!M.anchored && (M.flags & CONDUCT))
+ if(!M.anchored && !(M.flags & NOCONDUCT))
step_towards(M, center)
for(var/mob/living/silicon/S in orange(magnetic_field, center))
diff --git a/code/game/machinery/wall_frames.dm b/code/game/machinery/wall_frames.dm
index dd75e2d8e9..2531c69574 100644
--- a/code/game/machinery/wall_frames.dm
+++ b/code/game/machinery/wall_frames.dm
@@ -3,7 +3,6 @@
desc = "Used for building frames."
icon = 'icons/obj/stock_parts.dmi'
icon_state = "frame_bitem"
- flags = CONDUCT
var/build_machine_type
var/refund_amt = 5
var/refund_type = /obj/item/stack/material/steel
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index 00720d13dc..dc4036294b 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -9,7 +9,6 @@
icon = 'icons/mecha/mech_construct.dmi'
icon_state = "blank"
w_class = ITEMSIZE_HUGE
- flags = CONDUCT
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2)
@@ -17,7 +16,6 @@
name="Mecha Chassis"
icon_state = "backbone"
var/datum/construction/construct
- flags = CONDUCT
attackby(obj/item/W as obj, mob/user as mob)
if(!construct || !construct.action(W, user))
diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm
index fe40f772dd..f14b19b117 100644
--- a/code/game/objects/items/apc_frame.dm
+++ b/code/game/objects/items/apc_frame.dm
@@ -5,7 +5,6 @@
desc = "Used for repairing or building APCs"
icon = 'icons/obj/apc_repair.dmi'
icon_state = "apc_frame"
- flags = CONDUCT
/obj/item/frame/apc/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm
index 00ef6501d4..a971115ada 100644
--- a/code/game/objects/items/devices/binoculars.dm
+++ b/code/game/objects/items/devices/binoculars.dm
@@ -1,10 +1,7 @@
/obj/item/device/binoculars
-
name = "binoculars"
desc = "A pair of binoculars."
icon_state = "binoculars"
-
- flags = CONDUCT
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
index 9775d64042..d0ae461edd 100644
--- a/code/game/objects/items/devices/chameleonproj.dm
+++ b/code/game/objects/items/devices/chameleonproj.dm
@@ -1,7 +1,6 @@
/obj/item/device/chameleon
name = "chameleon projector"
icon_state = "shield0"
- flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "electronic"
throwforce = 5.0
diff --git a/code/game/objects/items/devices/debugger.dm b/code/game/objects/items/devices/debugger.dm
index c8d326b44e..a0d41a6124 100644
--- a/code/game/objects/items/devices/debugger.dm
+++ b/code/game/objects/items/devices/debugger.dm
@@ -9,7 +9,6 @@
desc = "Used to debug electronic equipment."
icon = 'icons/obj/hacktool.dmi'
icon_state = "hacktool-g"
- flags = CONDUCT
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 35679544f1..1fd41ec768 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -7,7 +7,6 @@
w_class = ITEMSIZE_SMALL
throw_speed = 4
throw_range = 10
- flags = CONDUCT
origin_tech = list(TECH_MAGNET = 2, TECH_COMBAT = 1)
var/times_used = 0 //Number of times it's been used.
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 4543a6d726..83bdee0059 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/lighting.dmi'
icon_state = "flashlight"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
slot_flags = SLOT_BELT
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
action_button_name = "Toggle Flashlight"
@@ -25,8 +24,7 @@
/obj/item/device/flashlight/New()
if(power_use)
- START_PROCESSING(SSobj, src)
-
+ START_PROCESSING(SSobj, src)
if(cell_type)
cell = new cell_type(src)
brightness_levels = list("low" = 0.25, "medium" = 0.5, "high" = 1)
@@ -245,7 +243,6 @@
desc = "A pen-sized light, used by medical staff."
icon_state = "penlight"
item_state = "pen"
- flags = CONDUCT
slot_flags = SLOT_EARS
brightness_on = 2
w_class = ITEMSIZE_TINY
@@ -277,7 +274,6 @@
icon_state = "maglight"
flashlight_colour = LIGHT_COLOR_FLUORESCENT_FLASHLIGHT
force = 10
- flags = CONDUCT
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
attack_verb = list ("smacked", "thwacked", "thunked")
@@ -289,7 +285,6 @@
desc = "A miniature lamp, that might be used by small robots."
icon_state = "penlight"
item_state = null
- flags = CONDUCT
brightness_on = 2
w_class = ITEMSIZE_TINY
power_use = 0
@@ -302,7 +297,6 @@
force = 10
brightness_on = 5
w_class = ITEMSIZE_LARGE
- flags = CONDUCT
power_use = 0
on = 1
@@ -375,14 +369,14 @@
user.visible_message("[user] activates the flare.", "You pull the cord on the flare, activating it!")
src.force = on_damage
src.damtype = "fire"
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
/obj/item/device/flashlight/flare/proc/ignite() //Used for flare launchers.
on = !on
update_icon()
force = on_damage
damtype = "fire"
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
return 1
//Glowsticks
@@ -426,7 +420,7 @@
. = ..()
if(.)
user.visible_message("[user] cracks and shakes the glowstick.", "You crack and shake the glowstick, turning it on!")
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
/obj/item/device/flashlight/glowstick/red
name = "red glowstick"
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 8fd96981fc..7e2b054165 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -45,7 +45,6 @@
force = 8
icon = 'icons/obj/janitor.dmi'
icon_state = "lightreplacer0"
- flags = CONDUCT
slot_flags = SLOT_BELT
origin_tech = list(TECH_MAGNET = 3, TECH_MATERIAL = 2)
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 9c9f1aba59..0a12b31df2 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -3,7 +3,6 @@
desc = "A device used to project your voice. Loudly."
icon_state = "megaphone"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
var/spamcheck = 0
var/emagged = 0
diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
index e6385c751f..328477ff10 100644
--- a/code/game/objects/items/devices/multitool.dm
+++ b/code/game/objects/items/devices/multitool.dm
@@ -8,7 +8,6 @@
name = "multitool"
desc = "Used for pulsing wires to test which to cut. Not recommended by doctors."
icon_state = "multitool"
- flags = CONDUCT
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index b2c35d2ca1..477f161e07 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -1,134 +1,133 @@
-// Powersink - used to drain station power
-
-/obj/item/device/powersink
- name = "power sink"
- desc = "A nulling power sink which drains energy from electrical systems."
- icon_state = "powersink0"
- w_class = ITEMSIZE_LARGE
- flags = CONDUCT
- throwforce = 5
- throw_speed = 1
- throw_range = 2
-
- matter = list(DEFAULT_WALL_MATERIAL = 750,"waste" = 750)
-
- origin_tech = list(TECH_POWER = 3, TECH_ILLEGAL = 5)
- var/drain_rate = 1500000 // amount of power to drain per tick
- var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts.
- var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts.
- var/power_drained = 0 // Amount of power drained.
- var/max_power = 1e9 // Detonation point.
- var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
- var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
-
- var/datum/powernet/PN // Our powernet
- var/obj/structure/cable/attached // the attached cable
-
-/obj/item/device/powersink/Destroy()
- STOP_PROCESSING(SSobj, src)
- STOP_PROCESSING_POWER_OBJECT(src)
- ..()
-
-/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
- if(I.is_screwdriver())
- if(mode == 0)
- var/turf/T = loc
- if(isturf(T) && !!T.is_plating())
- attached = locate() in T
- if(!attached)
- to_chat(user, "No exposed cable here to attach to.")
- return
- else
- anchored = 1
- mode = 1
- src.visible_message("[user] attaches [src] to the cable!")
- playsound(src, I.usesound, 50, 1)
- return
- else
- to_chat(user, "Device must be placed over an exposed cable to attach to it.")
- return
- else
- if (mode == 2)
- STOP_PROCESSING(SSobj, src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite
- STOP_PROCESSING_POWER_OBJECT(src)
- anchored = 0
- mode = 0
- src.visible_message("[user] detaches [src] from the cable!")
- set_light(0)
- playsound(src, I.usesound, 50, 1)
- icon_state = "powersink0"
-
- return
- else
- ..()
-
-/obj/item/device/powersink/attack_ai()
- return
-
-/obj/item/device/powersink/attack_hand(var/mob/user)
- switch(mode)
- if(0)
- ..()
- if(1)
- src.visible_message("[user] activates [src]!")
- mode = 2
- icon_state = "powersink1"
- START_PROCESSING(SSobj, src)
- datum_flags &= ~DF_ISPROCESSING // Have to reset this flag so that PROCESSING_POWER_OBJECT can re-add it. It fails if the flag is already present. - Ater
- START_PROCESSING_POWER_OBJECT(src)
- if(2) //This switch option wasn't originally included. It exists now. --NeoFite
- src.visible_message("[user] deactivates [src]!")
- mode = 1
- set_light(0)
- icon_state = "powersink0"
- STOP_PROCESSING(SSobj, src)
- STOP_PROCESSING_POWER_OBJECT(src)
-
-/obj/item/device/powersink/pwr_drain()
- if(!attached)
- return 0
-
- if(drained_this_tick)
- return 1
- drained_this_tick = 1
-
- var/drained = 0
-
- if(!PN)
- return 1
-
- set_light(12)
- PN.trigger_warning()
- // found a powernet, so drain up to max power from it
- drained = PN.draw_power(drain_rate)
- // if tried to drain more than available on powernet
- // now look for APCs and drain their cells
- if(drained < drain_rate)
- for(var/obj/machinery/power/terminal/T in PN.nodes)
- // Enough power drained this tick, no need to torture more APCs
- if(drained >= drain_rate)
- break
- if(istype(T.master, /obj/machinery/power/apc))
- var/obj/machinery/power/apc/A = T.master
- if(A.operating && A.cell)
- var/cur_charge = A.cell.charge / CELLRATE
- var/drain_val = min(apc_drain_rate, cur_charge)
- A.cell.use(drain_val * CELLRATE)
- drained += drain_val
- power_drained += drained
- return 1
-
-
-/obj/item/device/powersink/process()
- drained_this_tick = 0
- power_drained -= min(dissipation_rate, power_drained)
- if(power_drained > max_power * 0.95)
- playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
- if(power_drained >= max_power)
- explosion(src.loc, 3,6,9,12)
- qdel(src)
- return
- if(attached && attached.powernet)
- PN = attached.powernet
- else
- PN = null
+// Powersink - used to drain station power
+
+/obj/item/device/powersink
+ name = "power sink"
+ desc = "A nulling power sink which drains energy from electrical systems."
+ icon_state = "powersink0"
+ w_class = ITEMSIZE_LARGE
+ throwforce = 5
+ throw_speed = 1
+ throw_range = 2
+
+ matter = list(DEFAULT_WALL_MATERIAL = 750,"waste" = 750)
+
+ origin_tech = list(TECH_POWER = 3, TECH_ILLEGAL = 5)
+ var/drain_rate = 1500000 // amount of power to drain per tick
+ var/apc_drain_rate = 5000 // Max. amount drained from single APC. In Watts.
+ var/dissipation_rate = 20000 // Passive dissipation of drained power. In Watts.
+ var/power_drained = 0 // Amount of power drained.
+ var/max_power = 1e9 // Detonation point.
+ var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
+ var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
+
+ var/datum/powernet/PN // Our powernet
+ var/obj/structure/cable/attached // the attached cable
+
+/obj/item/device/powersink/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ STOP_PROCESSING_POWER_OBJECT(src)
+ ..()
+
+/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
+ if(I.is_screwdriver())
+ if(mode == 0)
+ var/turf/T = loc
+ if(isturf(T) && !!T.is_plating())
+ attached = locate() in T
+ if(!attached)
+ to_chat(user, "No exposed cable here to attach to.")
+ return
+ else
+ anchored = 1
+ mode = 1
+ src.visible_message("[user] attaches [src] to the cable!")
+ playsound(src, I.usesound, 50, 1)
+ return
+ else
+ to_chat(user, "Device must be placed over an exposed cable to attach to it.")
+ return
+ else
+ if (mode == 2)
+ STOP_PROCESSING(SSobj, src) // Now the power sink actually stops draining the station's power if you unhook it. --NeoFite
+ STOP_PROCESSING_POWER_OBJECT(src)
+ anchored = 0
+ mode = 0
+ src.visible_message("[user] detaches [src] from the cable!")
+ set_light(0)
+ playsound(src, I.usesound, 50, 1)
+ icon_state = "powersink0"
+
+ return
+ else
+ ..()
+
+/obj/item/device/powersink/attack_ai()
+ return
+
+/obj/item/device/powersink/attack_hand(var/mob/user)
+ switch(mode)
+ if(0)
+ ..()
+ if(1)
+ src.visible_message("[user] activates [src]!")
+ mode = 2
+ icon_state = "powersink1"
+ START_PROCESSING(SSobj, src)
+ datum_flags &= ~DF_ISPROCESSING // Have to reset this flag so that PROCESSING_POWER_OBJECT can re-add it. It fails if the flag is already present. - Ater
+ START_PROCESSING_POWER_OBJECT(src)
+ if(2) //This switch option wasn't originally included. It exists now. --NeoFite
+ src.visible_message("[user] deactivates [src]!")
+ mode = 1
+ set_light(0)
+ icon_state = "powersink0"
+ STOP_PROCESSING(SSobj, src)
+ STOP_PROCESSING_POWER_OBJECT(src)
+
+/obj/item/device/powersink/pwr_drain()
+ if(!attached)
+ return 0
+
+ if(drained_this_tick)
+ return 1
+ drained_this_tick = 1
+
+ var/drained = 0
+
+ if(!PN)
+ return 1
+
+ set_light(12)
+ PN.trigger_warning()
+ // found a powernet, so drain up to max power from it
+ drained = PN.draw_power(drain_rate)
+ // if tried to drain more than available on powernet
+ // now look for APCs and drain their cells
+ if(drained < drain_rate)
+ for(var/obj/machinery/power/terminal/T in PN.nodes)
+ // Enough power drained this tick, no need to torture more APCs
+ if(drained >= drain_rate)
+ break
+ if(istype(T.master, /obj/machinery/power/apc))
+ var/obj/machinery/power/apc/A = T.master
+ if(A.operating && A.cell)
+ var/cur_charge = A.cell.charge / CELLRATE
+ var/drain_val = min(apc_drain_rate, cur_charge)
+ A.cell.use(drain_val * CELLRATE)
+ drained += drain_val
+ power_drained += drained
+ return 1
+
+
+/obj/item/device/powersink/process()
+ drained_this_tick = 0
+ power_drained -= min(dissipation_rate, power_drained)
+ if(power_drained > max_power * 0.95)
+ playsound(src, 'sound/effects/screech.ogg', 100, 1, 1)
+ if(power_drained >= max_power)
+ explosion(src.loc, 3,6,9,12)
+ qdel(src)
+ return
+ if(attached && attached.powernet)
+ PN = attached.powernet
+ else
+ PN = null
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index ddcb23a5aa..617b314600 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -8,7 +8,6 @@
)
item_state = "electropack"
frequency = 1449
- flags = CONDUCT
slot_flags = SLOT_BACK
w_class = ITEMSIZE_HUGE
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 571fd5f39d..6d823f217f 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -8,7 +8,7 @@
anchored = 1
w_class = ITEMSIZE_LARGE
canhear_range = 2
- flags = CONDUCT | NOBLOODY
+ flags = NOBLOODY
var/circuit = /obj/item/weapon/circuitboard/intercom
var/number = 0
var/last_tick //used to delay the powercheck
@@ -60,7 +60,7 @@
/obj/item/device/radio/intercom/New()
..()
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
circuit = new circuit(src)
/obj/item/device/radio/intercom/department/medbay/New()
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 67eb06a33a..971eb26a46 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -45,7 +45,6 @@ var/global/list/default_medbay_channels = list(
var/adhoc_fallback = FALSE //Falls back to 'radio' mode if subspace not available
var/syndie = 0//Holder to see if it's a syndicate encrypted radio
var/centComm = 0//Holder to see if it's a CentCom encrypted radio
- flags = CONDUCT
slot_flags = SLOT_BELT
throw_speed = 2
throw_range = 9
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 8d4b4928ac..b155a1fb54 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -15,7 +15,6 @@ HALOGEN COUNTER - Radcount on mobs
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
icon_state = "health"
item_state = "healthanalyzer"
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = ITEMSIZE_SMALL
@@ -299,7 +298,6 @@ HALOGEN COUNTER - Radcount on mobs
icon_state = "atmos"
item_state = "analyzer"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
@@ -337,7 +335,7 @@ HALOGEN COUNTER - Radcount on mobs
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
icon_state = "spectrometer"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT | OPENCONTAINER
+ flags = OPENCONTAINER
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
@@ -399,7 +397,6 @@ HALOGEN COUNTER - Radcount on mobs
icon_state = "spectrometer"
item_state = "analyzer"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
@@ -447,7 +444,6 @@ HALOGEN COUNTER - Radcount on mobs
item_state = "xenobio"
origin_tech = list(TECH_BIO = 1)
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
throwforce = 0
throw_speed = 3
throw_range = 7
@@ -490,7 +486,6 @@ HALOGEN COUNTER - Radcount on mobs
icon_state = "eftpos"
desc = "A hand-held halogen counter, used to detect the level of irradiation of living beings."
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 2)
throwforce = 0
throw_speed = 3
diff --git a/code/game/objects/items/devices/spy_bug.dm b/code/game/objects/items/devices/spy_bug.dm
index ce145fed9e..e3392f33fe 100644
--- a/code/game/objects/items/devices/spy_bug.dm
+++ b/code/game/objects/items/devices/spy_bug.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/grenade.dmi'
icon_state = "camgrenade"
item_state = "empgrenade"
- flags = CONDUCT
w_class = ITEMSIZE_SMALL
force = 0
throwforce = 5.0
@@ -50,7 +49,6 @@
icon = 'icons/obj/grenade.dmi'
icon_state = "camgrenadebroken"
item_state = "empgrenade"
- flags = CONDUCT
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
@@ -68,7 +66,6 @@
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS
origin_tech = list(TECH_ENGINEERING = 1, TECH_ILLEGAL = 3) //crush it and you lose the data
- flags = CONDUCT
force = 0
throwforce = 5.0
throw_range = 15
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index 98df7bcae1..e11cce4762 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -7,7 +7,6 @@
slot_flags = SLOT_BACK
//copied from tank.dm
- flags = CONDUCT
force = 5.0
throwforce = 10.0
throw_speed = 1
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 841bcc18ed..c2320dcf44 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -13,7 +13,6 @@
var/playsleepseconds = 0.0
var/obj/item/device/tape/mytape = /obj/item/device/tape/random
var/canprint = 1
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 2
throw_speed = 4
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 7820d0c4ea..655e6efe31 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -22,7 +22,6 @@ effective or pretty fucking useless.
w_class = ITEMSIZE_TINY
throw_speed = 4
throw_range = 10
- flags = CONDUCT
item_state = "electronic"
origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 3, TECH_ILLEGAL = 3)
diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm
index 7a7828ef95..52a830f811 100644
--- a/code/game/objects/items/devices/whistle.dm
+++ b/code/game/objects/items/devices/whistle.dm
@@ -4,7 +4,6 @@
icon_state = "voice0"
item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
w_class = ITEMSIZE_TINY
- flags = CONDUCT
slot_flags = SLOT_EARS
var/use_message = "Halt! Security!"
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 180e261fc2..7565b9c9ac 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -3,7 +3,6 @@
icon = 'icons/obj/robot_parts.dmi'
item_state = "buildpipe"
icon_state = "blank"
- flags = CONDUCT
slot_flags = SLOT_BELT
var/list/part = null // Order of args is important for installing robolimbs.
var/sabotaged = 0 //Emagging limbs can have repercussions when installed as prosthetics.
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index b2477ae9ff..fb09c03ff8 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -3,7 +3,6 @@
desc = "Some rods. Can be used for building, or something."
singular_name = "metal rod"
icon_state = "rods"
- flags = CONDUCT
w_class = ITEMSIZE_NORMAL
force = 9.0
throwforce = 15.0
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 17f4121a76..93c70930d1 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -113,7 +113,6 @@
throwforce = 15.0
throw_speed = 5
throw_range = 20
- flags = CONDUCT
no_variants = FALSE
/obj/item/stack/tile/floor/red
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 0f9f4bff3c..89182806db 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -295,7 +295,6 @@
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
)
- flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_BACK
force = 5
throwforce = 5
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 13c4b29d45..4d6b6eea03 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -11,7 +11,6 @@ AI MODULES
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
desc = "An AI Module for transmitting encrypted instructions to the AI."
- flags = CONDUCT
force = 5.0
w_class = ITEMSIZE_SMALL
throwforce = 5.0
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 64f0ebab5e..f7f22d7611 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -5,7 +5,7 @@
icon = 'icons/obj/tools.dmi'
icon_state = "rcd"
item_state = "rcd"
- flags = CONDUCT | NOBLUDGEON
+ flags = NOBLUDGEON
force = 10
throwforce = 10
throw_speed = 1
diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm
index 7cddfd1efc..e1c165bc2f 100644
--- a/code/game/objects/items/weapons/autopsy.dm
+++ b/code/game/objects/items/weapons/autopsy.dm
@@ -8,7 +8,6 @@
icon = 'icons/obj/autopsy_scanner.dmi'
icon_state = ""
item_state = "autopsy_scanner"
- flags = CONDUCT
w_class = ITEMSIZE_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
var/list/datum/autopsy_data_scanner/wdata = list()
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index e4082b3352..39fff82a82 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -502,7 +502,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = "lighter-g"
w_class = ITEMSIZE_TINY
throwforce = 4
- flags = CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("burnt", "singed")
var/base_state
diff --git a/code/game/objects/items/weapons/circuitboards/circuitboard.dm b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
index 83a651a201..f049197d88 100644
--- a/code/game/objects/items/weapons/circuitboards/circuitboard.dm
+++ b/code/game/objects/items/weapons/circuitboards/circuitboard.dm
@@ -12,7 +12,6 @@
density = 0
anchored = 0
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
force = 5.0
throwforce = 5.0
throw_speed = 3
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index 06649d7982..44242719fd 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -5,7 +5,6 @@
icon_state = "fire_extinguisher0"
item_state = "fire_extinguisher"
hitsound = 'sound/weapons/smash.ogg'
- flags = CONDUCT
throwforce = 10
w_class = ITEMSIZE_NORMAL
throw_speed = 2
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 1d9a926e2e..498cad3f68 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -8,7 +8,6 @@
slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi',
)
item_state = "flamethrower_0"
- flags = CONDUCT
force = 3.0
throwforce = 10.0
throw_speed = 1
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 7b7e85cce3..d7512f54b1 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -7,7 +7,6 @@
item_state = "grenade"
throw_speed = 4
throw_range = 20
- flags = CONDUCT
slot_flags = SLOT_MASK|SLOT_BELT
var/active = 0
diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
index a6ad6f4592..7d725c36bb 100644
--- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm
+++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
@@ -59,7 +59,6 @@
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
item_state = "briefcase"
- flags = CONDUCT
force = 8.0
throw_speed = 1
throw_range = 4
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index f3e5d05fdf..12ed2459c6 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -4,7 +4,6 @@
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "handcuff"
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 5
w_class = ITEMSIZE_SMALL
@@ -205,7 +204,6 @@ var/last_chew = 0
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "legcuff"
- flags = CONDUCT
throwforce = 0
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MATERIAL = 1)
diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm
index ded033a746..bfd059f74d 100644
--- a/code/game/objects/items/weapons/improvised_components.dm
+++ b/code/game/objects/items/weapons/improvised_components.dm
@@ -44,7 +44,6 @@
desc = "A rod with some wire wrapped around the top. It'd be easy to attach something to the top bit."
icon_state = "wiredrod"
item_state = "rods"
- flags = CONDUCT
force = 8
throwforce = 10
w_class = ITEMSIZE_NORMAL
diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm
index 2b1f54fb09..bce6cb22dd 100644
--- a/code/game/objects/items/weapons/material/knives.dm
+++ b/code/game/objects/items/weapons/material/knives.dm
@@ -59,7 +59,6 @@
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
- flags = CONDUCT
sharp = 1
edge = 1
force_divisor = 0.15 // 9 when wielded with hardness 60 (steel)
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index 6c4930950e..dae4a19d15 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -7,7 +7,7 @@
sharp = 0
edge = 0
armor_penetration = 50
- flags = NOBLOODY
+ flags = NOCONDUCT | NOBLOODY
var/lrange = 2
var/lpower = 2
var/lcolor = "#0099FF"
@@ -82,7 +82,6 @@
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
- flags = CONDUCT | NOBLOODY
origin_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 4)
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
sharp = 1
@@ -268,7 +267,7 @@
spark_system.set_up(5, 0, src)
spark_system.attach(src)
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/blade/Destroy()
diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm
index 81f233cdec..7d390d613f 100644
--- a/code/game/objects/items/weapons/melee/misc.dm
+++ b/code/game/objects/items/weapons/melee/misc.dm
@@ -2,7 +2,6 @@
name = "chain of command"
desc = "A tool used by great men to placate the frothing masses."
icon_state = "chain"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 10
throwforce = 7
@@ -21,7 +20,6 @@
icon = 'icons/obj/items.dmi'
icon_state = "umbrella_closed"
addblends = "umbrella_closed_a"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 5
throwforce = 5
diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
index 814592a890..a1a2756eca 100644
--- a/code/game/objects/items/weapons/shields.dm
+++ b/code/game/objects/items/weapons/shields.dm
@@ -58,7 +58,6 @@
desc = "A shield adept for close quarters engagement. It's also capable of protecting from less powerful projectiles."
icon = 'icons/obj/weapons.dmi'
icon_state = "riot"
- flags = CONDUCT
slot_flags = SLOT_BACK
force = 5.0
throwforce = 5.0
@@ -115,7 +114,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "eshield0" // eshield1 for expanded
slot_flags = SLOT_EARS
- flags = CONDUCT
+ flags = NOCONDUCT
force = 3.0
throwforce = 5.0
throw_speed = 1
diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm
index aa023dce18..285461d937 100644
--- a/code/game/objects/items/weapons/storage/briefcase.dm
+++ b/code/game/objects/items/weapons/storage/briefcase.dm
@@ -2,7 +2,6 @@
name = "briefcase"
desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
- flags = CONDUCT
force = 8.0
throw_speed = 1
throw_range = 4
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index 6576578a80..8edc046972 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/storage.dmi'
icon_state = "red"
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
- flags = CONDUCT
force = 10
throwforce = 10
throw_speed = 1
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 50468951a4..f011cd917b 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -13,7 +13,6 @@
desc = "This shouldn't be here, ahelp it."
icon = 'icons/obj/surgery.dmi'
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
var/helpforce = 0 //For help intent things
/obj/item/weapon/surgical/attack(mob/M, mob/user)
@@ -92,7 +91,7 @@
origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1)
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
-
+
suicide_act(mob/user)
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
viewers(user) << pick("\The [user] is slitting [TU.his] wrists with the [src.name]! It looks like [TU.hes] trying to commit suicide.", \
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 4aa6986d16..6308759044 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -79,7 +79,6 @@
desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
icon_state = "phoron"
gauge_icon = null
- flags = CONDUCT
slot_flags = null //they have no straps!
/obj/item/weapon/tank/phoron/Initialize()
@@ -105,7 +104,6 @@
desc = "Contains dangerous phoron. Do not inhale. Warning: extremely flammable."
icon_state = "phoron_vox"
gauge_icon = null
- flags = CONDUCT
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
slot_flags = SLOT_BACK //these ones have straps!
@@ -124,7 +122,6 @@
icon_state = "emergency"
gauge_icon = "indicator_emergency"
gauge_cap = 4
- flags = CONDUCT
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
force = 4
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 473ea916f8..fb7a9accd4 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -15,7 +15,6 @@ var/list/global/tank_gauge_cache = list()
var/last_gauge_pressure
var/gauge_cap = 6
- flags = CONDUCT
slot_flags = SLOT_BACK
w_class = ITEMSIZE_NORMAL
diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm
index 39e164d49f..137eadb60d 100644
--- a/code/game/objects/items/weapons/teleportation.dm
+++ b/code/game/objects/items/weapons/teleportation.dm
@@ -16,7 +16,6 @@
var/frequency = 1451
var/broadcasting = null
var/listening = 1.0
- flags = CONDUCT
w_class = ITEMSIZE_SMALL
item_state = "electronic"
throw_speed = 4
diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm
index 721f5e30c9..a970cd5df8 100644
--- a/code/game/objects/items/weapons/tools/crowbar.dm
+++ b/code/game/objects/items/weapons/tools/crowbar.dm
@@ -7,7 +7,6 @@
desc = "Used to remove floors and to pry open doors."
icon = 'icons/obj/tools.dmi'
icon_state = "crowbar"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 6
throwforce = 7
diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm
index 249f49f529..26a5ef35da 100644
--- a/code/game/objects/items/weapons/tools/screwdriver.dm
+++ b/code/game/objects/items/weapons/tools/screwdriver.dm
@@ -6,7 +6,6 @@
desc = "You can be totally screwwy with this."
icon = 'icons/obj/tools.dmi'
icon_state = "screwdriver"
- flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_EARS
force = 6
w_class = ITEMSIZE_TINY
diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
index 9aed4f82a5..2fe76d5fb4 100644
--- a/code/game/objects/items/weapons/tools/weldingtool.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -1,603 +1,602 @@
-#define WELDER_FUEL_BURN_INTERVAL 13
-/*
- * Welding Tool
- */
-/obj/item/weapon/weldingtool
- name = "\improper welding tool"
- icon = 'icons/obj/tools.dmi'
- icon_state = "welder"
- item_state = "welder"
- flags = 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 = ITEMSIZE_SMALL
-
- //Cost to make in the autolathe
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
-
- //R&D tech level
- origin_tech = list(TECH_ENGINEERING = 1)
-
- //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
-
- var/acti_sound = 'sound/items/welderactivate.ogg'
- var/deac_sound = 'sound/items/welderdeactivate.ogg'
- usesound = 'sound/items/Welder2.ogg'
- var/change_icons = TRUE
- var/flame_intensity = 2 //how powerful the emitted light is when used.
- var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
- var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
- var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
- var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
- toolspeed = 1
-
-/obj/item/weapon/weldingtool/Initialize()
- . = ..()
-// 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)
- update_icon()
- if(always_process)
- START_PROCESSING(SSobj, src)
- ..()
-
-/obj/item/weapon/weldingtool/Destroy()
- if(welding || always_process)
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/weapon/weldingtool/examine(mob/user)
- if(..(user, 0))
- if(max_fuel)
- to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
-
-/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
- if(ishuman(A) && user.a_intent == I_HELP)
- var/mob/living/carbon/human/H = A
- var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
-
- if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
- return ..()
-
- if(!welding)
- to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
- return 1
-
- if(S.robo_repair(15, BRUTE, "some dents", src, user))
- remove_fuel(1, user)
- return 1
-
- return ..()
-
-/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
- if(istype(W,/obj/item/weapon/tool/screwdriver))
- if(welding)
- to_chat(user, "Stop welding first!")
- return
- status = !status
- if(status)
- to_chat(user, "You secure the welder.")
- else
- to_chat(user, "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.remove_from_mob(src)
- else
- user.remove_from_mob(src)
- src.master = F
- src.layer = initial(src.layer)
- user.remove_from_mob(src)
- if (user.client)
- user.client.screen -= src
- src.loc = F
- src.add_fingerprint(user)
- return
-
- ..()
- return
-
-/obj/item/weapon/weldingtool/process()
- if(welding)
- ++burned_fuel_for
- if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
- remove_fuel(1)
- if(get_fuel() < 1)
- setWelding(0)
- //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/living))
- var/mob/living/M = location
- if(M.item_is_in_hands(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, proximity)
- if(!proximity) return
- if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
- if(!welding && max_fuel)
- O.reagents.trans_to_obj(src, max_fuel)
- to_chat(user, "Welder refueled")
- playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
- return
- else if(!welding)
- to_chat(user, "[src] doesn't use fuel.")
- return
- else
- message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
- log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
- to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
- var/obj/structure/reagent_dispensers/fueltank/tank = O
- tank.explode()
- return
- if (src.welding)
- remove_fuel(1)
- var/turf/location = get_turf(user)
- if(isliving(O))
- var/mob/living/L = O
- L.IgniteMob()
- if (istype(location, /turf))
- location.hotspot_expose(700, 50, 1)
-/obj/item/weapon/weldingtool/attack_self(mob/user)
- setWelding(!welding, user)
-
-//Returns the amount of fuel in the welder
-/obj/item/weapon/weldingtool/proc/get_fuel()
- return reagents.get_reagent_amount("fuel")
-
-/obj/item/weapon/weldingtool/proc/get_max_fuel()
- return max_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)
- return 0
- if(amount)
- burned_fuel_for = 0 // Reset the counter since we're removing fuel.
- if(get_fuel() >= amount)
- reagents.remove_reagent("fuel", amount)
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more welding fuel to complete this task.")
- update_icon()
- return 0
-
-//Returns whether or not the welding tool is currently on.
-/obj/item/weapon/weldingtool/proc/isOn()
- return welding
-
-/obj/item/weapon/weldingtool/update_icon()
- ..()
- overlays.Cut()
- // Welding overlay.
- if(welding)
- var/image/I = image(icon, src, "[icon_state]-on")
- overlays.Add(I)
- item_state = "[initial(item_state)]1"
- else
- item_state = initial(item_state)
-
- // Fuel counter overlay.
- if(change_icons && get_max_fuel())
- var/ratio = get_fuel() / get_max_fuel()
- ratio = CEILING(ratio * 4, 1) * 25
- var/image/I = image(icon, src, "[icon_state][ratio]")
- overlays.Add(I)
-
- // Lights
- if(welding && flame_intensity)
- set_light(flame_intensity, flame_intensity, flame_color)
- else
- set_light(0)
-
-// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
- var/mob/M = loc
- if(istype(M))
- M.update_inv_l_hand()
- M.update_inv_r_hand()
-
-/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
- if(!canremove)
- return
-
- if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
-
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
- return
-
- if (!( istype(over_object, /obj/screen) ))
- return ..()
-
- //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
- //there's got to be a better way of doing this.
- if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
- return
-
- if (( usr.restrained() ) || ( usr.stat ))
- return
-
- if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
- return
-
- switch(over_object.name)
- if("r_hand")
- usr.u_equip(src)
- usr.put_in_r_hand(src)
- if("l_hand")
- usr.u_equip(src)
- usr.put_in_l_hand(src)
- src.add_fingerprint(usr)
-
-//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/set_welding, var/mob/M)
- if(!status) return
-
- var/turf/T = get_turf(src)
- //If we're turning it on
- if(set_welding && !welding)
- if (get_fuel() > 0)
- if(M)
- to_chat(M, "You switch the [src] on.")
- else if(T)
- T.visible_message("\The [src] turns on.")
- playsound(loc, acti_sound, 50, 1)
- src.force = 15
- src.damtype = "fire"
- src.w_class = ITEMSIZE_LARGE
- src.hitsound = 'sound/items/welder.ogg'
- welding = 1
- update_icon()
- if(!always_process)
- START_PROCESSING(SSobj, src)
- else
- if(M)
- var/msg = max_fuel ? "welding fuel" : "charge"
- to_chat(M, "You need more [msg] to complete this task.")
- return
- //Otherwise
- else if(!set_welding && welding)
- if(!always_process)
- STOP_PROCESSING(SSobj, src)
- if(M)
- to_chat(M, "You switch \the [src] off.")
- else if(T)
- T.visible_message("\The [src] turns off.")
- playsound(loc, deac_sound, 50, 1)
- src.force = 3
- src.damtype = "brute"
- src.w_class = initial(src.w_class)
- src.welding = 0
- src.hitsound = initial(src.hitsound)
- update_icon()
-
-//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/living/carbon/user)
- if(!istype(user))
- return 1
- var/safety = user.eyecheck()
- safety = between(-1, safety + eye_safety_modifier, 2)
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
- if(!E)
- return
- if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
- switch(safety)
- if(1)
- to_chat(usr, "Your eyes sting a little.")
- E.damage += rand(1, 2)
- if(E.damage > 12)
- user.eye_blurry += rand(3,6)
- if(0)
- to_chat(usr, "Your eyes burn.")
- E.damage += rand(2, 4)
- if(E.damage > 10)
- E.damage += rand(4,10)
- if(-1)
- to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
- user.eye_blurry += rand(12,20)
- E.damage += rand(12, 16)
- if(safety<2)
-
- if(E.damage > 10)
- to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
-
- if (E.damage >= E.min_broken_damage)
- to_chat(user, "You go blind!")
- user.sdisabilities |= BLIND
- else if (E.damage >= E.min_bruised_damage)
- to_chat(user, "You go blind!")
- user.Blind(5)
- user.eye_blurry = 5
- user.disabilities |= NEARSIGHTED
- spawn(100)
- user.disabilities &= ~NEARSIGHTED
- return
-
-/obj/item/weapon/weldingtool/is_hot()
- return isOn()
-
-/obj/item/weapon/weldingtool/largetank
- name = "industrial welding tool"
- desc = "A slightly larger welder with a larger tank."
- icon_state = "indwelder"
- max_fuel = 40
- origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
-
-/obj/item/weapon/weldingtool/largetank/cyborg
- name = "integrated welding tool"
- desc = "An advanced welder designed to be used in robotic systems."
- toolspeed = 0.5
-
-/obj/item/weapon/weldingtool/hugetank
- name = "upgraded welding tool"
- desc = "A much larger welder with a huge tank."
- icon_state = "indwelder"
- max_fuel = 80
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
-
-/obj/item/weapon/weldingtool/mini
- name = "emergency welding tool"
- desc = "A miniature welder used during emergencies."
- icon_state = "miniwelder"
- max_fuel = 10
- w_class = ITEMSIZE_SMALL
- matter = list(MAT_METAL = 30, MAT_GLASS = 10)
- change_icons = 0
- toolspeed = 2
- eye_safety_modifier = 1 // Safer on eyes.
-
-/obj/item/weapon/weldingtool/alien
- name = "alien welding tool"
- desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "welder"
- toolspeed = 0.1
- flame_color = "#6699FF" // Light bluish.
- eye_safety_modifier = 2
- change_icons = 0
- origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
- always_process = TRUE
-
-/obj/item/weapon/weldingtool/alien/process()
- if(get_fuel() <= get_max_fuel())
- reagents.add_reagent("fuel", 1)
- ..()
-
-/obj/item/weapon/weldingtool/experimental
- name = "experimental welding tool"
- desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
- icon_state = "exwelder"
- max_fuel = 40
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
- toolspeed = 0.5
- change_icons = 0
- flame_intensity = 3
- always_process = TRUE
- var/nextrefueltick = 0
-
-/obj/item/weapon/weldingtool/experimental/process()
- ..()
- if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
- nextrefueltick = world.time + 10
- reagents.add_reagent("fuel", 1)
-
-/*
- * Backpack Welder.
- */
-
-/obj/item/weapon/weldingtool/tubefed
- name = "tube-fed welding tool"
- desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
- icon_state = "tubewelder"
- max_fuel = 10
- w_class = ITEMSIZE_NO_CONTAINER
- matter = null
- toolspeed = 1.25
- change_icons = 0
- flame_intensity = 1
- eye_safety_modifier = 1
- always_process = TRUE
- var/obj/item/weapon/weldpack/mounted_pack = null
-
-/obj/item/weapon/weldingtool/tubefed/New(location)
- ..()
- if(istype(location, /obj/item/weapon/weldpack))
- var/obj/item/weapon/weldpack/holder = location
- mounted_pack = holder
- else
- qdel(src)
-
-/obj/item/weapon/weldingtool/tubefed/Destroy()
- mounted_pack.nozzle = null
- mounted_pack = null
- return ..()
-
-/obj/item/weapon/weldingtool/tubefed/process()
- if(mounted_pack)
- if(!istype(mounted_pack.loc,/mob/living/carbon/human))
- mounted_pack.return_nozzle()
- else
- var/mob/living/carbon/human/H = mounted_pack.loc
- if(H.back != mounted_pack)
- mounted_pack.return_nozzle()
-
- if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
- mounted_pack.return_nozzle()
- visible_message("\The [src] retracts to its fueltank.")
-
- if(get_fuel() <= get_max_fuel())
- mounted_pack.reagents.trans_to_obj(src, 1)
-
- ..()
-
-/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
- ..()
- if(src.loc != user)
- mounted_pack.return_nozzle()
- to_chat(user, "\The [src] retracts to its fueltank.")
-
-/*
- * Electric/Arc Welder
- */
-
-/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
- name = "electric welding tool"
- desc = "A welder which runs off of electricity."
- icon_state = "arcwelder"
- max_fuel = 0 //We'll handle the consumption later.
- item_state = "ewelder"
- var/obj/item/weapon/cell/power_supply //What type of power cell this uses
- var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
- var/cell_type = /obj/item/weapon/cell/device
- var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
- flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
- acti_sound = 'sound/effects/sparks4.ogg'
- deac_sound = 'sound/effects/sparks4.ogg'
-
-/obj/item/weapon/weldingtool/electric/unloaded/New()
- cell_type = null
-
-/obj/item/weapon/weldingtool/electric/New()
- ..()
- if(cell_type == null)
- update_icon()
- else if(cell_type)
- power_supply = new cell_type(src)
- else
- power_supply = new /obj/item/weapon/cell/device(src)
- update_icon()
-
-/obj/item/weapon/weldingtool/electric/get_cell()
- return power_supply
-
-/obj/item/weapon/weldingtool/electric/examine(mob/user)
- if(get_dist(src, user) > 1)
- to_chat(user, desc)
- else // The << need to stay, for some reason
- if(power_supply)
- user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
- else
- user << text("\icon[] The [] has no power cell!", src, src.name)
-
-/obj/item/weapon/weldingtool/electric/get_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.charge
- else if(power_supply)
- return power_supply.charge
- else
- return 0
-
-/obj/item/weapon/weldingtool/electric/get_max_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.maxcharge
- else if(power_supply)
- return power_supply.maxcharge
- return 0
-
-/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
- if(!welding)
- return 0
- if(get_fuel() >= amount)
- power_supply.checked_use(charge_cost)
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(!external || !external.use(charge_cost)) //Take power from the borg...
- power_supply.give(charge_cost) //Give it back to the cell.
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more energy to complete this task.")
- update_icon()
- return 0
-
-/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
- if(user.get_inactive_hand() == src)
- if(power_supply)
- power_supply.update_icon()
- user.put_in_hands(power_supply)
- power_supply = null
- to_chat(user, "You remove the cell from the [src].")
- setWelding(0)
- update_icon()
- return
- ..()
- else
- return ..()
-
-/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/cell))
- if(istype(W, /obj/item/weapon/cell/device))
- if(!power_supply)
- user.drop_item()
- W.loc = src
- power_supply = W
- to_chat(user, "You install a cell in \the [src].")
- update_icon()
- else
- to_chat(user, "\The [src] already has a cell.")
- else
- to_chat(user, "\The [src] cannot use that type of cell.")
- else
- ..()
-
-/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
- if(isrobot(src.loc))
- var/mob/living/silicon/robot/R = src.loc
- return R.cell
- if(istype(src.loc, /obj/item/rig_module))
- var/obj/item/rig_module/module = src.loc
- if(module.holder && module.holder.wearer)
- var/mob/living/carbon/human/H = module.holder.wearer
- if(istype(H) && H.back)
- var/obj/item/weapon/rig/suit = H.back
- if(istype(suit))
- return suit.cell
- return null
-
-/obj/item/weapon/weldingtool/electric/mounted
- use_external_power = 1
-
-/obj/item/weapon/weldingtool/electric/mounted/cyborg
- toolspeed = 0.5
-
+#define WELDER_FUEL_BURN_INTERVAL 13
+/*
+ * Welding Tool
+ */
+/obj/item/weapon/weldingtool
+ name = "\improper welding tool"
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "welder"
+ item_state = "welder"
+ 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 = ITEMSIZE_SMALL
+
+ //Cost to make in the autolathe
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
+
+ //R&D tech level
+ origin_tech = list(TECH_ENGINEERING = 1)
+
+ //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
+
+ var/acti_sound = 'sound/items/welderactivate.ogg'
+ var/deac_sound = 'sound/items/welderdeactivate.ogg'
+ usesound = 'sound/items/Welder2.ogg'
+ var/change_icons = TRUE
+ var/flame_intensity = 2 //how powerful the emitted light is when used.
+ var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
+ var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
+ var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
+ var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
+ toolspeed = 1
+
+/obj/item/weapon/weldingtool/Initialize()
+ . = ..()
+// 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)
+ update_icon()
+ if(always_process)
+ START_PROCESSING(SSobj, src)
+ ..()
+
+/obj/item/weapon/weldingtool/Destroy()
+ if(welding || always_process)
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/weapon/weldingtool/examine(mob/user)
+ if(..(user, 0))
+ if(max_fuel)
+ to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
+
+/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
+ if(ishuman(A) && user.a_intent == I_HELP)
+ var/mob/living/carbon/human/H = A
+ var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
+
+ if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
+ return ..()
+
+ if(!welding)
+ to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
+ return 1
+
+ if(S.robo_repair(15, BRUTE, "some dents", src, user))
+ remove_fuel(1, user)
+ return 1
+
+ return ..()
+
+/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
+ if(istype(W,/obj/item/weapon/tool/screwdriver))
+ if(welding)
+ to_chat(user, "Stop welding first!")
+ return
+ status = !status
+ if(status)
+ to_chat(user, "You secure the welder.")
+ else
+ to_chat(user, "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.remove_from_mob(src)
+ else
+ user.remove_from_mob(src)
+ src.master = F
+ src.layer = initial(src.layer)
+ user.remove_from_mob(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = F
+ src.add_fingerprint(user)
+ return
+
+ ..()
+ return
+
+/obj/item/weapon/weldingtool/process()
+ if(welding)
+ ++burned_fuel_for
+ if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
+ remove_fuel(1)
+ if(get_fuel() < 1)
+ setWelding(0)
+ //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/living))
+ var/mob/living/M = location
+ if(M.item_is_in_hands(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, proximity)
+ if(!proximity) return
+ if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
+ if(!welding && max_fuel)
+ O.reagents.trans_to_obj(src, max_fuel)
+ to_chat(user, "Welder refueled")
+ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
+ return
+ else if(!welding)
+ to_chat(user, "[src] doesn't use fuel.")
+ return
+ else
+ message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
+ log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
+ to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
+ var/obj/structure/reagent_dispensers/fueltank/tank = O
+ tank.explode()
+ return
+ if (src.welding)
+ remove_fuel(1)
+ var/turf/location = get_turf(user)
+ if(isliving(O))
+ var/mob/living/L = O
+ L.IgniteMob()
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 50, 1)
+/obj/item/weapon/weldingtool/attack_self(mob/user)
+ setWelding(!welding, user)
+
+//Returns the amount of fuel in the welder
+/obj/item/weapon/weldingtool/proc/get_fuel()
+ return reagents.get_reagent_amount("fuel")
+
+/obj/item/weapon/weldingtool/proc/get_max_fuel()
+ return max_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)
+ return 0
+ if(amount)
+ burned_fuel_for = 0 // Reset the counter since we're removing fuel.
+ if(get_fuel() >= amount)
+ reagents.remove_reagent("fuel", amount)
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more welding fuel to complete this task.")
+ update_icon()
+ return 0
+
+//Returns whether or not the welding tool is currently on.
+/obj/item/weapon/weldingtool/proc/isOn()
+ return welding
+
+/obj/item/weapon/weldingtool/update_icon()
+ ..()
+ overlays.Cut()
+ // Welding overlay.
+ if(welding)
+ var/image/I = image(icon, src, "[icon_state]-on")
+ overlays.Add(I)
+ item_state = "[initial(item_state)]1"
+ else
+ item_state = initial(item_state)
+
+ // Fuel counter overlay.
+ if(change_icons && get_max_fuel())
+ var/ratio = get_fuel() / get_max_fuel()
+ ratio = CEILING(ratio * 4, 1) * 25
+ var/image/I = image(icon, src, "[icon_state][ratio]")
+ overlays.Add(I)
+
+ // Lights
+ if(welding && flame_intensity)
+ set_light(flame_intensity, flame_intensity, flame_color)
+ else
+ set_light(0)
+
+// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
+ var/mob/M = loc
+ if(istype(M))
+ M.update_inv_l_hand()
+ M.update_inv_r_hand()
+
+/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
+ if(!canremove)
+ return
+
+ if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
+ return
+
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+
+ //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
+ if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
+ return
+
+ if (( usr.restrained() ) || ( usr.stat ))
+ return
+
+ if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
+ return
+
+ switch(over_object.name)
+ if("r_hand")
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
+ if("l_hand")
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
+ src.add_fingerprint(usr)
+
+//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/set_welding, var/mob/M)
+ if(!status) return
+
+ var/turf/T = get_turf(src)
+ //If we're turning it on
+ if(set_welding && !welding)
+ if (get_fuel() > 0)
+ if(M)
+ to_chat(M, "You switch the [src] on.")
+ else if(T)
+ T.visible_message("\The [src] turns on.")
+ playsound(loc, acti_sound, 50, 1)
+ src.force = 15
+ src.damtype = "fire"
+ src.w_class = ITEMSIZE_LARGE
+ src.hitsound = 'sound/items/welder.ogg'
+ welding = 1
+ update_icon()
+ if(!always_process)
+ START_PROCESSING(SSobj, src)
+ else
+ if(M)
+ var/msg = max_fuel ? "welding fuel" : "charge"
+ to_chat(M, "You need more [msg] to complete this task.")
+ return
+ //Otherwise
+ else if(!set_welding && welding)
+ if(!always_process)
+ STOP_PROCESSING(SSobj, src)
+ if(M)
+ to_chat(M, "You switch \the [src] off.")
+ else if(T)
+ T.visible_message("\The [src] turns off.")
+ playsound(loc, deac_sound, 50, 1)
+ src.force = 3
+ src.damtype = "brute"
+ src.w_class = initial(src.w_class)
+ src.welding = 0
+ src.hitsound = initial(src.hitsound)
+ update_icon()
+
+//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/living/carbon/user)
+ if(!istype(user))
+ return 1
+ var/safety = user.eyecheck()
+ safety = between(-1, safety + eye_safety_modifier, 2)
+ if(istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
+ if(!E)
+ return
+ if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
+ switch(safety)
+ if(1)
+ to_chat(usr, "Your eyes sting a little.")
+ E.damage += rand(1, 2)
+ if(E.damage > 12)
+ user.eye_blurry += rand(3,6)
+ if(0)
+ to_chat(usr, "Your eyes burn.")
+ E.damage += rand(2, 4)
+ if(E.damage > 10)
+ E.damage += rand(4,10)
+ if(-1)
+ to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
+ user.eye_blurry += rand(12,20)
+ E.damage += rand(12, 16)
+ if(safety<2)
+
+ if(E.damage > 10)
+ to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
+
+ if (E.damage >= E.min_broken_damage)
+ to_chat(user, "You go blind!")
+ user.sdisabilities |= BLIND
+ else if (E.damage >= E.min_bruised_damage)
+ to_chat(user, "You go blind!")
+ user.Blind(5)
+ user.eye_blurry = 5
+ user.disabilities |= NEARSIGHTED
+ spawn(100)
+ user.disabilities &= ~NEARSIGHTED
+ return
+
+/obj/item/weapon/weldingtool/is_hot()
+ return isOn()
+
+/obj/item/weapon/weldingtool/largetank
+ name = "industrial welding tool"
+ desc = "A slightly larger welder with a larger tank."
+ icon_state = "indwelder"
+ max_fuel = 40
+ origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
+
+/obj/item/weapon/weldingtool/largetank/cyborg
+ name = "integrated welding tool"
+ desc = "An advanced welder designed to be used in robotic systems."
+ toolspeed = 0.5
+
+/obj/item/weapon/weldingtool/hugetank
+ name = "upgraded welding tool"
+ desc = "A much larger welder with a huge tank."
+ icon_state = "indwelder"
+ max_fuel = 80
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+
+/obj/item/weapon/weldingtool/mini
+ name = "emergency welding tool"
+ desc = "A miniature welder used during emergencies."
+ icon_state = "miniwelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_SMALL
+ matter = list(MAT_METAL = 30, MAT_GLASS = 10)
+ change_icons = 0
+ toolspeed = 2
+ eye_safety_modifier = 1 // Safer on eyes.
+
+/obj/item/weapon/weldingtool/alien
+ name = "alien welding tool"
+ desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "welder"
+ toolspeed = 0.1
+ flame_color = "#6699FF" // Light bluish.
+ eye_safety_modifier = 2
+ change_icons = 0
+ origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
+ always_process = TRUE
+
+/obj/item/weapon/weldingtool/alien/process()
+ if(get_fuel() <= get_max_fuel())
+ reagents.add_reagent("fuel", 1)
+ ..()
+
+/obj/item/weapon/weldingtool/experimental
+ name = "experimental welding tool"
+ desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
+ icon_state = "exwelder"
+ max_fuel = 40
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+ toolspeed = 0.5
+ change_icons = 0
+ flame_intensity = 3
+ always_process = TRUE
+ var/nextrefueltick = 0
+
+/obj/item/weapon/weldingtool/experimental/process()
+ ..()
+ if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
+ nextrefueltick = world.time + 10
+ reagents.add_reagent("fuel", 1)
+
+/*
+ * Backpack Welder.
+ */
+
+/obj/item/weapon/weldingtool/tubefed
+ name = "tube-fed welding tool"
+ desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
+ icon_state = "tubewelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_NO_CONTAINER
+ matter = null
+ toolspeed = 1.25
+ change_icons = 0
+ flame_intensity = 1
+ eye_safety_modifier = 1
+ always_process = TRUE
+ var/obj/item/weapon/weldpack/mounted_pack = null
+
+/obj/item/weapon/weldingtool/tubefed/New(location)
+ ..()
+ if(istype(location, /obj/item/weapon/weldpack))
+ var/obj/item/weapon/weldpack/holder = location
+ mounted_pack = holder
+ else
+ qdel(src)
+
+/obj/item/weapon/weldingtool/tubefed/Destroy()
+ mounted_pack.nozzle = null
+ mounted_pack = null
+ return ..()
+
+/obj/item/weapon/weldingtool/tubefed/process()
+ if(mounted_pack)
+ if(!istype(mounted_pack.loc,/mob/living/carbon/human))
+ mounted_pack.return_nozzle()
+ else
+ var/mob/living/carbon/human/H = mounted_pack.loc
+ if(H.back != mounted_pack)
+ mounted_pack.return_nozzle()
+
+ if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
+ mounted_pack.return_nozzle()
+ visible_message("\The [src] retracts to its fueltank.")
+
+ if(get_fuel() <= get_max_fuel())
+ mounted_pack.reagents.trans_to_obj(src, 1)
+
+ ..()
+
+/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
+ ..()
+ if(src.loc != user)
+ mounted_pack.return_nozzle()
+ to_chat(user, "\The [src] retracts to its fueltank.")
+
+/*
+ * Electric/Arc Welder
+ */
+
+/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
+ name = "electric welding tool"
+ desc = "A welder which runs off of electricity."
+ icon_state = "arcwelder"
+ max_fuel = 0 //We'll handle the consumption later.
+ item_state = "ewelder"
+ var/obj/item/weapon/cell/power_supply //What type of power cell this uses
+ var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
+ var/cell_type = /obj/item/weapon/cell/device
+ var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
+ flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
+ acti_sound = 'sound/effects/sparks4.ogg'
+ deac_sound = 'sound/effects/sparks4.ogg'
+
+/obj/item/weapon/weldingtool/electric/unloaded/New()
+ cell_type = null
+
+/obj/item/weapon/weldingtool/electric/New()
+ ..()
+ if(cell_type == null)
+ update_icon()
+ else if(cell_type)
+ power_supply = new cell_type(src)
+ else
+ power_supply = new /obj/item/weapon/cell/device(src)
+ update_icon()
+
+/obj/item/weapon/weldingtool/electric/get_cell()
+ return power_supply
+
+/obj/item/weapon/weldingtool/electric/examine(mob/user)
+ if(get_dist(src, user) > 1)
+ to_chat(user, desc)
+ else // The << need to stay, for some reason
+ if(power_supply)
+ user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
+ else
+ user << text("\icon[] The [] has no power cell!", src, src.name)
+
+/obj/item/weapon/weldingtool/electric/get_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.charge
+ else if(power_supply)
+ return power_supply.charge
+ else
+ return 0
+
+/obj/item/weapon/weldingtool/electric/get_max_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.maxcharge
+ else if(power_supply)
+ return power_supply.maxcharge
+ return 0
+
+/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(get_fuel() >= amount)
+ power_supply.checked_use(charge_cost)
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(!external || !external.use(charge_cost)) //Take power from the borg...
+ power_supply.give(charge_cost) //Give it back to the cell.
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more energy to complete this task.")
+ update_icon()
+ return 0
+
+/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(power_supply)
+ power_supply.update_icon()
+ user.put_in_hands(power_supply)
+ power_supply = null
+ to_chat(user, "You remove the cell from the [src].")
+ setWelding(0)
+ update_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/cell))
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!power_supply)
+ user.drop_item()
+ W.loc = src
+ power_supply = W
+ to_chat(user, "You install a cell in \the [src].")
+ update_icon()
+ else
+ to_chat(user, "\The [src] already has a cell.")
+ else
+ to_chat(user, "\The [src] cannot use that type of cell.")
+ else
+ ..()
+
+/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ return R.cell
+ if(istype(src.loc, /obj/item/rig_module))
+ var/obj/item/rig_module/module = src.loc
+ if(module.holder && module.holder.wearer)
+ var/mob/living/carbon/human/H = module.holder.wearer
+ if(istype(H) && H.back)
+ var/obj/item/weapon/rig/suit = H.back
+ if(istype(suit))
+ return suit.cell
+ return null
+
+/obj/item/weapon/weldingtool/electric/mounted
+ use_external_power = 1
+
+/obj/item/weapon/weldingtool/electric/mounted/cyborg
+ toolspeed = 0.5
+
#undef WELDER_FUEL_BURN_INTERVAL
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm
index eb8b940c92..1e55abfeaa 100644
--- a/code/game/objects/items/weapons/tools/wirecutters.dm
+++ b/code/game/objects/items/weapons/tools/wirecutters.dm
@@ -6,7 +6,6 @@
desc = "This cuts wires."
icon = 'icons/obj/tools.dmi'
icon_state = "cutters"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 6
throw_speed = 2
diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm
index 13cf3e51cf..c1a45b41a7 100644
--- a/code/game/objects/items/weapons/tools/wrench.dm
+++ b/code/game/objects/items/weapons/tools/wrench.dm
@@ -6,7 +6,6 @@
desc = "A wrench with many common uses. Can be usually found in your hand."
icon = 'icons/obj/tools.dmi'
icon_state = "wrench"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 6
throwforce = 7
diff --git a/code/game/objects/items/weapons/trays.dm b/code/game/objects/items/weapons/trays.dm
index 8d9977cc17..21c8b635f3 100644
--- a/code/game/objects/items/weapons/trays.dm
+++ b/code/game/objects/items/weapons/trays.dm
@@ -11,7 +11,6 @@
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
- flags = CONDUCT
matter = list(DEFAULT_WALL_MATERIAL = 3000)
var/list/carrying = list() // List of things on the tray. - Doohl
var/max_carry = 10
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 801615c764..c4b91fc73a 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -5,7 +5,6 @@
icon_state = "grille"
density = 1
anchored = 1
- flags = CONDUCT
pressure_resistance = 5*ONE_ATMOSPHERE
layer = TABLE_LAYER
explosion_resistance = 1
@@ -151,7 +150,7 @@
return
//window placing end
- else if(!(W.flags & CONDUCT) || !shock(user, 70))
+ else if((W.flags & NOCONDUCT) || !shock(user, 70))
user.setClickCooldown(user.get_attack_speed(W))
user.do_attack_animation(src)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 443491d633..01d282b40c 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -7,7 +7,6 @@
anchored = 1.0
w_class = ITEMSIZE_NORMAL
plane = PLATING_PLANE
- // flags = CONDUCT
/obj/structure/lattice/Initialize()
. = ..()
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 646e52218c..fae45b8f51 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -6,7 +6,6 @@
icon_state = "target_stake"
density = 1
w_class = ITEMSIZE_HUGE
- flags = CONDUCT
var/obj/item/target/pinned_target // the current pinned target
Move()
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 317765be97..04dadddc04 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -3,7 +3,6 @@
desc = "A small electronic device that should never exist."
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = ""
- flags = CONDUCT
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 100)
throwforce = 2
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 1a02474a8e..930329fd93 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = "holder"
item_state = "assembly"
- flags = CONDUCT | PROXMOVE
+ flags = PROXMOVE
throwforce = 5
w_class = ITEMSIZE_SMALL
throw_speed = 3
@@ -233,7 +233,7 @@
tmr.time=5
tmr.secured = 1
tmr.holder = src
- START_PROCESSING(SSobj, tmr)
+ START_PROCESSING(SSobj, tmr)
a_left = tmr
a_right = ign
secured = 1
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
index fd5c35bbfb..55616a2b91 100644
--- a/code/modules/assembly/shock_kit.dm
+++ b/code/modules/assembly/shock_kit.dm
@@ -6,7 +6,6 @@
var/obj/item/device/radio/electropack/part2 = null
var/status = 0
w_class = ITEMSIZE_HUGE
- flags = CONDUCT
/obj/item/assembly/shock_kit/Destroy()
qdel(part1)
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 87365674b4..0f8b999b4c 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -52,7 +52,6 @@
name = "cyborg suit"
desc = "Suit for a cyborg costume."
icon_state = "death"
- flags = CONDUCT
fire_resist = T0C+5200
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm
index 55a7fd0866..dc5c4e9cea 100644
--- a/code/modules/economy/retail_scanner.dm
+++ b/code/modules/economy/retail_scanner.dm
@@ -3,7 +3,7 @@
desc = "Swipe your ID card to make purchases electronically."
icon = 'icons/obj/device.dmi'
icon_state = "retail_idle"
- flags = NOBLUDGEON|CONDUCT
+ flags = NOBLUDGEON
slot_flags = SLOT_BELT
req_access = list(access_heads)
w_class = ITEMSIZE_SMALL
diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm
index 8ebfd39021..14a0fbd16e 100644
--- a/code/modules/food/food/drinks.dm
+++ b/code/modules/food/food/drinks.dm
@@ -100,7 +100,7 @@
amount_per_transfer_from_this = 20
possible_transfer_amounts = null
volume = 150
- flags = CONDUCT | OPENCONTAINER
+ flags = OPENCONTAINER
/obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change()
..()
diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm
index dd270ee326..23e8e3f24b 100644
--- a/code/modules/integrated_electronics/core/tools.dm
+++ b/code/modules/integrated_electronics/core/tools.dm
@@ -12,7 +12,6 @@
icon = 'icons/obj/integrated_electronics/electronic_tools.dmi'
icon_state = "wirer-wire"
item_state = "wirer"
- flags = CONDUCT
w_class = ITEMSIZE_SMALL
var/datum/integrated_io/selected_io = null
var/mode = WIRE
@@ -110,7 +109,6 @@
settings to specific circuits, or for debugging purposes. It can also pulse activation pins."
icon = 'icons/obj/integrated_electronics/electronic_tools.dmi'
icon_state = "debugger"
- flags = CONDUCT
w_class = 2
var/data_to_write = null
var/accepting_refs = 0
diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm
index 3caf8df28b..0b1daf10fa 100644
--- a/code/modules/materials/material_sheets.dm
+++ b/code/modules/materials/material_sheets.dm
@@ -37,8 +37,8 @@
if(apply_colour)
color = material.icon_colour
- if(material.conductive)
- flags |= CONDUCT
+ if(!material.conductive)
+ flags |= NOCONDUCT
matter = material.get_matter()
update_strings()
diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm
index baf8094967..9b75a1dba8 100644
--- a/code/modules/mining/coins.dm
+++ b/code/modules/mining/coins.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/items.dmi'
name = "Coin"
icon_state = "coin"
- flags = CONDUCT
force = 0.0
throwforce = 0.0
w_class = ITEMSIZE_TINY
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 902694c34d..e05302cfc1 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -13,7 +13,6 @@
name = "mining drill"
desc = "The most basic of mining drills, for short excavations and small mineral extractions."
icon = 'icons/obj/items.dmi'
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 15.0
throwforce = 4.0
@@ -112,7 +111,6 @@
desc = "A large tool for digging and moving dirt."
icon = 'icons/obj/items.dmi'
icon_state = "shovel"
- flags = CONDUCT
slot_flags = SLOT_BELT
force = 8.0
throwforce = 4.0
diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm
index 13ddd4ad57..65e645f815 100644
--- a/code/modules/mining/money_bag.dm
+++ b/code/modules/mining/money_bag.dm
@@ -4,7 +4,6 @@
icon = 'icons/obj/storage.dmi'
name = "Money bag"
icon_state = "moneybag"
- flags = CONDUCT
force = 10.0
throwforce = 2.0
w_class = ITEMSIZE_LARGE
diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm
index bbc8cefd36..28e0c29b50 100644
--- a/code/modules/mob/living/silicon/robot/analyzer.dm
+++ b/code/modules/mob/living/silicon/robot/analyzer.dm
@@ -6,7 +6,6 @@
icon_state = "robotanalyzer"
item_state = "analyzer"
desc = "A hand-held scanner able to diagnose robotic injuries."
- flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = ITEMSIZE_SMALL
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 4c2b99962f..b820451adf 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -19,7 +19,6 @@ var/global/list/robot_modules = list(
icon_state = "std_module"
w_class = ITEMSIZE_NO_CONTAINER
item_state = "std_mod"
- flags = CONDUCT
var/hide_on_manifest = 0
var/channels = list()
var/networks = list()
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index 9e95e67a6d..733dbff5bc 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -124,7 +124,6 @@ var/global/photo_count = 0
icon_state = "camera"
item_state = "camera"
w_class = ITEMSIZE_SMALL
- flags = CONDUCT
slot_flags = SLOT_BELT
matter = list(DEFAULT_WALL_MATERIAL = 2000)
var/pictures_max = 10
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index 9bccd86d67..a3549b7a2f 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -191,7 +191,6 @@ proc/cardinalrange(var/center)
icon_state = "box"
item_state = "electronic"
w_class = ITEMSIZE_LARGE
- flags = CONDUCT
throwforce = 5
throw_speed = 1
throw_range = 2
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 4fe63628b7..3456351d86 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -238,7 +238,7 @@ var/list/possible_cable_coil_colours = list(
shock(user, 5, 0.2)
else
- if (W.flags & CONDUCT)
+ if(!(W.flags & NOCONDUCT))
shock(user, 50, 0.7)
src.add_fingerprint(user)
@@ -511,7 +511,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
throw_speed = 2
throw_range = 5
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20)
- flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "coil"
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
@@ -932,7 +931,6 @@ obj/structure/cable/proc/cableColor(var/colorC)
throw_speed = 2
throw_range = 5
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20)
- flags = CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed", "disciplined", "flogged")
stacktype = null
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index d1f6afa4c4..24132d2988 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -471,7 +471,7 @@
if(M == user)
continue
M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2)
- if(on && (W.flags & CONDUCT))
+ if(on && !(W.flags & NOCONDUCT))
//if(!user.mutations & COLD_RESISTANCE)
if (prob(12))
electrocute_mob(user, get_area(src), src, 0.3)
@@ -509,7 +509,7 @@
return
user << "You stick \the [W] into the light socket!"
- if(has_power() && (W.flags & CONDUCT))
+ if(has_power() && !(W.flags & NOCONDUCT))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 3fc860a127..0f9608f49c 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -3,7 +3,6 @@
desc = "A bullet casing."
icon = 'icons/obj/ammo.dmi'
icon_state = "s-casing"
- flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_EARS
throwforce = 1
w_class = ITEMSIZE_TINY
@@ -66,7 +65,6 @@
desc = "A magazine for some kind of gun."
icon_state = ".357"
icon = 'icons/obj/ammo.dmi'
- flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "syringe_kit"
matter = list(DEFAULT_WALL_MATERIAL = 500)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 13b03d5992..bbc13e381e 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -38,7 +38,6 @@
)
icon_state = "detective"
item_state = "gun"
- flags = CONDUCT
slot_flags = SLOT_BELT|SLOT_HOLSTER
matter = list(DEFAULT_WALL_MATERIAL = 2000)
w_class = ITEMSIZE_NORMAL
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index c4193289dd..fb199f4370 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -7,7 +7,6 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4)
w_class = ITEMSIZE_LARGE
force = 10
- flags = CONDUCT
slot_flags = SLOT_BACK
projectile_type = /obj/item/projectile/ion
@@ -127,7 +126,11 @@
icon = 'icons/obj/gun.dmi'
item_icons = null
icon_state = "staffofchange"
+<<<<<<< HEAD
+ fire_sound = 'sound/weapons/emitter.ogg'
flags = CONDUCT
+=======
+>>>>>>> f093ebd... Merge pull request #5987 from Anewbe/shock_grilles
slot_flags = SLOT_BACK
w_class = ITEMSIZE_LARGE
charge_cost = 480
diff --git a/code/modules/projectiles/guns/launcher.dm b/code/modules/projectiles/guns/launcher.dm
index 82a6e07fc3..869f6c8b60 100644
--- a/code/modules/projectiles/guns/launcher.dm
+++ b/code/modules/projectiles/guns/launcher.dm
@@ -2,7 +2,6 @@
name = "launcher"
desc = "A device that launches things."
w_class = ITEMSIZE_HUGE
- flags = CONDUCT
slot_flags = SLOT_BACK
var/release_force = 0
diff --git a/code/modules/projectiles/guns/launcher/pneumatic.dm b/code/modules/projectiles/guns/launcher/pneumatic.dm
index cfe4533109..45be1c017e 100644
--- a/code/modules/projectiles/guns/launcher/pneumatic.dm
+++ b/code/modules/projectiles/guns/launcher/pneumatic.dm
@@ -5,7 +5,6 @@
item_state = "pneumatic"
slot_flags = SLOT_BELT
w_class = ITEMSIZE_HUGE
- flags = CONDUCT
fire_sound_text = "a loud whoosh of moving air"
fire_delay = 50
fire_sound = 'sound/weapons/grenade_launcher.ogg' // Formerly tablehit1.ogg but I like this better -Ace
diff --git a/code/modules/projectiles/guns/launcher/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm
index dae5a5c8ee..21fdbb14f6 100644
--- a/code/modules/projectiles/guns/launcher/rocket.dm
+++ b/code/modules/projectiles/guns/launcher/rocket.dm
@@ -7,7 +7,6 @@
throw_speed = 2
throw_range = 10
force = 5.0
- flags = CONDUCT
slot_flags = 0
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 5)
fire_sound = 'sound/weapons/rpg.ogg'
diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm
index 12a107b642..434f317d88 100644
--- a/code/modules/projectiles/guns/launcher/syringe_gun.dm
+++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm
@@ -5,7 +5,6 @@
icon_state = "syringe-cartridge"
var/icon_flight = "syringe-cartridge-flight" //so it doesn't look so weird when shot
matter = list(DEFAULT_WALL_MATERIAL = 125, "glass" = 375)
- flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_EARS
throwforce = 3
force = 3
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 23fd373887..315c6edca0 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -6,7 +6,6 @@
max_shells = 4
w_class = ITEMSIZE_LARGE
force = 10
- flags = CONDUCT
slot_flags = SLOT_BACK
caliber = "12g"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
@@ -41,14 +40,14 @@
loaded -= AC //Remove casing from loaded list.
chambered = AC
- if(animated_pump)//This affects all bolt action and shotguns.
+ if(animated_pump)//This affects all bolt action and shotguns.
flick("[icon_state]-cycling", src)//This plays any pumping
update_icon()
/obj/item/weapon/gun/projectile/shotgun/pump/update_icon()//This adds empty sprite capability for shotguns.
..()
- if(!empty_sprite)//Just a dirty check
+ if(!empty_sprite)//Just a dirty check
return
if((loaded.len) || (chambered))
icon_state = "[icon_state]"
@@ -80,7 +79,6 @@
max_shells = 2
w_class = ITEMSIZE_LARGE
force = 10
- flags = CONDUCT
slot_flags = SLOT_BACK
caliber = "12g"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 59b690f31a..b60b71cc4e 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -326,7 +326,6 @@
w_class = ITEMSIZE_SMALL
item_state = "electronic"
- flags = CONDUCT
slot_flags = SLOT_BELT
proc/openwindow(mob/user as mob)
diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm
index 812a0738a1..e6e9bc11d7 100644
--- a/code/modules/shieldgen/sheldwallgen.dm
+++ b/code/modules/shieldgen/sheldwallgen.dm
@@ -20,7 +20,6 @@
// var/maxshieldload = 200
var/obj/structure/cable/attached // the attached cable
var/storedpower = 0
- flags = CONDUCT
//There have to be at least two posts, so these are effectively doubled
var/power_draw = 30000 //30 kW. How much power is drawn from powernet. Increase this to allow the generator to sustain longer shields, at the cost of more power draw.
var/max_stored_power = 50000 //50 kW
diff --git a/code/modules/virus2/items_devices.dm b/code/modules/virus2/items_devices.dm
index ae56c35087..08f688fbc3 100644
--- a/code/modules/virus2/items_devices.dm
+++ b/code/modules/virus2/items_devices.dm
@@ -6,7 +6,6 @@
icon_state = "health"
w_class = ITEMSIZE_SMALL
item_state = "electronic"
- flags = CONDUCT
/obj/item/device/antibody_scanner/attack(mob/M as mob, mob/user as mob)
if(!istype(M,/mob/living/carbon/))