81#define SPELL_DARK_ESSENCE_HELPER RAID_MODE<uint32>(65684, 67176, 67177, 67178)
82#define SPELL_LIGHT_ESSENCE_HELPER RAID_MODE<uint32>(65686, 67222, 67223, 67224)
84#define SPELL_POWERING_UP_HELPER RAID_MODE<uint32>(67590, 67602, 67603, 67604)
86#define SPELL_UNLEASHED_DARK_HELPER RAID_MODE<uint32>(65808, 67172, 67173, 67174)
87#define SPELL_UNLEASHED_LIGHT_HELPER RAID_MODE<uint32>(65795, 67238, 67239, 67240)
95#define ESSENCE_REMOVE 0
96#define ESSENCE_APPLY 1
108 _creature->VisitNearbyGridObject(5000.0f, worker);
159 me->DespawnOrUnsummon();
195 switch (summoned->GetEntry())
221 if (!pSister->IsAlive())
245 me->SetInCombatWithZone();
251 pSister->SetInCombatWithZone();
278 me->SetCanDualWield(mode);
492 switch (
me->GetEntry())
504 return spellReturned;
515 player->RemoveAurasDueToSpell(creature->GetAI()->GetData(
ESSENCE_REMOVE));
516 player->CastSpell(player, creature->GetAI()->GetData(
ESSENCE_APPLY),
true);
517 player->CLOSE_GOSSIP_MENU();
532 float x =
frand(x0 - r, x0 + r);
533 float sq = pow(r, 2) - pow(x - x0, 2);
534 float rt = sqrtf(fabs(sq));
539 me->GetMotionMaster()->MovePoint(0, x, y,
me->GetPositionZ());
546 me->SetDisableGravity(
true);
561 if ((std::rand() % 3) == 0)
564 me->DisappearAndDie();
588 if (
me->SelectNearestPlayer(3.0f))
591 me->GetMotionMaster()->MoveIdle();
592 me->DespawnOrUnsummon(1000);
620 if (
me->SelectNearestPlayer(3.0f))
623 me->GetMotionMaster()->MoveIdle();
624 me->DespawnOrUnsummon(1000);
700 if (pAura->GetStackAmount() >= 100)
753 if ((std::rand() % 99) < 5)
761 if (lightVortex && darkVortex && stacksCount)
765 Aura* pAura = owner->GetAura(poweringUp);
769 owner->CastSpell(owner, poweringUp,
true);
773 owner->CastSpell(owner, poweringUp,
true);
774 if (
Aura* pTemp = owner->GetAura(poweringUp))
775 pTemp->ModStackAmount(stacksCount);
784 if (unleashedDark && unleashedLight)
789 Aura* pAura = owner->GetAura(poweringUp);
794 owner->CastSpell(owner, poweringUp,
true);
798 owner->CastSpell(owner, poweringUp,
true);
799 if (
Aura* pTemp = owner->GetAura(poweringUp))
800 pTemp->ModStackAmount(stacksCount);
@ ACHIEVEMENT_TIMED_TYPE_EVENT
@ TEMPSUMMON_MANUAL_DESPAWN
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
#define SpellEffectFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NOT_SELECTABLE
@ OBJECT_FIELD_DYNAMIC_FLAGS
float frand(float min, float max)
#define SPELL_DARK_ESSENCE_HELPER
#define SPELL_LIGHT_ESSENCE_HELPER
@ SPELL_DARK_VORTEX_DAMAGE
@ SPELL_LIGHT_VORTEX_DAMAGE
@ SPELL_TWIN_EMPATHY_DARK
@ SPELL_CONTROLLER_PERIODIC
@ SPELL_TWIN_EMPATHY_LIGHT
#define SPELL_POWERING_UP_HELPER
#define SPELL_UNLEASHED_DARK_HELPER
void AddSC_boss_twin_valkyr()
#define SPELL_UNLEASHED_LIGHT_HELPER
bool ModStackAmount(int32 num, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectAbsorbHandler > OnEffectAbsorb
Unit * GetUnitOwner() const
InstanceScript *const instance
BossAI(Creature *creature, uint32 bossId)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
virtual void EnterEvadeMode()
void DespawnOrUnsummon(uint32 msTimeToDespawn=0)
CreatureScript(const char *name)
SpellInfo const * GetSpellInfo() const
static Creature * GetCreature(WorldObject const &u, uint64 guid)
bool Execute(uint64, uint32)
OrbsDespawner(Creature *creature)
void operator()(Creature *creature) const
int32 CalcValue(Unit const *caster=NULL, int32 const *basePoints=NULL, Unit const *target=NULL) const
SpellEffectInfo Effects[MAX_SPELL_EFFECTS]
HookList< EffectHandler > OnEffectHitTarget
SpellScriptLoader(const char *name)
void DoMeleeAttackIfReady()
void DoCast(uint32 spellId)
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
void DoCastVictim(uint32 spellId, bool triggered=false)
void DoCastAOE(uint32 spellId, bool triggered=false)
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)
static Creature * GetCreature(WorldObject &object, uint64 guid)
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
bool OnGossipHello(Player *player, Creature *creature) OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
PrepareAuraScript(spell_power_of_the_twins_AuraScript)
void HandleEffectRemove(AuraEffect const *, AuraEffectHandleModes)
void HandleEffectApply(AuraEffect const *, AuraEffectHandleModes)
AuraScript * GetAuraScript() const OVERRIDE
spell_power_of_the_twins()
PrepareSpellScript(spell_powering_up_SpellScript) uint32 spellId
void HandleScriptEffect(SpellEffIndex)
SpellScript * GetSpellScript() const OVERRIDE
PrepareAuraScript(spell_valkyr_essences_AuraScript)
void Absorb(AuraEffect *, DamageInfo &dmgInfo, uint32 &)
AuraScript * GetAuraScript() const OVERRIDE
void SetEquipmentSlots(bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
void SetCombatMovement(bool allowMovement)
ScriptedAI(Creature *creature)
boss_eydisAI(Creature *creature)
boss_fjolaAI(Creature *creature)
void EnterEvadeMode() OVERRIDE
void JustReachedHome() OVERRIDE
void EnterCombat(Unit *who) OVERRIDE
void EnableDualWield(bool mode=true)
void JustDied(Unit *) OVERRIDE
void JustSummoned(Creature *summoned) OVERRIDE
void MovementInform(uint32 uiType, uint32 uiId) OVERRIDE
void JustReachedHome() OVERRIDE
void DoAction(int32 action) OVERRIDE
void EnterCombat(Unit *) OVERRIDE
uint32 SpecialAbilityTimer
void SummonedCreatureDespawn(Creature *summoned) OVERRIDE
uint32 OtherEssenceSpellId
boss_twin_baseAI(Creature *creature)
void KilledUnit(Unit *who) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_bullet_controllerAI(Creature *creature)
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
uint32 GetData(uint32 data) const OVERRIDE
npc_essence_of_twinAI(Creature *creature)
npc_unleashed_ballAI(Creature *creature)
void MovementInform(uint32 uiType, uint32 uiId) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_unleashed_darkAI(Creature *creature)
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_unleashed_lightAI(Creature *creature)
const Position ToCCommonLoc[]
@ EVENT_START_TWINS_FIGHT
@ DATA_TRIBUTE_TO_IMMORTALITY_ELIGIBLE