AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
npc_valkyr_shadowguard::npc_valkyr_shadowguardAI Struct Reference
Inheritance diagram for npc_valkyr_shadowguard::npc_valkyr_shadowguardAI:
NullCreatureAI CreatureAI UnitAI

Public Member Functions

 npc_valkyr_shadowguardAI (Creature *creature)
 
bool IsHeroic ()
 
void GoSiphon ()
 
void OnCharmed (bool) override
 
void PassengerBoarded (Unit *pass, int8, bool apply) override
 == Fields =======================================
 
void DamageTaken (Unit *, uint32 &damage, DamageEffectType, SpellSchoolMask) override
 
void MovementInform (uint32 type, uint32 id) override
 
void SetGUID (ObjectGuid guid, int32) override
 
void UpdateAI (uint32 diff) override
 
- Public Member Functions inherited from NullCreatureAI
 NullCreatureAI (Creature *c)
 
void MoveInLineOfSight (Unit *) override
 
void AttackStart (Unit *) override
 
void UpdateAI (uint32) override
 
void EnterEvadeMode (EvadeReason) override
 
void OnCharmed (bool) override
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0s)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
virtual void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
virtual void JustEngagedWith (Unit *)
 Called for reaction when initially engaged.
 
virtual void JustDied (Unit *)
 
virtual void KilledUnit (Unit *)
 
virtual void JustSummoned (Creature *)
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDespawn (Creature *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureDespawnAll ()
 
virtual void SpellHit (Unit *, SpellInfo const *)
 
virtual void SpellHitTarget (Unit *, SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
virtual void JustRespawned ()
 
virtual void MovementInform (uint32, uint32)
 
virtual void PathEndReached (uint32)
 
void OnCharmed (bool apply) override
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *)
 
virtual void OwnerAttacked (Unit *)
 
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 ()
 
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 *)
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32)=0
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool apply)=0
 
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
 
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)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 Called when the unit enters combat (NOTE: Creature engage logic should NOT be here, but in JustEngagedWith, which happens once threat is established!)
 
virtual void JustExitedCombat ()
 Called when the unit leaves combat.
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 
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)
 
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)
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the max threat target, which may not always 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)
 
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

EventMap _events
 
Position _destPoint
 
ObjectGuid _grabbedPlayer
 
bool didbelow50pct
 
bool dropped
 
InstanceScript_instance
 

Additional Inherited Members

- 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 NullCreatureAI
static int32 Permissible (Creature const *creature)
 
- 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 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)
 
virtual void MoveInLineOfSight (Unit *)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
EventMap events
 
TaskScheduler scheduler
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ npc_valkyr_shadowguardAI()

npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::npc_valkyr_shadowguardAI ( Creature creature)
inline
2527 : NullCreatureAI(creature), didbelow50pct(false), dropped(false), _instance(creature->GetInstanceScript())
2528 {
2532 _events.Reset();
2534 me->SetWalk(false);
2535 }
@ REACT_PASSIVE
Definition: Unit.h:1035
@ SPELL_AURA_MOD_TAUNT
Definition: SpellAuraDefines.h:74
@ EVENT_GRAB_PLAYER
Definition: boss_the_lich_king.cpp:272
@ SPELL_EFFECT_ATTACK_ME
Definition: SharedDefines.h:892
@ IMMUNITY_STATE
Definition: SharedDefines.h:1395
@ IMMUNITY_EFFECT
Definition: SharedDefines.h:1394
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition: EventMap.cpp:56
void Reset()
Definition: EventMap.cpp:21
Definition: PassiveAI.h:53
Creature *const me
Definition: CreatureAI.h:73
void SetReactState(ReactStates st)
Definition: Creature.h:90
bool SetWalk(bool enable) override
Definition: Creature.cpp:3098
InstanceScript * GetInstanceScript() const
Definition: Object.cpp:1192
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply, SpellImmuneBlockType blockType=SPELL_BLOCK_TYPE_ALL)
Definition: Unit.cpp:13383
EventMap _events
Definition: boss_the_lich_king.cpp:2537
bool didbelow50pct
Definition: boss_the_lich_king.cpp:2540
InstanceScript * _instance
Definition: boss_the_lich_king.cpp:2542
bool dropped
Definition: boss_the_lich_king.cpp:2541

References _events, Unit::ApplySpellImmune(), EVENT_GRAB_PLAYER, IMMUNITY_EFFECT, IMMUNITY_STATE, CreatureAI::me, REACT_PASSIVE, EventMap::Reset(), EventMap::ScheduleEvent(), Creature::SetReactState(), Creature::SetWalk(), SPELL_AURA_MOD_TAUNT, and SPELL_EFFECT_ATTACK_ME.

Member Function Documentation

◆ DamageTaken()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::DamageTaken ( Unit ,
uint32 damage,
DamageEffectType  ,
SpellSchoolMask   
)
inlineoverridevirtual

Reimplemented from UnitAI.

2577 {
2578 if (IsHeroic() && !didbelow50pct && !dropped && me->HealthBelowPctDamaged(50, damage))
2579 GoSiphon();
2580 }
bool HealthBelowPctDamaged(int32 pct, uint32 damage) const
Definition: Unit.h:1459
void GoSiphon()
Definition: boss_the_lich_king.cpp:2546
bool IsHeroic()
Definition: boss_the_lich_king.cpp:2544

References didbelow50pct, dropped, GoSiphon(), Unit::HealthBelowPctDamaged(), IsHeroic(), and CreatureAI::me.

◆ GoSiphon()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::GoSiphon ( )
inline
2547 {
2548 didbelow50pct = true;
2549 me->CastSpell((Unit*)nullptr, SPELL_EJECT_ALL_PASSENGERS, false);
2550 float dist = rand_norm() * 10.0f + 5.0f;
2551 float angle = CenterPosition.GetAngle(me);
2552 _destPoint.Relocate(CenterPosition.GetPositionX() + dist * cos(angle), CenterPosition.GetPositionY() + dist * std::sin(angle), 855.0f + frand(0.0f, 4.0f), 0.0f);
2554 _events.Reset();
2556 }
float frand(float min, float max)
Definition: Random.cpp:57
double rand_norm()
Definition: Random.cpp:77
@ SPELL_EJECT_ALL_PASSENGERS
Definition: boss_the_lich_king.cpp:149
Position const CenterPosition
Definition: boss_the_lich_king.cpp:314
@ EVENT_MOVE_TO_SIPHON_POS
Definition: boss_the_lich_king.cpp:274
void SetHomePosition(float x, float y, float z, float o)
Definition: Creature.h:330
float GetPositionX() const
Definition: Position.h:117
float GetPositionY() const
Definition: Position.h:118
float GetAngle(const Position *pos) const
Definition: Position.cpp:77
void Relocate(float x, float y)
Definition: Position.h:73
Definition: Unit.h:1302
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:1169
Position _destPoint
Definition: boss_the_lich_king.cpp:2538

References _destPoint, _events, Unit::CastSpell(), CenterPosition, didbelow50pct, EVENT_MOVE_TO_SIPHON_POS, frand(), Position::GetAngle(), Position::GetPositionX(), Position::GetPositionY(), CreatureAI::me, rand_norm(), Position::Relocate(), EventMap::Reset(), EventMap::ScheduleEvent(), Creature::SetHomePosition(), and SPELL_EJECT_ALL_PASSENGERS.

Referenced by DamageTaken(), MovementInform(), and PassengerBoarded().

◆ IsHeroic()

bool npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::IsHeroic ( )
inline
2544{ return me->GetMap()->IsHeroic(); }
Map * GetMap() const
Definition: Object.h:517
bool IsHeroic() const
Definition: Map.h:452

References WorldObject::GetMap(), Map::IsHeroic(), and CreatureAI::me.

Referenced by DamageTaken(), MovementInform(), and PassengerBoarded().

◆ MovementInform()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::MovementInform ( uint32  type,
uint32  id 
)
inlineoverridevirtual

Reimplemented from CreatureAI.

2583 {
2584 if (type != POINT_MOTION_TYPE)
2585 return;
2586
2587 switch (id)
2588 {
2589 case EVENT_CHARGE:
2590 {
2591 bool valid = false;
2593 if (target->FindMap() == me->GetMap() && target->GetExactDist(me) < 15.0f && !target->GetVehicle())
2595 {
2596 std::list<Creature*> triggers;
2598 triggers.remove_if(HeightDifferenceCheck(platform, 5.0f, true));
2599 if (!triggers.empty())
2600 {
2601 valid = true;
2602 triggers.sort(Acore::ObjectDistanceOrderPred(me));
2603
2604 target->GetMotionMaster()->Clear();
2605 target->UpdatePosition(*me, true);
2606 target->StopMovingOnCurrentPos();
2607
2608 me->CastSpell(target, SPELL_VALKYR_CARRY, false);
2609 _destPoint.Relocate(triggers.front());
2610 _events.Reset();
2612 }
2613 }
2614 if (!valid)
2615 {
2616 _events.Reset();
2619 }
2620 }
2621 break;
2622 case POINT_DROP_PLAYER:
2623 {
2624 if (didbelow50pct || dropped)
2625 break;
2626 if (me->GetExactDist(&_destPoint) > 1.5f) // movement was interrupted (probably by a stun, start again)
2627 {
2628 _events.Reset();
2630 break;
2631 }
2632 dropped = true;
2633 _events.Reset();
2634 /*Player* p = nullptr;
2635 if (Vehicle* v = me->GetVehicleKit())
2636 if (Unit* passenger = v->GetPassenger(0))
2637 p = passenger->ToPlayer();*/
2638 me->CastSpell((Unit*)nullptr, SPELL_EJECT_ALL_PASSENGERS, false);
2639
2640 if (IsHeroic())
2641 GoSiphon();
2642 else
2643 me->DespawnOrUnsummon(1000);
2644 }
2645 break;
2646 case POINT_START_SIPHON:
2647 if (me->GetExactDist(&_destPoint) > 1.5f) // movement was interrupted (probably by a stun, start again)
2648 {
2649 _events.Reset();
2651 break;
2652 }
2656 break;
2657 }
2658 }
void GetCreatureListWithEntryInGrid(std::list< Creature * > &list, WorldObject *source, uint32 entry, float maxSearchRange)
Definition: ScriptedCreature.cpp:818
@ POINT_MOTION_TYPE
Definition: MotionMaster.h:46
@ NPC_WORLD_TRIGGER
Definition: trial_of_the_crusader.h:153
@ SPELL_VALKYR_CARRY
Definition: boss_the_lich_king.cpp:148
@ POINT_START_SIPHON
Definition: boss_the_lich_king.cpp:333
@ POINT_DROP_PLAYER
Definition: boss_the_lich_king.cpp:332
@ EVENT_LIFE_SIPHON
Definition: boss_the_lich_king.cpp:275
@ EVENT_MOVE_TO_DROP_POS
Definition: boss_the_lich_king.cpp:273
@ DATA_ARTHAS_PLATFORM
Definition: icecrown_citadel.h:137
@ EVENT_CHARGE
Definition: SharedDefines.h:3311
GameObject * GetGameObject(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:187
Player * GetPlayer(Map const *, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:223
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition: Creature.cpp:2117
Definition: GameObject.h:122
Definition: Object.h:682
void Clear()
Definition: ObjectGuid.h:140
float GetExactDist(float x, float y, float z) const
Definition: Position.h:178
Definition: Player.h:1056
ObjectGuid GetGuidData(uint32 type) const override
Definition: InstanceScript.cpp:94
Definition: boss_the_lich_king.cpp:620
ObjectGuid _grabbedPlayer
Definition: boss_the_lich_king.cpp:2539

References _destPoint, _events, _grabbedPlayer, _instance, Unit::ApplySpellImmune(), Unit::CastSpell(), ObjectGuid::Clear(), DATA_ARTHAS_PLATFORM, Creature::DespawnOrUnsummon(), didbelow50pct, dropped, EVENT_CHARGE, EVENT_GRAB_PLAYER, EVENT_LIFE_SIPHON, EVENT_MOVE_TO_DROP_POS, EVENT_MOVE_TO_SIPHON_POS, GetCreatureListWithEntryInGrid(), Position::GetExactDist(), ObjectAccessor::GetGameObject(), InstanceScript::GetGuidData(), WorldObject::GetMap(), ObjectAccessor::GetPlayer(), GoSiphon(), IMMUNITY_EFFECT, IMMUNITY_STATE, IsHeroic(), CreatureAI::me, NPC_WORLD_TRIGGER, POINT_DROP_PLAYER, POINT_MOTION_TYPE, POINT_START_SIPHON, Position::Relocate(), EventMap::Reset(), EventMap::ScheduleEvent(), SPELL_AURA_MOD_TAUNT, SPELL_EFFECT_ATTACK_ME, SPELL_EJECT_ALL_PASSENGERS, and SPELL_VALKYR_CARRY.

◆ OnCharmed()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::OnCharmed ( bool  )
inlineoverridevirtual

Reimplemented from NullCreatureAI.

2558{}

◆ PassengerBoarded()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::PassengerBoarded ( Unit ,
int8  ,
bool   
)
inlineoverridevirtual

== Fields =======================================

Reimplemented from CreatureAI.

2561 {
2562 if (apply)
2563 {
2564 //pass->ClearUnitState(UNIT_STATE_ONVEHICLE);
2565 return;
2566 }
2567 pass->RemoveAurasDueToSpell(VEHICLE_SPELL_PARACHUTE);
2568 if (didbelow50pct || dropped)
2569 return;
2570 if (IsHeroic())
2571 GoSiphon();
2572 else
2573 me->DespawnOrUnsummon(1000);
2574 }
@ VEHICLE_SPELL_PARACHUTE
Definition: VehicleDefines.h:54

References Creature::DespawnOrUnsummon(), didbelow50pct, dropped, GoSiphon(), IsHeroic(), CreatureAI::me, Unit::RemoveAurasDueToSpell(), and VEHICLE_SPELL_PARACHUTE.

◆ SetGUID()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::SetGUID ( ObjectGuid  guid,
int32   
)
inlineoverridevirtual

Reimplemented from UnitAI.

2661 {
2662 _grabbedPlayer = guid;
2663 }

References _grabbedPlayer.

◆ UpdateAI()

void npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from NullCreatureAI.

2666 {
2667 _events.Update(diff);
2668
2670 return;
2671
2672 switch (_events.ExecuteEvent())
2673 {
2674 case EVENT_GRAB_PLAYER:
2675 if (!_grabbedPlayer)
2676 {
2677 me->CastSpell((Unit*)nullptr, SPELL_VALKYR_TARGET_SEARCH, false);
2679 }
2680 break;
2683 me->SetCanFly(false);
2684 me->SetDisableGravity(false);
2686 me->SetDisableGravity(true, true);
2688 break;
2690 me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); // just in case if passenger disappears so quickly that EVENT_MOVE_TO_DROP_POS is never executed
2691 { int32 bp0 = 80; me->CastCustomSpell(me, 1557, &bp0, nullptr, nullptr, true); }
2692 me->SetCanFly(true);
2693 me->SetDisableGravity(true);
2696 break;
2697 case EVENT_LIFE_SIPHON:
2698 {
2699 Unit* target = nullptr;
2701 if (!tauntAuras.empty())
2702 for (Unit::AuraEffectList::const_reverse_iterator itr = tauntAuras.rbegin(); itr != tauntAuras.rend(); ++itr)
2703 if (Unit* caster = (*itr)->GetCaster())
2704 if (me->IsValidAttackTarget(caster))
2705 {
2706 target = caster;
2707 break;
2708 }
2709 if (!target)
2711 target = lichKing->AI()->SelectTarget(SelectTargetMethod::Random, 0, NonTankLKTargetSelector(lichKing, true, false, 100.0f));
2712 if (target)
2713 me->CastSpell(target, SPELL_LIFE_SIPHON, false);
2715 }
2716 break;
2717 default:
2718 break;
2719 }
2720 }
std::int32_t int32
Definition: Define.h:104
@ UNIT_STATE_NO_ENVIRONMENT_UPD
Definition: Unit.h:353
@ UNIT_STATE_CASTING
Definition: Unit.h:340
@ UNIT_STATE_STUNNED
Definition: Unit.h:328
@ UNIT_FLAG_NON_ATTACKABLE
Definition: Unit.h:449
@ SPELL_VALKYR_TARGET_SEARCH
Definition: boss_the_lich_king.cpp:145
@ SPELL_LIFE_SIPHON
Definition: boss_the_lich_king.cpp:150
@ DATA_THE_LICH_KING
Definition: icecrown_citadel.h:106
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:213
uint32 ExecuteEvent()
Definition: EventMap.cpp:114
void Update(uint32 time)
Definition: EventMap.h:54
Definition: Creature.h:46
bool SetDisableGravity(bool disable, bool packetOnly=false, bool updateAnimationTier=true) override
Definition: Creature.cpp:3109
bool SetCanFly(bool enable, bool packetOnly=false) override
Definition: Creature.cpp:3194
AuraEffectList const & GetAuraEffectsByType(AuraType type) const
Definition: Unit.h:1981
MotionMaster * GetMotionMaster()
Definition: Unit.h:2276
SpellCastResult CastCustomSpell(Unit *victim, uint32 spellId, int32 const *bp0, int32 const *bp1, int32 const *bp2, bool triggered, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:1226
void AddUnitState(uint32 f)
Definition: Unit.h:1409
void SendMovementFlagUpdate(bool self=false)
Definition: Unit.cpp:16972
bool HasUnitState(const uint32 f) const
Definition: Unit.h:1410
std::list< AuraEffect * > AuraEffectList
Definition: Unit.h:1318
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition: Unit.cpp:13859
void RemoveUnitFlag(UnitFlags flags)
Definition: Unit.h:1496
void MovePoint(uint32 id, const Position &pos, bool generatePath=true, bool forceDestination=true)
Definition: MotionMaster.h:211
Definition: boss_the_lich_king.cpp:407

References _destPoint, _events, _grabbedPlayer, _instance, Unit::AddUnitState(), Unit::CastCustomSpell(), Unit::CastSpell(), DATA_THE_LICH_KING, EVENT_GRAB_PLAYER, EVENT_LIFE_SIPHON, EVENT_MOVE_TO_DROP_POS, EVENT_MOVE_TO_SIPHON_POS, EventMap::ExecuteEvent(), Unit::GetAuraEffectsByType(), ObjectAccessor::GetCreature(), InstanceScript::GetGuidData(), Unit::GetMotionMaster(), Unit::HasUnitState(), Unit::IsValidAttackTarget(), CreatureAI::me, MotionMaster::MovePoint(), POINT_DROP_PLAYER, POINT_START_SIPHON, Unit::RemoveUnitFlag(), EventMap::ScheduleEvent(), Unit::SendMovementFlagUpdate(), Creature::SetCanFly(), Creature::SetDisableGravity(), SPELL_AURA_MOD_TAUNT, SPELL_LIFE_SIPHON, SPELL_VALKYR_TARGET_SEARCH, UNIT_FLAG_NON_ATTACKABLE, UNIT_STATE_CASTING, UNIT_STATE_NO_ENVIRONMENT_UPD, UNIT_STATE_STUNNED, and EventMap::Update().

Member Data Documentation

◆ _destPoint

Position npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::_destPoint

Referenced by GoSiphon(), MovementInform(), and UpdateAI().

◆ _events

EventMap npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::_events

◆ _grabbedPlayer

ObjectGuid npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::_grabbedPlayer

Referenced by MovementInform(), SetGUID(), and UpdateAI().

◆ _instance

InstanceScript* npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::_instance

Referenced by MovementInform(), and UpdateAI().

◆ didbelow50pct

bool npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::didbelow50pct

◆ dropped

bool npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::dropped