AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
boss_razorscale Struct Reference
Inheritance diagram for boss_razorscale:
BossAI ScriptedAI CreatureAI UnitAI

Public Member Functions

 boss_razorscale (Creature *creature)
 
void InitializeAI () override
 
void Reset () override
 
void AttackStart (Unit *who) override
 
void JustEngagedWith (Unit *who) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void SpellHit (Unit *caster, SpellInfo const *spell) override
 
void DamageTaken (Unit *attacker, uint32 &damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void MovementInform (uint32 type, uint32 id) override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void MoveInLineOfSight (Unit *) override
 
void JustReachedHome () override
 
uint32 GetData (uint32 id) const override
 
void KilledUnit (Unit *victim) override
 
void EnterEvadeMode (EvadeReason why) override
 
- Public Member Functions inherited from BossAI
 BossAI (Creature *creature, uint32 bossId)
 
 ~BossAI () override
 
bool CanRespawn () override
 
void OnSpellCast (SpellInfo const *spell) override
 
void OnChannelFinished (SpellInfo const *spell) override
 
void OnSpellFailed (SpellInfo const *spell) override
 
void DamageTaken (Unit *attacker, uint32 &damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void JustSummoned (Creature *summon) override
 
void SummonedCreatureDespawn (Creature *summon) override
 
void SummonedCreatureDespawnAll () override
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void ScheduleHealthCheckEvent (uint32 healthPct, std::function< void()> exec, bool allowedWhileCasting=true)
 Executes a function once the creature reaches the defined health point percent.
 
void ScheduleHealthCheckEvent (std::initializer_list< uint8 > healthPct, std::function< void()> exec, bool allowedWhileCasting=true)
 
void ProcessHealthCheck ()
 
void ScheduleEnrageTimer (uint32 spellId, Milliseconds timer, uint8 textId=0)
 
virtual void ExecuteEvent (uint32)
 
virtual void ScheduleTasks ()
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER) override
 
void JustDied (Unit *) override
 
void JustReachedHome () override
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
 ~ScriptedAI () override
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask) override
 Called at any Damage from any attacker (before damage apply)
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
void JustDied (Unit *) override
 
void KilledUnit (Unit *) override
 
void JustSummoned (Creature *) override
 
void SummonedCreatureDespawn (Creature *) override
 
void SpellHit (Unit *, SpellInfo const *) override
 
void SpellHitTarget (Unit *, SpellInfo const *) override
 
void MovementInform (uint32, uint32) override
 
void OnPossess (bool)
 
bool IsInRoom (const Position *pos, Axis axis, bool above)
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void AttackStart (Unit *) override
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoRewardPlayersInArea ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void DoPlayMusic (uint32 soundId, bool zone)
 
void DoAddThreat (Unit *unit, float amount)
 
void DoModifyThreatByPercent (Unit *unit, int32 pct)
 
void DoResetThreat (Unit *unit)
 
void DoResetThreatList ()
 
float DoGetThreat (Unit *unit)
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
void DoTeleportPlayer (Unit *unit, Position pos)
 
void DoTeleportAll (float x, float y, float z, float o)
 
UnitDoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
PlayerGetPlayerAtMinimumRange (float minRange)
 
CreatureDoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
 
bool IsUniqueTimedEventDone (uint32 id) const
 
void SetUniqueTimedEventDone (uint32 id)
 
void ResetUniqueTimedEvent (uint32 id)
 
void ClearUniqueTimedEventsDone ()
 
void ScheduleTimedEvent (Milliseconds timerMin, Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleTimedEvent (Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0ms, uint32 uniqueId=0)
 
void ScheduleUniqueTimedEvent (Milliseconds timer, std::function< void()> exec, uint32 uniqueId)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, uint32 powerCostMin, uint32 powerCostMax, float rangeMin, float rangeMax, SelectEffect effect)
 
void SetEquipmentSlots (bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
 
virtual bool CheckEvadeIfOutOfCombatArea () const
 
bool IsHeroic () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
const T & DUNGEON_MODE (const T &normal5, const T &heroic10) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25, const T &heroic10, const T &heroic25) const
 
PlayerSelectTargetFromPlayerList (float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
 
void SetInvincibility (bool apply)
 
bool IsInvincible () const
 
void SetAutoAttackAllowed (bool allow)
 
bool IsAutoAttackAllowed () const
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
bool IsEngaged () const
 Check if creature is currently engaged in combat.
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
void JustEnteredCombat (Unit *who) override
 Called when the unit enters combat.
 
virtual void JustStartedThreateningMe (Unit *who)
 
void EngagementStart (Unit *who)
 
void EngagementOver ()
 
void JustExitedCombat () override
 Called when the unit leaves combat.
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
virtual void JustRespawned ()
 
virtual void PathEndReached (uint32)
 
virtual void WaypointPathStarted (uint32)
 == Waypoints system =============================
 
virtual void WaypointStarted (uint32, uint32)
 
virtual void WaypointReached (uint32, uint32)
 
virtual void WaypointPathEnded (uint32, uint32)
 
void OnCharmed (bool apply) override
 Called when unit is charmed.
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *attacker)
 
