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

Port From (https://github.com/TrinityCore/TrinityCore/commit/22edf79c70519a571d9eeb7e397add695d7a28bb)
This commit is contained in:
hondacrx
2022-05-31 20:00:36 -04:00
parent 8bbd650d0b
commit a0b381ed79
4 changed files with 16 additions and 2 deletions
+2 -2
View File
@@ -136,7 +136,9 @@ namespace Game.Achievements
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:
@@ -414,10 +416,8 @@ namespace Game.Achievements
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:
@@ -66,6 +66,7 @@ namespace Game.DataStorage
public bool IsBattleground() { return InstanceType == MapTypes.Battleground; }
public bool IsBattleArena() { return InstanceType == MapTypes.Arena; }
public bool IsBattlegroundOrArena() { return InstanceType == MapTypes.Battleground || InstanceType == MapTypes.Arena; }
public bool IsScenario() { return InstanceType == MapTypes.Scenario; }
public bool IsWorldMap() { return InstanceType == MapTypes.Common; }
public bool GetEntrancePos(out uint mapid, out float x, out float y)
+8
View File
@@ -57,7 +57,15 @@ namespace Game
{
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);
}
public static void TriggerForMap(uint gameEventId, Map map, WorldObject source = null, WorldObject target = null)
+5
View File
@@ -3778,6 +3778,11 @@ namespace Game.Maps
return i_mapRecord != null && i_mapRecord.IsBattlegroundOrArena();
}
public bool IsScenario()
{
return i_mapRecord != null && i_mapRecord.IsScenario();
}
public bool IsGarrison()
{
return i_mapRecord != null && i_mapRecord.IsGarrison();