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/))