diff --git a/code/WorkInProgress/computer2/buildandrepair.dm b/code/WorkInProgress/computer2/buildandrepair.dm index c722bb5c61c..85790260f62 100644 --- a/code/WorkInProgress/computer2/buildandrepair.dm +++ b/code/WorkInProgress/computer2/buildandrepair.dm @@ -20,7 +20,7 @@ var/list/peripherals = list() var/created_icon_state = "aiupload" -/obj/computer2frame/attackby(obj/item/weapon/P as obj, mob/user as mob) +/obj/computer2frame/attackby(obj/item/P as obj, mob/user as mob) switch(state) if(0) if(istype(P, /obj/item/weapon/wrench)) @@ -33,8 +33,7 @@ playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 20)) user << "\blue You deconstruct the frame." - var/obj/item/weapon/sheet/metal/A = new /obj/item/weapon/sheet/metal( src.loc ) - A.amount = 5 + new /obj/item/stack/sheet/metal( src.loc, 5 ) del(src) if(1) if(istype(P, /obj/item/weapon/wrench)) @@ -118,12 +117,11 @@ src.hd.loc = src.loc src.hd = null - if(istype(P, /obj/item/weapon/sheet/glass)) + if(istype(P, /obj/item/stack/sheet/glass)) if(P:amount >= 2) playsound(src.loc, 'Deconstruct.ogg', 50, 1) if(do_after(user, 20)) - P:amount -= 2 - if(!P:amount) del(P) + P:use(2) user << "\blue You put in the glass panel." src.state = 4 src.icon_state = "4" @@ -133,8 +131,7 @@ user << "\blue You remove the glass panel." src.state = 3 src.icon_state = "3" - var/obj/item/weapon/sheet/glass/A = new /obj/item/weapon/sheet/glass( src.loc ) - A.amount = 2 + new /obj/item/stack/sheet/glass( src.loc, 2 ) if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'Screwdriver.ogg', 50, 1) user << "\blue You connect the monitor." diff --git a/code/WorkInProgress/recycling/disposal.dm b/code/WorkInProgress/recycling/disposal.dm index 7563f1d3bdf..00876122760 100644 --- a/code/WorkInProgress/recycling/disposal.dm +++ b/code/WorkInProgress/recycling/disposal.dm @@ -577,7 +577,7 @@ F.burnt = 1 F.intact = 0 F.levelupdate() - new /obj/item/weapon/tile(H) // add to holder so it will be thrown with other stuff + new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff F.icon_state = "Floor[F.burnt ? "1" : ""]" if(direction) // direction is specified diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 9ba386b94db..8292d17bab8 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -816,3 +816,90 @@ obj/item/brain density = 1 opacity = 1 anchored = 1 + +/obj/item/stack + var/singular_name + var/amount = 1.0 + var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount + +/obj/item/stack/rods + name = "metal rods" + singular_name = "metal rod" + icon_state = "rods" + flags = FPRINT | TABLEPASS| CONDUCT + w_class = 3.0 + force = 9.0 + throwforce = 15.0 + throw_speed = 5 + throw_range = 20 + m_amt = 1875 + max_amount = 60 + +/obj/item/stack/sheet + name = "sheet" +// var/const/length = 2.5 //2.5*1.5*0.01*100000 == 3750 == m_amt +// var/const/width = 1.5 +// var/const/height = 0.01 + flags = FPRINT | TABLEPASS + w_class = 3.0 + max_amount = 50 + +/obj/item/stack/sheet/glass + name = "glass" + singular_name = "glass sheet" + icon_state = "sheet-glass" + force = 5.0 + g_amt = 3750 + throwforce = 5 + throw_speed = 3 + throw_range = 3 + +/obj/item/stack/sheet/rglass + name = "reinforced glass" + singular_name = "reinforced glass sheet" + icon_state = "sheet-rglass" + force = 6.0 + g_amt = 3750 + m_amt = 1875 + throwforce = 5 + throw_speed = 3 + throw_range = 3 + +/obj/item/stack/sheet/metal + name = "metal" + singular_name = "metal sheet" + desc = "A heavy sheet of metal." + icon_state = "sheet-metal" + force = 5.0 + m_amt = 3750 + throwforce = 14.0 + throw_speed = 1 + throw_range = 4 + flags = FPRINT | TABLEPASS | CONDUCT + +/obj/item/stack/sheet/r_metal + name = "reinforced metal" + singular_name = "reinforced metal sheet" + desc = "A very heavy sheet of metal." + icon_state = "sheet-r_metal" + item_state = "sheet-metal" + force = 5.0 + m_amt = 7500 + throwforce = 15.0 + throw_speed = 1 + throw_range = 4 + flags = FPRINT | TABLEPASS | CONDUCT + +/obj/item/stack/tile + name = "steel floor tile" + singular_name = "steel floor tile" + desc = "Those could work as a pretty decent throwing weapon" + icon_state = "tile" + w_class = 3.0 + force = 6.0 + m_amt = 937.5 + throwforce = 15.0 + throw_speed = 5 + throw_range = 20 + flags = FPRINT | TABLEPASS | CONDUCT + max_amount = 10 \ No newline at end of file diff --git a/code/defines/obj/assemblies.dm b/code/defines/obj/assemblies.dm index 4f7967c3a7c..52fcee23789 100644 --- a/code/defines/obj/assemblies.dm +++ b/code/defines/obj/assemblies.dm @@ -127,7 +127,7 @@ icon_state = "welder-rods" item_state = "welder" var/obj/item/weapon/weldingtool/part1 = null - var/obj/item/weapon/rods/part2 = null + var/obj/item/stack/rods/part2 = null status = null flags = FPRINT | TABLEPASS| CONDUCT force = 3.0 @@ -142,7 +142,7 @@ icon_state = "welder-rods-igniter" item_state = "welder" var/obj/item/weapon/weldingtool/part1 = null - var/obj/item/weapon/rods/part2 = null + var/obj/item/stack/rods/part2 = null var/obj/item/device/igniter/part3 = null status = null flags = FPRINT | TABLEPASS| CONDUCT diff --git a/code/defines/obj/radio.dm b/code/defines/obj/radio.dm index 00211b92873..a469a6420c9 100644 --- a/code/defines/obj/radio.dm +++ b/code/defines/obj/radio.dm @@ -52,9 +52,10 @@ icon_state = "headset" item_state = "headset" var/protective_temperature = 0 + var/bintran = 0 /obj/item/device/radio/headset/traitor -// No variables, as everything else it does is handled in human's life.dm + bintran = 1 /obj/item/device/radio/headset/headset_sec // -- TLE name = "Security Radio Headset" diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index a7c066ea4dc..4f196cb5f78 100644 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -27,7 +27,7 @@ /datum/supply_packs/metal50 name = "50 Metal Sheets" - contains = list("/obj/item/weapon/sheet/metal") + contains = list("/obj/item/stack/sheet/metal") amount = 50 cost = 15 containertype = "/obj/crate" @@ -35,7 +35,7 @@ /datum/supply_packs/glass50 name = "50 Glass Sheets" - contains = list("/obj/item/weapon/sheet/glass") + contains = list("/obj/item/stack/sheet/glass") amount = 50 cost = 15 containertype = "/obj/crate" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index cac781c5040..6ecad7eeed7 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -135,9 +135,10 @@ w_class = 2.0 flags = FPRINT | TABLEPASS| CONDUCT throwforce = 5 - w_class = 2.0 throw_speed = 4 throw_range = 20 + m_amt = 30 + g_amt = 20 /obj/item/weapon/axe @@ -922,7 +923,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov w_class = 1.0 throw_speed = 7 throw_range = 15 - m_amt = 60 + m_amt = 10 /obj/item/weapon/pen/sleepypen desc = "It's a normal black ink pen with a sharp point." @@ -933,19 +934,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov icon = 'items.dmi' icon_state = "rack_parts" flags = FPRINT | TABLEPASS| CONDUCT - -/obj/item/weapon/rods - name = "rods" - icon = 'items.dmi' - icon_state = "rods" - var/amount = 1.0 - flags = FPRINT | TABLEPASS| CONDUCT - w_class = 3.0 - force = 9.0 - throwforce = 15.0 - throw_speed = 5 - throw_range = 20 - m_amt = 1875 + m_amt = 3750 /obj/item/weapon/rubber_chicken name = "Rubber Chicken" @@ -975,68 +964,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov force = 5.0 throwforce = 15.0 item_state = "shard-glass" - -/obj/item/weapon/sheet - name = "sheet" - icon = 'items.dmi' - var/amount = 1.0 - var/length = 2.5 - var/width = 1.5 - var/height = 0.01 - flags = FPRINT | TABLEPASS - throwforce = 5.0 - throw_speed = 1 - throw_range = 4 - w_class = 4.0 - -/obj/item/weapon/sheet/glass - name = "glass" - icon_state = "sheet-glass" - force = 5.0 g_amt = 3750 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - -/obj/item/weapon/sheet/rglass - name = "reinforced glass" - icon_state = "sheet-rglass" - item_state = "sheet-rglass" - force = 6.0 - g_amt = 3750 - m_amt = 1875 - throwforce = 5 - w_class = 3.0 - throw_speed = 3 - throw_range = 3 - -/obj/item/weapon/sheet/metal - name = "metal" - icon_state = "sheet-metal" - desc = "A heavy sheet of metal." - throwforce = 14.0 - m_amt = 3750 - throwforce = 10.0 - throw_speed = 1 - throw_range = 4 - w_class = 3.0 - flags = FPRINT | TABLEPASS | CONDUCT - -/obj/item/weapon/sheet/r_metal - name = "reinforced metal" - desc = "A very heavy sheet of metal." - icon_state = "sheet-r_metal" - force = 5.0 - throwforce = 14.0 - item_state = "sheet-metal" - m_amt = 7500 - throwforce = 15.0 - throw_speed = 1 - throw_range = 4 - w_class = 3.0 - flags = FPRINT | TABLEPASS | CONDUCT - /obj/item/weapon/syndicate_uplink name = "station bounced radio" @@ -1101,12 +1029,14 @@ Total SMES charging rate should not exceed total power generation rate, or an ov name = "table parts" icon = 'items.dmi' icon_state = "table_parts" + m_amt = 3750 flags = FPRINT | TABLEPASS| CONDUCT /obj/item/weapon/table_parts/reinforced name = "table parts" icon = 'items.dmi' icon_state = "reinf_tableparts" + m_amt = 7500 flags = FPRINT | TABLEPASS| CONDUCT /obj/item/weapon/tank @@ -1155,19 +1085,6 @@ Total SMES charging rate should not exceed total power generation rate, or an ov w_class = 2.5 force = 4.0 -/obj/item/weapon/tile - name = "steel floor tile" - desc = "... Those could work as a pretty decent throwing weapon" - icon = 'items.dmi' - icon_state = "tile" - var/amount = 1.0 - w_class = 3.0 - throw_speed = 5 - throw_range = 20 - force = 6.0 - throwforce = 15.0 - - /obj/item/weapon/teleportation_scroll name = "Teleportation Scroll" icon = 'items.dmi' @@ -1183,7 +1100,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov name = "weldingtool" icon = 'items.dmi' icon_state = "welder" - var/welding = 0.0 + var/welding = 0 var/status = 0 //flamethrower construction :shobon: flags = FPRINT | TABLEPASS| CONDUCT force = 3.0 @@ -1191,7 +1108,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov throw_speed = 1 throw_range = 5 w_class = 2.0 - m_amt = 30 + m_amt = 70 g_amt = 30 /obj/item/weapon/wire @@ -1247,6 +1164,7 @@ Total SMES charging rate should not exceed total power generation rate, or an ov var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 m_amt = 700 + g_amt = 50 var/rigged = 0 // true if rigged to explode /obj/item/weapon/cell/robotcrate diff --git a/code/game/asteroid/turf.dm b/code/game/asteroid/turf.dm index 3aae72bf291..ddbc8462013 100644 --- a/code/game/asteroid/turf.dm +++ b/code/game/asteroid/turf.dm @@ -13,13 +13,13 @@ /turf/simulated/wall/asteroid/iron icon_state = "asteroid_i" - contains = /obj/item/weapon/sheet/metal + contains = /obj/item/stack/sheet/metal max_amount = 3 min_amount = 1 /turf/simulated/wall/asteroid/silicon icon_state = "asteroid_i" - contains = /obj/item/weapon/sheet/glass + contains = /obj/item/stack/sheet/glass max_amount = 3 min_amount = 1 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index efb9afedda3..d3209d848cc 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -156,8 +156,8 @@ if (istype (src, /mob/living/carbon)) var/obj/item/source2 = src source2.blood_DNA = null - var/icon/I = new /icon(source2.icon_old, source2.icon_state) - source2.icon = I + //var/icon/I = new /icon(source2.icon_old, source2.icon_state) //doesnt have icon_old + //source2.icon = I if (istype (src, /obj/item)) var/obj/item/source2 = src source2.blood_DNA = null diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index de6440089f7..dc21e2d730a 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -398,7 +398,7 @@ ///////////////////////////// /datum/game_mode/revolution/proc/check_heads_victory() for(var/datum/mind/rev_mind in head_revolutionaries) - if(rev_mind.current.stat != 2) + if(rev_mind && rev_mind.current && rev_mind.current.stat != 2) return 0 return 1 diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 83a0e3d0f7b..94b9166e67a 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -88,11 +88,11 @@ datum/hSB P.back.layer = 20 P.internal = P.back if("hsbmetal") - var/obj/item/weapon/sheet/hsb = new/obj/item/weapon/sheet/metal + var/obj/item/stack/sheet/hsb = new/obj/item/stack/sheet/metal hsb.amount = 50 hsb.loc = usr.loc if("hsbglass") - var/obj/item/weapon/sheet/hsb = new/obj/item/weapon/sheet/glass + var/obj/item/stack/sheet/hsb = new/obj/item/stack/sheet/glass hsb.amount = 50 hsb.loc = usr.loc if("hsbairlock") diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index d7c4d8ac090..f82205af0c4 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -1,6 +1,7 @@ /obj/machinery/portable_atmospherics/canister name = "canister" icon = 'atmos.dmi' + icon_state = "yellow" density = 1 var/health = 100.0 flags = FPRINT | CONDUCT @@ -8,7 +9,8 @@ var/valve_open = 0 var/release_pressure = ONE_ATMOSPHERE - var/color = "blue" + var/color = "yellow" + var/labeled = 0 var/filled = 0.5 pressure_resistance = 7*ONE_ATMOSPHERE var/temperature_resistance = 1000 + T0C @@ -18,10 +20,12 @@ name = "Canister: \[N2O\]" icon_state = "redws" color = "redws" + labeled = 1 /obj/machinery/portable_atmospherics/canister/nitrogen name = "Canister: \[N2\]" icon_state = "red" color = "red" + labeled = 1 /obj/machinery/portable_atmospherics/canister/oxygen name = "Canister: \[O2\]" icon_state = "blue" @@ -29,14 +33,17 @@ name = "Canister \[Toxin (Bio)\]" icon_state = "orange" color = "orange" + labeled = 1 /obj/machinery/portable_atmospherics/canister/carbon_dioxide name = "Canister \[CO2\]" icon_state = "black" color = "black" + labeled = 1 /obj/machinery/portable_atmospherics/canister/air name = "Canister \[Air\]" icon_state = "grey" color = "grey" + labeled = 1 /obj/machinery/portable_atmospherics/canister/update_icon() src.overlays = 0 @@ -158,7 +165,7 @@ holding_text = {"
Tank Pressure: [holding.air_contents.return_pressure()] KPa
Remove Tank
"} - var/output_text = {"[name]
+ var/output_text = {"[name][!labeled?" relabel":""]
Pressure: [air_contents.return_pressure()] KPa
Port Status: [(connected_port)?("Connected"):("Disconnected")] [holding_text] @@ -195,6 +202,23 @@ Release Pressure: - - max_m_amount) + user << "\red The autolathe is full. Please remove metal from the autolathe in order to insert more." + return 1 + if (src.g_amount + O.g_amt > max_g_amount) + user << "\red The autolathe is full. Please remove glass from the autolathe in order to insert more." + return 1 + if (O.m_amt == 0 && O.g_amt == 0) + user << "\red This object does not contain significant amounts of metal or glass, or cannot be accepted by the autolathe due to size or hazardous materials." + return 1 /* if (istype(O, /obj/item/weapon/grab) && src.hacked) var/obj/item/weapon/grab/G = O @@ -18,79 +39,95 @@ m_amount += 50000 return */ - if (istype(O, /obj/item/weapon/sheet/metal)) - if (src.m_amount < 150000.0) - spawn(16) { - if (O) - flick("autolathe_c",src) - src.m_amount += O:height * O:width * O:length * 100000.0 - O:amount-- - if (O:amount < 1) - del(O) - } - else - user << "The autolathe is full. Please remove metal from the autolathe in order to insert more." - else if (istype(O, /obj/item/weapon/sheet/glass) || istype(O, /obj/item/weapon/sheet/rglass)) - if (src.g_amount < 75000.0) - spawn(16) { - flick("autolathe_c",src) - src.g_amount += O:height * O:width * O:length * 100000.0 - O:amount-- - if (O:amount < 1) - del(O) - } - else - user << "The autolathe is full. Please remove glass from the autolathe in order to insert more." - else if (O.g_amt || O.m_amt) - spawn(16) { - flick("autolathe_c",src) - if(O) - if(O.g_amt) // Added null checks to avoid runtime errors when an item doesn't have an expected variable -- TLE - src.g_amount += O.g_amt - if(O.m_amt) - src.m_amount += O.m_amt - del O - } + var/amount = 1 + var/obj/item/stack/stack + var/m_amt = O.m_amt + var/g_amt = O.g_amt + if (istype(O, /obj/item/stack)) + stack = O + amount = stack.amount + if (m_amt) + amount = min(amount, round((max_m_amount-src.m_amount)/m_amt)) + if (g_amt) + amount = min(amount, round((max_g_amount-src.g_amount)/g_amt)) + stack.use(amount) else - user << "This object does not contain significant amounts of metal or glass, or cannot be accepted by the autolathe due to size or hazardous materials." + usr.before_take_item(O) + O.loc = src + icon_state = "autolathe1" + flick("autolathe_c",src) + busy = 1 + use_power(max(1000, (m_amt+g_amt)*amount/10)) + spawn(16) + icon_state = "autolathe" + flick("autolathe_o",src) + src.m_amount += m_amt * amount + src.g_amount += g_amt * amount + if (O && O.loc == src) + del(O) + busy = 0 + src.updateUsrDialog() -/obj/machinery/autolathe/attack_paw(user as mob) +/obj/machinery/autolathe/attack_paw(mob/user as mob) return src.attack_hand(user) -/obj/machinery/autolathe/attack_hand(user as mob) - var/dat +/obj/machinery/autolathe/attack_hand(mob/user as mob) + user.machine = src + interact(user) + +/obj/machinery/autolathe/proc/wires_win(mob/user as mob) + var/dat as text + dat += "Autolathe Wires:
" + for(var/wire in src.wires) + dat += text("[wire] Wire:
[src.wires[wire] ? "Mend" : "Cut"] Pulse
") + + dat += text("The red light is [src.disabled ? "off" : "on"].
") + dat += text("The green light is [src.shocked ? "off" : "on"].
") + dat += text("The blue light is [src.hacked ? "off" : "on"].
") + user << browse("Autolathe Hacking[dat]","window=autolathe_hack") + onclose(user, "autolathe_hack") + +/obj/machinery/autolathe/proc/regular_win(mob/user as mob) + var/dat as text + dat = text("Metal Amount: [src.m_amount] cm3 (MAX: [max_m_amount])
\nGlass Amount: [src.g_amount] cm3 (MAX: [max_g_amount])
") + var/list/objs = list() + objs += src.L + if (src.hacked) + objs += src.LL + for(var/obj/t in objs) + var/title = "[t.name] ([t.m_amt] m /[t.g_amt] g)" + if (m_amount" + continue + dat += "[title]" + if (istype(t, /obj/item/stack)) + var/obj/item/stack/S = t + var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) + if (max_multiplier>1) + dat += " |" + if (max_multiplier>10) + dat += " x[10]" + if (max_multiplier>25) + dat += " x[25]" + if (max_multiplier>1) + dat += " x[max_multiplier]" + dat += "
" + user << browse("Autolathe Control Panel[dat]", "window=autolathe_regular") + onclose(user, "autolathe_regular") + +/obj/machinery/autolathe/proc/interact(mob/user as mob) if(..()) return if (src.shocked) src.shock(user) if (src.opened) - dat += "Autolathe Wires:
" - var/wire - for(wire in src.wires) - dat += text("[wire] Wire: [src.wires[wire] ? "Mend" : "Cut"] Pulse
") - - dat += text("The red light is [src.disabled ? "off" : "on"].
") - dat += text("The green light is [src.shocked ? "off" : "on"].
") - dat += text("The blue light is [src.hacked ? "off" : "on"].
") - user << browse("Autolathe Hacking[dat]","window=autolathe_hack") - onclose(user, "autolathe_hack") + wires_win(user) return if (src.disabled) - user << "You press the button, but nothing happens." + user << "\red You press the button, but nothing happens." return - if (src.temp) - dat = text("[]

