LevelSensor.byml

Revision as of 20:14, 19 July 2024 by Ginger (talk | contribs) (→‎flag: Added _Num to flag name for accuracy)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This resource is found in Bootup.pack.

Its canonical resource path is "Ecosystem/LevelSensor.byml".

LevelSensor.byml is the main configuration file for the LevelSensor subsystem (which handles parts of difficulty scaling). All information related to difficulty (enemy and weapon) scaling is stored in this configuration file. The file format is BYML.

Contents

Human-readable versions dumped from 1.0.0 and 1.5.0 are included in the botw-re-notes repo. A diff between 1.0.0 and 1.5.0 is also provided in the repo.

[1.4.0] Flag entries for Golden enemies, Igneo Talus Titan and Monk Maz Koshia were added to the kill point table. Weapon entries for the One-Hit Obliterator and Weapon_Sword_503 were also added to the weapon scaling list. They cannot receive any modifier. (Yes, the developers forgot to add golden enemies to the config in 1.3.0.)

The root element is a dictionary.

enemy

enemy is used to configure enemy upgrades. It is an array of dictionaries of the following form:

Key Type Description
actors array Array of dictionaries of the form {name: ..., value: ...}, with name being the actor name (str) and value the required number of enemy points to transition to the next tier. Sorted by value.
species str Series name (unused at runtime)

flag

flag determines how many points an enemy kill is worth and it is used to calculate the total number of points (see Difficulty scaling for more information). It is an array of dictionaries of the following form:

Key Type Description
name str Name of the GameData s32 flag (usually a defeat counter flag: Defeated_XXXXX_Num where XXXXX is the enemy actor name)
point float Number of points for each kill

setting

setting is a dictionary of the following form:

Key Type Description
Level2EnemyPower float Multiplier to apply to enemy points. This determines how much an enemy point is actually worth.
Level2WeaponPower float Multiplier to apply to weapon points. This determines how much a weapon point is actually worth.

weapon

weapon is used to configure weapon upgrades and modifiers. It is an array of dictionaries of the following form:

Key Type Description
actorType str Weapon type (e.g. WeaponSmallSword)
actors array Array of dictionaries of the form {name: ..., plus: ..., value: ...}, with name being the actor name (str), plus a WeaponModifier (see below), value the required number of weapon points to transition to the next tier. Sorted by value.
not_rank_up bool Whether weapon upgrades (e.g. Swallow Bow -> Falcon Bow) should be enabled for this series. If false, weapons in the series will only receive modifiers and will not be replaced with different weapons.
series str Series name (unused at runtime)

Types

WeaponModifier (s32 enum)

There are three possible values for weapons[].actors[].plus in the config:

Value Description
-1 None: Weapon will receive no modifiers.
0 Blue: Weapon will receive blue modifiers, also referred to as 'SharpWeapon' in other strings.
1 Yellow: Weapon will receive yellow modifiers, also referred to as 'PoweredSharpWeapon' in other strings.