Core/CombatAI: Use TimeSpan overloads of EventMap

Port From (https://github.com/TrinityCore/TrinityCore/commit/d62b7c1e352e76f35490c22b2ab291ed299f4fa4)
This commit is contained in:
hondacrx
2022-02-28 14:13:02 -05:00
parent facb5c89a1
commit 03c646d2c8
3 changed files with 13 additions and 11 deletions
+6 -5
View File
@@ -17,6 +17,7 @@
using Framework.Constants; using Framework.Constants;
using Game.Entities; using Game.Entities;
using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Game.AI namespace Game.AI
@@ -61,7 +62,7 @@ namespace Game.AI
if (info.condition == AICondition.Aggro) if (info.condition == AICondition.Aggro)
me.CastSpell(victim, id, false); me.CastSpell(victim, id, false);
else if (info.condition == AICondition.Combat) else if (info.condition == AICondition.Combat)
_events.ScheduleEvent(id, info.cooldown + RandomHelper.Rand32() % info.cooldown); _events.ScheduleEvent(id, info.cooldown, info.cooldown * 2);
} }
} }
} }
@@ -90,7 +91,7 @@ namespace Game.AI
public override void SpellInterrupted(uint spellId, uint unTimeMs) public override void SpellInterrupted(uint spellId, uint unTimeMs)
{ {
_events.RescheduleEvent(spellId, unTimeMs); _events.RescheduleEvent(spellId, TimeSpan.FromMilliseconds(unTimeMs));
} }
} }
@@ -153,11 +154,11 @@ namespace Game.AI
me.CastSpell(victim, id, false); me.CastSpell(victim, id, false);
else if (info.condition == AICondition.Combat) else if (info.condition == AICondition.Combat)
{ {
uint cooldown = info.realCooldown; TimeSpan cooldown = info.realCooldown;
if (count == spell) if (count == spell)
{ {
DoCast(Spells[spell]); DoCast(Spells[spell]);
cooldown += (uint)me.GetCurrentSpellCastTime(id); cooldown += TimeSpan.FromMilliseconds(me.GetCurrentSpellCastTime(id));
} }
_events.ScheduleEvent(id, cooldown); _events.ScheduleEvent(id, cooldown);
} }
@@ -188,7 +189,7 @@ namespace Game.AI
uint casttime = (uint)me.GetCurrentSpellCastTime(spellId); uint casttime = (uint)me.GetCurrentSpellCastTime(spellId);
AISpellInfoType info = GetAISpellInfo(spellId, me.GetMap().GetDifficultyID()); AISpellInfoType info = GetAISpellInfo(spellId, me.GetMap().GetDifficultyID());
if (info != null) if (info != null)
_events.ScheduleEvent(spellId, (casttime != 0 ? casttime : 500) + info.realCooldown); _events.ScheduleEvent(spellId, TimeSpan.FromMilliseconds(casttime != 0 ? casttime : 500) + info.realCooldown);
} }
} }
} }
+4 -3
View File
@@ -22,6 +22,7 @@ using Game.DataStorage;
using Game.Entities; using Game.Entities;
using Game.Maps; using Game.Maps;
using Game.Spells; using Game.Spells;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -575,13 +576,13 @@ namespace Game.AI
{ {
target = AITarget.Self; target = AITarget.Self;
condition = AICondition.Combat; condition = AICondition.Combat;
cooldown = SharedConst.AIDefaultCooldown; cooldown = TimeSpan.FromMilliseconds(SharedConst.AIDefaultCooldown);
} }
public AITarget target; public AITarget target;
public AICondition condition; public AICondition condition;
public uint cooldown; public TimeSpan cooldown;
public uint realCooldown; public TimeSpan realCooldown;
public float maxRange; public float maxRange;
public byte Targets; // set of enum SelectTarget public byte Targets; // set of enum SelectTarget
+3 -3
View File
@@ -331,8 +331,8 @@ namespace Game.AI
else else
AIInfo.condition = AICondition.Combat; AIInfo.condition = AICondition.Combat;
if (AIInfo.cooldown < spellInfo.RecoveryTime) if (AIInfo.cooldown.TotalMilliseconds < spellInfo.RecoveryTime)
AIInfo.cooldown = spellInfo.RecoveryTime; AIInfo.cooldown = TimeSpan.FromMilliseconds(spellInfo.RecoveryTime);
if (spellInfo.GetMaxRange(false) == 0) if (spellInfo.GetMaxRange(false) == 0)
{ {
@@ -370,7 +370,7 @@ namespace Game.AI
} }
} }
} }
AIInfo.realCooldown = spellInfo.RecoveryTime + spellInfo.StartRecoveryTime; AIInfo.realCooldown = TimeSpan.FromMilliseconds(spellInfo.RecoveryTime + spellInfo.StartRecoveryTime);
AIInfo.maxRange = spellInfo.GetMaxRange(false) * 3 / 4; AIInfo.maxRange = spellInfo.GetMaxRange(false) * 3 / 4;
AIInfo.Effects = 0; AIInfo.Effects = 0;