mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 07:07:45 +00:00
fix attack power calculation not using level value
This commit is contained in:
parent
bf3905d5f4
commit
bfffffa9c2
2 changed files with 12 additions and 9 deletions
|
@ -342,9 +342,13 @@ float CalcStats::weaponDamage( const Sapphire::Entity::Chara& chara, float weapo
|
||||||
return std::floor( ( ( mainVal * jobAttribute ) / 1000.f ) + weaponDamage );
|
return std::floor( ( ( mainVal * jobAttribute ) / 1000.f ) + weaponDamage );
|
||||||
}
|
}
|
||||||
|
|
||||||
float CalcStats::calcAttackPower( uint32_t attackPower )
|
float CalcStats::calcAttackPower( const Sapphire::Entity::Chara& chara, uint32_t attackPower )
|
||||||
{
|
{
|
||||||
return std::floor( ( 125.f * ( attackPower - 292.f ) / 292.f ) + 100.f ) / 100.f;
|
auto level = chara.getLevel();
|
||||||
|
auto mainVal = static_cast< float >( levelTable[ level ][ Common::LevelTableEntry::MAIN ] );
|
||||||
|
auto divVal = static_cast< float >( levelTable[ level ][ Common::LevelTableEntry::DIV ] );
|
||||||
|
|
||||||
|
return std::floor( ( 125.f * ( attackPower - mainVal ) / divVal ) + 100.f ) / 100.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float CalcStats::attackPower( const Sapphire::Entity::Chara& chara )
|
float CalcStats::attackPower( const Sapphire::Entity::Chara& chara )
|
||||||
|
@ -353,22 +357,22 @@ float CalcStats::attackPower( const Sapphire::Entity::Chara& chara )
|
||||||
|
|
||||||
// todo: this is wrong
|
// todo: this is wrong
|
||||||
if( chara.isBattleNpc() )
|
if( chara.isBattleNpc() )
|
||||||
return calcAttackPower( baseStats.attack );
|
return calcAttackPower( chara, baseStats.attack );
|
||||||
|
|
||||||
switch( chara.getPrimaryStat() )
|
switch( chara.getPrimaryStat() )
|
||||||
{
|
{
|
||||||
case Common::BaseParam::Mind:
|
case Common::BaseParam::Mind:
|
||||||
{
|
{
|
||||||
return calcAttackPower( baseStats.healingPotMagic );
|
return calcAttackPower( chara, baseStats.healingPotMagic );
|
||||||
}
|
}
|
||||||
case Common::BaseParam::Intelligence:
|
case Common::BaseParam::Intelligence:
|
||||||
{
|
{
|
||||||
return calcAttackPower( baseStats.attackPotMagic );
|
return calcAttackPower( chara, baseStats.attackPotMagic );
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
return calcAttackPower( baseStats.attack );
|
return calcAttackPower( chara, baseStats.attack );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -502,8 +506,7 @@ float CalcStats::calculateAutoAttackDamage( const Sapphire::Entity::Chara& chara
|
||||||
|
|
||||||
auto pot = potency( AUTO_ATTACK_POTENCY );
|
auto pot = potency( AUTO_ATTACK_POTENCY );
|
||||||
auto aa = autoAttack( chara );
|
auto aa = autoAttack( chara );
|
||||||
//auto ap = attackPower( chara );
|
auto ap = attackPower( chara );
|
||||||
auto ap = 1.f;
|
|
||||||
auto det = determination( chara );
|
auto det = determination( chara );
|
||||||
auto ten = tenacity( chara );
|
auto ten = tenacity( chara );
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ namespace Sapphire::Math
|
||||||
*
|
*
|
||||||
* @param attackPower The magic/physical attack power value.
|
* @param attackPower The magic/physical attack power value.
|
||||||
*/
|
*/
|
||||||
static float calcAttackPower( uint32_t attackPower );
|
static float calcAttackPower( const Sapphire::Entity::Chara& chara, uint32_t attackPower );
|
||||||
|
|
||||||
static uint32_t primaryStatValue( const Sapphire::Entity::Chara& chara );
|
static uint32_t primaryStatValue( const Sapphire::Entity::Chara& chara );
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue