예제 #1
0
		/// <summary>
		/// Method to tell us if a player can interact with the lord to do certain tasks
		/// </summary>
		/// <param name="player">The player object</param>
		/// <param name="keep">The area object</param>
		/// <param name="type">The type of interaction</param>
		/// <returns></returns>
		public static bool IsAllowedToInteract(GamePlayer player, AbstractGameKeep keep, eInteractType type)
		{
			if (player.Client.Account.PrivLevel > 1)
				return true;
			if (player.Realm != keep.Realm)
				return false;
			if (player.Guild == null)
				return false;

			if (keep.InCombat)
			{
				log.DebugFormat("KEEPWARNING: {0} attempted to {1} {2} while in combat.", player.Name, type, keep.Name);
				return false;
			}

			switch (type)
			{
				case eInteractType.Claim:
					{
						if (keep.Guild != null)
							return false;
						foreach (AbstractGameKeep k in GameServer.KeepManager.GetAllKeeps())
						{
							if (k.Guild == player.Guild)
								return false;
						}
						if (player.Group == null)
							return false;
						if (player.Group.Leader != player)
							return false;
						if (player.Group.MemberCount < ServerProperties.Properties.CLAIM_NUM)
							return false;
						if (!player.GuildRank.Claim)
							return false;
						break;
					}
				case eInteractType.Release:
					{
						if (keep.Guild == null)
							return false;
						if (keep.Guild != player.Guild)
							return false;
						if (!player.GuildRank.Claim)
							return false;
						break;
					}
				case eInteractType.ChangeLevel:
					{
						if (keep.Guild == null)
							return false;
						if (keep.Guild != player.Guild)
							return false;
						if (!player.GuildRank.Claim)
							return false;
						break;
					}
			}
			return true;
		}
예제 #2
0
        /// <summary>
        /// Method to tell us if a player can interact with the lord to do certain tasks
        /// </summary>
        /// <param name="player">The player object</param>
        /// <param name="keep">The area object</param>
        /// <param name="type">The type of interaction</param>
        /// <returns></returns>
        public static bool IsAllowedToInteract(GamePlayer player, AbstractGameKeep keep, eInteractType type)
        {
            if (player.Client.Account.PrivLevel > 1)
            {
                return(true);
            }
            if (player.Realm != keep.Realm)
            {
                return(false);
            }
            if (player.Guild == null)
            {
                return(false);
            }

            if (keep.InCombat)
            {
                log.DebugFormat("KEEPWARNING: {0} attempted to {1} {2} while in combat.", player.Name, type, keep.Name);
                return(false);
            }

            switch (type)
            {
            case eInteractType.Claim:
            {
                if (keep.Guild != null)
                {
                    return(false);
                }
                foreach (AbstractGameKeep k in GameServer.KeepManager.GetAllKeeps())
                {
                    if (k.Guild == player.Guild)
                    {
                        return(false);
                    }
                }
                if (player.Group == null)
                {
                    return(false);
                }
                if (player.Group.Leader != player)
                {
                    return(false);
                }
                if (player.Group.MemberCount < ServerProperties.Properties.CLAIM_NUM)
                {
                    return(false);
                }
                if (!player.GuildRank.Claim)
                {
                    return(false);
                }
                break;
            }

            case eInteractType.Release:
            {
                if (keep.Guild == null)
                {
                    return(false);
                }
                if (keep.Guild != player.Guild)
                {
                    return(false);
                }
                if (!player.GuildRank.Claim)
                {
                    return(false);
                }
                break;
            }

            case eInteractType.ChangeLevel:
            {
                if (keep.Guild == null)
                {
                    return(false);
                }
                if (keep.Guild != player.Guild)
                {
                    return(false);
                }
                if (!player.GuildRank.Claim)
                {
                    return(false);
                }
                break;
            }
            }
            return(true);
        }