mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Update window code
That code was old and fucky, goddamn - Span, formatting, newline, visible_message, yeah - Separate sprites for window panes and full windows. Might need a bit more refining still, but that's that - Remove deprecated commented silicate code. If anyone ever wants to include something akin to silicate, they would benefit from just recoding it from scratch. An item that adds health and potentially changes sprite color can't be that hard to make - Reduce normal window health by 4 to 10. Why would you use plain windows - Remove stupid paths that caused shitty inheritance. window/basic and window/full/basic were dumb as fucking shit and no longer exist (both transferred to their respective tree parent, for whatever variables needed transplating, so 2-3). All full window types under full/ all reinforced window types under reinforced/, all in that order - Add in more examine() information (construction state and health) - Add in healthcheck() to replace destroy(), hit() and all that logging and variable juggling bullshit in about every proc where the window can be damaged - ex_act(), blob_act(), meteorhit() now deplete health only and no longer magically delete or Destroy() windows. Looks a bit ugly on ex_act 3 since reinforced windows can't be destroyed but grilles always are, and plasma windows still don't block explosions even if they're now almost bomb-proof, but that's progress - Remove window damage on passive grab window "slam", massively increase mob damage on neck/kill window slam (if you let yourself get grabbed that far, you deserve to die) - Change construction from that ugly variable juggling to a fancy and functional switch() construction code. Include bitflags and deconstruction safety - All files that were modified outside of window.dm and fullwindow.dm are compatibility fixes Try as I might, I couldn't fix #3515. It appears to be fundamentally fucked due to the way pushing objects (you enter the window's tile) and pulling objects (you cannot reach the other side of the window, ever) works. Maybe someone else will manage it
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 << "<span class='warning'>There is a window in the way.</span>"
|
||||
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 << "<span class='warning'>There is a window in the way.</span>"
|
||||
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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
sheettype = /obj/item/stack/sheet/glass/rglass //Ditto above
|
||||
|
||||
#undef WINDOWLOOSE
|
||||
#undef WINDOWLOOSEFRAME
|
||||
#undef WINDOWUNSECUREFRAME
|
||||
#undef WINDOWSECURE
|
||||
|
||||
@@ -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 << "<span class='notice'>You place the [WD] on [src].</span>"
|
||||
|
||||
@@ -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 << "<span class='info'>\the [src] appears to be loose.</span>"
|
||||
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<sheets;i++)
|
||||
getFromPool(shardtype, loc)
|
||||
/obj/structure/window/proc/is_fulltile()
|
||||
|
||||
if(reinf)
|
||||
new /obj/item/stack/rods(loc)
|
||||
qdel(src)
|
||||
return 0
|
||||
|
||||
//This ex_act just removes health to be fully modular with "bomb-proof" windows
|
||||
/obj/structure/window/ex_act(severity)
|
||||
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
qdel(src)
|
||||
health -= rand(100, 150)
|
||||
healthcheck()
|
||||
return
|
||||
if(2.0)
|
||||
destroy()
|
||||
health -= rand(20, 50)
|
||||
healthcheck()
|
||||
return
|
||||
if(3.0)
|
||||
if(prob(50))
|
||||
destroy()
|
||||
return
|
||||
|
||||
health -= rand(5, 15)
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
/obj/structure/window/blob_act()
|
||||
destroy()
|
||||
|
||||
health -= rand(15, 25)
|
||||
healthcheck()
|
||||
|
||||
/obj/structure/window/meteorhit()
|
||||
destroy()
|
||||
|
||||
health -= rand(100, 150)
|
||||
healthcheck()
|
||||
|
||||
/obj/structure/window/CheckExit(var/atom/movable/O, var/turf/target)
|
||||
|
||||
if(istype(O) && O.checkpass(PASSGLASS))
|
||||
return 1
|
||||
if(get_dir(O.loc, target) == dir)
|
||||
return !density
|
||||
return 1
|
||||
|
||||
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height = 0)
|
||||
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
return 1
|
||||
if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST)
|
||||
return 0 //full tile window, you can't move into it!
|
||||
if(get_dir(loc, target) == dir)
|
||||
return !density
|
||||
else
|
||||
return 1
|
||||
return 1
|
||||
|
||||
//Someone threw something at us, please advise
|
||||
/obj/structure/window/hitby(AM as mob|obj)
|
||||
|
||||
..()
|
||||
visible_message("<span class='danger'>[src] was hit by [AM].</span>")
|
||||
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("<span class='danger'>\The [M] slams into \the [src].</span>", \
|
||||
"<span class='danger'>You slam into \the [src].</span>")
|
||||
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("<span class='danger'>\The [I] slams into \the [src].</span>")
|
||||
|
||||
/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("<span class='danger'>[user] smashes through [src]!</span>")
|
||||
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("<span class='danger'>[user] smashes \the [src]!</span>")
|
||||
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("<span class='warning'>[usr.name] bangs against the [src.name]!</span>", \
|
||||
"<span class='warning'>You bang against the [src.name]!</span>", \
|
||||
"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("<span class='warning'>[user] bangs against \the [src]!</span>", \
|
||||
"<span class='warning'>You bang against \the [src]!</span>", \
|
||||
"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("<span class='notice'>[user] knocks on \the [src].</span>", \
|
||||
"<span class='notice'>You knock on \the [src].</span>", \
|
||||
"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("<span class='danger'>[user] smashes through [src]!</span>")
|
||||
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("<span class='danger'>[user] smashes into [src]!</span>")
|
||||
playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
|
||||
|
||||
user.visible_message("<span class='danger'>\The [user] smashes into \the [src]!</span>", \
|
||||
"<span class='warning'>You smash into \the [src]!</span>")
|
||||
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("<span class='warning'>[user] slams [M] against \the [src]!</span>")
|
||||
M.apply_damage(5) //Meh, bit of pain, window is fine, just a shove
|
||||
visible_message("<span class='warning'>\The [user] shoves \the [M] into \the [src]!</span>", \
|
||||
"<span class='warning'>You shove \the [M] into \the [src]!</span>")
|
||||
if(GRAB_AGGRESSIVE)
|
||||
if (prob(50))
|
||||
M.Weaken(1)
|
||||
M.apply_damage(7)
|
||||
damage = 7
|
||||
hit(10)
|
||||
visible_message("<span class='danger'>[user] bashes [M] against \the [src]!</span>")
|
||||
M.apply_damage(10) //Nasty, but dazed and concussed at worst
|
||||
health -= 5
|
||||
visible_message("<span class='danger'>\The [user] slams \the [M] into \the [src]!</span>", \
|
||||
"<span class='danger'>You slam \the [M] into \the [src]!</span>")
|
||||
if(GRAB_NECK to GRAB_KILL)
|
||||
M.Weaken(3)
|
||||
M.apply_damage(15)
|
||||
damage = 15
|
||||
hit(25)
|
||||
visible_message("<big><span class='danger'>[user] crushes [M] against \the [src]!</span></big>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been window slammed by [user.name] ([user.ckey]) for [damage] damage.</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Window slammed [M.name] for [damage] damage.</font>")
|
||||
msg_admin_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) for [damage] damage (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
log_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) for [damage] damage (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
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 ? "<span class='notice'>You have unfastened the window from the frame.</span>" : "<span class='notice'>You have fastened the window to the frame.</span>")
|
||||
else if(reinf && state == 0)
|
||||
anchored = !anchored
|
||||
update_nearby_icons()
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
|
||||
user << (anchored ? "<span class='notice'>You have fastened the frame to the floor.</span>" : "<span class='notice'>You have unfastened the frame from the floor.</span>")
|
||||
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 ? "<span class='notice'>You have fastened the window to the floor.</span>" : "<span class='notice'>You have unfastened the window.</span>")
|
||||
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 ? "<span class='notice'>You have pried the window into the frame.</span>" : "<span class='notice'>You have pried the window out of the frame.</span>")
|
||||
else if(istype(W, /obj/item/weapon/weldingtool) && !anchored && (!state || !reinf))
|
||||
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 100, 1)
|
||||
user << "<span class='notice'>Now disassembling the window...</span>"
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (WT.remove_fuel(0))
|
||||
if(do_after(user,40))
|
||||
if(!user || !src) return
|
||||
visible_message("<span class='notice'>[user] dismantles \the [src].</span>")
|
||||
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("<span class='danger'>\The [user] crushes \the [M] into \the [src]!</span>", \
|
||||
"<span class='danger'>You crush \the [M] into \the [src]!</span>")
|
||||
healthcheck(user)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been window slammed by [user.name] ([user.ckey]) ([gstate]).</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Window slammed [M.name] ([gstate]).</font>")
|
||||
msg_admin_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) ([gstate]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
log_attack("[user.name] ([user.ckey]) window slammed [M.name] ([M.ckey]) ([gstate]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||
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("<span class='warning'>[user] unfastens \the [src] from its frame.</span>", \
|
||||
"<span class='notice'>You unfasten \the [src] from its frame.</span>")
|
||||
d_state = WINDOWUNSECUREFRAME
|
||||
return
|
||||
|
||||
if(WINDOWUNSECUREFRAME)
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
|
||||
user.visible_message("<span class='notice'>[user] fastens \the [src] to its frame.</span>", \
|
||||
"<span class='notice'>You fasten \the [src] to its frame.</span>")
|
||||
d_state = WINDOWSECURE
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
|
||||
user.visible_message("<span class='warning'>[user] pries \the [src] from its frame.</span>", \
|
||||
"<span class='notice'>You pry \the [src] from its frame.</span>")
|
||||
d_state = WINDOWLOOSEFRAME
|
||||
return
|
||||
|
||||
if(WINDOWLOOSEFRAME)
|
||||
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
|
||||
user.visible_message("<span class='warning'>[user] pries \the [src] into its frame.</span>", \
|
||||
"<span class='notice'>You pry \the [src] into its frame.</span>")
|
||||
d_state = WINDOWUNSECUREFRAME
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
|
||||
user.visible_message("<span class='warning'>[user] unfastens \the [src]'s frame from the floor.</span>", \
|
||||
"<span class='notice'>You unfasten \the [src]'s frame from the floor.</span>")
|
||||
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("<span class='warning'>[user] fastens \the [src]'s frame to the floor.</span>", \
|
||||
"<span class='notice'>You fasten \the [src]'s frame to the floor.</span>")
|
||||
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("<span class='warning'>[user] starts disassembling \the [src].</span>", \
|
||||
"<span class='notice'>You start disassembling \the [src].</span>")
|
||||
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("<span class='warning'>[user] disassembles \the [src].</span>", \
|
||||
"<span class='notice'>You disassemble \the [src].</span>")
|
||||
getFromPool(sheettype, get_turf(src), sheetamount)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
||||
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("<span class='[d_state ? "warning":"notice"]'>[user] [d_state ? "un":""]fastens \the [src].</span>", \
|
||||
"<span class='notice'>You [d_state ? "un":""]fasten \the [src].</span>")
|
||||
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("<span class='warning'>[user] starts disassembling \the [src].</span>", \
|
||||
"<span class='notice'>You start disassembling \the [src].</span>")
|
||||
if(do_after(user, 40) && d_state == WINDOWLOOSE) //Ditto above
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
user.visible_message("<span class='warning'>[user] disassembles \the [src].</span>", \
|
||||
"<span class='notice'>You disassemble \the [src].</span>")
|
||||
getFromPool(sheettype, get_turf(src), sheetamount)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
||||
return
|
||||
|
||||
if(W.damtype == BRUTE || W.damtype == BURN)
|
||||
user.delayNextAttack(10)
|
||||
health -= W.force
|
||||
user.visible_message("<span class='warning'>\The [user] hits \the [src] with \the [W].</span>", \
|
||||
"<span class='warning'>You hit \the [src] with \the [W].</span>")
|
||||
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 << "<span class='warning'>Is fastened to the floor, therefore you can't rotate it!</span>"
|
||||
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 << "<span class='warning'>Is fastened to the floor, therefore you can't rotate it!</span>"
|
||||
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
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 176 KiB |
@@ -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 = "<b>Objective #1</b>: 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)
|
||||
|
||||
Reference in New Issue
Block a user