acdream/src/AcDream.Core/Items/AetheriaUnlockState.cs
Erik edc9be3008 fix(paperdoll): port quest-gated Aetheria slots
Add the three authored blue, yellow, and red sigil backgrounds and drive their visibility from player PropertyInt.AetheriaBitfield bits 1/2/4 at login and on live updates, matching gmPaperDollUI::UpdateAetheria. Include the sigil equip masks in the shared slot table and narrow AP-108.

Co-Authored-By: Codex <codex@openai.com>
2026-07-13 09:55:20 +02:00

33 lines
900 B
C#

using System;
namespace AcDream.Core.Items;
/// <summary>
/// Player <c>PropertyInt.AetheriaBitfield (322 / 0x142)</c>. Each bit independently
/// unlocks one paperdoll sigil location after its corresponding retail quest.
/// </summary>
/// <remarks>
/// Retail: <c>gmPaperDollUI::UpdateAetheria @ 0x004A3E50</c>.
/// ACE: <c>PropertyInt.AetheriaBitfield</c> + <c>AetheriaBitfield</c>.
/// </remarks>
[Flags]
public enum AetheriaUnlockState : uint
{
None = 0x0,
Blue = 0x1,
Yellow = 0x2,
Red = 0x4,
All = Blue | Yellow | Red,
}
public static class AetheriaUnlocks
{
public const uint PropertyId = 0x142u;
public static AetheriaUnlockState Read(ClientObject? player)
{
if (player?.Properties.Ints.TryGetValue(PropertyId, out int value) != true)
return AetheriaUnlockState.None;
return (AetheriaUnlockState)(uint)value;
}
}