diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 4c8ae6d7..1271e9af 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -690,6 +690,11 @@ uint8_t Player::getLevelForClass( Common::ClassJob pClass ) const return static_cast< uint8_t >( m_classArray[ classJobIndex ] ); } +Common::ClassJob Player::getFirstClass() const +{ + return m_firstClass; +} + bool Player::isClassJobUnlocked( Common::ClassJob classJob ) const { // todo: need to properly check if a job is unlocked, at the moment we just check the class array which will return true for every job if the base class is unlocked diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index cf42c2d2..88820445 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -214,6 +214,9 @@ namespace Sapphire::Entity /*! returns the level of the provided class / job */ uint8_t getLevelForClass( Common::ClassJob pClass ) const; + /*! \return the first class of the player */ + Common::ClassJob getFirstClass() const; + /*! returns if the classjob is unlocked */ bool isClassJobUnlocked( Common::ClassJob classJob ) const; @@ -901,6 +904,8 @@ namespace Sapphire::Entity ExpList m_expArray{}; StateFlags m_stateFlags{}; + Common::ClassJob m_firstClass{}; + uint8_t m_homePoint; uint8_t m_startTown; uint16_t m_townWarpFstFlags; diff --git a/src/world/Actor/PlayerSql.cpp b/src/world/Actor/PlayerSql.cpp index 4f06043c..ab60ba5a 100644 --- a/src/world/Actor/PlayerSql.cpp +++ b/src/world/Actor/PlayerSql.cpp @@ -78,6 +78,7 @@ bool Sapphire::Entity::Player::loadFromDb( uint64_t characterId ) m_class = static_cast< ClassJob >( res->getUInt( "Class" ) ); m_homePoint = res->getUInt8( "Homepoint" ); + m_firstClass = static_cast< ClassJob >( res->getUInt( "FirstClass" ) ); // Additional data m_voice = res->getUInt8( "Voice" ); diff --git a/src/world/Network/PacketWrappers/PlayerSetupPacket.h b/src/world/Network/PacketWrappers/PlayerSetupPacket.h index 59ce0e94..8e810042 100644 --- a/src/world/Network/PacketWrappers/PlayerSetupPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSetupPacket.h @@ -34,7 +34,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.Tribe = player.getLookAt( Common::CharaLook::Tribe ); m_data.Sex = player.getLookAt( Common::CharaLook::Gender ); m_data.ClassJob = static_cast< uint8_t >( player.getClass() ); - m_data.FirstClass = static_cast< uint8_t >( player.getClass() ); + m_data.FirstClass = static_cast< uint8_t >( player.getFirstClass() ); //m_data.maxLevel = player.getLevel(); m_data.GuardianDeity = static_cast< uint8_t >( player.getGuardianDeity() ); m_data.BirthMonth = player.getBirthMonth();