Big Fucking Shelter Capsule Update... TWO!!! (#18634)

* adds alt luxury capsule

* adds even MORE capsules

* Better privacy features for pre-existing pods

* adds triple casino deck to recroom

* Makes Theta a bit better

* MORE PODS RAHHH

* Makes polarized windows block light when tinted

* ehhh nvm to this one

* Adds shelter deploy preview on capsule activation

* organizes shelter maps into size-based subfolders

* Shows where shelter doors will be in capsule preview

* adds capsules to vendors/lathes + vendor price adjustment

* wait that wasn't gonna be able to toggle the door bolts lol

* oops, thank you integration test for catching that

* fixes edge-case bug where capsules could deploy beyond the edges of the map

* fixes comment wording oops

* wait oops messed up the door locations here

* Adds luxury features to more pre-existing pods

* Wait oops that should be using the lux cabin windows

* adds door indicators to tesla capsule too cuz why not

---------

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
Ryumi
2025-10-26 17:29:09 -04:00
committed by GitHub
co-authored by Cameron Lennox
parent 65577b02e6
commit 26d5811d05
41 changed files with 2118 additions and 121 deletions
+11 -1
View File
@@ -106,6 +106,9 @@
qdel(src)
return
/obj/structure/window/proc/can_glasspassers_pass()
PROTECTED_PROC(TRUE)
return TRUE
/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
@@ -135,7 +138,7 @@
/obj/structure/window/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
return TRUE
return can_glasspassers_pass()
if(is_fulltile())
return FALSE //full tile window, you can't move into it!
if(get_dir(mover, target) == GLOB.reverse_dir[dir]) // From elsewhere to here, can't move against our dir
@@ -583,6 +586,11 @@
fulltile = TRUE
flags = NONE
/obj/structure/window/reinforced/polarized/can_glasspassers_pass()
// If the windows are currently tinted, they're blocking light from passing.
// So, they should block stuff like lasers at that time.
return opacity
/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/multitool) && !anchored) // Only allow programming if unanchored!
var/obj/item/multitool/MT = W
@@ -606,9 +614,11 @@
if(opacity)
animate(src, color="#FFFFFF", time=5)
set_opacity(0)
AddElement(/datum/element/light_blocking)
else
animate(src, color="#222222", time=5)
set_opacity(1)
RemoveElement(/datum/element/light_blocking)
var/turf/T = get_turf(src)
T.recalculate_directional_opacity()