aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp13
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp7
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp19
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp10
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp10
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp43
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp32
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp2
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp7
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp28
12 files changed, 100 insertions, 79 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 4ee8affda74..f125630fc45 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -311,14 +311,13 @@ class spell_baltharus_enervating_brand : public SpellScriptLoader
void HandleTriggerSpell(AuraEffect const* aurEff)
{
PreventDefaultAction();
- if (Unit* target = GetTarget())
- {
- uint32 triggerSpellId = GetSpellProto()->EffectTriggerSpell[aurEff->GetEffIndex()];
- target->CastSpell(target, triggerSpellId, true);
+ Unit* target = GetTarget();
+ uint32 triggerSpellId = GetSpellProto()->EffectTriggerSpell[aurEff->GetEffIndex()];
+ target->CastSpell(target, triggerSpellId, true);
- if (target->GetDistance(GetCaster()) <= 12.0f)
- target->CastSpell(GetCaster(), SPELL_SIPHONED_MIGHT, true);
- }
+ if (Unit * caster = GetCaster())
+ if (target->GetDistance(caster) <= 12.0f)
+ target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true);
}
void Register()
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 679a9370633..3a555da9a81 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -465,11 +465,12 @@ class spell_tyrannus_mark_of_rimefang : public SpellScriptLoader
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- if (!GetCaster() || GetCaster()->GetTypeId() != TYPEID_UNIT)
+ Unit * caster = GetCaster();
+ if (!caster || caster->GetTypeId() != TYPEID_UNIT)
return;
- if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- if (Creature* rimefang = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_RIMEFANG)))
+ if (InstanceScript* instance = caster->GetInstanceScript())
+ if (Creature* rimefang = ObjectAccessor::GetCreature(*caster, instance->GetData64(DATA_RIMEFANG)))
rimefang->AI()->SetGUID(GetTarget()->GetGUID(), GUID_HOARFROST);
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index b67ca2beb8e..c2f2b93089c 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -439,14 +439,17 @@ class spell_festergut_blighted_spores : public SpellScriptLoader
void ExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- uint32 inoculatedId = sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster());
- uint32 currStack = 0;
- if (Aura const* inoculate = GetTarget()->GetAura(inoculatedId))
- currStack = inoculate->GetStackAmount();
-
- GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
- ++currStack;
- GetCaster()->ToCreature()->AI()->SetData(DATA_INOCULATED_STACK, currStack);
+ if (Unit * caster = GetCaster())
+ {
+ uint32 inoculatedId = sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, caster);
+ uint32 currStack = 0;
+ if (Aura const* inoculate = GetTarget()->GetAura(inoculatedId))
+ currStack = inoculate->GetStackAmount();
+
+ GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
+ ++currStack;
+ caster->ToCreature()->AI()->SetData(DATA_INOCULATED_STACK, currStack);
+ }
}
void Register()
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 048cabdccfc..f760d415ac4 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -971,10 +971,12 @@ class spell_deathwhisper_mana_barrier : public SpellScriptLoader
void HandlePeriodicTick(AuraEffect const* /*aurEff*/)
{
PreventDefaultAction();
- Unit* caster = GetCaster();
- int32 missingHealth = int32(caster->GetMaxHealth() - caster->GetHealth());
- caster->ModifyHealth(missingHealth);
- caster->ModifyPower(POWER_MANA, -missingHealth);
+ if (Unit* caster = GetCaster())
+ {
+ int32 missingHealth = int32(caster->GetMaxHealth() - caster->GetHealth());
+ caster->ModifyHealth(missingHealth);
+ caster->ModifyPower(POWER_MANA, -missingHealth);
+ }
}
void Register()
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 2bb009a36d3..bb57325d8c0 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -717,10 +717,12 @@ class spell_putricide_gaseous_bloat : public SpellScriptLoader
void HandleExtraEffect(AuraEffect const* /*aurEff*/)
{
Unit* target = GetTarget();
- Unit* caster = GetCaster();
- target->RemoveAuraFromStack(GetSpellProto()->Id, GetCasterGUID());
- if (!target->HasAura(GetId()) && caster && caster->GetTypeId() == TYPEID_UNIT)
- caster->ToCreature()->DespawnOrUnsummon();
+ if (Unit* caster = GetCaster())
+ {
+ target->RemoveAuraFromStack(GetSpellProto()->Id, GetCasterGUID());
+ if (!target->HasAura(GetId())&& caster->GetTypeId() == TYPEID_UNIT)
+ caster->ToCreature()->DespawnOrUnsummon();
+ }
}
void Register()
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 2f81ad96ef1..908813e241c 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -671,35 +671,38 @@ class spell_malygos_vortex_visual : public SpellScriptLoader
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- std::list<HostileReference*> &m_threatlist = GetCaster()->getThreatManager().getThreatList();
- for (std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr)
+ if (Unit * caster = GetCaster())
{
- if (Unit* target = (*itr)->getTarget())
+ std::list<HostileReference*> &m_threatlist = caster->getThreatManager().getThreatList();
+ for (std::list<HostileReference*>::const_iterator itr = m_threatlist.begin(); itr!= m_threatlist.end(); ++itr)
{
- Player* targetPlayer = target->ToPlayer();
+ if (Unit* target = (*itr)->getTarget())
+ {
+ Player* targetPlayer = target->ToPlayer();
- if (!targetPlayer || targetPlayer->isGameMaster())
- continue;
+ if (!targetPlayer || targetPlayer->isGameMaster())
+ continue;
- if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- {
- // teleport spell - i am not sure but might be it must be casted by each vehicle when its passenger leaves it
- if (Creature* trigger = GetCaster()->GetMap()->GetCreature(instance->GetData64(DATA_TRIGGER)))
- trigger->CastSpell(targetPlayer, SPELL_VORTEX_6, true);
+ if (InstanceScript* instance = caster->GetInstanceScript())
+ {
+ // teleport spell - i am not sure but might be it must be casted by each vehicle when its passenger leaves it
+ if (Creature* trigger = caster->GetMap()->GetCreature(instance->GetData64(DATA_TRIGGER)))
+ trigger->CastSpell(targetPlayer, SPELL_VORTEX_6, true);
+ }
}
}
- }
- if (Creature* malygos = GetCaster()->ToCreature())
- {
- // This is a hack, we have to re add players to the threat list because when they enter to the vehicles they are removed.
- // Anyway even with this issue, the boss does not enter in evade mode - this prevents iterate an empty list in the next vortex execution.
- malygos->SetInCombatWithZone();
+ if (Creature* malygos = caster->ToCreature())
+ {
+ // This is a hack, we have to re add players to the threat list because when they enter to the vehicles they are removed.
+ // Anyway even with this issue, the boss does not enter in evade mode - this prevents iterate an empty list in the next vortex execution.
+ malygos->SetInCombatWithZone();
- malygos->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+ malygos->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
- malygos->GetMotionMaster()->MoveChase(GetCaster()->getVictim());
- malygos->RemoveAura(SPELL_VORTEX_1);
+ malygos->GetMotionMaster()->MoveChase(caster->getVictim());
+ malygos->RemoveAura(SPELL_VORTEX_1);
+ }
}
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
index 2a6d8f606f0..ec8abc257d6 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp
@@ -254,8 +254,9 @@ class spell_eregos_planar_shift : public SpellScriptLoader
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- if (Creature* caster = GetCaster()->ToCreature())
- caster->AI()->DoAction(ACTION_SET_NORMAL_EVENTS);
+ if (Unit * caster = GetCaster())
+ if (Creature* creatureCaster = caster->ToCreature())
+ creatureCaster->AI()->DoAction(ACTION_SET_NORMAL_EVENTS);
}
void Register()
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index d7025897eb8..6ba9db3d407 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -244,27 +244,33 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
{
PrepareAuraScript(spell_varos_centrifuge_shield_AuraScript);
- void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ bool Load()
{
- if (!GetCaster()->ToCreature())
- return;
+ Unit * caster = GetCaster();
+ return (caster && caster->ToCreature());
+ }
- // flags taken from sniffs
- // UNIT_FLAG_UNK_9 -> means passive but it is not yet implemented in core
- if (GetCaster()->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6))
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit * caster = GetCaster())
{
- GetCaster()->ToCreature()->SetReactState(REACT_PASSIVE);
- GetCaster()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
+ // flags taken from sniffs
+ // UNIT_FLAG_UNK_9 -> means passive but it is not yet implemented in core
+ if (caster->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6))
+ {
+ caster->ToCreature()->SetReactState(REACT_PASSIVE);
+ caster->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
+ }
}
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- if (!GetCaster()->ToCreature())
- return;
-
- GetCaster()->ToCreature()->SetReactState(REACT_AGGRESSIVE);
- GetCaster()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
+ if (Unit * caster = GetCaster())
+ {
+ caster->ToCreature()->SetReactState(REACT_AGGRESSIVE);
+ caster->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_PASSIVE|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
+ }
}
void Register()
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp
index 52a2f220260..79570d86a0e 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp
@@ -448,7 +448,8 @@ class spell_mark_of_the_faceless : public SpellScriptLoader
void HandleEffectPeriodic(AuraEffect const* aurEff)
{
- GetCaster()->CastCustomSpell(SPELL_MARK_OF_THE_FACELESS_DAMAGE, SPELLVALUE_BASE_POINT1, aurEff->GetAmount(), GetTarget(), true);
+ if (Unit * caster = GetCaster())
+ caster->CastCustomSpell(SPELL_MARK_OF_THE_FACELESS_DAMAGE, SPELLVALUE_BASE_POINT1, aurEff->GetAmount(), GetTarget(), true);
}
void Register()
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp
index d83d3d022c7..c3eedcc8e2f 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_hodir.cpp
@@ -910,7 +910,7 @@ class spell_biting_cold : public SpellScriptLoader
Unit* target = GetTarget();
bool found = false;
- if (!caster || !target)
+ if (!caster)
return;
for (TargetList::iterator itr = listOfTargets.begin(); itr != listOfTargets.end(); ++itr)
diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp
index f30ced7b4b0..0b27375fcf3 100644
--- a/src/server/scripts/Spells/spell_hunter.cpp
+++ b/src/server/scripts/Spells/spell_hunter.cpp
@@ -363,12 +363,17 @@ public:
if (aurEff->GetAmount() > 0)
return;
+ Unit * caster = GetCaster();
+
+ if (!caster)
+ return;
+
uint32 spellId = SPELL_SNIPER_TRAINING_BUFF_R1 + GetId() - SPELL_SNIPER_TRAINING_R1;
Unit * pTarget = GetTarget();
if (!pTarget->HasAura(spellId))
{
SpellEntry const * triggeredSpellInfo = sSpellStore.LookupEntry(spellId);
- Unit* triggerCaster = GetTriggeredSpellCaster(triggeredSpellInfo, GetCaster(), pTarget);
+ Unit* triggerCaster = GetTriggeredSpellCaster(triggeredSpellInfo, caster, pTarget);
triggerCaster->CastSpell(pTarget, triggeredSpellInfo, true, 0, aurEff);
}
}
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 7bb8426b35a..8c0f17d8d95 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -644,23 +644,21 @@ public:
{
if (Unit* caster = GetCaster())
{
- if (Unit* target = GetTarget())
+ Unit* target = GetTarget();
+ if (Player* player = caster->GetCharmerOrOwnerPlayerOrPlayerItself())
{
- if (Player* player = caster->GetCharmerOrOwnerPlayerOrPlayerItself())
+ switch(target->GetEntry())
{
- switch(target->GetEntry())
- {
- case NPC_FROSTWORG:
- target->CastSpell(player, SPELL_FROSTWORG_CREDIT, true);
- target->CastSpell(target, SPELL_IMMOLATION, true);
- target->CastSpell(target, SPELL_ABLAZE, true);
- break;
- case NPC_FROSTGIANT:
- target->CastSpell(player, SPELL_FROSTGIANT_CREDIT, true);
- target->CastSpell(target, SPELL_IMMOLATION, true);
- target->CastSpell(target, SPELL_ABLAZE, true);
- break;
- }
+ case NPC_FROSTWORG:
+ target->CastSpell(player, SPELL_FROSTWORG_CREDIT, true);
+ target->CastSpell(target, SPELL_IMMOLATION, true);
+ target->CastSpell(target, SPELL_ABLAZE, true);
+ break;
+ case NPC_FROSTGIANT:
+ target->CastSpell(player, SPELL_FROSTGIANT_CREDIT, true);
+ target->CastSpell(target, SPELL_IMMOLATION, true);
+ target->CastSpell(target, SPELL_ABLAZE, true);
+ break;
}
}
}