Example #1
0
    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));
    }
Example #2
0
    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));
    }
Example #3
0
 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));
     }
 }
Example #4
0
    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);
    }