Core/Creatures: Moved autoattack handling from scripts to game

Port From (https://github.com/TrinityCore/TrinityCore/commit/605e5f94c0d71cad8e83fa5a07eaec4e6bed9cc3)
This commit is contained in:
hondacrx
2024-02-05 18:18:30 -05:00
parent aa696fb176
commit 437fe2d8fd
94 changed files with 192 additions and 358 deletions
@@ -112,7 +112,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Curator
public override void UpdateAI(uint diff)
{
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
bool _infused;
@@ -81,7 +81,7 @@ namespace Scripts.EasternKingdoms.Karazhan.MaidenOfVirtue
if (!UpdateVictim())
return;
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
}
}
@@ -206,7 +206,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Midnight
if (!UpdateVictim() && _phase != Phases.None)
return;
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
public override void SpellHit(WorldObject caster, SpellInfo spellInfo)
@@ -346,7 +346,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Midnight
if (!UpdateVictim() || _phase == Phases.Mounted)
return;
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
}
}
@@ -137,6 +137,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Moroes
_scheduler.Schedule(TimeSpan.FromSeconds(30), MiscConst.GroupNonEnrage, task =>
{
DoCast(me, SpellIds.Vanish);
me.SetCanMelee(false);
InVanish = true;
task.Schedule(TimeSpan.FromSeconds(5), garroteTask =>
@@ -148,6 +149,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Moroes
target.CastSpell(target, SpellIds.Garrote, true);
InVanish = false;
me.SetCanMelee(true);
});
task.Repeat();
@@ -263,11 +265,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Moroes
_scheduler.CancelGroup(MiscConst.GroupNonEnrage);
}
_scheduler.Update(diff, () =>
{
if (!InVanish)
DoMeleeAttackIfReady();
});
_scheduler.Update(diff);
}
}
@@ -318,8 +316,6 @@ namespace Scripts.EasternKingdoms.Karazhan.Moroes
{
if (instance.GetBossState(DataTypes.Moroes) != EncounterState.InProgress)
EnterEvadeMode();
DoMeleeAttackIfReady();
}
}
@@ -337,8 +337,6 @@ namespace Scripts.EasternKingdoms.Karazhan.Netherspite
}
else PhaseTimer -= diff;
}
DoMeleeAttackIfReady();
}
}
}
@@ -318,7 +318,7 @@ namespace Scripts.EasternKingdoms.Karazhan.Nightbane
if (!UpdateVictim() && phase != NightbanePhases.Intro)
return;
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
}
@@ -284,8 +284,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
SummonTito();
else SummonTitoTimer -= diff;
}
DoMeleeAttackIfReady();
}
void SummonTito()
@@ -350,8 +348,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
YipTimer = 10000;
}
else YipTimer -= diff;
DoMeleeAttackIfReady();
}
}
@@ -456,8 +452,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
BrainWipeTimer = 20000;
}
else BrainWipeTimer -= diff;
DoMeleeAttackIfReady();
}
}
@@ -563,8 +557,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
}
else RustTimer -= diff;
}
DoMeleeAttackIfReady();
}
}
@@ -671,8 +663,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
ScreamTimer = RandomHelper.URand(20000, 30000);
}
else ScreamTimer -= diff;
DoMeleeAttackIfReady();
}
}
@@ -749,8 +739,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
ChainLightningTimer = 15000;
}
else ChainLightningTimer -= diff;
DoMeleeAttackIfReady();
}
}
@@ -880,8 +868,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
if (ChaseTimer <= diff)
{
if (!IsChasing)
@@ -1235,8 +1221,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
EternalAffectionTimer = RandomHelper.URand(45000, 60000);
}
else EternalAffectionTimer -= diff;
DoMeleeAttackIfReady();
}
}
@@ -1432,8 +1416,6 @@ namespace Scripts.EasternKingdoms.Karazhan.EsOpera
PoisonThrustTimer = RandomHelper.URand(10000, 20000);
}
else PoisonThrustTimer -= diff;
DoMeleeAttackIfReady();
}
}
}
@@ -513,8 +513,6 @@ namespace Scripts.EasternKingdoms.Karazhan.PrinceMalchezaar
if (phase == 2)
DoMeleeAttacksIfReady();
else
DoMeleeAttackIfReady();
}
void DoMeleeAttacksIfReady()
@@ -138,6 +138,7 @@ namespace Scripts.EasternKingdoms.Karazhan.ShadeOfAran
public override void Reset()
{
Initialize();
me.SetCanMelee(true);
// Not in progress
instance.SetBossState(DataTypes.Aran, EncounterState.NotStarted);
@@ -462,8 +463,7 @@ namespace Scripts.EasternKingdoms.Karazhan.ShadeOfAran
else FlameWreathCheckTime -= diff;
}
if (ArcaneCooldown != 0 && FireCooldown != 0 && FrostCooldown != 0)
DoMeleeAttackIfReady();
me.SetCanMelee(ArcaneCooldown != 0 && FireCooldown != 0 && FrostCooldown != 0);
}
public override void DamageTaken(Unit pAttacker, ref uint damage, DamageEffectType damageType, SpellInfo spellInfo = null)
@@ -124,7 +124,7 @@ namespace Scripts.EasternKingdoms.Karazhan.TerestianIllhoof
public override void UpdateAI(uint diff)
{
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
}
@@ -153,10 +153,7 @@ namespace Scripts.EasternKingdoms.Karazhan.TerestianIllhoof
if (!UpdateVictim())
return;
_scheduler.Update(diff, () =>
{
DoMeleeAttackIfReady();
});
_scheduler.Update(diff);
}
}
@@ -239,7 +236,7 @@ namespace Scripts.EasternKingdoms.Karazhan.TerestianIllhoof
if (!UpdateVictim())
return;
_scheduler.Update(diff, () => DoMeleeAttackIfReady());
_scheduler.Update(diff);
}
}
}