Files
Bubberstation/code/modules/holodeck/turfs.dm
SkyratBot b6ffb1e31b [MIRROR] Refactor /turf/var/intact [MDB IGNORE] (#9114)
* Refactor /turf/var/intact (#62331)

Turfs have a variable, intact, which conflates three meanings:

    Determining whether there's something that can be pried out, such as directly with a crowbar or indirectly with a tile stack and a crowbar off-hand.
    Determining whether underfloor pieces are visible.
    Determining whether underfloor pieces can be interacted with - by players with tools, through interaction with effects like chemical acid, or foam.

When plating is hit with a stack of tiles, /turf/open/floor/attackby checks whether the turf is intact, and if so, ends the attack chain regardless of whether or not the attempt to hotswap a turf (with a crowbar) is successful or not. However, turfs which want the underfloor to be visible - such as catwalks and glass - set the intact variable to FALSE, and so can be repeatedly placed over one another, as if they were the first tile to be placed over the plating.

This refactors /turf/var/intact into two distinct variables:

    /turf/var/overfloor_placed, for whether or not there is something over plating.
    /turf/var/underfloor_visible, for whether or not the various underfloor pieces should be invisible, visible, or both visible and interactable.

All references to /turf/var/intact have been replaced with an equivalent overfloor_placed or underfloor_visible reference, depending on which check is appropriate. underfloor_accessibility can take one of UNDERFLOOR_HIDDEN, UNDERFLOOR_VISIBLE, or UNDERFLOOR_INTERACTABLE. This prevents cases such as acid foam or tools phasing through glass floors to affect the underfloor pieces underneath, and covers all kinds of unusual, not-wiring-visiblity usage such as Holodeck completeness, Revenant interaction, or station integrity checking.

* Refactor /turf/var/intact

* Thank

Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-10-30 00:19:21 +13:00

174 lines
4.1 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(mapload)
. = ..()
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(mapload)
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(mapload)
. = ..()
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(mapload)
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(mapload)
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
. = ..()
/turf/open/floor/holofloor/hyperspace/ns/Initialize(mapload)
. = ..()
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(mapload)
. = ..()
addtimer(CALLBACK(src, /atom/.proc/update_appearance), 1)
/turf/open/floor/holofloor/carpet/update_icon(updates=ALL)
. = ..()
if((updates & UPDATE_SMOOTHING) && overfloor_placed && 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"