aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp4
-rw-r--r--src/server/game/DataStores/DB2Structure.h1
-rw-r--r--src/server/game/Events/GameEventSender.cpp8
-rw-r--r--src/server/game/Maps/Map.cpp5
-rw-r--r--src/server/game/Maps/Map.h1
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);