Core/Achievements: Implemented GameEvent related criteria types 73 and 93

This commit is contained in:
Shauren
2022-04-24 13:59:51 +02:00
parent 1c62b0b90f
commit 22edf79c70
5 changed files with 17 additions and 2 deletions

View File

@@ -538,7 +538,9 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*
case CriteriaType::DeliveredKillingBlow:
case CriteriaType::PVPKillInArea:
case CriteriaType::WinArena: // This also behaves like CriteriaType::WinAnyRankedArena
case CriteriaType::PlayerTriggerGameEvent:
case CriteriaType::Login:
case CriteriaType::AnyoneTriggerGameEventScenario:
case CriteriaType::BattlePetReachLevel:
case CriteriaType::ActivelyEarnPetLevel:
case CriteriaType::PlaceGarrisonBuilding:
@@ -812,10 +814,8 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*
case CriteriaType::CompleteAnyChallengeMode:
case CriteriaType::KilledAllUnitsInSpawnRegion:
case CriteriaType::CompleteChallengeMode:
case CriteriaType::PlayerTriggerGameEvent:
case CriteriaType::CreatedItemsByCastingSpellWithLimit:
case CriteriaType::BattlePetAchievementPointsEarned:
case CriteriaType::AnyoneTriggerGameEventScenario:
case CriteriaType::ReleasedSpirit:
case CriteriaType::AccountKnownPet:
case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot:

View File

@@ -2522,6 +2522,7 @@ struct MapEntry
bool IsBattleground() const { return InstanceType == MAP_BATTLEGROUND; }
bool IsBattleArena() const { return InstanceType == MAP_ARENA; }
bool IsBattlegroundOrArena() const { return InstanceType == MAP_BATTLEGROUND || InstanceType == MAP_ARENA; }
bool IsScenario() const { return InstanceType == MAP_SCENARIO; }
bool IsWorldMap() const { return InstanceType == MAP_COMMON; }
bool GetEntrancePos(int32& mapid, float& x, float& y) const

View File

@@ -53,7 +53,15 @@ void GameEvents::TriggerForPlayer(uint32 gameEventId, Player* source)
{
Map* map = source->GetMap();
if (map->Instanceable())
{
source->StartCriteriaTimer(CriteriaStartEvent::SendEvent, gameEventId);
source->ResetCriteria(CriteriaFailEvent::SendEvent, gameEventId);
}
source->UpdateCriteria(CriteriaType::PlayerTriggerGameEvent, gameEventId, 0, 0, source);
if (map->IsScenario())
source->UpdateCriteria(CriteriaType::AnyoneTriggerGameEventScenario, gameEventId, 0, 0, source);
}
void GameEvents::TriggerForMap(uint32 gameEventId, Map* map, WorldObject* source, WorldObject* target)

View File

@@ -4397,6 +4397,11 @@ bool Map::IsBattlegroundOrArena() const
return i_mapEntry && i_mapEntry->IsBattlegroundOrArena();
}
bool Map::IsScenario() const
{
return i_mapEntry && i_mapEntry->IsScenario();
}
bool Map::IsGarrison() const
{
return i_mapEntry && i_mapEntry->IsGarrison();

View File

@@ -411,6 +411,7 @@ class TC_GAME_API Map : public GridRefManager<NGridType>
bool IsBattleground() const;
bool IsBattleArena() const;
bool IsBattlegroundOrArena() const;
bool IsScenario() const;
bool IsGarrison() const;
bool GetEntrancePos(int32& mapid, float& x, float& y);