From 03b6f5229d978b867d83852ff47b2e5849d25a0e Mon Sep 17 00:00:00 2001 From: mordred Date: Fri, 22 Mar 2019 13:26:34 +0100 Subject: [PATCH] Added probability functions for dh / ch / block --- src/world/Math/CalcStats.cpp | 37 ++++++++++++++++++++++++++++++++++++ src/world/Math/CalcStats.h | 3 +++ 2 files changed, 40 insertions(+) diff --git a/src/world/Math/CalcStats.cpp b/src/world/Math/CalcStats.cpp index e86c080e..229dd2e8 100644 --- a/src/world/Math/CalcStats.cpp +++ b/src/world/Math/CalcStats.cpp @@ -183,3 +183,40 @@ uint32_t CalcStats::calculateMaxMp( PlayerPtr pPlayer, Sapphire::FrameworkPtr pF return result; } + +float CalcStats::pBlk( const Entity::Chara& chara ) +{ + auto level = chara.getLevel(); + float blockRate = static_cast< float >( chara.getBonusStat( Common::BaseParam::BlockRate ) ); + float levelVal = static_cast< float >( levelTable[ level ][ 4 ] ); + + return std::floor( ( 30 * blockRate ) / levelVal + 10 ); +} + +float CalcStats::pDhr( const Entity::Chara& chara ) +{ + const auto& baseStats = chara.getStats(); + auto level = chara.getLevel(); + + float dhRate = static_cast< float >( chara.getBonusStat( Common::BaseParam::DirectHitRate ) ) + + baseStats.accuracy; + + float divVal = static_cast< float >( levelTable[ level ][ 4 ] ); + float subVal = static_cast< float >( levelTable[ level ][ 3 ] ); + + return std::floor( 550.f * ( dhRate - subVal ) / divVal ) / 10.f; +} + +float CalcStats::pChr( const Entity::Chara& chara ) +{ + const auto& baseStats = chara.getStats(); + auto level = chara.getLevel(); + + float chRate = static_cast< float >( chara.getBonusStat( Common::BaseParam::CriticalHit ) ) + + baseStats.critHitRate; + + float divVal = static_cast< float >( levelTable[ level ][ 4 ] ); + float subVal = static_cast< float >( levelTable[ level ][ 3 ] ); + + return std::floor( 200.f * ( chRate - subVal ) / divVal + 50.f ) / 10.f; +} diff --git a/src/world/Math/CalcStats.h b/src/world/Math/CalcStats.h index 9f7fc605..29436bf9 100644 --- a/src/world/Math/CalcStats.h +++ b/src/world/Math/CalcStats.h @@ -16,6 +16,9 @@ namespace Sapphire::Math static uint32_t calculateMaxHp( Sapphire::Entity::PlayerPtr pPlayer, FrameworkPtr pFw ); + static float pBlk( const Sapphire::Entity::Chara& ); + static float pDhr( const Sapphire::Entity::Chara& ); + static float pChr( const Sapphire::Entity::Chara& ); private: };