diff --git a/code/WorkInProgress/Cael_Aislinn/sculpture.dm b/code/WorkInProgress/Cael_Aislinn/sculpture.dm index 414dca1051d..bf562f84e11 100644 --- a/code/WorkInProgress/Cael_Aislinn/sculpture.dm +++ b/code/WorkInProgress/Cael_Aislinn/sculpture.dm @@ -144,7 +144,7 @@ spawn() while(get_turf(src) != target_turf && num_turfs > 0) for(var/obj/structure/window/W in next_turf) - W.destroy() + W.Destroy() sleep(5) for(var/obj/structure/table/O in next_turf) O.ex_act(1) @@ -191,7 +191,7 @@ spawn() while(get_turf(src) != target_turf && num_turfs > 0) for(var/obj/structure/window/W in next_turf) - W.destroy() + W.Destroy() sleep(5) for(var/obj/structure/table/O in next_turf) O.ex_act(1) diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 3b27acba539..f1f606391c4 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -281,7 +281,7 @@ C.Stun(8) C.Jitter(150) for(var/obj/structure/window/W in view(4)) - W.destroy() + W.Destroy() playsound(M.current.loc, 'sound/effects/creepyshriek.ogg', 100, 1) M.current.remove_vampire_blood(10) M.current.verbs -= /client/proc/vampire_screech diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f53fd353049..133191ccb89 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1178,7 +1178,7 @@ About the new airlock wires panel: for(var/turf/T in loc) var/obj/structure/window/W = locate(/obj/structure/window) in T if (W) - W.destroy() + W.Destroy() ..() return diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index e06275379c0..844b337cef0 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -9,8 +9,8 @@ /obj/item/stack/sheet/glass w_type = RECYK_GLASS melt_temperature = MELTPOINT_GLASS - var/created_window = /obj/structure/window/basic - var/full_window = /obj/structure/window/full/basic + var/created_window = /obj/structure/window + var/full_window = /obj/structure/window/full var/windoor = null var/reinforced = 0 var/rglass = 0 @@ -76,8 +76,8 @@ if(!found) dir_to_set = direction break - var/obj/structure/window/W = new created_window( user.loc, 0 ) - W.state = 0 + var/obj/structure/window/W = new created_window(user.loc, 0) + W.d_state = 0 W.dir = dir_to_set W.ini_dir = W.dir W.anchored = 0 @@ -92,7 +92,7 @@ user << "There is a window in the way." return 1 var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 + W.d_state = 0 W.dir = SOUTHWEST W.ini_dir = SOUTHWEST W.anchored = 0 @@ -157,7 +157,7 @@ dir_to_set = direction break var/obj/structure/window/W = new created_window( user.loc, 0 ) - W.state = 0 + W.d_state = 0 W.dir = dir_to_set W.ini_dir = W.dir W.anchored = 0 @@ -172,7 +172,7 @@ user << "There is a window in the way." return 1 var/obj/structure/window/W = new full_window( user.loc, 0 ) - W.state = 0 + W.d_state = 0 W.dir = SOUTHWEST W.ini_dir = SOUTHWEST W.anchored = 0 @@ -246,6 +246,7 @@ /* * Plasma Glass sheets */ + /obj/item/stack/sheet/glass/plasmaglass name = "plasma glass" desc = "A very strong and very resistant sheet of a plasma-glass alloy." @@ -254,11 +255,11 @@ sname = "plasma" g_amt=CC_PER_SHEET_GLASS origin_tech = "materials=3;plasmatech=2" - created_window = /obj/structure/window/plasmabasic - full_window = /obj/structure/window/full/plasmabasic + created_window = /obj/structure/window/plasma + full_window = /obj/structure/window/full/plasma rglass = /obj/item/stack/sheet/glass/plasmarglass perunit = 2875 //average of plasma and glass - melt_temperature = MELTPOINT_STEEL+500 + melt_temperature = MELTPOINT_STEEL + 500 glass_quality = 1.15 //Can you imagine a world in which plasmaglass is worse than rglass shealth = 20 shard_type = /obj/item/weapon/shard/plasma @@ -281,8 +282,8 @@ m_amt = 1875 melt_temperature = MELTPOINT_STEEL+500 // I guess...? origin_tech = "materials=4;plasmatech=2" - created_window = /obj/structure/window/plasmareinforced - full_window = /obj/structure/window/full/plasmareinforced + created_window = /obj/structure/window/reinforced/plasma + full_window = /obj/structure/window/full/reinforced/plasma windoor = /obj/structure/windoor_assembly/plasma perunit = 2875 reinforced = 1 diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 075abb5b167..3de17bd8c5d 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -78,7 +78,7 @@ message_admins("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(A.loc)]!") log_admin("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([user.ckey]) at [A.loc]!") var/obj/structure/window/W = A - W.destroy() + W.Destroy() else del(A) diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm index 0125d36f456..d18690bdece 100644 --- a/code/game/objects/structures/fullwindow.dm +++ b/code/game/objects/structures/fullwindow.dm @@ -1,90 +1,111 @@ +#define WINDOWLOOSE 0 +#define WINDOWLOOSEFRAME 1 +#define WINDOWUNSECUREFRAME 2 +#define WINDOWSECURE 3 + /obj/structure/window/full - sheets = 2 - dir=SOUTHWEST - mouse_opacity=2 // Complete opacity. + + name = "window" + icon_state = "window" + sheetamount = 2 + mouse_opacity = 2 // Complete opacity //What in the name of everything is this variable ? layer = 3.21 // Windows are at 3.2. /obj/structure/window/full/New(loc) + ..(loc) flags &= ~ON_BORDER /obj/structure/window/full/CheckExit(atom/movable/O as mob|obj, target as turf) + return 1 -/obj/structure/window/full/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) +/obj/structure/window/full/CanPass(atom/movable/mover, turf/target, height = 1.5, air_group = 0) + if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 return 0 +/obj/structure/window/full/can_be_reached(mob/user) + + return 1 //That about it Captain + /obj/structure/window/full/is_fulltile() + return 1 -//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) +//Merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) /obj/structure/window/full/update_icon() + //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. - //this way it will only update full-tile ones + //This way it will only update full-tile ones //This spawn is here so windows get properly updated when one gets deleted. - spawn(2) - if(!src) return - if(!is_fulltile()) + spawn() + if(!src) return - var/junction = 0 //will be used to determine from which side the window is connected to other windows + var/junction = 0 //Will be used to determine from which side the window is connected to other windows if(anchored) - for(var/obj/structure/window/full/W in orange(src,1)) + for(var/obj/structure/window/full/W in orange(src, 1)) if(W.anchored && W.density) //Only counts anchored, not-destroyed full-tile windows. - if(abs(x-W.x)-abs(y-W.y) ) //doesn't count windows, placed diagonally to src + if(abs(x-W.x)-abs(y-W.y)) //Doesn't count windows, placed diagonally to src junction |= get_dir(src,W) - icon_state = "[basestate][junction]" + icon_state = "[initial(icon_state)][junction]" return -/obj/structure/window/full/basic - desc = "It looks thin and flimsy. A few knocks with... anything, really should shatter it." - icon_state = "window" - basestate = "window" - -/obj/structure/window/full/plasmabasic - name = "plasma window" - desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through." - basestate = "plasmawindow" - icon_state = "plasmawindow" - shardtype = /obj/item/weapon/shard/plasma - health = 120 - -/obj/structure/window/full/plasmabasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 32000) - hit(round(exposed_volume / 1000), 0) - ..() - -/obj/structure/window/full/plasmareinforced - name = "reinforced plasma window" - desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." - basestate = "plasmarwindow" - icon_state = "plasmarwindow" - shardtype = /obj/item/weapon/shard/plasma - reinf = 1 - health = 160 - -/obj/structure/window/full/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return - /obj/structure/window/full/reinforced name = "reinforced window" desc = "It looks rather strong. Might take a few good hits to shatter it." icon_state = "rwindow" - basestate = "rwindow" + sheettype = /obj/item/stack/sheet/glass/rglass health = 40 - reinf = 1 + d_state = WINDOWSECURE + reinforced = 1 + +/obj/structure/window/full/plasma + + name = "plasma window" + desc = "A window made out of a plasma-silicate alloy. It looks insanely tough to break and burn through." + icon_state = "plasmawindow" + shardtype = /obj/item/weapon/shard/plasma + sheettype = /obj/item/stack/sheet/glass/plasmaglass + health = 120 + +/obj/structure/window/plasma/full/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + + if(exposed_temperature > T0C + 32000) + health -= (round(exposed_volume/1000)) + healthcheck(sound = 0) + ..() + +/obj/structure/window/full/reinforced/plasma + name = "reinforced plasma window" + desc = "A window made out of a plasma-silicate alloy and a rod matrice. It looks hopelessly tough to break and is most likely nigh fireproof." + icon_state = "plasmarwindow" + shardtype = /obj/item/weapon/shard/plasma + sheettype = /obj/item/stack/sheet/glass/plasmarglass + health = 160 + +/obj/structure/window/full/reinforced/plasma/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + + return /obj/structure/window/full/reinforced/tinted + name = "tinted window" - desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." + desc = "A window with a rod matrice. Its surface is completely tinted, making it opaque. Why not a wall ?" icon_state = "twindow" - basestate = "twindow" opacity = 1 + sheettype = /obj/item/stack/sheet/glass/rglass //A glass type for this window doesn't seem to exist, so here's to you /obj/structure/window/full/reinforced/tinted/frosted + name = "frosted window" - desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." + desc = "A window with a rod matrice. Its surface is completely tinted, making it opaque, and it's frosty. Why not an ice wall ?" icon_state = "fwindow" - basestate = "fwindow" - health = 30 \ No newline at end of file + health = 30 + sheettype = /obj/item/stack/sheet/glass/rglass //Ditto above + +#undef WINDOWLOOSE +#undef WINDOWLOOSEFRAME +#undef WINDOWUNSECUREFRAME +#undef WINDOWSECURE diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index cad90ab79a4..4f8d9a8a811 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -166,7 +166,7 @@ WD.dir = dir_to_set WD.ini_dir = dir_to_set WD.anchored = 0 - WD.state = 0 + WD.d_state = 0 var/obj/item/stack/ST = W ST.use(1) user << "You place the [WD] on [src]." diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 2e406dffefb..7fb034943e2 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -1,449 +1,514 @@ +//Windows, one of the oldest pieces of code +//Note : You might wonder where full windows are. Full windows are in fullwindow.dm. Now you know +//And knowing is half the battle + +#define WINDOWLOOSE 0 +#define WINDOWLOOSEFRAME 1 +#define WINDOWUNSECUREFRAME 2 +#define WINDOWSECURE 3 + /obj/structure/window - name = "window" - desc = "A window." + name = "window-p" + desc = "A silicate barrier, used to keep things out and in sight. Fragile." icon = 'icons/obj/structures.dmi' density = 1 - layer = 3.2//Just above doors + layer = 3.2 //Just above airlocks //For some reason I guess pressure_resistance = 4*ONE_ATMOSPHERE - anchored = 1.0 - var/health = 14.0 - var/ini_dir = null - var/state = 2 - var/reinf = 0 - var/basestate + anchored = 1 + var/health = 10 //This window is so bad blowing on it would break it, sucks for it + var/ini_dir = null //This really shouldn't exist, but it does and I don't want to risk deleting it because it's likely mapping-related + var/d_state = WINDOWLOOSEFRAME //Normal windows have one step (unanchor), reinforced windows have three var/shardtype = /obj/item/weapon/shard - var/sheets = 1 // Number of sheets needed to build this window (determines how much shit is spawned by destroy()) -// var/silicate = 0 // number of units of silicate -// var/icon/silicateIcon = null // the silicated icon + var/sheettype = /obj/item/stack/sheet/glass //Used for deconstruction + var/sheetamount = 1 //Number of sheets needed to build this window (determines how much shit is spawned by destroy()) + var/reinforced = 0 //Used for deconstruction steps /obj/structure/window/New(loc) + ..(loc) flags |= ON_BORDER - ini_dir = dir update_nearby_tiles() update_nearby_icons() + update_icon() /obj/structure/window/examine(mob/user) + ..() if(!anchored) - user << "\the [src] appears to be loose." + user << "It appears to be completely loose and movable" + //switch most likely can't take inequalities, so here's that if block + if(health >= initial(health)) //Sanity + user << "It's in perfect shape, not even a scratch" + else if(health >= 0.8*initial(health)) + user << "It has a few scratches and a small impact" + else if(health >= 0.5*initial(health)) + user << "It has a few impacts and some cracks running from them" + else if(health >= 0.2*initial(health)) + user << "It's covered in impact marks and most of the outer sheet is crackled" + else + user << "It's completely crackled over multiple layers, it's a miracle it's even standing" + if(reinforced) //Normal windows can be loose or not, reinforced windows are more complex + switch(d_state) + if(WINDOWSECURE) + user << "It is firmly secured" + if(WINDOWUNSECUREFRAME) + user << "It appears it was unfastened from its frame" + if(WINDOWLOOSEFRAME) + user << "It appears to be loose from its frame" + +//Allows us to quickly check if we should break the window, can handle not having an user +/obj/structure/window/proc/healthcheck(var/mob/M, var/sound = 1) + + if(health <= 0) + if(M) //Did someone pass a mob ? If so, perform a pressure check + var/pdiff = performWallPressureCheck(src.loc) + if(pdiff > 0) + message_admins("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [M.real_name] ([formatPlayerPanel(M,M.ckey)])!") + log_admin("Window with pdiff [pdiff] at [loc] destroyed by [M.real_name] ([M.ckey])!") + Destroy() + else if(sound) + playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) /obj/structure/window/bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage ..() - if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window destroyed by [Proj.firer.real_name] ([formatPlayerPanel(Proj.firer,Proj.firer.ckey)]) via \an [Proj]! pdiff = [pdiff] at [formatJumpTo(loc)]!") - log_admin("Window destroyed by ([Proj.firer.ckey]) via \an [Proj]! pdiff = [pdiff] at [loc]!") - destroy() + healthcheck(Proj.firer) return -// This should result in the same materials used to make the window. -/obj/structure/window/proc/destroy() - for(var/i=0;i[src] was hit by [AM].") - var/tforce = 0 - var/mob/M=null if(ismob(AM)) - tforce = 40 - M=AM + var/mob/M = AM //Duh + health -= 10 //We estimate just above a slam but under a crush, since mobs can't carry a throwforce variable + healthcheck(M) + visible_message("\The [M] slams into \the [src].", \ + "You slam into \the [src].") else if(isobj(AM)) var/obj/item/I = AM - tforce = I.throwforce - if(reinf) tforce *= 0.25 - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - health = max(0, health - tforce) - if(health <= 7 && !reinf) - anchored = 0 - update_nearby_icons() - step(src, get_dir(AM, src)) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - if(M) - message_admins("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [M.real_name] ([formatPlayerPanel(M,M.ckey)])!") - log_admin("Window with pdiff [pdiff] at [loc] deanchored by [M.real_name] ([M.ckey])!") - else - message_admins("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [AM]!") - log_admin("Window with pdiff [pdiff] at [loc] deanchored by [AM]!") - if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - if(M) - message_admins("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [M.real_name] ([formatPlayerPanel(M,M.ckey)])!") - log_admin("Window with pdiff [pdiff] at [loc] destroyed by [M.real_name] ([M.ckey])!") - else - message_admins("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [AM]!") - log_admin("Window with pdiff [pdiff] at [loc] destroyed by [AM]!") - destroy() - + health -= I.throwforce + healthcheck() + visible_message("\The [I] slams into \the [src].") /obj/structure/window/attack_hand(mob/user as mob) + if(M_HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window destroyed by hulk [user.real_name] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!") - log_admin("Window destroyed by hulk [user.real_name] ([user.ckey]) with pdiff [pdiff] at [loc]!") + user.visible_message("[user] smashes \the [src]!") + health -= 25 + healthcheck() user.delayNextAttack(8) - destroy() - else if (usr.a_intent == I_HURT) - user.delayNextAttack(8) // not so polite - playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) - usr.visible_message("[usr.name] bangs against the [src.name]!", \ - "You bang against the [src.name]!", \ - "You hear a banging sound.") + + //Bang against the window + else if(usr.a_intent == I_HURT) + user.delayNextAttack(10) + playsound(get_turf(src), 'sound/effects/glassknock.ogg', 100, 1) + user.visible_message("[user] bangs against \the [src]!", \ + "You bang against \the [src]!", \ + "You hear banging.") + + //Knock against it else user.delayNextAttack(10) - playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) - usr.visible_message("[usr.name] knocks on the [src.name].", \ - "You knock on the [src.name].", \ - "You hear a knocking sound.") + playsound(get_turf(src), 'sound/effects/glassknock.ogg', 50, 1) + user.visible_message("[user] knocks on \the [src].", \ + "You knock on \the [src].", \ + "You hear knocking.") return - /obj/structure/window/attack_paw(mob/user as mob) + return attack_hand(user) /obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime + user.delayNextAttack(10) health -= damage - user.delayNextAttack(8) - if(health <= 0) - user.visible_message("[user] smashes through [src]!") - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window destroyed by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!") - destroy() - else //for nicer text~ - user.visible_message("[user] smashes into [src]!") - playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) - + user.visible_message("\The [user] smashes into \the [src]!", \ + "You smash into \the [src]!") + healthcheck(user) /obj/structure/window/attack_alien(mob/user as mob) - if(islarva(user)) return + + if(islarva(user)) + return attack_generic(user, 15) /obj/structure/window/attack_animal(mob/user as mob) - if(!isanimal(user)) return + var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0) return + if(M.melee_damage_upper <= 0) + return attack_generic(M, M.melee_damage_upper) - /obj/structure/window/attack_slime(mob/user as mob) - if(!isslimeadult(user)) return + + if(!isslimeadult(user)) + return attack_generic(user, rand(10, 15)) - /obj/structure/window/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(!istype(W)) return//I really wish I did not need this - if (istype(W, /obj/item/weapon/grab) && Adjacent(user)) + if(istype(W, /obj/item/weapon/grab) && Adjacent(user)) var/obj/item/weapon/grab/G = W - if (istype(G.affecting, /mob/living)) + if(istype(G.affecting, /mob/living)) var/mob/living/M = G.affecting - var/state = G.state - qdel(W) //gotta delete it here because if window breaks, it won't get deleted - var/damage - switch (state) + var/gstate = G.state + del(W) //Gotta delete it here because if window breaks, it won't get deleted + switch(gstate) if(GRAB_PASSIVE) - M.apply_damage(4) - damage = 4 - hit(5) - visible_message("[user] slams [M] against \the [src]!") + M.apply_damage(5) //Meh, bit of pain, window is fine, just a shove + visible_message("\The [user] shoves \the [M] into \the [src]!", \ + "You shove \the [M] into \the [src]!") if(GRAB_AGGRESSIVE) - if (prob(50)) - M.Weaken(1) - M.apply_damage(7) - damage = 7 - hit(10) - visible_message("[user] bashes [M] against \the [src]!") + M.apply_damage(10) //Nasty, but dazed and concussed at worst + health -= 5 + visible_message("\The [user] slams \the [M] into \the [src]!", \ + "You slam \the [M] into \the [src]!") if(GRAB_NECK to GRAB_KILL) - M.Weaken(3) - M.apply_damage(15) - damage = 15 - hit(25) - visible_message("[user] crushes [M] against \the [src]!") - M.attack_log += text("\[[time_stamp()]\] Has been window slammed by [user.name] ([user.ckey]) for [damage] damage.") - user.attack_log += text("\[[time_stamp()]\] Window slammed [M.name] for [damage] damage.") - msg_admin_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) for [damage] damage (INTENT: [uppertext(user.a_intent)]) (JMP)") - log_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) for [damage] damage (INTENT: [uppertext(user.a_intent)]) (JMP)") - return - if(istype(W, /obj/item/weapon/screwdriver)) - if(reinf && state >= 1) - state = 3 - state - playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) - user << (state == 1 ? "You have unfastened the window from the frame." : "You have fastened the window to the frame.") - else if(reinf && state == 0) - anchored = !anchored - update_nearby_icons() - playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) - user << (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.") - if(!anchored) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window with pdiff [pdiff] deanchored by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") - else if(!reinf) - anchored = !anchored - update_nearby_icons() - playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) - user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.") - if(!anchored) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window with pdiff [pdiff] deanchored by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") - else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1) - state = 1 - state - playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) - user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.") - else if(istype(W, /obj/item/weapon/weldingtool) && !anchored && (!state || !reinf)) - playsound(get_turf(src), 'sound/items/Ratchet.ogg', 100, 1) - user << "Now disassembling the window..." - var/obj/item/weapon/weldingtool/WT = W - if (WT.remove_fuel(0)) - if(do_after(user,40)) - if(!user || !src) return - visible_message("[user] dismantles \the [src].") - new /obj/item/stack/sheet/glass/glass(get_turf(src)) - qdel(src) - else - user << "Need more welding fuel!" + M.Weaken(5) //Almost certainly shoved head or face-first, you're going to need a bit for the lights to come back on + M.apply_damage(30) //That got to fucking hurt, you were basically flung into a window, most likely a shattered one at that + health -= 20 //Window won't like that + visible_message("\The [user] crushes \the [M] into \the [src]!", \ + "You crush \the [M] into \the [src]!") + healthcheck(user) + M.attack_log += text("\[[time_stamp()]\] Has been window slammed by [user.name] ([user.ckey]) ([gstate]).") + user.attack_log += text("\[[time_stamp()]\] Window slammed [M.name] ([gstate]).") + msg_admin_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) ([gstate]) (JMP)") + log_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) ([gstate]) (JMP)") return + //Start construction and deconstruction, absolute priority over the other object interactions to avoid hitting the window + + if(reinforced) //Steps for all reinforced window types + + switch(d_state) + + if(WINDOWSECURE) //Reinforced, fully secured + + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user] unfastens \the [src] from its frame.", \ + "You unfasten \the [src] from its frame.") + d_state = WINDOWUNSECUREFRAME + return + + if(WINDOWUNSECUREFRAME) + + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user] fastens \the [src] to its frame.", \ + "You fasten \the [src] to its frame.") + d_state = WINDOWSECURE + return + + if(istype(W, /obj/item/weapon/crowbar)) + playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) + user.visible_message("[user] pries \the [src] from its frame.", \ + "You pry \the [src] from its frame.") + d_state = WINDOWLOOSEFRAME + return + + if(WINDOWLOOSEFRAME) + + if(istype(W, /obj/item/weapon/crowbar)) + playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) + user.visible_message("[user] pries \the [src] into its frame.", \ + "You pry \the [src] into its frame.") + d_state = WINDOWUNSECUREFRAME + return + + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user] unfastens \the [src]'s frame from the floor.", \ + "You unfasten \the [src]'s frame from the floor.") + d_state = WINDOWLOOSE + anchored = 0 + update_nearby_tiles() //Needed if it's a full window, since unanchored windows don't link + update_nearby_icons() + update_icon() + //Pėrform pressure check since window no longer blocks air + var/pdiff = performWallPressureCheck(src.loc) + if(pdiff > 0) + message_admins("Window with pdiff [pdiff] deanchored by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") + log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") + return + + if(WINDOWLOOSE) + + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user] fastens \the [src]'s frame to the floor.", \ + "You fasten \the [src]'s frame to the floor.") + d_state = WINDOWLOOSEFRAME + anchored = 1 + update_nearby_tiles() //Ditto above, but in reverse + update_nearby_icons() + update_icon() + return + + if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0)) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + user.visible_message("[user] starts disassembling \the [src].", \ + "You start disassembling \the [src].") + if(do_after(user, 40) && d_state == WINDOWLOOSE) //Extra condition needed to avoid cheesing + playsound(src, 'sound/items/Welder.ogg', 100, 1) + user.visible_message("[user] disassembles \the [src].", \ + "You disassemble \the [src].") + getFromPool(sheettype, get_turf(src), sheetamount) + qdel(src) + return + else + user << "You need more welding fuel to complete this task." + return + + else if(!reinforced) //Normal window steps + + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user] [d_state ? "un":""]fastens \the [src].", \ + "You [d_state ? "un":""]fasten \the [src].") + d_state = !d_state + anchored = !anchored + update_nearby_tiles() //Ditto above + update_nearby_icons() + update_icon() + return + + if(istype(W, /obj/item/weapon/weldingtool) && !d_state) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0)) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + user.visible_message("[user] starts disassembling \the [src].", \ + "You start disassembling \the [src].") + if(do_after(user, 40) && d_state == WINDOWLOOSE) //Ditto above + playsound(src, 'sound/items/Welder.ogg', 100, 1) + user.visible_message("[user] disassembles \the [src].", \ + "You disassemble \the [src].") + getFromPool(sheettype, get_turf(src), sheetamount) + qdel(src) + return + else + user << "You need more welding fuel to complete this task." + return + + if(W.damtype == BRUTE || W.damtype == BURN) + user.delayNextAttack(10) + health -= W.force + user.visible_message("\The [user] hits \the [src] with \the [W].", \ + "You hit \the [src] with \the [W].") + healthcheck(user) + return else - if(W.damtype == BRUTE || W.damtype == BURN) - user.delayNextAttack(10) - hit(W.force) - if(health <= 7) - anchored = 0 - update_nearby_icons() - step(src, get_dir(user, src)) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window with pdiff [pdiff] deanchored by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") - else - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) + playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) ..() + return /obj/structure/window/proc/can_be_reached(mob/user) + if(!is_fulltile()) - if(get_dir(user,src) & dir) + if(get_dir(user, src) & dir) for(var/obj/O in loc) if(!O.CanPass(user, user.loc, 1, 0)) return 0 return 1 -/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) - if(reinf) damage *= 0.5 - health = max(0, health - damage) - if(sound_effect) - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) - if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Window with pdiff [pdiff] broken at [formatJumpTo(loc)]!") - destroy() - return - - /obj/structure/window/verb/rotate() + set name = "Rotate Window Counter-Clockwise" set category = "Object" set src in oview(1) if(anchored) - usr << "It is fastened to the floor therefore you can't rotate it!" + usr << "Is fastened to the floor, therefore you can't rotate it!" return 0 update_nearby_tiles() //Compel updates before dir = turn(dir, 90) -// updateSilicate() update_nearby_tiles() ini_dir = dir return - /obj/structure/window/verb/revrotate() + set name = "Rotate Window Clockwise" set category = "Object" set src in oview(1) if(anchored) - usr << "It is fastened to the floor therefore you can't rotate it!" + usr << "Is fastened to the floor, therefore you can't rotate it!" return 0 update_nearby_tiles() //Compel updates before dir = turn(dir, 270) -// updateSilicate() update_nearby_tiles() ini_dir = dir return - -/* -/obj/structure/window/proc/updateSilicate() - if(silicateIcon && silicate) - icon = initial(icon) - - var/icon/I = icon(icon,icon_state,dir) - - var/r = (silicate / 100) + 1 - var/g = (silicate / 70) + 1 - var/b = (silicate / 50) + 1 - I.SetIntensity(r,g,b) - icon = I - silicateIcon = I -*/ - /obj/structure/window/Destroy() - density = 0 + + density = 0 //Sanity while we do the rest update_nearby_tiles() if(loc) playsound(get_turf(src), "shatter", 70, 1) update_nearby_icons() + getFromPool(shardtype, loc, sheetamount) + if(reinforced) + getFromPool(/obj/item/stack/rods, loc, sheetamount) ..() - /obj/structure/window/Move() + update_nearby_tiles() ..() dir = ini_dir update_nearby_tiles() - //This proc has to do with airgroups and atmos, it has nothing to do with smoothwindows, that's update_nearby_tiles(). /obj/structure/window/proc/update_nearby_tiles() - if (isnull(air_master)) + + if(isnull(air_master)) return 0 var/T = get_turf(src) - if (isturf(T)) + if(isturf(T)) air_master.mark_for_update(T) return 1 -//checks if this window is full-tile one -/obj/structure/window/proc/is_fulltile() - return 0 - //This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc! /obj/structure/window/proc/update_nearby_icons() - if(!loc) return 0 + + if(!loc) + return 0 + update_icon() + for(var/direction in cardinal) - for(var/obj/structure/window/W in get_step(src,direction) ) + for(var/obj/structure/window/W in get_step(src,direction)) W.update_icon() /obj/structure/window/update_icon() + return /obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > T0C + 800) - hit(round(exposed_volume / 100), 0) + health -= round(exposed_volume/100) + healthcheck(sound = 0) ..() -/obj/structure/window/basic - desc = "It looks thin and flimsy. A few knocks with... anything, really should shatter it." - icon_state = "window" - basestate = "window" - -/obj/structure/window/plasmabasic - name = "plasma window" - desc = "A plasma-glass alloy window. It looks insanely tough to break. It appears it's also insanely tough to burn through." - basestate = "plasmawindow" - icon_state = "plasmawindow" - shardtype = /obj/item/weapon/shard/plasma - health = 120 - -/obj/structure/window/plasmabasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > T0C + 32000) - hit(round(exposed_volume / 1000), 0) - ..() - -/obj/structure/window/plasmareinforced - name = "reinforced plasma window" - desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." - basestate = "plasmarwindow" - icon_state = "plasmarwindow" - shardtype = /obj/item/weapon/shard/plasma - reinf = 1 - health = 160 - -/obj/structure/window/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return - /obj/structure/window/reinforced name = "reinforced window" - desc = "It looks rather strong. Might take a few good hits to shatter it." - icon_state = "rwindow" - basestate = "rwindow" + desc = "A window with a rod matrice. It looks more solid than the average window." + icon_state = "rwindow-p" + sheettype = /obj/item/stack/sheet/glass/rglass health = 40 - reinf = 1 + d_state = WINDOWSECURE + reinforced = 1 + +/obj/structure/window/plasma + + name = "plasma window" + desc = "A window made out of a plasma-silicate alloy. It looks insanely tough to break and burn through." + icon_state = "plasmawindow-p" + shardtype = /obj/item/weapon/shard/plasma + sheettype = /obj/item/stack/sheet/glass/plasmaglass + health = 120 + +/obj/structure/window/plasma/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + + if(exposed_temperature > T0C + 32000) + health -= (round(exposed_volume/1000)) + healthcheck(sound = 0) + ..() + +/obj/structure/window/reinforced/plasma + + name = "reinforced plasma window" + desc = "A window made out of a plasma-silicate alloy and a rod matrice. It looks hopelessly tough to break and is most likely nigh fireproof." + icon_state = "plasmarwindow-p" + shardtype = /obj/item/weapon/shard/plasma + sheettype = /obj/item/stack/sheet/glass/plasmarglass + health = 160 + +/obj/structure/window/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + + return /obj/structure/window/reinforced/tinted + name = "tinted window" - desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." - icon_state = "twindow" - basestate = "twindow" + desc = "A window with a rod matrice. Its surface is completely tinted, making it opaque. Why not a wall ?" + icon_state = "twindow-p" opacity = 1 + sheettype = /obj/item/stack/sheet/glass/rglass //A glass type for this window doesn't seem to exist, so here's to you /obj/structure/window/reinforced/tinted/frosted + name = "frosted window" - desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." - icon_state = "fwindow" - basestate = "fwindow" + desc = "A window with a rod matrice. Its surface is completely tinted, making it opaque, and it's frosty. Why not an ice wall ?" + icon_state = "fwindow-p" health = 30 + sheettype = /obj/item/stack/sheet/glass/rglass //Ditto above + +#undef WINDOWLOOSE +#undef WINDOWLOOSEFRAME +#undef WINDOWUNSECUREFRAME +#undef WINDOWSECURE diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index c1f54a0011e..dc368dcc22d 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/maps/tgstation.dmm b/maps/tgstation.dmm index 0807ba599d8..8f9b80b4eb1 100644 --- a/maps/tgstation.dmm +++ b/maps/tgstation.dmm @@ -5003,9 +5003,9 @@ "bSk" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/science/hallway) "bSl" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/science/hallway) "bSm" = (/turf/simulated/wall/r_wall,/area/science/mixing) -"bSn" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/grille,/obj/structure/window/full/plasmareinforced,/turf/simulated/floor/plating,/area/science/mixing) -"bSo" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced,/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/full/plasmareinforced,/turf/simulated/floor/plating,/area/science/mixing) -"bSp" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced,/obj/structure/grille,/obj/structure/window/full/plasmareinforced,/turf/simulated/floor/plating,/area/science/mixing) +"bSn" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/grille,/obj/structure/window/full/reinforced/plasma,/turf/simulated/floor/plating,/area/science/mixing) +"bSo" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced,/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/full/reinforced/plasma,/turf/simulated/floor/plating,/area/science/mixing) +"bSp" = (/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/window/plasmareinforced,/obj/structure/grille,/obj/structure/window/full/reinforced/plasma,/turf/simulated/floor/plating,/area/science/mixing) "bSq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bSr" = (/obj/structure/catwalk{icon_state = "catwalk1"},/turf/space,/area) "bSs" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/science/test_area) @@ -7024,7 +7024,7 @@ "cFd" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) "cFe" = (/obj/machinery/airlock_sensor{id_tag = "inc_ext_airlock_sensor"; master_tag = "inc_airlock_control"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) "cFf" = (/obj/machinery/embedded_controller/radio/advanced_airlock_controller{frequency = 1449; id_tag = "inc_airlock_control"; pixel_x = -24; tag_airpump = "inc_airlock_pump"; tag_chamber_sensor = "inc_chamber_airlock_sensor"; tag_exterior_door = "inc_airlock_exterior"; tag_exterior_sensor = "inc_ext_airlock_sensor"; tag_interior_door = "inc_airlock_interior"; tag_interior_sensor = "inc_int_airlock_sensor"},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/engineering/burn_chamber) -"cFg" = (/obj/structure/window/full/plasmareinforced,/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cFg" = (/obj/structure/window/full/reinforced/plasma,/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 1},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cFh" = (/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/atmospherics/unary/cap/hidden/general{tag = "icon-cap (WEST)"; icon_state = "cap"; dir = 8},/turf/simulated/floor{dir = 9; icon_state = "yellowfull"},/area/engineering/burn_chamber) "cFi" = (/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor{dir = 9; icon_state = "yellowfull"},/area/engineering/burn_chamber) "cFj" = (/turf/simulated/floor,/area/engineering/burn_chamber) @@ -7073,7 +7073,7 @@ "cGa" = (/turf/simulated/floor/engine,/area/science/xenobiology/specimen_6) "cGb" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) "cGc" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 10},/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1449; id_tag = "inc_in"},/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) -"cGd" = (/obj/structure/window/full/plasmareinforced,/obj/machinery/atmospherics/pipe/simple/yellow/hidden{dir = 4},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cGd" = (/obj/structure/window/full/reinforced/plasma,/obj/machinery/atmospherics/pipe/simple/yellow/hidden{dir = 4},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cGe" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold/yellow/hidden,/obj/machinery/meter{name = "Fuel Meter"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/burn_chamber) "cGf" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold/yellow/hidden,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/burn_chamber) "cGg" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/yellow/hidden{dir = 9},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/burn_chamber) @@ -7118,7 +7118,7 @@ "cGT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/engine,/area/science/xenobiology/specimen_6) "cGU" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area) "cGV" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 9},/obj/machinery/air_sensor{frequency = 1449; id_tag = "inc_sensor"; output = 63},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) -"cGW" = (/obj/structure/window/full/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cGW" = (/obj/structure/window/full/reinforced/plasma,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cGX" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/warning_stripes{tag = "icon-warning"; icon_state = "warning"; dir = 2},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) "cGY" = (/obj/machinery/door_control{desc = "Lets all the hot gas out very quickly."; id_tag = "Burn Chamber Vent"; name = "Burn Chamber Vent"; pixel_x = -7; pixel_y = 32; req_access_txt = "0"},/obj/machinery/ignition_switch{id_tag = "Burn Chamber Igniter"; pixel_x = 6; pixel_y = 32},/turf/simulated/floor,/area/engineering/burn_chamber) "cGZ" = (/obj/machinery/atmospherics/binary/pump{name = "Hot Fill Pump"},/turf/simulated/floor/plating,/area/engineering/burn_chamber) @@ -7151,7 +7151,7 @@ "cHA" = (/obj/machinery/door/poddoor{desc = "By gods, release the hounds!"; id_tag = "xenobioout6"; name = "Containment Release"},/obj/machinery/atmospherics/pipe/simple/filtering/hidden,/turf/simulated/floor/engine,/area/science/xenobiology/specimen_6) "cHB" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/science/xenobiology/specimen_6) "cHC" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 4},/obj/machinery/igniter{id_tag = "Burn Chamber Igniter"},/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) -"cHD" = (/obj/structure/window/full/plasmareinforced,/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cHD" = (/obj/structure/window/full/reinforced/plasma,/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{dir = 8},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cHE" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/obj/effect/decal/warning_stripes{tag = "icon-warning"; icon_state = "warning"; dir = 2},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/engineering/atmos) "cHF" = (/obj/machinery/atmospherics/pipe/simple/insulated/hidden/blue,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/decal/warning_stripes/pathmarkers/blue,/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (NORTH)"; icon_state = "pathmarker"; dir = 1},/turf/simulated/floor,/area/engineering/engine) "cHG" = (/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/effect/decal/warning_stripes/pathmarkers/red,/obj/effect/decal/warning_stripes/pathmarkers/red{tag = "icon-pathmarker (NORTH)"; icon_state = "pathmarker"; dir = 1},/turf/simulated/floor,/area/engineering/engine) @@ -7195,7 +7195,7 @@ "cIs" = (/obj/machinery/camera{c_tag = "Engine West"; dir = 4},/obj/machinery/power/terminal{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 4},/obj/effect/decal/warning_stripes/pathmarkers/red{tag = "icon-pathmarker (WEST)"; icon_state = "pathmarker"; dir = 8},/obj/effect/decal/warning_stripes/pathmarkers/red{tag = "icon-pathmarker (EAST)"; icon_state = "pathmarker"; dir = 4},/turf/simulated/floor,/area/engineering/engine) "cIt" = (/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/engineering/burn_chamber) "cIu" = (/obj/machinery/atmospherics/pipe/manifold/insulated/hidden{dir = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) -"cIv" = (/obj/structure/window/full/plasmareinforced,/obj/machinery/atmospherics/pipe/manifold/insulated/hidden{dir = 1},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/obj/machinery/meter{name = "Vent Gas Meter"},/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cIv" = (/obj/structure/window/full/reinforced/plasma,/obj/machinery/atmospherics/pipe/manifold/insulated/hidden{dir = 1},/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/obj/machinery/meter{name = "Vent Gas Meter"},/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cIw" = (/obj/machinery/atmospherics/binary/valve/digital{dir = 4; name = "Hot Loop Release Valve"},/obj/effect/decal/warning_stripes{tag = "icon-warning (NORTHEAST)"; icon_state = "warning"; dir = 5},/turf/simulated/floor/plating,/area/engineering/burn_chamber) "cIx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 9},/obj/effect/decal/warning_stripes/pathmarkers/red{tag = "icon-pathmarker (NORTH)"; icon_state = "pathmarker"; dir = 1},/obj/effect/decal/warning_stripes/pathmarkers/red{tag = "icon-pathmarker (WEST)"; icon_state = "pathmarker"; dir = 8},/turf/simulated/floor,/area/engineering/engine) "cIy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/insulated/hidden/blue,/obj/effect/decal/warning_stripes/pathmarkers/blue,/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (NORTH)"; icon_state = "pathmarker"; dir = 1},/turf/simulated/floor,/area/engineering/engine) @@ -7235,7 +7235,7 @@ "cJg" = (/obj/machinery/atmospherics/trinary/filter{dir = 1; filter_type = 1; icon_state = "intact_on"; name = "Gas filter (Xeno cell 6)"; on = 1; req_access = null; req_access_txt = "55"},/turf/simulated/floor/plating,/area/maintenance/asmaint3) "cJh" = (/obj/machinery/atmospherics/pipe/simple/filtering/hidden{dir = 9},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/asmaint3) "cJi" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; frequency = 1449; id_tag = "inc_out"; name = "Burn Chamber Scrubber"; on = 1},/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/burn_chamber) -"cJj" = (/obj/structure/window/full/plasmareinforced,/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 5},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) +"cJj" = (/obj/structure/window/full/reinforced/plasma,/obj/machinery/atmospherics/pipe/simple/insulated/hidden{dir = 5},/obj/structure/window/plasmareinforced,/obj/structure/window/plasmareinforced{dir = 8},/obj/structure/window/plasmareinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engineering/burn_chamber) "cJk" = (/obj/machinery/atmospherics/binary/valve/digital{dir = 4; name = "Cold Loop Release Valve"},/obj/effect/decal/warning_stripes{tag = "icon-warning (SOUTHEAST)"; icon_state = "warning"; dir = 6},/turf/simulated/floor/plating,/area/engineering/burn_chamber) "cJl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/insulated/hidden/blue{dir = 4},/obj/effect/decal/warning_stripes{tag = "icon-warning_corner"; icon_state = "warning_corner"; dir = 2},/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (WEST)"; icon_state = "pathmarker"; dir = 8},/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (EAST)"; icon_state = "pathmarker"; dir = 4},/turf/simulated/floor,/area/engineering/engine) "cJm" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "engineering_west_airlock"; name = "interior access button"; pixel_x = -20; pixel_y = -20; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/insulated/hidden/blue{dir = 4},/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (WEST)"; icon_state = "pathmarker"; dir = 8},/obj/effect/decal/warning_stripes/pathmarkers/blue{tag = "icon-pathmarker (EAST)"; icon_state = "pathmarker"; dir = 4},/turf/simulated/floor,/area/engineering/engine) @@ -9657,8 +9657,8 @@ "dDK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dDL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dDM" = (/obj/structure/table,/obj/item/weapon/rack_parts,/turf/simulated/floor,/area/derelict/bridge) -"dDN" = (/obj/structure/table,/obj/structure/window/basic,/turf/simulated/floor,/area/derelict/bridge) -"dDO" = (/obj/structure/window/basic,/turf/simulated/floor,/area/derelict/bridge) +"dDN" = (/obj/structure/table,/obj/structure/window,/turf/simulated/floor,/area/derelict/bridge) +"dDO" = (/obj/structure/window,/turf/simulated/floor,/area/derelict/bridge) "dDP" = (/obj/structure/table,/obj/structure/cable,/obj/machinery/power/apc{pixel_y = -24},/turf/simulated/floor,/area/derelict/bridge) "dDQ" = (/obj/structure/table,/obj/machinery/light/small,/obj/item/weapon/stamp/denied,/turf/simulated/floor,/area/derelict/bridge) "dDR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{broken = 1; icon_state = "damaged3"},/area/derelict/hallway/primary) @@ -9718,7 +9718,7 @@ "dET" = (/turf/simulated/wall/r_wall,/area/derelict/hallway/primary) "dEU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "dEV" = (/obj/item/weapon/paper{info = "Objective #1: Destroy the station with a nuclear device."; name = "Objectives of a Nuclear Operative"},/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/singularity_engine) -"dEW" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/airless,/area/derelict/hallway/primary) +"dEW" = (/obj/structure/window{dir = 4},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dEX" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{broken = 1; icon_state = "damaged4"},/area/derelict/singularity_engine) "dEY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dEZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) @@ -9727,7 +9727,7 @@ "dFc" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/singularity_engine) "dFd" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{broken = 1; icon_state = "damaged5"},/area/derelict/singularity_engine) "dFe" = (/obj/machinery/light/small,/turf/simulated/floor/airless,/area/derelict/hallway/primary) -"dFf" = (/obj/structure/grille,/obj/structure/window/basic{dir = 8},/turf/simulated/floor/plating/airless,/area) +"dFf" = (/obj/structure/grille,/obj/structure/window{dir = 8},/turf/simulated/floor/plating/airless,/area) "dFg" = (/obj/item/weapon/shard,/obj/structure/grille{density = 0; destroyed = 1; health = 0; icon_state = "brokengrille"},/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; name = "Syndicate agent remains"},/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/singularity_engine) "dFh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/hallway/primary) "dFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) @@ -9748,7 +9748,7 @@ "dFx" = (/turf/simulated/wall,/area/derelict/arrival) "dFy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine) "dFz" = (/obj/item/stack/medical/ointment,/turf/simulated/floor/airless{broken = 1; icon_state = "damaged3"},/area/derelict/medical) -"dFA" = (/obj/structure/window/full/basic,/turf/space,/area) +"dFA" = (/obj/structure/window/full,/turf/space,/area) "dFB" = (/obj/structure/table,/turf/simulated/floor,/area/derelict/arrival) "dFC" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/derelict/arrival) "dFD" = (/turf/simulated/floor,/area/derelict/arrival) @@ -9759,7 +9759,7 @@ "dFI" = (/obj/item/weapon/shard,/turf/space,/area) "dFJ" = (/obj/structure/grille,/turf/space,/area/derelict/singularity_engine) "dFK" = (/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/medical) -"dFL" = (/obj/structure/lattice,/obj/structure/window/basic,/turf/space,/area) +"dFL" = (/obj/structure/lattice,/obj/structure/window,/turf/space,/area) "dFM" = (/turf/simulated/floor/airless{broken = 1; icon_state = "damaged5"},/area) "dFN" = (/turf/simulated/floor/plating/airless,/area/derelict/arrival) "dFO" = (/obj/item/weapon/shard,/obj/structure/grille{density = 0; destroyed = 1; health = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/derelict/medical) @@ -9781,9 +9781,9 @@ "dGe" = (/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/derelict/hallway/secondary) "dGf" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/medical) "dGg" = (/turf/simulated/floor/airless{broken = 1; icon_state = "damaged5"},/area/derelict/hallway/primary) -"dGh" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) -"dGi" = (/obj/structure/lattice,/obj/structure/window/basic{dir = 1},/turf/space,/area) -"dGj" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/basic{dir = 1},/turf/space,/area) +"dGh" = (/obj/structure/window{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) +"dGi" = (/obj/structure/lattice,/obj/structure/window{dir = 1},/turf/space,/area) +"dGj" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window{dir = 1},/turf/space,/area) "dGk" = (/turf/simulated/floor/plating,/area/derelict/arrival) "dGl" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/chapel) "dGm" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) @@ -9854,8 +9854,8 @@ "dHz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "dHA" = (/obj/structure/closet/l3closet/general,/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical) "dHB" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area) -"dHC" = (/obj/structure/window/basic,/turf/space,/area) -"dHD" = (/obj/structure/window/basic{dir = 8},/turf/space,/area) +"dHC" = (/obj/structure/window,/turf/space,/area) +"dHD" = (/obj/structure/window{dir = 8},/turf/space,/area) "dHE" = (/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/derelict/arrival) "dHF" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/derelict/arrival) "dHG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival) @@ -9874,15 +9874,15 @@ "dHT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dHU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "dHV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area) -"dHW" = (/obj/structure/window/basic{dir = 8},/obj/structure/window/basic,/turf/space,/area) +"dHW" = (/obj/structure/window{dir = 8},/obj/structure/window,/turf/space,/area) "dHX" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/derelict/arrival) "dHY" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dHZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area) "dIa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area) -"dIb" = (/obj/structure/window/basic{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area) +"dIb" = (/obj/structure/window{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area) "dIc" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "dId" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area) -"dIe" = (/obj/structure/window/basic,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) +"dIe" = (/obj/structure/window,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area) "dIf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/simulated/floor/airless,/area/derelict/arrival) "dIg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/derelict/arrival) "dIh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/derelict/arrival) @@ -9892,10 +9892,10 @@ "dIl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dIm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dIn" = (/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/turf/simulated/floor/airless,/area/derelict/hallway/primary) -"dIo" = (/obj/structure/window/basic{dir = 1},/turf/space,/area) -"dIp" = (/obj/structure/window/full/basic,/turf/simulated/floor/plating/airless,/area) -"dIq" = (/obj/structure/grille,/obj/structure/window/basic{dir = 1},/turf/space,/area) -"dIr" = (/obj/structure/window/basic{dir = 1},/turf/simulated/floor/plating/airless,/area) +"dIo" = (/obj/structure/window{dir = 1},/turf/space,/area) +"dIp" = (/obj/structure/window/full,/turf/simulated/floor/plating/airless,/area) +"dIq" = (/obj/structure/grille,/obj/structure/window{dir = 1},/turf/space,/area) +"dIr" = (/obj/structure/window{dir = 1},/turf/simulated/floor/plating/airless,/area) "dIs" = (/obj/structure/cable,/obj/machinery/power/apc{pixel_y = -24},/turf/simulated/floor,/area/derelict/arrival) "dIt" = (/obj/machinery/power/rad_collector,/turf/simulated/floor,/area/derelict/arrival) "dIu" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor,/area/derelict/arrival) @@ -9911,15 +9911,15 @@ "dIE" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dIF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/derelict/hallway/primary) "dIG" = (/obj/machinery/door/airlock/security{name = "Gas Storage"; req_access = null; req_access_txt = "3"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) -"dIH" = (/obj/structure/lattice,/obj/structure/window/basic{dir = 4},/turf/space,/area) -"dII" = (/obj/structure/girder,/obj/structure/window/basic,/turf/simulated/floor/plating/airless,/area/derelict/arrival) +"dIH" = (/obj/structure/lattice,/obj/structure/window{dir = 4},/turf/space,/area) +"dII" = (/obj/structure/girder,/obj/structure/window,/turf/simulated/floor/plating/airless,/area/derelict/arrival) "dIJ" = (/obj/structure/stool/bed,/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dIK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "dIL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "dIM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "dIN" = (/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dIO" = (/obj/item/weapon/cigbutt,/turf/space,/area) -"dIP" = (/obj/structure/window/basic{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival) +"dIP" = (/obj/structure/window{dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival) "dIQ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/derelict/arrival) "dIR" = (/obj/structure/closet/crate/secure/plasma/prefilled,/turf/simulated/floor,/area/derelict/arrival) "dIS" = (/obj/item/weapon/pen,/obj/machinery/power/rad_collector,/turf/simulated/floor,/area/derelict/arrival) @@ -9936,7 +9936,7 @@ "dJd" = (/obj/structure/stool,/turf/simulated/floor/airless,/area/derelict/hallway/primary) "dJe" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary) "dJf" = (/obj/structure/closet/wardrobe/orange,/turf/simulated/floor/airless,/area) -"dJg" = (/obj/structure/window/basic{dir = 4},/turf/space,/area) +"dJg" = (/obj/structure/window{dir = 4},/turf/space,/area) "dJh" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/derelict/arrival) "dJi" = (/obj/structure/closet/wardrobe,/turf/simulated/floor,/area/derelict/arrival) "dJj" = (/turf/simulated/floor/airless{broken = 1; icon_state = "damaged2"},/area/derelict/teleporter) @@ -9962,7 +9962,7 @@ "dJD" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area) "dJE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area) "dJF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/derelict/hallway/secondary) -"dJG" = (/obj/structure/window/basic{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"dJG" = (/obj/structure/window{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "dJH" = (/turf/space,/area/shuttle/salvage/derelict) "dJI" = (/obj/structure/grille,/obj/item/weapon/shard,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area) "dJJ" = (/obj/structure/grille,/obj/structure/window/full/reinforced,/turf/simulated/floor/plating/airless,/area) @@ -10009,8 +10009,8 @@ "dKy" = (/obj/machinery/door/airlock/command{name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/tape/engineering{icon_state = "engineering_door"; layer = 3.2},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "dKz" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "dKA" = (/obj/machinery/door/firedoor/border_only{name = "Firelock East"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"dKB" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"dKC" = (/obj/structure/window/basic{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"dKB" = (/obj/structure/window{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"dKC" = (/obj/structure/window{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "dKD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "dKE" = (/obj/structure/closet/emcloset,/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "dKF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) @@ -11660,7 +11660,7 @@ "eqy" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) "eqz" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) "eqA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/living_quarters) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa