diff options
author | Shauren <none@none> | 2010-12-06 22:54:19 +0100 |
---|---|---|
committer | Shauren <none@none> | 2010-12-06 22:54:19 +0100 |
commit | 703835ee94f15131eec84e25e45059fb87ab1ba2 (patch) | |
tree | 26d13c62a6c562796ce0a95e99f6602cfd339911 | |
parent | 20cc4ace5d4ab8a7438fc5db470c43cd9b1f4c66 (diff) |
Core/Quests: Fixed Unholy Infusion (24749), Blood Infusion (24756) and added partial support for Frost Infusion (24757)
--HG--
branch : trunk
4 files changed, 88 insertions, 9 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index ab394fcc91c..c357e683ebc 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5744,8 +5744,34 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // Shadow's Fate (Shadowmourne questline) case 71169: { - triggered_spell_id = 71203; target = triggeredByAura->GetCaster(); + Player* player = target->ToPlayer(); + if (!player) + return false; + // not checking Infusion auras because its in targetAuraSpell of credit spell + if (player->GetQuestStatus(24749) == QUEST_STATUS_INCOMPLETE) // Unholy Infusion + { + if (GetEntry() != 36678) // Professor Putricide + return false; + CastSpell(target, 71518, true); // Quest Credit + return true; + } + else if (player->GetQuestStatus(24756) == QUEST_STATUS_INCOMPLETE) // Blood Infusion + { + if (GetEntry() != 37955) // Blood-Queen Lana'thel + return false; + CastSpell(target, 72934, true); // Quest Credit + return true; + } + else if (player->GetQuestStatus(24757) == QUEST_STATUS_INCOMPLETE) // Frost Infusion + { + if (GetEntry() != 36853) // Sindragosa + return false; + CastSpell(target, 72289, true); // Quest Credit + return true; + } + else if (player->GetQuestStatus(24547) == QUEST_STATUS_INCOMPLETE) // A Feast of Souls + triggered_spell_id = 71203; break; } // Gaseous Bloat (Professor Putricide add) @@ -8863,16 +8889,36 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig break; // Shadow's Fate (Shadowmourne questline) case 71169: + { if (GetTypeId() != TYPEID_PLAYER) return false; - if (ToPlayer()->GetQuestStatus(24547) != QUEST_STATUS_INCOMPLETE) // A Feast of Souls + + Player* player = this->ToPlayer(); + if (player->GetQuestStatus(24749) == QUEST_STATUS_INCOMPLETE) // Unholy Infusion + { + if (!player->HasAura(71516) || pVictim->GetEntry() != 36678) // Shadow Infusion && Professor Putricide + return false; + } + else if (player->GetQuestStatus(24756) == QUEST_STATUS_INCOMPLETE) // Blood Infusion + { + if (!player->HasAura(72154) || pVictim->GetEntry() != 37955) // Thirst Quenched && Blood-Queen Lana'thel + return false; + } + else if (player->GetQuestStatus(24757) == QUEST_STATUS_INCOMPLETE) // Frost Infusion + { + if (!player->HasAura(72290) || pVictim->GetEntry() != 36853) // Frost-Imbued Blade && Sindragosa + return false; + } + else if (player->GetQuestStatus(24547) != QUEST_STATUS_INCOMPLETE) // A Feast of Souls return false; + if (pVictim->GetTypeId() != TYPEID_UNIT) return false; // critters are not allowed if (pVictim->GetCreatureType() == CREATURE_TYPE_CRITTER) return false; break; + } } if (cooldown && GetTypeId() == TYPEID_PLAYER && ToPlayer()->HasSpellCooldown(trigger_spell_id)) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 8a3074742f0..6bde370cd70 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3888,11 +3888,6 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->EffectImplicitTargetA[0] = TARGET_DST_DB; count++; break; - // Deathbringer Saurfang achievement (must be cast on players, cannot do that with ENTRY target) - case 72928: - spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_AREA_ENEMY_SRC; - count++; - break; case 63675: // Improved Devouring Plague spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_DONE_BONUS; count++; @@ -3954,6 +3949,12 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_TARGET_ENEMY; count++; break; + case 71518: // Unholy Infusion Quest Credit + case 72934: // Blood Infusion Quest Credit + case 72289: // Frost Infusion Quest Credit + spellInfo->EffectRadiusIndex[0] = 28; // another missing radius + count++; + break; case 71708: // Empowered Flare case 72785: // Empowered Flare case 72786: // Empowered Flare 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 b8929ebbe06..b3f1a533a59 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 @@ -61,6 +61,15 @@ enum eSpells SPELL_BLOODBOLT_WHIRL = 71772, }; +enum eShadowmourne +{ + QUEST_BLOOD_INFUSION = 24756, + ITEM_SHADOW_S_EDGE = 49888, + + SPELL_GUSHING_WOUND = 72132, + SPELL_THIRST_QUENCHED = 72154, +}; + static const uint32 vampireAuras[3][MAX_DIFFICULTY] = { {70867, 71473, 71532, 71533}, @@ -182,6 +191,12 @@ class boss_blood_queen_lana_thel : public CreatureScript instance->DoRemoveAurasDueToSpellOnPlayers(ESSENCE_OF_BLOOD_QUEEN); instance->DoRemoveAurasDueToSpellOnPlayers(ESSENCE_OF_BLOOD_QUEEN_PLR); instance->DoRemoveAurasDueToSpellOnPlayers(FRENZIED_BLOODTHIRST); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_UNCONTROLLABLE_FRENZY); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLOOD_MIRROR_DAMAGE); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLOOD_MIRROR_VISUAL); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_BLOOD_MIRROR_DUMMY); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_DELIRIOUS_SLASH); + instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PACT_OF_THE_DARKFALLEN); instance->SetBossState(DATA_BLOOD_QUEEN_LANA_THEL, DONE); } @@ -273,6 +288,10 @@ class boss_blood_queen_lana_thel : public CreatureScript offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true); me->getVictim()->CastSpell(offtank, SPELL_BLOOD_MIRROR_DUMMY, true); DoCastVictim(SPELL_BLOOD_MIRROR_VISUAL); + if (Item* shadowsEdge = offtank->GetWeaponForAttack(BASE_ATTACK, true)) + if (!offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !offtank->HasAura(SPELL_GUSHING_WOUND)) + offtank->CastSpell(offtank, SPELL_GUSHING_WOUND, true); + } } events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500, EVENT_GROUP_CANCELLABLE); @@ -436,8 +455,23 @@ class spell_blood_queen_vampiric_bite : public SpellScriptLoader spell = sSpellMgr.GetSpellForDifficultyFromSpell(spell, GetCaster()); GetCaster()->RemoveAura(spell->Id, 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()) GetCaster()->CastSpell(GetCaster(), SPELL_PRESENCE_OF_THE_DARKFALLEN, true); + // Shadowmourne questline + if (GetCaster()->ToPlayer()->GetQuestStatus(QUEST_BLOOD_INFUSION) == QUEST_STATUS_INCOMPLETE) + { + if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND)) + { + if (aura->GetStackAmount() == 3) + { + GetCaster()->CastSpell(GetCaster(), SPELL_THIRST_QUENCHED, true); + GetCaster()->RemoveAura(aura); + } + else + GetCaster()->CastSpell(GetCaster(), SPELL_GUSHING_WOUND, true); + } + } if (InstanceScript* instance = GetCaster()->GetInstanceScript()) if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL))) bloodQueen->AI()->SetGUID(GetHitUnit()->GetGUID(), GUID_VAMPIRE); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 3c7b349c6b4..49198ae8252 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -73,7 +73,6 @@ enum eSpells SPELL_PLAGUE_SICKNESS = 70953, SPELL_UNBOUND_PLAGUE_PROTECTION = 70955, SPELL_MUTATED_PLAGUE = 72451, - SPELL_UNHOLY_INFUSION_CREDIT = 71518, // Slime Puddle SPELL_GROW_STACKER = 70345, @@ -249,7 +248,6 @@ class boss_professor_putricide : public CreatureScript { Talk(SAY_DEATH); instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, DONE); - DoCastAOE(SPELL_UNHOLY_INFUSION_CREDIT, true); } void JustSummoned(Creature* summon) |