TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boss_alythess::boss_alythessAI Struct Reference

Public Member Functions

 boss_alythessAI (Creature *creature)
 
void Initialize ()
 
void Reset () override
 
void EnterCombat (Unit *who) override
 
void AttackStart (Unit *who) override
 
void MoveInLineOfSight (Unit *who) override
 
void KilledUnit (Unit *) override
 
void JustDied (Unit *) override
 
void SpellHitTarget (Unit *target, const SpellInfo *spell) override
 
void HandleTouchedSpells (Unit *target, uint32 TouchedType)
 
uint32 IntroStep (uint32 step)
 
void UpdateAI (uint32 diff) override
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
virtual ~ScriptedAI ()
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &) override
 
void JustSummoned (Creature *) override
 
void SummonedCreatureDespawn (Creature *) override
 
void SpellHit (Unit *, SpellInfo const *) override
 
void OnPossess (bool)
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void DoResetThreat ()
 
float DoGetThreat (Unit *unit)
 
void DoModifyThreatPercent (Unit *unit, int32 pct)
 
void DoTeleportTo (float x, float y, float z, uint32 time=0)
 
void DoTeleportTo (float const pos[4])
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
void DoTeleportAll (float x, float y, float z, float o)
 
Unit * DoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
Player * GetPlayerAtMinimumRange (float minRange)
 
Creature * DoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, 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)
 
void SetCombatMovement (bool allowMovement)
 
bool IsCombatMovementAllowed () 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
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr)
 
 CreatureAI (Creature *creature)
 
virtual ~CreatureAI ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At ================================= More...
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
virtual void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
virtual void IsSummonedBy (Unit *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted () const
 
virtual void JustRespawned ()
 
virtual void MovementInform (uint32, uint32)
 
void OnCharmed (bool apply) override
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *)
 
virtual void OwnerAttacked (Unit *)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ================== More...
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields ======================================= More...
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void InitializeAI ()
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
Unit * SelectTarget (SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
 
template<class PREDICATE >
Unit * SelectTarget (SelectAggroTarget targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectAggroTarget targetType, float dist=0.0f, bool playerOnly=false, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, PREDICATE const &predicate, uint32 maxTargets, SelectAggroTarget targetType)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void SpellInterrupted (uint32, uint32)
 
void AttackStartCaster (Unit *victim, float dist)
 
void DoCast (uint32 spellId)
 
void DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
void DoCastVictim (uint32 spellId, bool triggered=false)
 
void DoCastAOE (uint32 spellId, bool triggered=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spellId)
 
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 sQuestReward (Player *, Quest const *, uint32)
 
virtual bool sOnDummyEffect (Unit *, uint32, SpellEffIndex)
 
virtual void sOnGameEvent (bool, uint16)
 

Public Attributes

InstanceScript * instance
 
bool SisterDeath
 
bool Enraged
 
uint32 IntroStepCounter
 
uint32 IntroYellTimer
 
uint32 ConflagrationTimer
 
uint32 BlazeTimer
 
uint32 PyrogenicsTimer
 
uint32 ShadownovaTimer
 
uint32 FlamesearTimer
 
uint32 EnrageTimer
 
- Public Attributes inherited from ScriptedAI
bool IsFleeing
 

Additional Inherited Members

- Public Types inherited from CreatureAI
enum  EvadeReason { EVADE_REASON_NO_HOSTILES, EVADE_REASON_BOUNDARY, EVADE_REASON_SEQUENCE_BREAK, EVADE_REASON_OTHER }
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Static Public Attributes inherited from UnitAI
static AISpellInfoType * AISpellInfo
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
Creature * DoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
Creature * DoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
Creature * DoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
bool CheckBoundary (Position const *who=nullptr) const
 
void SetBoundary (CreatureBoundary const *boundary)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
CreatureBoundary const * _boundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Constructor & Destructor Documentation

boss_alythess::boss_alythessAI::boss_alythessAI ( Creature *  creature)
inline
327  : ScriptedAI(creature)
328  {
329  Initialize();
330  SetCombatMovement(false);
331 
332  instance = creature->GetInstanceScript();
333  IntroStepCounter = 10;
334  }
ScriptedAI(Creature *creature)
Definition: ScriptedCreature.cpp:100
InstanceScript * GetInstanceScript()
Definition: Object.cpp:1540
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
uint32 IntroStepCounter
Definition: boss_eredar_twins.cpp:355
void SetCombatMovement(bool allowMovement)
Definition: ScriptedCreature.cpp:382
void Initialize()
Definition: boss_eredar_twins.cpp:336

+ Here is the call graph for this function:

Member Function Documentation

void boss_alythess::boss_alythessAI::AttackStart ( Unit *  who)
inlineoverridevirtual

Reimplemented from ScriptedAI.

397  {
398  if (!me->IsInCombat())
400  }
bool IsInCombat() const
Definition: Unit.h:1584
Creature *const me
Definition: CreatureAI.h:71
void AttackStart(Unit *) override
Definition: ScriptedCreature.cpp:117

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::EnterCombat ( Unit *  who)
inlineoverridevirtual

Reimplemented from ScriptedAI.

386  {
387  DoZoneInCombat();
388 
390  if (temp && temp->IsAlive() && !temp->GetVictim())
391  temp->AI()->AttackStart(who);
392 
394  }
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
Definition: CreatureAI.cpp:47
Definition: Creature.h:467
Creature *const me
Definition: CreatureAI.h:71
virtual ObjectGuid GetGuidData(uint32 type) const override
Definition: InstanceScript.cpp:93
Definition: sunwell_plateau.h:32
Definition: InstanceScript.h:59
bool IsAlive() const
Definition: Unit.h:1692
Unit * GetVictim() const
Definition: Unit.h:1379
CreatureAI * AI() const
Definition: Creature.h:525
Definition: sunwell_plateau.h:41
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:273
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:29

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::HandleTouchedSpells ( Unit *  target,
uint32  TouchedType 
)
inline
457  {
458  switch (TouchedType)
459  {
460  case SPELL_FLAME_TOUCHED:
461  if (!target->HasAura(SPELL_DARK_FLAME))
462  {
463  if (target->HasAura(SPELL_DARK_TOUCHED))
464  {
466  target->CastSpell(target, SPELL_DARK_FLAME, true);
467  }
468  else
469  target->CastSpell(target, SPELL_FLAME_TOUCHED, true);
470  }
471  break;
472  case SPELL_DARK_TOUCHED:
473  if (!target->HasAura(SPELL_DARK_FLAME))
474  {
475  if (target->HasAura(SPELL_FLAME_TOUCHED))
476  {
478  target->CastSpell(target, SPELL_DARK_FLAME, true);
479  }
480  else
481  target->CastSpell(target, SPELL_DARK_TOUCHED, true);
482  }
483  break;
484  }
485  }
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Definition: Unit.cpp:4240
Definition: boss_eredar_twins.cpp:68
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition: Unit.cpp:3586
Definition: boss_eredar_twins.cpp:64
Definition: boss_eredar_twins.cpp:51
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:869

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void boss_alythess::boss_alythessAI::Initialize ( void  )
inline
337  {
338  ConflagrationTimer = 45000;
339  BlazeTimer = 100;
340  PyrogenicsTimer = 15000;
341  ShadownovaTimer = 40000;
342  EnrageTimer = 360000;
343  FlamesearTimer = 15000;
344  IntroYellTimer = 10000;
345 
346  SisterDeath = false;
347  Enraged = false;
348  }
uint32 FlamesearTimer
Definition: boss_eredar_twins.cpp:362
uint32 EnrageTimer
Definition: boss_eredar_twins.cpp:363
uint32 IntroYellTimer
Definition: boss_eredar_twins.cpp:356
uint32 ShadownovaTimer
Definition: boss_eredar_twins.cpp:361
uint32 BlazeTimer
Definition: boss_eredar_twins.cpp:359
bool SisterDeath
Definition: boss_eredar_twins.cpp:352
uint32 ConflagrationTimer
Definition: boss_eredar_twins.cpp:358
bool Enraged
Definition: boss_eredar_twins.cpp:353
uint32 PyrogenicsTimer
Definition: boss_eredar_twins.cpp:360

+ Here is the caller graph for this function:

uint32 boss_alythess::boss_alythessAI::IntroStep ( uint32  step)
inline
488  {
490  switch (step)
491  {
492  case 0:
493  return 0;
494  case 1:
495  if (Sacrolash)
496  Sacrolash->AI()->Talk(YELL_INTRO_SAC_1);
497  return 1000;
498  case 2:
500  return 1000;
501  case 3:
502  if (Sacrolash)
503  Sacrolash->AI()->Talk(YELL_INTRO_SAC_3);
504  return 2000;
505  case 4:
507  return 1000;
508  case 5:
509  if (Sacrolash)
510  Sacrolash->AI()->Talk(YELL_INTRO_SAC_5);
511  return 2000;
512  case 6:
514  return 1000;
515  case 7:
516  if (Sacrolash)
517  Sacrolash->AI()->Talk(YELL_INTRO_SAC_7);
518  return 3000;
519  case 8:
521  return 900000;
522  }
523  return 10000;
524  }
Definition: boss_eredar_twins.cpp:39
Definition: boss_eredar_twins.cpp:26
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
Definition: boss_eredar_twins.cpp:36
Definition: boss_eredar_twins.cpp:37
Definition: Creature.h:467
Definition: boss_eredar_twins.cpp:27
Definition: boss_eredar_twins.cpp:28
Creature *const me
Definition: CreatureAI.h:71
virtual ObjectGuid GetGuidData(uint32 type) const override
Definition: InstanceScript.cpp:93
CreatureAI * AI() const
Definition: Creature.h:525
Definition: sunwell_plateau.h:41
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
Definition: boss_eredar_twins.cpp:38
Definition: boss_eredar_twins.cpp:25

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void boss_alythess::boss_alythessAI::JustDied ( Unit *  )
inlineoverridevirtual

Reimplemented from ScriptedAI.

429  {
430  if (SisterDeath)
431  {
434  }
435  else
437  }
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
Definition: inflate.h:49
Definition: boss_eredar_twins.cpp:42
Creature *const me
Definition: CreatureAI.h:71
bool SisterDeath
Definition: boss_eredar_twins.cpp:352
Definition: sunwell_plateau.h:32
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:273
Definition: SharedDefines.h:4201
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition: Object.cpp:1214
Definition: UpdateFields.h:30

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::KilledUnit ( Unit *  )
inlineoverridevirtual

Reimplemented from ScriptedAI.

423  {
424  if (rand32() % 4 == 0)
426  }
Definition: boss_eredar_twins.cpp:41
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
uint32 rand32()
Definition: Random.cpp:64

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::MoveInLineOfSight ( Unit *  who)
inlineoverridevirtual

Reimplemented from CreatureAI.

403  {
404  if (!who || me->GetVictim())
405  return;
406 
407  if (me->CanCreatureAttack(who))
408  {
409  float attackRadius = me->GetAttackDistance(who);
410  if (me->IsWithinDistInMap(who, attackRadius) && me->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && me->IsWithinLOSInMap(who))
411  {
412  if (!me->IsInCombat())
413  {
414  DoStartNoMovement(who);
415  }
416  }
417  }
418  else if (IntroStepCounter == 10 && me->IsWithinLOSInMap(who)&& me->IsWithinDistInMap(who, 30))
419  IntroStepCounter = 0;
420  }
bool IsWithinLOSInMap(WorldObject const *obj) const
Definition: Object.cpp:1584
#define CREATURE_Z_ATTACK_RANGE
Definition: Creature.h:459
bool IsInCombat() const
Definition: Unit.h:1584
float GetDistanceZ(WorldObject const *obj) const
Definition: Object.cpp:1546
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true) const
Definition: Object.cpp:1663
Creature *const me
Definition: CreatureAI.h:71
float GetAttackDistance(Unit const *player) const
Definition: Creature.cpp:1586
void DoStartNoMovement(Unit *target)
Definition: ScriptedCreature.cpp:140
Unit * GetVictim() const
Definition: Unit.h:1379
uint32 IntroStepCounter
Definition: boss_eredar_twins.cpp:355
bool CanCreatureAttack(Unit const *victim, bool force=true) const
Definition: Creature.cpp:2170

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::Reset ( )
inlineoverridevirtual

Reimplemented from ScriptedAI.

366  {
367  Enraged = false;
368 
370  {
371  if (temp->isDead())
372  temp->Respawn();
373  else if (temp->GetVictim())
374  me->getThreatManager().addThreat(temp->GetVictim(), 0.0f);
375  }
376 
377  if (!me->IsInCombat())
378  {
379  Initialize();
380  }
381 
383  }
void addThreat(Unit *victim, float threat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
Definition: ThreatManager.cpp:406
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
bool IsInCombat() const
Definition: Unit.h:1584
Definition: Creature.h:467
Creature *const me
Definition: CreatureAI.h:71
virtual ObjectGuid GetGuidData(uint32 type) const override
Definition: InstanceScript.cpp:93
Definition: sunwell_plateau.h:32
Definition: InstanceScript.h:58
bool Enraged
Definition: boss_eredar_twins.cpp:353
Definition: sunwell_plateau.h:41
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:273
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
void Initialize()
Definition: boss_eredar_twins.cpp:336
ThreatManager & getThreatManager()
Definition: Unit.h:1998

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::SpellHitTarget ( Unit *  target,
const SpellInfo *  spell 
)
inlineoverridevirtual

Reimplemented from ScriptedAI.

440  {
441  switch (spell->Id)
442  {
443  case SPELL_BLAZE:
444  target->CastSpell(target, SPELL_BLAZE_SUMMON, true);
445  break;
446  case SPELL_CONFLAGRATION:
447  case SPELL_FLAME_SEAR:
449  break;
450  case SPELL_SHADOW_NOVA:
452  break;
453  }
454  }
uint32 Id
Definition: SpellInfo.h:329
void HandleTouchedSpells(Unit *target, uint32 TouchedType)
Definition: boss_eredar_twins.cpp:456
Definition: boss_eredar_twins.cpp:72
Definition: boss_eredar_twins.cpp:68
Definition: boss_eredar_twins.cpp:54
Definition: boss_eredar_twins.cpp:71
Definition: boss_eredar_twins.cpp:51
Definition: boss_eredar_twins.cpp:69
Definition: boss_eredar_twins.cpp:70
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:869

+ Here is the call graph for this function:

void boss_alythess::boss_alythessAI::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from ScriptedAI.

527  {
528  if (IntroStepCounter < 9)
529  {
530  if (IntroYellTimer <= diff)
531  {
533  } else IntroYellTimer -= diff;
534  }
535 
536  if (!SisterDeath)
537  {
539  if (Temp && Temp->isDead())
540  {
544  SisterDeath = true;
545  }
546  }
547  if (!me->GetVictim())
548  {
550  if (sisiter && !sisiter->isDead() && sisiter->GetVictim())
551  {
552  me->AddThreat(sisiter->GetVictim(), 0.0f);
553  DoStartNoMovement(sisiter->GetVictim());
554  me->Attack(sisiter->GetVictim(), false);
555  }
556  }
557 
558  if (!UpdateVictim())
559  return;
560 
561  if (SisterDeath)
562  {
563  if (ShadownovaTimer <= diff)
564  {
565  if (!me->IsNonMeleeSpellCast(false))
566  {
567  if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
568  DoCast(target, SPELL_SHADOW_NOVA);
569  ShadownovaTimer = 30000 + (rand32() % 5000);
570  }
571  } else ShadownovaTimer -=diff;
572  }
573  else
574  {
575  if (ConflagrationTimer <= diff)
576  {
577  if (!me->IsNonMeleeSpellCast(false))
578  {
580  Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0);
581  if (target)
582  DoCast(target, SPELL_CONFLAGRATION);
583  ConflagrationTimer = 30000 + (rand32() % 5000);
584 
585  if (!SisterDeath)
586  {
587  if (target)
588  Talk(EMOTE_CONFLAGRATION, target);
590  }
591 
592  BlazeTimer = 4000;
593  }
594  } else ConflagrationTimer -= diff;
595  }
596 
597  if (FlamesearTimer <= diff)
598  {
599  if (!me->IsNonMeleeSpellCast(false))
600  {
602  FlamesearTimer = 15000;
603  }
604  } else FlamesearTimer -=diff;
605 
606  if (PyrogenicsTimer <= diff)
607  {
608  if (!me->IsNonMeleeSpellCast(false))
609  {
610  DoCast(me, SPELL_PYROGENICS, true);
611  PyrogenicsTimer = 15000;
612  }
613  } else PyrogenicsTimer -= diff;
614 
615  if (BlazeTimer <= diff)
616  {
617  if (!me->IsNonMeleeSpellCast(false))
618  {
620  BlazeTimer = 3800;
621  }
622  } else BlazeTimer -= diff;
623 
624  if (EnrageTimer < diff && !Enraged)
625  {
629  Enraged = true;
630  } else EnrageTimer -= diff;
631  }
uint32 FlamesearTimer
Definition: boss_eredar_twins.cpp:362
Definition: Unit.h:1109
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
Definition: Unit.cpp:10691
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:7222
bool UpdateVictim()
Definition: CreatureAI.cpp:233
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:163
uint32 EnrageTimer
Definition: boss_eredar_twins.cpp:363
Definition: boss_eredar_twins.cpp:40
InstanceScript * instance
Definition: boss_eredar_twins.cpp:350
Definition: boss_eredar_twins.cpp:44
uint32 IntroYellTimer
Definition: boss_eredar_twins.cpp:356
Definition: Creature.h:467
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Definition: Unit.cpp:2886
Definition: boss_eredar_twins.cpp:45
uint32 ShadownovaTimer
Definition: boss_eredar_twins.cpp:361
Definition: boss_eredar_twins.cpp:67
uint32 BlazeTimer
Definition: boss_eredar_twins.cpp:359
Creature *const me
Definition: CreatureAI.h:71
bool SisterDeath
Definition: boss_eredar_twins.cpp:352
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true)
Definition: Unit.cpp:2849
Definition: boss_eredar_twins.cpp:62
virtual ObjectGuid GetGuidData(uint32 type) const override
Definition: InstanceScript.cpp:93
Definition: UnitAI.h:35
uint32 ConflagrationTimer
Definition: boss_eredar_twins.cpp:358
void DoStartNoMovement(Unit *target)
Definition: ScriptedCreature.cpp:140
Unit * GetVictim() const
Definition: Unit.h:1379
Definition: boss_eredar_twins.cpp:54
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition: UnitAI.cpp:91
bool Enraged
Definition: boss_eredar_twins.cpp:353
Definition: sunwell_plateau.h:41
void DoCast(uint32 spellId)
Definition: UnitAI.cpp:101
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
Definition: CreatureAI.cpp:42
Definition: boss_eredar_twins.cpp:63
uint32 IntroStepCounter
Definition: boss_eredar_twins.cpp:355
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
Definition: ObjectAccessor.cpp:174
Definition: boss_eredar_twins.cpp:71
uint32 PyrogenicsTimer
Definition: boss_eredar_twins.cpp:360
bool isDead() const
Definition: Unit.h:1694
uint32 rand32()
Definition: Random.cpp:64
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition: UnitAI.cpp:159
uint32 IntroStep(uint32 step)
Definition: boss_eredar_twins.cpp:487
Definition: boss_eredar_twins.cpp:69
Definition: boss_eredar_twins.cpp:43
Definition: boss_eredar_twins.cpp:70
Definition: Unit.h:1305

+ Here is the call graph for this function:

Member Data Documentation

uint32 boss_alythess::boss_alythessAI::BlazeTimer
uint32 boss_alythess::boss_alythessAI::ConflagrationTimer
bool boss_alythess::boss_alythessAI::Enraged
uint32 boss_alythess::boss_alythessAI::EnrageTimer
uint32 boss_alythess::boss_alythessAI::FlamesearTimer
InstanceScript* boss_alythess::boss_alythessAI::instance
uint32 boss_alythess::boss_alythessAI::IntroStepCounter
uint32 boss_alythess::boss_alythessAI::IntroYellTimer
uint32 boss_alythess::boss_alythessAI::PyrogenicsTimer
uint32 boss_alythess::boss_alythessAI::ShadownovaTimer
bool boss_alythess::boss_alythessAI::SisterDeath

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