185 {-814.59f, -64.54f, 429.92f, 5.969f},
186 {-784.37f, -33.31f, 429.92f, 5.096f},
187 {-808.99f, -52.10f, 429.92f, 5.668f},
188 {-798.59f, -44.00f, 429.92f, 5.663f},
189 {-812.83f, -77.71f, 429.92f, 0.046f},
194 {-717.83f, -106.56f, 430.02f, 0.122f},
195 {-717.83f, -114.23f, 430.44f, 0.122f},
196 {-717.83f, -109.70f, 430.22f, 0.122f},
197 {-718.45f, -118.24f, 430.26f, 0.052f},
198 {-718.45f, -123.58f, 430.41f, 0.085f},
203 {-724.12f, -176.64f, 430.03f, 2.543f},
204 {-766.70f, -225.03f, 430.50f, 1.710f},
205 {-729.54f, -186.26f, 430.12f, 1.902f},
206 {-756.01f, -219.23f, 430.50f, 2.369f},
207 {-798.01f, -227.24f, 429.84f, 1.446f},
212 {377.02f, -119.10f, 409.81f, 0.0f},
213 {185.62f, -119.10f, 409.81f, 0.0f},
214 {377.02f, 54.78f, 409.81f, 0.0f},
215 {185.62f, 54.78f, 409.81f, 0.0f},
336 vehicleKit->InstallAllAccessories(
false);
419 lift->GetMotionMaster()->MoveRandom(100);
438 for (
uint8 i = 0; i < 7; ++i)
441 thorim->GetMotionMaster()->MoveRandom(100);
452 for (
uint8 i = 0; i < 7; ++i)
455 hodir->GetMotionMaster()->MoveRandom(100);
462 for (
int32 i = 0; i < 4; ++i)
502 if (action && action <= 4)
603 return GetUlduarAI<boss_flame_leviathanAI>(creature);
639 turret->ReplaceAllUnitFlags(
UnitFlags(0));
640 turret->AI()->AttackStart(who);
659 device->ReplaceAllUnitFlags(
UnitFlags(0));
667 return GetUlduarAI<boss_flame_leviathan_seatAI>(creature);
723 return GetUlduarAI<boss_flame_leviathan_defense_cannonAI>(creature);
752 return GetUlduarAI<boss_flame_leviathan_defense_turretAI>(creature);
769 if (!spellClickHandled)
781 player->ExitVehicle();
789 return GetUlduarAI<boss_flame_leviathan_overload_deviceAI>(creature);
820 return GetUlduarAI<boss_flame_leviathan_safety_containerAI>(creature);
866 container->EnterVehicle(
me);
889 return GetUlduarAI<npc_mechanoliftAI>(creature);
923 return GetUlduarAI<npc_pool_of_tarAI>(creature);
958 return GetUlduarAI<npc_colossusAI>(creature);
996 return GetUlduarAI<npc_thorims_hammerAI>(creature);
1059 return GetUlduarAI<npc_mimirons_infernoAI>(creature);
1097 return GetUlduarAI<npc_hodirs_furyAI>(creature);
1146 return GetUlduarAI<npc_freyas_wardAI>(creature);
1194 return GetUlduarAI<npc_freya_ward_summonAI>(creature);
1234 return GetUlduarAI<npc_brann_bronzebeard_ulduar_introAI>(creature);
1288 delorah->GetMotionMaster()->MovePoint(0, brann->GetPositionX() - 4, brann->GetPositionY(), brann->GetPositionZ());
1303 return GetUlduarAI<npc_lorekeeperAI>(creature);
1337 trigger->DisappearAndDie();
1343 return GetUlduarAI<go_ulduar_towerAI>(go);
1723 if (!creatureTarget)
1740 for (SeatMap::const_iterator itr = vehicle->
Seats.begin(); itr != vehicle->
Seats.end(); ++itr)
1741 if (itr->second.Passenger.Guid.IsPlayer())
1763 if (targets.empty())
1812 if (
Unit* passenger = vehicle->GetPassenger(damage - 1))
1815 std::list<WorldObject*> targetList;
1819 float minDist = 99 * 99;
1820 Unit* target =
nullptr;
1821 for (std::list<WorldObject*>::iterator itr = targetList.begin(); itr != targetList.end(); ++itr)
1825 if (
Vehicle* seat = unit->GetVehicleKit())
1826 if (!seat->GetPassenger(0))
1827 if (
Unit* device = seat->GetPassenger(2))
1842 passenger->ExitVehicle();
#define ASSERT_NOTNULL(pointer)
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
uint32 urand(uint32 min, uint32 max)
#define RegisterSpellScript(spell_script)
@ SPELL_EFFECT_SCRIPT_EFFECT
@ TARGET_UNIT_SRC_AREA_ENEMY
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_CONTROL_VEHICLE
@ SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN
@ SPELL_AURA_PERIODIC_DUMMY
#define BeforeSpellHitFn(F)
#define SpellEffectFn(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_NPC_FLAG_SPELLCLICK
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_UNINTERACTIBLE
@ CURRENT_CHANNELED_SPELL
@ NPC_FREYA_TARGET_BEACON
@ NPC_HODIR_TARGET_BEACON
@ NPC_THORIM_TARGET_BEACON
@ NPC_ULDUAR_GAUNTLET_GENERATOR
@ NPC_MIMIRON_TARGET_BEACON
@ GOSSIP_MENU_BRANN_BRONZEBEARD
@ GOSSIP_OPTION_BRANN_BRONZEBEARD
@ DATA_ORBIT_ACHIEVEMENTS
Position const InfernoStart
@ GOSSIP_OPTION_LORE_KEEPER
@ GOSSIP_MENU_LORE_KEEPER
@ SPELL_BUFF_TOWER_OF_FLAMES
@ SPELL_BUFF_TOWER_OF_FR0ST
@ SPELL_FREYA_S_WARD_EFFECT_2
@ SPELL_DUST_CLOUD_IMPACT
@ SPELL_FREYA_S_WARD_EFFECT_1
@ SPELL_BUFF_TOWER_OF_LIFE
@ SPELL_BUFF_TOWER_OF_STORMS
@ SPELL_MIMIRON_S_INFERNO
@ SPELL_INVIS_AND_STEALTH_DETECT
Position const PosSiege[VEHICLE_SPAWNS]
Position const FreyaBeacons[FREYA_SPAWNS]
static constexpr uint32 PATH_ESCORT_MIMIRONS_INFERNO
void AddSC_boss_flame_leviathan()
Position const PosDemolisher[VEHICLE_SPAWNS]
@ EVENT_MIMIRON_S_INFERNO
Position const PosChopper[VEHICLE_SPAWNS]
SpellEffectInfo const & GetSpellEffectInfo() const
HookList< EffectPeriodicHandler > OnEffectPeriodic
WorldObject * GetOwner() const
HookList< EffectApplyHandler > OnEffectRemove
HookList< EffectApplyHandler > OnEffectApply
void JustEngagedWith(Unit *who) override
@ EVADE_REASON_NO_HOSTILES
Creature * DoSummonFlyer(uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
Creature * DoSummon(uint32 entry, Position const &pos, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
void SetHomePosition(float x, float y, float z, float o)
void RemoveLootMode(uint16 lootMode)
void SetDisplayId(uint32 modelId) override
void GetHomePosition(float &x, float &y, float &z, float &ori) const
bool HasReactState(ReactStates state) const
bool IsEngaged() const override
void SetReactState(ReactStates st)
CreatureTemplate const * GetCreatureTemplate() const
bool HasLootMode(uint16 lootMode)
void SetLootMode(uint16 lootMode)
void DelayEvents(Milliseconds delay)
void RescheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
void CancelEvent(EventId eventId)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
bool operator()(WorldObject *target) const
FlameLeviathanPursuedTargetSelector()
Creature * GetCreature(uint32 type)
void LoadGrid(float x, float y)
float GetHeight(float x, float y, float z, bool checkVMap=true, float maxSearchDist=DEFAULT_HEIGHT_SEARCH) const
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
void MoveCharge(float x, float y, float z, float speed=SPEED_CHARGE, uint32 id=EVENT_CHARGE, bool generatePath=false)
void MoveRandom(float wanderDistance=0.0f)
static ObjectGuid const Empty
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
PlayerMenu * PlayerTalkClass
WorldLocation const * GetDstPos() const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
void PreventHitEffect(SpellEffIndex effIndex)
HookList< BeforeHitHandler > BeforeHit
WorldLocation const * GetExplTargetDest() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
SpellCastTargets m_targets
void DoMeleeAttackIfReady()
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 ClearUnitState(uint32 f)
Vehicle * GetVehicle() const
bool IsWithinCombatRange(Unit const *obj, float dist2compare) const
Creature * GetVehicleCreatureBase() const
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
Unit * GetVehicleBase() const
MotionMaster * GetMotionMaster()
Aura * AddAura(uint32 spellId, Unit *target)
void RemoveNpcFlag(NPCFlags flags)
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) const
void AddUnitState(uint32 f)
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
void InterruptSpell(CurrentSpellTypes spellType, bool withDelayed=true, bool withInstant=true, SpellCastResult result=SPELL_FAILED_INTERRUPTED, Optional< SpellCastResult > resultOther={})
uint32 GetFaction() const override
virtual void TextEmote(std::string_view text, WorldObject const *target=nullptr, bool isBossEmote=false)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
bool HasUnitState(const uint32 f) const
void SetUnitFlag(UnitFlags flags)
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Vehicle * GetVehicleKit() const
void resetAttackTimer(WeaponAttackType type=BASE_ATTACK)
void RemoveUnitFlag(UnitFlags flags)
Unit * GetBase() const
May be called from scripts.
Unit * GetPassenger(int8 seatId) const
Gets a passenger on specified seat.
bool HasEmptySeat(int8 seatId) const
Checks if vehicle's seat specified by 'seatId' is empty.
SeatMap Seats
The collection of all seats on the vehicle. Including vacant ones.
uint32 GetPhaseMask() const
bool IsWithinDist2d(float x, float y, float dist) const
InstanceScript * GetInstanceScript() const
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)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
virtual void ProcessEvent(WorldObject *, uint32)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
bool OnCheck(Player *, Unit *target) override
achievement_nuked_from_orbit()
bool OnCheck(Player *, Unit *target) override
bool OnCheck(Player *, Unit *target) override
achievement_orbital_bombardment()
bool OnCheck(Player *, Unit *target) override
achievement_orbital_devastation()
bool OnCheck(Player *, Unit *target) override
bool OnCheck(Player *source, Unit *) override
achievement_three_car_garage_chopper()
achievement_three_car_garage_demolisher()
bool OnCheck(Player *source, Unit *) override
bool OnCheck(Player *source, Unit *) override
achievement_three_car_garage_siege()
bool OnCheck(Player *, Unit *target) override
boss_flame_leviathan_defense_cannon()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
boss_flame_leviathan_defense_turret()
CreatureAI * GetAI(Creature *creature) const override
boss_flame_leviathan_overload_device()
CreatureAI * GetAI(Creature *creature) const override
boss_flame_leviathan_safety_container()
boss_flame_leviathan_seat()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
GameObjectAI * GetAI(GameObject *go) const override
CreatureAI * GetAI(Creature *creature) const override
npc_brann_bronzebeard_ulduar_intro()
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
PrepareSpellScript(spell_auto_repair_SpellScript)
void HandleScript(SpellEffIndex)
void CheckCooldownForTarget(SpellMissInfo missInfo)
SpellScript * GetSpellScript() const override
void OnApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_load_into_catapult_AuraScript)
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
AuraScript * GetAuraScript() const override
spell_load_into_catapult()
void PeriodicTick(AuraEffect const *)
bool Validate(SpellInfo const *) override
PrepareAuraScript(spell_overload_circuit)
void FilterTargetsSubsequently(std::list< WorldObject * > &targets)
PrepareSpellScript(spell_pursue_SpellScript)
void FilterTargets(std::list< WorldObject * > &targets)
SpellScript * GetSpellScript() const override
void OnRemove(AuraEffect const *, AuraEffectHandleModes)
void OnApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_systems_shutdown_AuraScript)
AuraScript * GetAuraScript() const override
PrepareAuraScript(spell_tar_blaze)
bool Validate(SpellInfo const *spellInfo) override
void PeriodicTick(AuraEffect const *aurEff)
PrepareSpellScript(spell_vehicle_throw_passenger_SpellScript)
void HandleScript(SpellEffIndex)
spell_vehicle_throw_passenger()
SpellScript * GetSpellScript() const override
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Player * GetPlayer(Map const *, ObjectGuid const &guid)
void RandomResize(C &container, std::size_t requestedSize)
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
void Start(bool isActiveAttacker=true, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false)
bool HasEscortState(uint32 escortState)
void LoadPath(uint32 pathId)
void UpdateAI(uint32 diff) override
float GetPositionZ() const
float GetPositionX() const
void GetPosition(float &x, float &y) const
float GetPositionY() const
float GetExactDistSq(float x, float y, float z) const
void AttackStart(Unit *) override
T const & RAID_MODE(T const &normal10, T const &normal25) const
void JustEngagedWith(Unit *who) override
void InitializeAI() override
uint32 GetData(uint32 type) const override
void JustDied(Unit *) override
void SpellHitTarget(WorldObject *target, SpellInfo const *spellInfo) override
void MovementInform(uint32, uint32 id) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void DoBatteringRamIfReady()
void DoAction(int32 action) override
void UpdateAI(uint32 diff) override
void SetData(uint32 id, uint32 data) override
boss_flame_leviathanAI(Creature *creature)
void UpdateAI(uint32 diff) override
bool CanAIAttack(Unit const *who) const override
boss_flame_leviathan_defense_cannonAI(Creature *creature)
void DamageTaken(Unit *who, uint32 &damage, DamageEffectType, SpellInfo const *) override
bool CanAIAttack(Unit const *who) const override
boss_flame_leviathan_defense_turretAI(Creature *creature)
boss_flame_leviathan_overload_deviceAI(Creature *creature)
void OnSpellClick(Unit *, bool spellClickHandled) override
boss_flame_leviathan_safety_containerAI(Creature *creature)
void UpdateAI(uint32) override
void JustDied(Unit *) override
InstanceScript * instance
boss_flame_leviathan_seatAI(Creature *creature)
void PassengerBoarded(Unit *who, int8 seatId, bool apply) override
== Fields =======================================
go_ulduar_towerAI(GameObject *go)
InstanceScript * instance
void Destroyed(WorldObject *, uint32) override
npc_brann_bronzebeard_ulduar_introAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
InstanceScript * _instance
void UpdateAI(uint32) override
InstanceScript * instance
npc_colossusAI(Creature *creature)
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
npc_freya_ward_summonAI(Creature *creature)
void UpdateAI(uint32 diff) override
npc_freyas_wardAI(Creature *creature)
npc_hodirs_furyAI(Creature *creature)
void UpdateAI(uint32) override
void MoveInLineOfSight(Unit *who) override
void DoAction(int32 action) override
npc_lorekeeperAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
InstanceScript * _instance
void UpdateAI(uint32 diff) override
npc_mechanoliftAI(Creature *creature)
void JustDied(Unit *) override
void MovementInform(uint32 type, uint32 id) override
void UpdateAI(uint32 diff) override
npc_mimirons_infernoAI(Creature *creature)
npc_pool_of_tarAI(Creature *creature)
void UpdateAI(uint32) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void UpdateAI(uint32) override
npc_thorims_hammerAI(Creature *creature)
void MoveInLineOfSight(Unit *who) override
@ DATA_BRANN_BRONZEBEARD_INTRO
@ DATA_LORE_KEEPER_OF_NORGANNON
@ EVENT_TOWER_OF_STORM_DESTROYED
@ EVENT_TOWER_OF_LIFE_DESTROYED
@ EVENT_TOWER_OF_FLAMES_DESTROYED
@ EVENT_TOWER_OF_FROST_DESTROYED
@ NPC_SALVAGED_SIEGE_ENGINE
@ NPC_SALVAGED_DEMOLISHER
@ ACTION_TOWER_OF_FLAMES_DESTROYED
@ ACTION_TOWER_OF_STORM_DESTROYED
@ ACTION_MOVE_TO_CENTER_POSITION
@ ACTION_TOWER_OF_LIFE_DESTROYED
@ ACTION_TOWER_OF_FROST_DESTROYED