You are viewing a potentially older version of this package. View all versions.
VentureValheim-World_Advancement_Progression-0.0.18 icon

World Advancement Progression

In Beta: Have more control over the world progression. Useful for multiplayer and RP servers.

Date uploaded 2 years ago
Version 0.0.18
Download link VentureValheim-World_Advancement_Progression-0.0.18.zip
Downloads 598
Dependency string VentureValheim-World_Advancement_Progression-0.0.18

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
ValheimModding-Jotunn-2.21.1 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.21.1

README

World Advancement and Progression

Created by [email protected].

Introduction

This mod is in Beta: Use at your own risk! (make a backup of your data before you update). You will likely need to generate a fresh config file.

World Advancement and Progression lets you fine tune world settings. Ideal to use on multiplayer/RP (roleplay) servers to control world advancement.

Features

NOTE: This mod is under heavy development and is not finished. All pre-releases are intended for those interested in helping test new features until the first official release.

The main feature of this mod is to have an easy way to fully customize the world difficulty and to control the rate at which the world and individual player advances. Set the difficulty of each biome and configure all creatures and items by using the automatic scaling system. You may also define your own custom configuration for individual creatures and items (including other modded content). This mod will dynamically create a game balance that is very different from the Vanilla gameplay experience!

Below are some explanations of features and how to configure them. See more details in the config file. Generate the config file by launching the game once with this mod installed.

Public & Private Key Management

By default this mod will prevent/block public keys from being added to the global list which will prevent game behaviors that rely on the presence of these keys. This lets you control the game progression by choosing when these keys get added to the game (either naturally through gameplay or by using the vanilla setpublickey command).

This mod also adds a private player key system in which data is saved to a new file for each character. You can use this private key system to tailor game functionality to individuals rather than the vanilla default server-wide public keys. There are 4 new commands added that work similar to the public key commands. Currently only your local player can be updated, but commands for server management will be added later: setprivatekey, removeprivatekey, resetprivatekeys, listprivatekeys.

Here is a quick guide to the Key configuration options:

  • BlockAllGlobalKeys: Prevent/block public all keys from being added to the global list, set to false to use vanilla behavior
  • AllowedGlobalKeys: Allow only these keys being added to the global list when BlockAllGlobalKeys is true
  • BlockedGlobalKeys: Stop only these keys being added to the global list when BlockAllGlobalKeys is false
  • UseBossKeysForSkillLevel, UsePrivateBossKeysForSkillLevel, BossKeysSkillPerKey explained under Skill Manager section below.

Examples of Vanilla Public Keys:

  • defeated_eikthyr
  • defeated_gdking
  • defeated_bonemass
  • defeated_dragon
  • defeated_goblinking
  • defeated_queen
  • KilledTroll
  • killed_surtling
  • KilledBat
  • defeated_hive

Note: Currently the only feature using private keys is skills. Possible future additions to this section include:

  • Ability to lock items or crafting to boss completion
  • Ability to have worldly spawns and raids check for individual boss completion
  • Locking boss summoning to enforce progression order
  • Requests welcome! See the bottom for my discord link

Skill Manager

Have more control over Skill loss and gain. Here is a quick guide to the Skill configuration options:

  • EnableSkillManager must be set to True to enable these features.
  • AllowSkillDrain: Set to False to turn off all skill loss on death.
  • UseAbsoluteSkillDrain: Set to True to use an absolute number (AbsoluteSkillDrain) for skill loss. (Vanilla uses a percentage for skill loss, so you will lose more skill the higher the skill is)
  • CompareAndSelectDrain: Set to true to use the minimum or maximum value between the vanilla skill loss and the absolute skill loss. Set CompareUseMinimumDrain to False to use the maximum of these two values as the skill loss.
  • OverrideMaximumSkillLevel: True to set a server wide skill level ceiling for gaining skill to the value of MaximumSkillLevel. For example, if this value is 50 then you will not gain skill once you reach level 50+ in that skill.
  • OverrideMinimumSkillLevel: True to set a server wide skill level floor for skill loss to the value of MinimumSkillLevel. For example, if this value is 10 then you will not lose skill on death until you reach level 10 in that skill, so your skills will not drop below 10.

Under the Keys category there are more configuration options for skills. This feature will only work if you DO NOT override the minimum and/or maximum skill levels as described above. Overridden values will take precedence.

  • UseBossKeysForSkillLevel: Set this to true to use a more dynamic skill control dependant on boss completion. Skill minimum will start at 0 and increase by BossKeysSkillPerKey for each boss defeated. Skill maximum will be capped at [ 100 - (number of bosses: 6) * (BossKeysSkillPerKey: 10) = 40 ] with the current game state. For example, if you defeat one boss then your skill minimum for loss will be raised to 10, and your skill maximum will be raised to 50.
  • UsePrivateBossKeysForSkillLevel: Set this to True to use player keys to determine skill behavior per individual player, set to False to use the public key system to set a server wide configuration.
  • BossKeysSkillPerKey: Amount used in calculation above.

Note: Any skills that are already above the maximum skill cap will remain "frozen" and will not gain, but can still be lowered on death. Console cheats will still work as intended.

Warning: Other mods that change how skill gain and loss functions may cause unexpected behaviors. Turn off this feature if using another mod for skill management if you see mod conflicts.

World Scaling

The world is scaled according to the "natural" vanilla game progression by default. To see this mod's default classification of vanilla creatures and items you can view the code on Github. The scaling is applied after logging into a local world or server.

Here is a quick guide to the Scaling configuration options:

  • EnableAutoScaling must be set to True to enable these features.
  • AutoScaleType: Vanilla, Linear, or Exponential. If set to Vanilla these auto-scaling features will not be enabled!
  • AutoScaleFactor: change the biome scaling factor.

Linear scaling by default is a 75% growth (0.75). This means your 1st biome (Black Forest, Meadows is 0th) will have a scaling factor of 1.75, and 7th will be 6.25 for calculations.

To use Exponential scaling PLEASE READ THIS PART: Given that there are by default only 8 biome difficulties to scale, the maximum scaling value you can input is roughly 21 without blatantly breaking the code generating the values (If using 12 custom biome difficulties this number is about 6). However, 21 is a much, much bigger number than you could ever want. Recommended values for exponential scaling are in a range of 0.25 - 1. For example, an exponential scaling of 0.75 will set the 1st biome to 1.75x harder, 7th biome to be about 50x harder than the base biome. This is in stark contrast to the values set by linear scaling and is the ideal way (theoretically) to naturally enforce "Biome Locking" (which is the main reason why this mod exists).

Creature Scaling

The total damage a creature can do will be scaled and then distributed to individual damage types for each attack; scaling will maintain the ratio for creatures with more than one attack (some attacks are stronger, some are weaker, scaling maintains this). All values for chop and pickaxe damage are ignored and will retain their original values without affecting scaling.

Here is a quick guide to the Creature Scaling configuration options:

  • AutoScaleCreatures: Set to true to scale creature health and damage.
  • AutoScaleCreaturesHealth: Leave blank to use default values, to override enter a comma-separated list of 6 integers.
  • AutoScaleCreaturesDamage: Leave blank to use default values, to override enter a comma-separated list of 6 integers.
  • AutoScaleCreaturesIgnoreDefaults: Set to true to exclude all defaults (can still use yaml override).

Other notes:

  • The list for health and damage configs is in the format (for difficulty spread): Harmless, Novice, Average, Intermediate, Expert, Boss
  • The default health values built into the code: 5, 10, 30, 50, 200, 500.
  • The default damage values built into the code: 0, 5, 10, 12, 15, 20.

To override this mod's default configurations there is a file called "WAP.CreatureOverrides.yaml" in which you can add customizations. Currently, all players must have the same file locally since this feature does not sync yet. Directions on how to use the override feature are included in that file.

Item Scaling

Vanilla items are grouped by custom types and are assigned the biome in which they naturally can be crafted.

Here is a quick guide to the Item Scaling configuration options:

  • AutoScaleItems: Set to true to scale player items.
  • AutoScaleItemsIgnoreDefaults: Set to true to exclude all defaults (can still use yaml override).

To override this mod's default configurations there is a file called "WAP.ItemOverrides.yaml" in which you can add customizations. Currently, all players must have the same file locally since this feature does not sync yet. Directions on how to use the override feature are included in that file.

Custom Data Definitions

Biomes Difficulty Item Types
Meadow = 0 Vanilla = 0 None = 0
BlackForest = 1 Harmless = 1 Shield = 1
Swamp = 2 Novice = 2 Helmet = 2
Mountain = 3 Average = 3 Chest = 3
Plain = 4 Intermediate = 4 Legs = 4
AshLand = 5 Expert = 5 Shoulder = 5
DeepNorth = 6 Boss = 6 Utility = 6
Ocean = 7 Tool = 7
Mistland = 8 PickAxe = 8
Axe = 9
Bow = 10
Ammo = 11
Sword = 20
Knife = 21
Mace = 22
Sledge = 23
Atgeir = 25
Battleaxe = 26
Primative = 27
Spear = 28
TowerShield = 29
BucklerShield = 30
PrimativeArmor = 31
Bolt = 32
Crossbow = 33
HelmetRobe = 34
ChestRobe = 35
LegsRobe = 36

Other Features

  • ServerSync included

Developers (Always In Progress)

Want to define customizations of your own mod with these features so your users don't have to? If there is something you need let me know and I can add support for your mod!

Custom Biomes

Planned features include: Define your own biomes and add them to the scaling system by using any int value as a key that is not used. This mod's default values can be overridden to set custom scaling after initialization.

Examples (Will update this for first official release):

  • To add a Biome '10' that is one biome harder than Plains (4th hardest by default, Meadows is 0th) use: AddBiome(10, 5)
  • To add a Biome '10' that is 250% harder than the baseline use: AddCustomBiome(10, 2.5)
  • To override Meadow's difficulty after it has been initialized: AddBiome(0, 8, true) or AddCustomBiome(0, 1.3, true)

Changelog

0.0.18

  • Added (most) Mistlands additions to keys and scaling
  • Added new scaling categories for "robes": reclassified troll, root, and fenris armors to the new types
  • Added ability to override creature and item data using the specified yaml files
  • New configuration options to ignore auto-scaling defaults, allows you to change only what you specify in the yaml files
  • Renamed AutoScale config to EnableAutoScaling, you have to edit this value to use auto scaling
  • Upgraded ServerSync to version 1.13 for game patch 0.212.7

