62 SlipstreamInfo(std::string_view
const& stringId, std::string_view
const& targetStringId,
uint32 vehicleId,
bool spellClick,
uint32 chainSpellId) :
115 if (slipstreamInfo.SpellClick)
137 if (Player* player = ObjectAccessor::FindPlayer(playerGuid))
138 if (player->IsOnVehicle(caster))
139 caster->CastSpell(player, chainSpellId);
184 if (!vehicle->
HasStringId(slipstreamInfo.StringId))
228 target.
Relocate(landingZone->GetPosition());
232 target.
Relocate(landingZone->GetPosition());
#define RegisterSpellScript(spell_script)
@ TARGET_DEST_NEARBY_ENTRY
@ TARGET_UNIT_NEARBY_ENTRY
#define SpellObjectTargetSelectFn(F, I, N)
#define SpellDestinationTargetSelectFn(F, I, N)
@ UNIT_NPC_FLAG_SPELLCLICK
@ UNIT_FLAG_UNINTERACTIBLE
bool HasStringId(std::string_view id) const
void RescheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void AddEventAtOffset(BasicEvent *event, Milliseconds offset)
Creature * GetCreature(uint32 type)
static ObjectGuid GetGUID(Object const *o)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
HookList< DestinationTargetSelectHandler > OnDestinationTargetSelect
HookList< ObjectTargetSelectHandler > OnObjectTargetSelect
SpellInfo const * GetSpellInfo() const
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
Creature * GetVehicleCreatureBase() const
void SetNpcFlag(NPCFlags flags)
bool CreateVehicleKit(uint32 id, uint32 creatureEntry, bool loading=false)
void RemoveVehicleKit(bool onRemoveFromWorld=false)
Vehicle * GetVehicleKit() const
void RemoveUnitFlag(UnitFlags flags)
VehicleEntry const * GetVehicleInfo() const
Creature * FindNearestCreatureWithOptions(float range, FindCreatureOptions const &options) const
InstanceScript * GetInstanceScript() const
void SetDestination(SpellDestination &target)
bool Validate(SpellInfo const *) override
InstanceScript * _instance
void SelectNextSlipstream(WorldObject *&target)
std::string_view _targetStringId
SlipstreamInfo(std::string_view const &stringId, std::string_view const &targetStringId, uint32 vehicleId, bool spellClick, uint32 chainSpellId)
std::string_view TargetStringId
std::string_view StringId
void Relocate(Position const &pos)
npc_vp_slipstream_landing_zone(Creature *creature)
void UpdateAI(uint32 diff) override
void PassengerBoarded(Unit *, int8, bool apply) override
== Fields =======================================
void InitializeAI() override
npc_vp_slipstream(Creature *creature)
void PassengerBoarded(Unit *who, int8, bool apply) override
== Fields =======================================
@ SPELL_SLIPSTREAM_SHORTCUT_ASAAD_TELEPORT
@ SPELL_SLIPSTREAM_SHORTCUT_ALTAIRUS
@ SPELL_SLIPSTREAM_FOURTH
@ SPELL_SLIPSTREAM_SHORTCUT_ASAAD
@ SPELL_SLIPSTREAM_SECOND
@ SPELL_SLIPSTREAM_SHORTCUT_ALTAIRUS_TELEPORT
@ SPELL_GENERIC_EJECT_ALL_PASSENGERS
static constexpr uint32 const EVENT_EJECT_ALL_PASSENGERS
void AddSC_vortex_pinnacle()
@ VEHICLE_ID_SLIPSTREAM_1
@ VEHICLE_ID_SLIPSTREAM_ENTRANCE_1
@ VEHICLE_ID_SLIPSTREAM_2
@ VEHICLE_ID_SLIPSTREAM_4
@ VEHICLE_ID_SLIPSTREAM_BACK_TO_ENTRANCE
@ VEHICLE_ID_SLIPSTREAM_ENTRANCE_2
@ VEHICLE_ID_SLIPSTREAM_5
@ VEHICLE_ID_SLIPSTREAM_3
static std::array< SlipstreamInfo const, 11 > const SlipstreamData
@ DATA_SLIPSTREAM_LANDING_ZONE_1
@ DATA_SLIPSTREAM_LANDING_ZONE_2
#define RegisterVortexPinnacleCreatureAI(ai_name)