125#define BOILING_BLOOD_HELPER RAID_MODE<int32>(72385, 72441, 72442, 72443)
232 {-509.6505f, 2211.377f, 539.2872f, 0.0f},
233 {-508.7480f, 2211.897f, 539.2870f, 0.0f},
234 {-509.2929f, 2211.411f, 539.2870f, 0.0f},
235 {-506.6607f, 2211.367f, 539.2870f, 0.0f},
236 {-506.1137f, 2213.306f, 539.2870f, 0.0f},
237 {-509.0040f, 2211.743f, 539.2870f, 0.0f}
242 {-514.4834f, 2211.334f, 549.2887f, 0.0f},
243 {-510.1081f, 2211.592f, 546.3773f, 0.0f},
244 {-513.3210f, 2211.396f, 551.2882f, 0.0f},
245 {-507.3684f, 2210.353f, 545.7497f, 0.0f},
246 {-507.0486f, 2212.999f, 545.5512f, 0.0f},
247 {-510.7041f, 2211.069f, 546.5298f, 0.0f}
388 if (target->GetTransport())
425 switch (spellInfo->
Id)
450 bloodPower->RecalculateAmountOfEffects();
498 for (
uint32 i10 = 0; i10 < 2; ++i10)
501 for (
uint32 i25 = 0; i25 < 3; ++i25)
592 bloodPower->RecalculateAmountOfEffects();
646 std::vector<Creature*> guardList;
662 std::list<Creature*> guardList;
666 for (
auto itr = guardList.begin(); itr != guardList.end(); ++x, ++itr)
667 (*itr)->AI()->SetData(0, x);
746 deathbringer->DespawnOrUnsummon();
799 deathbringer->GetClosePoint(x, y, z, deathbringer->GetCombatReach());
844 std::vector<Creature*> guardList;
861 std::list<Creature*> guardList;
865 for (
auto itr = guardList.begin(); itr != guardList.end(); ++x, ++itr)
866 (*itr)->AI()->SetData(0, x);
889 deathbringer->DespawnOrUnsummon(5s);
966 if (!(!type && data && data < 6))
1048 aura->RecalculateAmountOfEffects();
1064 canBeRecalculated =
true;
1154 if (targets.empty())
1158 uint32 targetsAtRange = 0;
1163 for (std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); ++itr, ++targetsAtRange)
1164 if ((*itr)->GetDistance(
GetCaster()) < 12.0f)
1168 if (targetsAtRange < minTargets)
1169 targetsAtRange =
uint32(targets.size());
1171 std::list<WorldObject*>::const_iterator itr = targets.begin();
1172 std::advance(itr,
urand(0, targetsAtRange - 1));
1175 targets.push_back(
target);
1185 unitList.push_back(
target);
1215 targets.remove(
GetCaster()->GetVictim());
1216 if (targets.empty())
1221 targets.push_back(target);
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
void GetCreatureListWithEntryInGrid(Container &container, WorldObject *source, uint32 entry, float maxSearchRange)
void CloseGossipMenuFor(Player *player)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_FORCE_CAST
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
@ SPELL_AURA_PERIODIC_DUMMY
@ TRIGGERED_FULL_MASK
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
@ UNIT_FLAG2_PLAY_DEATH_ANIM
@ UNIT_FLAG_UNINTERACTIBLE
Position const deathbringerPos
Position const chargePos[6]
@ SPELL_BLOOD_NOVA_TRIGGER
@ SPELL_SUMMON_BLOOD_BEAST
@ SPELL_MARK_OF_THE_FALLEN_CHAMPION
@ SPELL_PERMANENT_FEIGN_DEATH
@ SPELL_SUMMON_BLOOD_BEAST_25_MAN
@ SPELL_REMOVE_MARKS_OF_THE_FALLEN_CHAMPION
@ SPELL_MARK_OF_THE_FALLEN_CHAMPION_S
@ SPAWN_GROUP_ENTRANCE_THE_DAMNED_EVENT
@ GOSSIP_MENU_HIGH_OVERLORD_SAURFANG
@ GOSSIP_MENU_MURADIN_BRONZEBEARD
void AddSC_boss_deathbringer_saurfang()
Position const chokePos[6]
@ ACTION_MARK_OF_THE_FALLEN_CHAMPION
@ EVENT_OUTRO_ALLIANCE_18
@ EVENT_OUTRO_ALLIANCE_21
@ EVENT_OUTRO_ALLIANCE_20
@ EVENT_OUTRO_ALLIANCE_11
@ EVENT_SUMMON_BLOOD_BEAST
@ EVENT_OUTRO_ALLIANCE_13
@ EVENT_OUTRO_ALLIANCE_12
@ EVENT_OUTRO_ALLIANCE_15
@ EVENT_OUTRO_ALLIANCE_17
@ EVENT_OUTRO_ALLIANCE_16
@ EVENT_OUTRO_ALLIANCE_10
@ EVENT_OUTRO_ALLIANCE_19
@ EVENT_OUTRO_ALLIANCE_14
Position const firstStepPos
@ SAY_MARK_OF_THE_FALLEN_CHAMPION
void PreventDefaultAction()
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
HookList< EffectProcHandler > OnEffectProc
Unit * GetUnitOwner() const
InstanceScript *const instance
bool CanAIAttack(Unit const *target) const override
bool _EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void DoZoneInCombat(Creature *creature=nullptr)
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void SetHomePosition(float x, float y, float z, float o)
void SetImmuneToPC(bool apply) override
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
bool IsImmuneToPC() const
bool IsInPhase(PhaseIndex phase) const
void SetPhase(PhaseIndex phase)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
void DoCastSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
virtual ObjectGuid GetGuidData(uint32 type) const override
virtual bool CheckRequiredBosses(uint32, Player const *=nullptr) const
bool SpawnGroupDespawn(uint32 groupId, bool deleteRespawnTimes=false, size_t *count=nullptr)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false)
void MoveFall(uint32 id=0)
static Creature * ToCreature(Object *o)
static Player * ToPlayer(Object *o)
Unit * GetActionTarget() const
HookList< HitHandler > AfterHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
Aura * GetHitAura(bool dynObjAura=false) const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void Despawn(Creature const *summon)
void Summon(Creature const *summon)
void DoMeleeAttackIfReady()
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 AttackStart(Unit *)
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
void SetFaction(uint32 faction) override
MotionMaster * GetMotionMaster()
void RemoveNpcFlag(NPCFlags flags)
bool SetDisableGravity(bool disable, bool updateAnimTier=true)
void SetFacingToObject(WorldObject const *object, bool force=true, uint32 movementId=EVENT_FACE)
uint32 GetMaxPower(Powers power) const
void SetPower(Powers power, uint32 val, bool withPowerUpdate=true, bool force=false)
bool SetWalk(bool enable)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
bool HasUnitState(const uint32 f) const
uint32 GetPower(Powers power) const
void SetUnitFlag(UnitFlags flags)
Vehicle * GetVehicleKit() const
void RemoveAurasOnEvade()
void RemoveUnitFlag(UnitFlags flags)
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void setActive(bool isActiveObject)
Transport * GetTransport() const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
achievement_ive_gone_and_made_a_mess()
bool OnCheck(Player *, Unit *target) override
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_deathbringer_blood_beast_blood_link)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_deathbringer_blood_link_aura)
void HandlePeriodicTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_deathbringer_blood_link)
void HandleForceCast(SpellEffIndex)
PrepareSpellScript(spell_deathbringer_blood_nova_targeting)
void FilterTargetsSubsequent(std::list< WorldObject * > &unitList)
void FilterTargetsInitial(std::list< WorldObject * > &targets)
spell_deathbringer_blood_nova_targeting()
void HandleScript(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_deathbringer_blood_nova)
void RecalculateHook(AuraEffect const *, int32 &amount, bool &canBeRecalculated)
PrepareAuraScript(spell_deathbringer_blood_power_aura)
PrepareSpellScript(spell_deathbringer_blood_power)
PrepareSpellScript(spell_deathbringer_boiling_blood)
void FilterTargets(std::list< WorldObject * > &targets)
void HandleScript(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_deathbringer_rune_of_blood)
@ SPELL_REPUTATION_BOSS_KILL
@ LIGHT_S_HAMMER_TELEPORT
#define RegisterIcecrownCitadelCreatureAI(ai_name)
@ DATA_DEATHBRINGER_SAURFANG
@ DATA_SAURFANG_EVENT_NPC
@ NPC_SE_SKYBREAKER_MARINE
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
float GetPositionY() const
void AttackStart(Unit *) override
bool HealthBelowPct(uint32 pct) const
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
uint32 GetData(uint32 type) const override
void JustDied(Unit *) override
void MovementInform(uint32 type, uint32 id) override
static uint32 const FightWonValue
void JustReachedHome() override
void JustEngagedWith(Unit *who) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void SummonedCreatureDies(Creature *summon, Unit *) override
void DoAction(int32 action) override
void AttackStart(Unit *victim) override
bool CanAIAttack(Unit const *target) const override
void JustSummoned(Creature *summon) override
uint32 _fallenChampionCastCount
void UpdateAI(uint32 diff) override
void KilledUnit(Unit *victim) override
void EnterEvadeMode(EvadeReason why) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
boss_deathbringer_saurfang(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32) override
InstanceScript * _instance
void DoAction(int32 action) override
npc_high_overlord_saurfang_icc(Creature *creature)
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void MovementInform(uint32 type, uint32 id) override
void GuardBroadcast(std::function< void(Creature *)> &&action) const
void UpdateAI(uint32 diff) override
void MovementInform(uint32 type, uint32 id) override
npc_muradin_bronzebeard_icc(Creature *creature)
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void GuardBroadcast(std::function< void(Creature *)> &&action) const
InstanceScript * _instance
bool OnGossipSelect(Player *player, uint32 menuId, uint32) override
npc_saurfang_event(Creature *creature)
void DoAction(int32 action) override
void SetData(uint32 type, uint32 data) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override