[MIRROR] Reduce Lists Memory usage, update CI (#10929)

This commit is contained in:
Cameron Lennox
2025-05-19 15:00:24 -04:00
committed by GitHub
parent f4895e74e9
commit 209934afa8
18 changed files with 122 additions and 201 deletions

View File

@@ -0,0 +1,51 @@
# This action attempts to restore BYOND from a cache, or to install it otherwise.
name: Restore or Install BYOND
description: Attempts to restore a specified BYOND version from cache; if it can't, it installs it.
inputs:
major:
description: "The major BYOND version to install. Defaults to the BYOND_MAJOR specified in `dependencies.sh`."
required: false
type: string
minor:
description: "The minor BYOND version to install. Defaults to the BYOND_MINOR specified in `dependencies.sh`."
required: false
type: string
runs:
using: composite
steps:
- name: Configure BYOND version from inputs
if: ${{ inputs.major }}
shell: bash
run: |
echo "BYOND_MAJOR=${{ inputs.major }}" >> $GITHUB_ENV
echo "BYOND_MINOR=${{ inputs.minor }}" >> $GITHUB_ENV
- name: Configure BYOND version from dependencies.sh
if: ${{ !inputs.major }}
shell: bash
run: |
source dependencies.sh
echo "BYOND_MAJOR=$BYOND_MAJOR" >> $GITHUB_ENV
echo "BYOND_MINOR=$BYOND_MINOR" >> $GITHUB_ENV
# The use of `actions/cache/restore` and `actions/cache/save` here is deliberate, as we want to
# save the BYOND install to a cache as early as possible. If we used just `actions/cache`, it
# would only attempt to save the cache at the end of a job. This ensures that if a workflow run
# is cancelled, we already have a cache to restore from.
- name: Restore BYOND cache
id: restore_byond_cache
uses: actions/cache/restore@v4
with:
path: ~/BYOND
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
- name: Install BYOND
if: ${{ !steps.restore_byond_cache.outputs.cache-hit }}
shell: bash
run: bash tools/ci/install_byond.sh
- name: Save BYOND cache
if: ${{ !steps.restore_byond_cache.outputs.cache-hit }}
uses: actions/cache/save@v4
with:
path: ~/BYOND
key: ${{ steps.restore_byond_cache.outputs.cache-primary-key }}

26
.github/actions/setup_node/action.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
# This action is a wrapper around `actions/setup-node`, to use the version specified in
# `dependencies.sh`.
name: Setup Node
description: Install Node using the version specified in `dependencies.sh`; additionally, restores the Yarn cache if one exists
inputs:
restore-yarn-cache:
description: 'If `true`, restores the Yarn cache alongside installing node.'
required: false
type: boolean
default: false
runs:
using: composite
steps:
- name: Configure Node version
shell: bash
run: |
source dependencies.sh
echo "NODE_VERSION_REQUIRED=$NODE_VERSION_LTS" >> $GITHUB_ENV
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION_REQUIRED }}
cache: ${{ fromJSON(inputs.restore-yarn-cache) && 'yarn' || '' }}
cache-dependency-path: ${{ fromJSON(inputs.restore-yarn-cache) && 'tgui/yarn.lock' || '' }}

View File

@@ -20,23 +20,10 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
# Caches # Caches
- name: Ensure +x on CI directory - name: Setup Node
run: | uses: ./.github/actions/setup_node
chmod -R +x ./tools/ci
- name: Restore Yarn cache
uses: actions/cache@v4
with: with:
path: tgui/.yarn/cache restore-yarn-cache: true
key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Restore Node cache
uses: actions/cache@v4
with:
path: ~/.nvm
key: ${{ runner.os }}-node-${{ hashFiles('dependencies.sh') }}
restore-keys: |
${{ runner.os }}-node-
- name: Restore Bootstrap cache - name: Restore Bootstrap cache
uses: actions/cache@v4 uses: actions/cache@v4
with: with:
@@ -60,7 +47,6 @@ jobs:
- name: Install Tools - name: Install Tools
run: | run: |
pip3 install setuptools pip3 install setuptools
bash tools/ci/install_build_deps.sh
bash tools/ci/install_ripgrep.sh bash tools/ci/install_ripgrep.sh
bash tools/ci/install_spaceman_dmm.sh dmm-tools bash tools/ci/install_spaceman_dmm.sh dmm-tools
tools/bootstrap/python -c '' tools/bootstrap/python -c ''
@@ -139,24 +125,21 @@ jobs:
- name: Ensure +x on CI directory - name: Ensure +x on CI directory
run: | run: |
chmod -R +x ./tools/ci chmod -R +x ./tools/ci
- name: Restore BYOND Cache - name: Restore BYOND from Cache
uses: actions/cache@v4 uses: ./.github/actions/restore_or_install_byond
with: with:
path: $HOME/byond major: ${{ inputs.major }}
key: ${{ runner.os }}-byond minor: ${{ inputs.minor }}
- name: Install RUST_G Dependencies - name: Install RUST_G Dependencies
run: | run: |
sudo dpkg --add-architecture i386 sudo dpkg --add-architecture i386
sudo apt update || true sudo apt update || true
sudo apt install gcc-multilib
sudo apt install zlib1g-dev:i386 sudo apt install zlib1g-dev:i386
ldd librust_g.so ldd librust_g.so
ldd libbapi_dmm_reader.so ldd libbapi_dmm_reader.so
ldd libverdigris.so ldd libverdigris.so
- name: Unit Tests - name: Unit Tests
run: | run: tools/ci/compile_and_run.sh
tools/ci/install_byond.sh
tools/ci/compile_and_run.sh
env: env:
EXTRA_ARGS: "-DUNIT_TEST -D${{ matrix.map }}" EXTRA_ARGS: "-DUNIT_TEST -D${{ matrix.map }}"
RUN: "1" RUN: "1"

View File

@@ -18,7 +18,7 @@
return return
var/obj/screen/alert/alert var/obj/screen/alert/alert
if(alerts[category]) if(LAZYACCESS(alerts, category))
alert = alerts[category] alert = alerts[category]
if(new_master && new_master != alert.master) if(new_master && new_master != alert.master)
WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]") WARNING("[src] threw alert [category] with new_master [new_master] while already having that alert with master [alert.master]")
@@ -47,7 +47,7 @@
alert.icon_state = "[initial(alert.icon_state)][severity]" alert.icon_state = "[initial(alert.icon_state)][severity]"
alert.severity = severity alert.severity = severity
alerts[category] = alert LAZYSET(alerts, category, alert)
if(client && hud_used) if(client && hud_used)
hud_used.reorganize_alerts() hud_used.reorganize_alerts()
alert.transform = matrix(32, 6, MATRIX_TRANSLATE) alert.transform = matrix(32, 6, MATRIX_TRANSLATE)
@@ -59,16 +59,16 @@
return alert return alert
/mob/proc/alert_timeout(obj/screen/alert/alert, category) /mob/proc/alert_timeout(obj/screen/alert/alert, category)
if(alert.timeout && alerts[category] == alert && world.time >= alert.timeout) if(alert.timeout && LAZYACCESS(alerts, category) == alert && world.time >= alert.timeout)
clear_alert(category) clear_alert(category)
// Proc to clear an existing alert. // Proc to clear an existing alert.
/mob/proc/clear_alert(category) /mob/proc/clear_alert(category)
var/obj/screen/alert/alert = alerts[category] var/obj/screen/alert/alert = LAZYACCESS(alerts, category)
if(!alert) if(!alert)
return 0 return 0
alerts -= category LAZYREMOVE(alerts, category)
if(client && hud_used) if(client && hud_used)
hud_used.reorganize_alerts() hud_used.reorganize_alerts()
client.screen -= alert client.screen -= alert
@@ -434,10 +434,10 @@ so as to remain in compliance with the most up-to-date laws."
/datum/hud/proc/reorganize_alerts() /datum/hud/proc/reorganize_alerts()
var/list/alerts = mymob.alerts var/list/alerts = mymob.alerts
if(!hud_shown) if(!hud_shown)
for(var/i = 1, i <= alerts.len, i++) for(var/i in 1 to length(alerts))
mymob.client.screen -= alerts[alerts[i]] mymob?.client?.screen -= alerts[alerts[i]]
return 1 return TRUE
for(var/i = 1, i <= alerts.len, i++) for(var/i in 1 to length(alerts))
var/obj/screen/alert/alert = alerts[alerts[i]] var/obj/screen/alert/alert = alerts[alerts[i]]
if(alert.icon_state in cached_icon_states(ui_style)) if(alert.icon_state in cached_icon_states(ui_style))
@@ -467,7 +467,7 @@ so as to remain in compliance with the most up-to-date laws."
return 1 return 1
/mob /mob
var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly var/list/alerts = null // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly
/obj/screen/alert/Click(location, control, params) /obj/screen/alert/Click(location, control, params)
if(!usr || !usr.client) if(!usr || !usr.client)

View File

@@ -1,15 +1,16 @@
/mob /mob
var/list/screens = list() var/list/screens = null
/mob/proc/set_fullscreen(condition, screen_name, screen_type, arg) /mob/proc/set_fullscreen(condition, screen_name, screen_type, arg)
condition ? overlay_fullscreen(screen_name, screen_type, arg) : clear_fullscreen(screen_name) condition ? overlay_fullscreen(screen_name, screen_type, arg) : clear_fullscreen(screen_name)
/mob/proc/overlay_fullscreen(category, type, severity) /mob/proc/overlay_fullscreen(category, type, severity)
var/obj/screen/fullscreen/screen = screens[category] var/obj/screen/fullscreen/screen = LAZYACCESS(screens, category)
if (!screen || screen.type != type) if (!screen || screen.type != type)
// needs to be recreated // needs to be recreated
clear_fullscreen(category, FALSE) clear_fullscreen(category, FALSE)
screens[category] = screen = new type() screen = new type()
LAZYSET(screens, category, screen)
else if ((!severity || severity == screen.severity) && (!client || screen.screen_loc != "CENTER-7,CENTER-7" || screen.view == client.view)) else if ((!severity || severity == screen.severity) && (!client || screen.screen_loc != "CENTER-7,CENTER-7" || screen.view == client.view))
// doesn't need to be updated // doesn't need to be updated
return screen return screen
@@ -23,11 +24,11 @@
return screen return screen
/mob/proc/clear_fullscreen(category, animated = 10) /mob/proc/clear_fullscreen(category, animated = 10)
var/obj/screen/fullscreen/screen = screens[category] var/obj/screen/fullscreen/screen = LAZYACCESS(screens, category)
if(!screen) if(!screen)
return return
screens -= category LAZYREMOVE(screens, category)
if(animated) if(animated)
spawn(0) spawn(0)

View File

@@ -38,15 +38,13 @@
var/affected_by_emp_until = 0 var/affected_by_emp_until = 0
var/client_huds = list() var/client_huds = null
var/list/camera_computers_using_this = list()
/obj/machinery/camera/Initialize(mapload) /obj/machinery/camera/Initialize(mapload)
wires = new(src) wires = new(src)
assembly = new(src) assembly = new(src)
assembly.state = 4 assembly.state = 4
client_huds |= GLOB.global_hud.whitense LAZYOR(client_huds, GLOB.global_hud.whitense)
/* // Use this to look for cameras that have the same c_tag. /* // Use this to look for cameras that have the same c_tag.
for(var/obj/machinery/camera/C in cameranet.cameras) for(var/obj/machinery/camera/C in cameranet.cameras)

View File

@@ -1,5 +1,5 @@
/obj/machinery/camera /obj/machinery/camera
var/list/motionTargets = list() var/list/motionTargets = null
var/detectTime = 0 var/detectTime = 0
var/area/ai_monitored/area_motion = null var/area/ai_monitored/area_motion = null
var/alarm_delay = 100 // Don't forget, there's another 10 seconds in queueAlarm() var/alarm_delay = 100 // Don't forget, there's another 10 seconds in queueAlarm()
@@ -29,13 +29,13 @@
if (detectTime == 0) if (detectTime == 0)
detectTime = world.time // start the clock detectTime = world.time // start the clock
if (!(target in motionTargets)) if (!(target in motionTargets))
motionTargets += target LAZYADD(motionTargets, target)
return 1 return 1
/obj/machinery/camera/proc/lostTarget(var/mob/target) /obj/machinery/camera/proc/lostTarget(var/mob/target)
if (target in motionTargets) if (target in motionTargets)
motionTargets -= target LAZYREMOVE(motionTargets, target)
if (motionTargets.len == 0) if (LAZYLEN(motionTargets) == 0)
cancelAlarm() cancelAlarm()
/obj/machinery/camera/proc/cancelAlarm() /obj/machinery/camera/proc/cancelAlarm()

View File

@@ -112,7 +112,7 @@
var/climbing_delay = 1 //If rock_climbing, lower better. var/climbing_delay = 1 //If rock_climbing, lower better.
var/digestable = TRUE var/digestable = TRUE
var/item_tf_spawn_allowed = FALSE var/item_tf_spawn_allowed = FALSE
var/list/ckeys_allowed_itemspawn = list() var/list/ckeys_allowed_itemspawn = null
/obj/item/Initialize(mapload) /obj/item/Initialize(mapload)
. = ..() . = ..()

View File

@@ -49,16 +49,6 @@
if(!T) if(!T)
return PROXIMITY_OFF_CAMERANET return PROXIMITY_OFF_CAMERANET
// Security is also a concern, so we need to see if any cameras are in use.
// Note that this will trigger upon the security console being used, regardless if someone is actually watching,
// because there isn't a nice way to test if someone is actually looking. Probably better that way too.
var/list/our_local_area = range(range_alert, T)
for(var/obj/machinery/camera/C in our_local_area)
if(C.camera_computers_using_this.len) // Only check cameras actively being used.
var/list/their_local_area = C.can_see(range_alert)
if(T in their_local_area)
return PROXIMITY_ON_SCREEN
// Now for the somewhat harder AI cameranet checks. // Now for the somewhat harder AI cameranet checks.
// Check if we are even on the cameranet. // Check if we are even on the cameranet.

View File

@@ -451,8 +451,8 @@ var/global/list/obj/item/communicator/all_communicators = list() //Don't change
/obj/machinery/camera/communicator/Initialize(mapload) /obj/machinery/camera/communicator/Initialize(mapload)
. = ..() . = ..()
client_huds |= GLOB.global_hud.whitense LAZYOR(client_huds, GLOB.global_hud.whitense)
client_huds |= GLOB.global_hud.darkMask LAZYOR(client_huds, GLOB.global_hud.darkMask)
//It's the 26th century. We should have smart watches by now. //It's the 26th century. We should have smart watches by now.
/obj/item/communicator/watch /obj/item/communicator/watch

View File

@@ -44,10 +44,8 @@ var/list/flooring_types
var/flags var/flags
var/can_paint var/can_paint
var/can_engrave = FALSE var/can_engrave = FALSE
var/list/footstep_sounds = list() // key=species name, value = list of sounds,
// For instance, footstep_sounds = list("key" = list(sound.ogg))
var/is_plating = FALSE var/is_plating = FALSE
var/list/flooring_cache = list() // Cached overlays for our edges and corners and junk var/list/flooring_cache = null // Cached overlays for our edges and corners and junk
//Plating types, can be overridden //Plating types, can be overridden
var/plating_type = null var/plating_type = null
@@ -73,8 +71,8 @@ var/list/flooring_types
//How we smooth with other flooring //How we smooth with other flooring
var/floor_smooth = SMOOTH_NONE var/floor_smooth = SMOOTH_NONE
var/list/flooring_whitelist = list() //Smooth with nothing except the contents of this list var/list/flooring_whitelist = null //Smooth with nothing except the contents of this list
var/list/flooring_blacklist = list() //Smooth with everything except the contents of this list var/list/flooring_blacklist = null //Smooth with everything except the contents of this list
//How we smooth with walls //How we smooth with walls
var/wall_smooth = SMOOTH_NONE var/wall_smooth = SMOOTH_NONE
@@ -112,8 +110,8 @@ var/list/flooring_types
*/ */
var/smooth_movable_atom = SMOOTH_NONE var/smooth_movable_atom = SMOOTH_NONE
var/list/movable_atom_whitelist = list() var/list/movable_atom_whitelist = null
var/list/movable_atom_blacklist = list() var/list/movable_atom_blacklist = null
var/check_season = FALSE //VOREStation Addition var/check_season = FALSE //VOREStation Addition
@@ -121,11 +119,11 @@ var/list/flooring_types
return plating_type return plating_type
/decl/flooring/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0, var/layer = BUILTIN_DECAL_LAYER) /decl/flooring/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0, var/layer = BUILTIN_DECAL_LAYER)
if(!flooring_cache[cache_key]) if(!LAZYACCESS(flooring_cache, cache_key))
var/image/I = image(icon = icon, icon_state = icon_base, dir = icon_dir) var/image/I = image(icon = icon, icon_state = icon_base, dir = icon_dir)
I.layer = layer I.layer = layer
flooring_cache[cache_key] = I LAZYSET(flooring_cache, cache_key, I)
return flooring_cache[cache_key] return LAZYACCESS(flooring_cache, cache_key)
/decl/flooring/grass /decl/flooring/grass
name = "grass" name = "grass"
@@ -136,11 +134,6 @@ var/list/flooring_types
damage_temperature = T0C+80 damage_temperature = T0C+80
flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_SHOVEL flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_SHOVEL
build_type = /obj/item/stack/tile/grass build_type = /obj/item/stack/tile/grass
footstep_sounds = list("human" = list(
'sound/effects/footstep/grass1.ogg',
'sound/effects/footstep/grass2.ogg',
'sound/effects/footstep/grass3.ogg',
'sound/effects/footstep/grass4.ogg'))
/decl/flooring/grass/sif // Subtype for Sif's grass. /decl/flooring/grass/sif // Subtype for Sif's grass.
name = "growth" name = "growth"
@@ -148,16 +141,7 @@ var/list/flooring_types
flags = 0 flags = 0
icon = 'icons/turf/outdoors.dmi' icon = 'icons/turf/outdoors.dmi'
icon_base = "grass_sif" icon_base = "grass_sif"
build_type = /obj/item/stack/tile/grass/sif build_type = null
has_base_range = 1
/decl/flooring/grass/sif/forest
name = "thick growth"
desc = "A natural moss that has adapted to the sheer cold climate."
flags = TURF_REMOVE_SHOVEL
icon = 'icons/turf/outdoors.dmi'
icon_base = "grass_sif_dark"
build_type = /obj/item/stack/tile/grass/sif/forest
has_base_range = 1 has_base_range = 1
//CHOMPedit: sif/forest decl. If this ends up upstream just accept the upstream version. //CHOMPedit: sif/forest decl. If this ends up upstream just accept the upstream version.
@@ -176,22 +160,12 @@ var/list/flooring_types
desc = "Water is wet, gosh, who knew!" desc = "Water is wet, gosh, who knew!"
icon = 'icons/turf/outdoors.dmi' icon = 'icons/turf/outdoors.dmi'
icon_base = "seashallow" icon_base = "seashallow"
footstep_sounds = list("human" = list(
'sound/effects/footstep/water1.ogg',
'sound/effects/footstep/water2.ogg',
'sound/effects/footstep/water3.ogg',
'sound/effects/footstep/water4.ogg'))
/decl/flooring/sand /decl/flooring/sand
name = "sand" name = "sand"
desc = "I don't like sand. It's coarse and rough and irritating and it gets everywhere." desc = "I don't like sand. It's coarse and rough and irritating and it gets everywhere."
icon = 'icons/misc/beach.dmi' icon = 'icons/misc/beach.dmi'
icon_base = "sand" icon_base = "sand"
footstep_sounds = list("human" = list(
'sound/effects/footstep/HeavySand1.ogg',
'sound/effects/footstep/HeavySand2.ogg',
'sound/effects/footstep/HeavySand3.ogg',
'sound/effects/footstep/HeavySand4.ogg'))
/decl/flooring/sand/desert // Subtype of sand, desert. /decl/flooring/sand/desert // Subtype of sand, desert.
name = "desert" name = "desert"
@@ -204,22 +178,12 @@ var/list/flooring_types
desc = "Wet and fragrant mud, bane of the freshly mopped floor." desc = "Wet and fragrant mud, bane of the freshly mopped floor."
icon = 'icons/turf/outdoors.dmi' icon = 'icons/turf/outdoors.dmi'
icon_base = "mud_dark" icon_base = "mud_dark"
footstep_sounds = list("human" = list(
'sound/effects/footstep/mud1.ogg',
'sound/effects/footstep/mud2.ogg',
'sound/effects/footstep/mud3.ogg',
'sound/effects/footstep/mud4.ogg'))
/decl/flooring/rock /decl/flooring/rock
name = "rocks" name = "rocks"
desc = "Hard as a rock." desc = "Hard as a rock."
icon = 'icons/turf/outdoors.dmi' icon = 'icons/turf/outdoors.dmi'
icon_base = "rock" icon_base = "rock"
footstep_sounds = list("human" = list(
'sound/effects/footstep/LightStone1.ogg',
'sound/effects/footstep/LightStone2.ogg',
'sound/effects/footstep/LightStone3.ogg',
'sound/effects/footstep/LightStone4.ogg'))
/decl/flooring/asteroid /decl/flooring/asteroid
name = "coarse sand" name = "coarse sand"
@@ -228,12 +192,6 @@ var/list/flooring_types
icon_base = "asteroid" icon_base = "asteroid"
flags = TURF_REMOVE_SHOVEL | TURF_ACID_IMMUNE flags = TURF_REMOVE_SHOVEL | TURF_ACID_IMMUNE
build_type = null build_type = null
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg'))
/decl/flooring/dirt /decl/flooring/dirt
name = "soil" name = "soil"
@@ -242,28 +200,12 @@ var/list/flooring_types
icon_base = "dirt-dark" icon_base = "dirt-dark"
flags = TURF_REMOVE_SHOVEL flags = TURF_REMOVE_SHOVEL
build_type = null build_type = null
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg',
'sound/effects/footstep/MedDirt1.ogg',
'sound/effects/footstep/MedDirt2.ogg',
'sound/effects/footstep/MedDirt3.ogg',
'sound/effects/footstep/MedDirt4.ogg',))
/decl/flooring/snow /decl/flooring/snow
name = "snow" name = "snow"
desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is." desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is."
icon = 'icons/turf/outdoors.dmi' icon = 'icons/turf/outdoors.dmi'
icon_base = "snow" icon_base = "snow"
footstep_sounds = list("human" = list(
'sound/effects/footstep/snow1.ogg',
'sound/effects/footstep/snow2.ogg',
'sound/effects/footstep/snow3.ogg',
'sound/effects/footstep/snow4.ogg',
'sound/effects/footstep/snow5.ogg'))
/decl/flooring/snow/fake /decl/flooring/snow/fake
desc = "A coating of fake snow, looks surprisingly realistic, though not as cold as the real thing." desc = "A coating of fake snow, looks surprisingly realistic, though not as cold as the real thing."
@@ -305,12 +247,6 @@ var/list/flooring_types
can_paint = TRUE //ChompEDIT, allow painting carpets can_paint = TRUE //ChompEDIT, allow painting carpets
damage_temperature = T0C+200 damage_temperature = T0C+200
flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_CROWBAR | TURF_CAN_BURN flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_CROWBAR | TURF_CAN_BURN
footstep_sounds = list("human" = list(
'sound/effects/footstep/carpet1.ogg',
'sound/effects/footstep/carpet2.ogg',
'sound/effects/footstep/carpet3.ogg',
'sound/effects/footstep/carpet4.ogg',
'sound/effects/footstep/carpet5.ogg'))
/decl/flooring/carpet/bcarpet /decl/flooring/carpet/bcarpet
name = "black carpet" name = "black carpet"
@@ -407,12 +343,6 @@ var/list/flooring_types
build_type = /obj/item/stack/tile/floor build_type = /obj/item/stack/tile/floor
can_paint = 1 can_paint = 1
can_engrave = TRUE can_engrave = TRUE
footstep_sounds = list("human" = list(
'sound/effects/footstep/floor1.ogg',
'sound/effects/footstep/floor2.ogg',
'sound/effects/footstep/floor3.ogg',
'sound/effects/footstep/floor4.ogg',
'sound/effects/footstep/floor5.ogg'))
/decl/flooring/tiling/tech /decl/flooring/tiling/tech
desc = "Metal floor tiles with a corrugated anti-slip texture." desc = "Metal floor tiles with a corrugated anti-slip texture."
@@ -550,12 +480,6 @@ var/list/flooring_types
descriptor = "planks" descriptor = "planks"
build_type = /obj/item/stack/tile/wood build_type = /obj/item/stack/tile/wood
flags = TURF_CAN_BREAK | TURF_REMOVE_CROWBAR | TURF_REMOVE_SCREWDRIVER flags = TURF_CAN_BREAK | TURF_REMOVE_CROWBAR | TURF_REMOVE_SCREWDRIVER
footstep_sounds = list("human" = list(
'sound/effects/footstep/wood1.ogg',
'sound/effects/footstep/wood2.ogg',
'sound/effects/footstep/wood3.ogg',
'sound/effects/footstep/wood4.ogg',
'sound/effects/footstep/wood5.ogg'))
/decl/flooring/wood/sif /decl/flooring/wood/sif
desc = "Polished wood planks made from sivian wood." desc = "Polished wood planks made from sivian wood."
@@ -600,12 +524,6 @@ var/list/flooring_types
apply_thermal_conductivity = 0.025 apply_thermal_conductivity = 0.025
apply_heat_capacity = 325000 apply_heat_capacity = 325000
can_paint = 1 can_paint = 1
footstep_sounds = list("human" = list(
'sound/effects/footstep/hull1.ogg',
'sound/effects/footstep/hull2.ogg',
'sound/effects/footstep/hull3.ogg',
'sound/effects/footstep/hull4.ogg',
'sound/effects/footstep/hull5.ogg'))
/decl/flooring/reinforced/circuit /decl/flooring/reinforced/circuit
name = "processing strata" name = "processing strata"
@@ -636,10 +554,6 @@ var/list/flooring_types
icon_base = "lava" icon_base = "lava"
is_plating = TRUE is_plating = TRUE
flags = TURF_ACID_IMMUNE flags = TURF_ACID_IMMUNE
footstep_sounds = list("human" = list(
'sound/effects/footstep/lava1.ogg',
'sound/effects/footstep/lava2.ogg',
'sound/effects/footstep/lava3.ogg'))
/decl/flooring/concrete /decl/flooring/concrete
name = "concrete" name = "concrete"

View File

@@ -17,12 +17,6 @@
desc = "This slick flesh ripples and squishes under your touch" desc = "This slick flesh ripples and squishes under your touch"
icon = 'icons/turf/stomach_vr.dmi' icon = 'icons/turf/stomach_vr.dmi'
icon_base = "flesh_floor" icon_base = "flesh_floor"
footstep_sounds = list("human" = list(
'sound/effects/footstep/mud1.ogg',
'sound/effects/footstep/mud2.ogg',
'sound/effects/footstep/mud3.ogg',
'sound/effects/footstep/mud4.ogg'
))
/decl/flooring/grass/outdoors /decl/flooring/grass/outdoors
flags = 0 flags = 0
@@ -80,12 +74,6 @@
plating_type = /decl/flooring/eris_plating/under plating_type = /decl/flooring/eris_plating/under
can_paint = 1 can_paint = 1
can_engrave = TRUE can_engrave = TRUE
footstep_sounds = list("human" = list(
'sound/effects/footstep/floor1.ogg',
'sound/effects/footstep/floor2.ogg',
'sound/effects/footstep/floor3.ogg',
'sound/effects/footstep/floor4.ogg',
'sound/effects/footstep/floor5.ogg'))
/turf/simulated/floor/tiled/milspec /turf/simulated/floor/tiled/milspec
name = "milspec floor" name = "milspec floor"

View File

@@ -1,5 +1,3 @@
var/list/flooring_cache = list()
var/image/no_ceiling_image = null var/image/no_ceiling_image = null
/hook/startup/proc/setup_no_ceiling_image() /hook/startup/proc/setup_no_ceiling_image()
@@ -182,7 +180,7 @@ var/image/no_ceiling_image = null
break break
else if(floor_smooth == SMOOTH_BLACKLIST) else if(floor_smooth == SMOOTH_BLACKLIST)
is_linked = TRUE //Default to true for the blacklist, then make it false if a match comes up is_linked = TRUE //Default to true for the blacklist, then make it false if a match comes up
for (var/v in flooring_whitelist) for (var/v in flooring_blacklist)
if (istype(t.flooring, v)) if (istype(t.flooring, v))
//Found a match on the list //Found a match on the list
is_linked = FALSE is_linked = FALSE
@@ -278,10 +276,3 @@ var/image/no_ceiling_image = null
is_linked = FALSE is_linked = FALSE
return is_linked return is_linked
/turf/simulated/floor/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0)
if(!flooring_cache[cache_key])
var/image/I = image(icon = flooring.icon, icon_state = icon_base, dir = icon_dir)
I.layer = layer
flooring_cache[cache_key] = I
return flooring_cache[cache_key]

View File

@@ -1014,7 +1014,6 @@
health = 100 health = 100
floor_smooth = SMOOTH_BLACKLIST floor_smooth = SMOOTH_BLACKLIST
flooring_blacklist = list(/decl/flooring/reinforced/plating/under,/decl/flooring/reinforced/plating/hull) //Smooth with everything except the contents of this list
smooth_movable_atom = SMOOTH_GREYLIST smooth_movable_atom = SMOOTH_GREYLIST
movable_atom_blacklist = list(list(/obj, list("density" = TRUE, "anchored" = TRUE), 1)) movable_atom_blacklist = list(list(/obj, list("density" = TRUE, "anchored" = TRUE), 1))
movable_atom_whitelist = list(list(/obj/machinery/door/airlock, list(), 2)) movable_atom_whitelist = list(list(/obj/machinery/door/airlock, list(), 2))

View File

@@ -11,16 +11,6 @@
desc = "Red and gritty." desc = "Red and gritty."
icon = 'icons/turf/flooring/ironsand_vr.dmi' icon = 'icons/turf/flooring/ironsand_vr.dmi'
icon_base = "ironsand1" icon_base = "ironsand1"
footstep_sounds = list("human" = list(
'sound/effects/footstep/asteroid1.ogg',
'sound/effects/footstep/asteroid2.ogg',
'sound/effects/footstep/asteroid3.ogg',
'sound/effects/footstep/asteroid4.ogg',
'sound/effects/footstep/asteroid5.ogg',
'sound/effects/footstep/MedDirt1.ogg',
'sound/effects/footstep/MedDirt2.ogg',
'sound/effects/footstep/MedDirt3.ogg',
'sound/effects/footstep/MedDirt4.ogg'))
/turf/simulated/floor/outdoors/ironsand/Initialize(mapload) /turf/simulated/floor/outdoors/ironsand/Initialize(mapload)
var/possiblesands = list( var/possiblesands = list(

View File

@@ -66,7 +66,3 @@
desc = "Deep Ocean Water" desc = "Deep Ocean Water"
icon = 'icons/misc/beach.dmi' icon = 'icons/misc/beach.dmi'
icon_base = "seadeep" icon_base = "seadeep"
footstep_sounds = list("human" = list(
'sound/effects/footstep/bubbles3.ogg', // No I don't get why it's named 3/4/5 either. Whatever.
'sound/effects/footstep/bubbles4.ogg',
'sound/effects/footstep/bubbles5.ogg'))

View File

@@ -1427,7 +1427,8 @@
if(istype(client.eye,/obj/machinery/camera)) if(istype(client.eye,/obj/machinery/camera))
var/obj/machinery/camera/cam = client.eye var/obj/machinery/camera/cam = client.eye
client.screen |= cam.client_huds if(LAZYLEN(cam.client_huds))
client.screen |= cam.client_huds
if(stat == DEAD) //Dead if(stat == DEAD) //Dead
if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO if(!druggy) see_invisible = SEE_INVISIBLE_LEVEL_TWO

View File

@@ -519,13 +519,6 @@
can_paint = TRUE can_paint = TRUE
footstep_sounds = list("human" = list(
'sound/effects/footstep/carpet1.ogg',
'sound/effects/footstep/carpet2.ogg',
'sound/effects/footstep/carpet3.ogg',
'sound/effects/footstep/carpet4.ogg',
'sound/effects/footstep/carpet5.ogg'))
/obj/structure/flora/tree/fur /obj/structure/flora/tree/fur
name = "tall fur" name = "tall fur"
desc = "Tall stalks of fur block your path! Someone needs a trim!" desc = "Tall stalks of fur block your path! Someone needs a trim!"