You are viewing a potentially older version of this package. View all versions.
sighsorry-DropNSpawn-1.2.0 icon

DropNSpawn

Configure all drops, spawns and boss locations. Remote selection of forsaken powers. Hover an altar to see the offering and summonable boss. Boss despawn when no player is near. Vegvisir supports weighted random location pinning

Date uploaded 3 days ago
Version 1.2.0
Download link sighsorry-DropNSpawn-1.2.0.zip
Downloads 56
Dependency string sighsorry-DropNSpawn-1.2.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2333
JereKuusela-Expand_World_Data-1.63.0 icon
JereKuusela-Expand_World_Data

Allows adding new biomes and changing most of the world generation.

Preferred version: 1.63.0

README

DropNSpawn

All drops, spawns and boss locations are configurable.

The mod is split into five domains:

  • location: OfferingBowl, ItemStand, and Vegvisir inside location roots
  • character: CharacterDrop loot
  • object: containers, pickables, destructibles, mine rocks, trees, fish, and related object-domain drop tables
  • spawner: SpawnArea and CreatureSpawner
  • spawnsystem: the world SpawnSystem table

Location


Specific for boss-related locations

  • boss altar behavior (Harder boss at night, boss respawn cooldown and so on)
  • slot-specific ItemStand restrictions (Change offerings)
  • Vegvisir target or presentation changes (change icon and the location it points to)
  • Hover on altar to see the offerings and boss. (serversync)

Character

  • Configure creature loot to your liking
  • merge multiple conditional loot rows for the same creature (VNEI compatible)
  • Check various conditioned examples on the config/DropNSpawn/examples
  • Mobs can drop loots in one stack.
  • Loot per person checks configured range instead of whole world.

Object

  • chest loot replacement
  • tooltier, health change for trees and rocks
  • tree or rock drop changes
  • pickable loot changes (bonefiles, fish, berries)
  • destructible health and spawn-on-destroy changes
  • DNS_object.locations.reference.yml exists because many objects are dependent on locations

Spawner

  • change spawn tables
  • change spawn intervals, trigger distance, caps, level range, respawn time
  • apply location-scoped spawner overrides with top-level location
  • ExpandWorldData compatible
  • DNS_spawner.locations.reference.yml exists because many spawners are dependent on locations

SpawnSystem

You can see many vertical lines on above image. Those are SpawnSystems

  • biome/world spawn rules
  • global-key-gated spawning
  • time-of-day spawn rules
  • world-level conditional behavior
  • ExpandWorldData compatible (Same system with ExpandWorldSpawn just that format is different)
  • This domain is authoritative and replaces the live SpawnSystem table with the rows you define.
  • Above image is explanation of how spawnsystem works in valheim

Compatibility Notes

DropNSpawn overlaps with other mods that edit the same runtime systems.
If another mod owns a domain more completely, disable the overlapping DropNSpawn domain instead of stacking both.

VNEI: All the custom drops would show up normally in VNEI
CLLC: CLLC effects can be used as condition or modification uppon creature drops and spawns
MonsterDB: DNS overlap with MonsterDB on character, spawnsystem. Disable those on DNS config if you prefer MonsterDB on that part
DropThat!: DNS overlap with DropThat! on object, character. Disable those on DNS config if you prefer DropThat! on that part
SpawnThat!: DNS overlap with SpawnThat! on spawner and/or spawnsystem. Disable those on DNS config if you prefer SpawnThat! on that part
ExpandWorldSpawns: DNS overlap with ExpandWorldSpawns on spawnsystem. Disable that on DNS config if you prefer ExpandWorldSpawns on that part
SpawnerTweaks: DNS should be compatible with SpawnerTweaks

Helpful mods

ESP: To see the spawner and spawnpoints and various other objects' info
XRayVision: To see the object's component
InfinityHammer: To place and remove various objects arbitrarily

Recommended Workflow

  1. Start the game and let DropNSpawn initialize game data
  2. Inspect the generated reference file
  3. Copy only the rows you need into DNS_<domain>.yml or a supplemental DNS_<domain>_*.yml
  4. Reload by saving the YAML file, or restart if you prefer a clean boot

Reference, Override, Examples and Full Files

files are generated under: BepInEx/config/DropNSpawn/
These file types have different purposes.

  • reference

    • Lookup snapshot of real prefab names and reference values
    • Safe to regenerate at any time
  • override

    • Loaded live configuration
    • Changes runtime behavior
  • full

    • Exhaustive generated scaffold
    • Not auto-loaded
    • Intended as a copy/paste source when writing overrides
  • Basic reference files

    • DNS_location.reference.yml
    • DNS_character.reference.yml
    • DNS_object.reference.yml
    • DNS_object.locations.reference.yml
    • DNS_spawner.reference.yml
    • DNS_spawner.locations.reference.yml
    • DNS_spawnsystem.reference.yml
      • This file would not auto generate. You would have to use command dns:reference spawnsystem
  • Basic override files

    • DNS_location.yml
    • DNS_character.yml
    • DNS_object.yml
    • DNS_spawner.yml
    • DNS_spawnsystem.yml
      • Keep in mind that spawnsystem is full override while other domains are partial override (If you put only boar entry in DNS_spawnsystem.yml that's all you got)
      • If you have installed monster mod after first file generation, get those new entries of spawns from DNS_spawnsystem.reference.yml and put it on DNS_spawnsystem.yml

AutoUpdate and ManualUpdate

Reference generation behavior is controlled by the mod config.

  • AutoUpdate
    • creates missing reference files automatically
    • updates existing reference files automatically for most domains
    • There can be some hitch at initial file generation
  • ManualUpdate
    • creates missing reference files automatically
    • updates existing reference files only when you run dns:reference

Console Commands

DropNSpawn registers three console commands:

  • dns:reference [object|character|spawner|location|spawnsystem|all]
    • Regenerates current reference files
  • dns:full [object|character|spawner|location|spawnsystem|all]
    • Writes non-loaded full scaffold files
  • dns:inspect spawner
    • Inspects the current or nearest spawner target and shows resolved prefab and location selector context

Config

[1 - General]

## If on, the configuration is locked and can be changed by server admins only. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Lock Configuration = On

## If off, DropNSpawn object YAML files stay on disk but object runtime overrides are not applied and existing object changes are restored to vanilla. Turn this off with Enable Character when using Drop That!. Turn this off when using Spawner Tweaks features for Chests or Pickables. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Enable Object Overrides = On

## If off, DropNSpawn character YAML files stay on disk but CharacterDrop runtime overrides are not applied and existing character changes are restored to vanilla. Turn this off with Enable Object when using Drop That!. Turn this off when using Spawner Tweaks creature overrides. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Enable Character Overrides = On

## If off, DropNSpawn SpawnArea and CreatureSpawner runtime overrides are not applied and existing spawner changes are restored to vanilla. Turn this off with Enable SpawnSystem when using Spawn That!. Turn this off when using Spawner Tweaks Spawn points or Spawners features. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Enable Spawner Overrides = On

## If off, DropNSpawn location runtime overrides for OfferingBowl, ItemStand, and Vegvisir are not applied and existing location changes are restored to vanilla. Turn this off when using Spawner Tweaks Boss altars or Item stands features. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Enable Location Overrides = On

## If off, DropNSpawn world SpawnSystem runtime overrides and extended global key handling are not applied and existing SpawnSystem changes are restored to vanilla. Turn this off for Expand World Spawns. Turn this off with Enable Spawner when using Spawn That! world spawning. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Enable SpawnSystem Overrides = On

## Affects only timeOfDay: [afternoon]. Uses the raw day fraction before Valheim's internal day/night rescale. Valheim day starts at 0.15 and night starts at 0.85. Allowed range is 0.2 to 0.8. [Synced with Server]
# Setting type: Single
# Default value: 0.5
# Acceptable value range: From 0.2 to 0.8
Afternoon Start Fraction = 0.5

[2 - Boss]

## If on, looking at an OfferingBowl shows simplified offering info with the spawned boss/item and required offering item. Matching altar ItemStands also show their required supported item names. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Show LocationProxy Offering Bowl Hover Info = On

## Each player sees their own version of reality. Any player standing in the Start Temple when a trophy is sacrificed will have the trophy hung in their reality as well. Any player not standing in the Start Temple when a trophy is sacrificed will not see the trophy in their reality. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Per Player Boss Stones = On

## If on, players can rotate through Forsaken Powers they have unlocked through per-player boss stones without returning to the Start Temple. [Synced with Server]
# Setting type: Toggle
# Default value: On
# Acceptable values: Off, On
Remote Forsaken Power Selection = On

## If 0, disables same-boss duplicate spawn blocking. If greater than 0, OfferingBowl and CreatureSpawner both block new spawns when the same boss prefab already exists within this many horizontal XZ meters of the altar or spawner. Applies only when the target prefab is marked as a boss. [Synced with Server]
# Setting type: Single
# Default value: 128
# Acceptable value range: From 0 to 128
Same Boss Duplicate Block Radius = 128

[3 - Character]

## Default horizontal XZ range used by character.yml despawn rules when an entry omits despawn.range. Also applies automatically to boss prefabs auto-detected from the server prefab catalog when no explicit character.yml despawn rule exists. If 0, despawn countdowns are disabled unless a prefab entry overrides range. [Synced with Server]
# Setting type: Single
# Default value: 64
# Acceptable value range: From 0 to 128
Default Despawn Range = 6

## Default delay used by character.yml despawn rules when an entry omits despawn.delay. Applies only to prefabs with a despawn block. [Synced with Server]
# Setting type: Single
# Default value: 60
# Acceptable value range: From 0 to 300
Default Despawn Delay Seconds = 6

## If on, all character loot drops in stacks whenever possible, including vanilla drops that are not overridden in YAML. Items listed in the Drop In Stack Blacklist always stay as separate drops. Non-stackable items and single-quantity drops are unchanged. Turning this off only disables the global default; per-entry YAML dropInStack still works unless the item is blacklisted. [Synced with Server]
# Setting type: Toggle
# Default value: Off
# Acceptable values: Off, On
Global Drop In Stack = Off

## Comma, semicolon, or newline separated item prefab names that should never use character loot drop-in-stack. Applies to both vanilla character drops and YAML-driven character drops when they pass through CharacterDrop. This blacklist has higher priority than the global default and higher priority than per-entry YAML dropInStack. Example: Coins,TrophyDeer [Synced with Server]
# Setting type: String
# Default value: 
Drop In Stack Blacklist = 

## If 0, disables the nearby-player override and uses vanilla server-wide online player count for character-drop onePerPlayer. If greater than 0, counts only players within this many horizontal XZ meters of the dropping character. [Synced with Server]
# Setting type: Single
# Default value: 32
# Acceptable value range: From 0 to 100
One Per Player Nearby Range = 32

## If on, the One Per Player Nearby Range override counts only living players and excludes dead players waiting to respawn. If off, it counts all nearby players, matching the broader vanilla-style nearby-presence behavior. [Synced with Server]
# Setting type: Boolean
# Default value: false
One Per Player Nearby Range Living Players Only = false

Enable Despawn ZDO Fallback Sweep = Off

[4 - Client]

## Shortcut used to rotate through unlocked Forsaken Powers when Remote Forsaken Power Selection is enabled. This setting is client-side only. [Not Synced with Server]
# Setting type: KeyboardShortcut
# Default value: G
# Acceptable values: 
Rotate Forsaken Power Shortcut = G

CHANGELOG

Version Update Notes
1.2.0 - VNEI shows fish's random loot with DNS installed
1.1.9 - Vegvisir supports weighted random location pinning. Put weight: n on vevgisir.locations in locations.yml
1.1.8 - Boss despawn when no player is near(configurable)
- Boss despawn refund offerings when they are stated in the character.yml
Block summon and spawn of more than one boss wihtin the area(configurable)
- Organized configs and refactored some codes for better performance
- Better support for EWD fields
1.1.7 - Fixed boss trophy sacrificing
- Fixed forsaken rotation making UI too often
1.1.6 - Optimized objectdrop hotpath
- Fixed bossstone reset command not working on host self
1.1.5 - Refactored huge amount of codes
- Removed cllc fields since it can be done with ewd field
- Added rotation of forsaken powers
- Added per player bossstones option
1.1.4 - Fixed destructibleType field casuing framedrop when it is in object override.yml
1.1.3 - Fixed EWD clone locations not working as conditions for character,object and spawner domain
1.1.2 - Fixed location domain triggering errors related monstrum locs
1.1.1 - Spawnsystem reference would be generated through command only
- Lightened up how spawnsystem domain works
- Fixed serversync not working for spawnsystem on dedi for real
1.1.0 - Ligthened some queue logic for some domains
1.0.9 - Fixed framedrop with treebase/minerock health override
- Fixed spawnsystem reference not generating automatically sometimes
1.0.8 - Fixed spawnsystem serversync not working on some clients on dedi
1.0.7 - Fixed creaturespawner edit not working on dedi
1.0.6 - Fixed cloned location not working with dns location conditions on dedi
- Fixed spawners not working with location conditions on dedi
1.0.5 - Fixed serversync not working on some domains
- Fixed cloned location not being applied in override yml
- Fixed custom biome spawnsystem lines being not shown through ESP
- VNEI compatibility is now always live
- Performance and network performance improvement
1.0.4 - Support for custom EWD biomes on all domains and conditions
1.0.3 - Improved reference grouping and fps
1.0.2 - Lightened spawnsystem check and other domains to reolve hitch
1.0.1 - Resolved hitch that was caused by deleting obsolete spawnsystem lines
1.0.0 - Initial Release