Files
Bubberstation/code/modules/holodeck/turfs.dm
Kylerace 98f58208c8 Refactors Holodeck to Use Map Templates, Again! Black Magic OOM Crashing No Longer Included (#55645)
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
2021-01-30 11:56:29 -03:00

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"