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
 
virtual bool IsEscortNPC (bool=true) 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.

178 {
179 if (who && me->Attack(who, true) && bGroundPhase)
181 }
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:1759
bool Attack(Unit *victim, bool meleeAttack)
Definition Unit.cpp:7289
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.

253 {
254 if (me->GetPositionZ() > 440.0f) // protection, razorscale is attackable (so harpoons can hit him, etc.), but should not receive dmg while in air
255 damage = 0;
256 else if (!bGroundPhase && ((me->GetHealth() * 100) / me->GetMaxHealth() < 50) && me->HasAura(62794)) // already below 50%, but still in chains and stunned
257 events.RescheduleEvent(EVENT_WARN_DEEP_BREATH, 0ms);
258
259 BossAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask);
260 }
@ 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:5999
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.

555 {
556 me->SetDisableGravity(true);
558 me->DisableRotate(false);
560 }
@ 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:14524
void SetControlled(bool apply, UnitState state, Unit *source=nullptr, bool isFear=false)
Definition Unit.cpp:14294
void SetDisableGravity(bool disable)
Definition Unit.cpp:16497

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.

541 {
542 if (id == 1)
543 return (flyTimes <= 1 ? 1 : 0);
544 return 0;
545 }
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.

184 {
185 me->SetImmuneToPC(false);
187 events.ScheduleEvent(EVENT_COMMANDER_SAY_AGGRO, 5s);
188 events.ScheduleEvent(EVENT_EE_SAY_MOVE_OUT, 10s);
189 events.ScheduleEvent(EVENT_ENRAGE, 10min);
190 events.ScheduleEvent(EVENT_SPELL_FIREBALL, 6s);
191 events.ScheduleEvent(EVENT_SPELL_DEVOURING_FLAME, 13s);
192 events.ScheduleEvent(EVENT_SUMMON_MOLE_MACHINES, 11s);
193
194 std::list<Creature*> eeList;
196 uint8 i = 0;
197 for( std::list<Creature*>::iterator itr = eeList.begin(); itr != eeList.end(); ++itr )
198 {
199 if (i > 2)
200 break;
201 ExpeditionEngineerGUIDs[i] = (*itr)->GetGUID();
202 if (!i)
203 (*itr)->AI()->Talk(SAY_EE_AGGRO);
204 ++i;
205 }
207 CommanderGUID = c->GetGUID();
208 }
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:10623
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2498
void GetCreaturesWithEntryInRange(std::list< Creature * > &creatureList, float radius, uint32 entry)
Definition Object.cpp:3060
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.

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

References BossAI::_JustReachedHome(), and startPath.

◆ KilledUnit()

void boss_razorscale::KilledUnit ( Unit victim)
inlineoverridevirtual

Reimplemented from CreatureAI.

548 {
549 if (victim && victim->GetEntry() == NPC_DARK_RUNE_GUARDIAN)
550 if (instance)
552 }
@ 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:667
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.

532{}

◆ MovementInform()

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

Reimplemented from CreatureAI.

263 {
264 if (type == POINT_MOTION_TYPE && id == POINT_RAZORSCALE_INIT)
265 {
266 me->SetFacingTo(1.6f);
267 return;
268 }
269 else if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized() && !me->IsInCombat())
270 {
271 startPath = true;
272 return;
273 }
274
275 if (type != EFFECT_MOTION_TYPE)
276 return;
277 if (id == 0) // landed
278 {
280 me->DisableRotate(true);
281 me->SetOrientation((float)(M_PI + 0.01) / 2);
282 me->SetFacingTo(M_PI / 2);
283 me->SetDisableGravity(false);
284 me->CastSpell(me, 62794, true);
285 events.ScheduleEvent(EVENT_WARN_DEEP_BREATH, 30s);
286 }
287 else if (id == 1) // flied up
288 {
289 events.ScheduleEvent(EVENT_SPELL_FIREBALL, 2s);
290 events.ScheduleEvent(EVENT_SPELL_DEVOURING_FLAME, 4s);
291 events.ScheduleEvent(EVENT_SUMMON_MOLE_MACHINES, 5s);
292 }
293 }
@ 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:16446
Movement::MoveSpline * movespline
Definition Unit.h:2115
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:1375
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;
173 me->SetImmuneToPC(true);
175 }
@ 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:11915
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(), Unit::SetImmuneToPC(), and UNIT_NPC_FLAG_GOSSIP.

Referenced by InitializeAI().

◆ SpellHit()

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

Reimplemented from CreatureAI.

211 {
212 if (!caster)
213 return;
214
215 switch (spell->Id)
216 {
217 case SPELL_CHAIN_1:
218 case SPELL_CHAIN_2:
219 case SPELL_CHAIN_3:
220 case SPELL_CHAIN_4:
221 {
222 uint8 count = 0;
224 count++;
226 count++;
227 if (RAID_MODE(0, 1))
228 {
230 count++;
232 count++;
233 }
234 if (count >= REQ_CHAIN_COUNT)
235 {
237 commander->AI()->Talk(SAY_COMMANDER_GROUND_PHASE);
238
240 events.CancelEvent(EVENT_SPELL_FIREBALL);
243 me->SetTarget();
246 }
247 }
248 break;
249 }
250 }
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:3540
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:4316
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:3250
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.

296 {
297 if (startPath)
298 {
299 me->StopMoving();
300 startPath = false;
302 }
303
304 if (!UpdateVictim())
305 return;
306
307 events.Update(diff);
308
310 return;
311
312 switch (events.ExecuteEvent())
313 {
314 case 0:
315 break;
316 case EVENT_ENRAGE:
318 me->CastSpell(me, SPELL_BERSERK, true);
319 break;
322 commander->AI()->Talk(SAY_COMMANDER_AGGRO);
323 break;
325 for (uint8 i = 0; i < 3; ++i)
327 {
328 if (!i)
329 c->AI()->Talk(SAY_EE_START_REPAIR);
330 c->AI()->SetData(1, 0); // start repairing
331 }
332 break;
334 if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 200.0f, true))
335 me->CastSpell(pTarget, SPELL_FIREBALL, false);
336 events.Repeat(4s);
337 break;
339 if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 200.0f, true))
340 me->CastSpell(pTarget, SPELL_DEVOURINGFLAME, false);
341 events.Repeat(13s);
342 break;
344 {
345 memset(cords, '\0', sizeof(cords));
346 uint8 num = RAID_MODE( urand(2, 3), urand(2, 4));
347 for( int i = 0; i < num; ++i )
348 {
349 // X: (550, 625) Y: (-185, -230)
350 cords[i][0] = urand(550, 625);
351 cords[i][1] = -230 + rand() % 45;
352 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))
353 {
354 //drill->SetGoAnimProgress(0);
355 //drill->SetLootState(GO_READY);
356 //drill->UseDoorOrButton(8);
357 //drill->SetGoState(GO_STATE_READY);
358 drill->SetGoState(GO_STATE_ACTIVE);
359 drill->SetGoAnimProgress(0);
360 }
361 }
362 events.Repeat(45s);
363 events.RescheduleEvent(EVENT_SUMMON_ADDS, 4s);
364 }
365 break;
367 for( int i = 0; i < 4; ++i )
368 {
369 if (!cords[i][0])
370 break;
371
372 uint8 opt;
373 uint8 r = urand(1, 100);
374 if (r <= 30) opt = 1;
375 else if (r <= 65) opt = 2;
376 else opt = 3;
377
378 for( int j = 0; j < 4; ++j )
379 {
380 float x = cords[i][0] + 4.0f * cos(j * M_PI / 2);
381 float y = cords[i][1] + 4.0f * std::sin(j * M_PI / 2);
382
383 uint32 npc_entry = 0;
384 switch (opt)
385 {
386 case 1:
387 if (j == 1) npc_entry = NPC_DARK_RUNE_SENTINEL;
388 break;
389 case 2:
390 switch (j)
391 {
392 case 1:
393 npc_entry = NPC_DARK_RUNE_WATCHER;
394 break;
395 case 2:
396 npc_entry = NPC_DARK_RUNE_GUARDIAN;
397 break;
398 }
399 break;
400 default: // case 3:
401 switch (j)
402 {
403 case 1:
404 npc_entry = NPC_DARK_RUNE_WATCHER;
405 break;
406 case 2:
407 npc_entry = NPC_DARK_RUNE_GUARDIAN;
408 break;
409 case 3:
410 npc_entry = NPC_DARK_RUNE_GUARDIAN;
411 break;
412 }
413 break;
414 }
415
416 if (npc_entry)
417 if (Creature* c = me->SummonCreature(npc_entry, x, y, 391.1f, j * M_PI / 2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
419 }
420 }
421 break;
424 me->RemoveAura(62794);
425 events.ScheduleEvent(EVENT_PHASE2_FLAME_BREATH, 2500ms);
426 break;
429 events.ScheduleEvent(EVENT_FLY_UP, 2s);
430 break;
431 case EVENT_FLY_UP:
432 {
433 me->SetInCombatWithZone(); // just in case
434 std::list<Creature*> hfsList;
436 for (Creature* hfs : hfsList)
437 {
438 me->SummonCreature(34188, hfs->GetPositionX(), hfs->GetPositionY(), hfs->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 22000);
439 hfs->AI()->SetData(1, 0);
440 }
441
444 if (RAID_MODE(0, 1))
445 {
448 }
450
451 if ((me->GetHealth() * 100) / me->GetMaxHealth() < 50 ) // start phase 3
452 {
455 me->DisableRotate(false);
457 Unit* target = SelectTarget(SelectTargetMethod::MaxDistance, 0, 0.0, true);
458 if (!target)
459 target = me->SelectNearestPlayer(200.0f);
460 if (target)
461 {
462 AttackStart(target);
463 me->GetMotionMaster()->MoveChase(target);
464 }
465 bGroundPhase = true;
466 events.CancelEvent(EVENT_SPELL_FIREBALL);
469
470 events.ScheduleEvent(EVENT_SPELL_FLAME_BREATH, 20s);
472 events.ScheduleEvent(EVENT_SPELL_FUSE_ARMOR, 10s);
473 events.ScheduleEvent(EVENT_SPELL_FLAME_BUFFET, 3s);
474
475 break;
476 }
477 else
478 {
479 ++flyTimes;
481 me->DisableRotate(false);
484 me->StopMoving();
485 me->SetDisableGravity(true);
487 events.ScheduleEvent(EVENT_RESUME_FIXING, 22s);
488 }
489
490 break;
491 }
493 for (uint8 i = 0; i < 3; ++i)
495 {
496 if (!i)
497 c->AI()->Talk(SAY_EE_REBUILD_TURRETS);
498 c->AI()->SetData(1, 0); // start repairing
499 }
500 break;
503 events.Repeat(20s);
504 break;
507 events.Repeat(13s);
508 break;
510 if (Unit* victim = me->GetVictim())
511 if (me->IsWithinMeleeRange(victim))
512 {
513 me->CastSpell(victim, SPELL_FUSEARMOR, false);
514 if (Aura* aur = victim->GetAura(SPELL_FUSEARMOR))
515 if (aur->GetStackAmount() == 5)
516 victim->CastSpell(victim, SPELL_FUSED_ARMOR, true);
517 events.Repeat(10s);
518 break;
519 }
520 events.Repeat(2s);
521 break;
524 events.Repeat(7s);
525 break;
526 }
527
528 if (bGroundPhase)
530 }
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:350
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:2850
uint32 GetWaypointPath() const
Definition Creature.h:357
CreatureAI * AI() const
Definition Creature.h:144
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:5038
void StopMoving()
Definition Unit.cpp:13023
bool IsWithinMeleeRange(Unit const *obj, float dist=0.f) const
Definition Unit.cpp:783
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:2393
Player * SelectNearestPlayer(float distance=0) const
Definition Object.cpp:2525
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:2407
Talk
Definition hyjal.cpp:82
void DoResetThreatList()
Definition ScriptedCreature.cpp:473
void AttackStart(Unit *who) override
Definition boss_razorscale.cpp:177
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: