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