mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Achievements: Implemented DefeatDungeonEncounter and DefeatDungeonEncounterWhileElegibleForLoot criteria types
This commit is contained in:
@@ -544,8 +544,10 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*
|
||||
case CriteriaType::PlayerTriggerGameEvent:
|
||||
case CriteriaType::Login:
|
||||
case CriteriaType::AnyoneTriggerGameEventScenario:
|
||||
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:
|
||||
case CriteriaType::BattlePetReachLevel:
|
||||
case CriteriaType::ActivelyEarnPetLevel:
|
||||
case CriteriaType::DefeatDungeonEncounter:
|
||||
case CriteriaType::PlaceGarrisonBuilding:
|
||||
case CriteriaType::ActivateAnyGarrisonBuilding:
|
||||
case CriteriaType::HonorLevelIncrease:
|
||||
@@ -799,7 +801,6 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*
|
||||
case CriteriaType::AccountObtainPetThroughBattle:
|
||||
case CriteriaType::WinPetBattle:
|
||||
case CriteriaType::PlayerObtainPetThroughBattle:
|
||||
case CriteriaType::DefeatDungeonEncounter:
|
||||
case CriteriaType::ActivateGarrisonBuilding:
|
||||
case CriteriaType::UpgradeGarrison:
|
||||
case CriteriaType::StartAnyGarrisonMissionWithFollowerType:
|
||||
@@ -823,7 +824,6 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*
|
||||
case CriteriaType::BattlePetAchievementPointsEarned:
|
||||
case CriteriaType::ReleasedSpirit:
|
||||
case CriteriaType::AccountKnownPet:
|
||||
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:
|
||||
case CriteriaType::CompletedLFGDungeon:
|
||||
case CriteriaType::KickInitiatorInLFGDungeon:
|
||||
case CriteriaType::KickVoterInLFGDungeon:
|
||||
@@ -1195,6 +1195,7 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
|
||||
case CriteriaType::CatchFishInFishingHole:
|
||||
case CriteriaType::LearnSpellFromSkillLine:
|
||||
case CriteriaType::WinDuel:
|
||||
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:
|
||||
case CriteriaType::GetLootByType:
|
||||
case CriteriaType::LearnTradeskillSkillLine:
|
||||
case CriteriaType::CompletedLFGDungeonWithStrangers:
|
||||
@@ -1204,6 +1205,7 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi
|
||||
case CriteriaType::UniquePetsOwned:
|
||||
case CriteriaType::BattlePetReachLevel:
|
||||
case CriteriaType::ActivelyEarnPetLevel:
|
||||
case CriteriaType::DefeatDungeonEncounter:
|
||||
case CriteriaType::LearnAnyTransmogInSlot:
|
||||
case CriteriaType::ParagonLevelIncreaseWithFaction:
|
||||
case CriteriaType::PlayerHasEarnedHonor:
|
||||
@@ -1619,6 +1621,11 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis
|
||||
break;
|
||||
case CriteriaType::EarnTeamArenaRating:
|
||||
return false;
|
||||
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:
|
||||
case CriteriaType::DefeatDungeonEncounter:
|
||||
if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.DungeonEncounterID))
|
||||
return false;
|
||||
break;
|
||||
case CriteriaType::PlaceGarrisonBuilding:
|
||||
case CriteriaType::ActivateGarrisonBuilding:
|
||||
if (miscValue1 != uint32(criteria->Entry->Asset.GarrBuildingID))
|
||||
@@ -4497,9 +4504,11 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaType type)
|
||||
case CriteriaType::GainAura:
|
||||
case CriteriaType::CatchFishInFishingHole:
|
||||
case CriteriaType::LearnSpellFromSkillLine:
|
||||
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:
|
||||
case CriteriaType::GetLootByType:
|
||||
case CriteriaType::LandTargetedSpellOnTarget:
|
||||
case CriteriaType::LearnTradeskillSkillLine:
|
||||
case CriteriaType::DefeatDungeonEncounter:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -596,7 +596,7 @@ enum class CriteriaType : int16
|
||||
RollAnyGreed = 94, // Roll any number on greed
|
||||
ReleasedSpirit = 95, /*NYI*/ // Released Spirit
|
||||
AccountKnownPet = 96, /*NYI*/ // Account knows pet "{Creature}" (Backtracked)
|
||||
DefeatDungeonEncounterWhileElegibleForLoot = 97, /*NYI*/ // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot
|
||||
DefeatDungeonEncounterWhileElegibleForLoot = 97, // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot
|
||||
// UNUSED 18{} = 98, // Unused
|
||||
// UNUSED 19{} = 99, // Unused
|
||||
// UNUSED 20{} = 100, // Unused
|
||||
@@ -664,7 +664,7 @@ enum class CriteriaType : int16
|
||||
ActivelyEarnPetLevel = 162, // (Player) Actively earn level {#Level} with a pet by a player
|
||||
EnterArea = 163, // Enter Map Area "{AreaTable}"
|
||||
LeaveArea = 164, // Leave Map Area "{AreaTable}"
|
||||
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
|
||||
DefeatDungeonEncounter = 165, // Defeat Encounter "{DungeonEncounter}"
|
||||
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
|
||||
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
|
||||
ActivateAnyGarrisonBuilding = 168, // Garrison Building: Activate any
|
||||
|
||||
@@ -432,6 +432,12 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
|
||||
dungeonEncounter = bossInfo->GetDungeonEncounterForDifficulty(instance->GetDifficultyID());
|
||||
if (dungeonEncounter)
|
||||
{
|
||||
instance->DoOnPlayers([&](Player* player)
|
||||
{
|
||||
if (!player->IsLockedToDungeonEncounter(dungeonEncounter->ID))
|
||||
player->UpdateCriteria(CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot, dungeonEncounter->ID);
|
||||
});
|
||||
|
||||
DoUpdateCriteria(CriteriaType::DefeatDungeonEncounter, dungeonEncounter->ID);
|
||||
SendBossKillCredit(dungeonEncounter->ID);
|
||||
if (dungeonEncounter->CompleteWorldStateID)
|
||||
|
||||
Reference in New Issue
Block a user