aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp13
-rw-r--r--src/server/game/DataStores/DBCEnums.h4
-rw-r--r--src/server/game/Scenarios/Scenario.cpp8
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)