virtual void OwnerAttacked (Unit *target)
 
void OnOwnerCombatInteraction (Unit *target)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ==================
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields =======================================
 
virtual bool BeforeSpellClick (Unit *)
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual bool CanAlwaysBeDetectable (WorldObject const *)
 
virtual void PetStopAttack ()
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false, bool checkZ=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
virtual void CalculateThreat (Unit *, float &, SpellInfo const *)
 
virtual bool OnTeleportUnreacheablePlayer (Player *)
 
virtual void OnAuraRemove (AuraApplication *, AuraRemoveMode)
 
virtual void DistancingStarted ()
 
virtual void DistancingEnded ()
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void DoAction (int32)
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void EvadeTimerExpired ()
 Called when evade timer expires (target unreachable for too long)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage to any victim (before damage apply)
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal.
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates.
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals.
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations.
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast.
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true)
 Cast the spell on a random unit from the threat list.
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished.
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Public Attributes

ObjectGuid ExpeditionEngineerGUIDs [3]
 
ObjectGuid CommanderGUID
 
float cords [4][2]
 
bool bGroundPhase
 
bool startPath
 
uint8 flyTimes
 
- Public Attributes inherited from BossAI
float callForHelpRange
 
InstanceScript *const instance
 
- Public Attributes inherited from ScriptedAI
Creatureme
 

Additional Inherited Members

- Public Types inherited from ScriptedAI
enum class  Axis {
  AXIS_X ,
  AXIS_Y
}
 
- Public Types inherited from CreatureAI
enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES ,
  EVADE_REASON_BOUNDARY ,
  EVADE_REASON_SEQUENCE_BREAK ,
  EVADE_REASON_NO_PATH ,
  EVADE_REASON_OTHER
}
 
- Static Public Member Functions inherited from CreatureAI
static bool IsInBounds (CreatureBoundary const &boundary, Position const *who)
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoTypeAISpellInfo
 
- Protected Member Functions inherited from BossAI
void _Reset ()
 
void _JustEngagedWith ()
 
void _JustDied ()
 
void _JustReachedHome ()
 
void _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
void TeleportCheaters ()
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
CreatureDoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from BossAI
SummonList summons
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
EventMap events
 
TaskScheduler scheduler
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
bool _isEngaged
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ boss_razorscale()

boss_razorscale::boss_razorscale ( Creature creature)
inline
139 : BossAI(creature, BOSS_RAZORSCALE)
140 {
141 startPath = true;
142 }
Definition ScriptedCreature.h:485
bool startPath
Definition boss_razorscale.cpp:148
@ BOSS_RAZORSCALE
Definition ulduar.h:33

References startPath.

Member Function Documentation

◆ AttackStart()

void boss_razorscale::AttackStart ( Unit who)
inlineoverridevirtual

Reimplemented from UnitAI.

177 {
178 if (who && me->Attack(who, true) && bGroundPhase)
180 }
void MoveChase(Unit *target, std::optional< ChaseRange > dist={}, std::optional< ChaseAngle > angle={})
Force the unit to chase this target. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:315
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
bool Attack(Unit *victim, bool meleeAttack)
Definition Unit.cpp:7272
Creature * me
Definition ScriptedCreature.h:281
bool bGroundPhase
Definition boss_razorscale.cpp:147

References Unit::Attack(), bGroundPhase, Unit::GetMotionMaster(), ScriptedAI::me, and MotionMaster::MoveChase().

Referenced by UpdateAI().

◆ DamageTaken()

void boss_razorscale::DamageTaken ( Unit ,
uint32 ,
DamageEffectType  ,
SpellSchoolMask   
)
inlineoverridevirtual

Called at any Damage from any attacker (before damage apply)

Note
It use for recalculation damage or special reaction at damage for attack reaction use AttackedBy called for non DOT damage in Unit::DealDamage also

Reimplemented from UnitAI.

