243 if (a->GetMovementGeneratorType() == POINT_MOTION_TYPE)
245 PointMovementGenerator const* pointMovement = dynamic_cast<PointMovementGenerator const*>(a);
246 return pointMovement && pointMovement->GetId() == POINT_TARGET_BONESTORM_PLAYER;
286 me->GetMotionMaster()->MoveIdle();
291 return &_coldflameLastPos;
299 return _coldflameTarget;
305 if (index < _boneSpikeImmune.size())
306 return _boneSpikeImmune[index];
320 _coldflameTarget = guid;
323 _boneSpikeImmune.push_back(guid);
333 _boneSpikeImmune.clear();
367 pos.
Relocate(marrowgarAI->GetLastColdflamePosition());
425 if (
Unit* trapped = summ->GetSummonerUnit())
458 init.DisableTransportPathTransformations();
459 init.MoveTo(-0.02206125f, -0.02132235f, 5.514783f,
false);
495 targets.push_back(target);
517 for (
uint8 i = 0; i < 4; ++i)
577 std::list<Unit*> targets;
583 for (std::list<Unit*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr, ++i)
592 spike->DespawnOrUnsummon();
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ MOTION_PRIORITY_HIGHEST
std::vector< ObjectGuid > GuidVector
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_DEST_AREA_ENEMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_FAILED_NO_VALID_TARGETS
@ SPELL_FAILED_INTERRUPTED
#define SpellCheckCastFn(F)
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraCheckAreaTargetFn(F)
@ ACTION_CLEAR_SPIKE_IMMUNITIES
boss_lord_marrowgar MarrowgarAI
@ SPELL_COLDFLAME_BONE_STORM
@ SPELL_COLDFLAME_PASSIVE
@ SPELL_BONE_SPIKE_GRAVEYARD
void AddSC_boss_lord_marrowgar()
@ POINT_TARGET_BONESTORM_PLAYER
uint32 const BoneSpikeSummonId[3]
@ EVENT_COLDFLAME_TRIGGER
@ EVENT_BONE_SPIKE_GRAVEYARD
@ EVENT_ENABLE_BONE_SLICE
WorldObject * GetOwner() const
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
HookList< CheckAreaTargetHandler > DoCheckAreaTarget
bool operator()(Unit *unit) const
BoneSpikeTargetSelector(UnitAI *ai)
InstanceScript *const instance
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void DelayEvents(Milliseconds delay)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
virtual bool SetBossState(uint32 id, EncounterState state)
void LaunchMoveSpline(std::function< void(Movement::MoveSplineInit &init)> &&initializer, uint32 id=0, MovementGeneratorPriority priority=MOTION_PRIORITY_NORMAL, MovementGeneratorType type=EFFECT_MOTION_TYPE)
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
MovementGenerator * GetMovementGenerator(std::function< bool(MovementGenerator const *)> const &filter, MovementSlot slot=MOTION_SLOT_ACTIVE) const
void Remove(MovementGenerator *movement, MovementSlot slot=MOTION_SLOT_ACTIVE)
static ObjectGuid const Empty
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< CheckCastHandler > OnCheckCast
int32 GetHitDamage() const
HookList< HitHandler > OnHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
HookList< EffectHandler > OnEffectHitTarget
HookList< CastHandler > BeforeCast
void SetHitDamage(int32 damage)
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
virtual void DoAction(int32)
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
virtual ObjectGuid GetGUID(int32=0) const
void SelectTargetList(std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
virtual void SetGUID(ObjectGuid const &, int32=0)
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void FinishSpell(CurrentSpellTypes spellType, SpellCastResult result=SPELL_CAST_OK)
MotionMaster * GetMotionMaster()
float GetCombatReach() const override
TempSummon * ToTempSummon()
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void NearTeleportTo(Position const &pos, bool casting=false)
float GetSpeedRate(UnitMoveType mtype) const
void SetSpeedRate(UnitMoveType mtype, float rate)
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Spell * GetCurrentSpell(CurrentSpellTypes spellType) const
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void setActive(bool isActiveObject)
Position GetNearPosition(float dist, float angle)
void GetNearPoint2D(WorldObject const *searcher, float &x, float &y, float distance, float absAngle) const
virtual void SetData(uint32, uint32)
at_lord_marrowgar_entrance()
bool TryHandleOnce(Player *player, AreaTriggerEntry const *) override
spell_marrowgar_bone_slice()
void CountTargets(std::list< WorldObject * > &targets)
void ClearSpikeImmunities()
void HandleSpikes(SpellEffIndex effIndex)
SpellCastResult CheckCast()
bool Validate(SpellInfo const *) override
void HandleScriptEffect(SpellEffIndex effIndex)
bool CanBeAppliedOn(Unit *target)
void HandleScriptEffect(SpellEffIndex effIndex)
void SelectTarget(std::list< WorldObject * > &targets)
#define RegisterIcecrownCitadelCreatureAI(ai_name)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
constexpr void SetOrientation(float orientation)
constexpr float GetPositionX() const
constexpr float GetPositionY() const
float GetExactDist2d(const float x, const float y) const
float GetAbsoluteAngle(float x, float y) const
constexpr void Relocate(float x, float y)
constexpr float GetOrientation() const
constexpr float GetPositionZ() const
void SetCombatMovement(bool allowMovement)
T const & RAID_MODE(T const &normal10, T const &normal25) const
void SetGUID(ObjectGuid const &guid, int32 id) override
void JustEngagedWith(Unit *) override
GuidVector _boneSpikeImmune
Milliseconds _boneStormDuration
Position const * GetLastColdflamePosition() const
void JustDied(Unit *) override
ObjectGuid GetGUID(int32 type) const override
ObjectGuid _coldflameTarget
void UpdateAI(uint32 diff) override
boss_lord_marrowgar(Creature *creature)
void MovementInform(uint32 type, uint32 id) override
void JustReachedHome() override
void DoAction(int32 action) override
void KilledUnit(Unit *victim) override
Position _coldflameLastPos
void JustDied(Unit *) override
npc_bone_spike(Creature *creature)
void UpdateAI(uint32 diff) override
void KilledUnit(Unit *victim) override
void IsSummonedBy(WorldObject *summonerWO) override
void PassengerBoarded(Unit *passenger, int8, bool apply) override
== Fields =======================================
void IsSummonedBy(WorldObject *ownerWO) override
npc_coldflame(Creature *creature)
void UpdateAI(uint32 diff) override