public static ILocalSpawnBuilder WithSettings(this ILocalSpawnBuilder builder, LocalSpawnSettings settings) { settings.PrefabName.Set(builder.SetPrefabName); settings.Enabled.Set(builder.SetEnabled); settings.SpawnInterval.SetNullable(builder.SetSpawnInterval); settings.MinLevel.Set(builder.SetMinLevel); settings.MaxLevel.Set(builder.SetMaxLevel); settings.SpawnDuringNight.Set(builder.SetSpawnDuringDay); settings.SpawnDuringNight.Set(builder.SetSpawnDuringNight); settings.SpawnInPlayerBase.Set(builder.SetSpawnInPlayerBase); settings.SetPatrolSpawn.Set(builder.SetPatrolSpawn); settings.LevelUpChance.Set(builder.SetLevelUpChance); settings.ConditionPlayerWithinDistance.Set(builder.SetConditionPlayerWithinDistance); settings.ConditionPlayerNoise.Set(builder.SetConditionPlayerNoise); foreach (var condition in settings.Conditions) { builder.SetCondition(condition); } foreach (var modifier in settings.Modifiers) { builder.SetModifier(modifier); } return(builder); }
/// <summary> /// <para>Set area ids in which spawning is enabled.</para> /// <para>Should only be used when map is pre-determined.</para> /// </summary> public static ILocalSpawnBuilder SetConditionAreaIds(this ILocalSpawnBuilder builder, params int[] areaIds) { builder.SetCondition(new ConditionAreaIds(areaIds.ToList())); return(builder); }
/// <summary> /// Template only enabled when the world day is within the indicated range. /// </summary> /// <param name="minDays">Minimum days required before template is activated.</param> /// <param name="maxDays">Maximum days after which template is deactivated. If null, there is no limit.</param> public static ILocalSpawnBuilder SetConditionWorldAge(this ILocalSpawnBuilder builder, int?minDays = null, int?maxDays = null) { builder.SetCondition(new ConditionWorldAge(minDays, maxDays)); return(builder); }
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner has a status in <c>statusEffects</c>. /// </summary> public static ILocalSpawnBuilder SetConditionNearbyPlayersStatus(this ILocalSpawnBuilder builder, int distance, params StatusEffect[] statusEffects) { builder.SetCondition(new ConditionNearbyPlayersStatus(distance, statusEffects.Select(x => x.ToString()).ToArray())); return(builder); }
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner has a status in <c>statusEffectNames</c>. /// </summary> public static ILocalSpawnBuilder AddConditionNearbyPlayersStatus(this ILocalSpawnBuilder builder, int distance, params string[] statusEffectNames) { builder.SetCondition(new ConditionNearbyPlayersStatus(distance, statusEffectNames)); return(builder); }
private static void SetConditionItemRarity(ILocalSpawnBuilder builder, int distance, IEnumerable <string> rarities) => builder.SetCondition(new ConditionNearbyPlayerCarryItemWithRarity(distance, rarities));
/// <summary> /// <para>Sets global keys which must not be present for spawning to be allowed.</para> /// <para> /// Eg., if GlobalKey.Troll, GlobalKey.Eikthyr and world has global key "defeated_eikthyr", /// then this template will be disabled. /// </para> /// </summary> public static ILocalSpawnBuilder SetGlobalKeysRequiredMissing(this ILocalSpawnBuilder builder, IEnumerable <GlobalKey> globalKeys) { builder.SetCondition(new ConditionGlobalKeysRequiredMissing(globalKeys.Select(x => x.GetName()).ToArray())); return(builder); }
/// <summary> /// Sets range from center of world, in which spawning is allowed. /// </summary> /// <param name="minDistance">Required distance from center.</param> /// <param name="maxDistance">Maximum distance from center. If null, there will be no limit.</param> public static ILocalSpawnBuilder SetConditionDistanceToCenter(this ILocalSpawnBuilder builder, double?minDistance = null, double?maxDistance = null) { builder.SetCondition(new ConditionDistanceToCenter(minDistance, maxDistance)); return(builder); }
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner has one of the listed items in inventory. /// </summary> public static ILocalSpawnBuilder AddConditionNearbyPlayersCarryItem(this ILocalSpawnBuilder builder, int distance, params string[] itemPrefabNames) { builder.SetCondition(new ConditionNearbyPlayersCarryItem(distance, itemPrefabNames)); return(builder); }
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner has one of the listed items in inventory. /// </summary> public static ILocalSpawnBuilder AddConditionNearbyPlayersCarryItem(this ILocalSpawnBuilder builder, int distance, IEnumerable <string> itemPrefabNames) { builder.SetCondition(new ConditionNearbyPlayersCarryItem(distance, itemPrefabNames.ToArray())); return(builder); }
/// <summary> /// Sets locations in which spawning is allowed. /// </summary> public static ILocalSpawnBuilder SetConditionLocation(this ILocalSpawnBuilder builder, params string[] locationNames) { builder.SetCondition(new ConditionLocation(locationNames)); return(builder); }
/// <summary> /// <para>Set area ids in which spawning is enabled.</para> /// <para>Should only be used when map is pre-determined.</para> /// </summary> public static ILocalSpawnBuilder SetConditionAreaIds(this ILocalSpawnBuilder builder, IEnumerable <int> areaIds) { builder.SetCondition(new ConditionAreaIds(areaIds.ToList())); return(builder); }
/// <summary> /// Sets locations in which spawning is allowed. /// </summary> public static ILocalSpawnBuilder SetConditionLocation(this ILocalSpawnBuilder builder, IEnumerable <string> locationNames) { builder.SetCondition(new ConditionLocation(locationNames.ToArray())); return(builder); }
private static void SetConditionLegendaryItem(ILocalSpawnBuilder builder, int distanceToSearch, params string[] legendaryItemIds) => builder.SetCondition(new ConditionNearbyPlayerCarryLegendaryItem(distanceToSearch, legendaryItemIds));
private static void SetConditionItemRarity(ILocalSpawnBuilder builder, int distance, params EpicLootRarity[] rarities) => builder.SetCondition(new ConditionNearbyPlayerCarryItemWithRarity(distance, rarities));
/// <summary> /// <para>Set spawn chance based on each area.</para> /// <para> /// Each area rolls chance pr template id once pr seed. /// If the chance roll is less than listed here, /// this area will never activate this template, and vice versa. /// </para> /// <para> /// This allows for sitations where only some areas (eg., 10% of blackforests) will have a spawn show up. /// </para> /// </summary> public static ILocalSpawnBuilder SetConditionAreaSpawnChance(this ILocalSpawnBuilder builder, float areaChance, uint templateId) { builder.SetCondition(new ConditionAreaSpawnChance(areaChance, (int)templateId)); return(builder); }
/// <summary> /// <para>Spawn template is only active when player is within <c>withinDistance</c> to Spawner.</para> /// </summary> public static ILocalSpawnBuilder SetConditionCloseToPlayer(this ILocalSpawnBuilder builder, float withinDistance) { builder.SetCondition(new ConditionCloseToPlayer(withinDistance)); return(builder); }
/// <summary> /// Template only enabled when players within <c>distance</c> of spawner has a combined inventory value greater than <c>combinedValueRequired</c>. /// </summary> public static ILocalSpawnBuilder SetConditionNearbyPlayersCarryValue(this ILocalSpawnBuilder builder, int distance, int combinedValueRequired) { builder.SetCondition(new ConditionNearbyPlayersCarryValue(distance, combinedValueRequired)); return(builder); }
/// <summary> /// <para>Sets global keys which must not be present for spawning to be allowed.</para> /// <para> /// Eg., if "KilledTroll", "defeated_eikthyr" and world has global key "defeated_eikthyr", /// then this template will be disabled. /// </para> /// </summary> public static ILocalSpawnBuilder SetGlobalKeysRequiredMissing(this ILocalSpawnBuilder builder, params string[] globalKeys) { builder.SetCondition(new ConditionGlobalKeysRequiredMissing(globalKeys.ToArray())); return(builder); }
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner emits more noise than <c>noiseRequired</c>. /// </summary> public static ILocalSpawnBuilder SetConditionNearbyPlayersNoise(this ILocalSpawnBuilder builder, int distance, int noiseRequired) { builder.SetCondition(new ConditionNearbyPlayersNoise(distance, noiseRequired)); return(builder); }
private static void SetConditionWorldLevel(ILocalSpawnBuilder builder, int?minWorldLevel, int?maxWorldLevel) => builder.SetCondition(new ConditionWorldLevel(minWorldLevel, maxWorldLevel));
/// <summary> /// Template only enabled when a player within <c>distance</c> of spawner has a status in <c>statusEffectNames</c>. /// </summary> public static ILocalSpawnBuilder AddConditionNearbyPlayersStatus(this ILocalSpawnBuilder builder, int distance, IEnumerable <string> statusEffectNames) { builder.SetCondition(new ConditionNearbyPlayersStatus(distance, statusEffectNames.ToArray())); return(builder); }