Core/SAI: Remove deprecated events and actions

Port From (https://github.com/TrinityCore/TrinityCore/commit/29190e56428afa8d5acd2cf6ca3d712c2558899d)
This commit is contained in:
hondacrx
2022-05-30 13:01:42 -04:00
parent e6f65fc228
commit 9218188614
3 changed files with 23 additions and 176 deletions
+10 -10
View File
@@ -166,13 +166,13 @@ namespace Framework.Constants
Range = 9, // Mindist, Maxdist, Repeatmin, Repeatmax
OocLos = 10, // HostilityMode, Maxrnage, Cooldownmin, Cooldownmax
Respawn = 11, // Type, Mapid, Zoneid
TargetHealthPct = 12, // Hpmin%, Hpmax%, Repeatmin, Repeatmax
TargetHealthPct = 12, // UNUSED, do not reuse
VictimCasting = 13, // Repeatmin, Repeatmax
FriendlyHealth = 14, // Hpdeficit, Radius, Repeatmin, Repeatmax
FriendlyHealth = 14, // UNUSED, do not reuse
FriendlyIsCc = 15, // Radius, Repeatmin, Repeatmax
FriendlyMissingBuff = 16, // Spellid, Radius, Repeatmin, Repeatmax
SummonedUnit = 17, // Creatureid(0 All), Cooldownmin, Cooldownmax
TargetManaPct = 18, // Manamin%, Manamax%, Repeatmin, Repeatmax
TargetManaPct = 18, // UNUSED, do not reuse
AcceptedQuest = 19, // QuestID (0 = any), CooldownMin, CooldownMax
RewardQuest = 20, // QuestID (0 = any), CooldownMin, CooldownMax
ReachedHome = 21, // None
@@ -221,7 +221,7 @@ namespace Framework.Constants
GossipHello = 64, // noReportUse (for GOs)
FollowCompleted = 65, // None
PhaseChange = 66,
IsBehindTarget = 67, // Cooldownmin, Cooldownmax
IsBehindTarget = 67, // UNUSED, do not reuse
GameEventStart = 68, // GameEvent.Entry
GameEventEnd = 69, // GameEvent.Entry
GoLootStateChanged = 70, // Go State
@@ -261,8 +261,8 @@ namespace Framework.Constants
CallAreaexploredoreventhappens = 15, // Questid
SetIngamePhaseGroup = 16, // phaseGroupId, apply
SetEmoteState = 17, // Emoteid
SetUnitFlag = 18, // Flags
RemoveUnitFlag = 19, // Flags
SetUnitFlag = 18, // UNUSED, do not reuse
RemoveUnitFlag = 19, // UNUSED, do not reuse
AutoAttack = 20, // Allowattackstate (0 = Stop Attack, Anything Else Means Continue Attacking)
AllowCombatMovement = 21, // Allowcombatmovement (0 = Stop Combat Based Movement, Anything Else Continue Attacking)
SetEventPhase = 22, // Phase
@@ -301,7 +301,7 @@ namespace Framework.Constants
WpStop = 55, // Despawntime, Quest, Fail?
AddItem = 56, // Itemid, Count
RemoveItem = 57, // Itemid, Count
InstallAITemplate = 58, // do not use
InstallAITemplate = 58, // UNUSED, do not reuse
SetRun = 59, // 0/1
SetDisableGravity = 60, // 0/1
SetSwim = 61, // 0/1
@@ -337,9 +337,9 @@ namespace Framework.Constants
RemoveUnitFieldBytes1 = 91, // Bytes, Target
InterruptSpell = 92,
SendGoCustomAnim = 93, // Anim Id
SetDynamicFlag = 94, // do not use
AddDynamicFlag = 95, // Flags
RemoveDynamicFlag = 96, // Flags
SetDynamicFlag = 94, // UNUSED, do not reuse
AddDynamicFlag = 95, // UNUSED, do not reuse
RemoveDynamicFlag = 96, // UNUSED, do not reuse
JumpToPos = 97, // Speedxy, Speedz, Targetx, Targety, Targetz
SendGossipMenu = 98, // Menuid, optionIndex
GoSetLootState = 99, // State
+13 -87
View File
@@ -249,11 +249,8 @@ namespace Game.AI
case SmartEvents.UpdateOoc:
case SmartEvents.UpdateIc:
case SmartEvents.HealthPct:
case SmartEvents.TargetHealthPct:
case SmartEvents.ManaPct:
case SmartEvents.TargetManaPct:
case SmartEvents.Range:
case SmartEvents.FriendlyHealth:
case SmartEvents.FriendlyHealthPCT:
case SmartEvents.FriendlyMissingBuff:
case SmartEvents.HasAura:
@@ -414,17 +411,13 @@ namespace Game.AI
case SmartEvents.IcLos:
case SmartEvents.OocLos:
case SmartEvents.DistanceCreature:
case SmartEvents.FriendlyHealth:
case SmartEvents.FriendlyHealthPCT:
case SmartEvents.FriendlyIsCc:
case SmartEvents.FriendlyMissingBuff:
case SmartEvents.ActionDone:
case SmartEvents.TargetHealthPct:
case SmartEvents.TargetManaPct:
case SmartEvents.Range:
case SmartEvents.VictimCasting:
case SmartEvents.TargetBuffed:
case SmartEvents.IsBehindTarget:
case SmartEvents.InstancePlayerEnter:
case SmartEvents.TransportAddcreature:
case SmartEvents.DataSet:
@@ -572,13 +565,10 @@ namespace Game.AI
SmartEvents.Range => Marshal.SizeOf(typeof(SmartEvent.MinMaxRepeat)),
SmartEvents.OocLos => Marshal.SizeOf(typeof(SmartEvent.Los)),
SmartEvents.Respawn => Marshal.SizeOf(typeof(SmartEvent.Respawn)),
SmartEvents.TargetHealthPct => Marshal.SizeOf(typeof(SmartEvent.MinMaxRepeat)),
SmartEvents.VictimCasting => Marshal.SizeOf(typeof(SmartEvent.TargetCasting)),
SmartEvents.FriendlyHealth => Marshal.SizeOf(typeof(SmartEvent.FriendlyHealth)),
SmartEvents.FriendlyIsCc => Marshal.SizeOf(typeof(SmartEvent.FriendlyCC)),
SmartEvents.FriendlyMissingBuff => Marshal.SizeOf(typeof(SmartEvent.MissingBuff)),
SmartEvents.SummonedUnit => Marshal.SizeOf(typeof(SmartEvent.Summoned)),
SmartEvents.TargetManaPct => Marshal.SizeOf(typeof(SmartEvent.MinMaxRepeat)),
SmartEvents.AcceptedQuest => Marshal.SizeOf(typeof(SmartEvent.Quest)),
SmartEvents.RewardQuest => Marshal.SizeOf(typeof(SmartEvent.Quest)),
SmartEvents.ReachedHome => 0,
@@ -627,7 +617,6 @@ namespace Game.AI
SmartEvents.GossipHello => Marshal.SizeOf(typeof(SmartEvent.GossipHello)),
SmartEvents.FollowCompleted => 0,
SmartEvents.PhaseChange => Marshal.SizeOf(typeof(SmartEvent.EventPhaseChange)),
SmartEvents.IsBehindTarget => Marshal.SizeOf(typeof(SmartEvent.BehindTarget)),
SmartEvents.GameEventStart => Marshal.SizeOf(typeof(SmartEvent.GameEvent)),
SmartEvents.GameEventEnd => Marshal.SizeOf(typeof(SmartEvent.GameEvent)),
SmartEvents.GoLootStateChanged => Marshal.SizeOf(typeof(SmartEvent.GoLootStateChanged)),
@@ -700,8 +689,6 @@ namespace Game.AI
SmartActions.CallAreaexploredoreventhappens => Marshal.SizeOf(typeof(SmartAction.Quest)),
SmartActions.SetIngamePhaseGroup => Marshal.SizeOf(typeof(SmartAction.IngamePhaseGroup)),
SmartActions.SetEmoteState => Marshal.SizeOf(typeof(SmartAction.Emote)),
SmartActions.SetUnitFlag => Marshal.SizeOf(typeof(SmartAction.UnitFlag)),
SmartActions.RemoveUnitFlag => Marshal.SizeOf(typeof(SmartAction.UnitFlag)),
SmartActions.AutoAttack => Marshal.SizeOf(typeof(SmartAction.AutoAttack)),
SmartActions.AllowCombatMovement => Marshal.SizeOf(typeof(SmartAction.CombatMove)),
SmartActions.SetEventPhase => Marshal.SizeOf(typeof(SmartAction.SetEventPhase)),
@@ -987,8 +974,6 @@ namespace Game.AI
case SmartEvents.UpdateOoc:
case SmartEvents.HealthPct:
case SmartEvents.ManaPct:
case SmartEvents.TargetHealthPct:
case SmartEvents.TargetManaPct:
case SmartEvents.Range:
case SmartEvents.Damaged:
case SmartEvents.DamagedTarget:
@@ -1041,13 +1026,6 @@ namespace Game.AI
return false;
}
break;
case SmartEvents.FriendlyHealth:
if (!NotNULL(e, e.Event.friendlyHealth.radius))
return false;
if (!IsMinMaxValid(e, e.Event.friendlyHealth.repeatMin, e.Event.friendlyHealth.repeatMax))
return false;
break;
case SmartEvents.FriendlyIsCc:
if (!IsMinMaxValid(e, e.Event.friendlyCC.repeatMin, e.Event.friendlyCC.repeatMax))
return false;
@@ -1184,12 +1162,6 @@ namespace Game.AI
}
break;
}
case SmartEvents.IsBehindTarget:
{
if (!IsMinMaxValid(e, e.Event.behindTarget.cooldownMin, e.Event.behindTarget.cooldownMax))
return false;
break;
}
case SmartEvents.GameEventStart:
case SmartEvents.GameEventEnd:
{
@@ -1358,24 +1330,18 @@ namespace Game.AI
case SmartEvents.SceneComplete:
case SmartEvents.SceneTrigger:
break;
//Unused
case SmartEvents.TargetHealthPct:
case SmartEvents.FriendlyHealth:
case SmartEvents.TargetManaPct:
case SmartEvents.IsBehindTarget:
Log.outError(LogFilter.Sql, $"SmartAIMgr: Unused event_type {e} skipped.");
return false;
default:
Log.outError(LogFilter.ScriptsAi, "SmartAIMgr: Not handled event_type({0}), Entry {1} SourceType {2} Event {3} Action {4}, skipped.", e.GetEventType(), e.EntryOrGuid, e.GetScriptType(), e.EventId, e.GetActionType());
return false;
}
// Additional check for deprecated
switch (e.GetEventType())
{
// Deprecated
case SmartEvents.FriendlyHealth:
case SmartEvents.TargetHealthPct:
case SmartEvents.IsBehindTarget:
case SmartEvents.TargetManaPct:
Log.outWarn(LogFilter.Sql, $"SmartAIMgr: Deprecated event_type({e.GetEventType()}), {e}, it might be removed in the future, loaded for now.");
break;
default:
break;
}
}
if (!CheckUnusedEventParams(e))
@@ -2127,8 +2093,6 @@ namespace Game.AI
case SmartActions.AttackStop:
case SmartActions.WpPause:
case SmartActions.ForceDespawn:
case SmartActions.SetUnitFlag:
case SmartActions.RemoveUnitFlag:
case SmartActions.Playmovie:
case SmartActions.CloseGossip:
case SmartActions.TriggerTimedEvent:
@@ -2146,8 +2110,6 @@ namespace Game.AI
case SmartActions.SetUnitFieldBytes1:
case SmartActions.RemoveUnitFieldBytes1:
case SmartActions.SendGoCustomAnim:
case SmartActions.AddDynamicFlag:
case SmartActions.RemoveDynamicFlag:
case SmartActions.JumpToPos:
case SmartActions.SendGossipMenu:
case SmartActions.GoSetLootState:
@@ -2178,30 +2140,19 @@ namespace Game.AI
break;
}
// No longer supported
case SmartActions.SetUnitFlag:
case SmartActions.RemoveUnitFlag:
case SmartActions.InstallAITemplate:
case SmartActions.SetDynamicFlag:
Log.outError(LogFilter.Sql, $"SmartAIMgr: No longer supported action_type: {e} Skipped.");
case SmartActions.AddDynamicFlag:
case SmartActions.RemoveDynamicFlag:
Log.outError(LogFilter.Sql, $"SmartAIMgr: Unused action_type: {e} Skipped.");
return false;
default:
Log.outError(LogFilter.ScriptsAi, "SmartAIMgr: Not handled action_type({0}), event_type({1}), Entry {2} SourceType {3} Event {4}, skipped.", e.GetActionType(), e.GetEventType(), e.EntryOrGuid, e.GetScriptType(), e.EventId);
return false;
}
// Additional check for deprecated
switch (e.GetActionType())
{
// Deprecated
case SmartActions.SetUnitFlag:
case SmartActions.RemoveUnitFlag:
case SmartActions.AddItem:
case SmartActions.AddDynamicFlag:
case SmartActions.RemoveDynamicFlag:
Log.outWarn(LogFilter.Sql, $"SmartAIMgr: Deprecated action_type: {e}, it might be removed in the future, loaded for now.");
break;
default:
break;
}
if (!CheckUnusedActionParams(e))
return false;
@@ -2612,9 +2563,6 @@ namespace Game.AI
[FieldOffset(16)]
public TargetCasting targetCasting;
[FieldOffset(16)]
public FriendlyHealth friendlyHealth;
[FieldOffset(16)]
public FriendlyCC friendlyCC;
@@ -2675,9 +2623,6 @@ namespace Game.AI
[FieldOffset(16)]
public EventPhaseChange eventPhaseChange;
[FieldOffset(16)]
public BehindTarget behindTarget;
[FieldOffset(16)]
public GameEvent gameEvent;
@@ -2755,13 +2700,6 @@ namespace Game.AI
public uint repeatMax;
public uint spellId;
}
public struct FriendlyHealth
{
public uint hpDeficit;
public uint radius;
public uint repeatMin;
public uint repeatMax;
}
public struct FriendlyCC
{
public uint radius;
@@ -2865,11 +2803,6 @@ namespace Game.AI
{
public uint phasemask;
}
public struct BehindTarget
{
public uint cooldownMin;
public uint cooldownMax;
}
public struct GameEvent
{
public uint gameEventId;
@@ -3097,9 +3030,6 @@ namespace Game.AI
[FieldOffset(4)]
public Equip equip;
[FieldOffset(4)]
public UnitFlag unitFlag;
[FieldOffset(4)]
public Flag flag;
@@ -3555,10 +3485,6 @@ namespace Game.AI
public uint slot2;
public uint slot3;
}
public struct UnitFlag
{
public uint flag;
}
public struct Flag
{
public uint flag;
@@ -626,32 +626,6 @@ namespace Game.AI
}
break;
}
case SmartActions.SetUnitFlag:
{
foreach (var target in targets)
{
if (IsUnit(target))
{
target.ToUnit().AddUnitFlag((UnitFlags)e.Action.unitFlag.flag);
Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction. SMART_ACTION_SET_UNIT_FLAG. Unit {0} added flag {1} to UNIT_FIELD_FLAGS",
target.GetGUID().ToString(), e.Action.unitFlag.flag);
}
}
break;
}
case SmartActions.RemoveUnitFlag:
{
foreach (var target in targets)
{
if (IsUnit(target))
{
target.ToUnit().RemoveUnitFlag((UnitFlags)e.Action.unitFlag.flag);
Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction. SMART_ACTION_REMOVE_UNIT_FLAG. Unit {0} removed flag {1} to UNIT_FIELD_FLAGS",
target.GetGUID().ToString(), e.Action.unitFlag.flag);
}
}
break;
}
case SmartActions.AutoAttack:
{
if (!IsSmart())
@@ -3149,16 +3123,6 @@ namespace Game.AI
ProcessTimedAction(e, e.Event.minMaxRepeat.repeatMin, e.Event.minMaxRepeat.repeatMax);
break;
}
case SmartEvents.TargetHealthPct:
{
if (_me == null || !_me.IsEngaged() || _me.GetVictim() == null || _me.GetVictim().GetMaxHealth() == 0)
return;
uint perc = (uint)_me.GetVictim().GetHealthPct();
if (perc > e.Event.minMaxRepeat.max || perc < e.Event.minMaxRepeat.min)
return;
ProcessTimedAction(e, e.Event.minMaxRepeat.repeatMin, e.Event.minMaxRepeat.repeatMax, _me.GetVictim());
break;
}
case SmartEvents.ManaPct:
{
if (_me == null || !_me.IsEngaged() || _me.GetMaxPower(PowerType.Mana) == 0)
@@ -3169,16 +3133,6 @@ namespace Game.AI
ProcessTimedAction(e, e.Event.minMaxRepeat.repeatMin, e.Event.minMaxRepeat.repeatMax);
break;
}
case SmartEvents.TargetManaPct:
{
if (_me == null || !_me.IsEngaged() || _me.GetVictim() == null || _me.GetVictim().GetMaxPower(PowerType.Mana) == 0)
return;
uint perc = (uint)_me.GetVictim().GetPowerPct(PowerType.Mana);
if (perc > e.Event.minMaxRepeat.max || perc < e.Event.minMaxRepeat.min)
return;
ProcessTimedAction(e, e.Event.minMaxRepeat.repeatMin, e.Event.minMaxRepeat.repeatMax, _me.GetVictim());
break;
}
case SmartEvents.Range:
{
if (_me == null || !_me.IsEngaged() || _me.GetVictim() == null)
@@ -3211,22 +3165,6 @@ namespace Game.AI
ProcessTimedAction(e, e.Event.targetCasting.repeatMin, e.Event.targetCasting.repeatMax, _me.GetVictim());
break;
}
case SmartEvents.FriendlyHealth:
{
if (_me == null || !_me.IsEngaged())
return;
Unit target = DoSelectLowestHpFriendly(e.Event.friendlyHealth.radius, e.Event.friendlyHealth.hpDeficit);
if (target == null || !target.IsInCombat())
{
// if there are at least two same npcs, they will perform the same action immediately even if this is useless...
RecalcTimer(e, 1000, 3000);
return;
}
ProcessTimedAction(e, e.Event.friendlyHealth.repeatMin, e.Event.friendlyHealth.repeatMax, target);
break;
}
case SmartEvents.FriendlyIsCc:
{
if (_me == null || !_me.IsEngaged())
@@ -3336,19 +3274,6 @@ namespace Game.AI
ProcessAction(e, unit, var0, var1, bvar, spell, gob);
break;
}
case SmartEvents.IsBehindTarget:
{
if (_me == null)
return;
Unit victim = _me.GetVictim();
if (victim != null)
{
if (!victim.HasInArc(MathFunctions.PI, _me))
ProcessTimedAction(e, e.Event.behindTarget.cooldownMin, e.Event.behindTarget.cooldownMax, victim);
}
break;
}
case SmartEvents.ReceiveEmote:
if (e.Event.emote.emoteId == var0)
{
@@ -3810,17 +3735,13 @@ namespace Game.AI
case SmartEvents.UpdateIc:
case SmartEvents.UpdateOoc:
case SmartEvents.HealthPct:
case SmartEvents.TargetHealthPct:
case SmartEvents.ManaPct:
case SmartEvents.TargetManaPct:
case SmartEvents.Range:
case SmartEvents.VictimCasting:
case SmartEvents.FriendlyHealth:
case SmartEvents.FriendlyIsCc:
case SmartEvents.FriendlyMissingBuff:
case SmartEvents.HasAura:
case SmartEvents.TargetBuffed:
case SmartEvents.IsBehindTarget:
case SmartEvents.FriendlyHealthPCT:
case SmartEvents.DistanceCreature:
case SmartEvents.DistanceGameobject: