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>
33 lines
900 B
C#
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;
|
|
}
|
|
}
|