Example #1
0
        /// <summary>
        /// Returns TRUE if a player currently meets all of the requirements for owning their house (allegiance rank)
        /// </summary>
        private static bool HasRequirements(PlayerHouse playerHouse)
        {
            if (!PropertyManager.GetBool("house_purchase_requirements").Item)
            {
                return(true);
            }

            var slumlord = playerHouse.House.SlumLord;

            if (slumlord.AllegianceMinLevel == null)
            {
                return(true);
            }

            var allegianceMinLevel = PropertyManager.GetLong("mansion_min_rank", -1).Item;

            if (allegianceMinLevel == -1)
            {
                allegianceMinLevel = slumlord.AllegianceMinLevel.Value;
            }

            var player = PlayerManager.FindByGuid(playerHouse.PlayerGuid);

            if (player == null)
            {
                log.Info($"{playerHouse.PlayerName}.HasRequirements() - couldn't find player");
                return(false);
            }

            // ensure allegiance is loaded
            var allegiance = AllegianceManager.GetAllegiance(player);

            AllegianceNode allegianceNode = null;

            if (allegiance != null)
            {
                allegiance.Members.TryGetValue(player.Guid, out allegianceNode);
            }

            var rank = allegianceNode != null ? allegianceNode.Rank : 0;

            if (allegiance == null || rank < allegianceMinLevel)
            {
                log.Info($"{playerHouse.PlayerName}.HasRequirements() - allegiance rank {rank} < {allegianceMinLevel}");
                return(false);
            }
            return(true);
        }
Example #2
0
        public static bool IsAccountAtMaxCharacterSlots(string accountName)
        {
            var slotsAvailable      = (int)PropertyManager.GetLong("max_chars_per_account").Item;
            var onlinePlayersTotal  = 0;
            var offlinePlayersTotal = 0;

            playersLock.EnterReadLock();
            try
            {
                onlinePlayersTotal  = onlinePlayers.Count(a => a.Value.Account.AccountName.Equals(accountName, StringComparison.OrdinalIgnoreCase));
                offlinePlayersTotal = offlinePlayers.Count(a => a.Value.Account.AccountName.Equals(accountName, StringComparison.OrdinalIgnoreCase));
            }
            finally
            {
                playersLock.ExitReadLock();
            }

            return((onlinePlayersTotal + offlinePlayersTotal) >= slotsAvailable);
        }
Example #3
0
        public static bool HasRequirements(PlayerHouse playerHouse)
        {
            if (!PropertyManager.GetBool("house_purchase_requirements").Item)
            {
                return(true);
            }

            var slumlord = playerHouse.House.SlumLord;

            if (slumlord.AllegianceMinLevel == null)
            {
                return(true);
            }

            var allegianceMinLevel = PropertyManager.GetLong("mansion_min_rank", -1).Item;

            if (allegianceMinLevel == -1)
            {
                allegianceMinLevel = slumlord.AllegianceMinLevel.Value;
            }

            var player = PlayerManager.FindByGuid(playerHouse.PlayerGuid);

            if (player == null)
            {
                log.Info($"{playerHouse.PlayerName}.HasRequirements() - couldn't find player");
                return(false);
            }

            if (player.Allegiance == null || player.AllegianceNode.Rank < allegianceMinLevel)
            {
                log.Info($"{playerHouse.PlayerName}.HasRequirements() - allegiance rank {player.AllegianceNode.Rank} < {allegianceMinLevel}");
                return(false);
            }
            return(true);
        }