diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 13 | ||||
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 4 | ||||
-rw-r--r-- | src/server/game/Scenarios/Scenario.cpp | 8 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 3fa4acb8ca9..e4d2ae0d289 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -547,6 +547,8 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* case CriteriaType::Login: case CriteriaType::AnyoneTriggerGameEventScenario: case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot: + case CriteriaType::CompleteAnyScenario: + case CriteriaType::CompleteScenario: case CriteriaType::BattlePetReachLevel: case CriteriaType::ActivelyEarnPetLevel: case CriteriaType::DefeatDungeonEncounter: @@ -802,8 +804,6 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* case CriteriaType::KickVoterInLFRDungeon: case CriteriaType::KickTargetInLFRDungeon: case CriteriaType::GroupedTankLeftEarlyInLFRDungeon: - case CriteriaType::CompleteAnyScenario: - case CriteriaType::CompleteScenario: case CriteriaType::AccountObtainPetThroughBattle: case CriteriaType::WinPetBattle: case CriteriaType::PlayerObtainPetThroughBattle: @@ -1204,11 +1204,13 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi case CriteriaType::CompletedLFGDungeonWithStrangers: case CriteriaType::DeliveredKillingBlow: case CriteriaType::CurrencyGained: - case CriteriaType::PlaceGarrisonBuilding: + case CriteriaType::CompleteAnyScenario: + case CriteriaType::CompleteScenario: case CriteriaType::UniquePetsOwned: case CriteriaType::BattlePetReachLevel: case CriteriaType::ActivelyEarnPetLevel: case CriteriaType::DefeatDungeonEncounter: + case CriteriaType::PlaceGarrisonBuilding: case CriteriaType::LearnHeirloom: case CriteriaType::LearnAnyHeirloom: case CriteriaType::EarnArtifactXP: @@ -1392,6 +1394,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis case CriteriaType::SellItemsToVendors: case CriteriaType::GainLevels: case CriteriaType::LearnAnyTransmog: + case CriteriaType::CompleteAnyScenario: if (!miscValue1) return false; break; @@ -1658,6 +1661,10 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.EventID)) return false; break; + case CriteriaType::CompleteScenario: + if (miscValue1 != uint32(criteria->Entry->Asset.ScenarioID)) + return false; + break; default: break; } diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 118cefe1b58..0a05c0d8d9f 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -652,8 +652,8 @@ enum class CriteriaType : int16 KickVoterInLFRDungeon = 148, /*NYI*/ // Kicked in an LFR dungeon (voter) KickTargetInLFRDungeon = 149, /*NYI*/ // Kicked in an LFR dungeon (target) GroupedTankLeftEarlyInLFRDungeon = 150, /*NYI*/ // Grouped tank left early in an LFR dungeon - CompleteAnyScenario = 151, /*NYI*/ // Complete a Scenario - CompleteScenario = 152, /*NYI*/ // Complete scenario "{Scenario}" + CompleteAnyScenario = 151, // Complete a Scenario + CompleteScenario = 152, // Complete scenario "{Scenario}" EnterAreaTriggerWithActionSet = 153, /*NYI*/ // Enter area trigger "{AreaTriggerActionSet}" LeaveAreaTriggerWithActionSet = 154, /*NYI*/ // Leave area trigger "{AreaTriggerActionSet}" LearnedNewPet = 155, // (Account Only) Learned a new pet diff --git a/src/server/game/Scenarios/Scenario.cpp b/src/server/game/Scenarios/Scenario.cpp index ce994618d62..e6f989a7840 100644 --- a/src/server/game/Scenarios/Scenario.cpp +++ b/src/server/game/Scenarios/Scenario.cpp @@ -87,7 +87,13 @@ void Scenario::CompleteStep(ScenarioStepEntry const* step) void Scenario::CompleteScenario() { - return SendPacket(WorldPackets::Scenario::ScenarioCompleted(_data->Entry->ID).Write()); + SendPacket(WorldPackets::Scenario::ScenarioCompleted(_data->Entry->ID).Write()); + + DoForAllPlayers([&](Player* player) + { + player->UpdateCriteria(CriteriaType::CompleteAnyScenario, 1); + player->UpdateCriteria(CriteriaType::CompleteScenario, _data->Entry->ID); + }); } void Scenario::SetStep(ScenarioStepEntry const* step) |