diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 97a93154f..4fb22590f 100644 Binary files a/.voidbot/state/aetheria.cc and b/.voidbot/state/aetheria.cc differ 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