From 9039ceba1f2f2e9208ace36ed70c87abbc1cd8d3 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sat, 6 Jul 2019 14:47:23 +1000 Subject: [PATCH 1/3] dbm init runs migrations now --- src/dbm/DbManager.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dbm/DbManager.cpp b/src/dbm/DbManager.cpp index 92dbccb4..e39eedcd 100644 --- a/src/dbm/DbManager.cpp +++ b/src/dbm/DbManager.cpp @@ -239,7 +239,10 @@ bool DbManager::modeInit() content1.erase( 0, pos_ + delimiter1.length() ); } - return true; + Logger::info( "======================================================" ); + Logger::info( "Running migrations..." ); + + return modeMigrate(); } bool promptForChar( const char* prompt, char& readch ) From 36481a44b0eb578a7ebc81416e2673a5ab6ec34d Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sat, 6 Jul 2019 14:51:58 +1000 Subject: [PATCH 2/3] remove old max mp code, remove level modifiers for pie/mp, cap to 10k mp --- src/common/Common.h | 2 - src/world/Actor/Player.cpp | 2 +- src/world/Math/CalcStats.cpp | 193 +++++++++++++++-------------------- src/world/Math/CalcStats.h | 2 - 4 files changed, 85 insertions(+), 114 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index 05463273..283d3c49 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -971,8 +971,6 @@ namespace Sapphire::Common enum LevelTableEntry : uint8_t { - PIE, - MP, MAIN, SUB, DIV, diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index f51d4eb0..b008b987 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -285,7 +285,7 @@ void Sapphire::Entity::Player::calculateStats() m_baseStats.attackPotMagic = m_baseStats.inte; m_baseStats.healingPotMagic = m_baseStats.mnd; - m_baseStats.max_mp = Math::CalcStats::calculateMaxMp( getAsPlayer(), m_pFw ); + m_baseStats.max_mp = 10000; m_baseStats.max_hp = Math::CalcStats::calculateMaxHp( getAsPlayer(), m_pFw ); diff --git a/src/world/Math/CalcStats.cpp b/src/world/Math/CalcStats.cpp index f3cbc566..f697c73d 100644 --- a/src/world/Math/CalcStats.cpp +++ b/src/world/Math/CalcStats.cpp @@ -15,92 +15,93 @@ using namespace Sapphire::Math; using namespace Sapphire::Entity; -const int levelTable[81][7] = +const int levelTable[81][5] = { -// PIE, MP, MAIN,SUB,DIV,HP,ELMT,THREAT - { 1, 1, 1, 1, 1, 1, 1 }, - { 50, 104, 20, 56, 56, 0, 52 }, - { 55, 114, 21, 57, 57, 0, 54 }, - { 60, 123, 22, 60, 60, 0, 56 }, - { 65, 133, 24, 62, 62, 0, 58 }, - { 70, 142, 26, 65, 65, 0, 60 }, - { 75, 152, 27, 68, 68, 0, 62 }, - { 80, 161, 29, 70, 70, 0, 64 }, - { 85, 171, 31, 73, 73, 0, 66 }, - { 90, 180, 33, 76, 76, 0, 68 }, - { 95, 190, 35, 78, 78, 0, 70 }, - { 100, 209, 36, 82, 82, 0, 73 }, - { 105, 228, 38, 85, 85, 0, 75 }, - { 110, 247, 41, 89, 89, 0, 78 }, - { 115, 266, 44, 93, 93, 0, 81 }, - { 120, 285, 46, 96, 96, 0, 84 }, - { 125, 304, 49, 100, 100, 0, 86 }, - { 130, 323, 52, 104, 104, 0, 89 }, - { 135, 342, 54, 109, 109, 0, 93 }, - { 140, 361, 57, 113, 113, 0, 95 }, - { 145, 380, 60, 116, 116, 0, 98 }, - { 150, 418, 63, 122, 122, 0, 102 }, - { 155, 456, 67, 127, 127, 0, 105 }, - { 160, 494, 71, 133, 133, 0, 109 }, - { 165, 532, 74, 138, 138, 0, 113 }, - { 170, 570, 78, 144, 144, 0, 117 }, - { 175, 608, 81, 150, 150, 0, 121 }, - { 180, 646, 85, 155, 155, 0, 125 }, - { 185, 684, 89, 162, 162, 0, 129 }, - { 190, 722, 92, 168, 168, 0, 133 }, - { 195, 760, 97, 173, 173, 0, 137 }, - { 200, 826, 101, 181, 181, 0, 143 }, - { 205, 893, 106, 188, 188, 0, 148 }, - { 210, 959, 110, 194, 194, 0, 153 }, - { 215, 1026, 115, 202, 202, 0, 159 }, - { 220, 1092, 119, 209, 209, 0, 165 }, - { 225, 1159, 124, 215, 215, 0, 170 }, - { 230, 1225, 128, 223, 223, 0, 176 }, - { 235, 1292, 134, 229, 229, 0, 181 }, - { 240, 1358, 139, 236, 236, 0, 186 }, - { 245, 1425, 144, 244, 244, 0, 192 }, - { 250, 1548, 150, 253, 253, 0, 200 }, - { 255, 1672, 155, 263, 263, 0, 207 }, - { 260, 1795, 161, 272, 272, 0, 215 }, - { 265, 1919, 166, 283, 283, 0, 223 }, - { 270, 2042, 171, 292, 292, 0, 231 }, - { 275, 2166, 177, 302, 302, 0, 238 }, - { 280, 2289, 183, 311, 311, 0, 246 }, - { 285, 2413, 189, 322, 322, 0, 254 }, - { 290, 2536, 196, 331, 331, 0, 261 }, - { 300, 2660, 202, 341, 341, 1700, 269 }, - { 315, 3000, 204, 342, 393, 1774, 270 }, - { 330, 3380, 205, 344, 444, 1851, 271 }, - { 360, 3810, 207, 345, 496, 1931, 273 }, - { 390, 4300, 209, 346, 548, 2015, 274 }, - { 420, 4850, 210, 347, 600, 2102, 275 }, - { 450, 5470, 212, 349, 651, 2194, 276 }, - { 480, 6170, 214, 350, 703, 2289, 278 }, - { 510, 6950, 215, 351, 755, 2388, 279 }, - { 540, 7840, 217, 352, 806, 2492, 280 }, - { 620, 8840, 218, 354, 858, 2600, 282 }, - { 650, 8980, 224, 355, 941, 2700, 283 }, - { 680, 9150, 228, 356, 1032, 2800, 284 }, - { 710, 9350, 236, 357, 1133, 2900, 286 }, - { 740, 9590, 244, 358, 1243, 3000, 287 }, - { 770, 9870, 252, 359, 1364, 3100, 288 }, - { 800, 10190, 260, 360, 1497, 3200, 290 }, - { 830, 10560, 268, 361, 1643, 3300, 292 }, - { 860, 10980, 276, 362, 1802, 3400, 293 }, - { 890, 11450, 284, 363, 1978, 3500, 294 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, + // MAIN,SUB,DIV,HP,ELMT,THREAT + { 1, 1, 1, 1, 1 }, + { 20, 56, 56, 0, 52 }, + { 21, 57, 57, 0, 54 }, + { 22, 60, 60, 0, 56 }, + { 24, 62, 62, 0, 58 }, + { 26, 65, 65, 0, 60 }, + { 27, 68, 68, 0, 62 }, + { 29, 70, 70, 0, 64 }, + { 31, 73, 73, 0, 66 }, + { 33, 76, 76, 0, 68 }, + { 35, 78, 78, 0, 70 }, + { 36, 82, 82, 0, 73 }, + { 38, 85, 85, 0, 75 }, + { 41, 89, 89, 0, 78 }, + { 44, 93, 93, 0, 81 }, + { 46, 96, 96, 0, 84 }, + { 49, 100, 100, 0, 86 }, + { 52, 104, 104, 0, 89 }, + { 54, 109, 109, 0, 93 }, + { 57, 113, 113, 0, 95 }, + { 60, 116, 116, 0, 98 }, + { 63, 122, 122, 0, 102 }, + { 67, 127, 127, 0, 105 }, + { 71, 133, 133, 0, 109 }, + { 74, 138, 138, 0, 113 }, + { 78, 144, 144, 0, 117 }, + { 81, 150, 150, 0, 121 }, + { 85, 155, 155, 0, 125 }, + { 89, 162, 162, 0, 129 }, + { 92, 168, 168, 0, 133 }, + { 97, 173, 173, 0, 137 }, + { 101, 181, 181, 0, 143 }, + { 106, 188, 188, 0, 148 }, + { 110, 194, 194, 0, 153 }, + { 115, 202, 202, 0, 159 }, + { 119, 209, 209, 0, 165 }, + { 124, 215, 215, 0, 170 }, + { 128, 223, 223, 0, 176 }, + { 134, 229, 229, 0, 181 }, + { 139, 236, 236, 0, 186 }, + { 144, 244, 244, 0, 192 }, + { 150, 253, 253, 0, 200 }, + { 155, 263, 263, 0, 207 }, + { 161, 272, 272, 0, 215 }, + { 166, 283, 283, 0, 223 }, + { 171, 292, 292, 0, 231 }, + { 177, 302, 302, 0, 238 }, + { 183, 311, 311, 0, 246 }, + { 189, 322, 322, 0, 254 }, + { 196, 331, 331, 0, 261 }, + { 202, 341, 341, 1700, 269 }, + { 204, 342, 393, 1774, 270 }, + { 205, 344, 444, 1851, 271 }, + { 207, 345, 496, 1931, 273 }, + { 209, 346, 548, 2015, 274 }, + { 210, 347, 600, 2102, 275 }, + { 212, 349, 651, 2194, 276 }, + { 214, 350, 703, 2289, 278 }, + { 215, 351, 755, 2388, 279 }, + { 217, 352, 806, 2492, 280 }, + { 218, 354, 858, 2600, 282 }, + { 224, 355, 941, 2700, 283 }, + { 228, 356, 1032, 2800, 284 }, + { 236, 357, 1133, 2900, 286 }, + { 244, 358, 1243, 3000, 287 }, + { 252, 359, 1364, 3100, 288 }, + { 260, 360, 1497, 3200, 290 }, + { 268, 361, 1643, 3300, 292 }, + { 276, 362, 1802, 3400, 293 }, + { 284, 363, 1978, 3500, 294 }, + { 292, 364, 2170, 3600, 295 }, // todo: add proper shbr values - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, - { 890, 12000, 292, 364, 2170, 3600, 295 }, + // sub/div added from http://theoryjerks.akhmorning.com/resources/levelmods/ + { 292, 365, 2263, 3600, 295 }, + { 292, 366, 2360, 3600, 295 }, + { 292, 367, 2461, 3600, 295 }, + { 292, 368, 2566, 3600, 295 }, + { 292, 370, 2676, 3600, 295 }, + { 292, 372, 2790, 3600, 295 }, + { 292, 374, 2910, 3600, 295 }, + { 292, 376, 3034, 3600, 295 }, + { 292, 378, 3164, 3600, 295 }, + { 292, 380, 3300, 3600, 295 }, }; /* @@ -173,32 +174,6 @@ uint32_t CalcStats::calculateMaxHp( PlayerPtr pPlayer, Sapphire::FrameworkPtr pF return result; } -// Leggerless' MP Formula -// ROUNDDOWN(((ROUNDDOWN(((PIE - BaseDET) * PieMPMod/100),0) + BaseMP) * JobModMP / 100),0) - -uint32_t CalcStats::calculateMaxMp( PlayerPtr pPlayer, Sapphire::FrameworkPtr pFw ) -{ - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto classInfo = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pPlayer->getClass() ) ); - auto paramGrowthInfo = pExdData->get< Sapphire::Data::ParamGrow >( pPlayer->getLevel() ); - - if( !classInfo || !paramGrowthInfo ) - return 0; - - auto pieMod = pPlayer->getBonusStat( Common::BaseParam::Piety ); - - float baseStat = calculateBaseStat( *pPlayer ); - uint16_t piety = pPlayer->getStats().pie + pieMod; - uint16_t pietyScalar = paramGrowthInfo->mpModifier; - uint16_t jobModMp = classInfo->modifierManaPoints; - uint16_t baseMp = paramGrowthInfo->mpModifier; - - uint16_t result = static_cast< uint16_t >( floor( floor( piety - baseStat ) * ( pietyScalar / 100 ) + baseMp ) * - jobModMp / 100 ); - - return result; -} - float CalcStats::blockProbability( const Chara& chara ) { auto level = chara.getLevel(); diff --git a/src/world/Math/CalcStats.h b/src/world/Math/CalcStats.h index ad8a086f..8b8f7d36 100644 --- a/src/world/Math/CalcStats.h +++ b/src/world/Math/CalcStats.h @@ -15,8 +15,6 @@ namespace Sapphire::Math static float calculateBaseStat( const Entity::Chara& chara ); - static uint32_t calculateMaxMp( Sapphire::Entity::PlayerPtr pPlayer, FrameworkPtr pFw ); - static uint32_t calculateMaxHp( Sapphire::Entity::PlayerPtr pPlayer, FrameworkPtr pFw ); /*! From fd539216804e5dd15d4d06567d62591000b48601 Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sat, 6 Jul 2019 15:00:13 +1000 Subject: [PATCH 3/3] switch from binary to blobs, fix known array sizes in player obj --- ...0706035254_ConvertFixedSizeDataToBlobs.sql | 15 ++++++ src/common/Database/ZoneDbConnection.cpp | 50 +++++++++++-------- src/common/Network/PacketDef/Ipcs.h | 4 +- src/world/Actor/Player.h | 12 ++--- .../PacketWrappers/PlayerSetupPacket.h | 1 - 5 files changed, 51 insertions(+), 31 deletions(-) create mode 100644 sql/migrations/20190706035254_ConvertFixedSizeDataToBlobs.sql diff --git a/sql/migrations/20190706035254_ConvertFixedSizeDataToBlobs.sql b/sql/migrations/20190706035254_ConvertFixedSizeDataToBlobs.sql new file mode 100644 index 00000000..97b617b5 --- /dev/null +++ b/sql/migrations/20190706035254_ConvertFixedSizeDataToBlobs.sql @@ -0,0 +1,15 @@ +-- Migration generated at 2019/07/06 03:52:54 +-- 20190706035254_ConvertFixedSizeDataToBlobs.sql + +ALTER TABLE `charainfo` + CHANGE COLUMN `TitleList` `TitleList` BLOB NULL DEFAULT NULL AFTER `ActiveTitle`, + CHANGE COLUMN `Achievement` `Achievement` BLOB NULL DEFAULT NULL AFTER `TitleList`, + CHANGE COLUMN `Aetheryte` `Aetheryte` BLOB NULL DEFAULT NULL AFTER `Achievement`, + CHANGE COLUMN `HowTo` `HowTo` BLOB NULL DEFAULT NULL AFTER `Aetheryte`, + CHANGE COLUMN `Minions` `Minions` BLOB NULL DEFAULT NULL AFTER `HowTo`, + CHANGE COLUMN `Mounts` `Mounts` BLOB NULL DEFAULT NULL AFTER `Minions`, + CHANGE COLUMN `Orchestrion` `Orchestrion` BLOB NULL DEFAULT NULL AFTER `Mounts`, + CHANGE COLUMN `QuestCompleteFlags` `QuestCompleteFlags` BLOB NULL DEFAULT NULL AFTER `ConfigFlags`, + CHANGE COLUMN `QuestTracking` `QuestTracking` BLOB NULL DEFAULT NULL AFTER `OpeningSequence`, + CHANGE COLUMN `Discovery` `Discovery` BLOB NULL DEFAULT NULL AFTER `GrandCompanyRank`, + CHANGE COLUMN `Unlocks` `Unlocks` BLOB NULL DEFAULT NULL AFTER `Pose`; diff --git a/src/common/Database/ZoneDbConnection.cpp b/src/common/Database/ZoneDbConnection.cpp index 1c4c5a82..a6ecb50c 100644 --- a/src/common/Database/ZoneDbConnection.cpp +++ b/src/common/Database/ZoneDbConnection.cpp @@ -22,18 +22,20 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements() m_stmts.resize( MAX_STATEMENTS ); /// CHARA - prepareStatement( CHARA_SEL, "SELECT ContentId, Name, Hp, Mp, Tp, Gp, Mode, Mount, InvincibleGM, Voice, " - "Customize, ModelMainWeapon, ModelSubWeapon, ModelSystemWeapon, " - "ModelEquip, EmoteModeType, FirstLoginTime, Language, IsNewGame, " - "IsNewAdventurer, TerritoryType, TerritoryId, PosX, PosY, PosZ, PosR, " - "OTerritoryType, OTerritoryId, OPosX, OPosY, OPosZ, OPosR, GuardianDeity, " - "BirthDay, BirthMonth, Class, Status, TotalPlayTime, FirstClass, HomePoint, " - "FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, " - "Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, " - "QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, " - "GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil, " - "Pose " - "FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC ); + prepareStatement( CHARA_SEL, + "SELECT ContentId, Name, Hp, Mp, Tp, Gp, Mode, Mount, InvincibleGM, Voice, " + "Customize, ModelMainWeapon, ModelSubWeapon, ModelSystemWeapon, " + "ModelEquip, EmoteModeType, FirstLoginTime, Language, IsNewGame, " + "IsNewAdventurer, TerritoryType, TerritoryId, PosX, PosY, PosZ, PosR, " + "OTerritoryType, OTerritoryId, OPosX, OPosY, OPosZ, OPosR, GuardianDeity, " + "BirthDay, BirthMonth, Class, Status, TotalPlayTime, FirstClass, HomePoint, " + "FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, " + "Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, " + "QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, " + "GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil, " + "Pose " + "FROM charainfo WHERE CharacterId = ?;", + CONNECTION_SYNC ); prepareStatement( CHARA_UP, @@ -47,19 +49,23 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements() "ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, " "EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, " "QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, EquipDisplayFlags = ?, Unlocks = ?, " - "CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;", CONNECTION_ASYNC ); + "CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;", + CONNECTION_ASYNC ); - prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryType, GuardianDeity, " - "Class, ContentId, BirthDay, BirthMonth, EquipDisplayFlags " - "FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC ); + prepareStatement( CHARA_SEL_MINIMAL, + "SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryType, GuardianDeity, " + "Class, ContentId, BirthDay, BirthMonth, EquipDisplayFlags " + "FROM charainfo WHERE CharacterId = ?;", + CONNECTION_SYNC ); - prepareStatement( CHARA_INS, "INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, " - "Customize, Voice, IsNewGame, TerritoryType, PosX, PosY, PosZ, PosR, ModelEquip, " - "IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, " - "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, " - "Aetheryte, GMRank, Mounts, Orchestrion, UPDATE_DATE ) " - "VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );", + prepareStatement( CHARA_INS, + "INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, " + "Customize, Voice, IsNewGame, TerritoryType, PosX, PosY, PosZ, PosR, ModelEquip, " + "IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, " + "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, " + "Aetheryte, GMRank, Mounts, Orchestrion, UPDATE_DATE ) " + "VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );", CONNECTION_SYNC ); prepareStatement( CHARA_UP_NAME, "UPDATE charainfo SET Name = ? WHERE CharacterId = ?;", CONNECTION_ASYNC ); diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 196c747c..f1c5918b 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -95,7 +95,7 @@ namespace Sapphire::Network::Packets PlayerAddedToBlacklist = 0x0120, // updated 5.0 PlayerRemovedFromBlacklist = 0x0121, // updated 5.0 BlackList = 0x0123, // updated 5.0 - + LinkshellList = 0x012A, // updated 5.0 MailDeleteRequest = 0x012B, // updated 5.0 @@ -152,7 +152,7 @@ namespace Sapphire::Network::Packets CharaNameReq = 0x0198, // updated 5.0 // nb: see #565 on github - UpdateRetainerItemSalePrice = 0x019D, // updated 5.0 + UpdateRetainerItemSalePrice = 0x019F, // updated 5.0 SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index e277738a..08caf559 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -1036,19 +1036,19 @@ namespace Sapphire::Entity uint16_t m_activeTitle; uint8_t m_titleList[48]; - uint8_t m_howTo[33]; + uint8_t m_howTo[34]; uint8_t m_minions[40]; - uint8_t m_mountGuide[17]; + uint8_t m_mountGuide[19]; uint8_t m_homePoint; uint8_t m_startTown; uint16_t m_townWarpFstFlags; uint8_t m_questCompleteFlags[476]; - uint8_t m_discovery[421]; + uint8_t m_discovery[445]; uint32_t m_playTime; - uint16_t m_classArray[26]; - uint32_t m_expArray[26]; - uint8_t m_aetheryte[17]; + uint16_t m_classArray[28]; + uint32_t m_expArray[28]; + uint8_t m_aetheryte[21]; uint8_t m_unlocks[64]; uint8_t m_orchestrion[40]; diff --git a/src/world/Network/PacketWrappers/PlayerSetupPacket.h b/src/world/Network/PacketWrappers/PlayerSetupPacket.h index 2424e651..4cd52a8a 100644 --- a/src/world/Network/PacketWrappers/PlayerSetupPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSetupPacket.h @@ -48,7 +48,6 @@ namespace Sapphire::Network::Packets::Server m_data.pose = player.getPose(); memset( &m_data.name[ 0 ], 0, sizeof( m_data.name ) ); - strcpy( &m_data.name[ 0 ], player.getName().c_str() ); memcpy( m_data.aetheryte, player.getAetheryteArray(), sizeof( m_data.aetheryte ) );