You are viewing a potentially older version of this package. View all versions.
ASharpPen-Spawn_That-1.2.15 icon

Spawn That

Advanced tool for customizing mob spawners throughout the world with configuration files.

Date uploaded 2 days ago
Version 1.2.15
Download link ASharpPen-Spawn_That-1.2.15.zip
Downloads 2325
Dependency string ASharpPen-Spawn_That-1.2.15

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2202 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.

Preferred version: 5.4.2202

README

Spawn That!

This is an advanced tool for configuring all world spawners.

With this, it is possible to change almost all of the default settings for the way spawners work in Valheim. Want to have a world without trolls? Possible! (probably) Want to have a world with ONLY trolls? Possible! (almost) Want to have a world where greydwarves only spawn at night? Possible! Just want to have more/less of a mob type? Simple modifiers exist!

Features

  • Change spawning rates of specific mobs
  • Replace existing spawn configurations throughout the world
  • Set almost any of the default parameters the game uses
  • Add your own spawn configuration to the world
  • Modify the localized spawners by mob type and location
  • Dump existing game templates as files using the same format as the mod configs.
    • Easy to copy-paste and change the parts you want.
    • Investigate what the world throws at you.
  • Server-side configs
  • Modify the spawners in camps, villages and dungeons
  • Conditions and settings specific to integrated mods:

Documentation

Documentation can be found on the Spawn That github page.

Example

[WorldSpawner.321]
Name = Angry Test Boars
PrefabName = Boar
Biomes = Meadows
Enabled = true
HuntPlayer=true
MaxSpawned = 30
SpawnInterval = 1
SpawnChance = 100
SpawnDuringDay = true
SpawnDuringNight = true
ConditionLocation = Runestone_Boars
ConditionDistanceToCenterMin = 500
ConditionAreaSpawnChance = 50

[WorldSpawner.321.CreatureLevelAndLootControl]
SetInfusion=Fire

[WorldSpawner.321.EpicLoot]
ConditionNearbyPlayerCarryLegendaryItem = HeimdallLegs

v1.0.0 Details

Config changes

Enabled now toggles the actual spawner on/off. This can be used to both disable local spawners and world spawner entries.

TemplateEnabled added, which behaves like the old Enabled by disabling the configuration entry itself.

API support

Spawn That now supports configurations by code. Configurations are merged with configs from file. File configurations will be applied last, ensuring that users can still override the settings made by mods.

A nuget release has also been made available.

Configurations are applied once pr world entered, and synced from server-side.

API is more feature-rich than the config files though.

Example:

public class Plugin : BaseUnityPlugin
{
	public void Awake()
	{
		// Register for configuration event.
		SpawnThat.Spawners.SpawnerConfigurationManager.OnConfigure += MySpawnerConfigurations;
	}

	public void MySpawnerConfigurations(ISpawnerConfigurationCollection spawnerConfig)
	{
		// Add a new world spawner
		spawnerConfig
			.ConfigureWorldSpawner(123)
			.SetPrefabName("Skeleton")
			.SetMinLevel(2)
			.SetMaxLevel(3);

		// Modify an existing vanilla spawner
		spawnerConfig
			.ConfigureWorldSpawner(1)
			.SetSpawnInterval(TimeSpan.FromSeconds(30))
			.SetPackSizeMin(3)
			.SetPackSizeMax(10);

		// Modify a local spawner
		spawnerConfig
			.ConfigureLocalSpawnerByLocationAndCreature("Runestone_Boars", "Boar")
			.SetPrefabName("Skeleton");
	}
}

Support

If you feel like it

CHANGELOG

Changelog:

  • v1.2.15:
    • Compatibility: Valheim v0.219.13.
  • v1.2.14:
    • Updates for room identification, old code did not properly take into account dungeons with multiple layers, as well as the room rotation itself.
    • World Spawner: Fixed templates for vanilla creatures sometimes getting assigned to modded creatures, caused by the changes to ID assignment in v1.2.12.
  • v1.2.13:
    • Fixed: Room detection for dungeons. This affected spawner configs using specific rooms as their requirement.
  • v1.2.12:
    • World Spawner: Assigning ID's to vanilla spawners earlier in startup, to help avoid modded creatures being given ID's that would otherwise belong to said vanilla spawners.
  • v1.2.11:
    • Compatibility: Valheim v0.218.15.
  • v1.2.10:
    • Compatibility: Valheim v0.217.46.
  • v1.2.9:
    • SpawnArea: Fixed SpawnInterval not being set correctly, sometimes causing intervals to be too quick.
  • v1.2.8:
    • Changed console commands into proper terminal commands with autocompletion.
    • Added soft-dependency for LocalizationCache, to help it get loaded earlier.
    • World Spawner: Additional checks for nulls while counting non-creature entities.
  • v1.2.7:
    • Fixed: SetFaction was only applying the faction on creature spawn, it now correctly re-applies on creature load.
    • API: Updated GlobalKey enum with new known keys.
  • v1.2.6:
    • Fixed: Compatibility for Valheim v0.216.9
  • v1.2.5:
    • Local Spawner: Fixed day-night conditions being swapped.
  • v1.2.4:
    • Fixed: Compatibility with Valheim v0.215.2.
  • v1.2.3:
    • Fixed error for prefab nearness position conditions (eg., MustBeNearAllPrefabs) when condition was empty in config file.
    • Fixed PrintFantasticBeastsAndWhereToKillThem only printing maps for spawns in file configs. Should now correctly pick up spawns added by API.
    • Fixed null-reference error while generating spawn biome maps.
  • v1.2.2:
    • Compatibility: Epic Loot v0.9.5.
  • v1.2.1:
    • Compatibility: Allowing : in section headers for compatibility with Expand World.
  • v1.2.0:
    • World Spawner: Fixed LevelUpChance only being properly applied to new entries.
    • SpawnArea: Fixed modifiers not being applied properly.
    • Local Spawner & SpawnArea: Fixed LevelUpChance not being properly applied when using setting UseDefaultLevel.
    • World Spawner: Added support for vanilla field BiomeArea.
    • World Spawner & SpawnArea: Added ConditionPositionMustBeNearAllPrefabs
    • World Spawner & SpawnArea: Added ConditionPositionMustBeNearPrefabs
    • World Spawner & SpawnArea: Added ConditionPositionMustNotBeNearPrefabs
    • Compatibility: Moved all applications of spawn modifier settings to happen slightly later. This should solve issues with settings like CLLC UseDefaultLevels.
  • v1.1.7:
    • World Spawner: Added support for new LevelUpChance field.
    • Fixes for v0.212.6
  • v1.1.6:
    • Fixed patch compatibility with v0.212.6
  • v1.1.5:
    • For all spawners: Fixed config sync for fields Enabled, TemplateEnabled being ignored when false.
    • Local Spawner: Fixed potential config sync issue for fields SpawnAtDay and SpawnAtNight defaulting to true when not set.
    • SpawnArea Spawner: Fixed potential error when syncing custom identifiers.
    • Streamlined logs of successful config sync a bit.
  • v1.1.4:
    • Fixed mapping of settings, where SpawnThat would throw an error when processing certain settings defined as empty in cfg file. Primarily affected WorldSpawner configs.
  • v1.1.3:
    • Fixed world spawner ConditionWorldAgeDaysMax being set to ConditionWorldAgeDaysMin.
    • Fixed world spawner ConditionDistanceToCenterMin and Max settings being set incorrectly.
    • Fixed MobAILib settings spitting out errors when SetAI was set, but not AIConfigFile.
    • Disabled world spawner configs being applied server-side on dedicated servers. This should avoid a potential harmless but confusing warning.
    • Added SetTryDespawnOnConditionsInvalid to world spawner loaded configs debug file.
    • Added internal tests for mapping of all types of spawner configs.
  • v1.1.2:
    • Fixed default values getting assigned to empty settings (eg., SetFaction = ). Caused by last patch. Note to self, dont be lazy.
  • v1.1.1:
    • Fixed spawn_that.simple.cfg not being populated on file creation, when InitializeWithCreatures=true was set in spawn_that.cfg. Introduced in v1.1.0.
    • Fixed GroundOffset for world spawner file configs not being used. Introduced in v1.1.0.
  • v1.1.0:
    • Added support for new SpawnArea spawner type (eg., greydwarf nests).
    • Added custom config file reader. This should hopefully make things more intuitive and less volatile. It does however mean that comments are longer added automatically.
    • Swapped file load and merge order, to make default files override supplemental, as was originally intended (eg., spawn_that.world_spawners_advanced.cfg gets loaded after spawn_that.world_spawners.something.cfg now).
    • Added datamining for locations, as an option in general config.
    • Removed setting "StopTouchingMyConfigs" from general config, as it has become irrellevant.
    • Fixed bug with attempting to load files as configs if they fit the expected name pattern, even though they didn't end with '.cfg'.
    • Fixed bug where disabling world spawner with Enabled disabled the config instead.
    • Fixed potential error when adding a new world spawner without specifying a prefab name.
    • A LOT of boring internal changes, logging and documentation that noone will probably ever see or care about.
  • v1.0.6:
    • Fixed config sync for expanded enums. This should resolves an issue when using biomes from Expand World on servers.
    • Fixed level calculcation used when using the CLLC integration setting UseDefaultLevels.
  • v1.0.5:
    • Improved world spawner debug file output. Now tries to output not just the default settings, but the custom too. Including integrations.
    • Fixed world spawner post change debug file not showing the configuration ID's, but instead the internal index they were added at.
    • Fixed world spawner cfg load adding unnecessary option.
    • Fixed faction, biome and cllc setting parsing being case-sensitive. Eg., setting biome as Blackforest would fail to parse as biome BlackForest.
    • Added installation check for YamlDotNet dll, to ensure it is present.
  • v1.0.4:
    • Fixed dungeon room names not being cleaned before registration, causing issues with local spawners matching.
  • v1.0.3:
    • Fixed local spawner file-configs not being properly matched with spawners.
    • Fixed error when printing world spawners with missing prefab to debug file.
    • Fixed error when having file-configurations with integrations not installed.
    • Added robustness to API when setting up configurations for uninstalled integrations.
    • Added robustness for v0.207.15
  • v1.0.2:
    • Fixed error spawn from world spawners, when joining a server with no world spawner configurations.
  • v1.0.1:
    • Fixed broken config sync.
  • v1.0.0:
    • WorldSpawner config Enabled now toggles the actual spawn entry on/off.
    • Added WorldSpawner option TemplateEnabled to replace Enabled.
    • LocalSpawner config Enabled now toggles the spawner itself on/off.
    • Added LocalSpawner option TemplateEnabled to replace Enabled.
    • Added API for using Spawn That by code.
    • Debug files are now printed to BepInEx/Debug by default. Output folder is configurable.
    • A ton of internal work and improvements.
    • Moved documentation to https://asharppen.github.io/Valheim.SpawnThat/. Documentation will be updated here from now on.
  • v0.11.6:
    • It's the season of bugs! World spawner templates are now instantiated on entering world, meaning changes applied are no longer carried between worlds / re-entering. This is hopefully getting changed by IG in the future.
    • Fixed local spawners not honouring "Enabled=false". Configs were still attempted applied.
    • Fixed leftover optimizations causing spawners to get disabled in biomes outside the one player logged into.
  • v0.11.5:
    • More v0.205.5 fixes. World spawners were changed from no longer being per zone, but properly global, meaning Spawn That was reapplying its changes more than once.
  • v0.11.4:
    • Fixes for Valheim v0.205.5
  • v0.11.3:
    • Fixes for Valheim v0.202.14
  • v0.11.2:
    • Fixed the setting SpawnInPlayerBase not being assigned to local spawners.
  • v0.11.1:
    • Fixed issue with local spawners being disabled due to missing location info.
    • Made local spawners less demanding of config application. Should revert to default spawn if Spawn That fails to apply its changes.
  • v0.11.0:
    • Added region labelling for map biomes. Will now scan for connected biome zones, and assign an id for that whole area.
    • Added condition for spawning only in specified areas. Intended as a world specific setting. For those who have been waiting, this is the option to use for designated monster islands.
    • Added condition for spawning in an area, chance is pr area and only rolled once, to allow for variety in spawning across the world.
    • Added console commands for areas.
    • Added conditions for epic loot based items on nearby players.
    • Added support for spawning non-ai entities. MaxSpawned and SpawnDistance should now work properly for any prefab. SpawnDistance should work for any distance now, be aware this may cause performance issues if set too high.
    • Documentation moved to mod wiki.
  • v0.10.1:
    • Fixed issue with world-spawner mobs not spawning in mountains.
  • v0.10.0:
    • Optimized network package sizes.
    • Added initial support for MobAILib.
    • Added setting "SetTamed" for local- and world spawners.
    • Added setting "SetTamedCommandable" for local- and world spawners.
    • Added world spawner condition "" for nearby players having status effect.
  • v0.9.1:
    • Fixed issue with too early access of location info. Should resolve issue with local spawners not spawning creatures.
  • v0.9.0:
    • Added setting "UseDefaultLevels" to CLLC integraiton, to let Spawn That set levels.
    • Added setting "SetRelentless".
    • Added setting "SetTryDespawnOnConditionsInvalid".
    • Added setting "SetTryDespawnOnAlert".
    • Added setting "TemplateId", for assigning a specific identifier to mobs spawned by a template, for other mods to use (intended for future Drop That setting).
    • Added condition "ConditionNearbyPlayersNoiseThreshold".
  • v0.8.2:
    • Added more helpful warning- and error messages for when configurations are incorrectly set up.
    • Changed StopTouchingMyConfigs to be set to true by default when spawn_that.cfg is created. Due to the massive loading time impact of large config files.
  • v0.8.1:
    • Additional error handling for conditions. Should help fix potential errors coming out of the newly added player conditions.
  • v0.8.0:
    • Added world spawner condition for nearby players carried items.
    • Added world spawner condition for nearby players carried valuables.
    • Added option for assigning faction for world- and local spawner entries.
    • Added faction to pre-change debug files.
    • Changed when configs are applied to spawners, for increased compatibility with mods adding prefabs.
    • Additional error checks.
  • v0.7.1:
    • Fixed simple config being generated with wrong prefab-names.
    • Additional error handling.
    • Changed location info from server to client slightly, to hopefully stop issues with local spawners.
  • v0.7.0:
    • Added support for Creature Level and Loot Control (CLLC)
    • Added CLLC creature effect options for world- and local spawners.
    • Added CLLC world level condition to world spawners.
  • v0.6.0:
    • Added world spawner condition - RequiredNotGlobalKey
    • Added support for supplemental world- and local spawner config files.
    • Local spawner configs now work in multiplayer.
  • v0.5.1:
    • Added a (probably temporary) config to not run local spawner configs, due to issues with multiplayer.
    • Fixed error message from local spawners.
    • Removed a couple of pointless warnings.
  • v0.5.0:
    • Added new local spawner defaults to file dumps.
    • Added condition for world spawners. World age in days.
    • Added console command for getting current room in which player is standing.
    • Added configuration for Dungeons, Camps and Villages. All are considered local spawners.
    • Lots of bug fixes. Spawners should have an easier time having configuration "stick" now.
  • v0.4.0:
    • New condition for world spawners. Distance to center min/max.
    • Simple config initialized with creatures on file creation by default.
    • Various attempts at stabilizing and guarding code.
  • v0.3.0:
    • Server-to-client config sync added
  • v0.2.0:
    • Initial release