Carry signed index, object id, and raw spell word losslessly through PlayerDescription, session storage, drag mutation, and AddShortcut wire serialization while keeping gmToolbarUI object-only. Retire AP-103 and record the live ACE relog persistence gate. Co-Authored-By: Codex <codex@openai.com>
14 lines
580 B
C#
14 lines
580 B
C#
namespace AcDream.Core.Items;
|
|
|
|
/// <summary>
|
|
/// Lossless retail <c>ShortCutData</c> value: signed slot index, object id,
|
|
/// and raw 32-bit spell word. The C++ object is 16 bytes including its vtable;
|
|
/// the packed value is exactly 12 bytes. Retail anchors:
|
|
/// <c>ShortCutData::ShortCutData @ 0x005D55E0</c>,
|
|
/// <c>ShortCutManager::AddShortCut @ 0x005D5790</c>, and
|
|
/// <c>acclient.h:36484</c>.
|
|
/// </summary>
|
|
public readonly record struct ShortcutEntry(int Index, uint ObjectId, uint SpellId)
|
|
{
|
|
public ShortcutEntry WithIndex(int index) => this with { Index = index };
|
|
}
|