diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 86 |
1 files changed, 28 insertions, 58 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 53dd9ca9451..a444c379bee 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2837,11 +2837,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->SkillID[0] || condition->SkillID[1] || condition->SkillID[2] || condition->SkillID[3]) { - using SkillCount = std::extent<decltype(condition->SkillID)>; - - std::array<bool, SkillCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->SkillID)>> results; results.fill(true); - for (std::size_t i = 0; i < SkillCount::value; ++i) + for (std::size_t i = 0; i < condition->SkillID.size(); ++i) { if (condition->SkillID[i]) { @@ -2872,7 +2870,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio return false; } - if (condition->MinFactionID[0] && condition->MinFactionID[1] && condition->MinFactionID[2] && condition->MaxFactionID) + if (condition->MinFactionID[0] || condition->MinFactionID[1] || condition->MinFactionID[2] || condition->MaxFactionID) { if (!condition->MinFactionID[0] && !condition->MinFactionID[1] && !condition->MinFactionID[2]) { @@ -2886,11 +2884,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio } else { - using FactionCount = std::extent<decltype(condition->MinFactionID)>; - - std::array<bool, FactionCount::value + 1> results; + std::array<bool, std::tuple_size_v<decltype(condition->MinFactionID)> + 1> results; results.fill(true); - for (std::size_t i = 0; i < FactionCount::value; ++i) + for (std::size_t i = 0; i < condition->MinFactionID.size(); ++i) { if (condition->MinFactionID[i]) { @@ -2962,11 +2958,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->PrevQuestID[0]) { - using PrevQuestCount = std::extent<decltype(condition->PrevQuestID)>; - - std::array<bool, PrevQuestCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->PrevQuestID)>> results; results.fill(true); - for (std::size_t i = 0; i < PrevQuestCount::value; ++i) + for (std::size_t i = 0; i < condition->PrevQuestID.size(); ++i) if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(condition->PrevQuestID[i])) results[i] = (player->m_activePlayerData->QuestCompleted[((questBit - 1) >> 6)] & (UI64LIT(1) << ((questBit - 1) & 63))) != 0; @@ -2976,11 +2970,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->CurrQuestID[0]) { - using CurrQuestCount = std::extent<decltype(condition->CurrQuestID)>; - - std::array<bool, CurrQuestCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->CurrQuestID)>> results; results.fill(true); - for (std::size_t i = 0; i < CurrQuestCount::value; ++i) + for (std::size_t i = 0; i < condition->CurrQuestID.size(); ++i) if (condition->CurrQuestID[i]) results[i] = player->FindQuestSlot(condition->CurrQuestID[i]) != MAX_QUEST_LOG_SIZE; @@ -2990,11 +2982,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->CurrentCompletedQuestID[0]) { - using CurrentCompletedQuestCount = std::extent<decltype(condition->CurrentCompletedQuestID)>; - - std::array<bool, CurrentCompletedQuestCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->CurrentCompletedQuestID)>> results; results.fill(true); - for (std::size_t i = 0; i < CurrentCompletedQuestCount::value; ++i) + for (std::size_t i = 0; i < condition->CurrentCompletedQuestID.size(); ++i) if (condition->CurrentCompletedQuestID[i]) results[i] = player->GetQuestStatus(condition->CurrentCompletedQuestID[i]) == QUEST_STATUS_COMPLETE; @@ -3005,11 +2995,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->SpellID[0]) { - using SpellCount = std::extent<decltype(condition->SpellID)>; - - std::array<bool, SpellCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->SpellID)>> results; results.fill(true); - for (std::size_t i = 0; i < SpellCount::value; ++i) + for (std::size_t i = 0; i < condition->SpellID.size(); ++i) if (condition->SpellID[i]) results[i] = player->HasSpell(condition->SpellID[i]); @@ -3019,11 +3007,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->ItemID[0]) { - using ItemCount = std::extent<decltype(condition->ItemID)>; - - std::array<bool, ItemCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->ItemID)>> results; results.fill(true); - for (std::size_t i = 0; i < ItemCount::value; ++i) + for (std::size_t i = 0; i < condition->ItemID.size(); ++i) if (condition->ItemID[i]) results[i] = player->GetItemCount(condition->ItemID[i], condition->ItemFlags != 0) >= condition->ItemCount[i]; @@ -3033,11 +3019,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->CurrencyID[0]) { - using CurrencyCount = std::extent<decltype(condition->CurrencyID)>; - - std::array<bool, CurrencyCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->CurrencyID)>> results; results.fill(true); - for (std::size_t i = 0; i < CurrencyCount::value; ++i) + for (std::size_t i = 0; i < condition->CurrencyID.size(); ++i) if (condition->CurrencyID[i]) results[i] = player->GetCurrency(condition->CurrencyID[i]) >= condition->CurrencyCount[i]; @@ -3047,23 +3031,17 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->Explored[0] || condition->Explored[1]) { - using ExploredCount = std::extent<decltype(condition->Explored)>; - - for (std::size_t i = 0; i < ExploredCount::value; ++i) - { + for (std::size_t i = 0; i < condition->Explored.size(); ++i) if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(condition->Explored[i])) if (area->AreaBit != -1 && !(player->m_activePlayerData->ExploredZones[area->AreaBit / 64] & (UI64LIT(1) << (uint32(area->AreaBit) % 64)))) return false; - } } if (condition->AuraSpellID[0]) { - using AuraCount = std::extent<decltype(condition->AuraSpellID)>; - - std::array<bool, AuraCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->AuraSpellID)>> results; results.fill(true); - for (std::size_t i = 0; i < AuraCount::value; ++i) + for (std::size_t i = 0; i < condition->AuraSpellID.size(); ++i) { if (condition->AuraSpellID[i]) { @@ -3108,11 +3086,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->Achievement[0]) { - using AchievementCount = std::extent<decltype(condition->Achievement)>; - - std::array<bool, AchievementCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->Achievement)>> results; results.fill(true); - for (std::size_t i = 0; i < AchievementCount::value; ++i) + for (std::size_t i = 0; i < condition->Achievement.size(); ++i) { if (condition->Achievement[i]) { @@ -3128,11 +3104,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->LfgStatus[0]) { - using LfgCount = std::extent<decltype(condition->LfgStatus)>; - - std::array<bool, LfgCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->LfgStatus)>> results; results.fill(true); - for (std::size_t i = 0; i < LfgCount::value; ++i) + for (std::size_t i = 0; i < condition->LfgStatus.size(); ++i) if (condition->LfgStatus[i]) results[i] = PlayerConditionCompare(condition->LfgCompare[i], GetPlayerConditionLfgValue(player, PlayerConditionLfgStatus(condition->LfgStatus[i])), @@ -3144,11 +3118,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio if (condition->AreaID[0]) { - using AreaCount = std::extent<decltype(condition->AreaID)>; - - std::array<bool, AreaCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->AreaID)>> results; results.fill(true); - for (std::size_t i = 0; i < AreaCount::value; ++i) + for (std::size_t i = 0; i < condition->AreaID.size(); ++i) if (condition->AreaID[i]) results[i] = player->GetAreaId() == condition->AreaID[i] || player->GetZoneId() == condition->AreaID[i]; @@ -3177,11 +3149,9 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio uint16 questSlot = player->FindQuestSlot(condition->QuestKillID); if (quest && player->GetQuestStatus(condition->QuestKillID) != QUEST_STATUS_COMPLETE && questSlot < MAX_QUEST_LOG_SIZE) { - using QuestKillCount = std::extent<decltype(condition->QuestKillMonster)>; - - std::array<bool, QuestKillCount::value> results; + std::array<bool, std::tuple_size_v<decltype(condition->QuestKillMonster)>> results; results.fill(true); - for (std::size_t i = 0; i < QuestKillCount::value; ++i) + for (std::size_t i = 0; i < condition->QuestKillMonster.size(); ++i) { if (condition->QuestKillMonster[i]) { |