|
| | sl2.er.er_roster (menu) |
| | Read the ER character roster (active flag, name, level per slot).
|
| |
| | sl2.er.er_gaitems (buf) |
| | Walk the ER GaItem array and yield every owned item id.
|
| |
| | sl2.er.er_find_stats (buf, level) |
| | Locate the ER stat block by content, or None if none validates.
|
| |
| | sl2.er.er_parse (buf, iddb, name, level) |
| | Parse one ER slot into the unified dict (full where stats validate).
|
| |
| | sl2.er.load_er_db (db_dir) |
| | Load the ER id tables, category-scoped: {category: {id: name}}.
|
| |
| | sl2.er.er_resolve (iid, db) |
| | Resolve an ER item id to (name, category), type-scoped by its nibble.
|
| |
|
| int | sl2.er.ER_GAITEM_START = 0x30 |
| | Offset of the GaItem array inside an ER slot: past the 16-byte checksum, the version and map-id words, and the 16 bytes after them.
|
| |
| int | sl2.er.ER_GAITEM_COUNT = 0x1400 |
| | Number of GaItem entries in the array.
|
| |
| | sl2.er.ER_MENU_LEN_OFF |
| | In the menu (header) entry: offset of the variable-length menu-system block's length field, the byte after which its data begins, the number of character slots, the size of one profile summary, and the profile field offsets for name and level.
|
| |
| | sl2.er.ER_MENU_DATA_OFF |
| | In the menu (header) entry: offset of the variable-length menu-system block's length field, the byte after which its data begins, the number of character slots, the size of one profile summary, and the profile field offsets for name and level.
|
| |
| | sl2.er.ER_SLOT_COUNT |
| |
| | sl2.er.ER_PROFILE_STRIDE |
| |
| | sl2.er.ER_PROFILE_NAME_LEN |
| |
| | sl2.er.ER_PROFILE_LEVEL_OFF |
| |
| | sl2.er.ER_STAT_D |
| | ER stat block as signed distances from the Vigor field (the anchor).
|
| |
| | sl2.er.ER_HP_D |
| | ER max HP, stamina, rune level and runes held, same anchor-relative scheme.
|
| |
| | sl2.er.ER_STAM_D |
| | ER max HP, stamina, rune level and runes held, same anchor-relative scheme.
|
| |
| | sl2.er.ER_LEVEL_D |
| | ER max HP, stamina, rune level and runes held, same anchor-relative scheme.
|
| |
| | sl2.er.ER_RUNES_D |
| | ER max HP, stamina, rune level and runes held, same anchor-relative scheme.
|
| |
| int | sl2.er.ER_LEVEL_BASE = 79 |
| | ER's rune-level identity: level == (sum of the eight attributes) - 79.
|
| |
| int | sl2.er.ER_LEVEL_MAX = 8 * 99 - ER_LEVEL_BASE |
| | The highest rune level the identity can produce: eight attributes at 99 sum to 792, minus ER_LEVEL_BASE.
|
| |
| | sl2.er.ER_EMPTY_SLOT_IDS |
| | The ids that mean "this slot is empty", not "the character owns this".
|
| |
| dict | sl2.er.ER_CAT = {0x0: "weapons", 0x1: "armors", 0x2: "talismans", 0x4: "goods", 0x8: "ashes"} |
| | ER item category by id top nibble (the ItemGib type code), and the render category each maps to.
|
| |
| | sl2.er.ER_DB_FILES = tuple(ER_CAT.values()) |
| | ER db category files (one per type), each {8-hex-id: name}.
|
| |
| int | sl2.er.ER_WEAPON_BASE_STEP = 10000 |
| | Weapon ids bake affinity+reinforcement into the low digits: the id is base + affinity*100 + level, base spaced by ER_WEAPON_BASE_STEP.
|
| |
| int | sl2.er.ER_WEAPON_AFFINITY_STEP = 100 |
| |
| int | sl2.er.ER_MAX_REINFORCE = 25 |
| | Highest reinforcement ER allows (+25 on the standard path; somber stops at +10).
|
| |