243 prince->SetImmuneToPC(
false);
246 prince->SetHealth(prince->GetMaxHealth());
322 for (
uint8 i = 0; i < 3; ++i)
330 prince->LowerPlayerDamageReq(prince->GetMaxHealth());
352 prince->SetHealth(prince->GetMaxHealth());
546 if (damage > RAID_MODE<uint32>(23000, 25000, 23000, 25000))
869 summon->SetSpeedRate(
MOVE_RUN, 0.14f);
958 if (damage > RAID_MODE<uint32>(23000, 25000, 23000, 25000))
1050 if (me->GetDistance(victim) < 15.0f && !victim->HasAura(SPELL_SHADOW_RESONANCE_RESIST, me->GetGUID()))
1051 DoCast(victim, SPELL_SHADOW_RESONANCE_RESIST);
1053 MoveInLineOfSight(me->GetVictim());
1055 targetAuraCheck.
Repeat();
1193 Position const offset = { 0.0f, 0.0f, 20.0f, 0.0f };
1255 RoundToInterval<uint32>(absorbAmount, 0, dmgInfo.
GetDamage());
1292 flatMod += eff->GetAmount();
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
std::chrono::seconds Seconds
Seconds shorthand typedef.
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ ENCOUNTER_FRAME_DISENGAGE
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_CORPSE_DESPAWN
bool roll_chance_i(int chance)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define BeforeSpellHitFn(F)
#define SpellEffectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define SpellCalcDamageFn(F)
#define SpellDestinationTargetSelectFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_NON_ATTACKABLE
T CalculatePct(T base, U pct)
@ ACTION_FLAME_BALL_CHASE
@ ACTION_REMOVE_INVOCATION
@ ACTION_KINETIC_BOMB_JUMP
Position const triggerPos
@ POINT_KINETIC_BOMB_IMPACT
@ SPELL_SHADOW_RESONANCE_RESIST
@ SPELL_INVOCATION_OF_BLOOD_VALANAR
@ SPELL_INVOCATION_OF_BLOOD_TALDARAM
@ SPELL_BALL_OF_FLAMES_PERIODIC
@ SPELL_KINETIC_BOMB_TARGET
@ SPELL_FLAME_SPHERE_DEATH_EFFECT
@ SPELL_BALL_OF_FLAMES_VISUAL
@ SPELL_KINETIC_BOMB_KNOCKBACK
@ SPELL_FLAME_SPHERE_SPAWN_EFFECT
@ SPELL_EMPOWERED_SHADOW_LANCE
@ SPELL_INVOCATION_VISUAL_TALDARAM
@ SPELL_SHADOW_PRISON_DUMMY
@ SPELL_OOC_INVOCATION_VISUAL
@ SPELL_BALL_OF_FLAMES_PROC
@ SPELL_KINETIC_BOMB_EXPLOSION
@ SPELL_GLITTERING_SPARKS
@ SPELL_INVOCATION_VISUAL_VALANAR
@ SPELL_INVOCATION_OF_BLOOD_KELESETH
@ SPELL_KINETIC_BOMB_VISUAL
@ SPELL_SHADOW_PRISON_DAMAGE
@ SPELL_SHOCK_VORTEX_PERIODIC
@ SPELL_REMOVE_EMPOWERED_BLOOD
@ SPELL_SHADOW_RESONANCE_AURA
@ SPELL_SHOCK_VORTEX_DUMMY
@ SPELL_CONJURE_EMPOWERED_FLAME
@ SPELL_INVOCATION_VISUAL_ACTIVE
@ SPELL_EMPOWERED_SHOCK_VORTEX
@ SPELL_INVOCATION_VISUAL_KELESETH
void AddSC_boss_blood_prince_council()
Position const triggerEndPos
@ EMOTE_VALANAR_INVOCATION
@ SAY_TALDARAM_INVOCATION
@ EMOTE_TALDARAM_INVOCATION
@ SAY_KELESETH_INVOCATION
@ EMOTE_KELESETH_INVOCATION
@ EMOTE_VALANAR_SHOCK_VORTEX
Position const introFinalPos
uint32 const PrincesData[]
@ EVENT_GLITTERING_SPARKS
@ EVENT_INVOCATION_OF_BLOOD
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellInfo const * GetSpellInfo() const
HookList< EffectAbsorbHandler > OnEffectAbsorb
HookList< AuraProcHandler > OnProc
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
InstanceScript *const instance
void _DespawnAtEvade(Seconds delayToRespawn=30s, Creature *who=nullptr)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetBoundary(CreatureBoundary const *boundary, bool negativeBoundaries=false)
Creature * DoSummon(uint32 entry, Position const &pos, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
void SetCombatPulseDelay(uint32 delay)
void SetCanMelee(bool canMelee, bool fleeFromMelee=false)
void SetImmuneToPC(bool apply) override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void AbsorbDamage(uint32 amount)
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
uint8 GetPhaseMask() const
void SetPhase(uint8 phase)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEvent(BasicEvent *event, Milliseconds e_time, bool set_addtime=true)
Milliseconds CalculateTime(Milliseconds t_offset) const
virtual bool SetBossState(uint32 id, EncounterState state)
void DoCastSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
virtual ObjectGuid GetGuidData(uint32 type) const override
CreatureBoundary const * GetBossBoundary(uint32 id) const
EncounterState GetBossState(uint32 id) const
virtual bool CheckRequiredBosses(uint32, Player const *=nullptr) const
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
float GetHeight(PhaseShift const &phaseShift, float x, float y, float z, bool vmap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH)
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false, Unit const *target=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
LowType GetCounter() const
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< DamageAndHealingCalcHandler > CalcDamage
Creature * GetHitCreature() const
HookList< HitHandler > AfterHit
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
void PreventHitDefaultEffect(SpellEffIndex effIndex)
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
Aura * GetHitAura(bool dynObjAura=false) const
HookList< BeforeHitHandler > BeforeHit
SpellInfo const * GetSpellInfo() const
bool Execute(uint64, uint32) override
StandUpEvent(Creature *owner)
void Summon(Creature const *summon)
TaskContext & Repeat(std::chrono::duration< Rep, Period > duration)
TaskScheduler & Schedule(std::chrono::duration< Rep, Period > time, task_handler_t task)
TaskScheduler & Update(success_t const &callback=nullptr)
void SetTempSummonType(TempSummonType type)
virtual void DoAction(int32)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
virtual void SetGUID(ObjectGuid const &, int32=0)
SpellCastResult DoCast(uint32 spellId)
void ClearUnitState(uint32 f)
void SetHealth(uint64 val)
float GetSpeed(UnitMoveType mtype) const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
ThreatManager & GetThreatManager()
MotionMaster * GetMotionMaster()
TempSummon * ToTempSummon()
void RemoveUnitFlag3(UnitFlags3 flags)
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SetUninteractible(bool apply)
bool Attack(Unit *victim, bool meleeAttack)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool SetWalk(bool enable)
void NearTeleportTo(Position const &pos, bool casting=false)
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void SetUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
static void Kill(Unit *attacker, Unit *victim, bool durabilityLoss=true, bool skipSettingDeathState=false)
VortexEvent(Creature *owner)
bool Execute(uint64, uint32) override
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void MovePositionToFirstCollision(Position &pos, float dist, float angle)
PhaseShift & GetPhaseShift()
void setActive(bool isActiveObject)
float GetDistance2d(WorldObject const *obj) const
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
float GetDistance(WorldObject const *obj) const
void SummonCreatureGroup(uint8 group, std::list< TempSummon * > *list=nullptr)
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
at_blood_prince_council_start_intro()
bool OnTrigger(Player *player, AreaTriggerEntry const *) override
void CalculateDamage(Unit const *victim, int32 &, int32 &flatMod, float &) const
bool Validate(SpellInfo const *) override
void HandleDummyTick(AuraEffect const *aurEff)
void HandleStackDrop(ProcEventInfo &)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void HandleScript(SpellEffIndex effIndex)
void HandleScript(SpellEffIndex effIndex)
void OnAbsorb(AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
void HandleDummyTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
void KnockIntoAir(SpellMissInfo missInfo)
void SetDest(SpellDestination &dest)
@ LIGHT_S_HAMMER_TELEPORT
#define RegisterIcecrownCitadelCreatureAI(ai_name)
@ DATA_ORB_WHISPERER_ACHIEVEMENT
@ DATA_BLOOD_PRINCE_COUNCIL_INTRO
@ DATA_BLOOD_PRINCE_COUNCIL
@ DATA_BLOOD_QUEEN_LANA_THEL_COUNCIL
also used by conditions
@ DATA_BLOOD_PRINCES_CONTROL
@ NPC_BALL_OF_INFERNO_FLAME
@ NPC_KINETIC_BOMB_TARGET
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
uint32 SelectInvocationSpell()
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void DamageTaken(Unit *attacker, uint32 &damage, DamageEffectType, SpellInfo const *) override
void InitializeAI() override
void KilledUnit(Unit *victim) override
void JustAppeared() override
void DoAction(int32 action) override
void JustDied(Unit *) override
virtual void ScheduleEvents()=0
uint32 SelectInvocationSay()
void JustReachedHome() override
BloodPrincesBossAI(Creature *creature, uint32 bossId)
void JustEngagedWith(Unit *) override
void DamageDealt(Unit *, uint32 &damage, DamageEffectType damageType) override
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetAbsoluteAngle(float x, float y) const
constexpr void GetPosition(float &x, float &y) const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
void SetCombatMovement(bool allowMovement)
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void DoStartMovement(Unit *target, float distance=0.0f, float angle=0.0f)
void RelocateOffset(Position const &offset)
InvocationData(ObjectGuid _guid, uint32 _spellId, uint32 _textId, uint32 _visualSpell)
uint32 GetData(uint32 data) const override
void SetData(uint32, uint32 data) override
struct boss_blood_council_controller::InvocationData _invocationOrder[3]
void DoAction(int32 actionId) override
void JustDied(Unit *killer) override
void UpdateAI(uint32 diff) override
void EnterEvadeMode(EvadeReason) override
boss_blood_council_controller(Creature *creature)
void JustEngagedWith(Unit *who) override
void ScheduleEvents() override
void UpdateAI(uint32 diff) override
boss_prince_keleseth_icc(Creature *creature)
void JustSummoned(Creature *summon) override
void ScheduleEvents() override
boss_prince_taldaram_icc(Creature *creature)
void UpdateAI(uint32 diff) override
void JustSummoned(Creature *summon) override
void UpdateAI(uint32 diff) override
boss_prince_valanar_icc(Creature *creature)
void JustSummoned(Creature *summon) override
void ScheduleEvents() override
void DoAction(int32 action) override
InstanceScript * _instance
void UpdateAI(uint32 diff) override
void SetGUID(ObjectGuid const &guid, int32) override
void DamageDealt(Unit *, uint32 &damage, DamageEffectType damageType) override
npc_ball_of_flame(Creature *creature)
void MovementInform(uint32 type, uint32 id) override
InstanceScript * _instance
npc_blood_queen_lana_thel(Creature *creature)
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
void MovementInform(uint32 type, uint32 id) override
void JustEngagedWith(Unit *who) override
npc_dark_nucleus(Creature *creature)
void UpdateAI(uint32 diff) override
void DamageTaken(Unit *attacker, uint32 &, DamageEffectType, SpellInfo const *) override
void DoAction(int32 action) override
npc_kinetic_bomb(Creature *creature)
void UpdateAI(uint32 diff) override