From 6cb0c3f987e96cbd2d9402569935e4cc0b0721cc Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 14 Jun 2026 10:03:28 +0100 Subject: [PATCH] Use typed stat modifier behavior kind --- .voidbot/state/aetheria.cc | Bin 84722 -> 84933 bytes .../UI/Properties Panel/PropertiesPanel.cs | 2 +- .../Runtime/AetheriaRuntimeBehaviorKinds.cs | 1 + docs/aetheria-perfect-machine-map.md | 11 +++++++---- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 97a93154fe0ef0609b0e5e5b00678212cec52e92..4fb22590f2a023e2e2c33a54402a927b96b984f1 100644 GIT binary patch delta 832 zcmZ8g&ubGw6z1heZScoIZG<2?Bn|n|B<`A2=*Ciof>2PSm7+Oi+?`F9WOueZ+txrq zFc-au7|MVJK~irX+EY&Asdsyl_8;)3;6?Q0?j|PN&S7A__vU@y_vX#7t?)h%@9qRn z&q;zP%@zxyP~@w(Allszyz+r_1CR!vjX`mkIT^YdD8KAvLj6n#&=n~2r8rFUZ*e%s zH?t6le3V;Q(~km6d^ZlgM`grpY$Kg2nyL{CnHFKha3GBuNNy0h$&lS3$i#9J*GZmk z7(_vK+jREYvXggrc(aC@nxW(nHk9sOev0b}IL|u?xF2hgI+oi=!8Xo2x3a{ z@q+}sh~+#9`H=)hT10mFb9{Lkz6XzBg5OMncG*w2=v4FS3`O>PNnr4NwPI0|Shhx3 z1skL_vfv5!7x3h|YEM|(AlP)Q>%_*cVx&@QX!j{;;C0P8`g>I9^emztKCp;Mr3!zY zf*L&LKT|Lh9k@Kk>Co{^8dRwAH)&YBbIt2V-pxdK&2CUjv)hGFWL;B;A(MwhWp4)r z+g9DPOVzZ$qT7bdCjXs=chbr|ifBtgCtJXdJ+P0_u`+PW`x$7%3g4TD5@z=sRt;S|K~*Wjh` x`T7lSg89?}d>*4k@&8;;@IMQn`ywSbvUO_sFSGTTEUOtKxhq${fC0|C^WUS6wmlk%I#pFc(C3?I~-{OfD8}oLgkY`DcJDP~Lvgq|X{b8T7wjlfKvLEccba#4^{th8{ zj#V7tFt=6~8Y}Z!(c+qOnNGyORuuRn!?IgG-p0L2`W`_S-H9TETjWF$JFQl1TbORK z#!Oxk4tx@3iSi%j;4kOgn>~FfzlVQ|w+uQjgQ(p`n$GD~$ zrcU!w^wGDg=p{9V!C+EJrIkb?o@iWt+2y*kL~mo5sRu^zuKQ$bl4QpFA%)trr7rEy nM%&l0-VUWxv~nGb?NmB*kjiKAv<=4-`>_5$i!aBI(6Rh3czmn8 diff --git a/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs b/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs index 64e856981..9ba90f809 100644 --- a/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs +++ b/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs @@ -439,7 +439,7 @@ public class PropertiesPanel : MonoBehaviour var sheet = AddStatSheet(); foreach (var behavior in typedItem?.BehaviorPayloads ?? Array.Empty()) { - if (string.Equals(behavior.Kind, nameof(StatModifierData), StringComparison.Ordinal)) + if (string.Equals(behavior.Kind, AetheriaRuntimeBehaviorKinds.StatModifier, StringComparison.Ordinal)) { var statReference = ReadTypedStatReference(FindTypedBehaviorField(behavior, 1)?.Value); var modifier = ReadTypedPerformanceStat(FindTypedBehaviorField(behavior, 2)?.Value); diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeBehaviorKinds.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeBehaviorKinds.cs index b5e80ba43..adc000933 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeBehaviorKinds.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeBehaviorKinds.cs @@ -5,6 +5,7 @@ namespace GameCult.Aetheria.State.Unity { public static class AetheriaRuntimeBehaviorKinds { + public const string StatModifier = "StatModifier"; public const string GuidedWeapon = "GuidedWeapon"; public const string Launcher = "Launcher"; public const string InstantWeapon = "InstantWeapon"; diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index e5cc544e2..2da02dce1 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -225,10 +225,11 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. manufacturer, base mass, max durability, thermal bounds, and thermal performance curve keys for basic item presentation without hydrating legacy DTOs. Runtime behavior stat display and damage-range curves read typed - behavior payload fields by legacy payload key. Damage-range payload selection - is keyed by package-owned typed weapon behavior metadata; legacy - `BehaviorData` ancestry is no longer a fallback for weapon payload selection. - The old explicit + behavior payload fields by legacy payload key; stat modifier presentation + checks the package-owned typed `StatModifier` kind instead of a legacy data + class name. Damage-range payload selection is keyed by package-owned typed + weapon behavior metadata; legacy `BehaviorData` ancestry is no longer a + fallback for weapon payload selection. The old explicit `Inspect(ItemData)` DTO inspection overload is deleted; trade row clicks now inspect the typed runtime catalog row directly. Incomplete typed thermal curve rows render a neutral fallback curve instead of hydrating legacy @@ -761,6 +762,8 @@ First Aetheria surfaces to publish: curves onto typed behavior payload fields, and delete the explicit `Inspect(ItemData)` projection inspector after moving trade row inspection onto typed runtime catalog rows. + - Done: replace the PropertiesPanel stat modifier class-name check with the + package-owned typed `StatModifier` behavior kind. - Done: demote PropertiesPanel weapon damage-range payload matching from `BehaviorData` `Type` authority to package-owned typed weapon behavior metadata; `BehaviorData` reflection remains display/filter metadata-only