0.0.17

  • Bug fix for auto-scaling where a live configuration update would override stored vanilla data
  • Removed chop and pickaxe damage from auto-scaling (I didn't like how it changed the game)

0.0.16

  • Bug fix for auto-scaling item/creature damages calculating the values incorrectly.
  • Bug fix from last update for creature attacks not configuring
  • Added auto-scaling for item upgrades

0.0.15

  • Upgraded ServerSync to V1.11: Crossplay compatibility upgrade for config sync.
  • ServerSync patch for game patch 0.211.11.
  • Major rework for testing purposes, added more unit tests, general code cleanup.
  • Fixed a few bugs with autoscaling values calculated incorrectly.
  • Added ability to restore vanilla game data without a game restart for autoscaling (in testing).
  • Optimization for Key and Skills managers caching.
  • Fixed biome ordering for Mistland, Ashland, DeepNorth.

0.0.14

  • Fixed a server sync issue for auto scaling features.

0.0.13

  • Added options to track boss completion for skill management.
  • Moved the Key configurations to a new section.

0.0.12

  • Update for game patch 0.211.7 Crossplay. Reverted ServerSync to 1.6.

See all patch notes on Github.

Contributing

All issues can be reported on the project Github. To report issues please be as specific as possible and provide the following:

  1. Version of this mod you are using.
  2. List of the other mods being used.

All feedback, ideas, and requests are welcome! You can message me at my discord Venture Gaming.

CHANGELOG

0.3.0

  • Update for game version 0.219.13.
  • New configurations for unlocking portaling metals based on keys.
  • New configurations for Bog Witch trader items, and new Haldor item.
  • Added new Bog Witch items to cooking locking system.

0.2.14

  • Compatibility support added for properly unlocking items that have only one required ingredient for crafting (Thank you nbusseneau for the report).
  • Bug fix for locking cooking and crafting not being mutually exclusive (now checks if station is a cauldron). Fixes frost arrows could not be crafted when crafting was unlocked but cooking was locked.
  • Added missing Bilebag, Ooze, and Sap to crafting locking system.

0.2.13

  • Bug fixes to allow skill cache to update when keys change. Should fix issues with skill capping not working as expected.
  • Bug fix for raids feature only being "rallies the creatures", was not using the correct ID so no keys were being detected for players.

0.2.12

  • Update for game version 0.218.12+.
  • Updated to include new items from Ashlands.
  • Skill capping now accounts for the Ashlands boss, this will naturally lower the skill gain ceiling.

0.2.11

  • Refactored configuration live updates to only happen when needed.
  • Refactored server key tracking to use player IDs rather than names. This will allow players to have the same name on a server.
  • Removed cleanup patch for incorrectly configured world modifiers (if you manually break your world modifiers you can fix them with Venture Debugger).
  • Set commands to onlyServer false.

0.2.10

  • Update for game patch 0.217.46

0.2.9

  • Added compatibility for power locking with the Passive Powers mod. Should now work when multiple powers are selected given player and/or world must have unlocked all keys for selected powers.

0.2.8

  • Restored private key implementation for raids from the pre-Hildir update.
  • Fixed blocking not working for ammo items like arrows due to auto-equipping.

0.2.7

  • Improved other mod compatibilities by additionally patching for ZoneSystem.RPC_RemoveGlobalKey method.
  • Added new command removeglobalkey due to previous change altering the vanilla removekey command.
  • Refactored patches so both global keys and private keys lists are handled appropriately when using private keys to respect global key configurations. Changes some vanilla commands' behavior.
  • Added built in support for the Seasonality mod.

0.2.6

  • Improved other mod compatibilities when using private keys by additionally patching for ZoneSystem.GetGlobalKeys method.
  • Added new command listglobalkeys due to previous change altering the vanilla listkeys command.
  • Added new command resetglobalkeys.
  • All keys will now be converted to lowercase internally for handling to mimic vanilla behavior (let me know if this causes issues with other mods using keys)

0.2.5

  • Fixed issues with skill levels being calculated incorrectly when UseBossKeysForSkillLevel was true.
  • Added new configuration LockPortalsKey to control player ability to use portals. Defaults to off.
  • Added check to make sure activeBosses key is treated like world modifiers.

0.2.4

  • Fixed an issue where item upgrades were not checked for locking. Will now correctly identify item level and will lock items based on current summation of crafting ingredients for items.

0.2.3

  • Removed the Qualifying keys feature added in 0.1.1, mod will now correctly identify world modifiers without further configuration
  • Orphaned config QualifyingKeys will remain in your config files but is not used
  • If using other mods that add keys between the updates (0.1.1 - 0.2.2) they may now be in your global key list (might not cause issues, but be aware)

0.2.2

  • Fixed issue with PlayerEvents world modifier not being applied correctly (was disabling raids when using private keys)

0.2.1

  • Update for game patch 0.217.22, bepinex version 5.4.22.0

0.2.0

  • Added Jotunn library as new dependency for config syncing, you now must also install Jotunn for this mod to work
  • Added new config for admins to bypass locking settings
  • Added new config to toggle blocked action fire effect
  • Added missing items to locking system: lox pelt, blue jute, sharpening stone, thistle, entrails
    • Note: entrails set to defeating Eikthyr (not Elder) due to meadows draugr villages
  • Fixed issue with cauldron not locking cooking

0.1.4

  • Added new configurations for Hildir trade items
  • Bug fix for instances where hiding all trader items throws an error

0.1.3

  • Created save recovery patch to fix duplicate world modifiers entry
  • GlobalKeyAdd use false for canSaveToServerOptionKeys parameter to avoid duplicate entry

0.1.2

  • Added check to ensure player events key is not added multiple times after restart (part of corruption issue)

0.1.1

  • Hard check added to ensure keys are not world modifiers, fixes world save corruption issue (super apologies for this)
  • QualifyingKeys config added to allow support for other mods due to hard check
  • Private key cleanup will now remove all keys that are non-qualifying, make sure to configure this new setting

0.1.0

  • Update for game patch version 0.217.14 (Please read Hildir update notes at top)
  • First official release, bug fixing to come for Hildir as reported
  • UsePrivateKeys config now defaults to true
  • Removed private key implementation for raids, now sets and uses the vanilla world modifier for player based raids

0.0.29

  • Removed world scaling feature from this mod (get the new mod if previously using)
  • Deprecated the key file port logic (Files deprecated in version 0.0.19, if you have used a newer version of this mod your characters are already upgraded)
  • Added logic to support global key management server-side only
  • Added config toggle to display the blocked action message and effect
  • Added config settings for automatic boss summon unlocking over time
  • Moved the locking configs to a new section (You will have to manually update your config file if using)
  • Moved boss keys for skill level configs to Skills section (You will have to manually update your config file if using)
  • P.S. This should be the last set of major changes before the official release

See all patch notes on Github.