252 {
253 if (me->GetPositionZ() > 440.0f) // protection, razorscale is attackable (so harpoons can hit him, etc.), but should not receive dmg while in air
254 damage = 0;
255 else if (!bGroundPhase && ((me->GetHealth() * 100) / me->GetMaxHealth() < 50) && me->HasAura(62794)) // already below 50%, but still in chains and stunned
256 events.RescheduleEvent(EVENT_WARN_DEEP_BREATH, 0ms);
257
258 BossAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask);
259 }
@ EVENT_WARN_DEEP_BREATH
Definition boss_razorscale.cpp:93
events
Definition boss_sartura.cpp:43
void DamageTaken(Unit *attacker, uint32 &damage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override
Called at any Damage from any attacker (before damage apply)
Definition ScriptedCreature.cpp:805
uint32 GetMaxHealth() const
Definition Unit.h:1109
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
Definition Unit.cpp:5982
uint32 GetHealth() const
Definition Unit.h:1108
float GetPositionZ() const
Definition Position.h:123

References bGroundPhase, BossAI::DamageTaken(), EVENT_WARN_DEEP_BREATH, Unit::GetHealth(), Unit::GetMaxHealth(), Position::GetPositionZ(), Unit::HasAura(), and ScriptedAI::me.

◆ EnterEvadeMode()

void boss_razorscale::EnterEvadeMode ( EvadeReason  why)
inlineoverridevirtual

Reimplemented from CreatureAI.

554 {
555 me->SetDisableGravity(true);
557 me->DisableRotate(false);
559 }
@ UNIT_STATE_ROOT
Definition UnitDefines.h:183
void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER) override
Definition ScriptedCreature.h:526
void DisableRotate(bool apply)
Definition Unit.cpp:14498
void SetControlled(bool apply, UnitState state, Unit *source=nullptr, bool isFear=false)
Definition Unit.cpp:14268
void SetDisableGravity(bool disable)
Definition Unit.cpp:16462

References Unit::DisableRotate(), BossAI::EnterEvadeMode(), ScriptedAI::me, Unit::SetControlled(), Unit::SetDisableGravity(), and UNIT_STATE_ROOT.

◆ GetData()

uint32 boss_razorscale::GetData ( uint32  id) const
inlineoverridevirtual

Reimplemented from UnitAI.

540 {
541 if (id == 1)
542 return (flyTimes <= 1 ? 1 : 0);
543 return 0;
544 }
uint8 flyTimes
Definition boss_razorscale.cpp:149

References flyTimes.

◆ InitializeAI()

void boss_razorscale::InitializeAI ( )
inlineoverridevirtual

Reimplemented from UnitAI.

152 {
153 me->SetDisableGravity(true);
154 me->setActive(true);
155 Reset();
156 }
void setActive(bool isActiveObject)
Definition Object.cpp:1082
void Reset() override
Definition boss_razorscale.cpp:158

References ScriptedAI::me, Reset(), WorldObject::setActive(), and Unit::SetDisableGravity().

◆ JustEngagedWith()

void boss_razorscale::JustEngagedWith ( Unit )
inlineoverridevirtual

Called for reaction when initially engaged - this happens after JustEnteredCombat.

Reimplemented from CreatureAI.

183 {
184 me->SetImmuneToPC(false);
186 events.ScheduleEvent(EVENT_COMMANDER_SAY_AGGRO, 5s);
187 events.ScheduleEvent(EVENT_EE_SAY_MOVE_OUT, 10s);
188 events.ScheduleEvent(EVENT_ENRAGE, 10min);
189 events.ScheduleEvent(EVENT_SPELL_FIREBALL, 6s);
190 events.ScheduleEvent(EVENT_SPELL_DEVOURING_FLAME, 13s);
191 events.ScheduleEvent(EVENT_SUMMON_MOLE_MACHINES, 11s);
192
193 std::list<Creature*> eeList;
195 uint8 i = 0;
196 for( std::list<Creature*>::iterator itr = eeList.begin(); itr != eeList.end(); ++itr )
197 {
198 if (i > 2)
199 break;
200 ExpeditionEngineerGUIDs[i] = (*itr)->GetGUID();
201 if (!i)
202 (*itr)->AI()->Talk(SAY_EE_AGGRO);
203 ++i;
204 }
206 CommanderGUID = c->GetGUID();
207 }
std::uint8_t uint8
Definition Define.h:109
@ EVENT_SPELL_FIREBALL
Definition boss_razorscale.cpp:89
@ EVENT_COMMANDER_SAY_AGGRO
Definition boss_razorscale.cpp:86
@ EVENT_ENRAGE
Definition boss_razorscale.cpp:88
@ EVENT_SUMMON_MOLE_MACHINES
Definition boss_razorscale.cpp:91
@ EVENT_SPELL_DEVOURING_FLAME
Definition boss_razorscale.cpp:90
@ EVENT_EE_SAY_MOVE_OUT
Definition boss_razorscale.cpp:87
@ NPC_EXPEDITION_COMMANDER
Definition boss_razorscale.cpp:69
@ NPC_EXPEDITION_ENGINEER
Definition boss_razorscale.cpp:68
@ SAY_EE_AGGRO
Definition boss_razorscale.cpp:116
void JustEngagedWith(Unit *) override
Called for reaction when initially engaged - this happens after JustEnteredCombat.
Definition ScriptedCreature.h:525
Definition Creature.h:47
void SetImmuneToPC(bool apply, bool keepCombat=false)
Definition Unit.cpp:10597
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2499
void GetCreaturesWithEntryInRange(std::list< Creature * > &creatureList, float radius, uint32 entry)
Definition Object.cpp:3061
ObjectGuid ExpeditionEngineerGUIDs[3]
Definition boss_razorscale.cpp:144
ObjectGuid CommanderGUID
Definition boss_razorscale.cpp:145

