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); }
public static ILocalSpawnBuilder SetModifierDespawnOnConditionsInvalid( this ILocalSpawnBuilder builder, bool?conditionAllowDuringDay = null, bool?conditionAllowDuringNight = null, List <string> conditionAllowDuringEnvironments = null) { builder.SetModifier( new ModifierDespawnOnConditionsInvalid( conditionAllowDuringDay, conditionAllowDuringNight, conditionAllowDuringEnvironments)); return(builder); }
private static void SetInfusion(ILocalSpawnBuilder builder, CllcCreatureInfusion infusion) => builder.SetModifier(new ModifierCllcInfusion(infusion));
private static void SetInfusion(ILocalSpawnBuilder builder, string infusionName) => builder.SetModifier(new ModifierCllcInfusion(infusionName));
private static void SetExtraEffect(ILocalSpawnBuilder builder, CllcCreatureExtraEffect extraEffect) => builder.SetModifier(new ModifierCllcExtraEffect(extraEffect));
private static void SetExtraEffect(ILocalSpawnBuilder builder, string extraEffectName) => builder.SetModifier(new ModifierCllcExtraEffect(extraEffectName));
private static void SetBossAffix(ILocalSpawnBuilder builder, CllcBossAffix bossAffix) => builder.SetModifier(new ModifierCllcBossAffix(bossAffix));
private static void SetBossAffix(ILocalSpawnBuilder builder, string bossAffixName) => builder.SetModifier(new ModifierCllcBossAffix(bossAffixName));
private static void ApplyConfigToBuilder(CreatureSpawnerConfig config, ILocalSpawnBuilder builder) { // Default if (config.PrefabName.Value.IsNotEmpty()) { builder.SetPrefabName(config.PrefabName.Value); } builder.SetEnabled(config.Enabled.Value); builder.SetMaxLevel(config.LevelMax.Value); builder.SetMinLevel(config.LevelMin.Value); builder.SetLevelUpChance(config.LevelUpChance.Value); builder.SetSpawnInterval(TimeSpan.FromMinutes(config.RespawnTime.Value)); builder.SetPatrolSpawn(config.SetPatrolPoint.Value); builder.SetSpawnDuringNight(config.SpawnAtDay.Value); builder.SetSpawnDuringDay(config.SpawnAtNight.Value); builder.SetConditionPlayerWithinDistance(config.TriggerDistance.Value); builder.SetConditionPlayerNoise(config.TriggerNoise.Value); builder.SetSpawnInPlayerBase(config.SpawnInPlayerBase.Value); // Modifiers if (config.SetFaction.Value.IsNotEmpty()) { builder.SetModifier(new ModifierSetFaction(config.SetFaction.Value)); } builder.SetModifierTamed(config.SetTamed.Value); builder.SetModifierTamedCommandable(config.SetTamedCommandable.Value); // Modifiers - Integrations Config cfg; { if (IntegrationManager.InstalledCLLC) { if (config.TryGet(CreatureSpawnerConfigCLLC.ModName, out cfg) && cfg is CreatureSpawnerConfigCLLC cllcConfig) { if (cllcConfig.SetBossAffix.Value.IsNotEmpty()) { builder.SetCllcModifierBossAffix(cllcConfig.SetBossAffix.Value); } if (cllcConfig.SetExtraEffect.Value.IsNotEmpty()) { builder.SetCllcModifierExtraEffect(cllcConfig.SetExtraEffect.Value); } if (cllcConfig.SetInfusion.Value.IsNotEmpty()) { builder.SetCllcModifierInfusion(cllcConfig.SetInfusion.Value); } if (cllcConfig.UseDefaultLevels.Value) { builder.SetModifier(new ModifierDefaultRollLevel(config.LevelMin.Value, config.LevelMax.Value, 0, config.LevelUpChance.Value)); } } } if (IntegrationManager.InstalledMobAI) { if (config.TryGet(CreatureSpawnerConfigMobAI.ModName, out cfg) && cfg is CreatureSpawnerConfigMobAI mobAIConfig) { if (mobAIConfig.SetAI.Value.IsNotEmpty()) { builder.SetMobAiModifier(mobAIConfig.SetAI.Value, mobAIConfig.AIConfigFile.Value); } } } } }
/// <summary> /// Sets a custom string on entity zdo with key "spawn_template_id". /// Intended for integration between mods, and detecting a modified entity. /// </summary> public static ILocalSpawnBuilder SetModifierTemplateId(this ILocalSpawnBuilder builder, string templateId) { builder.SetModifier(new ModifierSetTemplateId(templateId)); return(builder); }
public static ILocalSpawnBuilder SetModifierTamedCommandable(this ILocalSpawnBuilder builder, bool commandable) { builder.SetModifier(new ModifierSetTamedCommandable(commandable)); return(builder); }
public static ILocalSpawnBuilder SetModifierTamed(this ILocalSpawnBuilder builder, bool tamed) { builder.SetModifier(new ModifierSetTamed(tamed)); return(builder); }
public static ILocalSpawnBuilder SetModifierFaction(this ILocalSpawnBuilder builder, Character.Faction faction) { builder.SetModifier(new ModifierSetFaction(faction)); return(builder); }
public static ILocalSpawnBuilder SetModifierRelentless(this ILocalSpawnBuilder builder, bool relentless) { builder.SetModifier(new ModifierSetRelentless(relentless)); return(builder); }
private static void SetRandomLevel(ILocalSpawnBuilder builder) => builder.SetModifier(new ModifierCllcRandomLevel());
private static void SetModifier(ILocalSpawnBuilder builder, string aiName, string mobAiConfig) => builder.SetModifier(new ModifierSetAI(aiName, mobAiConfig));
public static ILocalSpawnBuilder SetModifierDespawnOnAlert(this ILocalSpawnBuilder builder, bool despawnOnAlert) { builder.SetModifier(new ModifierDespawnOnAlert(despawnOnAlert)); return(builder); }