feat(core): give AC's seven property tables names, verified against two oracles
acdream has carried property IDs as bare uints since the beginning. The wire parsers read `u32 property` and hand it to a `Dictionary<uint, int>`, and every call site that cared re-derived the meaning from a comment - `EncumbranceVal` was spelled `private const uint EncumbranceValProperty = 5u` in two different files, `UiEffects` lived as "ACE enum value 18" in a doc comment, and `AetheriaBitfield` as "322 / 0x142". That is 864 pieces of vocabulary the codebase was expected to remember in prose. This adds the seven enums - PropertyInt, PropertyInt64, PropertyBool, PropertyFloat, PropertyString, PropertyDataId, PropertyInstanceId - under AcDream.Core.Properties. Every member is transcribed from an oracle; none is invented. Two independent sources were extracted and diffed against each other: the vendored client-side enum catalog at references/acclientlib/UtilityBelt.Common/Enums/Enums.cs (which names these tables IntId/BoolId/FloatId/...), and the 38,985-file ACE weenie export corpus at references/weenies/, whose every stat entry carries the numeric key beside the enum member name in its `_comment`. The corpus attests 408 of the 864 members directly. Across all seven tables the two oracles produced zero value conflicts, and the corpus contained no key the catalog was missing - the catalog is a strict superset of everything 38,985 weenies actually set. Three members disagree on spelling, never on value: the catalog says ObjectType/HookObjectType/MerchandiseObjectTypes where ACE says ItemType/HookItemType/MerchandiseItemTypes. acdream takes ACE's spelling, which is what the weenie corpus emits (37,329 attestations for ItemType alone) and what acdream's own ItemType enum already calls it. The catalog's alias is recorded on each member. This commit is vocabulary only - no parser reads these enums yet, so no branch changes and no wire behavior moves. The bundles stay `Dictionary<uint, ...>` precisely because an unknown key must still round-trip untouched; the enums describe the keys we know, they do not constrain the ones we receive. PropertyEnumConformanceTests pins the result: the full name/value table per family, the uint underlying type, no two members sharing a value, and a separate 408-case theory asserting each weenie-attested pairing individually. A hand edit to any enum now fails loudly instead of quietly mis-reading the wire. Core tests 3,297 -> 3,726. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b70b9832ff
commit
251dd68a92
8 changed files with 2887 additions and 0 deletions
221
src/AcDream.Core/Properties/PropertyBool.cs
Normal file
221
src/AcDream.Core/Properties/PropertyBool.cs
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyBool</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyBool (0x02C9) / PublicUpdatePropertyBool (0x02CA)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>bool</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>BoolId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 59 of these 131 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyBool : uint
|
||||
{
|
||||
Undef = 0,
|
||||
/// <summary>21884 weenie attestations.</summary>
|
||||
Stuck = 1,
|
||||
/// <summary>1077 weenie attestations.</summary>
|
||||
Open = 2,
|
||||
/// <summary>646 weenie attestations.</summary>
|
||||
Locked = 3,
|
||||
RotProof = 4,
|
||||
AllegianceUpdateRequest = 5,
|
||||
/// <summary>1282 weenie attestations.</summary>
|
||||
AiUsesMana = 6,
|
||||
/// <summary>16 weenie attestations.</summary>
|
||||
AiUseHumanMagicAnimations = 7,
|
||||
/// <summary>853 weenie attestations.</summary>
|
||||
AllowGive = 8,
|
||||
CurrentlyAttacking = 9,
|
||||
AttackerAi = 10,
|
||||
/// <summary>6212 weenie attestations.</summary>
|
||||
IgnoreCollisions = 11,
|
||||
/// <summary>9020 weenie attestations.</summary>
|
||||
ReportCollisions = 12,
|
||||
/// <summary>15282 weenie attestations.</summary>
|
||||
Ethereal = 13,
|
||||
/// <summary>7376 weenie attestations.</summary>
|
||||
GravityStatus = 14,
|
||||
/// <summary>3382 weenie attestations.</summary>
|
||||
LightsStatus = 15,
|
||||
/// <summary>139 weenie attestations.</summary>
|
||||
ScriptedCollision = 16,
|
||||
/// <summary>475 weenie attestations.</summary>
|
||||
Inelastic = 17,
|
||||
/// <summary>1677 weenie attestations.</summary>
|
||||
Visibility = 18,
|
||||
/// <summary>3972 weenie attestations.</summary>
|
||||
Attackable = 19,
|
||||
SafeSpellComponents = 20,
|
||||
AdvocateState = 21,
|
||||
/// <summary>15455 weenie attestations.</summary>
|
||||
Inscribable = 22,
|
||||
/// <summary>7755 weenie attestations.</summary>
|
||||
DestroyOnSell = 23,
|
||||
/// <summary>6728 weenie attestations.</summary>
|
||||
UiHidden = 24,
|
||||
IgnoreHouseBarriers = 25,
|
||||
HiddenAdmin = 26,
|
||||
PkWounder = 27,
|
||||
PkKiller = 28,
|
||||
/// <summary>262 weenie attestations.</summary>
|
||||
NoCorpse = 29,
|
||||
UnderLifestoneProtection = 30,
|
||||
ItemManaUpdatePending = 31,
|
||||
GeneratorStatus = 32,
|
||||
/// <summary>831 weenie attestations.</summary>
|
||||
ResetMessagePending = 33,
|
||||
/// <summary>831 weenie attestations.</summary>
|
||||
DefaultOpen = 34,
|
||||
/// <summary>511 weenie attestations.</summary>
|
||||
DefaultLocked = 35,
|
||||
DefaultOn = 36,
|
||||
OpenForBusiness = 37,
|
||||
IsFrozen = 38,
|
||||
/// <summary>1049 weenie attestations.</summary>
|
||||
DealMagicalItems = 39,
|
||||
LogoffImDead = 40,
|
||||
/// <summary>2208 weenie attestations.</summary>
|
||||
ReportCollisionsAsEnvironment = 41,
|
||||
/// <summary>1327 weenie attestations.</summary>
|
||||
AllowEdgeSlide = 42,
|
||||
AdvocateQuest = 43,
|
||||
IsAdmin = 44,
|
||||
IsArch = 45,
|
||||
IsSentinel = 46,
|
||||
IsAdvocate = 47,
|
||||
CurrentlyPoweringUp = 48,
|
||||
GeneratorEnteredWorld = 49,
|
||||
/// <summary>890 weenie attestations.</summary>
|
||||
NeverFailCasting = 50,
|
||||
/// <summary>264 weenie attestations.</summary>
|
||||
VendorService = 51,
|
||||
/// <summary>1421 weenie attestations.</summary>
|
||||
AiImmobile = 52,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
DamagedByCollisions = 53,
|
||||
/// <summary>34 weenie attestations.</summary>
|
||||
IsDynamic = 54,
|
||||
/// <summary>81 weenie attestations.</summary>
|
||||
IsHot = 55,
|
||||
IsAffecting = 56,
|
||||
/// <summary>49 weenie attestations.</summary>
|
||||
AffectsAis = 57,
|
||||
SpellQueueActive = 58,
|
||||
GeneratorDisabled = 59,
|
||||
IsAcceptingTells = 60,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
LoggingChannel = 61,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
OpensAnyLock = 62,
|
||||
/// <summary>20 weenie attestations.</summary>
|
||||
UnlimitedUse = 63,
|
||||
GeneratedTreasureItem = 64,
|
||||
/// <summary>97 weenie attestations.</summary>
|
||||
IgnoreMagicResist = 65,
|
||||
/// <summary>87 weenie attestations.</summary>
|
||||
IgnoreMagicArmor = 66,
|
||||
AiAllowTrade = 67,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
SpellComponentsRequired = 68,
|
||||
/// <summary>4617 weenie attestations.</summary>
|
||||
IsSellable = 69,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
IgnoreShieldsBySkill = 70,
|
||||
/// <summary>6275 weenie attestations.</summary>
|
||||
NoDraw = 71,
|
||||
ActivationUntargeted = 72,
|
||||
HouseHasGottenPriorityBootPos = 73,
|
||||
/// <summary>12 weenie attestations.</summary>
|
||||
GeneratorAutomaticDestruction = 74,
|
||||
HouseHooksVisible = 75,
|
||||
/// <summary>8 weenie attestations.</summary>
|
||||
HouseRequiresMonarch = 76,
|
||||
HouseHooksEnabled = 77,
|
||||
HouseNotifiedHudOfHookCount = 78,
|
||||
/// <summary>15 weenie attestations.</summary>
|
||||
AiAcceptEverything = 79,
|
||||
IgnorePortalRestrictions = 80,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
RequiresBackpackSlot = 81,
|
||||
/// <summary>444 weenie attestations.</summary>
|
||||
DontTurnOrMoveWhenGiving = 82,
|
||||
/// <summary>442 weenie attestations.</summary>
|
||||
NpcLooksLikeObject = 83,
|
||||
/// <summary>210 weenie attestations.</summary>
|
||||
IgnoreCloIcons = 84,
|
||||
/// <summary>178 weenie attestations.</summary>
|
||||
AppraisalHasAllowedWielder = 85,
|
||||
ChestRegenOnClose = 86,
|
||||
LogoffInMinigame = 87,
|
||||
/// <summary>17 weenie attestations.</summary>
|
||||
PortalShowDestination = 88,
|
||||
/// <summary>30 weenie attestations.</summary>
|
||||
PortalIgnoresPkAttackTimer = 89,
|
||||
/// <summary>43 weenie attestations.</summary>
|
||||
NpcInteractsSilently = 90,
|
||||
/// <summary>230 weenie attestations.</summary>
|
||||
Retained = 91,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
IgnoreAuthor = 92,
|
||||
Limbo = 93,
|
||||
AppraisalHasAllowedActivator = 94,
|
||||
ExistedBeforeAllegianceXpChanges = 95,
|
||||
IsDeaf = 96,
|
||||
IsPsr = 97,
|
||||
Invincible = 98,
|
||||
/// <summary>1068 weenie attestations.</summary>
|
||||
Ivoryable = 99,
|
||||
/// <summary>687 weenie attestations.</summary>
|
||||
Dyable = 100,
|
||||
CanGenerateRare = 101,
|
||||
CorpseGeneratedRare = 102,
|
||||
/// <summary>14 weenie attestations.</summary>
|
||||
NonProjectileMagicImmune = 103,
|
||||
ActdReceivedItems = 104,
|
||||
Unknown105 = 105,
|
||||
FirstEnterWorldDone = 106,
|
||||
RecallsDisabled = 107,
|
||||
/// <summary>13 weenie attestations.</summary>
|
||||
RareUsesTimer = 108,
|
||||
ActdPreorderReceivedItems = 109,
|
||||
Afk = 110,
|
||||
IsGagged = 111,
|
||||
ProcSpellSelfTargeted = 112,
|
||||
IsAllegianceGagged = 113,
|
||||
EquipmentSetTriggerPiece = 114,
|
||||
Uninscribe = 115,
|
||||
WieldOnUse = 116,
|
||||
ChestClearedWhenClosed = 117,
|
||||
NeverAttack = 118,
|
||||
SuppressGenerateEffect = 119,
|
||||
TreasureCorpse = 120,
|
||||
EquipmentSetAddLevel = 121,
|
||||
BarberActive = 122,
|
||||
TopLayerPriority = 123,
|
||||
NoHeldItemShown = 124,
|
||||
LoginAtLifestone = 125,
|
||||
OlthoiPk = 126,
|
||||
Account15Days = 127,
|
||||
HadNoVitae = 128,
|
||||
NoOlthoiTalk = 129,
|
||||
/// <summary>14 weenie attestations.</summary>
|
||||
AutowieldLeft = 130,
|
||||
}
|
||||
134
src/AcDream.Core/Properties/PropertyDataId.cs
Normal file
134
src/AcDream.Core/Properties/PropertyDataId.cs
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyDataId</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyDataId (0x02E1) / PublicUpdatePropertyDataId (0x02E2)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>uint (DAT file id)</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>DataId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 41 of these 62 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyDataId : uint
|
||||
{
|
||||
Undef = 0,
|
||||
/// <summary>38985 weenie attestations.</summary>
|
||||
Setup = 1,
|
||||
/// <summary>12219 weenie attestations.</summary>
|
||||
MotionTable = 2,
|
||||
/// <summary>23696 weenie attestations.</summary>
|
||||
SoundTable = 3,
|
||||
/// <summary>4319 weenie attestations.</summary>
|
||||
CombatTable = 4,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
QualityFilter = 5,
|
||||
/// <summary>13875 weenie attestations.</summary>
|
||||
PaletteBase = 6,
|
||||
/// <summary>9049 weenie attestations.</summary>
|
||||
ClothingBase = 7,
|
||||
/// <summary>38985 weenie attestations.</summary>
|
||||
Icon = 8,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
EyesTexture = 9,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
NoseTexture = 10,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
MouthTexture = 11,
|
||||
DefaultEyesTexture = 12,
|
||||
DefaultNoseTexture = 13,
|
||||
DefaultMouthTexture = 14,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
HairPalette = 15,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
EyesPalette = 16,
|
||||
/// <summary>741 weenie attestations.</summary>
|
||||
SkinPalette = 17,
|
||||
HeadObject = 18,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
ActivationAnimation = 19,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
InitMotion = 20,
|
||||
ActivationSound = 21,
|
||||
/// <summary>23266 weenie attestations.</summary>
|
||||
PhysicsEffectTable = 22,
|
||||
/// <summary>138 weenie attestations.</summary>
|
||||
UseSound = 23,
|
||||
/// <summary>48 weenie attestations.</summary>
|
||||
UseTargetAnimation = 24,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
UseTargetSuccessAnimation = 25,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
UseTargetFailureAnimation = 26,
|
||||
/// <summary>232 weenie attestations.</summary>
|
||||
UseUserAnimation = 27,
|
||||
/// <summary>3696 weenie attestations.</summary>
|
||||
Spell = 28,
|
||||
/// <summary>156 weenie attestations.</summary>
|
||||
SpellComponent = 29,
|
||||
/// <summary>794 weenie attestations.</summary>
|
||||
PhysicsScript = 30,
|
||||
/// <summary>497 weenie attestations.</summary>
|
||||
LinkedPortalOne = 31,
|
||||
/// <summary>861 weenie attestations.</summary>
|
||||
WieldedTreasureType = 32,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
UnknownGuessedname = 33,
|
||||
UnknownGuessedname2 = 34,
|
||||
/// <summary>2000 weenie attestations.</summary>
|
||||
DeathTreasureType = 35,
|
||||
/// <summary>2276 weenie attestations.</summary>
|
||||
MutateFilter = 36,
|
||||
/// <summary>1253 weenie attestations.</summary>
|
||||
ItemSkillLimit = 37,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
UseCreateItem = 38,
|
||||
DeathSpell = 39,
|
||||
VendorsClassId = 40,
|
||||
/// <summary>13 weenie attestations.</summary>
|
||||
ItemSpecializedOnly = 41,
|
||||
/// <summary>6274 weenie attestations.</summary>
|
||||
HouseId = 42,
|
||||
AccountHouseId = 43,
|
||||
/// <summary>6274 weenie attestations.</summary>
|
||||
RestrictionEffect = 44,
|
||||
CreationMutationFilter = 45,
|
||||
/// <summary>584 weenie attestations.</summary>
|
||||
TsysMutationFilter = 46,
|
||||
LastPortal = 47,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
LinkedPortalTwo = 48,
|
||||
OriginalPortal = 49,
|
||||
/// <summary>1000 weenie attestations.</summary>
|
||||
IconOverlay = 50,
|
||||
/// <summary>16 weenie attestations.</summary>
|
||||
IconOverlaySecondary = 51,
|
||||
/// <summary>554 weenie attestations.</summary>
|
||||
IconUnderlay = 52,
|
||||
AugmentationMutationFilter = 53,
|
||||
AugmentationEffect = 54,
|
||||
/// <summary>84 weenie attestations.</summary>
|
||||
ProcSpell = 55,
|
||||
AugmentationCreateItem = 56,
|
||||
AlternateCurrency = 57,
|
||||
BlueSurgeSpell = 58,
|
||||
YellowSurgeSpell = 59,
|
||||
RedSurgeSpell = 60,
|
||||
OlthoiDeathTreasureType = 61,
|
||||
}
|
||||
289
src/AcDream.Core/Properties/PropertyFloat.cs
Normal file
289
src/AcDream.Core/Properties/PropertyFloat.cs
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyFloat</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyFloat (0x02D5) / PublicUpdatePropertyFloat (0x02D6)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>double</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>FloatId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 86 of these 172 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyFloat : uint
|
||||
{
|
||||
Undef = 0,
|
||||
/// <summary>4243 weenie attestations.</summary>
|
||||
HeartbeatInterval = 1,
|
||||
/// <summary>4243 weenie attestations.</summary>
|
||||
HeartbeatTimestamp = 2,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
HealthRate = 3,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
StaminaRate = 4,
|
||||
/// <summary>7706 weenie attestations.</summary>
|
||||
ManaRate = 5,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
HealthUponResurrection = 6,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
StaminaUponResurrection = 7,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
ManaUponResurrection = 8,
|
||||
StartTime = 9,
|
||||
StopTime = 10,
|
||||
/// <summary>1749 weenie attestations.</summary>
|
||||
ResetInterval = 11,
|
||||
/// <summary>3290 weenie attestations.</summary>
|
||||
Shade = 12,
|
||||
/// <summary>6001 weenie attestations.</summary>
|
||||
ArmorModVsSlash = 13,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsPierce = 14,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsBludgeon = 15,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsCold = 16,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsFire = 17,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsAcid = 18,
|
||||
/// <summary>6005 weenie attestations.</summary>
|
||||
ArmorModVsElectric = 19,
|
||||
CombatSpeed = 20,
|
||||
/// <summary>2733 weenie attestations.</summary>
|
||||
WeaponLength = 21,
|
||||
/// <summary>3174 weenie attestations.</summary>
|
||||
DamageVariance = 22,
|
||||
CurrentPowerMod = 23,
|
||||
AccuracyMod = 24,
|
||||
StrengthMod = 25,
|
||||
/// <summary>1386 weenie attestations.</summary>
|
||||
MaximumVelocity = 26,
|
||||
/// <summary>233 weenie attestations.</summary>
|
||||
RotationSpeed = 27,
|
||||
MotionTimestamp = 28,
|
||||
/// <summary>3892 weenie attestations.</summary>
|
||||
WeaponDefense = 29,
|
||||
WimpyLevel = 30,
|
||||
/// <summary>2169 weenie attestations.</summary>
|
||||
VisualAwarenessRange = 31,
|
||||
AuralAwarenessRange = 32,
|
||||
PerceptionLevel = 33,
|
||||
/// <summary>1987 weenie attestations.</summary>
|
||||
PowerupTime = 34,
|
||||
MaxChargeDistance = 35,
|
||||
/// <summary>1892 weenie attestations.</summary>
|
||||
ChargeSpeed = 36,
|
||||
/// <summary>1049 weenie attestations.</summary>
|
||||
BuyPrice = 37,
|
||||
/// <summary>1049 weenie attestations.</summary>
|
||||
SellPrice = 38,
|
||||
/// <summary>18233 weenie attestations.</summary>
|
||||
DefaultScale = 39,
|
||||
/// <summary>10 weenie attestations.</summary>
|
||||
LockpickMod = 40,
|
||||
/// <summary>2195 weenie attestations.</summary>
|
||||
RegenerationInterval = 41,
|
||||
RegenerationTimestamp = 42,
|
||||
/// <summary>2135 weenie attestations.</summary>
|
||||
GeneratorRadius = 43,
|
||||
/// <summary>66 weenie attestations.</summary>
|
||||
TimeToRot = 44,
|
||||
DeathTimestamp = 45,
|
||||
PkTimestamp = 46,
|
||||
VictimTimestamp = 47,
|
||||
LoginTimestamp = 48,
|
||||
CreationTimestamp = 49,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
MinimumTimeSincePk = 50,
|
||||
DeprecatedHousekeepingPriority = 51,
|
||||
AbuseLoggingTimestamp = 52,
|
||||
LastPortalTeleportTimestamp = 53,
|
||||
/// <summary>9152 weenie attestations.</summary>
|
||||
UseRadius = 54,
|
||||
/// <summary>46 weenie attestations.</summary>
|
||||
HomeRadius = 55,
|
||||
ReleasedTimestamp = 56,
|
||||
MinHomeRadius = 57,
|
||||
Facing = 58,
|
||||
ResetTimestamp = 59,
|
||||
LogoffTimestamp = 60,
|
||||
EconRecoveryInterval = 61,
|
||||
/// <summary>3523 weenie attestations.</summary>
|
||||
WeaponOffense = 62,
|
||||
/// <summary>1223 weenie attestations.</summary>
|
||||
DamageMod = 63,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistSlash = 64,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistPierce = 65,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistBludgeon = 66,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistFire = 67,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistCold = 68,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistAcid = 69,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistElectric = 70,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistHealthBoost = 71,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistStaminaDrain = 72,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistStaminaBoost = 73,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistManaDrain = 74,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistManaBoost = 75,
|
||||
/// <summary>794 weenie attestations.</summary>
|
||||
Translucency = 76,
|
||||
/// <summary>269 weenie attestations.</summary>
|
||||
PhysicsScriptIntensity = 77,
|
||||
/// <summary>761 weenie attestations.</summary>
|
||||
Friction = 78,
|
||||
/// <summary>761 weenie attestations.</summary>
|
||||
Elasticity = 79,
|
||||
/// <summary>1076 weenie attestations.</summary>
|
||||
AiUseMagicDelay = 80,
|
||||
ItemMinSpellcraftMod = 81,
|
||||
ItemMaxSpellcraftMod = 82,
|
||||
ItemRankProbability = 83,
|
||||
Shade2 = 84,
|
||||
Shade3 = 85,
|
||||
Shade4 = 86,
|
||||
/// <summary>15 weenie attestations.</summary>
|
||||
ItemEfficiency = 87,
|
||||
ItemManaUpdateTimestamp = 88,
|
||||
SpellGestureSpeedMod = 89,
|
||||
SpellStanceSpeedMod = 90,
|
||||
AllegianceAppraisalTimestamp = 91,
|
||||
PowerLevel = 92,
|
||||
AccuracyLevel = 93,
|
||||
AttackAngle = 94,
|
||||
AttackTimestamp = 95,
|
||||
CheckpointTimestamp = 96,
|
||||
SoldTimestamp = 97,
|
||||
UseTimestamp = 98,
|
||||
UseLockTimestamp = 99,
|
||||
/// <summary>22 weenie attestations.</summary>
|
||||
HealkitMod = 100,
|
||||
FrozenTimestamp = 101,
|
||||
HealthRateMod = 102,
|
||||
AllegianceSwearTimestamp = 103,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ObviousRadarRange = 104,
|
||||
/// <summary>81 weenie attestations.</summary>
|
||||
HotspotCycleTime = 105,
|
||||
/// <summary>74 weenie attestations.</summary>
|
||||
HotspotCycleTimeVariance = 106,
|
||||
SpamTimestamp = 107,
|
||||
SpamRate = 108,
|
||||
/// <summary>26 weenie attestations.</summary>
|
||||
BondWieldedTreasure = 109,
|
||||
/// <summary>1039 weenie attestations.</summary>
|
||||
BulkMod = 110,
|
||||
/// <summary>1039 weenie attestations.</summary>
|
||||
SizeMod = 111,
|
||||
GagTimestamp = 112,
|
||||
GeneratorUpdateTimestamp = 113,
|
||||
DeathSpamTimestamp = 114,
|
||||
DeathSpamRate = 115,
|
||||
WildAttackProbability = 116,
|
||||
/// <summary>312 weenie attestations.</summary>
|
||||
FocusedProbability = 117,
|
||||
CrashAndTurnProbability = 118,
|
||||
CrashAndTurnRadius = 119,
|
||||
CrashAndTurnBias = 120,
|
||||
/// <summary>186 weenie attestations.</summary>
|
||||
GeneratorInitialDelay = 121,
|
||||
/// <summary>575 weenie attestations.</summary>
|
||||
AiAcquireHealth = 122,
|
||||
/// <summary>6 weenie attestations.</summary>
|
||||
AiAcquireStamina = 123,
|
||||
/// <summary>6 weenie attestations.</summary>
|
||||
AiAcquireMana = 124,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
ResistHealthDrain = 125,
|
||||
LifestoneProtectionTimestamp = 126,
|
||||
/// <summary>72 weenie attestations.</summary>
|
||||
AiCounteractEnchantment = 127,
|
||||
/// <summary>10 weenie attestations.</summary>
|
||||
AiDispelEnchantment = 128,
|
||||
TradeTimestamp = 129,
|
||||
AiTargetedDetectionRadius = 130,
|
||||
/// <summary>29 weenie attestations.</summary>
|
||||
EmotePriority = 131,
|
||||
LastTeleportStartTimestamp = 132,
|
||||
EventSpamTimestamp = 133,
|
||||
EventSpamRate = 134,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
InventoryOffset = 135,
|
||||
/// <summary>396 weenie attestations.</summary>
|
||||
CriticalMultiplier = 136,
|
||||
/// <summary>15 weenie attestations.</summary>
|
||||
ManaStoneDestroyChance = 137,
|
||||
/// <summary>351 weenie attestations.</summary>
|
||||
SlayerDamageBonus = 138,
|
||||
AllegianceInfoSpamTimestamp = 139,
|
||||
AllegianceInfoSpamRate = 140,
|
||||
NextSpellcastTimestamp = 141,
|
||||
AppraisalRequestedTimestamp = 142,
|
||||
AppraisalHeartbeatDueTimestamp = 143,
|
||||
/// <summary>209 weenie attestations.</summary>
|
||||
ManaConversionMod = 144,
|
||||
LastPkAttackTimestamp = 145,
|
||||
FellowshipUpdateTimestamp = 146,
|
||||
/// <summary>395 weenie attestations.</summary>
|
||||
CriticalFrequency = 147,
|
||||
LimboStartTimestamp = 148,
|
||||
/// <summary>356 weenie attestations.</summary>
|
||||
WeaponMissileDefense = 149,
|
||||
/// <summary>368 weenie attestations.</summary>
|
||||
WeaponMagicDefense = 150,
|
||||
/// <summary>87 weenie attestations.</summary>
|
||||
IgnoreShield = 151,
|
||||
/// <summary>135 weenie attestations.</summary>
|
||||
ElementalDamageMod = 152,
|
||||
StartMissileAttackTimestamp = 153,
|
||||
LastRareUsedTimestamp = 154,
|
||||
/// <summary>69 weenie attestations.</summary>
|
||||
IgnoreArmor = 155,
|
||||
ProcSpellRate = 156,
|
||||
/// <summary>93 weenie attestations.</summary>
|
||||
ResistanceModifier = 157,
|
||||
AllegianceGagTimestamp = 158,
|
||||
/// <summary>18 weenie attestations.</summary>
|
||||
AbsorbMagicDamage = 159,
|
||||
CachedMaxAbsorbMagicDamage = 160,
|
||||
GagDuration = 161,
|
||||
AllegianceGagDuration = 162,
|
||||
GlobalXpMod = 163,
|
||||
HealingModifier = 164,
|
||||
/// <summary>391 weenie attestations.</summary>
|
||||
ArmorModVsNether = 165,
|
||||
ResistNether = 166,
|
||||
/// <summary>369 weenie attestations.</summary>
|
||||
CooldownDuration = 167,
|
||||
WeaponAuraOffense = 168,
|
||||
WeaponAuraDefense = 169,
|
||||
WeaponAuraElemental = 170,
|
||||
WeaponAuraManaConv = 171,
|
||||
}
|
||||
79
src/AcDream.Core/Properties/PropertyInstanceId.cs
Normal file
79
src/AcDream.Core/Properties/PropertyInstanceId.cs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyInstanceId</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyInstanceId (0x02E5) / PublicUpdatePropertyInstanceId (0x02E6)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>uint (object guid)</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>InstanceId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 2 of these 46 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyInstanceId : uint
|
||||
{
|
||||
Undef = 0,
|
||||
Owner = 1,
|
||||
Container = 2,
|
||||
Wielder = 3,
|
||||
Freezer = 4,
|
||||
Viewer = 5,
|
||||
Generator = 6,
|
||||
Scribe = 7,
|
||||
CurrentCombatTarget = 8,
|
||||
CurrentEnemy = 9,
|
||||
ProjectileLauncher = 10,
|
||||
CurrentAttacker = 11,
|
||||
CurrentDamager = 12,
|
||||
CurrentFollowTarget = 13,
|
||||
CurrentAppraisalTarget = 14,
|
||||
CurrentFellowshipAppraisalTarget = 15,
|
||||
/// <summary>130 weenie attestations.</summary>
|
||||
ActivationTarget = 16,
|
||||
Creator = 17,
|
||||
Victim = 18,
|
||||
Killer = 19,
|
||||
Vendor = 20,
|
||||
Customer = 21,
|
||||
Bonded = 22,
|
||||
Wounder = 23,
|
||||
Allegiance = 24,
|
||||
Patron = 25,
|
||||
Monarch = 26,
|
||||
CombatTarget = 27,
|
||||
HealthQueryTarget = 28,
|
||||
LastUnlocker = 29,
|
||||
CrashAndTurnTarget = 30,
|
||||
AllowedActivator = 31,
|
||||
HouseOwner = 32,
|
||||
House = 33,
|
||||
Slumlord = 34,
|
||||
ManaQueryTarget = 35,
|
||||
CurrentGame = 36,
|
||||
RequestedAppraisalTarget = 37,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
AllowedWielder = 38,
|
||||
AssignedTarget = 39,
|
||||
LimboSource = 40,
|
||||
Snooper = 41,
|
||||
TeleportedCharacter = 42,
|
||||
Pet = 43,
|
||||
PetOwner = 44,
|
||||
PetDevice = 45,
|
||||
}
|
||||
611
src/AcDream.Core/Properties/PropertyInt.cs
Normal file
611
src/AcDream.Core/Properties/PropertyInt.cs
Normal file
|
|
@ -0,0 +1,611 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyInt</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyInt (0x02CD) / PublicUpdatePropertyInt (0x02CE)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>int</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>IntId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 189 of these 391 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyInt : uint
|
||||
{
|
||||
Undef = 0,
|
||||
/// <summary>UtilityBelt catalog calls this <c>ObjectType</c>; 37329 weenie attestations.</summary>
|
||||
ItemType = 1,
|
||||
/// <summary>6140 weenie attestations.</summary>
|
||||
CreatureType = 2,
|
||||
/// <summary>8344 weenie attestations.</summary>
|
||||
PaletteTemplate = 3,
|
||||
/// <summary>1597 weenie attestations.</summary>
|
||||
ClothingPriority = 4,
|
||||
/// <summary>25793 weenie attestations.</summary>
|
||||
EncumbranceVal = 5,
|
||||
/// <summary>8633 weenie attestations.</summary>
|
||||
ItemsCapacity = 6,
|
||||
/// <summary>8618 weenie attestations.</summary>
|
||||
ContainersCapacity = 7,
|
||||
/// <summary>23605 weenie attestations.</summary>
|
||||
Mass = 8,
|
||||
/// <summary>20797 weenie attestations.</summary>
|
||||
ValidLocations = 9,
|
||||
CurrentWieldedLocation = 10,
|
||||
/// <summary>4373 weenie attestations.</summary>
|
||||
MaxStackSize = 11,
|
||||
/// <summary>4373 weenie attestations.</summary>
|
||||
StackSize = 12,
|
||||
/// <summary>3181 weenie attestations.</summary>
|
||||
StackUnitEncumbrance = 13,
|
||||
/// <summary>3181 weenie attestations.</summary>
|
||||
StackUnitMass = 14,
|
||||
/// <summary>3181 weenie attestations.</summary>
|
||||
StackUnitValue = 15,
|
||||
/// <summary>37280 weenie attestations.</summary>
|
||||
ItemUseable = 16,
|
||||
/// <summary>21 weenie attestations.</summary>
|
||||
RareId = 17,
|
||||
/// <summary>5705 weenie attestations.</summary>
|
||||
UiEffects = 18,
|
||||
/// <summary>25852 weenie attestations.</summary>
|
||||
Value = 19,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
CoinValue = 20,
|
||||
TotalExperience = 21,
|
||||
AvailableCharacter = 22,
|
||||
TotalSkillCredits = 23,
|
||||
AvailableSkillCredits = 24,
|
||||
/// <summary>6140 weenie attestations.</summary>
|
||||
Level = 25,
|
||||
/// <summary>28 weenie attestations.</summary>
|
||||
AccountRequirements = 26,
|
||||
/// <summary>5476 weenie attestations.</summary>
|
||||
ArmorType = 27,
|
||||
/// <summary>1657 weenie attestations.</summary>
|
||||
ArmorLevel = 28,
|
||||
AllegianceCpPool = 29,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
AllegianceRank = 30,
|
||||
ChannelsAllowed = 31,
|
||||
ChannelsActive = 32,
|
||||
/// <summary>6252 weenie attestations.</summary>
|
||||
Bonded = 33,
|
||||
MonarchsRank = 34,
|
||||
AllegianceFollowers = 35,
|
||||
/// <summary>997 weenie attestations.</summary>
|
||||
ResistMagic = 36,
|
||||
/// <summary>575 weenie attestations.</summary>
|
||||
ResistItemAppraisal = 37,
|
||||
/// <summary>677 weenie attestations.</summary>
|
||||
ResistLockpick = 38,
|
||||
DeprecatedResistRepair = 39,
|
||||
/// <summary>1634 weenie attestations.</summary>
|
||||
CombatMode = 40,
|
||||
CurrentAttackHeight = 41,
|
||||
CombatCollisions = 42,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
NumDeaths = 43,
|
||||
/// <summary>3717 weenie attestations.</summary>
|
||||
Damage = 44,
|
||||
/// <summary>3357 weenie attestations.</summary>
|
||||
DamageType = 45,
|
||||
/// <summary>2973 weenie attestations.</summary>
|
||||
DefaultCombatStyle = 46,
|
||||
/// <summary>2364 weenie attestations.</summary>
|
||||
AttackType = 47,
|
||||
/// <summary>3393 weenie attestations.</summary>
|
||||
WeaponSkill = 48,
|
||||
/// <summary>3394 weenie attestations.</summary>
|
||||
WeaponTime = 49,
|
||||
/// <summary>972 weenie attestations.</summary>
|
||||
AmmoType = 50,
|
||||
/// <summary>4499 weenie attestations.</summary>
|
||||
CombatUse = 51,
|
||||
/// <summary>440 weenie attestations.</summary>
|
||||
ParentLocation = 52,
|
||||
/// <summary>440 weenie attestations.</summary>
|
||||
PlacementPosition = 53,
|
||||
WeaponEncumbrance = 54,
|
||||
WeaponMass = 55,
|
||||
ShieldValue = 56,
|
||||
ShieldEncumbrance = 57,
|
||||
MissileInventoryLocation = 58,
|
||||
FullDamageType = 59,
|
||||
/// <summary>545 weenie attestations.</summary>
|
||||
WeaponRange = 60,
|
||||
AttackersSkill = 61,
|
||||
DefendersSkill = 62,
|
||||
AttackersSkillValue = 63,
|
||||
AttackersClass = 64,
|
||||
Placement = 65,
|
||||
/// <summary>179 weenie attestations.</summary>
|
||||
CheckpointStatus = 66,
|
||||
/// <summary>219 weenie attestations.</summary>
|
||||
Tolerance = 67,
|
||||
/// <summary>2151 weenie attestations.</summary>
|
||||
TargetingTactic = 68,
|
||||
/// <summary>48 weenie attestations.</summary>
|
||||
CombatTactic = 69,
|
||||
HomesickTargetingTactic = 70,
|
||||
NumFollowFailures = 71,
|
||||
/// <summary>494 weenie attestations.</summary>
|
||||
FriendType = 72,
|
||||
FoeType = 73,
|
||||
/// <summary>UtilityBelt catalog calls this <c>MerchandiseObjectTypes</c>; 1049 weenie attestations.</summary>
|
||||
MerchandiseItemTypes = 74,
|
||||
/// <summary>1049 weenie attestations.</summary>
|
||||
MerchandiseMinValue = 75,
|
||||
/// <summary>1049 weenie attestations.</summary>
|
||||
MerchandiseMaxValue = 76,
|
||||
NumItemsSold = 77,
|
||||
NumItemsBought = 78,
|
||||
MoneyIncome = 79,
|
||||
MoneyOutflow = 80,
|
||||
/// <summary>2195 weenie attestations.</summary>
|
||||
MaxGeneratedObjects = 81,
|
||||
/// <summary>2195 weenie attestations.</summary>
|
||||
InitGeneratedObjects = 82,
|
||||
/// <summary>787 weenie attestations.</summary>
|
||||
ActivationResponse = 83,
|
||||
OriginalValue = 84,
|
||||
NumMoveFailures = 85,
|
||||
/// <summary>815 weenie attestations.</summary>
|
||||
MinLevel = 86,
|
||||
/// <summary>115 weenie attestations.</summary>
|
||||
MaxLevel = 87,
|
||||
/// <summary>10 weenie attestations.</summary>
|
||||
LockpickMod = 88,
|
||||
/// <summary>525 weenie attestations.</summary>
|
||||
BoosterEnum = 89,
|
||||
/// <summary>532 weenie attestations.</summary>
|
||||
BoostValue = 90,
|
||||
/// <summary>800 weenie attestations.</summary>
|
||||
MaxStructure = 91,
|
||||
/// <summary>713 weenie attestations.</summary>
|
||||
Structure = 92,
|
||||
/// <summary>38985 weenie attestations.</summary>
|
||||
PhysicsState = 93,
|
||||
/// <summary>3570 weenie attestations.</summary>
|
||||
TargetType = 94,
|
||||
/// <summary>2668 weenie attestations.</summary>
|
||||
RadarBlipColor = 95,
|
||||
/// <summary>472 weenie attestations.</summary>
|
||||
EncumbranceCapacity = 96,
|
||||
LoginTimestamp = 97,
|
||||
/// <summary>119 weenie attestations.</summary>
|
||||
CreationTimestamp = 98,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
PkLevelModifier = 99,
|
||||
/// <summary>575 weenie attestations.</summary>
|
||||
GeneratorType = 100,
|
||||
/// <summary>1265 weenie attestations.</summary>
|
||||
AiAllowedCombatStyle = 101,
|
||||
LogoffTimestamp = 102,
|
||||
/// <summary>158 weenie attestations.</summary>
|
||||
GeneratorDestructionType = 103,
|
||||
ActivationCreateClass = 104,
|
||||
/// <summary>693 weenie attestations.</summary>
|
||||
ItemWorkmanship = 105,
|
||||
/// <summary>4213 weenie attestations.</summary>
|
||||
ItemSpellcraft = 106,
|
||||
/// <summary>4173 weenie attestations.</summary>
|
||||
ItemCurMana = 107,
|
||||
/// <summary>4211 weenie attestations.</summary>
|
||||
ItemMaxMana = 108,
|
||||
/// <summary>3091 weenie attestations.</summary>
|
||||
ItemDifficulty = 109,
|
||||
/// <summary>1043 weenie attestations.</summary>
|
||||
ItemAllegianceRankLimit = 110,
|
||||
/// <summary>2940 weenie attestations.</summary>
|
||||
PortalBitmask = 111,
|
||||
AdvocateLevel = 112,
|
||||
/// <summary>749 weenie attestations.</summary>
|
||||
Gender = 113,
|
||||
/// <summary>4502 weenie attestations.</summary>
|
||||
Attuned = 114,
|
||||
/// <summary>1640 weenie attestations.</summary>
|
||||
ItemSkillLevelLimit = 115,
|
||||
GateLogic = 116,
|
||||
/// <summary>66 weenie attestations.</summary>
|
||||
ItemManaCost = 117,
|
||||
Logoff = 118,
|
||||
/// <summary>365 weenie attestations.</summary>
|
||||
Active = 119,
|
||||
AttackHeight = 120,
|
||||
NumAttackFailures = 121,
|
||||
AiCpThreshold = 122,
|
||||
AiAdvancementStrategy = 123,
|
||||
Version = 124,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
Age = 125,
|
||||
/// <summary>1048 weenie attestations.</summary>
|
||||
VendorHappyMean = 126,
|
||||
/// <summary>1048 weenie attestations.</summary>
|
||||
VendorHappyVariance = 127,
|
||||
CloakStatus = 128,
|
||||
VitaeCpPool = 129,
|
||||
NumServicesSold = 130,
|
||||
/// <summary>586 weenie attestations.</summary>
|
||||
MaterialType = 131,
|
||||
NumAllegianceBreaks = 132,
|
||||
/// <summary>10541 weenie attestations.</summary>
|
||||
ShowableOnRadar = 133,
|
||||
/// <summary>3138 weenie attestations.</summary>
|
||||
PlayerKillerStatus = 134,
|
||||
VendorHappyMaxItems = 135,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScorePageNum = 136,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreConfigNum = 137,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreNumScores = 138,
|
||||
DeathLevel = 139,
|
||||
/// <summary>1411 weenie attestations.</summary>
|
||||
AiOptions = 140,
|
||||
OpenToEveryone = 141,
|
||||
/// <summary>297 weenie attestations.</summary>
|
||||
GeneratorTimeType = 142,
|
||||
/// <summary>51 weenie attestations.</summary>
|
||||
GeneratorStartTime = 143,
|
||||
/// <summary>50 weenie attestations.</summary>
|
||||
GeneratorEndTime = 144,
|
||||
/// <summary>257 weenie attestations.</summary>
|
||||
GeneratorEndDestructionType = 145,
|
||||
/// <summary>4361 weenie attestations.</summary>
|
||||
XpOverride = 146,
|
||||
NumCrashAndTurns = 147,
|
||||
ComponentWarningThreshold = 148,
|
||||
/// <summary>7 weenie attestations.</summary>
|
||||
HouseStatus = 149,
|
||||
/// <summary>4715 weenie attestations.</summary>
|
||||
HookPlacement = 150,
|
||||
/// <summary>6799 weenie attestations.</summary>
|
||||
HookType = 151,
|
||||
/// <summary>UtilityBelt catalog calls this <c>HookObjectType</c>; 5 weenie attestations.</summary>
|
||||
HookItemType = 152,
|
||||
AiPpThreshold = 153,
|
||||
GeneratorVersion = 154,
|
||||
/// <summary>6274 weenie attestations.</summary>
|
||||
HouseType = 155,
|
||||
/// <summary>10 weenie attestations.</summary>
|
||||
PickupEmoteOffset = 156,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
WeenieIteration = 157,
|
||||
/// <summary>2557 weenie attestations.</summary>
|
||||
WieldRequirements = 158,
|
||||
/// <summary>2557 weenie attestations.</summary>
|
||||
WieldSkilltype = 159,
|
||||
/// <summary>2557 weenie attestations.</summary>
|
||||
WieldDifficulty = 160,
|
||||
/// <summary>654 weenie attestations.</summary>
|
||||
HouseMaxHooksUsable = 161,
|
||||
HouseCurrentHooksUsable = 162,
|
||||
/// <summary>8 weenie attestations.</summary>
|
||||
AllegianceMinLevel = 163,
|
||||
AllegianceMaxLevel = 164,
|
||||
HouseRelinkHookCount = 165,
|
||||
/// <summary>537 weenie attestations.</summary>
|
||||
SlayerCreatureType = 166,
|
||||
ConfirmationInProgress = 167,
|
||||
ConfirmationTypeInProgress = 168,
|
||||
/// <summary>728 weenie attestations.</summary>
|
||||
TsysMutationData = 169,
|
||||
/// <summary>36 weenie attestations.</summary>
|
||||
NumItemsInMaterial = 170,
|
||||
/// <summary>228 weenie attestations.</summary>
|
||||
NumTimesTinkered = 171,
|
||||
/// <summary>358 weenie attestations.</summary>
|
||||
AppraisalLongDescDecoration = 172,
|
||||
/// <summary>133 weenie attestations.</summary>
|
||||
AppraisalLockpickSuccessPercent = 173,
|
||||
/// <summary>103 weenie attestations.</summary>
|
||||
AppraisalPages = 174,
|
||||
/// <summary>103 weenie attestations.</summary>
|
||||
AppraisalMaxPages = 175,
|
||||
/// <summary>355 weenie attestations.</summary>
|
||||
AppraisalItemSkill = 176,
|
||||
/// <summary>281 weenie attestations.</summary>
|
||||
GemCount = 177,
|
||||
/// <summary>281 weenie attestations.</summary>
|
||||
GemType = 178,
|
||||
/// <summary>495 weenie attestations.</summary>
|
||||
ImbuedEffect = 179,
|
||||
AttackersRawSkillValue = 180,
|
||||
ChessRank = 181,
|
||||
ChessTotalGames = 182,
|
||||
ChessGamesWon = 183,
|
||||
ChessGamesLost = 184,
|
||||
/// <summary>71 weenie attestations.</summary>
|
||||
TypeOfAlteration = 185,
|
||||
/// <summary>71 weenie attestations.</summary>
|
||||
SkillToBeAltered = 186,
|
||||
SkillAlterationCount = 187,
|
||||
/// <summary>807 weenie attestations.</summary>
|
||||
HeritageGroup = 188,
|
||||
/// <summary>30 weenie attestations.</summary>
|
||||
TransferFromAttribute = 189,
|
||||
/// <summary>30 weenie attestations.</summary>
|
||||
TransferToAttribute = 190,
|
||||
AttributeTransferCount = 191,
|
||||
FakeFishingSkill = 192,
|
||||
/// <summary>3 weenie attestations.</summary>
|
||||
NumKeys = 193,
|
||||
DeathTimestamp = 194,
|
||||
PkTimestamp = 195,
|
||||
VictimTimestamp = 196,
|
||||
/// <summary>22 weenie attestations.</summary>
|
||||
HookGroup = 197,
|
||||
AllegianceSwearTimestamp = 198,
|
||||
HousePurchaseTimestamp = 199,
|
||||
RedirectableEquippedArmorCount = 200,
|
||||
MeleedefenseImbuedEffectTypeCache = 201,
|
||||
MissileDefenseImbuedEffectTypeCache = 202,
|
||||
MagicDefenseImbuedEffectTypeCache = 203,
|
||||
/// <summary>121 weenie attestations.</summary>
|
||||
ElementalDamageBonus = 204,
|
||||
ImbueAttempts = 205,
|
||||
ImbueSuccesses = 206,
|
||||
CreatureKills = 207,
|
||||
PlayerKillsPk = 208,
|
||||
PlayerKillsPkl = 209,
|
||||
RaresTierOne = 210,
|
||||
RaresTierTwo = 211,
|
||||
RaresTierThree = 212,
|
||||
RaresTierFour = 213,
|
||||
RaresTierFive = 214,
|
||||
AugmentationStat = 215,
|
||||
AugmentationFamilyStat = 216,
|
||||
AugmentationInnateFamily = 217,
|
||||
AugmentationInnateStrength = 218,
|
||||
AugmentationInnateEndurance = 219,
|
||||
AugmentationInnateCoordination = 220,
|
||||
AugmentationInnateQuickness = 221,
|
||||
AugmentationInnateFocus = 222,
|
||||
AugmentationInnateSelf = 223,
|
||||
AugmentationSpecializeSalvaging = 224,
|
||||
AugmentationSpecializeItemTinkering = 225,
|
||||
AugmentationSpecializeArmorTinkering = 226,
|
||||
AugmentationSpecializeMagicItemTinkering = 227,
|
||||
AugmentationSpecializeWeaponTinkering = 228,
|
||||
AugmentationExtraPackSlot = 229,
|
||||
AugmentationIncreasedCarryingCapacity = 230,
|
||||
AugmentationLessDeathItemLoss = 231,
|
||||
AugmentationSpellsRemainPastDeath = 232,
|
||||
AugmentationCriticalDefense = 233,
|
||||
AugmentationBonusXp = 234,
|
||||
AugmentationBonusSalvage = 235,
|
||||
AugmentationBonusImbueChance = 236,
|
||||
AugmentationFasterRegen = 237,
|
||||
AugmentationIncreasedSpellDuration = 238,
|
||||
AugmentationResistanceFamily = 239,
|
||||
AugmentationResistanceSlash = 240,
|
||||
AugmentationResistancePierce = 241,
|
||||
AugmentationResistanceBlunt = 242,
|
||||
AugmentationResistanceAcid = 243,
|
||||
AugmentationResistanceFire = 244,
|
||||
AugmentationResistanceFrost = 245,
|
||||
AugmentationResistanceLightning = 246,
|
||||
RaresTierOneLogin = 247,
|
||||
RaresTierTwoLogin = 248,
|
||||
RaresTierThreeLogin = 249,
|
||||
RaresTierFourLogin = 250,
|
||||
RaresTierFiveLogin = 251,
|
||||
RaresLoginTimestamp = 252,
|
||||
RaresTierSix = 253,
|
||||
RaresTierSeven = 254,
|
||||
RaresTierSixLogin = 255,
|
||||
RaresTierSevenLogin = 256,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
ItemAttributeLimit = 257,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
ItemAttributeLevelLimit = 258,
|
||||
ItemAttribute2ndLimit = 259,
|
||||
ItemAttribute2ndLevelLimit = 260,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
CharacterTitleId = 261,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
NumCharacterTitles = 262,
|
||||
/// <summary>93 weenie attestations.</summary>
|
||||
ResistanceModifierType = 263,
|
||||
FreeTinkersBitfield = 264,
|
||||
/// <summary>316 weenie attestations.</summary>
|
||||
EquipmentSetId = 265,
|
||||
PetClass = 266,
|
||||
/// <summary>119 weenie attestations.</summary>
|
||||
Lifespan = 267,
|
||||
/// <summary>119 weenie attestations.</summary>
|
||||
RemainingLifespan = 268,
|
||||
UseCreateQuantity = 269,
|
||||
/// <summary>62 weenie attestations.</summary>
|
||||
WieldRequirements2 = 270,
|
||||
/// <summary>62 weenie attestations.</summary>
|
||||
WieldSkilltype2 = 271,
|
||||
/// <summary>62 weenie attestations.</summary>
|
||||
WieldDifficulty2 = 272,
|
||||
/// <summary>3 weenie attestations.</summary>
|
||||
WieldRequirements3 = 273,
|
||||
/// <summary>3 weenie attestations.</summary>
|
||||
WieldSkilltype3 = 274,
|
||||
/// <summary>3 weenie attestations.</summary>
|
||||
WieldDifficulty3 = 275,
|
||||
/// <summary>17 weenie attestations.</summary>
|
||||
WieldRequirements4 = 276,
|
||||
/// <summary>17 weenie attestations.</summary>
|
||||
WieldSkilltype4 = 277,
|
||||
/// <summary>17 weenie attestations.</summary>
|
||||
WieldDifficulty4 = 278,
|
||||
/// <summary>14 weenie attestations.</summary>
|
||||
Unique = 279,
|
||||
/// <summary>365 weenie attestations.</summary>
|
||||
SharedCooldown = 280,
|
||||
/// <summary>177 weenie attestations.</summary>
|
||||
Faction1Bits = 281,
|
||||
Faction2Bits = 282,
|
||||
Faction3Bits = 283,
|
||||
Hatred1Bits = 284,
|
||||
Hatred2Bits = 285,
|
||||
Hatred3Bits = 286,
|
||||
/// <summary>61 weenie attestations.</summary>
|
||||
SocietyRankCelhan = 287,
|
||||
/// <summary>60 weenie attestations.</summary>
|
||||
SocietyRankEldweb = 288,
|
||||
/// <summary>56 weenie attestations.</summary>
|
||||
SocietyRankRadblo = 289,
|
||||
HearLocalSignals = 290,
|
||||
HearLocalSignalsRadius = 291,
|
||||
/// <summary>67 weenie attestations.</summary>
|
||||
Cleaving = 292,
|
||||
AugmentationSpecializeGearcraft = 293,
|
||||
AugmentationInfusedCreatureMagic = 294,
|
||||
AugmentationInfusedItemMagic = 295,
|
||||
AugmentationInfusedLifeMagic = 296,
|
||||
AugmentationInfusedWarMagic = 297,
|
||||
AugmentationCriticalExpertise = 298,
|
||||
AugmentationCriticalPower = 299,
|
||||
AugmentationSkilledMelee = 300,
|
||||
AugmentationSkilledMissile = 301,
|
||||
AugmentationSkilledMagic = 302,
|
||||
/// <summary>124 weenie attestations.</summary>
|
||||
ImbuedEffect2 = 303,
|
||||
/// <summary>124 weenie attestations.</summary>
|
||||
ImbuedEffect3 = 304,
|
||||
/// <summary>117 weenie attestations.</summary>
|
||||
ImbuedEffect4 = 305,
|
||||
/// <summary>117 weenie attestations.</summary>
|
||||
ImbuedEffect5 = 306,
|
||||
/// <summary>1403 weenie attestations.</summary>
|
||||
DamageRating = 307,
|
||||
/// <summary>729 weenie attestations.</summary>
|
||||
DamageResistRating = 308,
|
||||
AugmentationDamageBonus = 309,
|
||||
AugmentationDamageReduction = 310,
|
||||
ImbueStackingBits = 311,
|
||||
HealOverTime = 312,
|
||||
/// <summary>880 weenie attestations.</summary>
|
||||
CritRating = 313,
|
||||
/// <summary>843 weenie attestations.</summary>
|
||||
CritDamageRating = 314,
|
||||
/// <summary>713 weenie attestations.</summary>
|
||||
CritResistRating = 315,
|
||||
/// <summary>732 weenie attestations.</summary>
|
||||
CritDamageResistRating = 316,
|
||||
HealingResistRating = 317,
|
||||
DamageOverTime = 318,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
ItemMaxLevel = 319,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
ItemXpStyle = 320,
|
||||
EquipmentSetExtra = 321,
|
||||
AetheriaBitfield = 322,
|
||||
HealingBoostRating = 323,
|
||||
/// <summary>29 weenie attestations.</summary>
|
||||
HeritageSpecificArmor = 324,
|
||||
AlternateRacialSkills = 325,
|
||||
AugmentationJackOfAllTrades = 326,
|
||||
AugmentationResistanceNether = 327,
|
||||
AugmentationInfusedVoidMagic = 328,
|
||||
WeaknessRating = 329,
|
||||
NetherOverTime = 330,
|
||||
NetherResistRating = 331,
|
||||
LuminanceAward = 332,
|
||||
LumAugDamageRating = 333,
|
||||
LumAugDamageReductionRating = 334,
|
||||
LumAugCritDamageRating = 335,
|
||||
LumAugCritReductionRating = 336,
|
||||
LumAugSurgeEffectRating = 337,
|
||||
LumAugSurgeChanceRating = 338,
|
||||
LumAugItemManaUsage = 339,
|
||||
LumAugItemManaGain = 340,
|
||||
LumAugVitality = 341,
|
||||
LumAugHealingRating = 342,
|
||||
LumAugSkilledCraft = 343,
|
||||
LumAugSkilledSpec = 344,
|
||||
LumAugNoDestroyCraft = 345,
|
||||
RestrictInteraction = 346,
|
||||
OlthoiLootTimestamp = 347,
|
||||
OlthoiLootStep = 348,
|
||||
UseCreatesContractId = 349,
|
||||
DotResistRating = 350,
|
||||
LifeResistRating = 351,
|
||||
/// <summary>13 weenie attestations.</summary>
|
||||
CloakWeaveProc = 352,
|
||||
/// <summary>492 weenie attestations.</summary>
|
||||
WeaponType = 353,
|
||||
MeleeMastery = 354,
|
||||
RangedMastery = 355,
|
||||
SneakAttackRating = 356,
|
||||
RecklessnessRating = 357,
|
||||
DeceptionRating = 358,
|
||||
CombatPetRange = 359,
|
||||
WeaponAuraDamage = 360,
|
||||
WeaponAuraSpeed = 361,
|
||||
SummoningMastery = 362,
|
||||
HeartbeatLifespan = 363,
|
||||
UseLevelRequirement = 364,
|
||||
LumAugAllSkills = 365,
|
||||
/// <summary>259 weenie attestations.</summary>
|
||||
UseRequiresSkill = 366,
|
||||
/// <summary>259 weenie attestations.</summary>
|
||||
UseRequiresSkillLevel = 367,
|
||||
/// <summary>36 weenie attestations.</summary>
|
||||
UseRequiresSkillSpec = 368,
|
||||
/// <summary>271 weenie attestations.</summary>
|
||||
UseRequiresLevel = 369,
|
||||
/// <summary>869 weenie attestations.</summary>
|
||||
GearDamage = 370,
|
||||
/// <summary>868 weenie attestations.</summary>
|
||||
GearDamageResist = 371,
|
||||
/// <summary>854 weenie attestations.</summary>
|
||||
GearCrit = 372,
|
||||
/// <summary>854 weenie attestations.</summary>
|
||||
GearCritResist = 373,
|
||||
/// <summary>955 weenie attestations.</summary>
|
||||
GearCritDamage = 374,
|
||||
/// <summary>953 weenie attestations.</summary>
|
||||
GearCritDamageResist = 375,
|
||||
/// <summary>610 weenie attestations.</summary>
|
||||
GearHealingBoost = 376,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
GearNetherResist = 377,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
GearLifeResist = 378,
|
||||
/// <summary>640 weenie attestations.</summary>
|
||||
GearMaxHealth = 379,
|
||||
Unknown380 = 380,
|
||||
/// <summary>616 weenie attestations.</summary>
|
||||
PKDamageRating = 381,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
PKDamageResistRating = 382,
|
||||
/// <summary>643 weenie attestations.</summary>
|
||||
GearPKDamageRating = 383,
|
||||
/// <summary>640 weenie attestations.</summary>
|
||||
GearPKDamageResistRating = 384,
|
||||
Unknown385 = 385,
|
||||
/// <summary>766 weenie attestations.</summary>
|
||||
Overpower = 386,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
OverpowerResist = 387,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
GearOverpower = 388,
|
||||
/// <summary>602 weenie attestations.</summary>
|
||||
GearOverpowerResist = 389,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
Enlightenment = 390,
|
||||
}
|
||||
43
src/AcDream.Core/Properties/PropertyInt64.cs
Normal file
43
src/AcDream.Core/Properties/PropertyInt64.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyInt64</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyInt64 (0x02D1)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>long</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>Int64Id</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 3 of these 9 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyInt64 : uint
|
||||
{
|
||||
Undef = 0,
|
||||
TotalExperience = 1,
|
||||
AvailableExperience = 2,
|
||||
/// <summary>7 weenie attestations.</summary>
|
||||
AugmentationCost = 3,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
ItemTotalXp = 4,
|
||||
/// <summary>79 weenie attestations.</summary>
|
||||
ItemBaseXp = 5,
|
||||
AvailableLuminance = 6,
|
||||
MaximumLuminance = 7,
|
||||
InteractionReqs = 8,
|
||||
}
|
||||
112
src/AcDream.Core/Properties/PropertyString.cs
Normal file
112
src/AcDream.Core/Properties/PropertyString.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
// <auto-generated-source>
|
||||
// Regenerate with the 2026-07-29 enum verification campaign tooling; see
|
||||
// docs/research/2026-07-29-enum-verification-campaign.md for the oracle set,
|
||||
// the extraction method, and the open-question ledger.
|
||||
// Hand edits are pinned by PropertyEnumConformanceTests — change the oracle,
|
||||
// not the enum.
|
||||
// </auto-generated-source>
|
||||
|
||||
namespace AcDream.Core.Properties;
|
||||
|
||||
/// <summary>
|
||||
/// AC's <c>PropertyString</c> property table — the numeric keys the server sends in
|
||||
/// <c>PrivateUpdatePropertyString (0x02DD) / PublicUpdatePropertyString (0x02DE)</c>
|
||||
/// and in the property bundles carried by <c>CreateObject</c> / <c>PlayerDescription</c> /
|
||||
/// <c>IdentifyResponse</c>. The CLR payload for this table is <c>string</c>.
|
||||
///
|
||||
/// <para>Verified 2026-07-29 against two independent oracles: the vendored
|
||||
/// client-side enum catalog (<c>references/acclientlib/UtilityBelt.Common/Enums/Enums.cs</c>,
|
||||
/// which names this table <c>StringId</c>) and the 38,985-file ACE weenie export corpus
|
||||
/// (<c>references/weenies/</c>), whose per-stat <c>_comment</c> carries the enum member
|
||||
/// name beside the numeric key. 28 of these 53 members are attested by BOTH
|
||||
/// oracles with zero value conflicts; the remainder are single-sourced from the
|
||||
/// catalog because no weenie in the corpus sets them.</para>
|
||||
///
|
||||
/// <para>This enum is a <b>vocabulary</b>, not a parser contract: the wire carries a raw
|
||||
/// <c>uint</c> and unknown keys must still round-trip untouched, so never assume a
|
||||
/// received key is a defined member.</para>
|
||||
/// </summary>
|
||||
public enum PropertyString : uint
|
||||
{
|
||||
Undef = 0,
|
||||
/// <summary>38984 weenie attestations.</summary>
|
||||
Name = 1,
|
||||
Title = 2,
|
||||
/// <summary>1697 weenie attestations.</summary>
|
||||
Sex = 3,
|
||||
/// <summary>1693 weenie attestations.</summary>
|
||||
HeritageGroup = 4,
|
||||
/// <summary>1622 weenie attestations.</summary>
|
||||
Template = 5,
|
||||
AttackersName = 6,
|
||||
/// <summary>93 weenie attestations.</summary>
|
||||
Inscription = 7,
|
||||
/// <summary>93 weenie attestations.</summary>
|
||||
ScribeName = 8,
|
||||
VendorsName = 9,
|
||||
/// <summary>1 weenie attestations.</summary>
|
||||
Fellowship = 10,
|
||||
MonarchsName = 11,
|
||||
/// <summary>449 weenie attestations.</summary>
|
||||
LockCode = 12,
|
||||
/// <summary>238 weenie attestations.</summary>
|
||||
KeyCode = 13,
|
||||
/// <summary>3219 weenie attestations.</summary>
|
||||
Use = 14,
|
||||
/// <summary>5597 weenie attestations.</summary>
|
||||
ShortDesc = 15,
|
||||
/// <summary>7107 weenie attestations.</summary>
|
||||
LongDesc = 16,
|
||||
/// <summary>109 weenie attestations.</summary>
|
||||
ActivationTalk = 17,
|
||||
/// <summary>10 weenie attestations.</summary>
|
||||
UseMessage = 18,
|
||||
/// <summary>45 weenie attestations.</summary>
|
||||
ItemHeritageGroupRestriction = 19,
|
||||
/// <summary>1318 weenie attestations.</summary>
|
||||
PluralName = 20,
|
||||
MonarchsTitle = 21,
|
||||
/// <summary>96 weenie attestations.</summary>
|
||||
ActivationFailure = 22,
|
||||
ScribeAccount = 23,
|
||||
/// <summary>591 weenie attestations.</summary>
|
||||
TownName = 24,
|
||||
/// <summary>2 weenie attestations.</summary>
|
||||
CraftsmanName = 25,
|
||||
/// <summary>4 weenie attestations.</summary>
|
||||
UsePkServerError = 26,
|
||||
ScoreCachedText = 27,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreDefaultEntryFormat = 28,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreFirstEntryFormat = 29,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreLastEntryFormat = 30,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreOnlyEntryFormat = 31,
|
||||
/// <summary>5 weenie attestations.</summary>
|
||||
ScoreNoEntry = 32,
|
||||
/// <summary>859 weenie attestations.</summary>
|
||||
Quest = 33,
|
||||
/// <summary>249 weenie attestations.</summary>
|
||||
GeneratorEvent = 34,
|
||||
PatronsTitle = 35,
|
||||
HouseOwnerName = 36,
|
||||
/// <summary>170 weenie attestations.</summary>
|
||||
QuestRestriction = 37,
|
||||
AppraisalPortalDestination = 38,
|
||||
TinkerName = 39,
|
||||
ImbuerName = 40,
|
||||
HouseOwnerAccount = 41,
|
||||
DisplayName = 42,
|
||||
DateOfBirth = 43,
|
||||
ThirdPartyApi = 44,
|
||||
KillQuest = 45,
|
||||
Afk = 46,
|
||||
AllegianceName = 47,
|
||||
AugmentationAddQuest = 48,
|
||||
KillQuest2 = 49,
|
||||
KillQuest3 = 50,
|
||||
UseSendsSignal = 51,
|
||||
GearPlatingName = 52,
|
||||
}
|
||||
1398
tests/AcDream.Core.Tests/Properties/PropertyEnumConformanceTests.cs
Normal file
1398
tests/AcDream.Core.Tests/Properties/PropertyEnumConformanceTests.cs
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue