diff --git a/dGame/LeaderboardManager.cpp b/dGame/LeaderboardManager.cpp index 5109e663..b58921a8 100644 --- a/dGame/LeaderboardManager.cpp +++ b/dGame/LeaderboardManager.cpp @@ -268,6 +268,9 @@ void Leaderboard::Send(const LWOOBJID targetID) const { } void LeaderboardManager::SaveScore(const LWOOBJID& playerID, const GameID activityId, const float primaryScore, const float secondaryScore, const float tertiaryScore) { + const auto* const playerEntity = Game::entityManager->GetEntity(playerID); + if (playerEntity && playerEntity->GetVar(u"cheated_score")) return; + const Leaderboard::Type leaderboardType = GetLeaderboardType(activityId); const auto oldScore = Database::Get()->GetPlayerScore(playerID, activityId); diff --git a/dGame/dComponents/InventoryComponent.cpp b/dGame/dComponents/InventoryComponent.cpp index 4cc0a3de..2482f167 100644 --- a/dGame/dComponents/InventoryComponent.cpp +++ b/dGame/dComponents/InventoryComponent.cpp @@ -42,6 +42,10 @@ #include +namespace { + std::vector g_RestrictedLOTs = {1727,}; +}; + InventoryComponent::InventoryComponent(Entity* parent) : Component(parent) { this->m_Dirty = true; this->m_Equipped = {}; @@ -870,6 +874,8 @@ void InventoryComponent::EquipItem(Item* item, const bool skipChecks) { } } return; + } else if (std::ranges::find(g_RestrictedLOTs, item->GetLot()) != g_RestrictedLOTs.end()) { + m_Parent->SetVar(u"cheated_score", true); } const auto building = character->GetBuildMode();