From 1fc66dc3dc2e3d9df64f716f0c4f3862063427ea Mon Sep 17 00:00:00 2001 From: sogladev Date: Thu, 1 Jan 2026 12:33:08 +0100 Subject: [PATCH] fix(Core/Condition): CONDITION_RANDOM_DUNGEON difficulty param (#24283) --- .../pending_db_world/rev_1767208611672834231.sql | 2 ++ src/server/game/Conditions/ConditionMgr.cpp | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1767208611672834231.sql diff --git a/data/sql/updates/pending_db_world/rev_1767208611672834231.sql b/data/sql/updates/pending_db_world/rev_1767208611672834231.sql new file mode 100644 index 000000000..4c8654736 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1767208611672834231.sql @@ -0,0 +1,2 @@ +-- +UPDATE `conditions` SET `ConditionValue1` = 0 WHERE (`SourceTypeOrReferenceId` = 4) AND (`SourceGroup` = 24524) AND (`SourceEntry` = 52676) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 105); diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 1e1840de3..add31c1b1 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -553,7 +553,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) if (!ConditionValue1) condMeets = true; else if (Map* map = player->GetMap()) - condMeets = map->GetDifficulty() == Difficulty(ConditionValue1); + condMeets = map->GetDifficulty() == Difficulty(ConditionValue2); } } } @@ -2487,13 +2487,16 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) } break; case CONDITION_RANDOM_DUNGEON: - if (cond->ConditionValue1 >= MAX_DIFFICULTY) + if (cond->ConditionValue1 > 1) { - LOG_ERROR("sql.sql", "RandomDungeon condition has invalid difficulty in value1 ({}).", cond->ConditionValue1); + LOG_ERROR("sql.sql", "RandomDungeon condition has useless data in value1 ({}).", cond->ConditionValue1); + return false; + } + if (cond->ConditionValue2 >= MAX_DIFFICULTY) + { + LOG_ERROR("sql.sql", "RandomDungeon condition has invalid difficulty in value2 ({}).", cond->ConditionValue1); return false; } - if (cond->ConditionValue2) - LOG_ERROR("sql.sql", "RandomDungeon condition has useless data in value2 ({}).", cond->ConditionValue2); if (cond->ConditionValue3) LOG_ERROR("sql.sql", "RandomDungeon condition has useless data in value3 ({}).", cond->ConditionValue3); break;