71 {70867, 71473, 71532, 71533},
72 {70879, 71525, 71530, 71531},
73 {70877, 71474, 70877, 71474},
76#define ESSENCE_OF_BLOOD_QUEEN RAID_MODE<uint32>(70867, 71473, 71532, 71533)
77#define ESSENCE_OF_BLOOD_QUEEN_PLR RAID_MODE<uint32>(70879, 71525, 71530, 71531)
78#define FRENZIED_BLOODTHIRST RAID_MODE<uint32>(70877, 71474, 70877, 71474)
79#define DELIRIOUS_SLASH RAID_MODE<uint32>(71623, 71624, 71625, 71626)
80#define PRESENCE_OF_THE_DARKFALLEN RAID_MODE<uint32>(70994, 71962, 71963, 71964)
119 for (
uint8 i = 0; i < 3; ++i)
193 minchar->SetCanFly(
false);
194 minchar->RemoveAllAuras();
195 minchar->GetMotionMaster()->MoveCharge(4629.3711f, 2782.6089f, 401.5301f,
SPEED_CHARGE/3.0f);
223 me->SetDisableGravity(
true);
236 me->SetDisableGravity(
true);
242 me->GetMotionMaster()->MoveTargetedHome();
249 me->SetDisableGravity(
false);
299 me->SetDisableGravity(
false);
302 if (
Unit* victim =
me->SelectVictim())
309 me->GetMotionMaster()->MoveTargetedHome();
337 std::list<Player*> targets;
339 if (!targets.empty())
341 Unit* target = targets.front();
387 std::list<Player*> targets;
390 if (targets.size() > 1)
393 for (std::list<Player*>::iterator itr = targets.begin(); itr != targets.end(); ++itr)
410 std::list<Player*> targets;
413 for (std::list<Player*>::iterator itr = targets.begin(); itr != targets.end(); ++itr)
427 me->SetDisableGravity(
true);
456 std::list<HostileReference*>
const& threatlist =
me->getThreatManager().getThreatList();
457 std::list<Player*> tempTargets;
459 if (threatlist.empty())
462 for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
463 if (
Unit* refTarget = (*itr)->getTarget())
465 tempTargets.push_back(refTarget->ToPlayer());
467 if (tempTargets.empty())
472 *targetList = tempTargets;
479 return tempTargets.front();
544 if (aura->GetStackAmount() == 3)
630 return _ai->WasBloodbolted(object->
GetGUID());
660 uint32 targetCount = (targets.size() + 2) / 3;
664 for (std::list<WorldObject*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
737 std::list<WorldObject*>::const_iterator itrEnd = targets.end(), itr, itr2;
739 for (itr = targets.begin(); itr != itrEnd && remove; ++itr)
741 if (!
GetCaster()->IsWithinDist(*itr, 5.0f,
false))
744 for (itr2 = targets.begin(); itr2 != itrEnd && remove; ++itr2)
745 if (itr != itr2 && !(*itr2)->IsWithinDist(*itr, 5.0f,
false))
793 damage =
int32(damage * multiplier);
847 return !lanaThelAI->WasVampire(source->GetGUID());
863 return lanaThelAI->WasVampire(source->GetGUID());
@ QUEST_STATUS_INCOMPLETE
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_SPELL
@ TARGET_UNIT_SRC_AREA_ALLY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_CUSTOM_ERROR_CANT_TARGET_VAMPIRES
@ SPELL_FAILED_CUSTOM_ERROR
@ SPELL_AURA_OVERRIDE_SPELLS
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ AURA_EFFECT_HANDLE_REAL
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_BYTE1_FLAG_ALWAYS_STAND
@ AURA_REMOVE_BY_ENEMY_SPELL
@ TRIGGERED_FULL_MASK
Will ignore most target checks (mostly DBC target checks).
@ UNIT_FIELD_NPC_EMOTESTATE
T CalculatePct(T base, U pct)
#define ESSENCE_OF_BLOOD_QUEEN
#define ESSENCE_OF_BLOOD_QUEEN_PLR
@ SPELL_FRENZIED_BLOODTHIRST_VISUAL
@ SPELL_UNCONTROLLABLE_FRENZY
@ SPELL_PACT_OF_THE_DARKFALLEN_TARGET
@ SPELL_PRESENCE_OF_THE_DARKFALLEN
@ SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE
@ SPELL_FRENZIED_BLOODTHIRST
@ SPELL_BLOOD_MIRROR_VISUAL
@ SPELL_VAMPIRIC_BITE_DUMMY
@ SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR
@ SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL
@ SPELL_BLOOD_INFUSION_CREDIT
@ SPELL_TWILIGHT_BLOODBOLT
@ SPELL_BLOOD_MIRROR_DAMAGE
@ SPELL_PACT_OF_THE_DARKFALLEN
@ SPELL_PRESENCE_OF_THE_DARKFALLEN_2
@ SPELL_TWILIGHT_BLOODBOLT_TARGET
@ SPELL_BLOOD_MIRROR_DUMMY
bool IsVampire(Unit const *unit)
void AddSC_boss_blood_queen_lana_thel()
#define PRESENCE_OF_THE_DARKFALLEN
#define FRENZIED_BLOODTHIRST
@ SAY_PACT_OF_THE_DARKFALLEN
boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI LanaThelAI
uint32 const vampireAuras[3][4]
Position const mincharPos
@ EVENT_PACT_OF_THE_DARKFALLEN
@ EVENT_TWILIGHT_BLOODBOLT
@ EVENT_GROUP_CANCELLABLE
AchievementCriteriaScript(const char *name)
uint32 GetTickNumber() const
void PreventDefaultAction()
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectProcHandler > OnEffectProc
HookList< EffectApplyHandler > OnEffectApply
bool operator()(WorldObject *object) const
BloodboltHitCheck(LanaThelAI *ai)
InstanceScript *const instance
BossAI(Creature *creature, uint32 bossId)
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
CreatureScript(const char *name)
uint8 GetSpawnMode() const
static Creature * GetCreature(WorldObject const &u, uint64 guid)
static Player * GetPlayer(WorldObject const &, uint64 guid)
QuestStatus GetQuestStatus(uint32 quest_id) const
DamageInfo * GetDamageInfo() const
int32 CalcValue(Unit const *caster=NULL, int32 const *basePoints=NULL, Unit const *target=NULL) const
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
Unit * GetExplTargetUnit()
HookList< CheckCastHandler > OnCheckCast
void PreventHitDefaultEffect(SpellEffIndex effIndex)
HookList< EffectHandler > OnEffectHitTarget
void SetCustomCastResultMessage(SpellCustomErrors result)
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
HookList< HitHandler > BeforeHit
SpellScriptLoader(const char *name)
virtual void SetGUID(uint64, int32=0)
void DoMeleeAttackIfReady()
void DoCast(uint32 spellId)
void DoCastVictim(uint32 spellId, bool triggered=false)
void DoCastAOE(uint32 spellId, bool triggered=false)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveVehicleKit(bool remove=false)
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
void CastCustomSpell(Unit *victim, uint32 spellId, int32 const *bp0, int32 const *bp1, int32 const *bp2, bool triggered, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
Vehicle * GetVehicleKit() const
InstanceScript * GetInstanceScript()
achievement_once_bitten_twice_shy_n()
bool OnCheck(Player *source, Unit *target) OVERRIDE
bool OnCheck(Player *source, Unit *target) OVERRIDE
achievement_once_bitten_twice_shy_v()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
boss_blood_queen_lana_thel()
PrepareSpellScript(spell_blood_queen_bloodbolt_SpellScript)
void HandleScript(SpellEffIndex effIndex)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) OVERRIDE
spell_blood_queen_bloodbolt()
SpellScript * GetSpellScript() const OVERRIDE
PrepareAuraScript(spell_blood_queen_essence_of_the_blood_queen_AuraScript)
void OnProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
bool Validate(SpellInfo const *) OVERRIDE
spell_blood_queen_essence_of_the_blood_queen()
AuraScript * GetAuraScript() const OVERRIDE
PrepareAuraScript(spell_blood_queen_frenzied_bloodthirst_AuraScript)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
AuraScript * GetAuraScript() const OVERRIDE
spell_blood_queen_frenzied_bloodthirst()
void FilterTargets(std::list< WorldObject * > &targets)
PrepareSpellScript(spell_blood_queen_pact_of_the_darkfallen_SpellScript)
void PeriodicTick(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) OVERRIDE
PrepareAuraScript(spell_blood_queen_pact_of_the_darkfallen_dmg_AuraScript)
void FilterTargets(std::list< WorldObject * > &unitList)
PrepareSpellScript(spell_blood_queen_pact_of_the_darkfallen_dmg_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
spell_blood_queen_pact_of_the_darkfallen_dmg_target()
AuraScript * GetAuraScript() const OVERRIDE
spell_blood_queen_pact_of_the_darkfallen_dmg()
spell_blood_queen_pact_of_the_darkfallen()
SpellScript * GetSpellScript() const OVERRIDE
SpellCastResult CheckTarget()
void HandlePresence(SpellEffIndex)
bool Validate(SpellInfo const *) OVERRIDE
PrepareSpellScript(spell_blood_queen_vampiric_bite_SpellScript)
spell_blood_queen_vampiric_bite()
SpellScript * GetSpellScript() const OVERRIDE
@ NPC_INFILTRATOR_MINCHAR_BQ
@ NPC_BLOOD_QUEEN_LANA_THEL
CreatureAI * GetIcecrownCitadelAI(Creature *creature)
@ LIGHT_S_HAMMER_TELEPORT
@ DATA_BLOOD_QUICKENING_STATE
@ DATA_BLOOD_QUEEN_LANA_THEL
void RandomResizeList(std::list< T > &list, uint32 size)
C::value_type const & SelectRandomContainerElement(C const &container)
void AttackStart(Unit *) OVERRIDE
void KilledUnit(Unit *victim) OVERRIDE
bool WasVampire(uint64 guid)
bool _creditBloodQuickening
void MovementInform(uint32 type, uint32 id) OVERRIDE
std::set< uint64 > _vampires
void EnterEvadeMode() OVERRIDE
void SetGUID(uint64 guid, int32 type=0) OVERRIDE
void JustDied(Unit *killer) OVERRIDE
bool WasBloodbolted(uint64 guid)
boss_blood_queen_lana_thelAI(Creature *creature)
void JustReachedHome() OVERRIDE
std::set< uint64 > _bloodboltedPlayers
void EnterCombat(Unit *who) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Player * SelectRandomTarget(bool includeOfftank, std::list< Player * > *targetList=NULL)
void DoAction(int32 action) OVERRIDE