diff --git a/modules/gamelib/game.lua b/modules/gamelib/game.lua index 54ac7a8d..28d6c4ab 100644 --- a/modules/gamelib/game.lua +++ b/modules/gamelib/game.lua @@ -55,7 +55,7 @@ function g_game.getSupportedClients() 970, 972, 973, 980, 981, 982, 983, 984, 985, 986, 1001, 1002, 1010, 1020, 1021, 1022, 1031, 1034, 1035, - 1036, 1037 + 1036, 1037, 1038, 1039, 1040, 1041 } end diff --git a/src/client/const.h b/src/client/const.h index 0b4e85c6..268af7f4 100644 --- a/src/client/const.h +++ b/src/client/const.h @@ -388,6 +388,7 @@ namespace Otc GameCreatureIcons = 54, GameHideNpcNames = 55, GameSpritesAlphaChannel = 56, + GamePremiumExpiration = 57, LastGameFeature = 101 }; diff --git a/src/client/game.cpp b/src/client/game.cpp index 17a813d7..0b8140f0 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1459,7 +1459,7 @@ void Game::setProtocolVersion(int version) if(isOnline()) stdext::throw_exception("Unable to change protocol version while online"); - if(version != 0 && (version < 760 || version > 1037)) + if(version != 0 && (version < 760 || version > 1041)) stdext::throw_exception(stdext::format("Protocol version %d not supported", version)); m_features.reset(); @@ -1571,6 +1571,10 @@ void Game::setProtocolVersion(int version) enableFeature(Otc::GameCreatureIcons); enableFeature(Otc::GameHideNpcNames); } + + if(version >= 1041) { + enableFeature(Otc::GamePremiumExpiration); + } m_protocolVersion = version; @@ -1587,7 +1591,7 @@ void Game::setClientVersion(int version) if(isOnline()) stdext::throw_exception("Unable to change client version while online"); - if(version != 0 && (version < 760 || version > 1037)) + if(version != 0 && (version < 760 || version > 1041)) stdext::throw_exception(stdext::format("Client version %d not supported", version)); m_clientVersion = version; diff --git a/src/client/protocolgameparse.cpp b/src/client/protocolgameparse.cpp index 42d552a2..fd727f19 100644 --- a/src/client/protocolgameparse.cpp +++ b/src/client/protocolgameparse.cpp @@ -1022,6 +1022,8 @@ void ProtocolGame::parsePlayerInfo(const InputMessagePtr& msg) { bool premium = msg->getU8(); // premium int vocation = msg->getU8(); // vocation + if(g_game.getFeature(Otc::GamePremiumExpiration)) + int premiumEx = msg->getU32(); // premium expiration int spellCount = msg->getU16(); std::vector spells;