Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
TerrainMistile
Spawns configurable TerrainMistiles from changed terrain. They seek the edit, detonate, and reset player-made height/paint changes while preserving world/location terrain. Tune biome chance, interval, radius, health, color, and base protection.
CHANGELOG
Version |
Update Notes |
|---|---|
| 1.1.2 | - Invalidated PlayerBase protection caches when configured pieces load, unload, or receive a creator, closing a stale-cache gap during zone entry and teleportation. - Rechecked protection immediately before normal TerrainMistile resets; protected targets or targets with incomplete nearby zone loading now finish without resetting terrain. - Preserved Enforcer protection bypass and existing reset-radius behavior; added cache, policy, and original-game API contract tests. |
| 1.1.1 | - Fixed custom-biome refresh detection with Expand World Data's updated loading API. - Detect supported API signatures instead of branching on EWD version numbers; reject unsupported or ambiguous hooks while retaining independent terrain protection. - Added regression and opt-in actual-DLL contract tests, checked against EWD 1.73 and 1.74. |
| 1.1.0 | - Updated game API integration for Valheim 1.0.16 and the BepInExPack dependency to 5.4.2351. - Removed the Jötunn dependency; network prefabs and embedded or external YAML localization are registered directly. - Updated the internalized ServerSync compatibility build without changing configuration keys, synchronization formats, or administrator authorization. - Improved scene and plugin shutdown cleanup and restored the terrain paint cache after resets. - Protected Expand World Data 1.73 blueprint height and paint snapshots using their loaded bounds and sample spacing, even when exteriorRadius is smaller than the stored terrain. - Separated blueprint identity from EWD's default-leveling flag and registered protection before snapshot application, using the same bounds when rebuilding protected areas after a restart. - Simplified spawn-rule parsing and consolidated EWD integration; expanded regression and original client/server DLL contract tests. |
| 1.0.9 | - Preserved the original configuration autosave setting when initialization, reload, or save fails. - Ensured file watchers are disposed during shutdown even when configuration saving fails, including partially initialized plugins. - Reduced repeated cleanup of expired temporary terrain exclusions during target scans while retaining exclusion checks. - Consolidated Compendium guidance and its cooldown state without changing prompt behavior. - Added regression tests for configuration persistence and I/O failure recovery. |
| 1.0.8 | - Added the TerrainMistileEnforcer prefab for external spawn systems such as DropNSpawn events.- Made Enforcers select the nearest living player to their spawn point and pursue the nearest eligible changed terrain around that player, retrying briefly before despawning when no target exists. - Made Enforcers bypass only TerrainMistile PlayerBase target protection while retaining enabled-biome rules, Expand World Data/location protection, temporary terrain exclusions, and target reservations. - Applied the target biome's reset radius and visual color with default-rule fallback, and added a separately localized Enforcer display name. - Documented event-spawn configuration and kept targetless Enforcers outside the normal TerrainMistile maxSpawn count. |
| 1.0.7 | - Added embedded English and Korean localization for the Earth Warden name, Compendium topic, and generated Compendium text, with optional TerrainMistile.<Language>.yml files for additional languages and overrides.- Added a localized center-screen prompt after a successful terrain reset so nearby players can discover the relevant Compendium entry, limited to once every 60 seconds. - Added a synchronized global spawn toggle that prevents new TerrainMistiles without removing existing ones. - Replaced the old display-name config with localization tokens; existing custom names can be moved to an external localization YML file. - Included TerrainMistile.English.yml as an editable translation template in release archives and game deployment while keeping built-in translations available from the DLL. |
| 1.0.6 | - Fixed terrain scanning and resetting on current Valheim runtimes by removing direct private game-member access and the publicized-assembly dependency, preventing repeated TerrainComp.s_instances access errors.- Added cached runtime terrain bindings and build/test guards so game compatibility failures are detected once at startup or build time instead of repeatedly during world updates. - Changed TerrainMistiles to the Boss faction so players and player-aligned systems can respond to them while their player-hunting and player-object attack AI remains disabled. - Improved Expand World Data compatibility for late initialization and biome-data reloads, and fixed fallback custom-biome ordering and normalized-name collisions. - Hardened protected-terrain synchronization and terrain resets against reconnects, invalid data, oversized protected areas, and recently changed external terrain. - Improved spawn-rule reload and validation so invalid values fall back safely, long custom intervals retain their cooldowns, and stale runtime state is cleared between worlds. |
| 1.0.5 | - Fixed a dedicated-server regression where broad zone readiness checks could prevent TerrainMistile spawns. - Limited load-readiness checks to relevant player-created PlayerBase prefabs in the exact affected zones. |
| 1.0.4 | - Prevented PlayerBase protection from being missed while nearby zones and pieces are still loading. - Added a Compendium page showing the server-synced PlayerBase prefab list with localized in-game names and effective protection requirements by biome. |
| 1.0.3 | - Improved terrain target reservation and reset reliability, and replaced the redundant version handshake with ServerSync validation. - Made Expand World Data protected-area refreshes atomic and avoided unchanged full-list syncs. - Added modified terrain cell-index caching and explicit visual Material cleanup for lower long-session overhead. |
| 1.0.2 | - Added synced protected terrain areas for Expand World Data blueprint locations so clients preserve EWD terrain on dedicated servers. - Added protected area bucket caching and shared terrain cell scan helpers to reduce repeated lookup work. - Removed debug logging and the debug config option for leaner runtime behavior. |
| 1.0.1 | - Added maxDeformationSpawnChanceBonus so heavily raised or dug terrain can increase TerrainMistile spawn chance.- Documented the new deformation-based spawn chance setting. |
| 1.0.0 | - Initial release. |