public override void Execute(GameCommandTrigger trigger) { Player player = trigger.Session.Player; Character fieldPlayer = player.FieldPlayer; int mountId = trigger.Get <int>("mountId"); byte enable = trigger.Get <byte>("enable"); if (enable is 0) { player.Mount = null; // Remove mount from player trigger.Session.FieldManager.BroadcastPacket(MountPacket.StopRide(fieldPlayer, true)); trigger.Session.Send(KeyTablePacket.SendHotbars(player.GameOptions)); return; } IFieldObject <Mount> fieldMount = trigger.Session.FieldManager.RequestFieldObject(new Mount { Type = RideType.Default, Id = mountId, Uid = 0 }); fieldMount.Value.Players[0] = fieldPlayer; player.Mount = fieldMount; trigger.Session.FieldManager.BroadcastPacket(MountPacket.StartRide(fieldPlayer)); }
private static void HandleStopRide(GameSession session, PacketReader packet) { packet.ReadByte(); bool forced = packet.ReadBool(); // Going into water without amphibious riding session.Player.Mount = null; // Remove mount from player session.FieldManager.BroadcastPacket(MountPacket.StopRide(session.Player.FieldPlayer, forced)); }
public override void Handle(GameSession session, PacketReader packet) { if (session.Player.OnAirMount) { session.Player.OnAirMount = false; } if (session.Player.Mount != null) { session.FieldManager.BroadcastPacket(MountPacket.StopRide(session.FieldPlayer, false)); } }
public override void Handle(GameSession session, PacketReader packet) { float distance = packet.ReadFloat(); if (distance > Block.BLOCK_SIZE * 6) { // TODO: Check if player has Safe ride enabled if (session.Player.Mount != null) { session.FieldManager.BroadcastPacket(MountPacket.StopRide(session.Player.FieldPlayer)); } session.Player.FallDamage(); } if (session.Player.OnAirMount) { session.Player.OnAirMount = false; } }
public override void Handle(GameSession session, PacketReader packet) { float distance = packet.ReadFloat(); if (distance > Block.BLOCK_SIZE * 6) { if (session.Player.Mount != null && session.Player.Levels.PrestigeLevel < (int)PrestigePerk.SafeRiding) { session.FieldManager.BroadcastPacket(MountPacket.StopRide(session.Player.FieldPlayer)); } session.Player.FallDamage(); TrophyManager.OnFallDamage(session.Player); } if (session.Player.OnAirMount) { session.Player.OnAirMount = false; } TrophyManager.OnFall(session.Player, distance); }