149 for (
uint32 i = 173; i <= 177; ++i)
234 for (
auto i = players.
begin(); i != players.
end(); ++i)
236 Player* player = i->GetSource();
237 if (!player || !player->
IsAlive())
259 for (
auto i = players.
begin(); i != players.
end(); ++i)
261 Player* player = i->GetSource();
262 for (
uint32 index = 0; index <= 4; ++index)
313 if (visage->InSamePhase(summon))
315 else if (!visage->GetPhaseShift().GetPhases().empty())
317 nextPhase = visage->GetPhaseShift().GetPhases().begin()->Id;
327 for (
auto itr = playerList.
begin(); itr != playerList.
end(); ++itr)
329 if (
Player* player = itr->GetSource())
331 if (player->HasAura(spell))
333 player->RemoveAurasDueToSpell(spell);
335 player->CastSpell(player, spell2,
true);
448 mortalStrike.
Repeat(3s, 5s);
452 harmstring.
Repeat(5s, 10s);
469 bloodthirst.
Repeat(3s, 5s);
476 thunderClap.
Repeat(5s, 10s);
492 consecration.
Repeat(5s, 10s);
496 avengersShield.
Repeat(5s, 10s);
504 consecration.
Repeat(5s, 10s);
511 judgementLight.
Repeat(3s, 5s);
526 disengage.
Repeat(10s, 20s);
537 eviscerate.
Repeat(5s, 10s);
541 sinisterStrike.
Repeat(3s, 5s);
551 shadowWordPain.
Repeat(5s, 10s);
573 greaterHeal.
Repeat(4s, 6s);
594 plagueStrike.
Repeat(3s, 5s);
605 thunderstorm.
Repeat(5s, 10s);
609 lightningBolt.
Repeat(3s, 5s);
616 earthShock.
Repeat(3s, 5s);
625 earthShield.
Repeat(4s, 6s);
634 healingWave.
Repeat(4s, 6s);
646 frostNova.
Repeat(5s, 10s);
657 corruption.
Repeat(6s, 10s);
661 shadowBolt.
Repeat(3s, 5s);
755 if (!target || !caster)
770 caster->
AI()->
Talk(text, target);
DB2Storage< ChrSpecializationEntry > sChrSpecializationStore("ChrSpecialization.db2", &ChrSpecializationLoadInfo::Instance)
@ TEMPSUMMON_CORPSE_DESPAWN
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
#define SpellEffectFn(F, I, N)
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
#define RegisterAhnKahetCreatureAI(ai_name)
@ SPELL_TWISTED_VISAGE_EARTH_SHIELD
@ SPELL_INSANITY_PHASING_1
@ SPELL_SHADOW_BOLT_VOLLEY
@ SPELL_TWISTED_VISAGE_NOURISH
@ SPELL_TWISTED_VISAGE_SHOOT
@ SPELL_TWISTED_VISAGE_CAT_FORM
@ SPELL_TWISTED_VISAGE_SEAL_OF_COMMAND
@ SPELL_TWISTED_VISAGE_THUNDERSTORM
@ SPELL_TWISTED_VISAGE_HEALING_WEAVE
@ SPELL_INSANITY_PHASING_5
@ SPELL_TWISTED_VISAGE_LIGHTNING_BOLT
@ SPELL_TWISTED_VISAGE_CONSECRATION
@ SPELL_TWISTED_VISAGE_SHADOW_WORD_PAIN
@ SPELL_TWISTED_VISAGE_LIFEBLOOM
@ SPELL_TWISTED_VISAGE_WRATH
@ SPELL_TWISTED_VISAGE_RIP
@ SPELL_TWISTED_VISAGE_MANGLE
@ SPELL_TWISTED_VISAGE_SHADOW_BOLT
@ SPELL_TWISTED_VISAGE_MORTAL_STRIKE
@ SPELL_TWISTED_VISAGE_VISUAL
@ SPELL_TWISTED_VISAGE_HAMSTRING
@ SPELL_TWISTED_VISAGE_DEATH
@ SPELL_TWISTED_VISAGE_INTERCEPT
@ SPELL_TWISTED_VISAGE_SINISTER_STRIKE
@ SPELL_TWISTED_VISAGE_DEATH_GRIP
@ SPELL_TWISTED_VISAGE_JUDGEMENT_OF_LIGHT
@ SPELL_TWISTED_VISAGE_FIREBALL
@ SPELL_TWISTED_VISAGE_FROST_NOVA
@ SPELL_TWISTED_VISAGE_CORRUPTION
@ SPELL_INSANITY_PHASING_4
@ SPELL_TWISTED_VISAGE_PLAGUE_STRIKE
@ SPELL_TWISTED_VISAGE_EVISCERATE
@ SPELL_TWISTED_VISAGE_MIND_FLAY
@ SPELL_TWISTED_VISAGE_BLOODTHIRST
@ SPELL_TWISTED_VISAGE_MOONFIRE
@ SPELL_TWISTED_VISAGE_THUNDER_CLAP
@ SPELL_TWISTED_VISAGE_GREATER_HEAL
@ SPELL_TWISTED_VISAGE_RENEW
@ SPELL_INSANITY_PHASING_2
@ SPELL_INSANITY_PHASING_3
@ SPELL_TWISTED_VISAGE_DEVASTATE
@ SPELL_TWISTED_VISAGE_AVENGER__S_SHIELD
@ SPELL_TWISTED_VISAGE_EARTH_SHOCK
@ SPELL_TWISTED_VISAGE_DISENGAGE
@ ACHIEV_QUICK_DEMISE_START_EVENT
@ DATA_TWISTED_VISAGE_PLAYER_CLASS
@ DATA_TWISTED_VISAGE_PLAYER_SPEC
InstanceScript *const instance
void JustEngagedWith(Unit *who) override
void JustDied(Unit *) override
void SummonedCreatureDespawn(Creature *summon) override
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetReactState(ReactStates st)
void SetCanDualWield(bool value) override
void TriggerGameEvent(uint32 gameEventId, WorldObject *source=nullptr, WorldObject *target=nullptr) override
PlayerList const & GetPlayers() const
static Creature * ToCreature(Object *o)
PhaseContainer const & GetPhases() const
static void AddPhase(WorldObject *object, uint32 phaseId, bool updateVisibility)
ChrSpecialization GetPrimarySpecialization() const
Player * GetHitPlayer() const
HookList< EffectHandler > OnEffectHitTarget
SpellInfo const * GetSpellInfo() const
StorageType::const_iterator const_iterator
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)
TaskScheduler & SetValidator(P &&predicate)
Sets a validator which is asked if tasks are allowed to be executed.
void AttackStartCaster(Unit *victim, float dist)
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)
SpellCastResult DoCast(uint32 spellId)
void SetControlled(bool apply, UnitState state)
bool IsWithinCombatRange(Unit const *obj, float dist2compare) const
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
void SetUninteractible(bool apply)
uint64 GetMaxHealth() const
bool HasUnitState(const uint32 f) const
bool IsUninteractible() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
PhaseShift & GetPhaseShift()
void HandleScriptEffect(SpellEffIndex)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
EnumFlag< ChrSpecializationFlag > GetFlags() const
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
Unit * DoSelectLowestHpFriendly(float range, uint32 minHPDiff=1)
void JustSummoned(Creature *summon) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void ScheduleTasks() override
void JustDied(Unit *killer) override
void KilledUnit(Unit *who) override
void JustEngagedWith(Unit *who) override
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
void SummonedCreatureDespawn(Creature *summon) override
uint32 GetHealthPct(uint32 damage)
void UpdateAI(uint32 diff) override
uint32 GetSpellForPhaseMask(uint32 phase)
boss_volazj(Creature *creature)
void ResetPlayersPhaseMask()
void JustDied(Unit *) override
npc_twisted_visage(Creature *creature)
void SetData(uint32 type, uint32 data) override
void UpdateAI(uint32 diff) override
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================