mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 18:11:16 +00:00
Refactors the holodeck to use map templates instead of copy_contents_to, which every maintainer seems to have complaints about. Fixes #41485 because the matches become part of the spawned list created by ssatoms Fixes #54789 because the holodeck area no longer has the NO_TELEPORT flag Fixes #55676 because the map templates cant be changed midround unlike the program copies in the centcom z level Fixes #49318 because the holodeck no longer creates new areas like the original did This pr also changes initTemplateBounds to be a /datum/map_template proc instead of a parsed_map proc. This was mainly so I wouldn't have to duplicate vars between map_template and parsed_map. It's also nice because there's no longer a parsed_map proc inside the map_template file, especially when it didn't need to be a parsed_map proc. The holodeck sims wont take up space in the centcom z level any more (which allows for more possible programs in the future), and map templates are more heavily tested. This is also a chance to future proof the holodeck against bugs. Holodeck also seems more responsive. This should allow for a second custom holodeck in some future ruin as well, although that of course will not be in play for the near future because of the offstation content ban. Also I documented the fuck out of the holodeck
174 lines
4.0 KiB
Plaintext
174 lines
4.0 KiB
Plaintext
/turf/open/floor/holofloor
|
|
icon_state = "floor"
|
|
holodeck_compatible = TRUE
|
|
thermal_conductivity = 0
|
|
flags_1 = NONE
|
|
var/direction = SOUTH
|
|
|
|
/turf/open/floor/holofloor/attackby(obj/item/I, mob/living/user)
|
|
return // HOLOFLOOR DOES NOT GIVE A FUCK
|
|
|
|
/turf/open/floor/holofloor/tool_act(mob/living/user, obj/item/I, tool_type)
|
|
return
|
|
|
|
/turf/open/floor/holofloor/burn_tile()
|
|
return //you can't burn a hologram!
|
|
|
|
/turf/open/floor/holofloor/break_tile()
|
|
return //you can't break a hologram!
|
|
|
|
/turf/open/floor/holofloor/plating
|
|
name = "holodeck projector floor"
|
|
icon_state = "engine"
|
|
|
|
/turf/open/floor/holofloor/chapel
|
|
name = "chapel floor"
|
|
icon_state = "chapel"
|
|
|
|
/turf/open/floor/holofloor/chapel/bottom_left
|
|
direction = WEST
|
|
|
|
/turf/open/floor/holofloor/chapel/top_right
|
|
direction = EAST
|
|
|
|
/turf/open/floor/holofloor/chapel/bottom_right
|
|
|
|
/turf/open/floor/holofloor/chapel/top_left
|
|
direction = NORTH
|
|
|
|
/turf/open/floor/holofloor/chapel/Initialize(mapload)
|
|
. = ..()
|
|
if (direction != SOUTH)
|
|
setDir(direction)
|
|
|
|
/turf/open/floor/holofloor/white
|
|
name = "white floor"
|
|
icon_state = "white"
|
|
|
|
/turf/open/floor/holofloor/plating/burnmix
|
|
name = "burn-mix floor"
|
|
initial_gas_mix = BURNMIX_ATMOS
|
|
|
|
/turf/open/floor/holofloor/grass
|
|
gender = PLURAL
|
|
name = "lush grass"
|
|
icon_state = "grass0"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/grass/Initialize()
|
|
. = ..()
|
|
icon_state = "grass[rand(0,3)]"
|
|
|
|
/turf/open/floor/holofloor/beach
|
|
gender = PLURAL
|
|
name = "sand"
|
|
icon = 'icons/misc/beach.dmi'
|
|
icon_state = "sand"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/beach/coast_t
|
|
gender = NEUTER
|
|
name = "coastline"
|
|
icon_state = "sandwater_t"
|
|
|
|
/turf/open/floor/holofloor/beach/coast_b
|
|
gender = NEUTER
|
|
name = "coastline"
|
|
icon_state = "sandwater_b"
|
|
|
|
/turf/open/floor/holofloor/beach/water
|
|
name = "water"
|
|
icon_state = "water"
|
|
bullet_sizzle = TRUE
|
|
|
|
/turf/open/floor/holofloor/asteroid
|
|
gender = PLURAL
|
|
name = "asteroid sand"
|
|
icon_state = "asteroid"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/asteroid/Initialize()
|
|
icon_state = "asteroid[rand(0, 12)]"
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/basalt
|
|
gender = PLURAL
|
|
name = "basalt"
|
|
icon_state = "basalt0"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/basalt/Initialize()
|
|
. = ..()
|
|
if(prob(15))
|
|
icon_state = "basalt[rand(0, 12)]"
|
|
set_basalt_light(src)
|
|
|
|
/turf/open/floor/holofloor/space
|
|
name = "\proper space"
|
|
icon = 'icons/turf/space.dmi'
|
|
icon_state = "0"
|
|
|
|
/turf/open/floor/holofloor/space/Initialize()
|
|
icon_state = SPACE_ICON_STATE // so realistic
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/hyperspace
|
|
name = "\proper hyperspace"
|
|
icon = 'icons/turf/space.dmi'
|
|
icon_state = "speedspace_ns_1"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/hyperspace/Initialize()
|
|
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/hyperspace/ns/Initialize()
|
|
. = ..()
|
|
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
|
|
|
/turf/open/floor/holofloor/carpet
|
|
name = "carpet"
|
|
desc = "Electrically inviting."
|
|
icon = 'icons/turf/floors/carpet.dmi'
|
|
icon_state = "carpet-255"
|
|
base_icon_state = "carpet"
|
|
floor_tile = /obj/item/stack/tile/carpet
|
|
smoothing_flags = SMOOTH_BITMASK
|
|
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET)
|
|
canSmoothWith = list(SMOOTH_GROUP_CARPET)
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/carpet/Initialize()
|
|
. = ..()
|
|
addtimer(CALLBACK(src, /atom/.proc/update_icon), 1)
|
|
|
|
/turf/open/floor/holofloor/carpet/update_icon()
|
|
. = ..()
|
|
if(intact && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
|
|
QUEUE_SMOOTH(src)
|
|
|
|
/turf/open/floor/holofloor/wood
|
|
icon_state = "wood"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/snow
|
|
gender = PLURAL
|
|
name = "snow"
|
|
desc = "Looks cold."
|
|
icon = 'icons/turf/snow.dmi'
|
|
icon_state = "snow"
|
|
slowdown = 2
|
|
bullet_sizzle = TRUE
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/snow/cold
|
|
initial_gas_mix = "nob=7500;TEMP=2.7"
|
|
|
|
/turf/open/floor/holofloor/dark
|
|
icon_state = "darkfull"
|