bool PassengerEjectEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) { if (!m_vehicle.GetVehicleInfo()) return true; VehicleKit* pVehicle = m_vehicle.GetVehicleKit(); if (!pVehicle) return true; Unit* passenger = pVehicle->GetPassenger(m_seatId); if (passenger && passenger->IsInWorld() && passenger->hasUnitState(UNIT_STAT_ON_VEHICLE)) { uint32 controlSpell = 0; Unit::AuraList const& controlAuras = m_vehicle.GetAurasByType(SPELL_AURA_CONTROL_VEHICLE); for(Unit::AuraList::const_iterator i = controlAuras.begin(); i != controlAuras.end(); ++i) { if ((*i)->GetCasterGuid() == passenger->GetObjectGuid()) { controlSpell = (*i)->GetId(); break; } } if (controlSpell) { m_vehicle.RemoveAurasByCasterSpell(controlSpell, passenger->GetObjectGuid()); } else passenger->ExitVehicle(); } return true; }
bool PassengerEjectEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) { if (!m_vehicle.GetVehicleInfo()) return true; VehicleKit* pVehicle = m_vehicle.GetVehicleKit(); if (!pVehicle) return true; Unit* passenger = pVehicle->GetPassenger(m_seatId); if (passenger && passenger->IsInWorld() && passenger->hasUnitState(UNIT_STAT_ON_VEHICLE)) { if (!m_vehicle.RemoveSpellsCausingAuraByCaster(SPELL_AURA_CONTROL_VEHICLE, passenger->GetObjectGuid())) passenger->ExitVehicle(); } return true; }