Weapons
Contracts
Addresses
DFK Chain
0x41A73e10B92d6e81D758D74b0c8eB7a8DD3df9a8
0x0d75F786ec7D0554311aE3DcA45CF5B9DABE642D
Kaia
0x4b5629B044248185bDc2C829AF460D2D9ded0b47
0xa87a43B1EB0478512Ff1c62C946f195C1dd8902a
Metis
0xA4f8D1b4F8f1363F0FC8d6189089ff068c800AB4
0x5e33cd66876dBE739f7Af430559E1CC856a3Ff2d
Interface
interface IWeaponCoreDiamond {
event Approval(address indexed owner, address indexed operator, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
event BonusInfoPhysicalAttackUpdated(address indexed owner, uint256 weaponId, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack);
event DisplayInfoMagicAttackUpdated(address indexed owner, uint256 weaponId, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack);
event StateEnchantmentsUpdated(address indexed owner, uint256 weaponId, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments);
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event WeaponCreated(address indexed owner, uint256 indexed weaponId, (uint256 id, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack) weapon);
event WeaponUpdated(address indexed owner, uint256 indexed weaponId, (uint256 id, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack) weapon);
// View Functions
function balanceOf(address account) view returns (uint256);
function getApproved(uint256 tokenId) view returns (address);
function getStateEnchantments(uint256 _id) view returns ((uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3));
function getUserWeaponIds(address _address) view returns (uint256[]);
function getUserWeapons(address _address) view returns ((uint256 id, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack)[]);
function getWeapon(uint256 _id) view returns ((uint256 id, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack));
function getWeapons(uint256[] _ids) view returns ((uint256 id, (uint8 weaponType, uint16 displayId, uint8 rarity, uint64 craftedBy, uint8 dye1, uint8 dye2, uint16 basePotency, uint8 focusRequirement, uint16 mAccuracyAtRequirement, uint8 mScalarStat1, uint8 mScalarStat2, uint8 mScalarStat3, uint8 mScalarValue1, uint8 mScalarValue2, uint8 mScalarValue3, uint16 mScalarMax1, uint16 mScalarMax2, uint16 mScalarMax3, uint8 restorationCount) displayInfoMagicAttack, (uint64 equippedTo, uint64 equippableAt, uint16 maxDurability, uint16 durability, uint8 maxRepairs, uint8 remainingRepairs, uint8 equipRequirement, uint8 enchantmentType1, uint8 enchantmentType2, uint8 enchantmentType3, uint16 enchantmentScalar1, uint16 enchantmentScalar2, uint16 enchantmentScalar3) stateEnchantments, (uint8 bonus1, uint8 bonus2, uint8 bonus3, uint8 bonus4, uint16 bonusScalar1, uint16 bonusScalar2, uint16 bonusScalar3, uint16 bonusScalar4, uint16 baseDamage, uint8 accuracyRequirement, uint16 pAccuracyAtRequirement, uint8 pScalarStat1, uint8 pScalarStat2, uint8 pScalarStat3, uint8 pScalarValue1, uint8 pScalarValue2, uint8 pScalarValue3, uint16 pScalarMax1, uint16 pScalarMax2, uint16 pScalarMax3, uint16 uniqueSettings, uint8 speedModifier) bonusInfoPhysicalAttack)[]);
function isApprovedForAll(address account, address operator) view returns (bool);
function name() view returns (string);
function ownerOf(uint256 tokenId) view returns (address);
function symbol() view returns (string);
function tokenByIndex(uint256 index) view returns (uint256);
function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256);
function tokenURI(uint256 tokenId) view returns (string);
function totalSupply() view returns (uint256);
function validateEquipmentVisageTypeMatch(uint256 _equipmentId, uint256 _visageId) view returns (bool);
function validateEquipping((uint256 id, (uint256 summonedTime, uint256 nextSummonTime, uint256 summonerId, uint256 assistantId, uint32 summons, uint32 maxSummons) summoningInfo, (uint256 statGenes, uint256 visualGenes, uint8 rarity, bool shiny, uint16 generation, uint32 firstName, uint32 lastName, uint8 shinyStyle, uint8 class, uint8 subClass) info, (uint256 staminaFullAt, uint256 hpFullAt, uint256 mpFullAt, uint16 level, uint64 xp, address currentQuest, uint8 sp, uint8 status) state, (uint16 strength, uint16 intelligence, uint16 wisdom, uint16 luck, uint16 agility, uint16 vitality, uint16 endurance, uint16 dexterity, uint16 hp, uint16 mp, uint16 stamina) stats, (uint16 strength, uint16 intelligence, uint16 wisdom, uint16 luck, uint16 agility, uint16 vitality, uint16 endurance, uint16 dexterity, uint16 hpSm, uint16 hpRg, uint16 hpLg, uint16 mpSm, uint16 mpRg, uint16 mpLg) primaryStatGrowth, (uint16 strength, uint16 intelligence, uint16 wisdom, uint16 luck, uint16 agility, uint16 vitality, uint16 endurance, uint16 dexterity, uint16 hpSm, uint16 hpRg, uint16 hpLg, uint16 mpSm, uint16 mpRg, uint16 mpLg) secondaryStatGrowth, (uint16 mining, uint16 gardening, uint16 foraging, uint16 fishing, uint16 craft1, uint16 craft2) professions, (uint256 equippedSlots, uint256 petId, uint128 weapon1Id, uint128 weapon1VisageId, uint128 weapon2Id, uint128 weapon2VisageId, uint128 offhand1Id, uint128 offhand1VisageId, uint128 offhand2Id, uint128 offhand2VisageId, uint128 armorId, uint128 armorVisageId, uint128 accessoryId, uint128 accessoryVisageId) equipment) _hero, uint256 _equipmentId, uint8 _slot) view returns (bool);
// State-Changing Functions
function approve(address operator, uint256 tokenId) payable;
function safeTransferFrom(address from, address to, uint256 tokenId) payable;
function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) payable;
function setApprovalForAll(address operator, bool status);
function transferFrom(address from, address to, uint256 tokenId) payable;
}ABI
Types
Weapon
The primary Weapon struct contains the item's unique ID on the contract, and three sub-structs that hold the item data.
DisplayInfoMagicAttack
displayId
uint16
Defines the item's base appearance
dye1
uint8
A unique mapping indicating the primary color variation for some items (0 = no dye). See Dye1.
dye2
uint8
A unique mapping indicating the secondary color variation for some items (0 = no dye). See Dye2.
basePotency
uint16
The base Potency of the weapon
focusRequirement
uint8
The required Focus for a Hero to meet the base Magical Accuracy of the weapon (one-decimal precision)
mAccuracyAtRequirement
uint8
The base Magical Accuracy of the weapon when the Hero meets the given focusRequirement (one-decimal precision)
mScalarStat1
uint8
Magical damage Scalar Stat mapping (0 = none)
mScalarStat2
uint8
Magical damage Scalar Stat mapping (0 = none)
mScalarStat3
uint8
Magical damage Scalar Stat mapping (0 = none)
mScalarValue1
uint8
The scalar value for mScalarStat1 (one-decimal precision multiplier, e.g. 5 = 0.5x)
mScalarValue2
uint8
The scalar value for mScalarStat2 (one-decimal precision multiplier, e.g. 5 = 0.5x)
mScalarValue3
uint8
The scalar value for mScalarStat3 (one-decimal precision multiplier, e.g. 5 = 0.5x)
mScalarMax1
uint16
The maximum value that can be obtained from the Hero's mScalarStat1 * mScalarValue1
mScalarMax2
uint16
The maximum value that can be obtained from the Hero's mScalarStat2 * mScalarValue2
mScalarMax3
uint16
The maximum value that can be obtained from the Hero's mScalarStat3 * mScalarValue3
restorationCount
uint8
The number of times the item's remainingRepairs have been restored
StateEnchantments
equippedTo
uint64
The Hero ID of the Hero that the item is equipped to
equippableAt
uint64
The Unix timestamp when the item is next equippable
maxDurability
uint16
The maximum durability of the item
durability
uint16
The current durability of the item
maxRepairs
uint8
The maximum number of repairs for the item
remainingRepairs
uint8
The remaining number of repairs for the item
equipRequirement
uint8
The Strength requirement to equip the item
enchantmentType1
uint8
A mapping of the enchantment type:
0= no enchantment slot available1= empty enchantment slot
enchantmentType2
uint8
A mapping of the enchantment type:
0= no enchantment slot available1= empty enchantment slot
enchantmentType3
uint8
A mapping of the enchantment type:
0= no enchantment slot available1= empty enchantment slot
enchantmentScalar1
uint16
The scalar value of the corresponding enchantment
enchantmentScalar2
uint16
The scalar value of the corresponding enchantment
enchantmentScalar3
uint16
The scalar value of the corresponding enchantment
BonusInfoPhysicalAttack
bonus1
uint8
A mapping of an item bonus ID (0 = no bonus)
bonus2
uint8
A mapping of an item bonus ID (0 = no bonus)
bonus3
uint8
A mapping of an item bonus ID (0 = no bonus)
bonus4
uint8
A mapping of an item bonus ID (0 = no bonus)
bonus1Scalar
uint16
The scalar value of the corresponding bonus
bonus2Scalar
uint16
The scalar value of the corresponding bonus
bonus3Scalar
uint16
The scalar value of the corresponding bonus
bonus4Scalar
uint16
The scalar value of the corresponding bonus
baseDamage
uint16
The base damage of the weapon
accuracyRequirement
uint8
The required Accuracy for a Hero to meet the base Physical Accuracy of the weapon (one-decimal precision)
pAccuracyAtRequirement
uint16
The base Accuracy of the weapon when the Hero meets the given accuracyRequirement (one-decimal precision)
pScalarStat1
uint16
Physical damage Scalar Stat mapping (0 = none)
pScalarStat2
uint16
Physical damage Scalar Stat mapping (0 = none)
pScalarStat3
uint16
Physical damage Scalar Stat mapping (0 = none)
pScalarValue1
uint8
The scalar value for pScalarStat1 (one-decimal precision multiplier, e.g. 5 = 0.5x)
pScalarValue2
uint8
The scalar value for pScalarStat2 (one-decimal precision multiplier, e.g. 5 = 0.5x)
pScalarValue3
uint8
The scalar value for pScalarStat3 (one-decimal precision multiplier, e.g. 5 = 0.5x)
pScalarMax1
uint8
The maximum value that can be obtained from the Hero's pScalarStat1 * pScalarValue1
pScalarMax2
uint8
The maximum value that can be obtained from the Hero's pScalarStat2 * pScalarValue2
pScalarMax3
uint8
The maximum value that can be obtained from the Hero's pScalarStat3 * pScalarValue3
uniqueSettings
uint16
Currently unused
speedModifier
uint8
Modifies the Hero's speed by the given percent While wielding the Weapon. Zero-decimal precision with range of -128% to 128%.
Conversion logic is: (1 - 2 * floor(speedModifier / 128)) * (speedModifier % 128).
WeaponType
None
0
None (unused)
N/A
OneHandedAxe
1
One-Handed Axe
Pirate
Warrior
TwoHandedAxe
2
Two-Handed Axe
Berserker
DarkKnight
DreadKnight
Warrior
Bow
3
Bow
Archer
Bard
SpellBow
Dagger
4
Dagger
Bard
Ninja
Pirate
Thief
Warrior
Gloves
5
Gloves
Monk
Shapeshifter
OneHandedMace
6
One-Handed Mace
Knight
Paladin
Pirate
Priest
Warrior
TwoHandedMace
7
Two-Handed Mace
Berserker
DarkKnight
DreadKnight
Paladin
Warrior
OneHandedSpear
8
One-Handed Spear
Legionnaire
TwoHandedSpear
9
Two-Handed Spear
Dragoon
Staff
10
Staff
Priest
Sage
Summoner
Wizard
OneHandedSword
11
One-Handed Sword
Bard
Knight
Ninja
Paladin
Pirate
Warrior
TwoHandedSword
12
Two-Handed Sword
Berserker
DarkKnight
DreadKnight
Paladin
Warrior
Wand
13
Wand
Sage
Scholar
Seer
Summoner
Wizard
Mappings
Weapon Details
The weapon details correspond to a two-layer mapping by weaponType and displayId. Most base data can be found on-chain or through the API. Mappings for additional string data are as follows:
Weapon Bonuses
Weapon Bonus descriptions correspond to the following mappings. The X in each mapping represents the corresponding bonusScalar value.
See Also
Shared Equipment MappingsLast updated
