aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-04-26 04:16:32 -0300
committerfunjoker <funjoker109@gmail.com>2020-04-28 14:05:16 +0200
commitbb3f2a11cfa909a0b40450050f33a3893f6bb061 (patch)
treec5eb258076aac7494d98d1e5b21536f470eff113 /src
parent49f25f6e33aa4b4f67a46ba3cb71a183570da67e (diff)
Core/AI: added a function to allow 0 damage attacks (sparring) depending on target
(cherry picked from commit 3a2ecaa05f0a3da96b3d4a0bec44175d6a7dda6a)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.cpp10
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp
index 21d15731b11..124361f0c07 100644
--- a/src/server/game/AI/CoreAI/UnitAI.cpp
+++ b/src/server/game/AI/CoreAI/UnitAI.cpp
@@ -65,14 +65,20 @@ void UnitAI::DoMeleeAttackIfReady()
//Make sure our attack is ready and we aren't currently casting before checking distance
if (me->isAttackReady())
{
- me->AttackerStateUpdate(victim);
+ if (ShouldSparWith(victim))
+ me->FakeAttackerStateUpdate(victim);
+ else
+ me->AttackerStateUpdate(victim);
me->resetAttackTimer();
}
if (me->haveOffhandWeapon() && me->isAttackReady(OFF_ATTACK))
{
- me->AttackerStateUpdate(victim, OFF_ATTACK);
+ if (ShouldSparWith(victim))
+ me->FakeAttackerStateUpdate(victim, OFF_ATTACK);
+ else
+ me->AttackerStateUpdate(victim, OFF_ATTACK);
me->resetAttackTimer(OFF_ATTACK);
}
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index 0145233e3c9..9ffee6c146c 100644
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -265,6 +265,8 @@ class TC_GAME_API UnitAI
void DoCastVictim(uint32 spellId, bool triggered = false);
void DoCastAOE(uint32 spellId, bool triggered = false);
+ virtual bool ShouldSparWith(Unit const* /*target*/) const { return false; }
+
void DoMeleeAttackIfReady();
bool DoSpellAttackIfReady(uint32 spellId);