References CommanderGUID, EVENT_COMMANDER_SAY_AGGRO, EVENT_EE_SAY_MOVE_OUT, EVENT_ENRAGE, EVENT_SPELL_DEVOURING_FLAME, EVENT_SPELL_FIREBALL, EVENT_SUMMON_MOLE_MACHINES, ExpeditionEngineerGUIDs, WorldObject::FindNearestCreature(), WorldObject::GetCreaturesWithEntryInRange(), BossAI::JustEngagedWith(), ScriptedAI::me, NPC_EXPEDITION_COMMANDER, NPC_EXPEDITION_ENGINEER, SAY_EE_AGGRO, and Unit::SetImmuneToPC().

◆ JustReachedHome()

void boss_razorscale::JustReachedHome ( )
inlineoverridevirtual

Reimplemented from CreatureAI.

534 {
536 startPath = true;
537 }
void _JustReachedHome()
Definition ScriptedCreature.h:534

References BossAI::_JustReachedHome(), and startPath.

◆ KilledUnit()

void boss_razorscale::KilledUnit ( Unit victim)
inlineoverridevirtual

Reimplemented from CreatureAI.

547 {
548 if (victim && victim->GetEntry() == NPC_DARK_RUNE_GUARDIAN)
549 if (instance)
551 }
@ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE
Definition DBCEnums.h:122
@ NPC_DARK_RUNE_GUARDIAN
Definition boss_razorscale.cpp:66
InstanceScript *const instance
Definition ScriptedCreature.h:492
void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition InstanceScript.cpp:661
uint32 GetEntry() const
Definition Object.h:117

References ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, InstanceScript::DoUpdateAchievementCriteria(), Object::GetEntry(), BossAI::instance, ScriptedAI::me, and NPC_DARK_RUNE_GUARDIAN.

◆ MoveInLineOfSight()

void boss_razorscale::MoveInLineOfSight ( Unit )
inlineoverridevirtual

Reimplemented from CreatureAI.

531{}

◆ MovementInform()

void boss_razorscale::MovementInform ( uint32  type,
uint32  id 
)
inlineoverridevirtual

Reimplemented from CreatureAI.

262 {
263 if (type == POINT_MOTION_TYPE && id == POINT_RAZORSCALE_INIT)
264 {
265 me->SetFacingTo(1.6f);
266 return;
267 }
268 else if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized() && !me->IsInCombat())
269 {
270 startPath = true;
271 return;
272 }
273
274 if (type != EFFECT_MOTION_TYPE)
275 return;
276 if (id == 0) // landed
277 {
279 me->DisableRotate(true);
280 me->SetOrientation((float)(M_PI + 0.01) / 2);
281 me->SetFacingTo(M_PI / 2);
282 me->SetDisableGravity(false);
283 me->CastSpell(me, 62794, true);
284 events.ScheduleEvent(EVENT_WARN_DEEP_BREATH, 30s);
285 }
286 else if (id == 1) // flied up
287 {
288 events.ScheduleEvent(EVENT_SPELL_FIREBALL, 2s);
289 events.ScheduleEvent(EVENT_SPELL_DEVOURING_FLAME, 4s);
290 events.ScheduleEvent(EVENT_SUMMON_MOLE_MACHINES, 5s);
291 }
292 }
@ ESCORT_MOTION_TYPE
Definition MotionMaster.h:57
@ POINT_MOTION_TYPE
Definition MotionMaster.h:48
@ EFFECT_MOTION_TYPE
Definition MotionMaster.h:56
@ POINT_RAZORSCALE_INIT
Definition boss_razorscale.cpp:126
bool Finalized() const
Definition MoveSpline.h:118
void SetFacingTo(float ori)
Definition Unit.cpp:16411
Movement::MoveSpline * movespline
Definition Unit.h:2114
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
bool IsInCombat() const
Definition Unit.h:935
void SetOrientation(float orientation)
Definition Position.h:116

References Unit::CastSpell(), Unit::DisableRotate(), EFFECT_MOTION_TYPE, ESCORT_MOTION_TYPE, EVENT_SPELL_DEVOURING_FLAME, EVENT_SPELL_FIREBALL, EVENT_SUMMON_MOLE_MACHINES, EVENT_WARN_DEEP_BREATH, Movement::MoveSpline::Finalized(), Unit::IsInCombat(), ScriptedAI::me, Unit::movespline, POINT_MOTION_TYPE, POINT_RAZORSCALE_INIT, Unit::SetControlled(), Unit::SetDisableGravity(), Unit::SetFacingTo(), Position::SetOrientation(), startPath, and UNIT_STATE_ROOT.

