342 if (twilightHalion->IsAlive())
343 twilightHalion->Kill(twilightHalion);
346 if (controller->IsAlive())
347 controller->Kill(controller);
371 if (!
me->InSamePhase(attacker))
464 me->SetPhaseMask(0x20,
true);
497 if (
me->IsDamageEnoughForLootingAndReward())
498 halion->LowerPlayerDamageReq(halion->GetMaxHealth());
500 if (halion->IsAlive())
501 killer->Kill(halion);
505 if (controller->IsAlive())
506 controller->Kill(controller);
525 if (!
me->InSamePhase(attacker))
582 me->SetPhaseMask(
me->GetPhaseMask() | 0x20,
true);
620 twilightHalion->DespawnOrUnsummon();
625 halion->AI()->EnterEvadeMode();
790 if (damageRatio < 0.98f)
792 else if (0.99f < damageRatio && damageRatio < 1.01f)
794 else if (1.02f < damageRatio)
893 instance(creature->GetInstanceScript())
911 me->SetFacingToObject(rotationFocus);
921 if (southOrb && northOrb)
933 if (eastOrb && westOrb)
995 Position const* ownerPos = halionAI->GetMeteorStrikePosition();
998 angle[0] =
me->GetAngle(ownerPos);
999 angle[1] =
me->GetAngle(ownerPos) -
static_cast<float>(
M_PI/2);
1000 angle[2] =
me->GetAngle(ownerPos) -
static_cast<float>(-
M_PI/2);
1001 angle[3] =
me->GetAngle(ownerPos) -
static_cast<float>(
M_PI);
1004 for (
uint8 i = 0; i < 4; i++)
1007 me->SetOrientation(angle[i]);
1008 me->GetNearPosition(newPos, 10.0f, 0.0f);
1036 _instance(creature->GetInstanceScript())
1049 me->setActive(
true);
1058 controller->AI()->JustSummoned(
me);
1071 me->GetNearPosition(pos,
_range, 0.0f);
1076 controller->AI()->JustSummoned(flame);
1111 switch (
me->GetEntry())
1116 me->SetPhaseMask(0x01,
true);
1121 me->SetPhaseMask(0x20,
true);
1130 me->SetPhaseMask(0x01 | 0x20,
true);
1137 controller->AI()->JustSummoned(
me);
1152 int32 damage = 1200 + (stackAmount * 1290);
1182 me->SetInCombatWithZone();
1187 controller->AI()->JustSummoned(
me);
1192 me->DespawnOrUnsummon(1);
1227 controller->AI()->JustSummoned(
me);
1232 me->DespawnOrUnsummon(1);
1273 case GO_HALION_PORTAL_EXIT:
1274 gameobject->SetPhaseMask(0x20, true);
1275 _spellId = gameobject->GetGOInfo()->goober.spellId;
1277 case GO_HALION_PORTAL_1:
1278 case GO_HALION_PORTAL_2:
1279 gameobject->SetPhaseMask(0x1, true);
1281 _spellId = SPELL_TWILIGHT_REALM;
1292 player->CastSpell(player,
_spellId,
true);
1489 if (summon->IsAIEnabled)
1633 if (unitList.empty())
1699 Position offset = {0.0f, 20.0f, 0.0f, 0.0f};
DBCStorage< SummonPropertiesEntry > sSummonPropertiesStore(SummonPropertiesfmt)
@ ENCOUNTER_FRAME_DISENGAGE
@ TEMPSUMMON_TIMED_DESPAWN
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SUMMON_OBJECT_WILD
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_AURA_PERIODIC_DAMAGE
@ AURA_EFFECT_HANDLE_REAL
#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)
@ AURA_REMOVE_BY_ENEMY_SPELL
@ TRIGGERED_FULL_MASK
Will ignore most target checks (mostly DBC target checks).
@ UNIT_FLAG_NOT_SELECTABLE
@ UNIT_FIELD_CHANNEL_OBJECT
@ ACTION_METEOR_STRIKE_AOE
@ ACTION_MONITOR_CORPOREALITY
@ ACTION_METEOR_STRIKE_BURN
@ DATA_TWILIGHT_DAMAGE_TAKEN
@ DATA_MATERIAL_DAMAGE_TAKEN
@ SPELL_COSMETIC_FIRE_PILLAR
@ SPELL_METEOR_STRIKE_COUNTDOWN
@ SPELL_FIERY_COMBUSTION_SUMMON
@ SPELL_METEOR_STRIKE_FIRE_AURA_1
@ SPELL_SUMMON_TWILIGHT_PORTAL
@ SPELL_MARK_OF_COMBUSTION
@ SPELL_METEOR_STRIKE_AOE_DAMAGE
@ SPELL_TWILIGHT_DIVISION
@ SPELL_LEAVE_TWILIGHT_REALM
@ SPELL_TWILIGHT_PRECISION
@ SPELL_SOUL_CONSUMPTION_SUMMON
@ SPELL_SOUL_CONSUMPTION_EXPLOSION
@ SPELL_FIERY_COMBUSTION_EXPLOSION
@ SPELL_TWILIGHT_PULSE_PERIODIC
@ SPELL_SUMMON_EXIT_PORTALS
@ SPELL_MARK_OF_CONSUMPTION
@ SPELL_TWILIGHT_CUTTER_TRIGGERED
@ SPELL_COMBUSTION_DAMAGE_AURA
@ SPELL_CONSUMPTION_DAMAGE_AURA
@ SPELL_METEOR_STRIKE_FIRE_AURA_2
boss_halion::boss_halionAI HalionAI
uint8 const MAX_CORPOREALITY_STATE
CorporealityEntry const _corporealityReference[MAX_CORPOREALITY_STATE]
Position const HalionSpawnPos
npc_halion_controller::npc_halion_controllerAI controllerAI
@ CORPOREALITY_TWILIGHT_MENDING
@ EVENT_SHADOW_PULSARS_SHOOT
@ EVENT_SPAWN_METEOR_FLAME
@ EVENT_ACTIVATE_FIREWALL
@ EVENT_CHECK_CORPOREALITY
uint8 GetStackAmount() const
AuraApplication const * GetTargetApplication() const
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
uint64 GetCasterGUID() const
HookList< AuraDispelHandler > OnDispel
Unit * GetUnitOwner() const
InstanceScript *const instance
BossAI(Creature *creature, uint32 bossId)
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
virtual void JustSummoned(Creature *)
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
virtual void EnterEvadeMode()
CreatureScript(const char *name)
void SetRemovedCharges(uint8 amount)
GameObjectAI(GameObject *g)
GameObjectScript(const char *name)
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=NULL, uint32 duration=0, Unit *summoner=NULL, uint32 spellId=0, uint32 vehId=0)
static Creature * GetCreature(WorldObject const &u, uint64 guid)
static GameObject * GetGameObject(WorldObject const &u, uint64 guid)
static Unit * GetUnit(WorldObject const &, uint64 guid)
void RemoveFlag(uint16 index, uint32 oldFlag)
uint64 GetUInt64Value(uint16 index) const
WorldLocation const * GetExplTargetDest()
void SetExplTargetDest(WorldLocation &loc)
SpellInfo const * GetSpellInfo()
HookList< HitHandler > OnHit
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
HookList< EffectHandler > OnEffectHitTarget
WorldLocation * GetHitDest()
HookList< EffectHandler > OnEffectLaunch
SpellValue const * GetSpellValue()
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellScriptLoader(const char *name)
bool operator()(WorldObject *unit)
TwilightCutterSelector(Unit *caster, Unit *target)
virtual void SetData(uint32, uint32)
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)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Aura * AddAura(uint32 spellId, Unit *target)
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
Unit * GetPassenger(int8 seatId) const
Gets a passenger on specified seat.
InstanceScript * GetInstanceScript()
bool IsInBetween(WorldObject const *obj1, WorldObject const *obj2, float size=0) const
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
GameObjectAI * GetAI(GameObject *gameobject) const OVERRIDE
npc_combustion_consumption()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
npc_meteor_strike_initial()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
void HandleScript(SpellEffIndex effIndex)
bool Validate(SpellInfo const *) OVERRIDE
PrepareSpellScript(spell_halion_clear_debuffs_SpellScript)
spell_halion_clear_debuffs()
SpellScript * GetSpellScript() const OVERRIDE
void OnApply(AuraEffect const *, AuraEffectHandleModes)
spell_halion_combustion_consumption_AuraScript(uint32 spellID)
void AddMarkStack(AuraEffect const *)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_halion_combustion_consumption_AuraScript)
bool Validate(SpellInfo const *) OVERRIDE
spell_halion_combustion_consumption(char const *scriptName, uint32 spell)
AuraScript * GetAuraScript() const OVERRIDE
void HandleSummon(SpellEffIndex effIndex)
PrepareSpellScript(spell_halion_damage_aoe_summon_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
spell_halion_damage_aoe_summon()
void BeforeDispel(DispelInfo *dispelData)
We were purged. Force removed stacks to zero and trigger the appropriated remove handler.
bool Validate(SpellInfo const *) OVERRIDE
void OnRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
spell_halion_marks_AuraScript(uint32 summonSpell, uint32 removeSpell)
PrepareAuraScript(spell_halion_marks_AuraScript)
spell_halion_marks(char const *scriptName, uint32 summonSpell, uint32 removeSpell)
AuraScript * GetAuraScript() const OVERRIDE
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_halion_meteor_strike_marker_AuraScript)
spell_halion_meteor_strike_marker()
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_halion_summon_exit_portals_SpellScript)
void OnSummon(SpellEffIndex effIndex)
spell_halion_summon_exit_portals()
SpellScript * GetSpellScript() const OVERRIDE
void RemoveNotBetween(std::list< WorldObject * > &unitList)
PrepareSpellScript(spell_halion_twilight_cutter_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
spell_halion_twilight_cutter()
PrepareSpellScript(spell_halion_twilight_phasing_SpellScript)
spell_halion_twilight_phasing()
SpellScript * GetSpellScript() const OVERRIDE
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) OVERRIDE
PrepareAuraScript(spell_halion_twilight_realm_handlers_AuraScript)
spell_halion_twilight_realm_handlers_AuraScript(uint32 beforeHitSpell, bool isApplyHandler)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
spell_halion_twilight_realm_handlers(const char *scriptName, uint32 beforeHitSpell, bool isApplyHandler)
AuraScript * GetAuraScript() const OVERRIDE
@ NPC_METEOR_STRIKE_NORTH
@ NPC_METEOR_STRIKE_FLAME
@ WORLDSTATE_CORPOREALITY_TOGGLE
@ WORLDSTATE_CORPOREALITY_MATERIAL
@ WORLDSTATE_CORPOREALITY_TWILIGHT
CreatureAI * GetRubySanctumAI(Creature *creature)
@ DATA_TWILIGHT_FLAME_RING
@ DATA_ORB_ROTATION_FOCUS
uint32 materialRealmSpell
uint32 twilightRealmSpell
static float NormalizeOrientation(float o)
float GetPositionZ() const
float GetPositionX() const
void GetPosition(float &x, float &y) const
float GetPositionY() const
void RelocateOffset(Position const &offset)
void SetCombatMovement(bool allowMovement)
ScriptedAI(Creature *creature)
void JustDied(Unit *) OVERRIDE
boss_halionAI(Creature *creature)
void SetData(uint32 index, uint32 value) OVERRIDE
void EnterEvadeMode() OVERRIDE
void EnterCombat(Unit *who) OVERRIDE
void DamageTaken(Unit *attacker, uint32 &damage) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Position _meteorStrikePos
void ExecuteEvent(uint32 eventId) OVERRIDE
Position const * GetMeteorStrikePosition() const
void DamageTaken(Unit *attacker, uint32 &damage) OVERRIDE
void JustDied(Unit *killer) OVERRIDE
void ExecuteEvent(uint32 eventId) OVERRIDE
void EnterEvadeMode() OVERRIDE
void SpellHit(Unit *who, SpellInfo const *spell) OVERRIDE
void KilledUnit(Unit *victim) OVERRIDE
boss_twilight_halionAI(Creature *creature)
void EnterCombat(Unit *who) OVERRIDE
void ExecuteEvent(uint32 eventId) OVERRIDE
void JustReachedHome() OVERRIDE
void EnterCombat(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
generic_halionAI(Creature *creature, uint32 bossId)
void SetData(uint32 index, uint32 dataValue) OVERRIDE
void SpellHit(Unit *, SpellInfo const *spellInfo) OVERRIDE
go_twilight_portalAI(GameObject *gameobject)
bool GossipHello(Player *player) OVERRIDE
InstanceScript * _instance
void UpdateAI(uint32) OVERRIDE
npc_combustion_consumptionAI(Creature *creature)
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
void SetData(uint32 type, uint32 stackAmount) OVERRIDE
void IsSummonedBy(Unit *summoner) OVERRIDE
InstanceScript * _instance
void DoAction(int32 action) OVERRIDE
uint32 GetSpell(uint8 pctValue, bool isTwilight=false) const
uint32 _twilightDamageTaken
InstanceScript * _instance
void JustReachedHome() OVERRIDE
npc_halion_controllerAI(Creature *creature)
void EnterCombat(Unit *) OVERRIDE
uint32 _materialDamageTaken
void UpdateCorporeality()
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void JustSummoned(Creature *who) OVERRIDE
uint8 _materialCorporealityValue
void RemoveCorporeality(Creature *who, bool isTwilight=false)
void SetData(uint32 id, uint32 value) OVERRIDE
void JustDied(Unit *) OVERRIDE
void JustDied(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
void IsSummonedBy(Unit *) OVERRIDE
void EnterCombat(Unit *) OVERRIDE
npc_living_emberAI(Creature *creature)
npc_living_infernoAI(Creature *creature)
void IsSummonedBy(Unit *) OVERRIDE
void JustDied(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
npc_meteor_strikeAI(Creature *creature)
void IsSummonedBy(Unit *) OVERRIDE
InstanceScript * _instance
void DoAction(int32 action) OVERRIDE
void DoAction(int32 action) OVERRIDE
void EnterEvadeMode() OVERRIDE
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
std::list< Creature * > _meteorList
InstanceScript * _instance
npc_meteor_strike_initialAI(Creature *creature)
void IsSummonedBy(Unit *summoner) OVERRIDE
void DoAction(int32 action) OVERRIDE
npc_orb_carrierAI(Creature *creature)
void TriggerCutter(Unit *caster, Unit *target)
void UpdateAI(uint32) OVERRIDE
== Triggered Actions Requested ==================
InstanceScript * instance