Example #1
0
        /// <summary>
        /// Handles the mount skill.
        /// </summary>
        /// <param name="player">The player.</param>
        /// <param name="spellPacket">The spell packet.</param>
        /// <returns>True if the skill was handled correctly.</returns>
        public static bool Handle(Models.Entities.Player player, Models.Packets.Spells.SpellPacket spellPacket)
        {
            if (player.Equipments.Get(Enums.ItemPosition.Steed, false) == null)
            {
                return(false);
            }

            if (player.ContainsStatusFlag(Enums.StatusFlag.Riding))
            {
                player.RemoveStatusFlag(Enums.StatusFlag.Riding);
            }
            else if (player.Stamina < 100)
            {
                return(false);
            }
            else
            {
                player.AddStatusFlag(Enums.StatusFlag.Riding);
            }

            player.ClientSocket.Send(new Models.Packets.Entities.SteedVigorPacket
            {
                Type   = 2,
                Amount = 9001
            });

            TargetFinalization.SkillFinalize(player, null, spellPacket, 0);

            return(true);
        }
        /// <summary>
        /// Validates a pk target for the player.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <returns>The status of the validation. (0 = success)</returns>
        public int ValidPkTarget(Models.Entities.Player target)
        {
            if (Player.Map.MapType == Database.Models.DbMap.DbMapType.NoPK)
            {
                return(1);
            }

            switch (Player.PKMode)
            {
            case Enums.PKMode.PK:
                return(0);

            case Enums.PKMode.Capture:
                return(target.ContainsStatusFlag(Enums.StatusFlag.BlueName) ? 0 : 2);

            case Enums.PKMode.Team:
            {
                if (Player.Team != null && target.Team != null)
                {
                    if (Player.Team.GetMembers().Contains(target))
                    {
                        return(3);
                    }
                }

                if (Player.Guild != null && target.Guild != null)
                {
                    if (Player.Guild.Id == target.Guild.Id)
                    {
                        return(4);
                    }

                    if (Player.Guild.IsAllie(target.Guild))
                    {
                        return(5);
                    }
                }

                return(0);
            }

            default:
                return(6);
            }
        }