◆ Reset()

void boss_razorscale::Reset ( )
inlineoverridevirtual

Reimplemented from UnitAI.

159 {
160 _Reset();
161
162 for (uint8 i = 0; i < 3; ++i)
163 ExpeditionEngineerGUIDs[i].Clear();
164
165 // Show gossip icon if previously hidden
167 if (!commander->HasNpcFlag(UNIT_NPC_FLAG_GOSSIP))
168 commander->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
169
171 bGroundPhase = false;
172 flyTimes = 0;
174 }
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
void _Reset()
Definition ScriptedCreature.cpp:644
void Clear()
Definition ObjectGuid.h:138
void SetAnimTier(AnimTier animTier)
Definition Unit.cpp:11889
Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:210

References BossAI::_Reset(), bGroundPhase, ObjectGuid::Clear(), CommanderGUID, ExpeditionEngineerGUIDs, Fly, flyTimes, ObjectAccessor::GetCreature(), ScriptedAI::me, Unit::SetAnimTier(), and UNIT_NPC_FLAG_GOSSIP.

Referenced by InitializeAI().

◆ SpellHit()

void boss_razorscale::SpellHit ( Unit caster,
SpellInfo const *  spell 
)
inlineoverridevirtual

Reimplemented from CreatureAI.

210 {
211 if (!caster)
212 return;
213
214 switch (spell->Id)
215 {
216 case SPELL_CHAIN_1:
217 case SPELL_CHAIN_2:
218 case SPELL_CHAIN_3:
219 case SPELL_CHAIN_4:
220 {
221 uint8 count = 0;
223 count++;
225 count++;
226 if (RAID_MODE(0, 1))
227 {
229 count++;
231 count++;
232 }
233 if (count >= REQ_CHAIN_COUNT)
234 {
236 commander->AI()->Talk(SAY_COMMANDER_GROUND_PHASE);
237
239 events.CancelEvent(EVENT_SPELL_FIREBALL);
242 me->SetTarget();
245 }
246 }
247 break;
248 }
249 }
const Position CORDS_GROUND
Definition boss_razorscale.cpp:134
@ SPELL_CHAIN_2
Definition boss_razorscale.cpp:44
@ SPELL_CHAIN_3
Definition boss_razorscale.cpp:45
@ SPELL_CHAIN_1
Definition boss_razorscale.cpp:43
@ SPELL_CHAIN_4
Definition boss_razorscale.cpp:46
@ SAY_COMMANDER_GROUND_PHASE
Definition boss_razorscale.cpp:112
#define REQ_CHAIN_COUNT
Definition boss_razorscale.cpp:61
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition Creature.cpp:3464
void MoveLand(uint32 id, Position const &pos, float speed=0.0f)
Use to move the unit from the air to the ground. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:553
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true, bool bySelf=false)
Definition Unit.cpp:4302
Unit * GetVictim() const
Definition Unit.h:903
void SendMeleeAttackStop(Unit *victim=nullptr)
Send to the client SMSG_ATTACKSTOP but doesn't clear UNIT_STATE_MELEE_ATTACKING on server side or int...
Definition Unit.cpp:3236
const T & RAID_MODE(const T &normal10, const T &normal25) const
Definition ScriptedCreature.h:408

References CommanderGUID, CORDS_GROUND, EVENT_SPELL_DEVOURING_FLAME, EVENT_SPELL_FIREBALL, EVENT_SUMMON_MOLE_MACHINES, ObjectAccessor::GetCreature(), Unit::GetMotionMaster(), Unit::GetVictim(), Unit::HasAura(), SpellInfo::Id, Unit::InterruptNonMeleeSpells(), ScriptedAI::me, MotionMaster::MoveLand(), ScriptedAI::RAID_MODE(), REQ_CHAIN_COUNT, SAY_COMMANDER_GROUND_PHASE, Unit::SendMeleeAttackStop(), Creature::SetTarget(), SPELL_CHAIN_1, SPELL_CHAIN_2, SPELL_CHAIN_3, and SPELL_CHAIN_4.

◆ UpdateAI()

void boss_razorscale::UpdateAI ( uint32  )
inlineoverridevirtual

Use to start attacking a target. Called just before JustEngagedWith()

Implements UnitAI.

