aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Kalimdor
diff options
context:
space:
mode:
authorForesterDev <11771800+ForesterDev@users.noreply.github.com>2020-06-07 11:22:13 +0300
committerShauren <shauren.trinity@gmail.com>2022-01-06 20:46:25 +0100
commit3171cd3fa9dbcec43f5d70b74ab2f54a2aa44173 (patch)
tree838c54078c04b1fdae4ec1aac6fdc70ebdae45b2 /src/server/scripts/Kalimdor
parentf0242d4ec7857a18145dd0a9965fcb8526e981c8 (diff)
Core/AI: refactor SpellHit and SpellHitTarget. (#24691)
* Core/AI: refactor SpellHit and SpellHitTarget. - now caster/target is WorldObject instead of Unit - remove SpellHitByGameObject / SpellHitTargetGameObject (handled by SpellHit / SpellHitTarget) - rename parameters in scripts according parent methods * Restore logic in Algalon script * Changed check for REMORSELESS_WINTER hit to avoid dublicate call, because it has TARGET_UNIT_CASTER for effects 0/1 and TARGET_GAMEOBJECT_SRC_AREA for effect 2 * Fix build after merge (cherry picked from commit e3b232fe0e5c21a87d3fe71813e9d750259823f1)
Diffstat (limited to 'src/server/scripts/Kalimdor')
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp6
-rw-r--r--src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp4
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp38
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp4
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_desolace.cpp16
-rw-r--r--src/server/scripts/Kalimdor/zone_durotar.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_moonglade.cpp4
-rw-r--r--src/server/scripts/Kalimdor/zone_the_barrens.cpp4
14 files changed, 53 insertions, 49 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
index 1fb6a1350d5..66916abf9fa 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_chrono_lord_epoch.cpp
@@ -128,9 +128,9 @@ class boss_epoch : public CreatureScript
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* info) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (info->Id == SPELL_TIME_STEP_DUMMY && me->IsHostileTo(target))
+ if (spellInfo->Id == SPELL_TIME_STEP_DUMMY && me->IsHostileTo(target))
{
_stepTargets.push_back(target->GetGUID());
events.RescheduleEvent(EVENT_TIME_STEP, Milliseconds(500));
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
index 3286e02d707..f2dbe13b2c0 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_infinite_corruptor.cpp
@@ -69,9 +69,9 @@ class boss_infinite_corruptor : public CreatureScript
DoCastAOE(SPELL_CORRUPTION_OF_TIME_CHANNEL); // implicitly targets the Guardian
}
- void SpellHitTarget(Unit* target, SpellInfo const* spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_CORRUPTION_OF_TIME_CHANNEL)
+ if (spellInfo->Id == SPELL_CORRUPTION_OF_TIME_CHANNEL)
target->CastSpell(target, SPELL_CORRUPTION_OF_TIME_TARGET, true);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index 171d9c885f1..ecae7ab189d 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -1408,9 +1408,9 @@ public:
current = candidate;
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (!_crateRevealed && spell->Id == SPELL_ARCANE_DISRUPTION)
+ if (!_crateRevealed && spellInfo->Id == SPELL_ARCANE_DISRUPTION)
{
_crateRevealed = true;
if (InstanceScript* instance = me->GetInstanceScript())
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
index 10d3891e109..7ef04d01913 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp
@@ -140,15 +140,15 @@ public:
void JustEngagedWith(Unit* /*who*/) override { }
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
if (SpellCorrupt_Timer)
return;
- if (spell->Id == SPELL_CORRUPT_AEONUS)
+ if (spellInfo->Id == SPELL_CORRUPT_AEONUS)
SpellCorrupt_Timer = 1000;
- if (spell->Id == SPELL_CORRUPT)
+ if (spellInfo->Id == SPELL_CORRUPT)
SpellCorrupt_Timer = 3000;
}
diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp
index 484548f59f9..6c36ade96d9 100644
--- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp
+++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp
@@ -291,9 +291,9 @@ struct npc_shard_of_torment : public NullCreatureAI
});
}
- void SpellHitTarget(Unit* /*target*/, const SpellInfo* spell) override
+ void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override
{
- if (spell->Id != SPELL_TORMENT)
+ if (spellInfo->Id != SPELL_TORMENT)
return;
scheduler.CancelAll();
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index 073dfc27886..07ed8f3a359 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -196,14 +196,14 @@ public:
Talk(SAY_KILL);
}
- void SpellHit(Unit* /*pCaster*/, SpellInfo const* Spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (Spell->Id == SPELL_BREATH_EAST_TO_WEST ||
- Spell->Id == SPELL_BREATH_WEST_TO_EAST ||
- Spell->Id == SPELL_BREATH_SE_TO_NW ||
- Spell->Id == SPELL_BREATH_NW_TO_SE ||
- Spell->Id == SPELL_BREATH_SW_TO_NE ||
- Spell->Id == SPELL_BREATH_NE_TO_SW)
+ if (spellInfo->Id == SPELL_BREATH_EAST_TO_WEST ||
+ spellInfo->Id == SPELL_BREATH_WEST_TO_EAST ||
+ spellInfo->Id == SPELL_BREATH_SE_TO_NW ||
+ spellInfo->Id == SPELL_BREATH_NW_TO_SE ||
+ spellInfo->Id == SPELL_BREATH_SW_TO_NE ||
+ spellInfo->Id == SPELL_BREATH_NE_TO_SW)
{
PointData = GetMoveData();
MovePoint = PointData->LocIdEnd;
@@ -274,20 +274,20 @@ public:
}
}
- void SpellHitTarget(Unit* target, SpellInfo const* Spell) override
+ void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
{
//Workaround - Couldn't find a way to group this spells (All Eruption)
- if (((Spell->Id >= 17086 && Spell->Id <= 17095) ||
- (Spell->Id == 17097) ||
- (Spell->Id >= 18351 && Spell->Id <= 18361) ||
- (Spell->Id >= 18564 && Spell->Id <= 18576) ||
- (Spell->Id >= 18578 && Spell->Id <= 18607) ||
- (Spell->Id == 18609) ||
- (Spell->Id >= 18611 && Spell->Id <= 18628) ||
- (Spell->Id >= 21132 && Spell->Id <= 21133) ||
- (Spell->Id >= 21135 && Spell->Id <= 21139) ||
- (Spell->Id >= 22191 && Spell->Id <= 22202) ||
- (Spell->Id >= 22267 && Spell->Id <= 22268)) &&
+ if (((spellInfo->Id >= 17086 && spellInfo->Id <= 17095) ||
+ (spellInfo->Id == 17097) ||
+ (spellInfo->Id >= 18351 && spellInfo->Id <= 18361) ||
+ (spellInfo->Id >= 18564 && spellInfo->Id <= 18576) ||
+ (spellInfo->Id >= 18578 && spellInfo->Id <= 18607) ||
+ (spellInfo->Id == 18609) ||
+ (spellInfo->Id >= 18611 && spellInfo->Id <= 18628) ||
+ (spellInfo->Id >= 21132 && spellInfo->Id <= 21133) ||
+ (spellInfo->Id >= 21135 && spellInfo->Id <= 21139) ||
+ (spellInfo->Id >= 22191 && spellInfo->Id <= 22202) ||
+ (spellInfo->Id >= 22267 && spellInfo->Id <= 22268)) &&
(target->GetTypeId() == TYPEID_PLAYER))
{
instance->SetData(DATA_SHE_DEEP_BREATH_MORE, FAIL);
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
index 2a714c2f029..46645487965 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp
@@ -122,11 +122,11 @@ class boss_ossirian : public CreatureScript
Initialize();
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
for (uint8 i = 0; i < NUM_WEAKNESS; ++i)
{
- if (spell->Id == SpellWeakness[i])
+ if (spellInfo->Id == SpellWeakness[i])
{
me->RemoveAurasDueToSpell(SPELL_SUPREME);
// Despawn used crystal
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
index 155a1e22edd..23f21777528 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp
@@ -164,13 +164,13 @@ struct boss_twinemperorsAI : public BossAI
}
}
- void SpellHit(Unit* caster, SpellInfo const* entry) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
if (caster == me)
return;
Creature* pOtherBoss = GetOtherBoss();
- if (entry->Id != SPELL_HEAL_BROTHER || !pOtherBoss)
+ if (spellInfo->Id != SPELL_HEAL_BROTHER || !pOtherBoss)
return;
// add health so we keep same percentage for both brothers
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
index ac0f5471c22..a2d832bfb88 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp
@@ -151,9 +151,9 @@ class boss_viscidus : public CreatureScript
Talk(EMOTE_CRACK);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if ((spell->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST && me->GetHealthPct() > 5.0f)
+ if ((spellInfo->GetSchoolMask() & SPELL_SCHOOL_MASK_FROST) && _phase == PHASE_FROST && me->GetHealthPct() > 5.0f)
{
++_hitcounter;
diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
index 81dd54d7e8d..6f506da40d8 100644
--- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
@@ -106,9 +106,9 @@ public:
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->SpellFamilyFlags[2] & 0x80000000 && !_tappedBySpell)
+ if (spellInfo->SpellFamilyFlags[2] & 0x80000000 && !_tappedBySpell)
{
_events.Reset();
_tappedBySpell = true;
diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp
index 9ae1fb8d987..7affabe89e3 100644
--- a/src/server/scripts/Kalimdor/zone_desolace.cpp
+++ b/src/server/scripts/Kalimdor/zone_desolace.cpp
@@ -73,14 +73,18 @@ public:
}
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_KODO_KOMBO_ITEM)
+ Unit* unitCaster = caster->ToUnit();
+ if (!unitCaster)
+ return;
+
+ if (spellInfo->Id == SPELL_KODO_KOMBO_ITEM)
{
- if (!(caster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
+ if (!(unitCaster->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) || me->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
&& (me->GetEntry() == NPC_AGED_KODO || me->GetEntry() == NPC_DYING_KODO || me->GetEntry() == NPC_ANCIENT_KODO))
{
- caster->CastSpell(caster, SPELL_KODO_KOMBO_PLAYER_BUFF, true);
+ unitCaster->CastSpell(unitCaster, SPELL_KODO_KOMBO_PLAYER_BUFF, true);
DoCast(me, SPELL_KODO_KOMBO_DESPAWN_BUFF, true);
me->UpdateEntry(NPC_TAMED_KODO);
@@ -90,12 +94,12 @@ public:
EngagementOver();
- me->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, me->GetFollowAngle());
+ me->GetMotionMaster()->MoveFollow(unitCaster, PET_FOLLOW_DIST, me->GetFollowAngle());
me->setActive(true);
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
}
}
- else if (spell->Id == SPELL_KODO_KOMBO_GOSSIP)
+ else if (spellInfo->Id == SPELL_KODO_KOMBO_GOSSIP)
{
me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP);
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp
index de3c914722e..fa5565b194f 100644
--- a/src/server/scripts/Kalimdor/zone_durotar.cpp
+++ b/src/server/scripts/Kalimdor/zone_durotar.cpp
@@ -79,7 +79,7 @@ public:
work = true;
}
- void SpellHit(Unit* caster, SpellInfo const* spell) override
+ void SpellHit(WorldObject* caster, SpellInfo const* spell) override
{
if (spell->Id != SPELL_AWAKEN_PEON)
return;
diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp
index a97afda5025..f01a8443c5f 100644
--- a/src/server/scripts/Kalimdor/zone_moonglade.cpp
+++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp
@@ -84,9 +84,9 @@ public:
DoCast(SPELL_OMEN_SUMMON_SPOTLIGHT);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_ELUNE_CANDLE)
+ if (spellInfo->Id == SPELL_ELUNE_CANDLE)
{
if (me->HasAura(SPELL_OMEN_STARFALL))
me->RemoveAurasDueToSpell(SPELL_OMEN_STARFALL);
diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
index 60e3416fb01..ae2e44dc78f 100644
--- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp
+++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp
@@ -187,9 +187,9 @@ public:
me->HandleEmoteCommand(EMOTE_ONESHOT_SALUTE);
}
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
+ void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override
{
- if (spell->Id == SPELL_FLARE || spell->Id == SPELL_FOLLY)
+ if (spellInfo->Id == SPELL_FLARE || spellInfo->Id == SPELL_FOLLY)
{
++FlareCount;