Core/Criteria: Implemented CompleteAnyScenario and CompleteScenario types (#29984)

This commit is contained in:
Antonio Martín Berti
2024-05-13 16:06:41 -03:00
committed by GitHub
parent e17e926cec
commit 980ca4c656
3 changed files with 19 additions and 6 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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)