/// <summary> /// Add Passenger /// </summary> public void Enter(Unit passenger) { this._passenger = passenger; passenger.m_vehicleSeat = this; passenger.MovementFlags |= MovementFlags.OnTransport; passenger.TransportPosition = Entry.AttachmentOffset; passenger.TransportOrientation = Entry.PassengerYaw; Vehicle._passengerCount++; if (IsDriverSeat) { Vehicle.Charmer = passenger; passenger.Charm = Vehicle; Vehicle.UnitFlags |= UnitFlags.Possessed; } var chr = passenger as Character; var pos = Vehicle.Position; // this will be null if its not a character if (chr != null) { VehicleHandler.Send_SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA(chr); VehicleHandler.SendBreakTarget(chr, Vehicle); } MovementHandler.SendEnterTransport(passenger); if (chr != null) { MiscHandler.SendCancelAutoRepeat(chr, Vehicle); //var orientation = Vehicle.m_vehicleSeat != null ? Vehicle.m_vehicleSeat.Entry.PassengerYaw : 0; //var moveflags = Vehicle.m_vehicleSeat != null ? MonsterMoveFlags.Flag_0x1000000 : MonsterMoveFlags.Walk; //MovementHandler.SendMoveToPacket(Vehicle, ref pos, orientation, 0, moveflags); PetHandler.SendVehicleSpells(chr, Vehicle); } passenger.IncMechanicCount(SpellMechanic.Rooted, true); passenger.HasPermissionToMove = false; passenger.MovementFlags |= MovementFlags.Root; if (chr != null) { chr.SetMover(Vehicle, IsDriverSeat); chr.FarSight = Vehicle.EntityId; } }