295 {
296 if (startPath)
297 {
298 me->StopMoving();
299 startPath = false;
301 }
302
303 if (!UpdateVictim())
304 return;
305
306 events.Update(diff);
307
309 return;
310
311 switch (events.ExecuteEvent())
312 {
313 case 0:
314 break;
315 case EVENT_ENRAGE:
317 me->CastSpell(me, SPELL_BERSERK, true);
318 break;
321 commander->AI()->Talk(SAY_COMMANDER_AGGRO);
322 break;
324 for (uint8 i = 0; i < 3; ++i)
326 {
327 if (!i)
328 c->AI()->Talk(SAY_EE_START_REPAIR);
329 c->AI()->SetData(1, 0); // start repairing
330 }
331 break;
333 if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 200.0f, true))
334 me->CastSpell(pTarget, SPELL_FIREBALL, false);
335 events.Repeat(4s);
336 break;
338 if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 200.0f, true))
339 me->CastSpell(pTarget, SPELL_DEVOURINGFLAME, false);
340 events.Repeat(13s);
341 break;
343 {
344 memset(cords, '\0', sizeof(cords));
345 uint8 num = RAID_MODE( urand(2, 3), urand(2, 4));
346 for( int i = 0; i < num; ++i )
347 {
348 // X: (550, 625) Y: (-185, -230)
349 cords[i][0] = urand(550, 625);
350 cords[i][1] = -230 + rand() % 45;
351 if (GameObject* drill = me->SummonGameObject(GO_DRILL, cords[i][0], cords[i][1], 391.1f, M_PI / 4, 0.0f, 0.0f, 0.0f, 0.0f, 8))
352 {
353 //drill->SetGoAnimProgress(0);
354 //drill->SetLootState(GO_READY);
355 //drill->UseDoorOrButton(8);
356 //drill->SetGoState(GO_STATE_READY);
357 drill->SetGoState(GO_STATE_ACTIVE);
358 drill->SetGoAnimProgress(0);
359 }
360 }
361 events.Repeat(45s);
362 events.RescheduleEvent(EVENT_SUMMON_ADDS, 4s);
363 }
364 break;
366 for( int i = 0; i < 4; ++i )
367 {
368 if (!cords[i][0])
369 break;
370
371 uint8 opt;
372 uint8 r = urand(1, 100);
373 if (r <= 30) opt = 1;
374 else if (r <= 65) opt = 2;
375 else opt = 3;
376
377 for( int j = 0; j < 4; ++j )
378 {
379 float x = cords[i][0] + 4.0f * cos(j * M_PI / 2);
380 float y = cords[i][1] + 4.0f * std::sin(j * M_PI / 2);
381
382 uint32 npc_entry = 0;
383 switch (opt)
384 {
385 case 1:
386 if (j == 1) npc_entry = NPC_DARK_RUNE_SENTINEL;
387 break;
388 case 2:
389 switch (j)
390 {
391 case 1:
392 npc_entry = NPC_DARK_RUNE_WATCHER;
393 break;
394 case 2:
395 npc_entry = NPC_DARK_RUNE_GUARDIAN;
396 break;
397 }
398 break;
399 default: // case 3:
400 switch (j)
401 {
402 case 1:
403 npc_entry = NPC_DARK_RUNE_WATCHER;
404 break;
405 case 2:
406 npc_entry = NPC_DARK_RUNE_GUARDIAN;
407 break;
408 case 3:
409 npc_entry = NPC_DARK_RUNE_GUARDIAN;
410 break;
411 }
412 break;
413 }
414
415 if (npc_entry)
416 if (Creature* c = me->SummonCreature(npc_entry, x, y, 391.1f, j * M_PI / 2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
418 }
419 }
420 break;
423 me->RemoveAura(62794);
424 events.ScheduleEvent(EVENT_PHASE2_FLAME_BREATH, 2500ms);
425 break;
428 events.ScheduleEvent(EVENT_FLY_UP, 2s);
429 break;
430 case EVENT_FLY_UP:
431 {
432 me->SetInCombatWithZone(); // just in case
433 std::list<Creature*> hfsList;
435 for (Creature* hfs : hfsList)
436 {
437 me->SummonCreature(34188, hfs->GetPositionX(), hfs->GetPositionY(), hfs->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 22000);
438 hfs->AI()->SetData(1, 0);
439 }
440
443 if (RAID_MODE(0, 1))
444 {
447 }
449
450 if ((me->GetHealth() * 100) / me->GetMaxHealth() < 50 ) // start phase 3
451 {
454 me->DisableRotate(false);
456 Unit* target = SelectTarget(SelectTargetMethod::MaxDistance, 0, 0.0, true);
457 if (!target)
458 target = me->SelectNearestPlayer(200.0f);
459 if (target)
460 {
461 AttackStart(target);
462 me->GetMotionMaster()->MoveChase(target);
463 }
464 bGroundPhase = true;
465 events.CancelEvent(EVENT_SPELL_FIREBALL);
468
469 events.ScheduleEvent(EVENT_SPELL_FLAME_BREATH, 20s);
471 events.ScheduleEvent(EVENT_SPELL_FUSE_ARMOR, 10s);
472 events.ScheduleEvent(EVENT_SPELL_FLAME_BUFFET, 3s);
473
474 break;
475 }
476 else
477 {
478 ++flyTimes;
480 me->DisableRotate(false);
483 me->StopMoving();
484 me->SetDisableGravity(true);
486 events.ScheduleEvent(EVENT_RESUME_FIXING, 22s);
487 }
488
489 break;
490 }
492 for (uint8 i = 0; i < 3; ++i)
494 {
495 if (!i)
496 c->AI()->Talk(SAY_EE_REBUILD_TURRETS);
497 c->AI()->SetData(1, 0); // start repairing
498 }
499 break;
502 events.Repeat(20s);
503 break;
506 events.Repeat(13s);
507 break;
509 if (Unit* victim = me->GetVictim())
510 if (me->IsWithinMeleeRange(victim))
511 {
512 me->CastSpell(victim, SPELL_FUSEARMOR, false);
513 if (Aura* aur = victim->GetAura(SPELL_FUSEARMOR))
514 if (aur->GetStackAmount() == 5)
515 victim->CastSpell(victim, SPELL_FUSED_ARMOR, true);
516 events.Repeat(10s);
517 break;
518 }
519 events.Repeat(2s);
520 break;
523 events.Repeat(7s);
524 break;
525 }
526
527 if (bGroundPhase)
529 }
std::uint32_t uint32
Definition Define.h:107
@ GO_STATE_ACTIVE
Definition GameObjectData.h:708
@ FORCED_MOVEMENT_NONE
Definition MotionMaster.h:86
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
Definition Object.h:54
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ UNIT_STATE_CASTING
Definition UnitDefines.h:188
@ GO_DRILL
Definition boss_razorscale.cpp:75
@ EVENT_SPELL_FLAME_BREATH
Definition boss_razorscale.cpp:97
@ EVENT_FLY_UP
Definition boss_razorscale.cpp:95
@ EVENT_PHASE2_FLAME_BREATH
Definition boss_razorscale.cpp:94
@ EVENT_SPELL_FLAME_BUFFET
Definition boss_razorscale.cpp:100
@ EVENT_SPELL_DEVOURING_FLAME_GROUND
Definition boss_razorscale.cpp:98
@ EVENT_SUMMON_ADDS
Definition boss_razorscale.cpp:92
@ EVENT_RESUME_FIXING
Definition boss_razorscale.cpp:96
@ EVENT_SPELL_FUSE_ARMOR
Definition boss_razorscale.cpp:99
const Position CORDS_AIR
Definition boss_razorscale.cpp:135
@ SPELL_DEVOURINGFLAME
Definition boss_razorscale.cpp:39
@ SPELL_FUSEARMOR
Definition boss_razorscale.cpp:37
@ SPELL_FLAMEBREATH
Definition boss_razorscale.cpp:36
@ SPELL_FIREBALL
Definition boss_razorscale.cpp:34
@ SPELL_FLAMEBUFFET
Definition boss_razorscale.cpp:33
@ SPELL_FUSED_ARMOR
Definition boss_razorscale.cpp:38
@ SPELL_BERSERK
Definition boss_razorscale.cpp:40
@ SPELL_WINGBUFFET
Definition boss_razorscale.cpp:35
@ NPC_DARK_RUNE_SENTINEL
Definition boss_razorscale.cpp:65
@ NPC_DARK_RUNE_WATCHER
Definition boss_razorscale.cpp:67
@ EMOTE_PERMA_GROUND
Definition boss_razorscale.cpp:106
@ SAY_COMMANDER_AGGRO
Definition boss_razorscale.cpp:111
@ SAY_EE_REBUILD_TURRETS
Definition boss_razorscale.cpp:118
@ EMOTE_BREATH
Definition boss_razorscale.cpp:107
@ SAY_EE_START_REPAIR
Definition boss_razorscale.cpp:117
@ EMOTE_BERSERK
Definition boss_razorscale.cpp:108
Definition SpellAuras.h:87
bool UpdateVictim()
Definition CreatureAI.cpp:353
void DoZoneInCombat(Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
Definition CreatureAI.cpp:117
void SetInCombatWithZone()
Set in combat all units in the dungeon/raid. Affect only units with IsAIEnabled.
Definition Creature.cpp:2789
uint32 GetWaypointPath() const
Definition Creature.h:355
CreatureAI * AI() const
Definition Creature.h:143
Definition GameObject.h:120
void MoveTakeoff(uint32 id, Position const &pos, float speed=0.0f, bool skipAnimation=false)
Use to move the unit from the ground to the air. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:588
void MoveIdle()
Definition MotionMaster.cpp:234
void MovePath(uint32 path_id, ForcedMovement forcedMovement=FORCED_MOVEMENT_NONE, PathSource pathSource=PathSource::WAYPOINT_MGR)
Definition MotionMaster.cpp:519
virtual void SetData(uint32, uint32)
Definition UnitAI.h:219
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:40
Unit * SelectTarget(SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition UnitAI.cpp:111
Definition Unit.h:664
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5024
void StopMoving()
Definition Unit.cpp:12997
bool IsWithinMeleeRange(Unit const *obj, float dist=0.f) const
Definition Unit.cpp:782
bool HasUnitState(const uint32 f) const
Definition Unit.h:736
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2394
Player * SelectNearestPlayer(float distance=0) const
Definition Object.cpp:2526
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Definition Object.cpp:2408
Talk
Definition hyjal.cpp:82
void DoResetThreatList()
Definition ScriptedCreature.cpp:473
void AttackStart(Unit *who) override
Definition boss_razorscale.cpp:176
float cords[4][2]
Definition boss_razorscale.cpp:146
@ NPC_HARPOON_FIRE_STATE
Definition ulduar.h:177

References Creature::AI(), AttackStart(), bGroundPhase, Unit::CastSpell(), CommanderGUID, cords, CORDS_AIR, Unit::DisableRotate(), UnitAI::DoMeleeAttackIfReady(), ScriptedAI::DoResetThreatList(), CreatureAI::DoZoneInCombat(), EMOTE_BERSERK, EMOTE_BREATH, EMOTE_PERMA_GROUND, EVENT_COMMANDER_SAY_AGGRO, EVENT_EE_SAY_MOVE_OUT, EVENT_ENRAGE, EVENT_FLY_UP, EVENT_PHASE2_FLAME_BREATH, EVENT_RESUME_FIXING, EVENT_SPELL_DEVOURING_FLAME, EVENT_SPELL_DEVOURING_FLAME_GROUND, EVENT_SPELL_FIREBALL, EVENT_SPELL_FLAME_BREATH, EVENT_SPELL_FLAME_BUFFET, EVENT_SPELL_FUSE_ARMOR, EVENT_SUMMON_ADDS, EVENT_SUMMON_MOLE_MACHINES, EVENT_WARN_DEEP_BREATH, ExpeditionEngineerGUIDs, flyTimes, FORCED_MOVEMENT_NONE, ObjectAccessor::GetCreature(), WorldObject::GetCreaturesWithEntryInRange(), Unit::GetHealth(), Unit::GetMaxHealth(), Unit::GetMotionMaster(), Unit::GetVictim(), Creature::GetWaypointPath(), GO_DRILL, GO_STATE_ACTIVE, Unit::HasUnitState(), Unit::IsWithinMeleeRange(), MaxDistance, ScriptedAI::me, MotionMaster::MoveChase(), MotionMaster::MoveIdle(), MotionMaster::MovePath(), MotionMaster::MoveTakeoff(), NPC_DARK_RUNE_GUARDIAN, NPC_DARK_RUNE_SENTINEL, NPC_DARK_RUNE_WATCHER, NPC_HARPOON_FIRE_STATE, ScriptedAI::RAID_MODE(), Random, Unit::RemoveAura(), SAY_COMMANDER_AGGRO, SAY_EE_REBUILD_TURRETS, SAY_EE_START_REPAIR, WorldObject::SelectNearestPlayer(), UnitAI::SelectTarget(), Unit::SendMeleeAttackStop(), Unit::SetControlled(), UnitAI::SetData(), Unit::SetDisableGravity(), Creature::SetInCombatWithZone(), SPELL_BERSERK, SPELL_CHAIN_1, SPELL_CHAIN_2, SPELL_CHAIN_3, SPELL_CHAIN_4, SPELL_DEVOURINGFLAME, SPELL_FIREBALL, SPELL_FLAMEBREATH, SPELL_FLAMEBUFFET, SPELL_FUSEARMOR, SPELL_FUSED_ARMOR, SPELL_WINGBUFFET, startPath, Unit::StopMoving(), WorldObject::SummonCreature(), WorldObject::SummonGameObject(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, UNIT_STATE_CASTING, UNIT_STATE_ROOT, CreatureAI::UpdateVictim(), urand(), and WAYPOINT_MGR.

Member Data Documentation

◆ bGroundPhase

bool boss_razorscale::bGroundPhase

◆ CommanderGUID

ObjectGuid boss_razorscale::CommanderGUID

◆ cords

float boss_razorscale::cords[4][2]

Referenced by UpdateAI().

◆ ExpeditionEngineerGUIDs

ObjectGuid boss_razorscale::ExpeditionEngineerGUIDs[3]

Referenced by JustEngagedWith(), Reset(), and UpdateAI().

◆ flyTimes

uint8 boss_razorscale::flyTimes

Referenced by GetData(), Reset(), and UpdateAI().

◆ startPath

bool boss_razorscale::startPath

The documentation for this struct was generated from the following file: