From 29e29b637543084e743f13ca85f6ff309fc592bd Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 16 Sep 2022 01:57:33 +0200 Subject: [PATCH] [MIRROR] Save 2.2s minimum (with zero ruins, likely a good bit more in production) of atom init time [MDB IGNORE] (#15967) * Save 2.2s minimum (with zero ruins, likely a good bit more in production) of atom init time (#69564) Pre-sort smoothing_groups and canSmoothWith Without any ruins, these sorts were taking more than 0.6s, and the bulk of the runtime cost of sortTim during init time. This only happens on init and they are never changed apart from that, so pre-sorts everything and adds a unit test (in the form of #ifdef UNIT_TESTS, because you can't initial a list) to ensure that they are proper. Keep visibilityChanged() to mapload only for turf/Initialize Saves about 0.4s worst case scenario (e.g. with no ruins). Very expensive code (175k loop iterations) for 0 side effects. Space areas now have the fullbright overlay, not the space turfs Saves about 0.8s worst case scenario. Seems to work fine with starlight. Remove is_station_level check for window spawners assigning RCD memory. Saves about 0.3s worst case scenario. The logic for this isn't consistent since neither walls nor floors check this (for performance), plus some minor micro-opts to spawners. Optimize is_station_level Doubles in speed, used heavily in /turf/open/floor and in other initialization procs. Bit hard to tell exactly how much is saved, though. * Save 2.2s minimum (with zero ruins, likely a good bit more in production) of atom init time * Hopefully fixes the broken CI * Okay now it shouldn't be failing CI anymore (hopefully) * Fixes even more issues with smoothing_groups, this time hopefully for good * Okay NOW it's going to pass CI, surely... * Okay haha what if it passes this time? :) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: GoldenAlpharex Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> --- code/__HELPERS/_lists.dm | 12 +++++++ code/__HELPERS/level_traits.dm | 17 +++++++++- code/game/area/areas/misc.dm | 7 +++- code/game/atoms.dm | 18 ++++++++--- code/game/machinery/deployable.dm | 2 +- .../objects/effects/decals/cleanable/misc.dm | 2 +- .../objects/effects/spawners/structure.dm | 12 +++---- code/game/objects/structures/aliens.dm | 2 +- code/game/objects/structures/false_walls.dm | 6 ++-- code/game/objects/structures/lattice.dm | 6 ++-- code/game/objects/structures/window.dm | 4 +-- code/game/turfs/closed/_closed.dm | 18 +++++------ code/game/turfs/closed/wall/material_walls.dm | 2 +- code/game/turfs/closed/wall/mineral_walls.dm | 32 +++++++++---------- code/game/turfs/closed/wall/reinf_walls.dm | 4 +-- code/game/turfs/closed/walls.dm | 2 +- code/game/turfs/open/floor.dm | 2 +- code/game/turfs/open/grass.dm | 2 +- code/game/turfs/open/misc.dm | 2 +- code/game/turfs/turf.dm | 17 +++++++--- code/modules/industrial_lift/tram_walls.dm | 26 +++++++-------- code/modules/mining/equipment/survival_pod.dm | 4 +-- .../aesthetics/windows/code/windows.dm | 10 +++--- .../modules/assault_operatives/code/areas.dm | 2 +- .../central_command_module/code/obj/wall.dm | 2 +- .../modules/liquids/code/height_floors.dm | 8 ++--- .../modules/mapping/code/spaceship_turfs.dm | 6 ++-- modular_skyrat/modules/stone/code/stone.dm | 6 ++-- tools/read_init_times.py | 9 +++++- 29 files changed, 150 insertions(+), 92 deletions(-) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 40c12e6e0c7..b12890139ec 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -1002,3 +1002,15 @@ if(i < target_list.len) CHECK_TICK return ret + +/// Runtimes if the passed in list is not sorted +/proc/assert_sorted(list/list, name, cmp = /proc/cmp_numeric_asc) + var/last_value = list[1] + + for (var/index in 2 to list.len) + var/value = list[index] + + if (call(cmp)(value, last_value) < 0) + stack_trace("[name] is not sorted. value at [index] ([value]) is in the wrong place compared to the previous value of [last_value] (when compared to by [cmp])") + + last_value = value diff --git a/code/__HELPERS/level_traits.dm b/code/__HELPERS/level_traits.dm index 7f1c2dd7053..805e9466aec 100644 --- a/code/__HELPERS/level_traits.dm +++ b/code/__HELPERS/level_traits.dm @@ -3,7 +3,22 @@ // Basic levels #define is_centcom_level(z) SSmapping.level_trait(z, ZTRAIT_CENTCOM) -#define is_station_level(z) SSmapping.level_trait(z, ZTRAIT_STATION) +GLOBAL_LIST_EMPTY(station_levels_cache) + +// Used to prevent z from being re-evaluated +GLOBAL_VAR(station_level_z_scratch) + +// Called a lot, somewhat slow, so has its own cache +#define is_station_level(z) \ + ( \ + ( \ + /* The right hand side of this guarantees that we'll have the space to fill later on, while also not failing the condition */ \ + (GLOB.station_levels_cache.len < (GLOB.station_level_z_scratch = z) && (GLOB.station_levels_cache.len = GLOB.station_level_z_scratch)) \ + || isnull(GLOB.station_levels_cache[GLOB.station_level_z_scratch]) \ + ) \ + ? (GLOB.station_levels_cache[GLOB.station_level_z_scratch] = !!SSmapping.level_trait(z, ZTRAIT_STATION)) \ + : GLOB.station_levels_cache[GLOB.station_level_z_scratch] \ + ) #define is_mining_level(z) SSmapping.level_trait(z, ZTRAIT_MINING) diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm index fd6d0452d84..610662ac3f6 100644 --- a/code/game/area/areas/misc.dm +++ b/code/game/area/areas/misc.dm @@ -5,8 +5,8 @@ requires_power = TRUE always_unpowered = TRUE static_lighting = FALSE + area_has_base_lighting = FALSE - base_lighting_alpha = 255 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -17,6 +17,11 @@ sound_environment = SOUND_AREA_SPACE ambient_buzz = null //Space is deafeningly quiet +/area/space/Initialize(mapload) + . = ..() + + add_overlay(GLOB.fullbright_overlay) + /area/space/nearstation icon_state = "space_near" area_flags = UNIQUE_AREA | NO_ALERTS | AREA_USES_STARLIGHT diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5d73d2ac717..8d70248b678 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -139,9 +139,9 @@ var/bottom_left_corner ///Smoothing variable var/bottom_right_corner - ///What smoothing groups does this atom belongs to, to match canSmoothWith. If null, nobody can smooth with it. + ///What smoothing groups does this atom belongs to, to match canSmoothWith. If null, nobody can smooth with it. Must be sorted. var/list/smoothing_groups = null - ///List of smoothing groups this atom can smooth with. If this is null and atom is smooth, it smooths only with itself. + ///List of smoothing groups this atom can smooth with. If this is null and atom is smooth, it smooths only with itself. Must be sorted. var/list/canSmoothWith = null ///Reference to atom being orbited var/atom/orbit_target @@ -227,6 +227,7 @@ /atom/proc/Initialize(mapload, ...) SHOULD_NOT_SLEEP(TRUE) SHOULD_CALL_PARENT(TRUE) + if(flags_1 & INITIALIZED_1) stack_trace("Warning: [src]([type]) initialized multiple times!") flags_1 |= INITIALIZED_1 @@ -245,12 +246,20 @@ update_light() if (length(smoothing_groups)) - sortTim(smoothing_groups) //In case it's not properly ordered, let's avoid duplicate entries with the same values. + #ifdef UNIT_TESTS + assert_sorted(smoothing_groups, "[type].smoothing_groups") + #endif + SET_BITFLAG_LIST(smoothing_groups) + if (length(canSmoothWith)) - sortTim(canSmoothWith) + #ifdef UNIT_TESTS + assert_sorted(canSmoothWith, "[type].canSmoothWith") + #endif + if(canSmoothWith[length(canSmoothWith)] > MAX_S_TURF) //If the last element is higher than the maximum turf-only value, then it must scan turf contents for smoothing targets. smoothing_flags |= SMOOTH_OBJ + SET_BITFLAG_LIST(canSmoothWith) if(uses_integrity) @@ -260,6 +269,7 @@ armor = getArmor() else if (!istype(armor, /datum/armor)) stack_trace("Invalid type [armor.type] found in .armor during /atom Initialize()") + atom_integrity = max_integrity // apply materials properly from the default custom_materials value diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 618ab50fcce..4e7763a92ac 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -108,7 +108,7 @@ bar_material = SAND smoothing_flags = SMOOTH_BITMASK smoothing_groups = list(SMOOTH_GROUP_SANDBAGS) - canSmoothWith = list(SMOOTH_GROUP_SANDBAGS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SECURITY_BARRICADE) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SECURITY_BARRICADE, SMOOTH_GROUP_SANDBAGS) /obj/structure/barricade/sandbags/Initialize(mapload) . = ..() diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 6d2602b9a2f..27dced05e99 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -62,7 +62,7 @@ base_icon_state = "dirt" smoothing_flags = NONE smoothing_groups = list(SMOOTH_GROUP_CLEANABLE_DIRT) - canSmoothWith = list(SMOOTH_GROUP_CLEANABLE_DIRT, SMOOTH_GROUP_WALLS) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLEANABLE_DIRT) mouse_opacity = MOUSE_OPACITY_TRANSPARENT beauty = -75 diff --git a/code/game/objects/effects/spawners/structure.dm b/code/game/objects/effects/spawners/structure.dm index e2066c6c5f2..86b4a5868ae 100644 --- a/code/game/objects/effects/spawners/structure.dm +++ b/code/game/objects/effects/spawners/structure.dm @@ -10,9 +10,10 @@ again. /obj/effect/spawner/structure/Initialize(mapload) . = ..() - if(spawn_list?.len) - for(var/I in spawn_list) - new I(get_turf(src)) + + for(var/spawn_type in spawn_list) + new spawn_type(loc) + return INITIALIZE_HINT_QDEL @@ -28,9 +29,8 @@ again. /obj/effect/spawner/structure/window/Initialize(mapload) . = ..() - if (is_station_level(z)) - var/turf/current_turf = get_turf(src) - current_turf.rcd_memory = RCD_MEMORY_WINDOWGRILLE + var/turf/current_turf = loc + current_turf.rcd_memory = RCD_MEMORY_WINDOWGRILLE /obj/effect/spawner/structure/window/hollow name = "hollow window spawner" diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index f39f2c44037..c80e53b48df 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -143,7 +143,7 @@ max_integrity = 15 smoothing_flags = SMOOTH_BITMASK smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WEEDS) - canSmoothWith = list(SMOOTH_GROUP_ALIEN_WEEDS, SMOOTH_GROUP_WALLS) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ALIEN_WEEDS) ///the range of the weeds going to be affected by the node var/node_range = NODERANGE ///the parent node that will determine if we grow or die diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 1ccadddfc5d..61d587fc1d7 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -14,7 +14,7 @@ opacity = TRUE max_integrity = 100 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to. canSmoothWith = list(SMOOTH_GROUP_WALLS) can_be_unanchored = FALSE can_atmos_pass = ATMOS_PASS_DENSITY @@ -315,7 +315,7 @@ mineral = /obj/item/stack/sheet/mineral/bamboo walltype = /turf/closed/wall/mineral/bamboo smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS) + smoothing_groups = list(SMOOTH_GROUP_BAMBOO_WALLS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS) /obj/structure/falsewall/iron @@ -376,7 +376,7 @@ base_icon_state = "materialwall" walltype = /turf/closed/wall/material smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_MATERIAL_WALLS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS) material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 8c924eac990..b3044a60855 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -13,7 +13,7 @@ obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN smoothing_flags = SMOOTH_BITMASK smoothing_groups = list(SMOOTH_GROUP_LATTICE) - canSmoothWith = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_WALLS) + canSmoothWith = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_LATTICE) var/number_of_mats = 1 var/build_material = /obj/item/stack/rods @@ -77,7 +77,7 @@ base_icon_state = "catwalk" number_of_mats = 2 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_CATWALK, SMOOTH_GROUP_OPEN_FLOOR) + smoothing_groups = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_CATWALK) canSmoothWith = list(SMOOTH_GROUP_CATWALK) obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP @@ -113,7 +113,7 @@ number_of_mats = 1 color = "#5286b9ff" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR) + smoothing_groups = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_LATTICE) canSmoothWith = list(SMOOTH_GROUP_LATTICE) obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP resistance_flags = FIRE_PROOF | LAVA_PROOF diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 87fa8b9c9f2..c3033747a2f 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -715,7 +715,7 @@ heat_resistance = 1600 armor = list(MELEE = 90, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 80, ACID = 100) smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE) + smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE, SMOOTH_GROUP_SHUTTLE_PARTS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE) explosion_block = 3 glass_type = /obj/item/stack/sheet/titaniumglass @@ -754,7 +754,7 @@ heat_resistance = 1600 armor = list(MELEE = 95, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, FIRE = 80, ACID = 100) smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM) + smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_SHUTTLE_PARTS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM) explosion_block = 3 damage_deflection = 21 //The same as reinforced plasma windows.3 diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index e722e8a57f3..7f12b5481b1 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -124,7 +124,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "reinforced_wall-0" base_icon_state = "reinforced_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_WALLS) @@ -141,8 +141,8 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "plastitanium_wall-0" base_icon_state = "plastitanium_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS) - canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_SYNDICATE_WALLS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to + canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to /turf/closed/indestructible/riveted/uranium icon = 'icons/turf/walls/uranium_wall.dmi' @@ -157,7 +157,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "plastinum_wall-0" base_icon_state = "plastinum_wall" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTINUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_PLASTINUM_WALLS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_PLASTINUM_WALLS) /turf/closed/indestructible/riveted/plastinum/nodiagonal @@ -169,7 +169,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "wood_wall-0" base_icon_state = "wood_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to. canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS) @@ -180,7 +180,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "abductor_wall-0" base_icon_state = "abductor_wall" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS) @@ -191,7 +191,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "cult_wall-0" base_icon_state = "cult_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_WALLS) @@ -224,7 +224,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) base_icon_state = "plastitanium_window" opacity = FALSE smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM) + smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM, SMOOTH_GROUP_SHUTTLE_PARTS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM) /turf/closed/indestructible/opsglass/Initialize(mapload) @@ -294,7 +294,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen) icon_state = "iron_wall-0" base_icon_state = "iron_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS) opacity = FALSE diff --git a/code/game/turfs/closed/wall/material_walls.dm b/code/game/turfs/closed/wall/material_walls.dm index e1de7f8a98d..701c39cf55b 100644 --- a/code/game/turfs/closed/wall/material_walls.dm +++ b/code/game/turfs/closed/wall/material_walls.dm @@ -5,7 +5,7 @@ icon_state = "materialwall-0" base_icon_state = "materialwall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_MATERIAL_WALLS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS) rcd_memory = null material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 1d576b1a931..f50d341e7df 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -16,7 +16,7 @@ sheet_type = /obj/item/stack/sheet/mineral/gold hardness = 65 //gold is soft explosion_block = 0 //gold is a soft metal you dingus. - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS) custom_materials = list(/datum/material/gold = 4000) @@ -29,7 +29,7 @@ sheet_type = /obj/item/stack/sheet/mineral/silver hardness = 65 //silver is also soft according to moh's scale smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS) custom_materials = list(/datum/material/silver = 4000) @@ -44,7 +44,7 @@ slicing_duration = 200 //diamond wall takes twice as much time to slice explosion_block = 3 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS) custom_materials = list(/datum/material/diamond = 4000) @@ -60,7 +60,7 @@ sheet_type = /obj/item/stack/sheet/mineral/bananium hardness = 70 //it's banana smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS) custom_materials = list(/datum/material/bananium = 4000) @@ -74,7 +74,7 @@ hardness = 50 //moh says this is apparently 6-7 on it's scale explosion_block = 0 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS) custom_materials = list(/datum/material/sandstone = 4000) @@ -88,7 +88,7 @@ sheet_type = /obj/item/stack/sheet/mineral/uranium hardness = 40 //uranium is a 6 on moh's scale smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS) custom_materials = list(/datum/material/uranium = 4000) @@ -145,7 +145,7 @@ hardness = 70 // I'll tentatively compare it to Bismuth thermal_conductivity = 0.04 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to. canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS) custom_materials = list(/datum/material/plasma = 4000) @@ -160,7 +160,7 @@ turf_flags = IS_SOLID explosion_block = 0 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to. canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS) custom_materials = list(/datum/material/wood = 4000) @@ -188,7 +188,7 @@ icon = 'icons/turf/walls/bamboo_wall.dmi' icon_state = "bamboo" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS) + smoothing_groups = list(SMOOTH_GROUP_BAMBOO_WALLS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS) sheet_type = /obj/item/stack/sheet/mineral/bamboo hardness = 80 //it's not a mineral... @@ -203,7 +203,7 @@ hardness = 60 sheet_amount = 5 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS) custom_materials = list(/datum/material/iron = 5000) @@ -238,7 +238,7 @@ slicing_duration = 200 //alien wall takes twice as much time to slice explosion_block = 3 smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS) custom_materials = list(/datum/material/alloy/alien = 4000) @@ -256,7 +256,7 @@ sheet_type = /obj/item/stack/sheet/mineral/titanium hardness = 40 //6 on moh's scale smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to. canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) custom_materials = list(/datum/material/titanium = 4000) @@ -294,7 +294,7 @@ icon_state = "survival_pod_walls-0" base_icon_state = "survival_pod_walls" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS) + canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) /turf/closed/wall/mineral/titanium/survival/nodiagonal icon = 'icons/turf/walls/survival_pod_walls.dmi' @@ -303,7 +303,7 @@ smoothing_flags = SMOOTH_BITMASK /turf/closed/wall/mineral/titanium/survival/pod - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_SURVIVAL_TITANIUM_POD) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_SURVIVAL_TITANIUM_POD, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TITANIUM_POD) /////////////////////Plastitanium walls///////////////////// @@ -318,8 +318,8 @@ sheet_type = /obj/item/stack/sheet/mineral/plastitanium hardness = 25 //upgrade on titanium smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS) - canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to + canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to custom_materials = list(/datum/material/alloy/plastitanium = 4000) /turf/closed/wall/mineral/plastitanium/rust_heretic_act() diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm index 763f898ae1c..8dbb0741bd7 100644 --- a/code/game/turfs/closed/wall/reinf_walls.dm +++ b/code/game/turfs/closed/wall/reinf_walls.dm @@ -249,8 +249,8 @@ hardness = 25 //plastitanium turf_flags = IS_SOLID smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS) - canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_SYNDICATE_WALLS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to + canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to /turf/closed/wall/r_wall/syndicate/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) return FALSE diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index c1dd0f0a1a7..c6b83678af9 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -16,7 +16,7 @@ flags_ricochet = RICOCHET_HARD smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_WALLS) rcd_memory = RCD_MEMORY_WALL diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index 6340f50412d..bc1f275ae9f 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -12,7 +12,7 @@ flags_1 = CAN_BE_DIRTY_1 | IS_SOLID turf_flags = IS_SOLID smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_OPEN_FLOOR) - canSmoothWith = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_TURF_OPEN) + canSmoothWith = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_OPEN_FLOOR) thermal_conductivity = 0.04 heat_capacity = 10000 diff --git a/code/game/turfs/open/grass.dm b/code/game/turfs/open/grass.dm index 5321841111f..f10c71829cd 100644 --- a/code/game/turfs/open/grass.dm +++ b/code/game/turfs/open/grass.dm @@ -12,7 +12,7 @@ heavyfootstep = FOOTSTEP_GENERIC_HEAVY smoothing_flags = SMOOTH_BITMASK smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_GRASS) - canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_FLOOR_GRASS) + canSmoothWith = list(SMOOTH_GROUP_FLOOR_GRASS, SMOOTH_GROUP_CLOSED_TURFS) layer = HIGH_TURF_LAYER var/damaged_dmi = 'icons/turf/floors/grass.dmi' var/smooth_icon = 'icons/turf/floors/grass.dmi' diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index e706198136e..18e146ad64e 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -16,7 +16,7 @@ underfloor_accessibility = UNDERFLOOR_INTERACTABLE smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN) - canSmoothWith = list(SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_TURF_OPEN) + canSmoothWith = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_OPEN_FLOOR) thermal_conductivity = 0.04 heat_capacity = 10000 diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 10cfeff9788..0f8b54eee57 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -113,17 +113,25 @@ GLOBAL_LIST_EMPTY(station_turfs) levelupdate() if (length(smoothing_groups)) - sortTim(smoothing_groups) //In case it's not properly ordered, let's avoid duplicate entries with the same values. + #ifdef UNIT_TESTS + assert_sorted(smoothing_groups, "[type].smoothing_groups") + #endif + SET_BITFLAG_LIST(smoothing_groups) if (length(canSmoothWith)) - sortTim(canSmoothWith) + #ifdef UNIT_TESTS + assert_sorted(canSmoothWith, "[type].canSmoothWith") + #endif + if(canSmoothWith[length(canSmoothWith)] > MAX_S_TURF) //If the last element is higher than the maximum turf-only value, then it must scan turf contents for smoothing targets. smoothing_flags |= SMOOTH_OBJ SET_BITFLAG_LIST(canSmoothWith) if (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) QUEUE_SMOOTH(src) - visibilityChanged() + // visibilityChanged() will never hit any path with side effects during mapload + if (!mapload) + visibilityChanged() for(var/atom/movable/content as anything in src) Entered(content, null) @@ -149,7 +157,8 @@ GLOBAL_LIST_EMPTY(station_turfs) directional_opacity = ALL_CARDINALS // apply materials properly from the default custom_materials value - set_custom_materials(custom_materials) + if (!length(custom_materials)) + set_custom_materials(custom_materials) if(uses_integrity) atom_integrity = max_integrity diff --git a/code/modules/industrial_lift/tram_walls.dm b/code/modules/industrial_lift/tram_walls.dm index 17844dbfa5d..5a72cf678c3 100644 --- a/code/modules/industrial_lift/tram_walls.dm +++ b/code/modules/industrial_lift/tram_walls.dm @@ -13,7 +13,7 @@ opacity = FALSE max_integrity = 100 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_WALLS) can_be_unanchored = FALSE can_atmos_pass = ATMOS_PASS_DENSITY @@ -106,7 +106,7 @@ mineral = /obj/item/stack/sheet/mineral/gold tram_wall_type = /obj/structure/tramwall/gold explosion_block = 0 //gold is a soft metal you dingus. - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS) custom_materials = list(/datum/material/gold = 4000) @@ -119,7 +119,7 @@ mineral = /obj/item/stack/sheet/mineral/silver tram_wall_type = /obj/structure/tramwall/silver smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS) custom_materials = list(/datum/material/silver = 4000) @@ -135,7 +135,7 @@ max_integrity = 800 explosion_block = 3 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS) custom_materials = list(/datum/material/diamond = 4000) @@ -148,7 +148,7 @@ mineral = /obj/item/stack/sheet/mineral/bananium tram_wall_type = /obj/structure/tramwall/bananium smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS) custom_materials = list(/datum/material/bananium = 4000) @@ -162,7 +162,7 @@ tram_wall_type = /obj/structure/tramwall/sandstone explosion_block = 0 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS) custom_materials = list(/datum/material/sandstone = 4000) @@ -176,7 +176,7 @@ mineral = /obj/item/stack/sheet/mineral/uranium tram_wall_type = /obj/structure/tramwall/uranium smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS) custom_materials = list(/datum/material/uranium = 4000) @@ -221,7 +221,7 @@ mineral = /obj/item/stack/sheet/mineral/plasma tram_wall_type = /obj/structure/tramwall/plasma smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS) custom_materials = list(/datum/material/plasma = 4000) @@ -235,7 +235,7 @@ tram_wall_type = /obj/structure/tramwall/wood explosion_block = 0 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS) custom_materials = list(/datum/material/wood = 4000) @@ -255,7 +255,7 @@ icon = 'icons/turf/walls/bamboo_wall.dmi' icon_state = "bamboo" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS) + smoothing_groups = list(SMOOTH_GROUP_BAMBOO_WALLS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS) mineral = /obj/item/stack/sheet/mineral/bamboo tram_wall_type = /obj/structure/tramwall/bamboo @@ -270,7 +270,7 @@ mineral_amount = 5 tram_wall_type = /obj/structure/tramwall/iron smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS) custom_materials = list(/datum/material/iron = 5000) @@ -285,7 +285,7 @@ slicing_duration = 200 //alien wall takes twice as much time to slice explosion_block = 3 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS) custom_materials = list(/datum/material/alloy/alien = 4000) @@ -296,7 +296,7 @@ icon_state = "materialwall-0" base_icon_state = "materialwall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_MATERIAL_WALLS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS) material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 5b3f319b506..1ab338d8b1c 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -88,7 +88,7 @@ icon_state = "pod_window-0" base_icon_state = "pod_window" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SURVIVAL_TITANIUM_POD) + smoothing_groups = list(SMOOTH_GROUP_SURVIVAL_TITANIUM_POD, SMOOTH_GROUP_SHUTTLE_PARTS) canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TITANIUM_POD) /obj/structure/window/reinforced/shuttle/survival_pod/spawner/north @@ -111,7 +111,7 @@ icon = 'icons/obj/doors/airlocks/survival/survival.dmi' overlays_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi' assemblytype = /obj/structure/door_assembly/door_assembly_pod - smoothing_groups = list(SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SURVIVAL_TITANIUM_POD) + smoothing_groups = list(SMOOTH_GROUP_SURVIVAL_TITANIUM_POD, SMOOTH_GROUP_AIRLOCK) /obj/machinery/door/airlock/survival_pod/glass opacity = FALSE diff --git a/modular_skyrat/modules/aesthetics/windows/code/windows.dm b/modular_skyrat/modules/aesthetics/windows/code/windows.dm index a73526951f1..cee29ce0895 100644 --- a/modular_skyrat/modules/aesthetics/windows/code/windows.dm +++ b/modular_skyrat/modules/aesthetics/windows/code/windows.dm @@ -1,27 +1,27 @@ /obj/structure/window/fulltile icon = 'modular_skyrat/modules/aesthetics/windows/icons/window.dmi' - canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /obj/structure/window/reinforced/fulltile icon = 'modular_skyrat/modules/aesthetics/windows/icons/r_window.dmi' - canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /obj/structure/window/reinforced/tinted/fulltile icon = 'modular_skyrat/modules/aesthetics/windows/icons/r_window_tinted.dmi' icon_state = "reinforced_window-0" base_icon_state = "reinforced_window" - canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /obj/structure/window/plasma/fulltile icon = 'modular_skyrat/modules/aesthetics/windows/icons/window_plasma.dmi' icon_state = "window-0" base_icon_state = "window" - canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /obj/structure/window/reinforced/plasma/fulltile icon = 'modular_skyrat/modules/aesthetics/windows/icons/r_window_plasma.dmi' icon_state = "reinforced_window-0" base_icon_state = "reinforced_window" - canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /obj/structure/window/reinforced/fulltile/ice diff --git a/modular_skyrat/modules/assault_operatives/code/areas.dm b/modular_skyrat/modules/assault_operatives/code/areas.dm index 3b628947c0b..0ffb4915333 100644 --- a/modular_skyrat/modules/assault_operatives/code/areas.dm +++ b/modular_skyrat/modules/assault_operatives/code/areas.dm @@ -50,7 +50,7 @@ smoothing_groups = list(SMOOTH_GROUP_SHUTTERS) /turf/closed/wall/r_wall/syndicate/cruiser - canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SHUTTERS) + canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SHUTTERS) /obj/effect/landmark/start/assaultop name = "assaultop" diff --git a/modular_skyrat/modules/central_command_module/code/obj/wall.dm b/modular_skyrat/modules/central_command_module/code/obj/wall.dm index 5657c55747b..19b123bc95e 100644 --- a/modular_skyrat/modules/central_command_module/code/obj/wall.dm +++ b/modular_skyrat/modules/central_command_module/code/obj/wall.dm @@ -11,7 +11,7 @@ flags_1 = CAN_BE_DIRTY_1 flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_CLOSED_TURFS) canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) /turf/closed/indestructible/titanium/nodiagonal diff --git a/modular_skyrat/modules/liquids/code/height_floors.dm b/modular_skyrat/modules/liquids/code/height_floors.dm index 37675d52220..4a88d29c121 100644 --- a/modular_skyrat/modules/liquids/code/height_floors.dm +++ b/modular_skyrat/modules/liquids/code/height_floors.dm @@ -38,8 +38,8 @@ icon_state = "elevated_plasteel-0" base_icon_state = "elevated_plasteel" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ELEVATED_PLASTEEL) - canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ELEVATED_PLASTEEL) + smoothing_groups = list(SMOOTH_GROUP_ELEVATED_PLASTEEL, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) + canSmoothWith = list(SMOOTH_GROUP_ELEVATED_PLASTEEL, SMOOTH_GROUP_WALLS) liquid_height = 30 turf_height = 30 @@ -59,8 +59,8 @@ icon_state = "lowered_plasteel-0" base_icon_state = "lowered_plasteel" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_LOWERED_PLASTEEL) - canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_LOWERED_PLASTEEL) + smoothing_groups = list(SMOOTH_GROUP_LOWERED_PLASTEEL, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_CLOSED_TURFS) + canSmoothWith = list(SMOOTH_GROUP_LOWERED_PLASTEEL, SMOOTH_GROUP_WALLS) liquid_height = -30 turf_height = -30 diff --git a/modular_skyrat/modules/mapping/code/spaceship_turfs.dm b/modular_skyrat/modules/mapping/code/spaceship_turfs.dm index fb8faca052b..e0f752d4b02 100644 --- a/modular_skyrat/modules/mapping/code/spaceship_turfs.dm +++ b/modular_skyrat/modules/mapping/code/spaceship_turfs.dm @@ -7,8 +7,8 @@ icon_state = "ship_walls-0" base_icon_state = "ship_walls" sheet_type = /obj/item/stack/sheet/spaceship - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SHIPWALLS) - canSmoothWith = list(SMOOTH_GROUP_SHIPWALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SURVIVAL_TITANIUM_POD, SMOOTH_GROUP_SHUTTLE_PARTS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SHIPWALLS, SMOOTH_GROUP_CLOSED_TURFS) // SKYRAT EDIT CHANGE - Sorting them because /tg/ forgot to + canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TITANIUM_POD, SMOOTH_GROUP_SHIPWALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS) /turf/closed/wall/mineral/titanium/spaceship/nodiagonal icon_state = "map-shuttle_nd" @@ -52,7 +52,7 @@ base_icon_state = "pod_window" glass_type = /obj/item/stack/sheet/spaceshipglass smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE, SMOOTH_GROUP_SHIPWALLS) + smoothing_groups = list(SMOOTH_GROUP_SHIPWALLS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE, SMOOTH_GROUP_SHUTTLE_PARTS) canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE) /obj/structure/window/reinforced/shuttle/spaceship/tinted diff --git a/modular_skyrat/modules/stone/code/stone.dm b/modular_skyrat/modules/stone/code/stone.dm index c90ccd45ab1..ef74097d15b 100644 --- a/modular_skyrat/modules/stone/code/stone.dm +++ b/modular_skyrat/modules/stone/code/stone.dm @@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(stone_recipes, list ( \ slicing_duration = 1.5 SECONDS //literal rock explosion_block = 2 smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS, SMOOTH_GROUP_CLOSED_TURFS) canSmoothWith = list(SMOOTH_GROUP_STONE_WALLS) custom_materials = list(/datum/material/stone = 4000) @@ -83,7 +83,7 @@ GLOBAL_LIST_INIT(stone_recipes, list ( \ icon_state = "wall-0" base_icon_state = "wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS, SMOOTH_GROUP_CLOSED_TURFS) canSmoothWith = list(SMOOTH_GROUP_STONE_WALLS) custom_materials = list(/datum/material/stone = 4000) @@ -96,5 +96,5 @@ GLOBAL_LIST_INIT(stone_recipes, list ( \ mineral = /obj/item/stack/sheet/mineral/stone walltype = /turf/closed/wall/mineral/stone smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS) + smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_STONE_WALLS, SMOOTH_GROUP_CLOSED_TURFS) canSmoothWith = list(SMOOTH_GROUP_STONE_WALLS) diff --git a/tools/read_init_times.py b/tools/read_init_times.py index 4dca61c40f7..c95af704a0a 100644 --- a/tools/read_init_times.py +++ b/tools/read_init_times.py @@ -1,5 +1,6 @@ # When passed an `init_times.json` file (received from enabling `PROFILE_MAPLOAD_INIT_ATOM`), # and an optional max-depth level, this will output init times from worst to best. +import errno import json import sys @@ -19,4 +20,10 @@ for (type, time) in init_times.items(): init_times_per_type[type] = init_times_per_type.get(type, 0) + time for (type, time) in sorted(init_times_per_type.items(), key = lambda x: x[1], reverse = True): - print(type, time) + try: + print(type, time) + except IOError as error: + # Prevents broken pipe error if you do something like `read_init_times.py init_times.json | head` + if error.errno == errno.EPIPE: + sys.stderr.close() + sys.exit(0)