From ea9fadca51b9a66f03a1b3d39d541114af918ff7 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 18 Aug 2024 17:25:13 +0200 Subject: [PATCH] [MIRROR] Fixes Clarke ore box breaking upon collecting boulders (#29450) * Fixes Clarke ore box breaking upon collecting boulders (#85924) ## About The Pull Request Ever since Clarkes could pick up boulders they've been broken if you ever collected one. The UI would break and all your precious minerals would be trapped inside the Clarke, only being obtainable if you broke the Clarke itself. This also updates the Clarke Storage to differentiate by ore name rather than icon, as otherwise the lower quality boulders would be mixed with normal boulders with no way to differentiate them in the UI. ## Why It's Good For The Game Fixes https://github.com/tgstation/tgstation/issues/84364 Before:
Before https://github.com/user-attachments/assets/f90daf35-733a-42bd-8af5-7e6712f09fba
After https://github.com/user-attachments/assets/4510803c-6dee-403e-a051-966a8a66c17c
## Changelog :cl: TwistedSilicon fix: Clarkes will no longer become unable to dump ores upon picking a boulder up. Mine away. /:cl: * Fixes Clarke ore box breaking upon collecting boulders --------- Co-authored-by: TwistedCicrularConvexLens <106436013+TwistedCicrularConvexLens@users.noreply.github.com> --- code/modules/mining/boulder_processing/boulder.dm | 2 ++ code/modules/vehicles/mecha/working/clarke.dm | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/boulder_processing/boulder.dm b/code/modules/mining/boulder_processing/boulder.dm index 342afe8abe5..64aba6339df 100644 --- a/code/modules/mining/boulder_processing/boulder.dm +++ b/code/modules/mining/boulder_processing/boulder.dm @@ -22,6 +22,8 @@ var/boulder_size = BOULDER_SIZE_SMALL /// Used in inheriting the icon_state from our parent vent in update_icon. var/boulder_string = "boulder" + // There is one boulder per boulder (this is required for the Clarke UI as it treats ores and boulders in the same fashion and needs an amount for both) + var/amount = 1 /obj/item/boulder/Initialize(mapload) . = ..() diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 2ec0b4a4736..e06e578b707 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -78,14 +78,14 @@ var/list/contents = chassis.ore_box?.contents var/list/contents_grouped = list() for(var/obj/item/stack/ore/item as anything in contents) - if(isnull(contents_grouped[item.icon_state])) + if(isnull(contents_grouped[item.name])) var/ore_data = list() ore_data["name"] = item.name ore_data["icon"] = item.icon_state ore_data["amount"] = item.amount - contents_grouped[item.icon_state] = ore_data + contents_grouped[item.name] = ore_data else - contents_grouped[item.icon_state]["amount"] += item.amount + contents_grouped[item.name]["amount"] += item.amount var/list/data = list( "snowflake_id" = MECHA_SNOWFLAKE_ID_OREBOX_MANAGER, "contents" = contents_grouped,