From a272557ccde2d7978998ff43a8df3af338291630 Mon Sep 17 00:00:00 2001
From: CHOMPStation2StaffMirrorBot
<94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com>
Date: Fri, 29 Aug 2025 16:12:10 -0700
Subject: [PATCH] [MIRROR] sane stacks (#11533)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com>
---
.../binary_devices/algae_generator_vr.dm | 4 +---
code/__defines/materials.dm | 14 +++++++++++---
code/game/objects/items/stacks/tiles/tile_types.dm | 3 ++-
code/game/objects/structures/bonfire.dm | 1 +
code/game/objects/structures/gravemarker.dm | 1 +
code/game/objects/structures/props/puzzledoor.dm | 2 +-
.../objects/structures/stool_bed_chair_nest/bed.dm | 1 +
.../structures/stool_bed_chair_nest/stools.dm | 5 +++--
code/game/turfs/simulated/dungeon/wall.dm | 4 ++--
.../modules/admin/view_variables/view_variables.dm | 3 +++
code/modules/client/client procs.dm | 2 +-
code/modules/hydroponics/beekeeping/beehive.dm | 4 ++--
code/modules/materials/materials/alien_alloy.dm | 8 ++++----
code/modules/materials/sheets/_sheets.dm | 1 +
code/modules/mining/machinery/machine_stacking.dm | 2 +-
code/modules/mining/ore_vr.dm | 2 +-
.../species/station/protean/protean_species.dm | 3 +--
.../subtypes/animal/giant_spider/tunneler.dm | 6 +++++-
code/modules/recycling/recycling.dm | 2 +-
code/modules/tables/presets.dm | 2 +-
code/modules/turbolift/turbolift_turfs.dm | 2 +-
21 files changed, 45 insertions(+), 27 deletions(-)
diff --git a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm
index aa7f9a2f7f..a06851a52c 100644
--- a/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/algae_generator_vr.dm
@@ -234,9 +234,7 @@
var/recursive = amount == -1 ? 1 : 0
var/datum/material/matdata = get_material_by_name(material_name)
var/stack_type = matdata.stack_type
- var/obj/item/stack/material/S = new stack_type(loc)
- if(amount <= 0)
- amount = S.max_amount
+ var/obj/item/stack/material/S = new stack_type(loc, -1)
var/ejected = min(round(stored_material[material_name] / S.perunit), amount)
if(!S.set_amount(min(ejected, amount)))
return
diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm
index 01d70bdf78..91a1082aff 100644
--- a/code/__defines/materials.dm
+++ b/code/__defines/materials.dm
@@ -56,9 +56,6 @@
#define MAT_PLASTEELREBAR "plasteel rebar"
#define MAT_GRASS "grass"
#define MAT_RESIN "resin"
-#define MAT_CULT "cult"
-#define MAT_CULT2 "cult2"
-#define MAT_ALIENALLOY "alienalloy"
#define MAT_COMPOSITE "composite"
#define MAT_BIOMASS "biomass"
#define MAT_WEEDEXTRACT "weed extract"
@@ -71,6 +68,17 @@
#define MAT_FOAM "foam"
#define MAT_FLOKIUM "flockium"
#define MAT_SMOLEBRICKS "smolebricks"
+#define MAT_WAX "wax"
+
+#define MAT_CULT "cult"
+#define MAT_CULT2 "cult2"
+
+// ALien materials
+#define MAT_ALIENALLOY "alienalloy"
+#define MAT_ALIEN_ALIUM "alium"
+#define MAT_ALIEN_BEDROCK "bedrock"
+#define MAT_ALIEN_DUNGEON "dungeonium"
+#define MAT_ALIEN_ELEVAT "elevatorium"
// cloth materials
#define MAT_WOOL "wool"
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index ab92f96d3d..e7bfd003ec 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -38,6 +38,7 @@
if(craftable)
material = get_material_by_name("[default_type]")
if(!material)
+ stack_trace("Material of type: [default_type] does not exist.")
return INITIALIZE_HINT_QDEL
if(material) //sanity check
recipes = material.get_recipes()
@@ -76,7 +77,7 @@
singular_name = "grass floor tile"
desc = "A patch of grass like they often use on golf courses."
icon_state = "tile_grass"
- default_type = "grass"
+ default_type = MAT_GRASS
force = 1.0
throwforce = 1.0
throw_speed = 5
diff --git a/code/game/objects/structures/bonfire.dm b/code/game/objects/structures/bonfire.dm
index f8157232c7..9464606e1d 100644
--- a/code/game/objects/structures/bonfire.dm
+++ b/code/game/objects/structures/bonfire.dm
@@ -19,6 +19,7 @@
material_name = MAT_WOOD
material = get_material_by_name("[material_name]")
if(!material)
+ stack_trace("Material of type: [material_name] does not exist.")
return INITIALIZE_HINT_QDEL
color = material.icon_colour
diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm
index afdf8b468f..05c81c61d6 100644
--- a/code/game/objects/structures/gravemarker.dm
+++ b/code/game/objects/structures/gravemarker.dm
@@ -24,6 +24,7 @@
material_name = MAT_WOOD
material = get_material_by_name("[material_name]")
if(!material)
+ stack_trace("Material of type: [material_name] does not exist.")
return INITIALIZE_HINT_QDEL
color = material.icon_colour
AddElement(/datum/element/climbable)
diff --git a/code/game/objects/structures/props/puzzledoor.dm b/code/game/objects/structures/props/puzzledoor.dm
index 55a19f404f..adca46240e 100644
--- a/code/game/objects/structures/props/puzzledoor.dm
+++ b/code/game/objects/structures/props/puzzledoor.dm
@@ -37,7 +37,7 @@
/obj/machinery/door/blast/puzzle/Initialize(mapload)
. = ..()
- implicit_material = get_material_by_name("dungeonium")
+ implicit_material = get_material_by_name(MAT_ALIEN_DUNGEON)
if(locks.len)
return
var/check_range = world.view * checkrange_mult
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 5d28d928e9..97f6c96ac8 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -30,6 +30,7 @@
new_material = MAT_STEEL
material = get_material_by_name(new_material)
if(!istype(material))
+ stack_trace("Material of type: [new_material] does not exist.")
return INITIALIZE_HINT_QDEL
if(new_padding_material)
padding_material = get_material_by_name(new_padding_material)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index e8668480bf..dbbcc7fe3f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -23,10 +23,11 @@
if(!new_material)
new_material = MAT_STEEL
material = get_material_by_name(new_material)
+ if(!istype(material))
+ stack_trace("Material of type: [new_material] does not exist.")
+ return INITIALIZE_HINT_QDEL
if(new_padding_material)
padding_material = get_material_by_name(new_padding_material)
- if(!istype(material))
- return INITIALIZE_HINT_QDEL
force = round(material.get_blunt_damage()*0.4)
update_icon()
diff --git a/code/game/turfs/simulated/dungeon/wall.dm b/code/game/turfs/simulated/dungeon/wall.dm
index fa9d132244..5c3a2b0770 100644
--- a/code/game/turfs/simulated/dungeon/wall.dm
+++ b/code/game/turfs/simulated/dungeon/wall.dm
@@ -4,7 +4,7 @@
block_tele = TRUE // Anti-cheese.
/turf/simulated/wall/dungeon/Initialize(mapload)
- . = ..(mapload, "dungeonium")
+ . = ..(mapload, MAT_ALIEN_DUNGEON)
/turf/simulated/wall/dungeon/attackby()
return
@@ -38,7 +38,7 @@
block_tele = TRUE
/turf/simulated/wall/solidrock/Initialize(mapload)
- . = ..(mapload, "bedrock")
+ . = ..(mapload, MAT_ALIEN_BEDROCK)
/turf/simulated/wall/solidrock/Initialize(mapload)
. = ..()
diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm
index 2ed195dd02..4bf0a2ec4f 100644
--- a/code/modules/admin/view_variables/view_variables.dm
+++ b/code/modules/admin/view_variables/view_variables.dm
@@ -38,8 +38,10 @@ ADMIN_VERB_AND_CONTEXT_MENU(debug_variables, (R_DEBUG|R_SERVER|R_ADMIN|R_SPAWN|R
var/type = islist ? /list : thing.type
var/no_icon = FALSE
+ var/cord_line
if(isatom(thing))
var/atom/AT = thing
+ cord_line = "x:[AT.x] y:[AT.y] z:[AT.z] "
if(use_gfi)
sprite = getFlatIcon(thing)
if(!sprite)
@@ -265,6 +267,7 @@ ADMIN_VERB_AND_CONTEXT_MENU(debug_variables, (R_DEBUG|R_SERVER|R_ADMIN|R_SPAWN|R
[tagged_line]
[varedited_line]
[deleted_line]
+
[cord_line]