eq2go/internal/items/constants.go

687 lines
20 KiB
Go

package items
// Equipment slot constants
const (
BaseEquipment = 0
AppearanceEquipment = 1
MaxEquipment = 2 // max iterations for equipment (base is 0, appearance is 1)
)
// EQ2 slot positions (array indices)
const (
EQ2PrimarySlot = 0
EQ2SecondarySlot = 1
EQ2HeadSlot = 2
EQ2ChestSlot = 3
EQ2ShouldersSlot = 4
EQ2ForearmsSlot = 5
EQ2HandsSlot = 6
EQ2LegsSlot = 7
EQ2FeetSlot = 8
EQ2LRingSlot = 9
EQ2RRingSlot = 10
EQ2EarsSlot1 = 11
EQ2EarsSlot2 = 12
EQ2NeckSlot = 13
EQ2LWristSlot = 14
EQ2RWristSlot = 15
EQ2RangeSlot = 16
EQ2AmmoSlot = 17
EQ2WaistSlot = 18
EQ2CloakSlot = 19
EQ2CharmSlot1 = 20
EQ2CharmSlot2 = 21
EQ2FoodSlot = 22
EQ2DrinkSlot = 23
EQ2TexturesSlot = 24
EQ2HairSlot = 25
EQ2BeardSlot = 26
EQ2WingsSlot = 27
EQ2NakedChestSlot = 28
EQ2NakedLegsSlot = 29
EQ2BackSlot = 30
)
// Original slot positions (for older clients)
const (
EQ2OrigFoodSlot = 18
EQ2OrigDrinkSlot = 19
EQ2DoFCharmSlot1 = 18
EQ2DoFCharmSlot2 = 19
EQ2DoFFoodSlot = 20
EQ2DoFDrinkSlot = 21
)
// Slot bitmasks for equipment validation
const (
PrimarySlot = 1
SecondarySlot = 2
HeadSlot = 4
ChestSlot = 8
ShouldersSlot = 16
ForearmsSlot = 32
HandsSlot = 64
LegsSlot = 128
FeetSlot = 256
LRingSlot = 512
RRingSlot = 1024
EarsSlot1 = 2048
EarsSlot2 = 4096
NeckSlot = 8192
LWristSlot = 16384
RWristSlot = 32768
RangeSlot = 65536
AmmoSlot = 131072
WaistSlot = 262144
CloakSlot = 524288
CharmSlot1 = 1048576
CharmSlot2 = 2097152
FoodSlot = 4194304
DrinkSlot = 8388608
TexturesSlot = 16777216
HairSlot = 33554432
BeardSlot = 67108864
WingsSlot = 134217728
NakedChestSlot = 268435456
NakedLegsSlot = 536870912
BackSlot = 1073741824
OrigFoodSlot = 524288
OrigDrinkSlot = 1048576
DoFFoodSlot = 1048576
DoFDrinkSlot = 2097152
)
// Inventory slot limits and constants
const (
ClassicEQMaxBagSlots = 20
DoFEQMaxBagSlots = 36
NumBankSlots = 12
NumSharedBankSlots = 8
ClassicNumSlots = 22
NumSlots = 25
NumInvSlots = 6
InvSlot1 = 0
InvSlot2 = 50
InvSlot3 = 100
InvSlot4 = 150
InvSlot5 = 200
InvSlot6 = 250
BankSlot1 = 1000
BankSlot2 = 1100
BankSlot3 = 1200
BankSlot4 = 1300
BankSlot5 = 1400
BankSlot6 = 1500
BankSlot7 = 1600
BankSlot8 = 1700
)
// Item flags (bitmask values)
const (
Attuned = 1
Attuneable = 2
Artifact = 4
Lore = 8
Temporary = 16
NoTrade = 32
NoValue = 64
NoZone = 128
NoDestroy = 256
Crafted = 512
GoodOnly = 1024
EvilOnly = 2048
StackLore = 4096
LoreEquip = 8192
NoTransmute = 16384
Cursed = 32768
)
// Item flags2 (bitmask values)
const (
Ornate = 1
Heirloom = 2
AppearanceOnly = 4
Unlocked = 8
Reforged = 16
NoRepair = 32
Ethereal = 64
Refined = 128
NoSalvage = 256
Indestructible = 512
NoExperiment = 1024
HouseLore = 2048
Flags24096 = 4096 // AoM: not used at this time
BuildingBlock = 8192
FreeReforge = 16384
Flags232768 = 32768 // AoM: not used at this time
)
// Item wield types
const (
ItemWieldTypeDual = 1
ItemWieldTypeSingle = 2
ItemWieldTypeTwoHand = 4
)
// Item types
const (
ItemTypeNormal = 0
ItemTypeWeapon = 1
ItemTypeRanged = 2
ItemTypeArmor = 3
ItemTypeShield = 4
ItemTypeBag = 5
ItemTypeSkill = 6
ItemTypeRecipe = 7
ItemTypeFood = 8
ItemTypeBauble = 9
ItemTypeHouse = 10
ItemTypeThrown = 11
ItemTypeHouseContainer = 12
ItemTypeAdornment = 13
ItemTypeGenericAdornment = 14
ItemTypeProfile = 16
ItemTypePattern = 17
ItemTypeArmorset = 18
ItemTypeItemcrate = 18
ItemTypeBook = 19
ItemTypeDecoration = 20
ItemTypeDungeonMaker = 21
ItemTypeMarketplace = 22
)
// Item menu types (bitmask values)
const (
ItemMenuTypeGeneric = 1
ItemMenuTypeEquip = 2
ItemMenuTypeBag = 4
ItemMenuTypeHouse = 8
ItemMenuTypeEmptyBag = 16
ItemMenuTypeScribe = 32
ItemMenuTypeBankBag = 64
ItemMenuTypeInsufficientKnowledge = 128
ItemMenuTypeActivate = 256
ItemMenuTypeBroken = 512
ItemMenuTypeTwoHanded = 1024
ItemMenuTypeAttuned = 2048
ItemMenuTypeAttuneable = 4096
ItemMenuTypeBook = 8192
ItemMenuTypeDisplayCharges = 16384
ItemMenuTypeTest1 = 32768
ItemMenuTypeNamepet = 65536
ItemMenuTypeMentored = 131072
ItemMenuTypeConsume = 262144
ItemMenuTypeUse = 524288
ItemMenuTypeConsumeOff = 1048576
ItemMenuTypeTest3 = 1310720
ItemMenuTypeTest4 = 2097152
ItemMenuTypeTest5 = 4194304
ItemMenuTypeTest6 = 8388608
ItemMenuTypeTest7 = 16777216
ItemMenuTypeTest8 = 33554432
ItemMenuTypeTest9 = 67108864
ItemMenuTypeDamaged = 134217728
ItemMenuTypeBroken2 = 268435456
ItemMenuTypeRedeem = 536870912
ItemMenuTypeTest10 = 1073741824
ItemMenuTypeUnpack = 2147483648
)
// Original item menu types
const (
OrigItemMenuTypeFood = 2048
OrigItemMenuTypeDrink = 4096
OrigItemMenuTypeAttuned = 8192
OrigItemMenuTypeAttuneable = 16384
OrigItemMenuTypeBook = 32768
OrigItemMenuTypeStackable = 65536
OrigItemMenuTypeNamepet = 262144
)
// Item menu type2 flags
const (
ItemMenuType2Test1 = 1
ItemMenuType2Test2 = 2
ItemMenuType2Unpack = 4
ItemMenuType2Test4 = 8
ItemMenuType2Test5 = 16
ItemMenuType2Test6 = 32
ItemMenuType2Test7 = 64
ItemMenuType2Test8 = 128
ItemMenuType2Test9 = 256
ItemMenuType2Test10 = 512
ItemMenuType2Test11 = 1024
ItemMenuType2Test12 = 2048
ItemMenuType2Test13 = 4096
ItemMenuType2Test14 = 8192
ItemMenuType2Test15 = 16384
ItemMenuType2Test16 = 32768
)
// Item tier tags
const (
ItemTagCommon = 2
ItemTagUncommon = 3
ItemTagTreasured = 4
ItemTagLegendary = 7
ItemTagFabled = 9
ItemTagMythical = 12
)
// Broker type flags
const (
ItemBrokerTypeAny = 0xFFFFFFFF
ItemBrokerTypeAny64Bit = 0xFFFFFFFFFFFFFFFF
ItemBrokerTypeAdornment = 134217728
ItemBrokerTypeAmmo = 1024
ItemBrokerTypeAttuneable = 16384
ItemBrokerTypeBag = 2048
ItemBrokerTypeBauble = 16777216
ItemBrokerTypeBook = 128
ItemBrokerTypeChainarmor = 2097152
ItemBrokerTypeCloak = 1073741824
ItemBrokerTypeClotharmor = 524288
ItemBrokerTypeCollectable = 67108864
ItemBrokerTypeCrushweapon = 4
ItemBrokerTypeDrink = 131072
ItemBrokerTypeFood = 4096
ItemBrokerTypeHouseitem = 512
ItemBrokerTypeJewelry = 262144
ItemBrokerTypeLeatherarmor = 1048576
ItemBrokerTypeLore = 8192
ItemBrokerTypeMisc = 1
ItemBrokerTypePierceweapon = 8
ItemBrokerTypePlatearmor = 4194304
ItemBrokerTypePoison = 65536
ItemBrokerTypePotion = 32768
ItemBrokerTypeRecipebook = 8388608
ItemBrokerTypeSalesdisplay = 33554432
ItemBrokerTypeShield = 32
ItemBrokerTypeSlashweapon = 2
ItemBrokerTypeSpellscroll = 64
ItemBrokerTypeTinkered = 268435456
ItemBrokerTypeTradeskill = 256
)
// 2-handed weapon broker types
const (
ItemBrokerType2HCrush = 17179869184
ItemBrokerType2HPierce = 34359738368
ItemBrokerType2HSlash = 8589934592
)
// Broker slot flags
const (
ItemBrokerSlotAny = 0xFFFFFFFF
ItemBrokerSlotAmmo = 65536
ItemBrokerSlotCharm = 524288
ItemBrokerSlotChest = 32
ItemBrokerSlotCloak = 262144
ItemBrokerSlotDrink = 2097152
ItemBrokerSlotEars = 4096
ItemBrokerSlotFeet = 1024
ItemBrokerSlotFood = 1048576
ItemBrokerSlotForearms = 128
ItemBrokerSlotHands = 256
ItemBrokerSlotHead = 16
ItemBrokerSlotLegs = 512
ItemBrokerSlotNeck = 8192
ItemBrokerSlotPrimary = 1
ItemBrokerSlotPrimary2H = 2
ItemBrokerSlotRangeWeapon = 32768
ItemBrokerSlotRing = 2048
ItemBrokerSlotSecondary = 8
ItemBrokerSlotShoulders = 64
ItemBrokerSlotWaist = 131072
ItemBrokerSlotWrist = 16384
)
// Broker stat type flags
const (
ItemBrokerStatTypeNone = 0
ItemBrokerStatTypeDef = 2
ItemBrokerStatTypeStr = 4
ItemBrokerStatTypeSta = 8
ItemBrokerStatTypeAgi = 16
ItemBrokerStatTypeWis = 32
ItemBrokerStatTypeInt = 64
ItemBrokerStatTypeHealth = 128
ItemBrokerStatTypePower = 256
ItemBrokerStatTypeHeat = 512
ItemBrokerStatTypeCold = 1024
ItemBrokerStatTypeMagic = 2048
ItemBrokerStatTypeMental = 4096
ItemBrokerStatTypeDivine = 8192
ItemBrokerStatTypePoison = 16384
ItemBrokerStatTypeDisease = 32768
ItemBrokerStatTypeCrush = 65536
ItemBrokerStatTypeSlash = 131072
ItemBrokerStatTypePierce = 262144
ItemBrokerStatTypeCritical = 524288
ItemBrokerStatTypeDblAttack = 1048576
ItemBrokerStatTypeAbilityMod = 2097152
ItemBrokerStatTypePotency = 4194304
ItemBrokerStatTypeAEAutoattack = 8388608
ItemBrokerStatTypeAttackspeed = 16777216
ItemBrokerStatTypeBlockchance = 33554432
ItemBrokerStatTypeCastingspeed = 67108864
ItemBrokerStatTypeCritbonus = 134217728
ItemBrokerStatTypeCritchance = 268435456
ItemBrokerStatTypeDPS = 536870912
ItemBrokerStatTypeFlurrychance = 1073741824
ItemBrokerStatTypeHategain = 2147483648
ItemBrokerStatTypeMitigation = 4294967296
ItemBrokerStatTypeMultiAttack = 8589934592
ItemBrokerStatTypeRecovery = 17179869184
ItemBrokerStatTypeReuseSpeed = 34359738368
ItemBrokerStatTypeSpellWpndmg = 68719476736
ItemBrokerStatTypeStrikethrough = 137438953472
ItemBrokerStatTypeToughness = 274877906944
ItemBrokerStatTypeWeapondmg = 549755813888
)
// Special slot values
const (
OverflowSlot = 0xFFFFFFFE
SlotInvalid = 0xFFFF
)
// Basic item stats (0-4)
const (
ItemStatStr = 0
ItemStatSta = 1
ItemStatAgi = 2
ItemStatWis = 3
ItemStatInt = 4
)
// Skill-based stats (100+)
const (
ItemStatAdorning = 100
ItemStatAggression = 101
ItemStatArtificing = 102
ItemStatArtistry = 103
ItemStatChemistry = 104
ItemStatCrushing = 105
ItemStatDefense = 106
ItemStatDeflection = 107
ItemStatDisruption = 108
ItemStatFishing = 109
ItemStatFletching = 110
ItemStatFocus = 111
ItemStatForesting = 112
ItemStatGathering = 113
ItemStatMetalShaping = 114
ItemStatMetalworking = 115
ItemStatMining = 116
ItemStatMinistration = 117
ItemStatOrdination = 118
ItemStatParry = 119
ItemStatPiercing = 120
ItemStatRanged = 121
ItemStatSafeFall = 122
ItemStatScribing = 123
ItemStatSculpting = 124
ItemStatSlashing = 125
ItemStatSubjugation = 126
ItemStatSwimming = 127
ItemStatTailoring = 128
ItemStatTinkering = 129
ItemStatTransmuting = 130
ItemStatTrapping = 131
ItemStatWeaponSkills = 132
ItemStatPowerCostReduction = 133
ItemStatSpellAvoidance = 134
)
// Resistance stats (200+)
const (
ItemStatVsPhysical = 200
ItemStatVsHeat = 201 // elemental
ItemStatVsPoison = 202 // noxious
ItemStatVsMagic = 203 // arcane
ItemStatVsSlash = 204
ItemStatVsCrush = 205
ItemStatVsPierce = 206
ItemStatVsCold = 207
ItemStatVsMental = 208
ItemStatVsDivine = 209
ItemStatVsDrowning = 210
ItemStatVsFalling = 211
ItemStatVsPain = 212
ItemStatVsMelee = 213
ItemStatVsDisease = 214
)
// Damage type stats (300+)
const (
ItemStatDmgSlash = 300
ItemStatDmgCrush = 301
ItemStatDmgPierce = 302
ItemStatDmgHeat = 303
ItemStatDmgCold = 304
ItemStatDmgMagic = 305
ItemStatDmgMental = 306
ItemStatDmgDivine = 307
ItemStatDmgDisease = 308
ItemStatDmgPoison = 309
ItemStatDmgDrowning = 310
ItemStatDmgFalling = 311
ItemStatDmgPain = 312
ItemStatDmgMelee = 313
)
// Pool stats (500+)
const (
ItemStatHealth = 500
ItemStatPower = 501
ItemStatConcentration = 502
ItemStatSavagery = 503
)
// Advanced stats (600+)
const (
ItemStatHPRegen = 600
ItemStatManaRegen = 601
ItemStatHPRegenPPT = 602
ItemStatMPRegenPPT = 603
ItemStatCombatHPRegenPPT = 604
ItemStatCombatMPRegenPPT = 605
ItemStatMaxHP = 606
ItemStatMaxHPPerc = 607
ItemStatMaxHPPercFinal = 608
ItemStatSpeed = 609
ItemStatSlow = 610
ItemStatMountSpeed = 611
ItemStatMountAirSpeed = 612
ItemStatLeapSpeed = 613
ItemStatLeapTime = 614
ItemStatGlideEfficiency = 615
ItemStatOffensiveSpeed = 616
ItemStatAttackSpeed = 617
ItemStatSpellWeaponAttackSpeed = 618
ItemStatMaxMana = 619
ItemStatMaxManaPerc = 620
ItemStatMaxAttPerc = 621
ItemStatBlurVision = 622
ItemStatMagicLevelImmunity = 623
ItemStatHateGainMod = 624
ItemStatCombatExpMod = 625
ItemStatTradeskillExpMod = 626
ItemStatAchievementExpMod = 627
ItemStatSizeMod = 628
ItemStatDPS = 629
ItemStatSpellWeaponDPS = 630
ItemStatStealth = 631
ItemStatInvis = 632
ItemStatSeeStealth = 633
ItemStatSeeInvis = 634
ItemStatEffectiveLevelMod = 635
ItemStatRiposteChance = 636
ItemStatParryChance = 637
ItemStatDodgeChance = 638
ItemStatAEAutoattackChance = 639
ItemStatSpellWeaponAEAutoattackChance = 640
ItemStatMultiattackChance = 641
ItemStatPvPDoubleAttackChance = 642
ItemStatSpellWeaponDoubleAttackChance = 643
ItemStatPvPSpellWeaponDoubleAttackChance = 644
ItemStatSpellMultiAttackChance = 645
ItemStatPvPSpellDoubleAttackChance = 646
ItemStatFlurry = 647
ItemStatSpellWeaponFlurry = 648
ItemStatMeleeDamageMultiplier = 649
ItemStatExtraHarvestChance = 650
ItemStatExtraShieldBlockChance = 651
ItemStatItemHPRegenPPT = 652
ItemStatItemPPRegenPPT = 653
ItemStatMeleeCritChance = 654
ItemStatCritAvoidance = 655
ItemStatBeneficialCritChance = 656
ItemStatCritBonus = 657
ItemStatPvPCritBonus = 658
ItemStatPotency = 659
ItemStatPvPPotency = 660
ItemStatUnconsciousHPMod = 661
ItemStatAbilityReuseSpeed = 662
ItemStatAbilityRecoverySpeed = 663
ItemStatAbilityCastingSpeed = 664
ItemStatSpellReuseSpeed = 665
ItemStatMeleeWeaponRange = 666
ItemStatRangedWeaponRange = 667
ItemStatFallingDamageReduction = 668
ItemStatRiposteDamage = 669
ItemStatMinimumDeflectionChance = 670
ItemStatMovementWeave = 671
ItemStatCombatHPRegen = 672
ItemStatCombatManaRegen = 673
ItemStatContestSpeedBoost = 674
ItemStatTrackingAvoidance = 675
ItemStatStealthInvisSpeedMod = 676
ItemStatLootCoin = 677
ItemStatArmorMitigationIncrease = 678
ItemStatAmmoConservation = 679
ItemStatStrikethrough = 680
ItemStatStatusBonus = 681
ItemStatAccuracy = 682
ItemStatCounterstrike = 683
ItemStatShieldBash = 684
ItemStatWeaponDamageBonus = 685
ItemStatWeaponDamageBonusMeleeOnly = 686
ItemStatAdditionalRiposteChance = 687
ItemStatCriticalMitigation = 688
ItemStatPvPToughness = 689
ItemStatPvPLethality = 690
ItemStatStaminaBonus = 691
ItemStatWisdomMitBonus = 692
ItemStatHealReceive = 693
ItemStatHealReceivePerc = 694
ItemStatPvPCriticalMitigation = 695
ItemStatBaseAvoidanceBonus = 696
ItemStatInCombatSavageryRegen = 697
ItemStatOutOfCombatSavageryRegen = 698
ItemStatSavageryRegen = 699
ItemStatSavageryGainMod = 6100
ItemStatMaxSavageryLevel = 6101
ItemStatSpellWeaponDamageBonus = 6102
ItemStatInCombatDissonanceRegen = 6103
ItemStatOutOfCombatDissonanceRegen = 6104
ItemStatDissonanceRegen = 6105
ItemStatDissonanceGainMod = 6106
ItemStatAEAutoattackAvoid = 6107
ItemStatAgnosticDamageBonus = 6108
ItemStatAgnosticHealBonus = 6109
ItemStatTitheGain = 6110
ItemStatFerver = 6111
ItemStatResolve = 6112
ItemStatCombatMitigation = 6113
ItemStatAbilityMitigation = 6114
ItemStatMultiAttackAvoidance = 6115
ItemStatDoubleCastAvoidance = 6116
ItemStatAbilityDoubleCastAvoidance = 6117
ItemStatDamagePerSecondMitigation = 6118
ItemStatFerverMitigation = 6119
ItemStatFlurryAvoidance = 6120
ItemStatWeaponDamageBonusMitigation = 6121
ItemStatAbilityDoubleCastChance = 6122
ItemStatAbilityModifierMitigation = 6123
ItemStatStatusEarned = 6124
)
// Spell/ability modifier stats (700+)
const (
ItemStatSpellDamage = 700
ItemStatHealAmount = 701
ItemStatSpellAndHeal = 702
ItemStatCombatArtDamage = 703
ItemStatSpellAndCombatArtDamage = 704
ItemStatTauntAmount = 705
ItemStatTauntAndCombatArtDamage = 706
ItemStatAbilityModifier = 707
)
// Server-only stats (800+) - never sent to client
const (
ItemStatDurabilityMod = 800
ItemStatDurabilityAdd = 801
ItemStatProgressAdd = 802
ItemStatProgressMod = 803
ItemStatSuccessMod = 804
ItemStatCritSuccessMod = 805
ItemStatExDurabilityMod = 806
ItemStatExDurabilityAdd = 807
ItemStatExProgressMod = 808
ItemStatExProgressAdd = 809
ItemStatExSuccessMod = 810
ItemStatExCritSuccessMod = 811
ItemStatExCritFailureMod = 812
ItemStatRareHarvestChance = 813
ItemStatMaxCrafting = 814
ItemStatComponentRefund = 815
ItemStatBountifulHarvest = 816
)
// Uncontested stats (850+)
const (
ItemStatUncontestedParry = 850
ItemStatUncontestedBlock = 851
ItemStatUncontestedDodge = 852
ItemStatUncontestedRiposte = 853
)
// Display flags
const (
DisplayFlagRedText = 1
DisplayFlagNoGuildStatus = 8
DisplayFlagNoBuyback = 16
DisplayFlagNotForSale = 64
DisplayFlagNoBuy = 128
)
// House store item flags
const (
HouseStoreItemTextRed = 1
HouseStoreUnknownBit2 = 2
HouseStoreUnknownBit4 = 4
HouseStoreForSale = 8
HouseStoreUnknownBit16 = 16
HouseStoreVaultTab = 32
)
// Log category
const (
LogCategoryItems = "Items"
)
// Item validation constants
const (
MaxItemNameLength = 255 // Maximum length for item names
MaxItemDescLength = 1000 // Maximum length for item descriptions
)
// Default item values
const (
DefaultItemCondition = 100 // 100% condition for new items
DefaultItemDurability = 100 // 100% durability for new items
)