aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-05-17 13:17:42 +0200
committerShauren <shauren.trinity@gmail.com>2011-05-17 13:17:42 +0200
commit63f7a6d3d91c0181d753e8ed8e6bbb97aaed4adb (patch)
treecd392fac53bae989a75fc2e2c351863267737370 /src
parent2086eb37e8c865f28d8b239ac920ba4e63860fde (diff)
Core/Spells: Use SpellDifficulty.dbc to check casterAuraSpell, excludeCasterAuraSpell, targetAuraSpell and excludeTargetAuraSpell
Scripts/Icecrown Citadel: Fixed Mutated Abomination not being able to eat ooze on heroic mode Scripts/Icecrown Citadel: Removed some obsolete code Closes #523, #1447
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp2
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp12
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp5
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.h62
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp5
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp26
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp30
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp25
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp6
11 files changed, 84 insertions, 99 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index ef6d8c9f56f..a35a5564acc 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -8016,7 +8016,7 @@ bool ObjectMgr::CheckDeclinedNames(std::wstring w_ownname, DeclinedName const& n
if (mainpart != GetMainPartOfName(wname, i+1))
x = false;
-
+
if (w_ownname != wname)
y = false;
}
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 24e195d7c00..d2d422ba6e4 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4767,9 +4767,9 @@ SpellCastResult Spell::CheckCast(bool strict)
return SPELL_FAILED_CASTER_AURASTATE;
// Note: spell 62473 requres casterAuraSpell = triggering spell
- if (m_spellInfo->casterAuraSpell && !m_caster->HasAura(m_spellInfo->casterAuraSpell))
+ if (m_spellInfo->casterAuraSpell && !m_caster->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->casterAuraSpell, m_caster)))
return SPELL_FAILED_CASTER_AURASTATE;
- if (m_spellInfo->excludeCasterAuraSpell && m_caster->HasAura(m_spellInfo->excludeCasterAuraSpell))
+ if (m_spellInfo->excludeCasterAuraSpell && m_caster->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->excludeCasterAuraSpell, m_caster)))
return SPELL_FAILED_CASTER_AURASTATE;
if (reqCombat && m_caster->isInCombat() && IsNonCombatSpell(m_spellInfo))
@@ -4798,10 +4798,10 @@ SpellCastResult Spell::CheckCast(bool strict)
if (!m_IsTriggeredSpell && m_spellInfo->TargetAuraStateNot && target->HasAuraState(AuraState(m_spellInfo->TargetAuraStateNot), m_spellInfo, m_caster))
return SPELL_FAILED_TARGET_AURASTATE;
- if (m_spellInfo->targetAuraSpell && !target->HasAura(m_spellInfo->targetAuraSpell))
+ if (m_spellInfo->targetAuraSpell && !target->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->targetAuraSpell, m_caster)))
return SPELL_FAILED_TARGET_AURASTATE;
- if (m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
+ if (m_spellInfo->excludeTargetAuraSpell && target->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->excludeTargetAuraSpell, m_caster)))
return SPELL_FAILED_TARGET_AURASTATE;
if (!m_IsTriggeredSpell && target == m_caster && m_spellInfo->AttributesEx & SPELL_ATTR1_CANT_TARGET_SELF)
@@ -6549,9 +6549,9 @@ bool Spell::CheckTarget(Unit* target, uint32 eff)
}
// Check Aura spell req (need for AoE spells)
- if (m_spellInfo->targetAuraSpell && !target->HasAura(m_spellInfo->targetAuraSpell))
+ if (m_spellInfo->targetAuraSpell && !target->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->targetAuraSpell, m_caster)))
return false;
- if (m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
+ if (m_spellInfo->excludeTargetAuraSpell && target->HasAura(sSpellMgr->GetSpellIdForDifficulty(m_spellInfo->excludeTargetAuraSpell, m_caster)))
return false;
// Check targets for not_selectable unit flag and remove
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 5afbf4d61e8..c77921eaa43 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -4053,11 +4053,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectImplicitTargetA[0] = TARGET_DEST_DEST;
++count;
break;
- // this is here until targetAuraSpell and alike support SpellDifficulty.dbc
- case 70459: // Ooze Eruption Search Effect (Professor Putricide)
- spellInfo->targetAuraSpell = 0;
- ++count;
- break;
// THIS IS HERE BECAUSE COOLDOWN ON CREATURE PROCS IS NOT IMPLEMENTED
case 71604: // Mutated Strength (Professor Putricide)
case 72673: // Mutated Strength (Professor Putricide)
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index ac6fcc1789a..1560cf43430 100755
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -1051,46 +1051,60 @@ class SpellMgr
return NULL;
}
- // Spell Difficulty data
- SpellEntry const* GetSpellForDifficultyFromSpell(SpellEntry const* spell, Unit* Caster)
+ uint32 GetSpellIdForDifficulty(uint32 spellId, Unit* caster) const
{
- //spell never can be NULL in this case!
- if (!Caster || !Caster->GetMap() || !Caster->GetMap()->IsDungeon())
- return spell;
+ if (!sSpellStore.LookupEntry(spellId))
+ return spellId;
- uint32 mode = uint32(Caster->GetMap()->GetSpawnMode());
+ if (!caster || !caster->GetMap() || !caster->GetMap()->IsDungeon())
+ return spellId;
+
+ uint32 mode = uint32(caster->GetMap()->GetSpawnMode());
if (mode >= MAX_DIFFICULTY)
{
- sLog->outError("GetSpellForDifficultyFromSpell: Incorrect Difficulty for spell %u.", spell->Id);
- return spell;//return source spell
+ sLog->outError("SpellMgr::GetSpellIdForDifficulty: Incorrect Difficulty for spell %u.", spellId);
+ return spellId; //return source spell
}
- uint32 SpellDiffId = GetSpellDifficultyId(spell->Id);
- if (!SpellDiffId)
- return spell;//return source spell, it has only REGULAR_DIFFICULTY
- SpellDifficultyEntry const *SpellDiff = sSpellDifficultyStore.LookupEntry(SpellDiffId);
- if (!SpellDiff)
+ uint32 difficultyId = GetSpellDifficultyId(spellId);
+ if (!difficultyId)
+ return spellId; //return source spell, it has only REGULAR_DIFFICULTY
+
+ SpellDifficultyEntry const *difficultyEntry = sSpellDifficultyStore.LookupEntry(difficultyId);
+ if (!difficultyEntry)
{
- sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "GetSpellForDifficultyFromSpell: SpellDifficultyEntry not found for spell %u. This Should never happen.", spell->Id);
- return spell;//return source spell
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "SpellMgr::GetSpellIdForDifficulty: SpellDifficultyEntry not found for spell %u. This should never happen.", spellId);
+ return spellId; //return source spell
}
- if (SpellDiff->SpellID[mode] <= 0 && mode > DUNGEON_DIFFICULTY_HEROIC)
+
+ if (difficultyEntry->SpellID[mode] <= 0 && mode > DUNGEON_DIFFICULTY_HEROIC)
{
- sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "GetSpellForDifficultyFromSpell: spell %u mode %u spell is NULL, using mode %u", spell->Id, mode, mode-2);
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "SpellMgr::GetSpellIdForDifficulty: spell %u mode %u spell is NULL, using mode %u", spellId, mode, mode - 2);
mode -= 2;
}
- if (SpellDiff->SpellID[mode] <= 0)
+
+ if (difficultyEntry->SpellID[mode] <= 0)
{
- sLog->outErrorDb("GetSpellForDifficultyFromSpell: spell %u mode %u spell is 0. Check spelldifficulty_dbc!", spell->Id, mode);
- return spell;
+ sLog->outErrorDb("SpellMgr::GetSpellIdForDifficulty: spell %u mode %u spell is 0. Check spelldifficulty_dbc!", spellId, mode);
+ return spellId;
}
- SpellEntry const* newSpell = sSpellStore.LookupEntry(uint32(SpellDiff->SpellID[mode]));
+
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "SpellMgr::GetSpellIdForDifficulty: spellid for spell %u in mode %u is %d", spellId, mode, difficultyEntry->SpellID[mode]);
+ return uint32(difficultyEntry->SpellID[mode]);
+ }
+
+ // Spell Difficulty data
+ SpellEntry const* GetSpellForDifficultyFromSpell(SpellEntry const* spell, Unit* caster) const
+ {
+ uint32 newSpellId = GetSpellIdForDifficulty(spell->Id, caster);
+ SpellEntry const* newSpell = sSpellStore.LookupEntry(newSpellId);
if (!newSpell)
{
- sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "GetSpellForDifficultyFromSpell: spell %u not found in SpellStore. Check spelldifficulty_dbc!", SpellDiff->SpellID[mode]);
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "SpellMgr::GetSpellForDifficultyFromSpell: spell %u not found in sSpellStore. Check spelldifficulty_dbc!", newSpellId);
return spell;
}
- sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "GetSpellForDifficultyFromSpell: spellid for spell %u in mode %u is %u ", spell->Id, mode, newSpell->Id);
+
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "SpellMgr::GetSpellForDifficultyFromSpell: Spell id for instance mode is %u (original %u)", newSpell->Id, spell->Id);
return newSpell;
}
@@ -1353,7 +1367,7 @@ class SpellMgr
return false;
return true;
}
- uint32 GetSpellDifficultyId(uint32 spellId)
+ uint32 GetSpellDifficultyId(uint32 spellId) const
{
SpellDifficultySearcherMap::const_iterator i = mSpellDifficultySearcherMap.find(spellId);
return i == mSpellDifficultySearcherMap.end() ? 0 : (*i).second;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 6a72b9c87bd..f20a90b369b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -513,9 +513,8 @@ class spell_blood_queen_vampiric_bite : public SpellScriptLoader
if (GetCaster()->GetTypeId() != TYPEID_PLAYER)
return;
- SpellEntry const* spell = sSpellStore.LookupEntry(SPELL_FRENZIED_BLOODTHIRST);
- spell = sSpellMgr->GetSpellForDifficultyFromSpell(spell, GetCaster());
- GetCaster()->RemoveAura(spell->Id, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
+ uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(SPELL_FRENZIED_BLOODTHIRST, GetCaster());
+ GetCaster()->RemoveAura(spellId, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, true);
// Presence of the Darkfallen buff on Blood-Queen
if (GetCaster()->GetMap()->IsHeroic())
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 2f533719696..a2dc0127732 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -1188,7 +1188,7 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
// set the upper cap
if (targetsAtRange < minTargets)
- targetsAtRange = std::min<uint32>(unitList.size()-1, minTargets);
+ targetsAtRange = std::min<uint32>(unitList.size() - 1, minTargets);
std::list<Unit*>::iterator itr = unitList.begin();
std::advance(itr, urand(0, targetsAtRange));
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index a16b2120aef..5f1688f1a16 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -351,17 +351,18 @@ class spell_festergut_pungent_blight : public SpellScriptLoader
{
PrepareSpellScript(spell_festergut_pungent_blight_SpellScript);
- void HandleScript(SpellEffIndex /*effIndex*/)
+ bool Load()
{
- SpellEntry const* spellInfo = sSpellStore.LookupEntry(uint32(GetEffectValue()));
- if (!spellInfo || GetCaster()->GetTypeId() != TYPEID_UNIT)
- return;
+ return GetCaster()->GetTypeId() == TYPEID_UNIT;
+ }
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
// Get Inhaled Blight id for our difficulty
- spellInfo = sSpellMgr->GetSpellForDifficultyFromSpell(spellInfo, GetCaster());
+ uint32 blightId = sSpellMgr->GetSpellIdForDifficulty(uint32(GetEffectValue()), GetCaster());
// ...and remove it
- GetCaster()->RemoveAurasDueToSpell(spellInfo->Id);
+ GetCaster()->RemoveAurasDueToSpell(blightId);
GetCaster()->ToCreature()->AI()->Talk(EMOTE_PUNGENT_BLIGHT);
}
@@ -431,15 +432,16 @@ class spell_festergut_blighted_spores : public SpellScriptLoader
return true;
}
- void ExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ bool Load()
{
- if (GetCaster()->GetTypeId() != TYPEID_UNIT)
- return;
+ return GetCaster()->GetTypeId() == TYPEID_UNIT;
+ }
- SpellEntry const* inoculated = sSpellStore.LookupEntry(SPELL_INOCULATED);
- inoculated = sSpellMgr->GetSpellForDifficultyFromSpell(inoculated, GetCaster());
+ void ExtraEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ uint32 inoculatedId = sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster());
uint32 currStack = 0;
- if (Aura const* inoculate = GetTarget()->GetAura(inoculated->Id))
+ if (Aura const* inoculate = GetTarget()->GetAura(inoculatedId))
currStack = inoculate->GetStackAmount();
GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index 0e5c9bea4db..9db92d10d6c 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -334,17 +334,15 @@ class boss_professor_putricide : public CreatureScript
case PHASE_COMBAT_2:
{
SpellEntry const* spell = sSpellStore.LookupEntry(SPELL_CREATE_CONCOCTION);
- spell = sSpellMgr->GetSpellForDifficultyFromSpell(spell, me);
DoCast(me, SPELL_CREATE_CONCOCTION);
- events.ScheduleEvent(EVENT_PHASE_TRANSITION, GetSpellCastTime(spell)+100);
+ events.ScheduleEvent(EVENT_PHASE_TRANSITION, GetSpellCastTime(sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)) + 100);
break;
}
case PHASE_COMBAT_3:
{
SpellEntry const* spell = sSpellStore.LookupEntry(SPELL_GUZZLE_POTIONS);
- spell = sSpellMgr->GetSpellForDifficultyFromSpell(spell, me);
DoCast(me, SPELL_GUZZLE_POTIONS);
- events.ScheduleEvent(EVENT_PHASE_TRANSITION, GetSpellCastTime(spell)+100);
+ events.ScheduleEvent(EVENT_PHASE_TRANSITION, GetSpellCastTime(sSpellMgr->GetSpellForDifficultyFromSpell(spell, me)) + 100);
break;
}
default:
@@ -869,9 +867,8 @@ class spell_putricide_expunged_gas : public SpellScriptLoader
return;
int32 dmg = 0;
- SpellEntry const* bloat = sSpellStore.LookupEntry(SPELL_GASEOUS_BLOAT);
- bloat = sSpellMgr->GetSpellForDifficultyFromSpell(bloat, GetCaster());
- if (Aura* gasBloat = GetTargetUnit()->GetAura(bloat->Id))
+ uint32 bloatId = sSpellMgr->GetSpellIdForDifficulty(SPELL_GASEOUS_BLOAT, GetCaster());
+ if (Aura* gasBloat = GetTargetUnit()->GetAura(bloatId))
{
uint32 stack = gasBloat->GetStackAmount();
int32 const mod = (GetCaster()->GetMap()->GetSpawnMode() & 1) ? 1500 : 1250;
@@ -1026,12 +1023,11 @@ class spell_putricide_ooze_eruption_searcher : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- SpellEntry const* adhesive = sSpellStore.LookupEntry(SPELL_VOLATILE_OOZE_ADHESIVE);
- adhesive = sSpellMgr->GetSpellForDifficultyFromSpell(adhesive, GetCaster());
- if (GetHitUnit()->HasAura(adhesive->Id))
+ uint32 adhesiveId = sSpellMgr->GetSpellIdForDifficulty(SPELL_VOLATILE_OOZE_ADHESIVE, GetCaster());
+ if (GetHitUnit()->HasAura(adhesiveId))
{
GetCaster()->CastSpell(GetHitUnit(), SPELL_OOZE_ERUPTION, true);
- GetHitUnit()->RemoveAurasDueToSpell(adhesive->Id, GetCaster()->GetGUID(), 0, AURA_REMOVE_BY_ENEMY_SPELL);
+ GetHitUnit()->RemoveAurasDueToSpell(adhesiveId, GetCaster()->GetGUID(), 0, AURA_REMOVE_BY_ENEMY_SPELL);
}
}
@@ -1108,21 +1104,21 @@ class spell_putricide_unbound_plague : public SpellScriptLoader
if (!instance)
return;
- SpellEntry const* plague = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(SPELL_UNBOUND_PLAGUE), GetCaster());
- SpellEntry const* searcher = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(SPELL_UNBOUND_PLAGUE_SEARCHER), GetCaster());
+ uint32 plagueId = sSpellMgr->GetSpellIdForDifficulty(SPELL_UNBOUND_PLAGUE, GetCaster());
+ uint32 searcherId = sSpellMgr->GetSpellIdForDifficulty(SPELL_UNBOUND_PLAGUE_SEARCHER, GetCaster());
- if (!GetHitUnit()->HasAura(plague->Id))
+ if (!GetHitUnit()->HasAura(plagueId))
{
if (Creature* professor = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
{
- if (Aura* oldPlague = GetCaster()->GetAura(plague->Id, professor->GetGUID()))
+ if (Aura* oldPlague = GetCaster()->GetAura(plagueId, professor->GetGUID()))
{
- if (Aura* newPlague = professor->AddAura(plague->Id, GetHitUnit()))
+ if (Aura* newPlague = professor->AddAura(plagueId, GetHitUnit()))
{
newPlague->SetMaxDuration(oldPlague->GetDuration());
newPlague->SetDuration(oldPlague->GetDuration());
oldPlague->Remove();
- GetCaster()->RemoveAurasDueToSpell(searcher->Id);
+ GetCaster()->RemoveAurasDueToSpell(searcherId);
GetCaster()->CastSpell(GetCaster(), SPELL_PLAGUE_SICKNESS, true);
GetCaster()->CastSpell(GetCaster(), SPELL_UNBOUND_PLAGUE_PROTECTION, true);
professor->CastSpell(GetHitUnit(), SPELL_UNBOUND_PLAGUE_SEARCHER, true);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index 2db5bf37f06..b20e7817bfe 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -159,25 +159,6 @@ class boss_rotface : public CreatureScript
// don't enter combat
}
- Unit* GetAuraEffectTriggerTarget(uint32 spellId, uint8 /*effIndex*/)
- {
- if (spellId == SPELL_SLIME_SPRAY)
- {
- for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end();)
- {
- Creature *summon = Unit::GetCreature(*me, *itr);
- if (!summon)
- summons.erase(itr++);
- else if (summon->GetEntry() == NPC_OOZE_SPRAY_STALKER)
- return summon;
- else
- ++itr;
- }
- }
-
- return NULL;
- }
-
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim() || !CheckInRoom())
@@ -195,11 +176,9 @@ class boss_rotface : public CreatureScript
case EVENT_SLIME_SPRAY:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
{
- Position pos;
- target->GetPosition(&pos);
- DoSummon(NPC_OOZE_SPRAY_STALKER, pos, 8000, TEMPSUMMON_TIMED_DESPAWN);
+ DoSummon(NPC_OOZE_SPRAY_STALKER, *target, 8000, TEMPSUMMON_TIMED_DESPAWN);
Talk(EMOTE_SLIME_SPRAY);
- DoCastAOE(SPELL_SLIME_SPRAY);
+ DoCast(me, SPELL_SLIME_SPRAY);
}
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);
break;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index a369f6947a7..6ccdb6e6de9 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -323,17 +323,17 @@ class boss_sindragosa : public CreatureScript
void SpellHitTarget(Unit* target, SpellEntry const* spell)
{
- if (SpellEntry const* buffet = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(70127), me))
- if (buffet->Id == spell->Id)
+ if (uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(70127, me))
+ if (spellId == spell->Id)
if (Aura const* mysticBuffet = target->GetAura(spell->Id))
_mysticBuffetStack = std::max<uint8>(_mysticBuffetStack, mysticBuffet->GetStackAmount());
// Frost Infusion
if (Player* player = target->ToPlayer())
{
- if (SpellEntry const* breath = sSpellMgr->GetSpellForDifficultyFromSpell(sSpellStore.LookupEntry(_isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1), me))
+ if (uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(_isThirdPhase ? SPELL_FROST_BREATH_P2 : SPELL_FROST_BREATH_P1, me))
{
- if (player->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_REWARDED && breath->Id == spell->Id)
+ if (player->GetQuestStatus(QUEST_FROST_INFUSION) != QUEST_STATUS_REWARDED && spellId == spell->Id)
{
if (Item* shadowsEdge = player->GetWeaponForAttack(BASE_ATTACK, true))
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 1ffee145667..1f450f5213f 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -914,7 +914,7 @@ class npc_crok_scourgebane : public CreatureScript
SetDespawnAtEnd(false);
SetDespawnAtFar(false);
_isEventActive = false;
- _isEventDone = false;
+ _isEventDone = _instance->GetBossState(DATA_SISTER_SVALNA) == DONE;
_didUnderTenPercentText = false;
}
@@ -939,7 +939,7 @@ class npc_crok_scourgebane : public CreatureScript
_isEventDone = true;
// Load Grid with Sister Svalna
me->GetMap()->LoadGrid(4356.71f, 2484.33f);
- if (Creature* svalna = me->FindNearestCreature(NPC_SISTER_SVALNA, 333.0f, true))
+ if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
svalna->AI()->DoAction(ACTION_START_GAUNTLET);
Talk(SAY_CROK_INTRO_1);
_events.ScheduleEvent(EVENT_ARNATH_INTRO_2, 7000);
@@ -953,7 +953,7 @@ class npc_crok_scourgebane : public CreatureScript
else if (action == ACTION_RESET_EVENT)
{
_isEventActive = false;
- _isEventDone = false;
+ _isEventDone = _instance->GetBossState(DATA_SISTER_SVALNA) == DONE;
me->setActive(false);
_aliveTrash.clear();
_currentWPid = 0;