mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-01 08:27:46 +00:00
hudparam fixes; int type fixes;
This commit is contained in:
parent
38c176c4b6
commit
735e2f73bd
7 changed files with 22 additions and 12 deletions
|
@ -774,6 +774,8 @@ uint32_t Sapphire::Entity::Chara::getBonusStat( Sapphire::Common::BaseParam base
|
|||
auto index = static_cast< uint32_t >( baseParam );
|
||||
assert( index < m_bonusStats.size() );
|
||||
|
||||
if( isPlayer() )
|
||||
auto val = m_bonusStats[ index ];
|
||||
return m_bonusStats[ index ];
|
||||
}
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ namespace Sapphire::Entity
|
|||
|
||||
using ActorStatsArray = std::array< uint32_t, STAT_ARRAY_SIZE >;
|
||||
|
||||
ActorStatsArray m_baseStats;
|
||||
ActorStatsArray m_bonusStats;
|
||||
ActorStatsArray m_baseStats{ 0 };
|
||||
ActorStatsArray m_bonusStats{ 0 };
|
||||
|
||||
protected:
|
||||
char m_name[34];
|
||||
|
|
|
@ -227,8 +227,10 @@ void Sapphire::Entity::Player::equipItem( Common::GearSetSlot equipSlotId, Item&
|
|||
auto baseParams = item.getBaseParams();
|
||||
for( auto i = 0; i < 6; ++i )
|
||||
{
|
||||
if( baseParams[ i ].baseParam != static_cast< uint8_t >( Common::BaseParam::None ) )
|
||||
m_bonusStats[ baseParams[ i ].baseParam ] += baseParams[ i ].value;
|
||||
auto itemBaseParam = baseParams[ i ].baseParam;
|
||||
auto itemBaseVal = baseParams[ i ].value;
|
||||
if( itemBaseParam != static_cast< uint8_t >( Common::BaseParam::None ) )
|
||||
m_bonusStats[ itemBaseParam ] += itemBaseVal;
|
||||
}
|
||||
|
||||
m_bonusStats[ static_cast< uint8_t >( Common::BaseParam::Defense ) ] += item.getDefense();
|
||||
|
@ -257,8 +259,10 @@ void Sapphire::Entity::Player::unequipItem( Common::GearSetSlot equipSlotId, Ite
|
|||
auto baseParams = item.getBaseParams();
|
||||
for( auto i = 0; i < 6; ++i )
|
||||
{
|
||||
if( baseParams[ i ].baseParam != static_cast< uint8_t >( Common::BaseParam::None ) )
|
||||
m_bonusStats[ baseParams[ i ].baseParam ] -= baseParams[ i ].value;
|
||||
auto itemBaseParam = baseParams[ i ].baseParam;
|
||||
auto itemBaseVal = baseParams[ i ].value;
|
||||
if( itemBaseParam != static_cast< uint8_t >( Common::BaseParam::None ) )
|
||||
m_bonusStats[ itemBaseParam ] -= itemBaseVal;
|
||||
}
|
||||
|
||||
m_bonusStats[ static_cast< uint8_t >( Common::BaseParam::Defense ) ] -= item.getDefense();
|
||||
|
|
|
@ -167,7 +167,11 @@ void PlayerMgr::onPlayerStatusUpdate( Entity::Player& player )
|
|||
|
||||
void PlayerMgr::onPlayerHpMpTpChanged( Entity::Player& player )
|
||||
{
|
||||
auto& server = Common::Service< World::WorldServer >::ref();
|
||||
|
||||
player.sendToInRangeSet( std::make_shared< UpdateHpMpTpPacket >( player ), true );
|
||||
auto hudParamPacket = makeHudParam( player );
|
||||
server.queueForPlayer( player.getCharacterId(), hudParamPacket );
|
||||
}
|
||||
|
||||
void PlayerMgr::onPlayerItemLevelUpdate( Entity::Player& player )
|
||||
|
|
|
@ -117,7 +117,6 @@ void WarpMgr::finishWarp( Entity::Player& player )
|
|||
server.queueForPlayer( player.getCharacterId(), zoneInPacket );
|
||||
|
||||
playerMgr.onUnsetStateFlag( player, PlayerStateFlag::BetweenAreas );
|
||||
|
||||
}
|
||||
|
||||
void WarpMgr::requestPlayerTeleport( Entity::Player& player, uint16_t aetheryteId, uint8_t teleportType )
|
||||
|
|
|
@ -139,15 +139,16 @@ uint32_t CalcStats::calculateMaxHp( Player& player )
|
|||
|
||||
auto vitMod = player.getBonusStat( Common::BaseParam::Vitality );
|
||||
float baseStat = calculateBaseStat( player );
|
||||
uint16_t vitStat = static_cast< uint16_t >( player.getStatValue( Common::BaseParam::Vitality ) ) + static_cast< uint16_t >( vitMod );
|
||||
auto baseParamVit = player.getStatValue( Common::BaseParam::Vitality );
|
||||
auto vitStat = player.getStatValue( Common::BaseParam::Vitality ) + vitMod;
|
||||
uint16_t hpMod = paramGrowthInfo->data().ParamBase;
|
||||
uint16_t jobModHp = classInfo->data().Hp;
|
||||
float approxBaseHp = 0.0f; // Read above
|
||||
|
||||
approxBaseHp = static_cast< float >( levelTable[ level ][ Common::LevelTableEntry::HP ] );
|
||||
|
||||
uint16_t result = static_cast< uint16_t >( floor( jobModHp * ( approxBaseHp / 100.0f ) ) +
|
||||
floor( hpMod / 100.0f * ( vitStat - baseStat ) ) );
|
||||
auto result = static_cast< uint32_t >( floor( jobModHp * ( approxBaseHp / 100.0f ) ) +
|
||||
floor( hpMod / 100.0f * ( vitStat - baseStat ) ) );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -176,7 +177,7 @@ uint32_t CalcStats::calculateMaxHp( Chara& chara )
|
|||
|
||||
approxBaseHp = static_cast< float >( levelTable[ level ][ Common::LevelTableEntry::HP ] );
|
||||
|
||||
uint16_t result = static_cast< uint16_t >( floor( jobModHp * ( approxBaseHp / 100.0f ) ) +
|
||||
auto result = static_cast< uint32_t >( floor( jobModHp * ( approxBaseHp / 100.0f ) ) +
|
||||
floor( hpMod / 100.0f * ( vitStat - baseStat ) ) );
|
||||
|
||||
return result;
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
|||
{
|
||||
|
||||
/**
|
||||
* @brief The Ping response packet.
|
||||
* @brief HUD stats packet.
|
||||
*/
|
||||
class HudParamPacket : public ZoneChannelPacket< FFXIVIpcHudParam >
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue