289 combatStalker->DespawnOrUnsummon();
361 combatStalker->SetCombatPulseDelay(5);
380 snobold->ExitVehicle();
382 snobold->SetUninteractible(
false);
467 if (gormok && gormok->
IsAlive())
705 if (!otherWorm->IsAlive())
709 otherWorm->DespawnOrUnsummon();
1107 if (caster->IsAIEnabled())
1160 if (!canBeRecalculated)
1163 canBeRecalculated =
false;
1170 int32 newAmount = slowEff->GetAmount() - 10;
1171 if (newAmount < -100)
1173 slowEff->ChangeAmount(newAmount);
1216 int32 const radius =
static_cast<int32>(((aurEff->
GetTickNumber() / 60.f) * 0.9f + 0.1f) * 10000.f * 2.f / 3.f);
1302 if (targets.empty())
1325 if (target->GetMap()->IsHeroic())
@ ENCOUNTER_FRAME_DISENGAGE
@ SPLINE_CHAIN_MOTION_TYPE
float frand(float min, float max)
#define RegisterSpellScript(spell_script)
#define RegisterSpellScriptWithArgs(spell_script, script_name,...)
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_CONTROL_VEHICLE
@ SPELL_AURA_MOD_DECREASE_SPEED
@ SPELL_AURA_PERIODIC_DUMMY
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraEffectRemoveFn(F, I, N, M)
@ UNIT_FLAG_NON_ATTACKABLE
@ MODEL_ACIDMAW_STATIONARY
@ MODEL_DREADSCALE_MOBILE
@ MODEL_DREADSCALE_STATIONARY
Position const CombatStalkerPosition
@ SPLINE_INITIAL_MOVEMENT
void AddSC_boss_northrend_beasts()
@ SPELL_SLIME_POOL_EFFECT
@ SPELL_FURIOUS_CHARGE_SUMMON
@ SPELL_SURGE_OF_ADRENALINE
@ ACTION_ENABLE_FIRE_BOMB
@ ACTION_DISABLE_FIRE_BOMB
@ EVENT_SELECT_CHARGE_TARGET
@ EVENT_START_JORGMUNGARS
uint32 GetTickNumber() const
SpellEffectInfo const & GetSpellEffectInfo() const
void PreventDefaultAction()
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
AuraEffect * GetEffect(uint8 effIndex) const
ObjectGuid GetCasterGUID() const
void Remove(AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
HookList< EffectApplyHandler > OnEffectApply
InstanceScript *const instance
void JustSummoned(Creature *summon) override
virtual void ExecuteEvent(uint32)
virtual void ScheduleTasks()
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetBoundary(CreatureBoundary const *boundary, bool negativeBoundaries=false)
void SetCombatPulseDelay(uint32 delay)
void SetCanMelee(bool canMelee, bool fleeFromMelee=false)
void SetImmuneToPC(bool apply) override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void SetTarget(ObjectGuid const &guid) override
void SetDisplayId(uint32 displayId, bool setNative=false) override
void Repeat(Milliseconds time)
void DelayEvents(Milliseconds delay)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
bool IsInPhase(uint8 phase) const
void CancelEvent(uint32 eventId)
void SetPhase(uint8 phase)
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
void DoCloseDoorOrButton(ObjectGuid guid)
Creature * GetCreature(uint32 type)
virtual ObjectGuid GetGuidData(uint32 type) const override
void DoUseDoorOrButton(ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
CreatureBoundary const * GetBossBoundary(uint32 id) const
void SendEncounterUnit(EncounterFrameType type, Unit const *unit, Optional< int32 > param1={}, Optional< int32 > param2={})
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=EVENT_JUMP, bool hasOrientation=false, JumpArrivalCastArgs const *arrivalCast=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
void MoveAlongSplineChain(uint32 pointId, uint16 dbChainId, bool walk)
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={}, Optional< float > speed={}, MovementWalkRunSpeedSelectionMode speedSelectionMode=MovementWalkRunSpeedSelectionMode::Default, Optional< float > closeEnoughDistance={})
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false, Unit const *target=nullptr, Movement::SpellEffectExtraData const *spellEffectExtraData=nullptr)
static ObjectGuid const Empty
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
SnobolledTargetSelector()
bool operator()(Unit *unit) const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
void Summon(Creature const *summon)
virtual void DoAction(int32)
void AttackStartCaster(Unit *victim, float dist)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
virtual bool CanAIAttack(Unit const *) const
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void EnterVehicle(Unit *base, int8 seatId=-1)
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetControlled(bool apply, UnitState state)
float GetCollisionHeight() const override
void UpdateSpeed(UnitMoveType mtype)
Unit * GetVehicleBase() const
MotionMaster * GetMotionMaster()
void SetUninteractible(bool apply)
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
void HandleEmoteCommand(Emote emoteId, Player *target=nullptr, Trinity::IteratorPair< int32 const * > spellVisualKitIds={}, int32 sequenceVariation=0)
void SetUnitFlag(UnitFlags flags)
Vehicle * GetVehicleKit() const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveUnitFlag(UnitFlags flags)
Unit * GetPassenger(int8 seatId) const
Gets a passenger on specified seat.
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
void setActive(bool isActiveObject)
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void OnPeriodic(AuraEffect const *)
bool Validate(SpellInfo const *spellInfo) override
void HandleScriptEffect(SpellEffIndex)
void HandleSpeed(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *) override
void CheckTargets(std::list< WorldObject * > &targets)
void HandleScriptEffect(SpellEffIndex effIndex)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
void HandleDummy(AuraEffect const *)
bool Validate(SpellInfo const *) override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void CalculateAmount(AuraEffect const *aurEff, int32 &amount, bool &canBeRecalculated)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
bool Validate(SpellInfo const *spellInfo) override
void PeriodicTick(AuraEffect const *aurEff)
bool Validate(SpellInfo const *) override
spell_jormungars_snakes_spray(uint32 spellId)
void HandleScript(SpellEffIndex)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void SetCombatMovement(bool allowMovement)
boss_acidmaw(Creature *creature)
void MovementInform(uint32 type, uint32 pointId) override
boss_dreadscale(Creature *creature)
void PassengerBoarded(Unit *who, int8 seatId, bool apply) override
== Fields =======================================
void MovementInform(uint32 type, uint32 pointId) override
void ScheduleTasks() override
void ExecuteEvent(uint32 eventId) override
boss_gormok(Creature *creature)
void DoAction(int32 action) override
void MovementInform(uint32 type, uint32 pointId) override
void ExecuteEvent(uint32 eventId) override
boss_icehowl(Creature *creature)
void ScheduleTasks() override
void JustSummoned(Creature *summoned) override
void JustDied(Unit *) override
void ExecuteEvent(uint32 eventId) override
void ScheduleTasks() override
uint32 GetOtherWormData(uint32 wormEntry)
boss_jormungarAI(Creature *creature, uint32 bossId)
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
void HandleInstanceProgress()
void EnterEvadeMode(EvadeReason why) override
void JustEngagedWith(Unit *) override
void HandleWithHeroicEvents()
void UpdateAI(uint32 diff) override
void HandleInitialMovement()
void JustDied(Unit *) override
boss_northrend_beastsAI(Creature *creature, uint32 bossId)
InstanceScript * _instance
void UpdateAI(uint32 diff) override
void DoAction(int32 action) override
npc_beasts_combat_stalker(Creature *creature)
npc_fire_bomb(Creature *creature)
npc_jormungars_slime_pool(Creature *creature)
void SetGUID(ObjectGuid const &guid, int32 id) override
InstanceScript * _instance
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
void DoAction(int32 action) override
void JustDied(Unit *) override
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
npc_snobold_vassal(Creature *creature)
bool CanAIAttack(Unit const *who) const override
constexpr Position ToCCommonLoc[]
@ NPC_BEASTS_COMBAT_STALKER
@ ACTION_START_JORMUNGARS
@ DATA_GORMOK_THE_IMPALER
@ DATA_BEASTS_COMBAT_STALKER
#define RegisterTrialOfTheCrusaderCreatureAI(ai_name)