ASharpPen-Enhanced_Progress_Tracker icon

Enhanced Progress Tracker

Adds additional, consistent, global keys. Enables seamless player or tribe based global key checks.

Last updated 3 years ago
Total downloads 4432
Total rating 1 
Categories Mods Utility
Dependency string ASharpPen-Enhanced_Progress_Tracker-1.0.1
Dependants 15 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.800 icon
denikson-BepInExPack_Valheim

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

Preferred version: 5.4.800

README

Enhanced Progress Tracker

This mod enables additional features for the global key management, which handles general in-game progress.

Do you find the inconsistency of the key naming annoying? This mod adds keys for any mob (including modded ones), with a consistent naming scheme.

It also attempts to allow for individual and group based progress. Only relevant for multiplayer.

Features

  • Global key for any mob killed
  • Consistent key naming
  • Create tribes of players, for shared progress tracking.
  • Player based global keys
  • Tribe based global keys
  • Server-to-client configs

Limitations

Unable to use individual / tribe keys automatically, in the parts of valheim that run server-side. Eg. raids.

Any mod that tries to use the "raw" list of keys, will get all of the keys generated by this mod, and not a list specific to the individual/tribe. The mod will either have to filter itself, or check for key-existance using the standard "GetGlobalKey".

How does it work?

Enhanced Progress Tracker sets additional keys on creature death. It makes a lot of them, to allow for selecting which tracking mode is used. The individual and tribe keys will simply have a specifier for type of key, as well as the name of player or tribe.

When the game checks for progress, it asks for the existance of a specific key, such as "defeated_bonemass". Depending on the key-mode set, EPT will then check for keys that are more specific, such as "defeated_bonemass:Player:Asharppen" and return whether or not it finds it.

If using key-mode "Tribe", and a player is not in one, that player will be getting the default world progress.

What do the keys look like?

New keys will be named: KILLED_{PREFABNAME} Eg. "KILLED_GREYDWARF_ELITE"

Additional keys with specifiers will also be added for both default, and the new format above:

KILLED_{PREFABNAME}:Player:{PlayerName}
KILLED_{PREFABNAME}:Tribe:{TribeName}

Eg. killing bonemass with all keys enabled, generates the following:

KILLED_BONEMASS
KILLED_BONEMASS:Player:Asharppen
KILLED_BONEMASS:Tribe:AsharppensTribe
defeated_bonemass
defeated_bonemass:Player:Asharppen
defeated_bonemass:Tribe:AsharppensTribe

If you are in doubt how a key looks, you can always use the console "listkeys" to list all the keys registered in the world.

Creating a tribe

Tribes are created / added to in the "enhanced_progress_tracker.tribes.cfg". A player can only be in one tribe.

[TribeName.UniqueIndex]
Name = PlayerName

Eg.


[MyTribe.0]
Name = Asharppen

[TestTribe.0]
Name = APlayer

[TestTribe.15]
Name = TestTesterson

Configuration

General configuration can be found in the "enhanced_progress_tracker.cfg" file.


[General]

## Choose key tracking mode. This decides how progress is tracked. Default, Player, Tribe.
KeyMode = Default

[Keys]

## Enables player key recording. Meaning each player will get a global key recorded, when a creature dies.
RecordPlayerKeys = true

## Enables tribe key recording. Meaning each tribe will get a global key recorded, when a creature dies.
RecordTribeKeys = true

[KillTracking]

## If players are within the set distance on creature death, they will have their (or their tribe's) progress updated. If 0 or less, this setting is disabled.
TrackPlayersWithinDistance = 100

Mod integrating/depending on EPT:

Generally any mod that uses global keys, and is not running server-side, will have to make no changes to be able to use the enhanced keys.

If in need of the individual/tribal keys while server-side, a dependency will be required.

EPT has an extension class for ZoneSystem that allows for checking global keys, with more parameters added to the key check.

Eg. ZoneSystem.instance.HasGlobalKey(Player.m_localPlayer, "defeated_bonemass");

ChangeLog

v1.0.1

  • Additional error descriptions and handling. v1.0.0
  • Initial release