mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-27 14:57:44 +00:00
Preload defense / block values into items
This commit is contained in:
parent
b639db836e
commit
497761a282
6 changed files with 112 additions and 16 deletions
|
@ -15,6 +15,11 @@ bool operator==( const uint8_t& g, const ActionCategory& t )
|
|||
return static_cast< uint8_t >( t ) == g;
|
||||
}
|
||||
|
||||
bool operator==( const uint8_t& g, const BaseParam& t )
|
||||
{
|
||||
return static_cast< uint8_t >( t ) == g;
|
||||
}
|
||||
|
||||
bool operator==( const BeastReputationRank& t, const uint8_t& g )
|
||||
{
|
||||
return static_cast< uint8_t >( t ) == g;
|
||||
|
|
|
@ -31,6 +31,86 @@ enum class ActionCategory : uint8_t
|
|||
AdrenalineRush = 15,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
//BaseParam.exd
|
||||
enum class BaseParam : uint8_t
|
||||
{
|
||||
None = 0,
|
||||
Strength = 1,
|
||||
Dexterity = 2,
|
||||
Vitality = 3,
|
||||
Intelligence = 4,
|
||||
Mind = 5,
|
||||
Piety = 6,
|
||||
HP = 7,
|
||||
MP = 8,
|
||||
TP = 9,
|
||||
GP = 10,
|
||||
CP = 11,
|
||||
PhysicalDamage = 12,
|
||||
MagicDamage = 13,
|
||||
Delay = 14,
|
||||
AdditionalEffect = 15,
|
||||
AttackSpeed = 16,
|
||||
BlockRate = 17,
|
||||
BlockStrength = 18,
|
||||
Tenacity = 19,
|
||||
AttackPower = 20,
|
||||
Defense = 21,
|
||||
DirectHitRate = 22,
|
||||
Evasion = 23,
|
||||
MagicDefense = 24,
|
||||
CriticalHitPower = 25,
|
||||
CriticalHitResilience = 26,
|
||||
CriticalHit = 27,
|
||||
CriticalHitEvasion = 28,
|
||||
SlashingResistance = 29,
|
||||
PiercingResistance = 30,
|
||||
BluntResistance = 31,
|
||||
ProjectileResistance = 32,
|
||||
AttackMagicPotency = 33,
|
||||
HealingMagicPotency = 34,
|
||||
EnhancementMagicPotency = 35,
|
||||
ElementalBonus = 36,
|
||||
FireResistance = 37,
|
||||
IceResistance = 38,
|
||||
WindResistance = 39,
|
||||
EarthResistance = 40,
|
||||
LightningResistance = 41,
|
||||
WaterResistance = 42,
|
||||
MagicResistance = 43,
|
||||
Determination = 44,
|
||||
SkillSpeed = 45,
|
||||
SpellSpeed = 46,
|
||||
Haste = 47,
|
||||
Morale = 48,
|
||||
Enmity = 49,
|
||||
EnmityReduction = 50,
|
||||
CarefulDesynthesis = 51,
|
||||
EXPBonus = 52,
|
||||
Regen = 53,
|
||||
Refresh = 54,
|
||||
MainAttribute = 55,
|
||||
SecondaryAttribute = 56,
|
||||
SlowResistance = 57,
|
||||
PetrificationResistance = 58,
|
||||
ParalysisResistance = 59,
|
||||
SilenceResistance = 60,
|
||||
BlindResistance = 61,
|
||||
PoisonResistance = 62,
|
||||
StunResistance = 63,
|
||||
SleepResistance = 64,
|
||||
BindResistance = 65,
|
||||
HeavyResistance = 66,
|
||||
DoomResistance = 67,
|
||||
ReducedDurabilityLoss = 68,
|
||||
IncreasedSpiritbondGain = 69,
|
||||
Craftsmanship = 70,
|
||||
Control = 71,
|
||||
Gathering = 72,
|
||||
Perception = 73,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
//BeastReputationRank.exd
|
||||
enum class BeastReputationRank : uint8_t
|
||||
|
|
|
@ -110,6 +110,7 @@ int main()
|
|||
result += "namespace Sapphire {\n";
|
||||
result += "namespace Common {\n";
|
||||
result += generateEnum( "ActionCategory", 0, "uint8_t" );
|
||||
result += generateEnum( "BaseParam", 1, "uint8_t" );
|
||||
result += generateEnum( "BeastReputationRank", 1, "uint8_t" );
|
||||
result += generateEnum( "BeastTribe", 11, "uint8_t" );
|
||||
result += generateEnum( "ClassJob", 0, "uint8_t" );
|
||||
|
|
|
@ -147,22 +147,6 @@ void Sapphire::Entity::Player::equipSoulCrystal( ItemPtr pItem, bool updateJob )
|
|||
setClassJob( newClassJob );
|
||||
}
|
||||
|
||||
// equip an item
|
||||
void Sapphire::Entity::Player::equipItem( Common::GearSetSlot equipSlotId, ItemPtr pItem, bool sendUpdate )
|
||||
{
|
||||
|
||||
//g_framework.getLogger().debug( "Equipping into slot " + std::to_string( equipSlotId ) );
|
||||
if( sendUpdate )
|
||||
{
|
||||
updateModels( equipSlotId, pItem, true );
|
||||
this->sendModel();
|
||||
m_itemLevel = calculateEquippedGearItemLevel();
|
||||
sendItemLevel();
|
||||
}
|
||||
else
|
||||
updateModels( equipSlotId, pItem, false );
|
||||
}
|
||||
|
||||
void Sapphire::Entity::Player::updateModels( GearSetSlot equipSlotId, const Sapphire::ItemPtr& pItem, bool updateClass )
|
||||
{
|
||||
uint64_t model = pItem->getModelId1();
|
||||
|
@ -230,6 +214,23 @@ Sapphire::Common::GearModelSlot Sapphire::Entity::Player::equipSlotToModelSlot(
|
|||
}
|
||||
}
|
||||
|
||||
// equip an item
|
||||
void Sapphire::Entity::Player::equipItem( Common::GearSetSlot equipSlotId, ItemPtr pItem, bool sendUpdate )
|
||||
{
|
||||
|
||||
//g_framework.getLogger().debug( "Equipping into slot " + std::to_string( equipSlotId ) );
|
||||
if( sendUpdate )
|
||||
{
|
||||
updateModels( equipSlotId, pItem, true );
|
||||
sendModel();
|
||||
m_itemLevel = calculateEquippedGearItemLevel();
|
||||
sendItemLevel();
|
||||
}
|
||||
else
|
||||
updateModels( equipSlotId, pItem, false );
|
||||
}
|
||||
|
||||
|
||||
void Sapphire::Entity::Player::unequipItem( Common::GearSetSlot equipSlotId, ItemPtr pItem )
|
||||
{
|
||||
auto modelSlot = equipSlotToModelSlot( equipSlotId );
|
||||
|
|
|
@ -29,6 +29,10 @@ Sapphire::Item::Item( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw, bool i
|
|||
m_itemLevel = itemInfo->levelItem;
|
||||
m_maxStackSize = itemInfo->stackSize;
|
||||
m_additionalData = itemInfo->additionalData;
|
||||
m_blockRate = itemInfo->blockRate;
|
||||
m_block = itemInfo->block;
|
||||
m_defense = itemInfo->defensePhys;
|
||||
m_defenseMag = itemInfo->defenseMag;
|
||||
}
|
||||
|
||||
float Sapphire::Item::getAutoAttackDmg() const
|
||||
|
|
|
@ -99,6 +99,11 @@ namespace Sapphire
|
|||
uint16_t m_spiritBond;
|
||||
uint32_t m_reservedFlag;
|
||||
|
||||
uint32_t m_blockRate;
|
||||
uint32_t m_block;
|
||||
uint32_t m_defense;
|
||||
uint32_t m_defenseMag;
|
||||
|
||||
FrameworkPtr m_pFw;
|
||||
uint32_t m_additionalData;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue