Example #1
0
		/// <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;
			}
		}