diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 4 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 1 | ||||
-rw-r--r-- | src/server/game/Events/GameEventSender.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Maps/Map.h | 1 |
5 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 46ed90359ee..52c6ea3d895 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -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: diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index c60da2139c8..d21cdb98a2e 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -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 diff --git a/src/server/game/Events/GameEventSender.cpp b/src/server/game/Events/GameEventSender.cpp index 0d798826197..a520344b3b4 100644 --- a/src/server/game/Events/GameEventSender.cpp +++ b/src/server/game/Events/GameEventSender.cpp @@ -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) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 3edf4559c30..96ab3f9b0ac 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -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(); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 69da248676e..f84966dc4a7 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -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); |