Core/Criteria: Add all values of CriteriaFailEvent
Port From (https://github.com/TrinityCore/TrinityCore/commit/4b6ddfbbccf7dade8292331c860209f45945fa00)
This commit is contained in:
@@ -84,24 +84,6 @@ namespace Framework.Constants
|
|||||||
QuestObjective = 0x10
|
QuestObjective = 0x10
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CriteriaCondition
|
|
||||||
{
|
|
||||||
None = 0,
|
|
||||||
NoDeath = 1,
|
|
||||||
Unk2 = 2,
|
|
||||||
BgMap = 3,
|
|
||||||
NoLose = 4,
|
|
||||||
RemoveAura = 5,
|
|
||||||
CastSpell = 8,
|
|
||||||
NoSpellHit = 9,
|
|
||||||
NotInGroup = 10,
|
|
||||||
LostPetBattle = 11,
|
|
||||||
Unk13 = 13,
|
|
||||||
Event = 14,
|
|
||||||
|
|
||||||
Max
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CriteriaAdditionalCondition
|
public enum CriteriaAdditionalCondition
|
||||||
{
|
{
|
||||||
SourceDrunkValue = 1,
|
SourceDrunkValue = 1,
|
||||||
@@ -417,6 +399,27 @@ namespace Framework.Constants
|
|||||||
SourceFlying = 311,
|
SourceFlying = 311,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum CriteriaFailEvent : byte
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Death = 1, // Death
|
||||||
|
Hours24WithoutCompletingDailyQuest = 2, // 24 hours without completing a daily quest
|
||||||
|
LeaveBattleground = 3, // Leave a battleground
|
||||||
|
LoseRankedArenaMatchWithTeamSize = 4, // Lose a ranked arena match with team size {#Team Size}
|
||||||
|
LoseAura = 5, // Lose aura "{Spell}"
|
||||||
|
GainAura = 6, // Gain aura "{Spell}"
|
||||||
|
GainAuraEffect = 7, // Gain aura effect "{SpellAuraNames.EnumID}"
|
||||||
|
CastSpell = 8, // Cast spell "{Spell}"
|
||||||
|
BeSpellTarget = 9, // Have spell "{Spell}" cast on you
|
||||||
|
ModifyPartyStatus = 10, // Modify your party status
|
||||||
|
LosePetBattle = 11, // Lose a pet battle
|
||||||
|
BattlePetDies = 12, // Battle pet dies
|
||||||
|
DailyQuestsCleared = 13, // Daily quests cleared
|
||||||
|
SendEvent = 14, // Send event "{GameEvents}" (player-sent/instance only)
|
||||||
|
|
||||||
|
Max
|
||||||
|
}
|
||||||
|
|
||||||
public enum CriteriaFlags
|
public enum CriteriaFlags
|
||||||
{
|
{
|
||||||
ShowProgressBar = 0x01,
|
ShowProgressBar = 0x01,
|
||||||
|
|||||||
@@ -364,15 +364,15 @@ namespace Game.Achievements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetCriteria(CriteriaCondition condition, uint failAsset, bool evenIfCriteriaComplete)
|
public void ResetCriteria(CriteriaFailEvent failEvent, uint failAsset, bool evenIfCriteriaComplete)
|
||||||
{
|
{
|
||||||
Log.outDebug(LogFilter.Achievement, $"ResetAchievementCriteria({condition}, {failAsset}, {evenIfCriteriaComplete})");
|
Log.outDebug(LogFilter.Achievement, $"ResetAchievementCriteria({failEvent}, {failAsset}, {evenIfCriteriaComplete})");
|
||||||
|
|
||||||
// disable for gamemasters with GM-mode enabled
|
// disable for gamemasters with GM-mode enabled
|
||||||
if (_owner.IsGameMaster())
|
if (_owner.IsGameMaster())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var achievementCriteriaList = Global.CriteriaMgr.GetCriteriaByFailEvent(condition, (int)failAsset);
|
var achievementCriteriaList = Global.CriteriaMgr.GetCriteriaByFailEvent(failEvent, (int)failAsset);
|
||||||
if (!achievementCriteriaList.Empty())
|
if (!achievementCriteriaList.Empty())
|
||||||
{
|
{
|
||||||
foreach (Criteria achievementCriteria in achievementCriteriaList)
|
foreach (Criteria achievementCriteria in achievementCriteriaList)
|
||||||
|
|||||||
@@ -900,13 +900,13 @@ namespace Game.Achievements
|
|||||||
if (criteria.Entry.FailEvent == 0)
|
if (criteria.Entry.FailEvent == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
switch ((CriteriaCondition)criteria.Entry.FailEvent)
|
switch ((CriteriaFailEvent)criteria.Entry.FailEvent)
|
||||||
{
|
{
|
||||||
case CriteriaCondition.BgMap:
|
case CriteriaFailEvent.LeaveBattleground:
|
||||||
if (!referencePlayer.InBattleground())
|
if (!referencePlayer.InBattleground())
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case CriteriaCondition.NotInGroup:
|
case CriteriaFailEvent.ModifyPartyStatus:
|
||||||
if (referencePlayer.GetGroup())
|
if (referencePlayer.GetGroup())
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
@@ -1144,7 +1144,7 @@ namespace Game.Achievements
|
|||||||
if (miscValue1 == 0)
|
if (miscValue1 == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (criteria.Entry.FailEvent == (uint)CriteriaCondition.BgMap)
|
if ((CriteriaFailEvent)criteria.Entry.FailEvent == CriteriaFailEvent.LeaveBattleground)
|
||||||
{
|
{
|
||||||
if (!referencePlayer.InBattleground())
|
if (!referencePlayer.InBattleground())
|
||||||
return false;
|
return false;
|
||||||
@@ -2627,7 +2627,7 @@ namespace Game.Achievements
|
|||||||
MultiMap<CriteriaTypes, Criteria> _questObjectiveCriteriasByType = new();
|
MultiMap<CriteriaTypes, Criteria> _questObjectiveCriteriasByType = new();
|
||||||
|
|
||||||
MultiMap<CriteriaTimedTypes, Criteria> _criteriasByTimedType = new();
|
MultiMap<CriteriaTimedTypes, Criteria> _criteriasByTimedType = new();
|
||||||
MultiMap<int, Criteria>[] _criteriasByFailEvent = new MultiMap<int, Criteria>[(int)CriteriaCondition.Max];
|
MultiMap<int, Criteria>[] _criteriasByFailEvent = new MultiMap<int, Criteria>[(int)CriteriaFailEvent.Max];
|
||||||
|
|
||||||
CriteriaManager()
|
CriteriaManager()
|
||||||
{
|
{
|
||||||
@@ -2746,7 +2746,7 @@ namespace Game.Achievements
|
|||||||
_criteriaTreeByCriteria.Add(pair.Value.Entry.CriteriaID, pair.Value);
|
_criteriaTreeByCriteria.Add(pair.Value.Entry.CriteriaID, pair.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < (int)CriteriaCondition.Max; ++i)
|
for (var i = 0; i < (int)CriteriaFailEvent.Max; ++i)
|
||||||
_criteriasByFailEvent[i] = new MultiMap<int, Criteria>();
|
_criteriasByFailEvent[i] = new MultiMap<int, Criteria>();
|
||||||
|
|
||||||
// Load criteria
|
// Load criteria
|
||||||
@@ -2759,7 +2759,7 @@ namespace Game.Achievements
|
|||||||
Cypher.Assert(criteriaEntry.Type < CriteriaTypes.TotalTypes,
|
Cypher.Assert(criteriaEntry.Type < CriteriaTypes.TotalTypes,
|
||||||
$"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.Type + 1} but is currently equal to {CriteriaTypes.TotalTypes}");
|
$"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.Type + 1} but is currently equal to {CriteriaTypes.TotalTypes}");
|
||||||
Cypher.Assert(criteriaEntry.StartEvent < CriteriaTimedTypes.Max, $"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.StartEvent + 1} but is currently equal to {CriteriaTimedTypes.Max}");
|
Cypher.Assert(criteriaEntry.StartEvent < CriteriaTimedTypes.Max, $"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.StartEvent + 1} but is currently equal to {CriteriaTimedTypes.Max}");
|
||||||
Cypher.Assert(criteriaEntry.FailEvent < (byte)CriteriaCondition.Max, $"CRITERIA_CONDITION_MAX must be greater than or equal to {criteriaEntry.FailEvent + 1} but is currently equal to {CriteriaCondition.Max}");
|
Cypher.Assert(criteriaEntry.FailEvent < (byte)CriteriaFailEvent.Max, $"CRITERIA_CONDITION_MAX must be greater than or equal to {criteriaEntry.FailEvent + 1} but is currently equal to {CriteriaFailEvent.Max}");
|
||||||
|
|
||||||
var treeList = _criteriaTreeByCriteria.LookupByKey(criteriaEntry.Id);
|
var treeList = _criteriaTreeByCriteria.LookupByKey(criteriaEntry.Id);
|
||||||
if (treeList.Empty())
|
if (treeList.Empty())
|
||||||
@@ -3000,9 +3000,9 @@ namespace Game.Achievements
|
|||||||
return _criteriasByTimedType.LookupByKey(type);
|
return _criteriasByTimedType.LookupByKey(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Criteria> GetCriteriaByFailEvent(CriteriaCondition condition, int asset)
|
public List<Criteria> GetCriteriaByFailEvent(CriteriaFailEvent failEvent, int asset)
|
||||||
{
|
{
|
||||||
return _criteriasByFailEvent[(int)condition].LookupByKey(asset);
|
return _criteriasByFailEvent[(int)failEvent].LookupByKey(asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CriteriaDataSet GetCriteriaDataSet(Criteria criteria)
|
public CriteriaDataSet GetCriteriaDataSet(Criteria criteria)
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ namespace Game.Arenas
|
|||||||
loserArenaTeam.MemberLost(player, winnerMatchmakerRating, loserMatchmakerChange);
|
loserArenaTeam.MemberLost(player, winnerMatchmakerRating, loserMatchmakerChange);
|
||||||
|
|
||||||
// Arena lost => reset the win_rated_arena having the "no_lose" condition
|
// Arena lost => reset the win_rated_arena having the "no_lose" condition
|
||||||
player.ResetCriteria(CriteriaCondition.NoLose, 0);
|
player.ResetCriteria(CriteriaFailEvent.LoseRankedArenaMatchWithTeamSize, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -917,7 +917,7 @@ namespace Game.BattleGrounds
|
|||||||
player.SetBGTeam(0);
|
player.SetBGTeam(0);
|
||||||
|
|
||||||
// remove all criterias on bg leave
|
// remove all criterias on bg leave
|
||||||
player.ResetCriteria(CriteriaCondition.BgMap, GetMapId(), true);
|
player.ResetCriteria(CriteriaFailEvent.LeaveBattleground, GetMapId(), true);
|
||||||
|
|
||||||
if (Transport)
|
if (Transport)
|
||||||
player.TeleportToBGEntryPoint();
|
player.TeleportToBGEntryPoint();
|
||||||
@@ -1066,7 +1066,7 @@ namespace Game.BattleGrounds
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reset all map criterias on map enter
|
// reset all map criterias on map enter
|
||||||
player.ResetCriteria(CriteriaCondition.BgMap, GetMapId(), true);
|
player.ResetCriteria(CriteriaFailEvent.LeaveBattleground, GetMapId(), true);
|
||||||
|
|
||||||
// setup BG group membership
|
// setup BG group membership
|
||||||
PlayerAddedToBGCheckIfBGIsRunning(player);
|
PlayerAddedToBGCheckIfBGIsRunning(player);
|
||||||
|
|||||||
@@ -53,10 +53,10 @@ namespace Game.Entities
|
|||||||
m_achievementSys.RemoveCriteriaTimer(type, entry);
|
m_achievementSys.RemoveCriteriaTimer(type, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetCriteria(CriteriaCondition condition, uint failAsset, bool evenIfCriteriaComplete = false)
|
public void ResetCriteria(CriteriaFailEvent failEvent, uint failAsset, bool evenIfCriteriaComplete = false)
|
||||||
{
|
{
|
||||||
m_achievementSys.ResetCriteria(condition, failAsset, evenIfCriteriaComplete);
|
m_achievementSys.ResetCriteria(failEvent, failAsset, evenIfCriteriaComplete);
|
||||||
m_questObjectiveCriteriaMgr.ResetCriteria(condition, failAsset, evenIfCriteriaComplete);
|
m_questObjectiveCriteriaMgr.ResetCriteria(failEvent, failAsset, evenIfCriteriaComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateCriteria(CriteriaTypes type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, Unit unit = null)
|
public void UpdateCriteria(CriteriaTypes type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, Unit unit = null)
|
||||||
|
|||||||
@@ -658,7 +658,7 @@ namespace Game.Entities
|
|||||||
UpdateCriteria(CriteriaTypes.DeathInDungeon, 1);
|
UpdateCriteria(CriteriaTypes.DeathInDungeon, 1);
|
||||||
|
|
||||||
// reset all death criterias
|
// reset all death criterias
|
||||||
ResetCriteria(CriteriaCondition.NoDeath, 0);
|
ResetCriteria(CriteriaFailEvent.Death, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
base.SetDeathState(s);
|
base.SetDeathState(s);
|
||||||
|
|||||||
@@ -164,15 +164,15 @@ namespace Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetCriteria(CriteriaCondition condition, uint failAsset, bool evenIfCriteriaComplete)
|
public void ResetCriteria(CriteriaFailEvent failEvent, uint failAsset, bool evenIfCriteriaComplete)
|
||||||
{
|
{
|
||||||
Log.outDebug(LogFilter.Player, $"QuestObjectiveCriteriaMgr.ResetCriteria({condition}, {failAsset}, {evenIfCriteriaComplete})");
|
Log.outDebug(LogFilter.Player, $"QuestObjectiveCriteriaMgr.ResetCriteria({failEvent}, {failAsset}, {evenIfCriteriaComplete})");
|
||||||
|
|
||||||
// disable for gamemasters with GM-mode enabled
|
// disable for gamemasters with GM-mode enabled
|
||||||
if (_owner.IsGameMaster())
|
if (_owner.IsGameMaster())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var playerCriteriaList = Global.CriteriaMgr.GetCriteriaByFailEvent(condition, (int)failAsset);
|
var playerCriteriaList = Global.CriteriaMgr.GetCriteriaByFailEvent(failEvent, (int)failAsset);
|
||||||
foreach (Criteria playerCriteria in playerCriteriaList)
|
foreach (Criteria playerCriteria in playerCriteriaList)
|
||||||
{
|
{
|
||||||
var trees = Global.CriteriaMgr.GetCriteriaTreesByCriteria(playerCriteria.Id);
|
var trees = Global.CriteriaMgr.GetCriteriaTreesByCriteria(playerCriteria.Id);
|
||||||
|
|||||||
Reference in New Issue
Block a user