Clear Screen", src.temp, src) - else - dat = text("Metal Amount: [src.m_amount] cm3 (MAX: 150,000)
\nGlass Amount: [src.g_amount] cm3 (MAX: 75,000)
") - var/list/objs = list() - objs += src.L - if (src.hacked) - objs += src.LL - for(var/obj/t in objs) - dat += text("[t.name] ([t.m_amt] cc metal/[t.g_amt] cc glass)
") - user << browse("Autolathe Control Panel[dat]", "window=autolathe_regular") - onclose(user, "autolathe_regular") + regular_win(user) return /obj/machinery/autolathe/Topic(href, href_list) @@ -98,99 +135,117 @@ return usr.machine = src src.add_fingerprint(usr) - if(href_list["make"]) - var/obj/template = locate(href_list["make"]) - if(src.m_amount >= template.m_amt && src.g_amount >= template.g_amt) - spawn(16) + if (!busy) + if(href_list["make"]) + var/turf/T = get_step(src.loc, get_dir(src,usr)) + var/obj/template = locate(href_list["make"]) + var/multiplier = text2num(href_list["multiplier"]) + if (!multiplier) multiplier = 1 + var/power = max(2000, (template.m_amt+template.g_amt)*multiplier/5) + if(src.m_amount >= template.m_amt*multiplier && src.g_amount >= template.g_amt*multiplier) + busy = 1 + use_power(power) + icon_state = "autolathe1" flick("autolathe_c",src) spawn(16) - flick("autolathe_o",src) + use_power(power) spawn(16) - src.m_amount -= template.m_amt - src.g_amount -= template.g_amt - if(src.m_amount < 0) - src.m_amount = 0 - if(src.g_amount < 0) - src.g_amount = 0 - new template.type(usr.loc) - if(href_list["act"]) - if(href_list["act"] == "pulse") - if (!istype(usr.equipped(), /obj/item/device/multitool)) - usr << "You need a multitool!" - else - if(src.wires[href_list["wire"]]) - usr << "You can't pulse a cut wire." + icon_state = "autolathe" + flick("autolathe_o",src) + use_power(power) + spawn(16) + src.m_amount -= template.m_amt*multiplier + src.g_amount -= template.g_amt*multiplier + if(src.m_amount < 0) + src.m_amount = 0 + if(src.g_amount < 0) + src.g_amount = 0 + var/obj/new_item = new template.type(T) + if (multiplier>1) + var/obj/item/stack/S = new_item + S.amount = multiplier + busy = 0 + src.updateUsrDialog() + if(href_list["act"]) + if(href_list["act"] == "pulse") + if (!istype(usr.equipped(), /obj/item/device/multitool)) + usr << "You need a multitool!" + else + if(src.wires[href_list["wire"]]) + usr << "You can't pulse a cut wire." + else + if(src.hack_wire == href_list["wire"]) + src.hacked = !src.hacked + spawn(100) src.hacked = !src.hacked + if(src.disable_wire == href_list["wire"]) + src.disabled = !src.disabled + src.shock(usr) + spawn(100) src.disabled = !src.disabled + if(src.shock_wire == href_list["wire"]) + src.shocked = !src.shocked + src.shock(usr) + spawn(100) src.shocked = !src.shocked + if(href_list["act"] == "wire") + if (!istype(usr.equipped(), /obj/item/weapon/wirecutters)) + usr << "You need wirecutters!" else if(src.hack_wire == href_list["wire"]) src.hacked = !src.hacked - spawn(100) src.hacked = !src.hacked if(src.disable_wire == href_list["wire"]) src.disabled = !src.disabled src.shock(usr) - spawn(100) src.disabled = !src.disabled if(src.shock_wire == href_list["wire"]) src.shocked = !src.shocked src.shock(usr) - spawn(100) src.shocked = !src.shocked - if(href_list["act"] == "wire") - if (!istype(usr.equipped(), /obj/item/weapon/wirecutters)) - usr << "You need wirecutters!" - else - if(src.hack_wire == href_list["wire"]) - src.hacked = !src.hacked - if(src.disable_wire == href_list["wire"]) - src.disabled = !src.disabled - src.shock(usr) - if(src.shock_wire == href_list["wire"]) - src.shocked = !src.shocked - src.shock(usr) - - if (href_list["temp"]) - src.temp = null - - for(var/mob/M in viewers(1, src)) - if ((M.client && M.machine == src)) - src.attack_hand(M) + else + usr << "\red The autolathe is busy. Please wait for completion of previous operation." src.updateUsrDialog() return +var/global/list/autolathe_recipes = list( \ + /* screwdriver removed*/ \ + new /obj/item/weapon/wirecutters(), \ + new /obj/item/weapon/wrench(), \ + new /obj/item/weapon/crowbar(), \ + new /obj/item/weapon/weldingtool(), \ + new /obj/item/clothing/head/helmet/welding(), \ + new /obj/item/device/multitool(), \ + new /obj/item/weapon/airlock_electronics(), \ + new /obj/item/device/flashlight(), \ + new /obj/item/weapon/extinguisher(), \ + new /obj/item/stack/sheet/metal(), \ + new /obj/item/stack/sheet/glass(), \ + new /obj/item/stack/sheet/r_metal(), \ + new /obj/item/stack/sheet/rglass(), \ + new /obj/item/stack/rods(), \ + new /obj/item/weapon/rcd_ammo(), \ + new /obj/item/weapon/scalpel(), \ + new /obj/item/weapon/circular_saw(), \ + new /obj/item/device/t_scanner(), \ + new /obj/item/weapon/reagent_containers/glass/bucket(), \ + new /obj/item/weapon/ammo/shell/blank(), \ + new /obj/item/device/taperecorder(), \ + ) + +var/global/list/autolathe_recipes_hidden = list( \ + new /obj/item/weapon/flamethrower(), \ + new /obj/item/device/igniter(), \ + new /obj/item/device/timer(), \ + new /obj/item/weapon/rcd(), \ + new /obj/item/device/infra(), \ + new /obj/item/device/infra_sensor(), \ + new /obj/item/weapon/handcuffs(), \ + new /obj/item/weapon/ammo/a357(), \ + new /obj/item/weapon/ammo/shell/gauge(), \ + new /obj/item/weapon/ammo/a38(), \ + new /obj/item/weapon/ammo/shell/beanbag(), \ + new /obj/item/weapon/ammo/shell/dart(), \ + /* new /obj/item/weapon/shield/riot(), */ \ + ) /obj/machinery/autolathe/New() ..() - // screwdriver removed - src.L += new /obj/item/weapon/wirecutters(src) - src.L += new /obj/item/weapon/wrench(src) - src.L += new /obj/item/weapon/crowbar(src) - src.L += new /obj/item/weapon/weldingtool(src) - src.L += new /obj/item/clothing/head/helmet/welding(src) - src.L += new /obj/item/device/multitool(src) - src.L += new /obj/item/weapon/airlock_electronics(src) - src.L += new /obj/item/device/flashlight(src) - src.L += new /obj/item/weapon/extinguisher(src) - src.L += new /obj/item/weapon/sheet/metal(src) - src.L += new /obj/item/weapon/sheet/glass(src) - src.L += new /obj/item/weapon/sheet/r_metal(src) - src.L += new /obj/item/weapon/sheet/rglass(src) - src.L += new /obj/item/weapon/rods(src) - src.L += new /obj/item/weapon/rcd_ammo(src) - src.L += new /obj/item/weapon/scalpel(src) - src.L += new /obj/item/weapon/circular_saw(src) - src.L += new /obj/item/device/t_scanner(src) - src.L += new /obj/item/weapon/reagent_containers/glass/bucket(src) - src.L += new /obj/item/weapon/ammo/shell/blank(src) - src.L += new /obj/item/device/taperecorder(src) - src.LL += new /obj/item/weapon/flamethrower(src) - src.LL += new /obj/item/device/igniter(src) - src.LL += new /obj/item/device/timer(src) - src.LL += new /obj/item/weapon/rcd(src) - src.LL += new /obj/item/device/infra(src) - src.LL += new /obj/item/device/infra_sensor(src) - src.LL += new /obj/item/weapon/handcuffs(src) - src.LL += new /obj/item/weapon/ammo/a357(src) - src.LL += new /obj/item/weapon/ammo/shell/gauge(src) - src.LL += new /obj/item/weapon/ammo/a38(src) - src.LL += new /obj/item/weapon/ammo/shell/beanbag(src) - src.LL += new /obj/item/weapon/ammo/shell/dart(src) -// src.LL += new /obj/item/weapon/shield/riot(src) + src.L = autolathe_recipes + src.LL = autolathe_recipes_hidden src.wires["Light Red"] = 0 src.wires["Dark Red"] = 0 src.wires["Blue"] = 0 diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index ea63dd196ed..e67805f0f6e 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -74,21 +74,14 @@ return -/obj/machinery/bot/floorbot/attackby(var/obj/item/weapon/W , mob/user as mob) - if(istype(W, /obj/item/weapon/tile)) - var/obj/item/weapon/tile/T = W +/obj/machinery/bot/floorbot/attackby(var/obj/item/W , mob/user as mob) + if(istype(W, /obj/item/stack/tile)) + var/obj/item/stack/tile/T = W if(src.amount >= 50) return - var/loaded = 0 - if(src.amount + T.amount > 50) - var/i = 50 - src.amount - src.amount += i - T.amount -= i - loaded = i - else - src.amount += T.amount - loaded = T.amount - del(T) + var/loaded = min(50-src.amount, T.amount) + T.use(loaded) + src.amount += loaded user << "\red You load [loaded] tiles into the floorbot. He now contains [src.amount] tiles!" src.updateicon() if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) @@ -162,7 +155,7 @@ floorbottargets += bot.target if(src.amount <= 0 && ((src.target == null) || !src.target)) if(src.eattiles) - for(var/obj/item/weapon/tile/T in view(7, src)) + for(var/obj/item/stack/tile/T in view(7, src)) if(T != src.oldtarget && !(target in floorbottargets)) src.oldtarget = T src.target = T @@ -170,7 +163,7 @@ if(src.target == null || !src.target) if(src.maketiles) if(src.target == null || !src.target) - for(var/obj/item/weapon/sheet/metal/M in view(7, src)) + for(var/obj/item/stack/sheet/metal/M in view(7, src)) if(!(M in floorbottargets) && M != src.oldtarget && M.amount == 1 && !(istype(M.loc, /turf/simulated/wall))) src.oldtarget = M src.target = M @@ -208,7 +201,7 @@ src.target = F break if((!src.target || src.target == null) && src.eattiles) - for(var/obj/item/weapon/tile/T in view(7, src)) + for(var/obj/item/stack/tile/T in view(7, src)) if(!(T in floorbottargets) && T != src.oldtarget) src.oldtarget = T src.target = T @@ -238,9 +231,9 @@ src.path = new() if(src.loc == src.target || src.loc == src.target.loc) - if(istype(src.target, /obj/item/weapon/tile)) + if(istype(src.target, /obj/item/stack/tile)) src.eattile(src.target) - else if(istype(src.target, /obj/item/weapon/sheet/metal)) + else if(istype(src.target, /obj/item/stack/sheet/metal)) src.maketile(src.target) else if(istype(src.target, /turf/)) repair(src.target) @@ -263,7 +256,7 @@ if(istype(target, /turf/space/)) for(var/mob/O in viewers(src, null)) O.show_message(text("\red [src] begins to repair the hole"), 1) - var/obj/item/weapon/tile/T = new /obj/item/weapon/tile + var/obj/item/stack/tile/T = new /obj/item/stack/tile src.repairing = 1 spawn(50) T.build(src.loc) @@ -284,8 +277,8 @@ src.anchored = 0 src.target = null -/obj/machinery/bot/floorbot/proc/eattile(var/obj/item/weapon/tile/T) - if(!istype(T, /obj/item/weapon/tile)) +/obj/machinery/bot/floorbot/proc/eattile(var/obj/item/stack/tile/T) + if(!istype(T, /obj/item/stack/tile)) return for(var/mob/O in viewers(src, null)) O.show_message(text("\red [src] begins to collect tiles."), 1) @@ -306,8 +299,8 @@ src.target = null src.repairing = 0 -/obj/machinery/bot/floorbot/proc/maketile(var/obj/item/weapon/sheet/metal/M) - if(!istype(M, /obj/item/weapon/sheet/metal)) +/obj/machinery/bot/floorbot/proc/maketile(var/obj/item/stack/sheet/metal/M) + if(!istype(M, /obj/item/stack/sheet/metal)) return if(M.amount > 1) return @@ -319,7 +312,7 @@ src.target = null src.repairing = 0 return - var/obj/item/weapon/tile/T = new /obj/item/weapon/tile + var/obj/item/stack/tile/T = new /obj/item/stack/tile T.amount = 4 T.loc = M.loc del(M) @@ -334,8 +327,8 @@ -/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/weapon/tile/T, mob/user as mob) - if(!istype(T, /obj/item/weapon/tile)) +/obj/item/weapon/storage/toolbox/mechanical/attackby(var/obj/item/stack/tile/T, mob/user as mob) + if(!istype(T, /obj/item/stack/tile)) ..() return if(src.contents.len >= 1) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 921b9c3ec7a..ecd07debf4e 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -38,13 +38,7 @@ return if(charging) - charging.loc = usr - charging.layer = 20 - if (user.hand ) - user.l_hand = charging - else - user.r_hand = charging - + usr.put_in_hand(charging) charging.add_fingerprint(user) charging.updateicon() @@ -53,6 +47,9 @@ chargelevel = -1 updateicon() +/obj/machinery/cell_charger/attack_ai(mob/user) + return + /obj/machinery/cell_charger/process() //world << "ccpt [charging] [stat]" if(!charging || (stat & (BROKEN|NOPOWER)) ) diff --git a/code/game/machinery/computer/AIcore.dm b/code/game/machinery/computer/AIcore.dm index 1351175728b..950b46c9226 100644 --- a/code/game/machinery/computer/AIcore.dm +++ b/code/game/machinery/computer/AIcore.dm @@ -10,7 +10,7 @@ var/obj/item/brain/brain = null -/obj/AIcore/attackby(obj/item/weapon/P as obj, mob/user as mob) +/obj/AIcore/attackby(obj/item/P as obj, mob/user as mob) switch(state) if(0) if(istype(P, /obj/item/weapon/wrench)) @@ -23,8 +23,7 @@ playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 20)) user << "\blue You deconstruct the frame." - var/obj/item/weapon/sheet/r_metal/A = new /obj/item/weapon/sheet/r_metal( src.loc ) - A.amount = 4 + new /obj/item/stack/sheet/r_metal( src.loc, 4) del(src) if(1) if(istype(P, /obj/item/weapon/wrench)) @@ -79,7 +78,7 @@ var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) A.amount = 5 - if(istype(P, /obj/item/weapon/sheet/rglass)) + if(istype(P, /obj/item/stack/sheet/rglass)) if(P:amount >= 2) playsound(src.loc, 'Deconstruct.ogg', 50, 1) if(do_after(user, 20)) @@ -129,8 +128,7 @@ src.icon_state = "3b" else src.icon_state = "3" - var/obj/item/weapon/sheet/rglass/A = new /obj/item/weapon/sheet/rglass( src.loc ) - A.amount = 2 + new /obj/item/stack/sheet/rglass( src.loc, 2 ) if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'Screwdriver.ogg', 50, 1) user << "\blue You connect the monitor." diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index a1ad3975be5..b95d71d5977 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -105,7 +105,7 @@ -/obj/computerframe/attackby(obj/item/weapon/P as obj, mob/user as mob) +/obj/computerframe/attackby(obj/item/P as obj, mob/user as mob) switch(state) if(0) if(istype(P, /obj/item/weapon/wrench)) @@ -118,8 +118,7 @@ playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 20)) user << "\blue You deconstruct the frame." - var/obj/item/weapon/sheet/metal/A = new /obj/item/weapon/sheet/metal( src.loc ) - A.amount = 5 + new /obj/item/stack/sheet/metal( src.loc, 5 ) del(src) if(1) if(istype(P, /obj/item/weapon/wrench)) @@ -171,24 +170,21 @@ var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc ) A.amount = 5 - if(istype(P, /obj/item/weapon/sheet/glass)) + if(istype(P, /obj/item/stack/sheet/glass)) if(P:amount >= 2) playsound(src.loc, 'Deconstruct.ogg', 50, 1) if(do_after(user, 20)) - if(P) - P:amount -= 2 - if(!P:amount) del(P) - user << "\blue You put in the glass panel." - src.state = 4 - src.icon_state = "4" + P:use(2) + user << "\blue You put in the glass panel." + src.state = 4 + src.icon_state = "4" if(4) if(istype(P, /obj/item/weapon/crowbar)) playsound(src.loc, 'Crowbar.ogg', 50, 1) user << "\blue You remove the glass panel." src.state = 3 src.icon_state = "3" - var/obj/item/weapon/sheet/glass/A = new /obj/item/weapon/sheet/glass( src.loc ) - A.amount = 2 + new /obj/item/stack/sheet/glass( src.loc, 2 ) if(istype(P, /obj/item/weapon/screwdriver)) playsound(src.loc, 'Screwdriver.ogg', 50, 1) user << "\blue You connect the monitor." diff --git a/code/game/machinery/microwave.dm b/code/game/machinery/microwave.dm index 48704c6bd29..ea98faceb6b 100644 --- a/code/game/machinery/microwave.dm +++ b/code/game/machinery/microwave.dm @@ -172,12 +172,12 @@ /datum/recipe/humankabob humanmeat_amount = 2 - extra_item = /obj/item/weapon/rods + extra_item = /obj/item/stack/rods creates = "/obj/item/weapon/reagent_containers/food/snacks/humankabob" /datum/recipe/monkeykabob monkeymeat_amount = 2 - extra_item = /obj/item/weapon/rods + extra_item = /obj/item/stack/rods creates = "/obj/item/weapon/reagent_containers/food/snacks/monkeykabob" /datum/recipe/tofubread diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index f29eef676bd..4f7d511e41e 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -92,7 +92,7 @@ if(istype(O,/obj/item/weapon/rcd)) if(O:matter < 30) O:matter += 1 - if(istype(O,/obj/item/weapon/sheet/metal) || istype(O,/obj/item/weapon/sheet/rglass) || istype(O,/obj/item/weapon/cable_coil)) + if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/weapon/cable_coil)) if(O:amount < 50) O:amount += 1 // Security diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 6b9f7c36a27..7f13c07d54e 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -8,8 +8,8 @@ var/operating = 0 var/obj/item/robot_parts/being_built = null -/obj/machinery/robotic_fabricator/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) - if (istype(O, /obj/item/weapon/sheet/metal)) +/obj/machinery/robotic_fabricator/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (istype(O, /obj/item/stack/sheet/metal)) if (src.metal_amount < 150000.0) var/count = 0 spawn(15) @@ -17,7 +17,7 @@ if(!O:amount) return while(metal_amount < 150000 && O:amount) - src.metal_amount += O:height * O:width * O:length * 100000.0 + src.metal_amount += O:m_amt /*O:height * O:width * O:length * 100000.0*/ O:amount-- count++ diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 81b80fb8fd3..d926253250e 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -216,7 +216,6 @@ if(src.active >= 1) src.active = 0 icon_state = "Shield_Gen" - user << "You " user.visible_message("[user] turned the shield generator off.", \ "You turn off the shield generator.", \ diff --git a/code/game/machinery/singularity.dm b/code/game/machinery/singularity.dm index 25297b5e833..e2bd4caecd7 100644 --- a/code/game/machinery/singularity.dm +++ b/code/game/machinery/singularity.dm @@ -32,13 +32,14 @@ However people seem to like it for some reason. anchored = !anchored playsound(src.loc, 'Ratchet.ogg', 75, 1) if(anchored) - user.visible_message("[user.name] secure [src.name] to the floor.", \ + user.visible_message("[user.name] secures [src.name] to the floor.", \ "You secure the [src.name] to the floor.", \ "You hear ratchet") else - user.visible_message("[user.name] unsecure [src.name] from the floor.", \ - "You unsecure the [src.name] to the floor.", \ + user.visible_message("[user.name] unsecures [src.name] from the floor.", \ + "You unsecure the [src.name] from the floor.", \ "You hear ratchet") + return return ..() /proc/singularity_is_surrounded(turf/T) @@ -139,7 +140,7 @@ However people seem to like it for some reason. /obj/machinery/the_singularity/proc/notify_collector_controller() var/oldsrc = src - src = 0 //for spawn() working even after Del(), see byond documentation about sleep() -rastaf0 + src = null //for spawn() working even after Del(), see byond documentation about sleep() -rastaf0 for(var/obj/machinery/power/collector_control/myCC in orange(collector_control_range,oldsrc)) spawn() myCC.updatecons() @@ -212,9 +213,6 @@ However people seem to like it for some reason. gain = 2 else if(isturf(A)) - if(istype(A, /turf/space)) - world << "DEBUG: the_singularity tryes to eat space!!!11" - return /*if(!active) if(isturf(A,/turf/simulated/floor/engine)) //here was a bug. But now it's a feature. -rasta0 return*/ @@ -299,19 +297,13 @@ However people seem to like it for some reason. if (istype(X,/turf/simulated/floor) && !istype(X,/turf/simulated/floor/plating)) if(!X:broken) if(prob(80)) - new/obj/item/weapon/tile (X) + new/obj/item/stack/tile (X) X:break_tile_to_plating() else X:break_tile() else if(istype(X,/turf/simulated/wall)) - if (istype(X,/turf/simulated/wall/r_wall)) - new /obj/structure/girder/reinforced( X ) - new /obj/item/weapon/sheet/r_metal( X ) - else - new /obj/structure/girder( X ) - new /obj/item/weapon/sheet/metal( X ) - X:ReplaceWithFloor() + X:dismantle_wall() else X:ReplaceWithFloor() @@ -662,16 +654,16 @@ However people seem to like it for some reason. else if(state == 0) state = 1 playsound(src.loc, 'Ratchet.ogg', 75, 1) - user.visible_message("[user.name] secure [src.name] to the floor.", \ - "You secure the external reinforcing bolts to the floor.", \ + user.visible_message("[user.name] secures [src.name] to the floor.", \ + "You secure the external reinforcing bolts.", \ "You hear ratchet") src.anchored = 1 else if(state == 1) state = 0 playsound(src.loc, 'Ratchet.ogg', 75, 1) - user.visible_message("[user.name] unsecure [src.name] to the floor.", \ - "You undo the external reinforcing bolts to the floor.", \ + user.visible_message("[user.name] unsecures [src.name] to the floor.", \ + "You undo the external reinforcing bolts.", \ "You hear ratchet") src.anchored = 0 else @@ -691,7 +683,7 @@ However people seem to like it for some reason. playsound(src.loc, 'Welder2.ogg', 50, 1) if(state == 1) - user.visible_message("[user.name] start to weld [src.name] to the floor.", \ + user.visible_message("[user.name] starts to weld [src.name] to the floor.", \ "You start to weld the [src] to the floor.", \ "You hear welding") if (do_after(user,20)) @@ -701,7 +693,7 @@ However people seem to like it for some reason. return 1 else if(state == 3) - user.visible_message("[user.name] start to cut [src.name] to the floor.", \ + user.visible_message("[user.name] starts to cut [src.name] from the floor.", \ "You start to cut the [src] free from the floor.", \ "You hear welding") if (do_after(user,20)) @@ -818,11 +810,11 @@ However people seem to like it for some reason. src.active = !src.active if(src.active) updateicon_on() - user.visible_message("[user.name] turn on the collector array.", \ + user.visible_message("[user.name] turns on the collector array.", \ "You turn on the collector array.") else updateicon_off() - user.visible_message("[user.name] turn off the collector array.", \ + user.visible_message("[user.name] turns off the collector array.", \ "You turn off the collector array.") CU.updatecons() @@ -858,11 +850,11 @@ However people seem to like it for some reason. playsound(src.loc, 'Ratchet.ogg', 75, 1) src.anchored = !src.anchored if(src.anchored == 1) - user.visible_message("[user.name] secure [src.name] reinforcing bolts to the floor.", \ - "You secure the collector reinforcing bolts to the floor.", \ + user.visible_message("[user.name] secures [src.name] reinforcing bolts to the floor.", \ + "You secure the collector reinforcing bolts.", \ "You hear ratchet") else - user.visible_message("[user.name] unsecure [src.name] reinforcing bolts to the floor.", \ + user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \ "You undo the external reinforcing bolts.", \ "You hear ratchet") for(var/obj/machinery/power/collector_control/myCC in orange(1,src)) @@ -1042,12 +1034,12 @@ However people seem to like it for some reason. playsound(src.loc, 'Ratchet.ogg', 75, 1) src.anchored = !src.anchored if(src.anchored == 1) - user.visible_message("[user.name] secure [src.name] to the floor.", \ + user.visible_message("[user.name] secures [src.name] to the floor.", \ "You secure the [src.name] to the floor.", \ "You hear ratchet") connect_to_network() else - user.visible_message("[user.name] unsecure [src.name] to the floor.", \ + user.visible_message("[user.name] unsecures [src.name] to the floor.", \ "You undo the [src] securing bolts.", \ "You hear ratchet") disconnect_from_network() @@ -1122,11 +1114,11 @@ However people seem to like it for some reason. if(src.active >= 1) // src.active = 0 // icon_state = "Field_Gen" - user << "You are unable to turn off the [src]r, wait till it powers down." + user << "You are unable to turn off the [src], wait till it powers down." // src.cleanup() return 1 else - user.visible_message("[user.name] turn on [src.name]", \ + user.visible_message("[user.name] turns on [src.name]", \ "You turn on the [src].", \ "You hear heavy droning") turn_on() @@ -1221,7 +1213,7 @@ However people seem to like it for some reason. if(state == 0) state = 1 playsound(src.loc, 'Ratchet.ogg', 75, 1) - user.visible_message("[user.name] secure [src.name] to the floor.", \ + user.visible_message("[user.name] secures [src.name] to the floor.", \ "You secure the external reinforcing bolts to the floor.", \ "You hear ratchet") src.anchored = 1 @@ -1229,7 +1221,7 @@ However people seem to like it for some reason. else if(state == 1) state = 0 playsound(src.loc, 'Ratchet.ogg', 75, 1) - user.visible_message("[user.name] unsecure [src.name] reinforcing bolts to the floor.", \ + user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \ "You undo the external reinforcing bolts.", \ "You hear ratchet") src.anchored = 0 @@ -1246,7 +1238,7 @@ However people seem to like it for some reason. playsound(src.loc, 'Welder2.ogg', 50, 1) if(state == 1) - user.visible_message("[user.name] start to weld [src.name] to the floor.", \ + user.visible_message("[user.name] starts to weld [src.name] to the floor.", \ "You start to weld the [src] to the floor.", \ "You hear welding") if (do_after(user,20)) @@ -1256,7 +1248,7 @@ However people seem to like it for some reason. return 1 else if(state == 3) - user.visible_message("[user.name] start to cut [src.name] free from the floor.", \ + user.visible_message("[user.name] starts to cut [src.name] free from the floor.", \ "You start to cut the [src] free from the floor.", \ "You hear welding") if (do_after(user,20)) diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index 74c52637e8d..aaa50687ca1 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -144,7 +144,7 @@ user << "\blue You need more welding fuel to complete this task." return W:use_fuel(1) - new /obj/item/weapon/sheet/metal(src.loc) + new /obj/item/stack/sheet/metal(src.loc) for (var/mob/M in viewers(src)) M.show_message("\red [src] has been cut apart by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2) del(src) diff --git a/code/game/objects/door_assembly.dm b/code/game/objects/door_assembly.dm index c86cec4c11e..05fc3b0a661 100644 --- a/code/game/objects/door_assembly.dm +++ b/code/game/objects/door_assembly.dm @@ -82,7 +82,7 @@ obj/door_assembly state = 1 glass = 1 -/obj/door_assembly/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/door_assembly/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/weldingtool) && W:welding && !anchored ) if (W:get_fuel() < 1) user << "\blue You need more welding fuel to dissassemble the airlock assembly." @@ -94,12 +94,9 @@ obj/door_assembly sleep(40) if(get_turf(user) == T) user << "\blue You dissasembled the airlock assembly!" - new /obj/item/weapon/sheet/metal(get_turf(src)) - new /obj/item/weapon/sheet/metal(get_turf(src)) - new /obj/item/weapon/sheet/metal(get_turf(src)) - new /obj/item/weapon/sheet/metal(get_turf(src)) + new /obj/item/stack/sheet/metal(get_turf(src), 4) if(src.glass==1) - new /obj/item/weapon/sheet/rglass(get_turf(src)) + new /obj/item/stack/sheet/rglass(get_turf(src)) del(src) else if(istype(W, /obj/item/weapon/wrench) && !anchored ) playsound(src.loc, 'Ratchet.ogg', 100, 1) @@ -207,7 +204,7 @@ obj/door_assembly ae = electronics electronics = null ae.loc = src.loc - else if(istype(W, /obj/item/weapon/sheet/rglass) && glass == 0) + else if(istype(W, /obj/item/stack/sheet/rglass) && glass == 0) playsound(src.loc, 'Crowbar.ogg', 100, 1) var/turf/T = get_turf(user) user.visible_message("[user] adds reinforced glass windows to the airlock assembly.", "You start to install reinforced glass windows into the airlock assembly.") diff --git a/code/game/objects/grille.dm b/code/game/objects/grille.dm index 68767b7c3ba..0a1422b39e2 100644 --- a/code/game/objects/grille.dm +++ b/code/game/objects/grille.dm @@ -131,11 +131,11 @@ src.icon_state = "brokengrille" src.density = 0 src.destroyed = 1 - new /obj/item/weapon/rods( src.loc ) + new /obj/item/stack/rods( src.loc ) else if (src.health <= -10.0) - new /obj/item/weapon/rods( src.loc ) + new /obj/item/stack/rods( src.loc ) //SN src = null del(src) return diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 189c28a47ab..bcca62b2ea0 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -2,8 +2,7 @@ /obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) - var/obj/item/weapon/sheet/metal/M = new /obj/item/weapon/sheet/metal( src.loc ) - M.amount = 2 + new /obj/item/stack/sheet/metal( src.loc, 2 ) del(src) /obj/item/apc_frame/proc/try_build(turf/on_wall) diff --git a/code/game/objects/items/robot_parts.dm b/code/game/objects/items/robot_parts.dm index ee6ff8bfe21..fccb083004f 100644 --- a/code/game/objects/items/robot_parts.dm +++ b/code/game/objects/items/robot_parts.dm @@ -71,18 +71,13 @@ return 0 /obj/item/robot_parts/robot_suit/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/sheet/metal)) + if(istype(W, /obj/item/stack/sheet/metal)) var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly - B.loc = user - if (user.r_hand == W) - user.u_equip(W) - user.r_hand = B - else - user.u_equip(W) - user.l_hand = B - B.layer = 20 user << "You armed the robot frame" - del(W) + W:use(1) + if (user.get_inactive_hand()==src) + user.before_take_item(src) + user.put_in_inactive_hand(B) del(src) if(istype(W, /obj/item/robot_parts/l_leg)) user.drop_item() diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index b6ceec3f9d9..c1d05ce36f3 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -21,7 +21,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE var/lit = 0 //on or off var/turf/previousturf = null var/obj/item/weapon/weldingtool/part1 = null - var/obj/item/weapon/rods/part2 = null + var/obj/item/stack/rods/part2 = null var/obj/item/device/igniter/part3 = null var/obj/item/weapon/tank/plasma/part4 = null m_amt = 500 @@ -155,7 +155,7 @@ GETLINEEEEEEEEEEEEEEEEEEEEE if(isturf(location)) //start a fire if possible location.hotspot_expose(700, 2) -/obj/item/weapon/flamethrower/attackby(obj/item/weapon/tank/plasma/W as obj, mob/user as mob) +/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob) if(user.stat || user.restrained() || user.lying) return if (istype(W,/obj/item/weapon/tank/plasma)) diff --git a/code/game/objects/items/weapons/glass.dm b/code/game/objects/items/weapons/glass.dm deleted file mode 100644 index d344ec0f907..00000000000 --- a/code/game/objects/items/weapons/glass.dm +++ /dev/null @@ -1,278 +0,0 @@ -/* -CONTAINS: -GLASS SHEET -REINFORCED GLASS SHEET -SHARDS - -*/ - -/obj/item/weapon/sheet/glass/attack_hand(mob/user as mob) - if ((user.r_hand == src || user.l_hand == src)) - src.add_fingerprint(user) - var/obj/item/weapon/sheet/glass/F = new /obj/item/weapon/sheet/glass( user ) - F.amount = 1 - src.amount-- - if (user.hand) - user.l_hand = F - else - user.r_hand = F - F.layer = 20 - F.add_fingerprint(user) - if (src.amount < 1) - //SN src = null - del(src) - return - else - ..() - src.force = 5 - return - -/obj/item/weapon/sheet/glass/attackby(obj/item/weapon/W, mob/user) - if ( istype(W, /obj/item/weapon/sheet/glass) ) - var/obj/item/weapon/sheet/glass/G = W - if (G.amount >= MAX_STACK_AMOUNT_GLASS) - return - if (G.amount + src.amount > MAX_STACK_AMOUNT_GLASS) - src.amount = G.amount + src.amount - MAX_STACK_AMOUNT_GLASS - G.amount = MAX_STACK_AMOUNT_GLASS - else - G.amount += src.amount - //SN src = null - del(src) - return - return - else if( istype(W, /obj/item/weapon/rods) ) - - var/obj/item/weapon/rods/V = W - var/obj/item/weapon/sheet/rglass/R = new /obj/item/weapon/sheet/rglass(user.loc) - R.loc = user.loc - R.add_fingerprint(user) - - - if(V.amount == 1) - - if(user.client) - user.client.screen -= V - - user.u_equip(W) - del(W) - else - V.amount-- - - - if(src.amount == 1) - - if(user.client) - user.client.screen -= src - - user.u_equip(src) - del(src) - else - src.amount-- - return - - - -/obj/item/weapon/sheet/glass/examine() - set src in view(1) - - ..() - usr << text("There are [] glass sheet\s on the stack.", src.amount) - return - -/obj/item/weapon/sheet/glass/attack_self(mob/user as mob) - - if (!( istype(usr.loc, /turf/simulated) )) - return - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - switch(alert("Sheet-Glass", "Would you like full tile glass or one direction?", "one direct", "full (2 sheets)", "cancel", null)) - if("one direct") - var/go = 1 - for (var/obj/window/win in usr.loc) - if(win.ini_dir == NORTHWEST || win.ini_dir == NORTHEAST || win.ini_dir == SOUTHWEST || win.ini_dir == SOUTHEAST) - go = 0 - if(go) - var/obj/window/W = new /obj/window( usr.loc ) - W.anchored = 0 - if (src.amount < 1) - return - src.amount-- - else usr << "Can't let you do that." - if("full (2 sheets)") - var/go = 1 - for (var/obj/window/win in usr.loc) - if(win) - go = 0 - if (go) - if (src.amount < 2) - return - src.amount -= 2 - var/obj/window/W = new /obj/window( usr.loc ) - W.dir = SOUTHWEST - W.ini_dir = SOUTHWEST - W.anchored = 0 - else usr << "Can't let you do that." - else - if (src.amount <= 0) - user.u_equip(src) - del(src) - return - return - - - - - - -// REINFORCED GLASS - -/obj/item/weapon/sheet/rglass/attack_hand(mob/user as mob) - if ((user.r_hand == src || user.l_hand == src)) - src.add_fingerprint(user) - var/obj/item/weapon/sheet/rglass/F = new /obj/item/weapon/sheet/rglass( user ) - F.amount = 1 - src.amount-- - if (user.hand) - user.l_hand = F - else - user.r_hand = F - F.layer = 20 - F.add_fingerprint(user) - if (src.amount < 1) - //SN src = null - del(src) - return - else - ..() - src.force = 5 - return - -/obj/item/weapon/sheet/rglass/attackby(obj/item/weapon/sheet/rglass/W as obj, mob/user as mob) - if (!( istype(W, /obj/item/weapon/sheet/rglass) )) - return - if (W.amount >= MAX_STACK_AMOUNT_GLASS) - return - if (W.amount + src.amount > MAX_STACK_AMOUNT_GLASS) - src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_GLASS - W.amount = MAX_STACK_AMOUNT_GLASS - else - W.amount += src.amount - del(src) - return - return - -/obj/item/weapon/sheet/rglass/examine() - set src in view(1) - - ..() - usr << text("There are [] reinforced glass sheet\s on the stack.", src.amount) - return - -/obj/item/weapon/sheet/rglass/attack_self(mob/user as mob) - if (!istype(usr.loc, /turf/simulated)) - return - if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") - usr << "\red You don't have the dexterity to do this!" - return - switch(alert("Sheet Reinf. Glass", "Would you like full tile glass or one direction?", "one direct", "full (2 sheets)", "cancel", null)) - if("one direct") - var/go = 1 - for (var/obj/window/win in usr.loc) - if(win.ini_dir == NORTHWEST || win.ini_dir == NORTHEAST || win.ini_dir == SOUTHWEST || win.ini_dir == SOUTHEAST) - go = 0 - if(go) - var/obj/window/W = new /obj/window( usr.loc, 1 ) - W.anchored = 0 - W.state = 0 - if (src.amount < 1) - return - src.amount-- - else usr << "Can't let you do that." - if("full (2 sheets)") - var/go = 1 - for (var/obj/window/win in usr.loc) - if(win) - go = 0 - if(go) - if (src.amount < 2) - return - src.amount -= 2 - var/obj/window/W = new /obj/window( usr.loc, 1 ) - W.dir = SOUTHWEST - W.ini_dir = SOUTHWEST - W.anchored = 0 - W.state = 0 - else usr << "Can't let you do that." - else - if (src.amount <= 0) - user.u_equip(src) - //SN src = null - del(src) - return - return - - - - - - - - -// SHARDS - -/obj/item/weapon/shard/Bump() - - spawn( 0 ) - if (prob(20)) - src.force = 15 - else - src.force = 4 - ..() - return - return - -/obj/item/weapon/shard/New() - - //****RM - //world<<"New shard at [x],[y],[z]" - - src.icon_state = pick("large", "medium", "small") - switch(src.icon_state) - if("small") - src.pixel_x = rand(1, 18) - src.pixel_y = rand(1, 18) - if("medium") - src.pixel_x = rand(1, 16) - src.pixel_y = rand(1, 16) - if("large") - src.pixel_x = rand(1, 10) - src.pixel_y = rand(1, 5) - else - return - -/obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() - if (!( istype(W, /obj/item/weapon/weldingtool) && W:welding )) - return - W:eyecheck(user) - new /obj/item/weapon/sheet/glass( user.loc ) - //SN src = null - del(src) - return - -/obj/item/weapon/shard/HasEntered(AM as mob|obj) - if(ismob(AM)) - var/mob/M = AM - M << "\red You step in the broken glass!" - playsound(src.loc, 'glass_step.ogg', 50, 1) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.shoes) - var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")] - H.weakened = max(3, H.weakened) - affecting.take_damage(5, 0) - H.UpdateDamageIcon() - H.updatehealth() - ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/metals_rods.dm b/code/game/objects/items/weapons/metals_rods.dm deleted file mode 100644 index 64f67d438fd..00000000000 --- a/code/game/objects/items/weapons/metals_rods.dm +++ /dev/null @@ -1,466 +0,0 @@ -/* -CONTAINS: -RODS -METAL -REINFORCED METAL -LATTICE - -*/ - - - -// RODS - -/obj/item/weapon/rods/examine() - set src in view(1) - - ..() - usr << text("There are [] rod\s left on the stack.", src.amount) - return - -/obj/item/weapon/rods/attack_hand(mob/user as mob) - if ((user.r_hand == src || user.l_hand == src)) - src.add_fingerprint(user) - var/obj/item/weapon/rods/F = new /obj/item/weapon/rods( user ) - F.amount = 1 - src.amount-- - if (user.hand) - user.l_hand = F - else - user.r_hand = F - F.layer = 20 - F.add_fingerprint(user) - if (src.amount < 1) - //SN src = null - del(src) - return - else - ..() - return - -/obj/item/weapon/rods/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (istype(W, /obj/item/weapon/weldingtool) && W:welding) - if(amount < 2) - user << "\blue You need at least two rods to do this." - return - if (W:get_fuel() < 2) - user << "\blue You need more welding fuel to complete this task." - return - W:eyecheck(user) - W:use_fuel(2) - new /obj/item/weapon/sheet/metal(usr.loc) - for (var/mob/M in viewers(src)) - M.show_message("\red [src] is shaped into metal by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2) - - amount -= 2 - if(amount == 0) - del(src) - return - if (istype(W, /obj/item/weapon/rods)) - if (W:amount == MAX_STACK_AMOUNT_RODS) - return - if (W:amount + src:amount > MAX_STACK_AMOUNT_RODS) - src.amount = W:amount + src:amount - MAX_STACK_AMOUNT_RODS - W:amount = MAX_STACK_AMOUNT_RODS - else - W:amount += src:amount - //SN src = null - del(src) - return - return - -/obj/item/weapon/rods/attack_self(mob/user as mob) - if (locate(/obj/grille, usr.loc)) - for(var/obj/grille/G in usr.loc) - if (G.destroyed) - G.health = 10 - G.density = 1 - G.destroyed = 0 - G.icon_state = "grille" - src.amount-- - else - else - if (src.amount < 2) - return - src.amount -= 2 - new /obj/grille( usr.loc ) - if (src.amount < 1) - del(src) - return - src.add_fingerprint(user) - return - - - - -// METAL SHEET - -/obj/item/weapon/sheet/metal/examine() - set src in view(1) - - ..() - usr << text("There are [] metal sheet\s on the stack.", src.amount) - return - -/obj/item/weapon/sheet/metal/attack_hand(mob/user as mob) - if ((user.r_hand == src || user.l_hand == src)) - src.add_fingerprint(user) - var/obj/item/weapon/sheet/metal/F = new /obj/item/weapon/sheet/metal( user ) - F.amount = 1 - src.amount-- - if (user.hand) - user.l_hand = F - else - user.r_hand = F - F.layer = 20 - F.add_fingerprint(user) - if (src.amount < 1) - del(src) - return - else - ..() - src.force = 5 - return - -/obj/item/weapon/sheet/metal/attackby(obj/item/weapon/sheet/metal/W as obj, mob/user as mob) - if (!( istype(W, /obj/item/weapon/sheet/metal) )) - return - if (W.amount >= MAX_STACK_AMOUNT_METAL) - return - if (W.amount + src.amount > MAX_STACK_AMOUNT_METAL) - src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_METAL - W.amount = MAX_STACK_AMOUNT_METAL - else - W.amount += src.amount - //SN src = null - del(src) - return - return - - - -/obj/item/weapon/sheet/metal/attack_self(mob/user as mob) - var/t1 = text("Amount Left: []
", src.amount) - var/list/L = list( ) - L["stool"] = "stool" - L["chair"] = "chair" - L["bed"] = "bed (2 metal)
" - L["table"] = "table parts (2 metal)" - L["rack"] = "rack parts
" - L["aircan"] = "air canister (2 metal)" - L["o2can"] = "oxygen canister (2 metal)" - L["carboncan"] = "co2 canister (2 metal)" - L["plcan"] = "plasma canister (2 metal)" - L["n2can"] = "n2 canister (2 metal)" - L["n2ocan"] = "n2o canister (2 metal)" - L["closet"] = "closet (2 metal)
" - L["fl_tiles"] = "4x floor tiles" - L["rods"] = "2x metal rods" - L["casing"] = "grenade casing (1 metal)" - L["reinforced"] = "reinforced sheet (2 metal)
" - L["computer"] = "computer frame (5 metal)
" - L["construct"] = "construct wall girders (2 metal)" - L["airlock"] = "construct airlock assembly (4 metal)" - L["apc_frame"] = "construct apc frame (2 metal)" - - for(var/t in L) - t1 += text("
[] ", src, t, L[t]) - t1 += "
" - t1 += "
" - user << browse(t1, "window=met_sheet") - onclose(user, "met_sheet") - return - -/obj/item/weapon/sheet/metal/Topic(href, href_list) - ..() - if ((usr.restrained() || usr.stat || usr.equipped() != src)) - return - if (href_list["make"]) - if (src.amount < 1) - //SN src = null - del(src) - return - switch(href_list["make"]) - if("rods") - src.amount-- - var/obj/item/weapon/rods/R = new /obj/item/weapon/rods( usr.loc ) - R.amount = 2 - if("table") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the table parts!") - return - src.amount -= 2 - new /obj/item/weapon/table_parts( usr.loc ) - if("stool") - src.amount-- - new /obj/stool( usr.loc ) - if("chair") - src.amount-- - var/obj/stool/chair/C = new /obj/stool/chair( usr.loc ) - C.dir = usr.dir - if (C.dir == NORTH) - C.layer = 5 - if("rack") - src.amount-- - new /obj/item/weapon/rack_parts( usr.loc ) - - if("aircan") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "grey" - C.icon_state = "grey" - - if("o2can") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "blue" - C.icon_state = "blue" - - if("carboncan") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "black" - C.icon_state = "black" - - if("plcan") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "orange" - C.icon_state = "orange" - - if("n2can") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "red" - C.icon_state = "red" - if("n2ocan") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the canister!") - return - src.amount -= 2 - var/obj/machinery/portable_atmospherics/canister/C = new /obj/machinery/portable_atmospherics/canister(usr.loc) - C.color = "redws" - C.icon_state = "redws" - - if("reinforced") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the reinforced sheet!") - return - src.amount -= 2 - var/obj/item/weapon/sheet/r_metal/C = new /obj/item/weapon/sheet/r_metal( usr.loc ) - C.amount = 1 - - if("casing") - if (src.amount < 1) //Not possible! - usr << text("\red You haven't got enough metal to create the grenade casing!") - return - src.amount-- - new /obj/item/weapon/chem_grenade( usr.loc ) - - if("closet") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the reinforced closet!") - return - src.amount -= 2 - new /obj/closet( usr.loc ) - if("fl_tiles") - src.amount-- - var/obj/item/weapon/tile/R = new /obj/item/weapon/tile( usr.loc ) - R.amount = 4 - if("bed") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the bed!") - return - src.amount -= 2 - new /obj/stool/bed( usr.loc ) - if("computer") - if(src.amount < 5) - usr << text("\red You haven't got enough metal to build the computer frame!") - return - src.amount -= 5 - new /obj/computerframe( usr.loc ) - if("construct") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to construct the wall girders!") - return - usr << "\blue Building wall girders ..." - var/turf/location = usr.loc - sleep(50) - if ((usr.loc == location)) - if (!istype(location, /turf/simulated/floor)) - return - - src.amount -= 2 - new /obj/structure/girder(location) - if("airlock") - if (src.amount < 4) - usr << text("\red You haven't got enough metal to construct the airlock assembly!") - return - usr << "\blue Building airlock assembly ..." - var/turf/location = usr.loc - sleep(50) - if ((usr.loc == location)) - if (!istype(location, /turf/simulated/floor)) - return - src.amount -= 4 - new /obj/door_assembly(location) - if("apc_frame") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the APC frame!") - return - src.amount -= 2 - new /obj/item/apc_frame(usr.loc) - - if (src.amount <= 0) - usr << browse(null, "window=met_sheet") - onclose(usr, "met_sheet") - usr.u_equip(src) - del(src) - - - return - spawn( 0 ) - src.attack_self(usr) - return - return - - - - - -// REINFORCED METAL SHEET - -/obj/item/weapon/sheet/r_metal/attackby(obj/item/weapon/sheet/r_metal/W as obj, mob/user as mob) - if (!( istype(W, /obj/item/weapon/sheet/r_metal) )) - return - if (W.amount >= MAX_STACK_AMOUNT_METAL) - return - if (W.amount + src.amount > MAX_STACK_AMOUNT_METAL) - src.amount = W.amount + src.amount - MAX_STACK_AMOUNT_METAL - W.amount = MAX_STACK_AMOUNT_METAL - else - W.amount += src.amount - //SN src = null - del(src) - return - return - -/obj/item/weapon/sheet/r_metal/attack_self(mob/user as mob) - var/t1 = text("Amount Left: []
", src.amount) - var/list/L = list( ) - L["table"] = "table parts (2 metal)" - L["metal"] = "2x metal sheet (1 metal)
" - L["core"] = "AI core (4 metal)" - for(var/t in L) - t1 += text("[] ", src, t, L[t]) - t1 += "
" - t1 += "
" - user << browse(t1, "window=met_sheet") - onclose(user, "met_sheet") - return - -/obj/item/weapon/sheet/r_metal/Topic(href, href_list) - ..() - if ((usr.restrained() || usr.stat || usr.equipped() != src)) - return - if (href_list["make"]) - if (src.amount < 1) - //SN src = null - del(src) - return - switch(href_list["make"]) - if("table") - if (src.amount < 2) - usr << text("\red You haven't got enough metal to build the reinforced table parts!") - return - src.amount -= 2 - new /obj/item/weapon/table_parts/reinforced( usr.loc ) - if("metal") - if (src.amount < 1) - usr << text("\red You haven't got enough metal to build the metal sheets!") - return - src.amount -= 1 - var/obj/item/weapon/sheet/metal/C = new /obj/item/weapon/sheet/metal( usr.loc ) - C.amount = 2 - if("core") - if (src.amount < 4) - usr << text("\red You haven't got enough metal to build the metal sheets!") - return - src.amount -= 4 - new /obj/AIcore( usr.loc ) - - - if (src.amount <= 0) - usr << browse(null, "window=met_sheet") - onclose(usr, "met_sheet") - usr.u_equip(src) - del(src) - - - return - spawn( 0 ) - src.attack_self(usr) - return - return - - - -// LATTICE???? - - -/obj/lattice/blob_act() - del(src) - return - -/obj/lattice/ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - del(src) - return - if(3.0) - return - else - return - -/obj/lattice/attackby(obj/item/weapon/C as obj, mob/user as mob) - - if (istype(C, /obj/item/weapon/tile)) - - C:build(get_turf(src)) - C:amount-- - playsound(src.loc, 'Genhit.ogg', 50, 1) - C.add_fingerprint(user) - - if (C:amount < 1) - user.u_equip(C) - del(C) - del(src) - return - if (istype(C, /obj/item/weapon/weldingtool) && C:welding) - user << "\blue Slicing lattice joints ..." - C:eyecheck(user) - new /obj/item/weapon/rods(src.loc) - del(src) - - return diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index a996cc6045a..b62560af40c 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -11,7 +11,7 @@ RACK PARTS /obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) - new /obj/item/weapon/sheet/metal( src.loc ) + new /obj/item/stack/sheet/metal( src.loc ) //SN src = null del(src) @@ -40,7 +40,7 @@ RACK PARTS // REINFORCED TABLE PARTS /obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) - new /obj/item/weapon/sheet/r_metal( src.loc ) + new /obj/item/stack/sheet/r_metal( src.loc ) //SN src = null del(src) @@ -70,7 +70,7 @@ RACK PARTS // RACK PARTS /obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) - new /obj/item/weapon/sheet/metal( src.loc ) + new /obj/item/stack/sheet/metal( src.loc ) del(src) return return diff --git a/code/game/objects/items/weapons/tiles_wires.dm b/code/game/objects/items/weapons/tiles_wires.dm index 53cafbe9ad7..59e96b89ef2 100644 --- a/code/game/objects/items/weapons/tiles_wires.dm +++ b/code/game/objects/items/weapons/tiles_wires.dm @@ -26,86 +26,3 @@ TILES return - -// TILES - -/obj/item/weapon/tile/New() - - src.pixel_x = rand(1, 14) - src.pixel_y = rand(1, 14) - return - -/obj/item/weapon/tile/examine() - set src in view(1) - - ..() - usr << text("There are [] tile\s left on the stack.", src.amount) - return - -/obj/item/weapon/tile/attack_hand(mob/user as mob) - - if ((user.r_hand == src || user.l_hand == src)) - src.add_fingerprint(user) - var/obj/item/weapon/tile/F = new /obj/item/weapon/tile( user ) - F.amount = 1 - src.amount-- - if (user.hand) - user.l_hand = F - else - user.r_hand = F - F.layer = 20 - F.add_fingerprint(user) - if (src.amount < 1) - //SN src = null - del(src) - return - else - ..() - return - -/obj/item/weapon/tile/attack_self(mob/user as mob) - - if (usr.stat) - return - var/T = user.loc - if (!( istype(T, /turf) )) - user << "\blue You must be on the ground!" - return - else - var/S = T - if (!( istype(S, /turf/space) )) - user << "You cannot build on or repair this turf!" - return - else - src.build(S) - src.amount-- - if (src.amount < 1) - user.u_equip(src) - //SN src = null - del(src) - return - src.add_fingerprint(user) - return - -/obj/item/weapon/tile/attackby(obj/item/weapon/tile/W as obj, mob/user as mob) - - if (!( istype(W, /obj/item/weapon/tile) )) - return - if (W.amount == 10) - return - W.add_fingerprint(user) - if (W.amount + src.amount > 10) - src.amount = W.amount + src.amount - 10 - W.amount = 10 - else - W.amount += src.amount - //SN src = null - del(src) - return - return - -/obj/item/weapon/tile/proc/build(turf/S as turf) - - var/turf/simulated/floor/W = S.ReplaceWithFloor() - W.to_plating() - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 27a69d59c18..8cacdf6d98d 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -88,15 +88,17 @@ WELDINGTOOOL usr << text("\icon[] [] contains [] units of fuel left!", src, src.name, get_fuel() ) return -/obj/item/weapon/weldingtool/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (status == 0 && istype(W,/obj/item/weapon/screwdriver)) - status = 1 - user << "\blue The welder can now be attached and modified." - else if (status == 1 && istype(W,/obj/item/weapon/rods)) - var/obj/item/weapon/rods/R = W - R.amount = R.amount - 1 - if (R.amount == 0) - del(R) +/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W,/obj/item/weapon/screwdriver)) + status = !status + if (status) + user << "\blue You resecure the welder." + else + user << "\blue The welder can now be attached and modified." + src.add_fingerprint(user) + else if (status == 1 && istype(W,/obj/item/stack/rods)) + var/obj/item/stack/rods/R = W + R.use(1) var/obj/item/assembly/weld_rod/F = new /obj/item/assembly/weld_rod( user ) src.loc = F F.part1 = src @@ -120,10 +122,8 @@ WELDINGTOOOL R.layer = 20 F.loc = user src.add_fingerprint(user) - else if (status == 1 && istype(W,/obj/item/weapon/screwdriver)) - status = 0 - user << "\blue You resecure the welder." - return + else + ..() // helper functions for weldingtool fuel use diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/stacks/glass.dm new file mode 100644 index 00000000000..b33cfe079a7 --- /dev/null +++ b/code/game/objects/stacks/glass.dm @@ -0,0 +1,137 @@ +/* +CONTAINS: +GLASS SHEET +REINFORCED GLASS SHEET +SHARDS + +*/ + +/proc/construct_window(mob/usr as mob, obj/item/stack/sheet/src as obj) + if (!( istype(usr.loc, /turf/simulated) )) + return + if ( ! (istype(usr, /mob/living/carbon/human) || \ + istype(usr, /mob/living/silicon) || \ + istype(usr, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") ) + usr << "\red You don't have the dexterity to do this!" + return 1 + var/reinf = istype(src, /obj/item/stack/sheet/rglass) + var/title = reinf?"Sheet Reinf. Glass":"Sheet-Glass" + title += " ([src.amount] sheet\s left)" + switch(alert(title, "Would you like full tile glass or one direction?", "one direct", "full (2 sheets)", "cancel", null)) + if("one direct") + if (src.amount < 1) + return 1 + var/list/directions = new/list(cardinal) + for (var/obj/window/win in usr.loc) + directions-=win.dir + if(!(win.ini_dir in cardinal)) + usr << "\red Can't let you do that." + return 1 + var/obj/window/W = new /obj/window( usr.loc, reinf ) + if (directions.len) + W.dir = directions[1] + W.ini_dir = W.dir + W.anchored = 0 + src.use(1) + if("full (2 sheets)") + if (src.amount < 2) + return 1 + if (locate(/obj/window) in usr.loc) + usr << "\red Can't let you do that." + return 1 + var/obj/window/W = new /obj/window( usr.loc, reinf ) + W.dir = SOUTHWEST + W.ini_dir = SOUTHWEST + W.anchored = 0 + src.use(2) + else + //do nothing + return + +// GLASS + +/obj/item/stack/sheet/glass/attack_self(mob/user as mob) + construct_window(usr, src) + +/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user) + if( istype(W, /obj/item/stack/rods) ) + var/obj/item/stack/rods/V = W + var/obj/item/stack/sheet/rglass/RG = new (user.loc) + RG.add_fingerprint(user) + RG.add_to_stacks(user) + V.use(1) + var/obj/item/stack/sheet/glass/G = src + src = null + var/replace = (user.get_inactive_hand()==G) + G.use(1) + if (!G && !RG && replace) + user.put_in_hand(RG) + else + return ..() + + +// REINFORCED GLASS + +/obj/item/stack/sheet/rglass/attack_self(mob/user as mob) + construct_window(usr, src) + + + + + + +// SHARDS + +/obj/item/weapon/shard/Bump() + + spawn( 0 ) + if (prob(20)) + src.force = 15 + else + src.force = 4 + ..() + return + return + +/obj/item/weapon/shard/New() + + //****RM + //world<<"New shard at [x],[y],[z]" + + src.icon_state = pick("large", "medium", "small") + switch(src.icon_state) + if("small") + src.pixel_x = rand(1, 18) + src.pixel_y = rand(1, 18) + if("medium") + src.pixel_x = rand(1, 16) + src.pixel_y = rand(1, 16) + if("large") + src.pixel_x = rand(1, 10) + src.pixel_y = rand(1, 5) + else + return + +/obj/item/weapon/shard/attackby(obj/item/weapon/W as obj, mob/user as mob) + if ( istype(W, /obj/item/weapon/weldingtool) && W:welding ) + W:eyecheck(user) + new /obj/item/stack/sheet/glass( user.loc ) + //SN src = null + del(src) + return + return ..() + +/obj/item/weapon/shard/HasEntered(AM as mob|obj) + if(ismob(AM)) + var/mob/M = AM + M << "\red You step in the broken glass!" + playsound(src.loc, 'glass_step.ogg', 50, 1) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(!H.shoes) + var/datum/organ/external/affecting = H.organs[pick("l_foot", "r_foot")] + H.weakened = max(3, H.weakened) + affecting.take_damage(5, 0) + H.UpdateDamageIcon() + H.updatehealth() + ..() \ No newline at end of file diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm new file mode 100644 index 00000000000..b179f63dede --- /dev/null +++ b/code/game/objects/stacks/metal.dm @@ -0,0 +1,130 @@ +/* +CONTAINS: +RODS +METAL +REINFORCED METAL +FLOOR TILES +*/ + + + +// RODS + +/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/weldingtool) && W:welding) + if(amount < 2) + user << "\red You need at least two rods to do this." + return + if (W:get_fuel() < 3) + user << "\red You need more welding fuel to complete this task." + return + W:eyecheck(user) + W:use_fuel(2) + var/obj/item/stack/sheet/metal/new_item = new(usr.loc) + new_item.add_to_stacks(usr) + for (var/mob/M in viewers(src)) + M.show_message("\red [src] is shaped into metal by [user.name] with the weldingtool.", 3, "\red You hear welding.", 2) + var/obj/item/stack/rods/R = src + src = null + var/replace = (user.get_inactive_hand()==R) + R.use(2) + if (!R && replace) + user.put_in_hand(new_item) + return + ..() + + +/obj/item/stack/rods/attack_self(mob/user as mob) + src.add_fingerprint(user) + if (locate(/obj/grille, usr.loc)) + for(var/obj/grille/G in usr.loc) + if (G.destroyed) + G.health = 10 + G.density = 1 + G.destroyed = 0 + G.icon_state = "grille" + use(1) + else + return 1 + else + if(amount < 2) + user << "\blue You need at least two rods to do this." + return + new /obj/grille( usr.loc ) + use(2) + return + + + +// METAL SHEET + +// /datum/stack_recipe/New(title, result_type, req_amount, res_amount, max_res_amount, time, one_per_turf, on_floor = 0) +var/global/list/datum/stack_recipe/metal_recipes = list ( \ + new/datum/stack_recipe("stool", /obj/stool), \ + new/datum/stack_recipe("chair", /obj/stool/chair, one_per_turf = 1), \ + new/datum/stack_recipe("bed", /obj/stool/bed, 2, one_per_turf = 1), \ + new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ + new/datum/stack_recipe("rack parts", /obj/item/weapon/rack_parts), \ + new/datum/stack_recipe("closet", /obj/closet, 2, one_per_turf = 1), \ + null, \ + new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 2, one_per_turf = 1), \ + null, \ + new/datum/stack_recipe("floor tile", /obj/item/stack/tile, 1, 4, 10), \ + new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ + new/datum/stack_recipe("reinforced sheet", /obj/item/stack/sheet/r_metal, 2, 1, 50), \ + null, \ + new/datum/stack_recipe("computer frame", /obj/computerframe, 5, one_per_turf = 1), \ + new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("airlock assembly", /obj/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \ + new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \ + ) + +/obj/item/stack/sheet/metal + New(var/loc, var/amount=null) + recipes = metal_recipes + return ..() + +// REINFORCED METAL SHEET + +// /datum/stack_recipe/New(title, result_type, req_amount, res_amount, max_res_amount, time, one_per_turf, on_floor = 0) +var/global/list/datum/stack_recipe/r_metal_recipes = list ( \ + new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/reinforced, 2), \ + new/datum/stack_recipe("metal sheet", /obj/item/stack/sheet/metal, 1, 2, 50), \ + new/datum/stack_recipe("AI core", /obj/AIcore, 4, one_per_turf = 1), \ + ) + +/obj/item/stack/sheet/r_metal + New(var/loc, var/amount=null) + recipes = r_metal_recipes + return ..() + + + +// TILES + +/obj/item/stack/tile/New() + src.pixel_x = rand(1, 14) + src.pixel_y = rand(1, 14) + return + +/obj/item/stack/tile/attack_self(mob/user as mob) + if (usr.stat) + return + var/T = user.loc + if (!( istype(T, /turf) )) + user << "\red You must be on the ground!" + return + if (!( istype(T, /turf/space) )) + user << "\red You cannot build on or repair this turf!" + return + src.build(T) + src.add_fingerprint(user) + use(1) + return + +/obj/item/stack/tile/proc/build(turf/S as turf) + var/turf/simulated/floor/W = S.ReplaceWithFloor() + W.to_plating() + return \ No newline at end of file diff --git a/code/game/objects/stacks/stack.dm b/code/game/objects/stacks/stack.dm new file mode 100644 index 00000000000..4a81fe9a3a1 --- /dev/null +++ b/code/game/objects/stacks/stack.dm @@ -0,0 +1,203 @@ +/* + Base object for stackable items. + Stackable items are: + metal + rmetal + glass + rglass + floor tiles + metal rods +*/ + +/obj/item/stack/New(var/loc, var/amount=null) + ..() + if (amount) + src.amount=amount + + return + +/obj/item/stack/examine() + set src in view(1) + ..() + usr << text("There are [] []\s left on the stack.", src.amount, src.singular_name) + return + +/obj/item/stack/proc/use(var/amount) + src.amount-=amount + if (src.amount<=0) + var/oldsrc = src + src = null //dont kill proc after del() + usr.before_take_item(oldsrc) + del(oldsrc) + return + +/obj/item/stack/proc/add_to_stacks(mob/usr as mob) + var/obj/item/stack/oldsrc = src + src = null + for (var/obj/item/stack/item in usr.loc) + if (item==oldsrc) + continue + if (!istype(item, oldsrc.type)) + continue + if (item.amount>=item.max_amount) + continue + oldsrc.attackby(item, usr) + usr << "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s." + if(!oldsrc) + break + +/obj/item/stack/attack_hand(mob/user as mob) + if (user.get_inactive_hand() == src) + var/obj/item/stack/F = new src.type( user, amount=1) + F.copy_evidences(src) + user.put_in_hand(F) + src.add_fingerprint(user) + F.add_fingerprint(user) + use(1) + if (src && usr.machine==src) + spawn(0) src.interact(usr) + else + ..() + return + +/obj/item/stack/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, src.type)) + var/obj/item/stack/S = W + if (S.amount >= max_amount) + return 1 + var/to_transfer as num + if (user.get_inactive_hand()==src) + to_transfer = 1 + else + to_transfer = min(src.amount, S.max_amount-S.amount) + S.amount+=to_transfer + src.use(to_transfer) + if (src && usr.machine==src) + spawn(0) src.interact(usr) + if (S && usr.machine==S) + spawn(0) S.interact(usr) + else return ..() + +/obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj) + src.blood_DNA = from.blood_DNA + src.blood_type = from.blood_type + src.fingerprints = from.fingerprints + src.fingerprintshidden = from.fingerprintshidden + src.fingerprintslast = from.fingerprintslast + +/datum/stack_recipe + var/title = "ERROR" + var/result_type + var/req_amount = 1 + var/res_amount = 1 + var/max_res_amount = 1 + var/time = 0 + var/one_per_turf = 0 + var/on_floor = 0 + New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = 0, on_floor = 0) + src.title = title + src.result_type = result_type + src.req_amount = req_amount + src.res_amount = res_amount + src.max_res_amount = max_res_amount + src.time = time + src.one_per_turf = one_per_turf + src.on_floor = on_floor + +/obj/item/stack + var/list/datum/stack_recipe/recipes + +/obj/item/stack/attack_self(mob/user as mob) + interact(user) + +/obj/item/stack/proc/interact(mob/user as mob) + if (!recipes) + return + if (!src || amount<=0) + user << browse(null, "window=stack") + user.machine = src //for correct work of onclose + var/t1 = text("Constructions from []Amount Left: []", src, src.amount) + for(var/i=1;i<=recipes.len,i++) + var/datum/stack_recipe/R = recipes[i] + if (isnull(R)) + t1 += "
" + continue + if (i>1 && !isnull(recipes[i-1])) + t1+="
" + var/max_multiplier = round(src.amount / R.req_amount) + var/title as text + var/can_build = 1 + can_build = can_build && (max_multiplier>0) + if (R.one_per_turf) + can_build = can_build && !(locate(R.result_type) in usr.loc) + if (R.on_floor) + can_build = can_build && istype(usr.loc, /turf/simulated/floor) + if (R.res_amount>1) + title+= "[R.res_amount]x [R.title]\s" + else + title+= "[R.title]" + title+= " ([R.req_amount] [src.singular_name]\s)" + if (can_build) + t1 += text("[] ", src, i, title) + else + t1 += text("[]", title) + continue + if (R.max_res_amount>1 && max_multiplier>1) + var/multiplier = min(max_multiplier, round(R.max_res_amount/R.res_amount)) + t1 += text(" | []x ", src, i, multiplier, multiplier*R.res_amount) + t1 += "
" + user << browse(t1, "window=stack") + onclose(user, "stack") + return + +/obj/item/stack/Topic(href, href_list) + ..() + if ((usr.restrained() || usr.stat || usr.equipped() != src)) + return + if (href_list["make"]) + if (src.amount < 1) del(src) //Never should happen + + var/datum/stack_recipe/R = recipes[text2num(href_list["make"])] + var/multiplier = text2num(href_list["multiplier"]) + if (!multiplier) multiplier = 1 + if (src.amount < R.req_amount*multiplier) + if (R.req_amount*multiplier>1) + usr << "\red You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!" + else + usr << "\red You haven't got enough [src] to build \the [R.title]!" + return + if (R.one_per_turf && (locate(R.result_type) in usr.loc)) + usr << "\red There is another [R.title] here!" + return + if (R.on_floor && !istype(usr.loc, /turf/simulated/floor)) + usr << "\red \The [R.title] must be constructed on the floor!" + return + if (R.time) + usr << "\blue Building [R.title] ..." + if (!do_after(usr, R.time)) + return + if (src.amount < R.req_amount*multiplier) + return + var/O = new R.result_type( usr.loc ) + if (R.max_res_amount>1) + var/obj/item/stack/new_item = O + new_item.amount = R.res_amount*multiplier + //new_item.add_to_stacks(usr) + src.amount-=R.req_amount*multiplier + if (src.amount<=0) + var/oldsrc = src + src = null //dont kill proc after del() + usr.before_take_item(oldsrc) + del(oldsrc) + if (istype(O,/obj/item)) + usr.put_in_hand(O) + if (src && usr.machine==src) //do not reopen closed window + spawn( 0 ) + src.interact(usr) + return + return + +/obj/item/stack/Del() + if (src && usr && usr.machine==src) + usr << browse(null, "window=stack") + ..() diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index f2963585303..f58030afbb6 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -20,13 +20,13 @@ /obj/stool/blob_act() if(prob(75)) - new /obj/item/weapon/sheet/metal( src.loc ) + new /obj/item/stack/sheet/metal( src.loc ) del(src) /obj/stool/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'Ratchet.ogg', 50, 1) - new /obj/item/weapon/sheet/metal( src.loc ) + new /obj/item/stack/sheet/metal( src.loc ) //SN src = null del(src) return @@ -36,7 +36,7 @@ ..() if (istype(W, /obj/item/weapon/wrench)) playsound(src.loc, 'Ratchet.ogg', 50, 1) - new /obj/item/weapon/sheet/metal( src.loc ) + new /obj/item/stack/sheet/metal( src.loc ) del(src) return diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index cf4494b7a95..05cf90cdf0e 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -15,114 +15,128 @@ obj/structure icon_state = "reinforced" state = 2 -/obj/structure/girder/attackby(obj/item/weapon/W as obj, mob/user as mob) +/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench) && state == 0 && anchored && !istype(src,/obj/structure/girder/displaced)) playsound(src.loc, 'Ratchet.ogg', 100, 1) - var/turf/T = get_turf(user) user << "\blue Now disassembling the girder" - sleep(40) - if(get_turf(user) == T) + if(do_after(user,40)) user << "\blue You dissasembled the girder!" - new /obj/item/weapon/sheet/metal(get_turf(src)) + new /obj/item/stack/sheet/metal(get_turf(src)) del(src) - else if((istype(W, /obj/item/weapon/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced)) - W:amount -= 2 - if(W:amount <= 0) - del(W) + else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2) && istype(src,/obj/structure/girder/displaced)) + W:use(2) user << "\blue You create a false wall! Push on it to open or close the passage." new /obj/falsewall (src.loc) del(src) - else if(istype(W, /obj/item/weapon/sheet/r_metal) && istype(src,/obj/structure/girder/displaced)) - W:amount -= 1 - if(W:amount <= 0) - del(W) + else if(istype(W, /obj/item/stack/sheet/r_metal) && istype(src,/obj/structure/girder/displaced)) + W:use(2) user << "\blue You create a false r wall! Push on it to open or close the passage." new /obj/falserwall (src.loc) del(src) else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) playsound(src.loc, 'Screwdriver.ogg', 100, 1) - var/turf/T = get_turf(user) user << "\blue Now unsecuring support struts" - sleep(40) - if(get_turf(user) == T) + if(do_after(user,40)) user << "\blue You unsecured the support struts!" state = 1 else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) playsound(src.loc, 'Wirecutter.ogg', 100, 1) - var/turf/T = get_turf(user) user << "\blue Now removing support struts" - sleep(40) - if(get_turf(user) == T) + if(do_after(user,40)) user << "\blue You removed the support struts!" new/obj/structure/girder( src.loc ) del(src) else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) playsound(src.loc, 'Crowbar.ogg', 100, 1) - var/turf/T = get_turf(user) user << "\blue Now dislodging the girder" - sleep(40) - if(get_turf(user) == T) + if(do_after(user, 40)) user << "\blue You dislodged the girder!" new/obj/structure/girder/displaced( src.loc ) del(src) else if(istype(W, /obj/item/weapon/wrench) && state == 0 && !anchored ) playsound(src.loc, 'Ratchet.ogg', 100, 1) - var/turf/T = get_turf(user) user << "\blue Now securing the girder" - sleep(40) - if(get_turf(user) == T) + if(get_turf(user, 40)) user << "\blue You secured the girder!" new/obj/structure/girder( src.loc ) del(src) - else if((istype(W, /obj/item/weapon/sheet/metal)) && (W:amount >= 2)) - var/turf/T = get_turf(user) + else if((istype(W, /obj/item/stack/sheet/metal)) && (W:amount >= 2)) user << "\blue Now adding plating..." - sleep(40) - if (get_turf(user) == T) + if (do_after(user,40)) user << "\blue You added the plating!" var/turf/Tsrc = get_turf(src) Tsrc.ReplaceWithWall() - W:amount -= 2 - if(W:amount <= 0) - del(W) + W:use(2) del(src) return - else if (istype(W, /obj/item/weapon/sheet/r_metal)) - var/turf/T = get_turf(user) + else if (istype(W, /obj/item/stack/sheet/r_metal)) if (src.icon_state == "reinforced") //Time to finalize! user << "\blue Now finalising reinforced wall." - sleep(50) - if(W) - if(get_turf(user) == T) - user << "\blue Wall fully reinforced!" - var/turf/Tsrc = get_turf(src) - Tsrc.ReplaceWithRWall() - W:amount-- - if (W:amount <= 0) - del(W) - del(src) - return + if(do_after(user, 50)) + user << "\blue Wall fully reinforced!" + var/turf/Tsrc = get_turf(src) + Tsrc.ReplaceWithRWall() + W:use(1) + del(src) + return else user << "\blue Now reinforcing girders" - sleep(60) - user << "\blue Girders reinforced!" - W:amount-- - if (W:amount <= 0) - del(W) - new/obj/structure/girder/reinforced( src.loc ) - del(src) - return + if (do_after(user,60)) + user << "\blue Girders reinforced!" + W:use(1) + new/obj/structure/girder/reinforced( src.loc ) + del(src) + return else ..() /obj/structure/girder/blob_act() if(prob(40)) - del(src) \ No newline at end of file + del(src) + + +// LATTICE + + +/obj/lattice/blob_act() + del(src) + return + +/obj/lattice/ex_act(severity) + switch(severity) + if(1.0) + del(src) + return + if(2.0) + del(src) + return + if(3.0) + return + else + return + +/obj/lattice/attackby(obj/item/C as obj, mob/user as mob) + + if (istype(C, /obj/item/stack/tile)) + + C:build(get_turf(src)) + C:use(1) + playsound(src.loc, 'Genhit.ogg', 50, 1) + C.add_fingerprint(user) + del(src) + return + if (istype(C, /obj/item/weapon/weldingtool) && C:welding) + user << "\blue Slicing lattice joints ..." + C:eyecheck(user) + new /obj/item/stack/rods(src.loc) + del(src) + + return diff --git a/code/game/objects/window.dm b/code/game/objects/window.dm index aecd3cc9784..b87f91f77b2 100644 --- a/code/game/objects/window.dm +++ b/code/game/objects/window.dm @@ -10,7 +10,7 @@ health -= 35 if(health <=0) new /obj/item/weapon/shard( src.loc ) - new /obj/item/weapon/rods( src.loc ) + new /obj/item/stack/rods( src.loc ) src.density = 0 del(src) @@ -24,21 +24,21 @@ return if(2.0) new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) //SN src = null del(src) return if(3.0) if (prob(50)) new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) del(src) return return /obj/window/blob_act() - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) density = 0 del(src) @@ -66,7 +66,7 @@ //world << "glass at [x],[y],[z] Mhit" src.health = 0 new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) src.density = 0 @@ -92,7 +92,7 @@ step(src, get_dir(AM, src)) if (src.health <= 0) new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) src.density = 0 del(src) return @@ -107,7 +107,7 @@ O << text("\red [] smashes through the window!", usr) src.health = 0 new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) src.density = 0 del(src) return @@ -120,7 +120,7 @@ O << text("\red [] smashes through the window!", usr) src.health = 0 new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) src.density = 0 del(src) return @@ -142,7 +142,7 @@ src.health = 0 new /obj/item/weapon/shard(src.loc) if(reinf) - new /obj/item/weapon/rods(src.loc) + new /obj/item/stack/rods(src.loc) src.density = 0 del(src) return @@ -183,11 +183,11 @@ index = 0 while(index < 2) new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) index++ else new /obj/item/weapon/shard( src.loc ) - if(reinf) new /obj/item/weapon/rods( src.loc) + if(reinf) new /obj/item/stack/rods( src.loc) src.density = 0 del(src) return diff --git a/code/game/turf.dm b/code/game/turf.dm index 03e5203177d..9b8fc08aecd 100644 --- a/code/game/turf.dm +++ b/code/game/turf.dm @@ -227,21 +227,21 @@ if(!devastated) playsound(src.loc, 'Welder.ogg', 100, 1) new /obj/structure/girder/reinforced(src) - new /obj/item/weapon/sheet/r_metal( src ) + new /obj/item/stack/sheet/r_metal( src ) else - new /obj/item/weapon/sheet/metal( src ) - new /obj/item/weapon/sheet/metal( src ) - new /obj/item/weapon/sheet/r_metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/r_metal( src ) else if(!devastated) playsound(src.loc, 'Welder.ogg', 100, 1) new /obj/structure/girder(src) - new /obj/item/weapon/sheet/metal( src ) - new /obj/item/weapon/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) else - new /obj/item/weapon/sheet/metal( src ) - new /obj/item/weapon/sheet/metal( src ) - new /obj/item/weapon/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) + new /obj/item/stack/sheet/metal( src ) ReplaceWithFloor() @@ -355,7 +355,7 @@ return -/turf/simulated/wall/r_wall/attackby(obj/item/weapon/W as obj, mob/user as mob) +/turf/simulated/wall/r_wall/attackby(obj/item/W as obj, mob/user as mob) if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") usr << "\red You don't have the dexterity to do this!" @@ -397,7 +397,7 @@ sleep(100) if ((user.loc == T && user.equipped() == W)) src.d_state = 6 - new /obj/item/weapon/rods( src ) + new /obj/item/stack/rods( src ) user << "\blue You removed the support rods." else if (istype(W, /obj/item/weapon/wrench)) @@ -414,7 +414,7 @@ if (src.d_state == 0) playsound(src.loc, 'Wirecutter.ogg', 100, 1) src.d_state = 1 - new /obj/item/weapon/rods( src ) + new /obj/item/stack/rods( src ) else if (istype(W, /obj/item/weapon/screwdriver)) if (src.d_state == 1) @@ -447,7 +447,7 @@ dismantle_wall() return - else if ((istype(W, /obj/item/weapon/sheet/metal)) && (src.d_state)) + else if ((istype(W, /obj/item/stack/sheet/metal)) && (src.d_state)) var/turf/T = user.loc user << "\blue Repairing wall." sleep(100) @@ -491,7 +491,7 @@ switch(pick(1,2;75,3)) if (1) src.ReplaceWithLattice() - if(prob(33)) new /obj/item/weapon/sheet/metal(src) + if(prob(33)) new /obj/item/stack/sheet/metal(src) if(2) src.ReplaceWithSpace() if(3) @@ -500,7 +500,7 @@ else src.break_tile() src.hotspot_expose(1000,CELL_VOLUME) - if(prob(33)) new /obj/item/weapon/sheet/metal(src) + if(prob(33)) new /obj/item/stack/sheet/metal(src) if(3.0) if (prob(50)) src.break_tile() @@ -543,8 +543,7 @@ turf/simulated/floor/proc/update_icon() user << "\blue Removing rods..." playsound(src.loc, 'Ratchet.ogg', 80, 1) if(do_after(user, 30)) - new /obj/item/weapon/rods(src) - new /obj/item/weapon/rods(src) + new /obj/item/stack/rods(src, 2) ReplaceWithFloor() var/turf/simulated/floor/F = src F.to_plating() @@ -596,7 +595,7 @@ turf/simulated/floor/proc/update_icon() icon_state = "floor" levelupdate() -/turf/simulated/floor/attackby(obj/item/weapon/C as obj, mob/user as mob) +/turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) if(!C || !user) return 0 @@ -605,36 +604,33 @@ turf/simulated/floor/proc/update_icon() if(broken || burnt) user << "\red You remove the broken plating." else - new /obj/item/weapon/tile(src) + new /obj/item/stack/tile(src) to_plating() playsound(src.loc, 'Crowbar.ogg', 80, 1) return - if(istype(C, /obj/item/weapon/rods)) + if(istype(C, /obj/item/stack/rods)) if (!src.intact) if (C:amount >= 2) user << "\blue Reinforcing the floor..." if(do_after(user, 30)) - if (C) - ReplaceWithEngineFloor() - C:amount -= 2 - if (C:amount <= 0) del(C) //wtf - playsound(src.loc, 'Deconstruct.ogg', 80, 1) + ReplaceWithEngineFloor() + playsound(src.loc, 'Deconstruct.ogg', 80, 1) + C:use(2) + return else user << "\red You need more rods." else user << "\red You must remove the plating first." return - if(istype(C, /obj/item/weapon/tile) && !intact) + if(istype(C, /obj/item/stack/tile) && !intact) restore_tile() - var/obj/item/weapon/tile/T = C + var/obj/item/stack/tile/T = C playsound(src.loc, 'Genhit.ogg', 50, 1) - if(--T.amount < 1) - del(T) - return + T.use(1) if(istype(C, /obj/item/weapon/cable_coil)) if(!intact) @@ -685,32 +681,22 @@ turf/simulated/floor/proc/update_icon() step(user.pulling, get_dir(user.pulling.loc, src)) return -/turf/space/attackby(obj/item/weapon/C as obj, mob/user as mob) +/turf/space/attackby(obj/item/C as obj, mob/user as mob) - if (istype(C, /obj/item/weapon/rods)) + if (istype(C, /obj/item/stack/rods)) user << "\blue Constructing support lattice ..." playsound(src.loc, 'Genhit.ogg', 50, 1) ReplaceWithLattice() - C:amount-- - - if (C:amount < 1) - user.u_equip(C) - del(C) - return + C:use(1) return - if (istype(C, /obj/item/weapon/tile)) - if(locate(/obj/lattice, src)) - var/obj/lattice/L = locate(/obj/lattice, src) + if (istype(C, /obj/item/stack/tile)) + var/obj/lattice/L = locate(/obj/lattice, src) + if(L) del(L) playsound(src.loc, 'Genhit.ogg', 50, 1) C:build(src) - C:amount-- - - if (C:amount < 1) - user.u_equip(C) - del(C) - return + C:use(1) return else user << "\red The plating is going to need some support." diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 26b02db09f5..ed55ef1f76b 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -17,8 +17,8 @@ if (!msg) return - var/rendered = "DEAD: ADMIN([src.stealth ? pick("BADMIN", "ViktoriaSA", "Drunkwaffel", "Android Datuhh") : src.key]) says, \"[msg]\"" - + var/rendered = "DEAD: ADMIN([src.stealth ? src.fakekey : src.key]) says, \"[msg]\"" + //pick("BADMIN", "ViktoriaSA", "Drunkwaffel", "Android Datuhh") for (var/mob/M in world) if(M.stat == 2 || (M.client && M.client.holder)) M.show_message(rendered, 2) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0906546b5d4..425042f29c0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -678,10 +678,9 @@ handle_regular_hud_updates() - if (istype(src.ears, /obj/item/device/radio/headset/traitor)) - src.robot_talk_understand = 1 - else - src.robot_talk_understand = 0 + if (istype(src.ears, /obj/item/device/radio/headset)) + var/obj/item/device/radio/headset/H = src.ears + src.robot_talk_understand = H.bintran if (src.stat == 2 || src.mutations & 4) src.sight |= SEE_TURFS diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index d48365a4e31..ccb635d4036 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -68,7 +68,7 @@ message_mode = "left hand" message = copytext(message, 3) - else if (copytext(message, 1, 3) == ":h") + else if (copytext(message, 1, 3) == ":h" || (copytext(message, 1, 3) == ":ð" )) if (ishuman(src)) message_mode = "secure headset" message = copytext(message, 3) @@ -81,14 +81,17 @@ message_mode = "intercom" message = copytext(message, 3) - else if (copytext(message, 1, 3) == ":s" && src.robot_talk_understand) + else if ((copytext(message, 1, 3) == ":s" || (copytext(message, 1, 3) == ":û" )) && src.robot_talk_understand) message = copytext(message, 3) message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) src.robot_talk(message) return - // - message = trim(message) + else if ((copytext(message, 1, 3) == ":a" || (copytext(message, 1, 3) == ":ô")) && src.alien_talk_understand) + message = copytext(message, 3) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + src.alien_talk(message) + return if (!message) return diff --git a/code/modules/mob/living/silicon/hivebot/hive_modules.dm b/code/modules/mob/living/silicon/hivebot/hive_modules.dm index 56d34b7d3d8..4416dc2df81 100644 --- a/code/modules/mob/living/silicon/hivebot/hive_modules.dm +++ b/code/modules/mob/living/silicon/hivebot/hive_modules.dm @@ -44,11 +44,11 @@ src.modules += new /obj/item/weapon/wirecutters(src) src.modules += new /obj/item/device/multitool(src) - var/obj/item/weapon/sheet/metal/M = new /obj/item/weapon/sheet/metal(src) + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src) M.amount = 50 src.modules += M - var/obj/item/weapon/sheet/rglass/G = new /obj/item/weapon/sheet/rglass(src) + var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) G.amount = 50 src.modules += G diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index c19e9abb7ba..cf96280f1b7 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -59,11 +59,11 @@ src.modules += new /obj/item/weapon/wirecutters(src) src.modules += new /obj/item/device/multitool(src) - var/obj/item/weapon/sheet/metal/M = new /obj/item/weapon/sheet/metal(src) + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(src) M.amount = 50 src.modules += M - var/obj/item/weapon/sheet/rglass/G = new /obj/item/weapon/sheet/rglass(src) + var/obj/item/stack/sheet/rglass/G = new /obj/item/stack/sheet/rglass(src) G.amount = 50 src.modules += G diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3438f010417..34fb176fa95 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1095,6 +1095,43 @@ T.Entered(W) return +/mob/proc/before_take_item(var/obj/item/item) + u_equip(item) + if (src.client) + src.client.screen -= item + src.update_clothing() + return + +/mob/proc/get_active_hand() + if (src.hand) + return src.l_hand + else + return src.r_hand + +/mob/proc/get_inactive_hand() + if ( ! src.hand) + return src.l_hand + else + return src.r_hand + +/mob/proc/put_in_hand(var/obj/item/I) + I.loc = src + if (src.hand) + src.l_hand = I + else + src.r_hand = I + I.layer = 20 + src.update_clothing() + +/mob/proc/put_in_inactive_hand(var/obj/item/I) + I.loc = src + if (!src.hand) + src.l_hand = I + else + src.r_hand = I + I.layer = 20 + src.update_clothing() + /mob/proc/reset_view(atom/A) if (src.client) if (istype(A, /atom/movable)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 4199fbafaa3..4103aadf820 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -217,7 +217,7 @@ /obj/machinery/power/apc/attackby(obj/item/W, mob/user) - if (istype(user, /mob/living/silicon)) + if (istype(user, /mob/living/silicon) && get_dist(src,user)>1) return src.attack_hand(user) if (istype(W, /obj/item/weapon/crowbar) && opened) if (has_electronics==1) @@ -270,20 +270,20 @@ if (cell) user << "\red Close the APC first." //Less hints more mystery! return - else if (!has_electronics || !terminal) - user << "\red There is nothing to secure." - return else if (has_electronics==1) has_electronics = 2 stat &= ~MAINT playsound(src.loc, 'Screwdriver.ogg', 50, 1) user << "You screw the circuit electronics into place." - else /*(has_electronics==2)*/ + else if (has_electronics==2) has_electronics = 1 stat |= MAINT playsound(src.loc, 'Screwdriver.ogg', 50, 1) user << "You unfasten the electronics." + else /* has_electronics==0 */ + user << "\red There is nothing to secure." + return updateicon() else if(emagged || malfhack) user << "The interface is broken" @@ -377,7 +377,7 @@ playsound(src.loc, 'Welder.ogg', 50, 1) if(do_after(user, 50)) if (emagged || malfhack || (stat & BROKEN) || opened==2) - new /obj/item/weapon/sheet/metal(loc) + new /obj/item/stack/sheet/metal(loc) user.visible_message(\ "\red [src] has been cut apart by [user.name] with the weldingtool.",\ "You disassembled brocken APC frame.",\ @@ -419,14 +419,15 @@ && !opened \ && W.force >= 5 \ && W.w_class >= 3.0 \ - && !istype(W, /obj/item/weapon/gun) \ - && prob(10) ) + && prob(20) ) opened = 2 user.visible_message("\red The APC cover was knocked down with the [W.name] by [user.name]!", \ "\red You knock down the APC cover with your [W.name]!", \ "You hear bang") updateicon() else + if (istype(user, /mob/living/silicon)) + return src.attack_hand(user) user.visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!", \ "\red You hit the [src.name] with your [W.name]!", \ "You hear bang") @@ -478,7 +479,7 @@ return if(wiresexposed && (!istype(user, /mob/living/silicon))) user.machine = src - var/t1 = text("Access Panel
\n") + var/t1 = text("[area.name] APC wiresAccess Panel
\n") var/list/apcwires = list( "Orange" = 1, "Dark red" = 2, @@ -495,7 +496,7 @@ t1 += "Pulse " t1 += "
" t1 += text("
\n[(src.locked ? "The APC is locked." : "The APC is unlocked.")]
\n[(src.shorted ? "The APCs power has been shorted." : "The APC is working properly!")]
\n[(src.aidisabled ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]") - t1 += text("

Close

\n") + t1 += text("

Close

") user << browse(t1, "window=apcwires") onclose(user, "apcwires") @@ -868,6 +869,7 @@ if (src.z == 1) ticker.mode:apcs++ src.malfai = usr + src.locked = 1 if (src.cell) if (src.cell.charge > 0) src.cell.charge = 0 diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi index 808a6ef3135..3410ed93c89 100644 Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ diff --git a/maps/tgstation.1.3.1.dmm b/maps/tgstation.1.3.1.dmm index e6f3aefc8f1..d6c2ed3af3f 100644 --- a/maps/tgstation.1.3.1.dmm +++ b/maps/tgstation.1.3.1.dmm @@ -792,7 +792,7 @@ "apl" = (/turf/simulated/wall/r_wall,/area/maintenance/auxsolarstarboard) "apm" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2) "apn" = (/obj/securearea{tag = "icon-space"; name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"},/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2) -"apo" = (/obj/item/weapon/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) +"apo" = (/obj/item/stack/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "app" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "apq" = (/obj/machinery/light/small{dir = 1},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "apr" = (/obj/grille,/obj/window/reinforced/north,/obj/window/reinforced/west,/obj/window/reinforced/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -1134,7 +1134,7 @@ "avP" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/device/radio/signaler,/obj/item/device/radio/signaler,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/storage/primary) "avQ" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/device/multitool,/obj/machinery/cell_charger,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/storage/primary) "avR" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/storage/primary) -"avS" = (/obj/machinery/power/apc{dir = 1; name = "Storage APC"; pixel_x = -1; pixel_y = 26},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/storage/primary) +"avS" = (/obj/machinery/power/apc{dir = 1; name = "Storage APC"; pixel_x = -1; pixel_y = 26},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/storage/primary) "avT" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/storage/primary) "avU" = (/obj/item/weapon/cell,/turf/simulated/floor/plating,/area/storage/tech) "avV" = (/obj/rack{dir = 4},/obj/item/weapon/circuitboard/card,/turf/simulated/floor/plating,/area/storage/tech) @@ -1149,8 +1149,8 @@ "awe" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0; tag = "icon-off (WEST)"},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/sleep_male/toilet_male) "awf" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/sleep_male/toilet_male) "awg" = (/obj/machinery/atmospherics/pipe/simple,/obj/disposalpipe/junction,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"awh" = (/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/crowbar,/turf/simulated/floor,/area/ai_monitored/storage/eva) -"awi" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/ai_monitored/storage/eva) +"awh" = (/obj/machinery/alarm{pixel_y = 23},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/crowbar,/turf/simulated/floor,/area/ai_monitored/storage/eva) +"awi" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/ai_monitored/storage/eva) "awj" = (/obj/machinery/light/small{dir = 8},/obj/landmark{name = "blobstart"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "awk" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/sleep_female/toilet_female) "awl" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/sleep_female/toilet_female) @@ -1196,8 +1196,8 @@ "awZ" = (/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor,/area/storage/primary) "axa" = (/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "axb" = (/obj/stool{pixel_y = 8},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) -"axc" = (/obj/item/weapon/rods{amount = 50},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) -"axd" = (/obj/item/weapon/sheet/glass{amount = 50},/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/storage/primary) +"axc" = (/obj/item/stack/rods{amount = 50},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) +"axd" = (/obj/item/stack/sheet/glass{amount = 50},/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/storage/primary) "axe" = (/turf/simulated/floor,/area/storage/primary) "axf" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/weapon/storage/lightbox/tubes,/turf/simulated/floor/plating,/area/storage/tech) "axg" = (/obj/rack{dir = 4},/obj/item/weapon/circuitboard/communications,/turf/simulated/floor/plating,/area/storage/tech) @@ -1215,7 +1215,7 @@ "axs" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor,/area/ai_monitored/storage/eva) "axt" = (/obj/machinery/light{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "axu" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/ai_monitored/storage/eva) -"axv" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/weapon/sheet/glass{amount = 50},/obj/machinery/light{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"axv" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/stack/sheet/glass{amount = 50},/obj/machinery/light{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva) "axw" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "axx" = (/obj/machinery/door/airlock{name = "Unit 2"},/obj/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/sleep_female/toilet_female) "axy" = (/obj/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/simulated/wall,/area/crew_quarters/sleep_female/toilet_female) @@ -1264,7 +1264,7 @@ "ayp" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/rack{dir = 1},/obj/item/clothing/mask/gas/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayq" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayr" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/maintenance/fpmaint) -"ays" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint) +"ays" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/stack/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayt" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayu" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/machinery/atmospherics/pipe/simple,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayv" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"; layer = 3},/turf/simulated/floor/plating,/area/maintenance/fpmaint) @@ -1278,8 +1278,8 @@ "ayD" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "ayE" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/ai_monitored/storage/eva) "ayF" = (/obj/crate/rcd,/obj/machinery/camera{c_tag = "EVA South-East"; dir = 1},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/ai_monitored/storage/eva) -"ayG" = (/obj/item/weapon/rods{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) -"ayH" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/sheet/rglass{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"ayG" = (/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"ayH" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/stack/sheet/rglass{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) "ayI" = (/obj/machinery/door/airlock/maintenance{name = "Bathroom Maintenance"; req_access_txt = "12"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "ayJ" = (/obj/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/fsmaint) "ayK" = (/obj/grille,/turf/simulated/floor/plating,/area/maintenance/fsmaint) @@ -2016,7 +2016,7 @@ "aMN" = (/obj/machinery/robotic_fabricator,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/simulated/floor,/area/medical/robotics) "aMO" = (/obj/machinery/robotic_fabricator,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/medical/robotics) "aMP" = (/obj/machinery/robotic_fabricator,/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/medical/robotics) -"aMQ" = (/obj/crate,/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil,/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/turf/simulated/floor,/area/medical/robotics) +"aMQ" = (/obj/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor,/area/medical/robotics) "aMR" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/medical/robotics) "aMS" = (/obj/stool/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 8; icon_state = "escape"; tag = "icon-escape (WEST)"},/area/hallway/secondary/exit) "aMT" = (/obj/machinery/atmospherics/pipe/simple,/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2417,7 +2417,7 @@ "aUy" = (/obj/item/weapon/storage/mousetraps,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/kitchen) "aUz" = (/obj/table,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/obj/item/weapon/reagent_containers/food/condiment/oliveoil,/obj/item/weapon/reagent_containers/glass/beaker,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/kitchen) "aUA" = (/obj/crate,/turf/simulated/floor/plating,/area/maintenance/maintcentral) -"aUB" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/tile,/turf/simulated/floor/plating,/area/maintenance/maintcentral) +"aUB" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/stack/tile,/turf/simulated/floor/plating,/area/maintenance/maintcentral) "aUC" = (/obj/disposalpipe/segment,/obj/landmark{name = "blobstart"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/maintcentral) "aUD" = (/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/plating,/area/medical/research) "aUE" = (/obj/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research) @@ -2433,7 +2433,7 @@ "aUO" = (/obj/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aUP" = (/obj/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aUQ" = (/obj/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/port) -"aUR" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/item/weapon/sheet/rglass,/turf/simulated/floor/plating,/area/maintenance/port) +"aUR" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/item/stack/sheet/rglass,/turf/simulated/floor/plating,/area/maintenance/port) "aUS" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/item/weapon/screwdriver,/turf/simulated/floor/plating,/area/maintenance/port) "aUT" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "aUU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2772,7 +2772,7 @@ "bbp" = (/obj/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "bbq" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; location = "QM #2"},/obj/machinery/bot/mulebot{home_destination = "QM #2"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bbr" = (/obj/grille,/obj/window/reinforced/east,/obj/window/reinforced/west,/obj/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/storage) -"bbs" = (/obj/table{icon_state = "tabledir"; dir = 4},/obj/item/weapon/rods{amount = 50},/turf/simulated/floor,/area/quartermaster/office) +"bbs" = (/obj/table{icon_state = "tabledir"; dir = 4},/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/quartermaster/office) "bbt" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/quartermaster) "bbu" = (/obj/stool/chair{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"; tag = "icon-tube1 (EAST)"},/turf/simulated/floor,/area/quartermaster) "bbv" = (/obj/grille,/obj/window/reinforced/west,/obj/window/reinforced/east,/obj/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster) @@ -4504,7 +4504,7 @@ "bIF" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0; tag = "icon-off (WEST)"},/turf/simulated/floor,/area/engine/engine_hallway) "bIG" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) "bIH" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) -"bII" = (/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/sheet/glass{amount = 50},/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) +"bII" = (/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) "bIJ" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/machinery/light/small{dir = 4},/obj/item/device/analyzer,/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/utilitybelt,/turf/simulated/floor,/area/engine/engine_hallway) "bIK" = (/obj/machinery/atmospherics/pipe/simple,/obj/grille,/turf/simulated/wall/r_wall,/area/atmos) "bIL" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/simulated/floor/plating/airless,/area) @@ -4536,7 +4536,7 @@ "bJl" = (/turf/simulated/floor,/area/engine/engine_hallway) "bJm" = (/obj/item/weapon/pen,/turf/simulated/floor,/area/engine/engine_hallway) "bJn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engine_hallway) -"bJo" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/manifold{dir = 4; initialize_directions = 11},/turf/simulated/floor,/area/engine/engine_hallway) +"bJo" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/manifold{dir = 4; initialize_directions = 11},/turf/simulated/floor,/area/engine/engine_hallway) "bJp" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/engine/engine_hallway) "bJq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "bJr" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) @@ -4702,7 +4702,7 @@ "bMv" = (/turf/simulated/floor/engine,/area/engine/engine_control) "bMw" = (/obj/item/clothing/head/helmet/hardhat,/turf/simulated/floor/engine,/area/engine/engine_control) "bMx" = (/obj/item/weapon/weldingtool,/turf/simulated/floor/engine,/area/engine/engine_control) -"bMy" = (/obj/item/weapon/rods,/turf/simulated/floor/engine,/area/engine/engine_control) +"bMy" = (/obj/item/stack/rods,/turf/simulated/floor/engine,/area/engine/engine_control) "bMz" = (/obj/item/weapon/caution{desc = "Caution! Construction Zone!"; name = "caution sign"},/turf/simulated/floor/engine,/area/engine/engine_control) "bMA" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"; initialize_directions = 5; layer = 3},/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/engine_hallway) "bMB" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor,/area/engine/engine_hallway) @@ -5067,8 +5067,8 @@ "bTw" = (/obj/table/reinforced{tag = "icon-reinf_tabledir"; icon_state = "reinf_tabledir"},/obj/item/weapon/cigpacket,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bTx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bTy" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) -"bTz" = (/obj/item/weapon/sheet/glass{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) -"bTA" = (/obj/item/weapon/sheet/metal{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) +"bTz" = (/obj/item/stack/sheet/glass{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) +"bTA" = (/obj/item/stack/sheet/metal{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bTB" = (/obj/machinery/door/poddoor{id = "thunderdomehea"; name = "Heavy Supply"},/turf/simulated/floor/plating,/area/tdome) "bTC" = (/obj/machinery/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion_l"; dir = 4; pixel_y = -1},/turf/space,/area/centcom/shuttle) "bTD" = (/obj/machinery/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/window/reinforced/west{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/simulated/floor/plating,/area/centcom/shuttle) @@ -5853,7 +5853,7 @@ "ciC" = (/obj/window{icon_state = "rwindow"; reinf = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/access) "ciD" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/simulated/floor,/area/derelict/bridge/access) "ciE" = (/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/turf/simulated/floor,/area/derelict/bridge) -"ciF" = (/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area) +"ciF" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area) "ciG" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall,/area/derelict/bridge/access) "ciH" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/access) "ciI" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor,/area/derelict/bridge/access) @@ -5873,7 +5873,7 @@ "ciW" = (/obj/stool/chair,/turf/simulated/floor,/area/derelict/bridge) "ciX" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/derelict/bridge) "ciY" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor,/area/derelict/bridge) -"ciZ" = (/obj/item/weapon/rods,/turf/space,/area) +"ciZ" = (/obj/item/stack/rods,/turf/space,/area) "cja" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor,/area/derelict/bridge/access) "cjb" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/rack_parts,/turf/simulated/floor,/area/derelict/bridge) "cjc" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/window/basic,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/derelict/bridge) @@ -6339,14 +6339,14 @@ "crU" = (/obj/window/basic{tag = "icon-window (NORTH)"; icon_state = "window"; dir = 1},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary) "crV" = (/obj/grille,/obj/item/weapon/shard,/obj/item/weapon/shard{tag = "icon-medium"; icon_state = "medium"},/turf/simulated/floor/plating/airless,/area) "crW" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/simulated/floor/plating/airless,/area/derelict/arrival) -"crX" = (/obj/structure/girder,/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) -"crY" = (/obj/item/weapon/rods,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless,/area/derelict/hallway/secondary) +"crX" = (/obj/structure/girder,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) +"crY" = (/obj/item/stack/rods,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "crZ" = (/obj/item/weapon/shard{tag = "icon-small"; icon_state = "small"},/turf/space,/area) "csa" = (/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) "csb" = (/turf/simulated/floor/airless{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/crew_quarters) "csc" = (/turf/simulated/floor/airless{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/crew_quarters) "csd" = (/turf/simulated/floor/airless{tag = "icon-damaged5"; icon_state = "damaged5"},/area/derelict/crew_quarters) -"cse" = (/obj/lattice,/obj/item/weapon/rods,/turf/space,/area) +"cse" = (/obj/lattice,/obj/item/stack/rods,/turf/space,/area) "csf" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/wirecutters,/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "csg" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/simulated/floor,/area/derelict/hallway/secondary) "csh" = (/turf/simulated/floor/airless{tag = "icon-damaged3"; icon_state = "damaged3"},/area/derelict/crew_quarters) @@ -6435,7 +6435,7 @@ "ctM" = (/obj/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) "ctN" = (/turf/simulated/floor/airless{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/bridge/ai_upload) "ctO" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) -"ctP" = (/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"ctP" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "ctQ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/airless,/area) "ctR" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/light/small,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "ctS" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) diff --git a/maps/tgstation.2.0.0.dmm b/maps/tgstation.2.0.0.dmm index 77c6de3a1de..cfce5965fe2 100644 --- a/maps/tgstation.2.0.0.dmm +++ b/maps/tgstation.2.0.0.dmm @@ -838,7 +838,7 @@ "aqf" = (/obj/stool{pixel_y = 8},/turf/simulated/floor,/area/crew_quarters/fitness) "aqg" = (/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2) "aqh" = (/obj/securearea{tag = "icon-space"; name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"},/turf/simulated/wall/r_wall,/area/maintenance/fpmaint2) -"aqi" = (/obj/item/weapon/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) +"aqi" = (/obj/item/stack/tile,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aqj" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aqk" = (/obj/machinery/light/small{dir = 1},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aql" = (/obj/grille,/obj/window/reinforced/north,/obj/window/reinforced/west,/obj/window/reinforced/east,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -990,7 +990,7 @@ "atb" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/ai_monitored/storage/eva) "atc" = (/obj/reagent_dispensers/fueltank,/turf/simulated/floor,/area/ai_monitored/storage/eva) "atd" = (/obj/reagent_dispensers/watertank,/obj/machinery/camera{c_tag = "EVA North-East"; dir = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva) -"ate" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/crowbar,/turf/simulated/floor,/area/ai_monitored/storage/eva) +"ate" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/crowbar,/turf/simulated/floor,/area/ai_monitored/storage/eva) "atf" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "atg" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "ath" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/camera{c_tag = "Dormitory"; c_tag_order = 999; dir = 4},/turf/simulated/floor{tag = "icon-neutral (WEST)"; icon_state = "neutral"; dir = 8},/area/crew_quarters) @@ -1022,7 +1022,7 @@ "atH" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "atI" = (/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "EVA_airlock_pump"; exterior_door_tag = "EVA_airlock_exterior"; id_tag = "EVA_airlock_control"; interior_door_tag = "EVA_airlock_interior"; pixel_x = -24; pixel_y = 0; sensor_tag = "EVA_airlock_sensor"},/turf/simulated/floor,/area/ai_monitored/storage/eva) "atJ" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/ai_monitored/storage/eva) -"atK" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/ai_monitored/storage/eva) +"atK" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/extinguisher,/turf/simulated/floor,/area/ai_monitored/storage/eva) "atL" = (/obj/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; tag = "icon-shock"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "atM" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "atN" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{tag = "icon-carpet (NORTHWEST)"; icon_state = "carpet"; dir = 9},/area/crew_quarters) @@ -1071,7 +1071,7 @@ "auE" = (/obj/rack{dir = 8},/obj/item/weapon/tank/jetpack,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "auF" = (/obj/rack{dir = 4},/obj/item/clothing/suit/space,/obj/item/clothing/head/helmet/space,/obj/item/clothing/mask/medical,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "auG" = (/obj/rack{dir = 4},/obj/item/clothing/shoes/magboots,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"auH" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/rods{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"auH" = (/obj/table{icon_state = "tabledir"; dir = 8},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) "auI" = (/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "auJ" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "auK" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor,/area/hallway/primary/fore) @@ -1110,7 +1110,7 @@ "avr" = (/obj/rack{dir = 8},/obj/landmark{name = "ExplorationPack"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "avs" = (/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "avt" = (/obj/rack{dir = 4},/obj/landmark{name = "ExplorationPack"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"avu" = (/obj/table{dir = 10; icon_state = "tabledir"},/obj/item/weapon/sheet/rglass{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) +"avu" = (/obj/table{dir = 10; icon_state = "tabledir"},/obj/item/stack/sheet/rglass{amount = 50},/turf/simulated/floor,/area/ai_monitored/storage/eva) "avv" = (/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/window/reinforced,/obj/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "avw" = (/obj/machinery/sink{icon_state = "sink"; dir = 8; pixel_x = -11; pixel_y = 10},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/toilet) "avx" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1149,7 +1149,7 @@ "awe" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/device/radio/signaler,/obj/item/device/radio/signaler,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/storage/primary) "awf" = (/obj/table{icon_state = "tabledir"; dir = 2},/obj/item/device/multitool,/obj/machinery/cell_charger,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/storage/primary) "awg" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/storage/primary) -"awh" = (/obj/machinery/power/apc{dir = 1; name = "Storage APC"; pixel_x = -1; pixel_y = 26},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/storage/primary) +"awh" = (/obj/machinery/power/apc{dir = 1; name = "Storage APC"; pixel_x = -1; pixel_y = 26},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/storage/primary) "awi" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/requests_console{department = "Assistant Storage"; departmentType = 1; pixel_y = 30},/turf/simulated/floor,/area/storage/primary) "awj" = (/obj/item/weapon/cell,/turf/simulated/floor/plating,/area/storage/tech) "awk" = (/obj/rack{dir = 4},/obj/item/weapon/circuitboard/card,/turf/simulated/floor/plating,/area/storage/tech) @@ -1191,8 +1191,8 @@ "awU" = (/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor,/area/storage/primary) "awV" = (/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) "awW" = (/obj/stool{pixel_y = 8},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) -"awX" = (/obj/item/weapon/rods{amount = 50},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) -"awY" = (/obj/item/weapon/sheet/glass{amount = 50},/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/storage/primary) +"awX" = (/obj/item/stack/rods{amount = 50},/obj/landmark/start{name = "Assistant"},/turf/simulated/floor,/area/storage/primary) +"awY" = (/obj/item/stack/sheet/glass{amount = 50},/obj/landmark/start{name = "Assistant"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/storage/primary) "awZ" = (/turf/simulated/floor,/area/storage/primary) "axa" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "axb" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/weapon/storage/lightbox/tubes,/turf/simulated/floor/plating,/area/storage/tech) @@ -1257,7 +1257,7 @@ "ayi" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/wall/r_wall,/area/maintenance/fpmaint) "ayj" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/rack{dir = 1},/obj/item/clothing/mask/gas/emergency,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "ayk" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"ayl" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/tile,/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor/plating,/area/maintenance/fpmaint) +"ayl" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/stack/tile,/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aym" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/eva) "ayn" = (/obj/table{dir = 9; icon_state = "tabledir"},/obj/item/weapon/cable_coil,/obj/item/weapon/cell,/obj/machinery/cell_charger,/turf/simulated/floor,/area/ai_monitored/storage/eva) "ayo" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/ai_monitored/storage/eva) @@ -2005,7 +2005,7 @@ "aMC" = (/obj/machinery/robotic_fabricator,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable,/turf/simulated/floor,/area/medical/robotics) "aMD" = (/obj/machinery/robotic_fabricator,/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/medical/robotics) "aME" = (/obj/machinery/robotic_fabricator,/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/medical/robotics) -"aMF" = (/obj/crate,/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil,/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/turf/simulated/floor,/area/medical/robotics) +"aMF" = (/obj/crate,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor,/area/medical/robotics) "aMG" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/medical/robotics) "aMH" = (/obj/stool/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{dir = 8; icon_state = "escape"; tag = "icon-escape (WEST)"},/area/hallway/secondary/exit) "aMI" = (/obj/machinery/atmospherics/pipe/simple,/obj/grille,/obj/window/reinforced{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/window/reinforced{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/window/reinforced{tag = "icon-rwindow (NORTH)"; icon_state = "rwindow"; dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2421,7 +2421,7 @@ "aUC" = (/obj/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aUD" = (/obj/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-freezerfloor"; icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "aUE" = (/obj/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/maintenance/port) -"aUF" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/item/weapon/sheet/rglass,/turf/simulated/floor/plating,/area/maintenance/port) +"aUF" = (/obj/machinery/atmospherics/pipe/simple{dir = 6; icon_state = "intact-f"; layer = 3},/obj/item/stack/sheet/rglass,/turf/simulated/floor/plating,/area/maintenance/port) "aUG" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/item/weapon/screwdriver,/turf/simulated/floor/plating,/area/maintenance/port) "aUH" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port) "aUI" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) @@ -2777,7 +2777,7 @@ "bbu" = (/obj/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage) "bbv" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; location = "QM #2"},/obj/machinery/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bbw" = (/obj/grille,/obj/window/reinforced/east,/obj/window/reinforced/west,/obj/disposalpipe/segment,/turf/simulated/floor/plating,/area/quartermaster/storage) -"bbx" = (/obj/table{icon_state = "tabledir"; dir = 4},/obj/item/weapon/rods{amount = 50},/turf/simulated/floor,/area/quartermaster/office) +"bbx" = (/obj/table{icon_state = "tabledir"; dir = 4},/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/quartermaster/office) "bby" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/quartermaster) "bbz" = (/obj/stool/chair{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"; tag = "icon-tube1 (EAST)"},/turf/simulated/floor,/area/quartermaster) "bbA" = (/obj/grille,/obj/window/reinforced/west,/obj/window/reinforced/east,/obj/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster) @@ -4512,7 +4512,7 @@ "bIN" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) "bIO" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) "bIP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/obj/item/weapon/paper,/turf/simulated/floor,/area/engine/engine_hallway) -"bIQ" = (/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/sheet/glass{amount = 50},/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) +"bIQ" = (/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact-f"; layer = 3},/turf/simulated/floor,/area/engine/engine_hallway) "bIR" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/machinery/light/small{dir = 4},/obj/item/device/analyzer,/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/utilitybelt,/obj/item/weapon/storage/utilitybelt,/turf/simulated/floor,/area/engine/engine_hallway) "bIS" = (/obj/machinery/atmospherics/pipe/simple,/obj/grille,/turf/simulated/wall/r_wall,/area/atmos) "bIT" = (/obj/cable{icon_state = "2-4"; d1 = 2; d2 = 4},/turf/simulated/floor/plating/airless,/area) @@ -4544,7 +4544,7 @@ "bJt" = (/turf/simulated/floor,/area/engine/engine_hallway) "bJu" = (/obj/item/weapon/storage/pill_bottle/kelotane,/turf/simulated/floor,/area/engine/engine_hallway) "bJv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/engine/engine_hallway) -"bJw" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/manifold{dir = 4; initialize_directions = 11},/turf/simulated/floor,/area/engine/engine_hallway) +"bJw" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/machinery/atmospherics/pipe/manifold{dir = 4; initialize_directions = 11},/turf/simulated/floor,/area/engine/engine_hallway) "bJx" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/turf/simulated/floor,/area/engine/engine_hallway) "bJy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) "bJz" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos) @@ -4714,7 +4714,7 @@ "bMH" = (/turf/simulated/floor/engine,/area/engine/engine_control) "bMI" = (/obj/item/clothing/head/helmet/hardhat,/turf/simulated/floor/engine,/area/engine/engine_control) "bMJ" = (/obj/item/weapon/weldingtool,/turf/simulated/floor/engine,/area/engine/engine_control) -"bMK" = (/obj/item/weapon/rods,/turf/simulated/floor/engine,/area/engine/engine_control) +"bMK" = (/obj/item/stack/rods,/turf/simulated/floor/engine,/area/engine/engine_control) "bML" = (/obj/item/weapon/caution{desc = "Caution! Construction Zone!"; name = "caution sign"},/turf/simulated/floor/engine,/area/engine/engine_control) "bMM" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"; initialize_directions = 5; layer = 3},/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/engine_hallway) "bMN" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; layer = 3},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor,/area/engine/engine_hallway) @@ -4926,8 +4926,8 @@ "bQL" = (/obj/table/reinforced{tag = "icon-reinf_tabledir"; icon_state = "reinf_tabledir"},/obj/item/weapon/cigpacket,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bQM" = (/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bQN" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple{dir = 4; icon_state = "intact-f"; initialize_directions = 12; layer = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) -"bQO" = (/obj/item/weapon/sheet/glass{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) -"bQP" = (/obj/item/weapon/sheet/metal{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) +"bQO" = (/obj/item/stack/sheet/glass{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) +"bQP" = (/obj/item/stack/sheet/metal{amount = 5000},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/shuttle) "bQQ" = (/obj/machinery/door/airlock/centcom{opacity = 1; req_access_txt = "20"},/turf/unsimulated/floor{tag = "icon-bar"; icon_state = "bar"; dir = 2},/area/centcom/living) "bQR" = (/turf/unsimulated/wall,/area/centcom/suppy) "bQS" = (/obj/machinery/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion_l"; dir = 4; pixel_y = -1},/turf/space,/area/centcom/shuttle) @@ -5285,8 +5285,8 @@ "bXG" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "NTrasen"; name = "Outer Airlock"; p_open = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "bXH" = (/obj/rack,/obj/item/weapon/storage/handcuff_kit,/turf/unsimulated/floor{tag = "icon-grimy"; icon_state = "grimy"},/area/centcom/creed) "bXI" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/centcom) -"bXJ" = (/obj/item/weapon/sheet/glass{amount = 50},/obj/item/weapon/sheet/glass{amount = 50},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/centcom) -"bXK" = (/obj/item/weapon/sheet/metal{amount = 50},/obj/item/weapon/sheet/metal{amount = 50},/turf/unsimulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/centcom) +"bXJ" = (/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/centcom) +"bXK" = (/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/unsimulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/centcom) "bXL" = (/obj/stool/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) "bXM" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) "bXN" = (/obj/window/reinforced/east{dir = 5},/turf/unsimulated/floor{tag = "icon-grimy"; icon_state = "grimy"},/area/centcom/creed) @@ -6013,7 +6013,7 @@ "clG" = (/obj/window{icon_state = "rwindow"; reinf = 1},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/access) "clH" = (/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/simulated/floor,/area/derelict/bridge/access) "clI" = (/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/turf/simulated/floor,/area/derelict/bridge) -"clJ" = (/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area) +"clJ" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area) "clK" = (/obj/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall,/area/derelict/bridge/access) "clL" = (/obj/cable{d2 = 8; icon_state = "0-8"},/obj/cable{icon_state = "0-4"; d2 = 4},/obj/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge/access) "clM" = (/obj/cable{icon_state = "4-8"; d1 = 4; d2 = 8},/turf/simulated/floor,/area/derelict/bridge/access) @@ -6033,7 +6033,7 @@ "cma" = (/obj/stool/chair,/turf/simulated/floor,/area/derelict/bridge) "cmb" = (/obj/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/derelict/bridge) "cmc" = (/obj/table{dir = 5; icon_state = "tabledir"},/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor,/area/derelict/bridge) -"cmd" = (/obj/item/weapon/rods,/turf/space,/area) +"cmd" = (/obj/item/stack/rods,/turf/space,/area) "cme" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/door/firedoor/border_only{dir = 1},/turf/simulated/floor,/area/derelict/bridge/access) "cmf" = (/obj/table{icon_state = "tabledir"; dir = 10},/obj/item/weapon/rack_parts,/turf/simulated/floor,/area/derelict/bridge) "cmg" = (/obj/table{icon_state = "tabledir"; dir = 6},/obj/window/basic,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/derelict/bridge) @@ -6368,14 +6368,14 @@ "csx" = (/obj/window/basic{tag = "icon-window (NORTH)"; icon_state = "window"; dir = 1},/obj/cable{icon_state = "2-8"; d1 = 2; d2 = 8},/turf/simulated/floor/plating,/area/derelict/hallway/secondary) "csy" = (/obj/grille,/obj/item/weapon/shard,/obj/item/weapon/shard{tag = "icon-medium"; icon_state = "medium"},/turf/simulated/floor/plating/airless,/area) "csz" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 10; reinf = 1},/turf/simulated/floor/plating/airless,/area/derelict/arrival) -"csA" = (/obj/structure/girder,/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) -"csB" = (/obj/item/weapon/rods,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless,/area/derelict/hallway/secondary) +"csA" = (/obj/structure/girder,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) +"csB" = (/obj/item/stack/rods,/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "csC" = (/obj/item/weapon/shard{tag = "icon-small"; icon_state = "small"},/turf/space,/area) "csD" = (/turf/simulated/floor/plating/airless,/area/derelict/crew_quarters) "csE" = (/turf/simulated/floor/airless{tag = "icon-damaged4"; icon_state = "damaged4"},/area/derelict/crew_quarters) "csF" = (/turf/simulated/floor/airless{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/crew_quarters) "csG" = (/turf/simulated/floor/airless{tag = "icon-damaged5"; icon_state = "damaged5"},/area/derelict/crew_quarters) -"csH" = (/obj/lattice,/obj/item/weapon/rods,/turf/space,/area) +"csH" = (/obj/lattice,/obj/item/stack/rods,/turf/space,/area) "csI" = (/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/item/weapon/wirecutters,/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "csJ" = (/obj/grille,/obj/window{icon_state = "rwindow"; dir = 4; invisibility = 0; reinf = 1},/obj/window{icon_state = "rwindow"; dir = 8; reinf = 1},/turf/simulated/floor,/area/derelict/hallway/secondary) "csK" = (/turf/simulated/floor/airless{tag = "icon-damaged3"; icon_state = "damaged3"},/area/derelict/crew_quarters) @@ -6465,7 +6465,7 @@ "cuq" = (/obj/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/derelict/bridge/ai_upload) "cur" = (/turf/simulated/floor/airless{tag = "icon-damaged2"; icon_state = "damaged2"},/area/derelict/bridge/ai_upload) "cus" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) -"cut" = (/obj/item/weapon/rods,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"cut" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "cuu" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/airless,/area) "cuv" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/cable{icon_state = "1-2"; d1 = 1; d2 = 2},/obj/machinery/light/small,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "cuw" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) diff --git a/tgstation.dme b/tgstation.dme index 9886e8aba87..c87ff857601 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -70,6 +70,7 @@ #define FILE_DIR "code/game/objects/radio" #define FILE_DIR "code/game/objects/secstorage" #define FILE_DIR "code/game/objects/spawners" +#define FILE_DIR "code/game/objects/stacks" #define FILE_DIR "code/game/objects/storage" #define FILE_DIR "code/game/spacecraft" #define FILE_DIR "code/game/verbs" @@ -516,14 +517,12 @@ #include "code\game\objects\items\weapons\clown_items.dm" #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\flamethrower.dm" -#include "code\game\objects\items\weapons\glass.dm" #include "code\game\objects\items\weapons\grenades.dm" #include "code\game\objects\items\weapons\guns_ammo.dm" #include "code\game\objects\items\weapons\hydroponics.dm" #include "code\game\objects\items\weapons\implants.dm" #include "code\game\objects\items\weapons\kitchen.dm" #include "code\game\objects\items\weapons\medical.dm" -#include "code\game\objects\items\weapons\metals_rods.dm" #include "code\game\objects\items\weapons\misc.dm" #include "code\game\objects\items\weapons\mops_cleaners.dm" #include "code\game\objects\items\weapons\papers_bins.dm" @@ -545,6 +544,9 @@ #include "code\game\objects\secstorage\secstorage.dm" #include "code\game\objects\secstorage\ssafe.dm" #include "code\game\objects\spawners\bomb.dm" +#include "code\game\objects\stacks\glass.dm" +#include "code\game\objects\stacks\metal.dm" +#include "code\game\objects\stacks\stack.dm" #include "code\game\objects\storage\backpack.dm" #include "code\game\objects\storage\bible.dm" #include "code\game\objects\storage\briefcase.dm"