public bool IsValid(DropTableItemConfiguration config) { if (config is null) { return(true); } var envMan = EnvMan.instance; if (config.ConditionNotDay && envMan.IsDay()) { return(false); } if (config.ConditionNotAfternoon && envMan.IsAfternoon()) { return(false); } if (config.ConditionNotNight && envMan.IsNight()) { return(false); } return(true); }
public bool IsValid(Vector3 position, DropTableItemConfiguration config) { if (config is null) { return(true); } if (string.IsNullOrWhiteSpace(config.ConditionBiomes.Value)) { return(true); } var allowedBiomes = config.ConditionBiomes.Value.SplitByComma(true); var currentBiome = Heightmap.FindBiome(position); var currentBiomeCleaned = currentBiome.ToString().ToUpperInvariant(); return(allowedBiomes.Any(x => x == currentBiomeCleaned)); }
public bool IsValid(Vector3 position, DropTableItemConfiguration config) { if (string.IsNullOrWhiteSpace(config?.ConditionLocations?.Value)) { return(true); } var locations = config.ConditionLocations.Value.SplitByComma(toUpper: true); if (locations.Count == 0) { return(true); } var currentLocation = LocationHelper.FindLocation(position); var currentLocationName = currentLocation.LocationName.Trim().ToUpperInvariant(); return(locations.Any(x => x == currentLocationName)); }
public bool IsValid(Vector3 position, DropTableItemConfiguration config) { if (config is null) { return(true); } var altitude = position.y - ZoneSystem.instance.m_waterLevel; if (altitude < config.ConditionAltitudeMin) { return(false); } if (altitude > config.ConditionAltitudeMax) { return(false); } return(true); }
public bool IsValid(DropTableItemConfiguration config) { if (string.IsNullOrEmpty(config.ConditionGlobalKeys.Value)) { return(true); } var requiredKeys = config.ConditionGlobalKeys.Value.SplitByComma(); if (requiredKeys.Count == 0) { return(true); } if (requiredKeys.Any(x => ZoneSystem.instance.GetGlobalKey(x))) { return(true); } return(false); }
public bool IsValid(Vector3 position, DropTableItemConfiguration config) { if (config is null) { return(true); } var distance = position.magnitude; if (distance < config.ConditionDistanceToCenterMin.Value) { return(false); } if (config.ConditionDistanceToCenterMax.Value > 0 && distance > config.ConditionDistanceToCenterMax.Value) { return(false); } return(true); }
public bool IsValid(DropTableItemConfiguration config) { if (string.IsNullOrEmpty(config.ConditionEnvironments.Value)) { return(true); } var envMan = EnvMan.instance; var currentEnv = envMan.GetCurrentEnvironment().m_name.Trim().ToUpperInvariant(); var environments = config.ConditionEnvironments.Value.SplitByComma(toUpper: true); if (environments.Count == 0) { return(true); } if (environments.Any(x => x == currentEnv)) { return(true); } return(false); }
public bool IsValid(DropTableItemConfiguration itemConfig) { if (itemConfig is null) { return(true); } if (itemConfig.TryGet(DropTableModConfigCLLC.ModName, out var modConfig) && modConfig is DropTableModConfigCLLC config) { int worldLevel = API.GetWorldLevel(); if (worldLevel < config.ConditionWorldLevelMin) { return(false); } if (config.ConditionWorldLevelMax > 0 && worldLevel > config.ConditionWorldLevelMax) { return(false); } } return(true); }