/// <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); }
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); }
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); }