namespace Mag.Shared.Constants
{
// https://github.com/ACEmulator/ACE/blob/master/Source/ACE.Entity/Enum/Properties/PropertyFloat.cs
public enum DoubleValueKey
{
// properties marked as ServerOnly are properties we never saw in PCAPs, from here:
// http://ac.yotesfan.com/ace_object/not_used_enums.php
// source: @OptimShi
// description attributes are used by the weenie editor for a cleaner display name
Undef = 0,
HeartbeatInterval = 1,
[Ephemeral]
HeartbeatTimestamp = 2,
HealthRate = 3,
StaminaRate = 4,
ManaRate = 5,
HealthUponResurrection = 6,
StaminaUponResurrection = 7,
ManaUponResurrection = 8,
StartTime = 9,
StopTime = 10,
ResetInterval = 11,
Shade = 12,
ArmorModVsSlash = 13,
ArmorModVsPierce = 14,
ArmorModVsBludgeon = 15,
ArmorModVsCold = 16,
ArmorModVsFire = 17,
ArmorModVsAcid = 18,
ArmorModVsElectric = 19,
CombatSpeed = 20,
WeaponLength = 21,
DamageVariance = 22,
CurrentPowerMod = 23,
AccuracyMod = 24,
StrengthMod = 25,
MaximumVelocity = 26,
RotationSpeed = 27,
MotionTimestamp = 28,
WeaponDefense = 29,
WimpyLevel = 30,
VisualAwarenessRange = 31,
AuralAwarenessRange = 32,
PerceptionLevel = 33,
PowerupTime = 34,
MaxChargeDistance = 35,
ChargeSpeed = 36,
BuyPrice = 37,
SellPrice = 38,
DefaultScale = 39,
LockpickMod = 40,
RegenerationInterval = 41,
RegenerationTimestamp = 42,
GeneratorRadius = 43,
TimeToRot = 44,
DeathTimestamp = 45,
PkTimestamp = 46,
VictimTimestamp = 47,
LoginTimestamp = 48,
CreationTimestamp = 49,
MinimumTimeSincePk = 50,
DeprecatedHousekeepingPriority = 51,
AbuseLoggingTimestamp = 52,
LastPortalTeleportTimestamp = 53,
UseRadius = 54,
HomeRadius = 55,
ReleasedTimestamp = 56,
MinHomeRadius = 57,
Facing = 58,
ResetTimestamp = 59,
LogoffTimestamp = 60,
EconRecoveryInterval = 61,
WeaponOffense = 62,
DamageMod = 63,
ResistSlash = 64,
ResistPierce = 65,
ResistBludgeon = 66,
ResistFire = 67,
ResistCold = 68,
ResistAcid = 69,
ResistElectric = 70,
ResistHealthBoost = 71,
ResistStaminaDrain = 72,
ResistStaminaBoost = 73,
ResistManaDrain = 74,
ResistManaBoost = 75,
[Ephemeral]
Translucency = 76,
PhysicsScriptIntensity = 77,
Friction = 78,
Elasticity = 79,
AiUseMagicDelay = 80,
ItemMinSpellcraftMod = 81,
ItemMaxSpellcraftMod = 82,
ItemRankProbability = 83,
Shade2 = 84,
Shade3 = 85,
Shade4 = 86,
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,
HealkitMod = 100,
FrozenTimestamp = 101,
HealthRateMod = 102,
AllegianceSwearTimestamp = 103,
ObviousRadarRange = 104,
HotspotCycleTime = 105,
HotspotCycleTimeVariance = 106,
SpamTimestamp = 107,
SpamRate = 108,
BondWieldedTreasure = 109,
BulkMod = 110,
SizeMod = 111,
GagTimestamp = 112,
GeneratorUpdateTimestamp = 113,
DeathSpamTimestamp = 114,
DeathSpamRate = 115,
WildAttackProbability = 116,
FocusedProbability = 117,
CrashAndTurnProbability = 118,
CrashAndTurnRadius = 119,
CrashAndTurnBias = 120,
GeneratorInitialDelay = 121,
AiAcquireHealth = 122,
AiAcquireStamina = 123,
AiAcquireMana = 124,
///
/// this had a default of "1" - leaving comment to investigate potential options for defaulting these things (125)
///
[SendOnLogin]
ResistHealthDrain = 125,
LifestoneProtectionTimestamp = 126,
AiCounteractEnchantment = 127,
AiDispelEnchantment = 128,
TradeTimestamp = 129,
AiTargetedDetectionRadius = 130,
EmotePriority = 131,
[Ephemeral]
LastTeleportStartTimestamp = 132,
EventSpamTimestamp = 133,
EventSpamRate = 134,
InventoryOffset = 135,
CriticalMultiplier = 136,
ManaStoneDestroyChance = 137,
SlayerDamageBonus = 138,
AllegianceInfoSpamTimestamp = 139,
AllegianceInfoSpamRate = 140,
NextSpellcastTimestamp = 141,
[Ephemeral]
AppraisalRequestedTimestamp = 142,
AppraisalHeartbeatDueTimestamp = 143,
ManaConversionMod = 144,
LastPkAttackTimestamp = 145,
FellowshipUpdateTimestamp = 146,
CriticalFrequency = 147,
LimboStartTimestamp = 148,
WeaponMissileDefense = 149,
WeaponMagicDefense = 150,
IgnoreShield = 151,
ElementalDamageMod = 152,
StartMissileAttackTimestamp = 153,
LastRareUsedTimestamp = 154,
IgnoreArmor = 155,
ProcSpellRate = 156,
ResistanceModifier = 157,
AllegianceGagTimestamp = 158,
AbsorbMagicDamage = 159,
CachedMaxAbsorbMagicDamage = 160,
GagDuration = 161,
AllegianceGagDuration = 162,
[SendOnLogin]
GlobalXpMod = 163,
HealingModifier = 164,
ArmorModVsNether = 165,
ResistNether = 166,
CooldownDuration = 167,
[SendOnLogin]
WeaponAuraOffense = 168,
[SendOnLogin]
WeaponAuraDefense = 169,
[SendOnLogin]
WeaponAuraElemental = 170,
[SendOnLogin]
WeaponAuraManaConv = 171,
// ACE Specific
[ServerOnly]
PCAPRecordedWorkmanship = 8004,
[ServerOnly]
PCAPRecordedVelocityX = 8010,
[ServerOnly]
PCAPRecordedVelocityY = 8011,
[ServerOnly]
PCAPRecordedVelocityZ = 8012,
[ServerOnly]
PCAPRecordedAccelerationX = 8013,
[ServerOnly]
PCAPRecordedAccelerationY = 8014,
[ServerOnly]
PCAPRecordedAccelerationZ = 8015,
[ServerOnly]
PCAPRecordeOmegaX = 8016,
[ServerOnly]
PCAPRecordeOmegaY = 8017,
[ServerOnly]
PCAPRecordeOmegaZ = 8018,
// Decal Specific
SlashProt_Decal = 167772160,
PierceProt_Decal = 167772161,
BludgeonProt_Decal = 167772162,
AcidProt_Decal = 167772163,
LightningProt_Decal = 167772164,
FireProt_Decal = 167772165,
ColdProt_Decal = 167772166,
Heading_Decal = 167772167,
ApproachDistance_Decal = 167772168,
SalvageWorkmanship_Decal = 167772169,
Scale_Decal = 167772170,
Variance_Decal = 167772171,
AttackBonus_Decal = 167772172,
Range_Decal = 167772173,
DamageBonus_Decal = 167772174,
}
public static class DoubleValueKeyTools
{
///
/// Converts a decal specific IntValueKey to the actual IntValueKey.
/// If this is not an IntValueKey, 0 will be returned.
///
public static uint ConvertToDouble(DoubleValueKey input)
{
if (input == DoubleValueKey.SlashProt_Decal) return (int)DoubleValueKey.ArmorModVsSlash;
if (input == DoubleValueKey.PierceProt_Decal) return (int)DoubleValueKey.ArmorModVsPierce;
if (input == DoubleValueKey.BludgeonProt_Decal) return (int)DoubleValueKey.ArmorModVsBludgeon;
if (input == DoubleValueKey.AcidProt_Decal) return (int)DoubleValueKey.ArmorModVsAcid;
if (input == DoubleValueKey.LightningProt_Decal) return (int)DoubleValueKey.ArmorModVsElectric;
if (input == DoubleValueKey.FireProt_Decal) return (int)DoubleValueKey.ArmorModVsFire;
if (input == DoubleValueKey.ColdProt_Decal) return (int)DoubleValueKey.ArmorModVsCold;
if (input == DoubleValueKey.ApproachDistance_Decal) return (int)DoubleValueKey.UseRadius;
if (input == DoubleValueKey.Scale_Decal) return (int)DoubleValueKey.DefaultScale;
if (input == DoubleValueKey.Variance_Decal) return (int)DoubleValueKey.DamageVariance;
if (input == DoubleValueKey.AttackBonus_Decal) return (int)DoubleValueKey.WeaponOffense;;
if (input == DoubleValueKey.Range_Decal) return (int)DoubleValueKey.MaximumVelocity;
if (input == DoubleValueKey.DamageBonus_Decal) return (int)DoubleValueKey.DamageMod;
return 0;
}
}
}