|
| | sl2.ds1.ds1_derived_stats (stats) |
| | DS1 base derived stats that are closed-form functions of attributes only.
|
| |
| | sl2.ds1.load_ds1_bonfires (base_dir) |
| |
| | sl2.ds1.load_ds1_boss_flags (base_dir) |
| |
| | sl2.ds1.ds1_attach_flags (ch, buf, base_dir, game) |
| | Merge DS1 boss-defeat FLAGS into ch["bosses"] as flag evidence.
|
| |
| | sl2.ds1.load_ds1_known_flags (base_dir) |
| |
| | sl2.ds1.load_ds1_world_events (base_dir) |
| |
| | sl2.ds1.ds1_bonfires (buf, db) |
| | DS1 bonfires the character has found, grouped by area.
|
| |
| | sl2.ds1.ds1_augment (ch, data, entries, i, base_dir, dec) |
| | DS1-only augment: attach the bonfire list, which needs the db folder the parse function never sees.
|
| |
| | sl2.ds1.ds1_resolve (item_db, cat, iid) |
| | Resolve a DS1 item id to a display name, unwrapping any upgrade baked in.
|
| |
| | sl2.ds1.dsr_find_anchor (buf) |
| | Find the true DSR stat anchor.
|
| |
| | sl2.ds1.ds1_inventory (buf, item_db) |
| | Sort the DS1 inventory into categories.
|
| |
| | sl2.ds1.ds1_deaths (buf, game) |
| | Total deaths for a DS1 slot, or None when the struct isn't where expected.
|
| |
| | sl2.ds1.ds1_attach_playtime (ch, menu) |
| | Attach play time from DS1's load-screen roster block.
|
| |
| | sl2.ds1.ds1_character (buf, item_db, m, game, ng) |
| | Build the unified full-tier dict from a located DS1 stat anchor.
|
| |
| | sl2.ds1.dsr_parse (buf, item_db) |
| | Parse one DSR slot into the unified dict (full tier), or None if empty.
|
| |
| | sl2.ds1.ptde_find_anchor (buf) |
| | Find the PtDE stat anchor (full tier).
|
| |
| | sl2.ds1.ptde_parse (buf, item_db) |
| | Parse one PtDE slot (full tier).
|
| |
|
| dict | sl2.ds1._DS1_BONFIRE_CACHE = {} |
| | Load the DS1 bonfire table (db_ds1/bonfires.json, NetBonfireDb id → [name, area]).
|
| |
| dict | sl2.ds1._DS1_BOSSFLAG_CACHE = {} |
| | Load the DS1 boss-defeat flag table (db_ds1/boss_flags.json, canonical boss name → [region byte offset, uint32 mask]).
|
| |
| dict | sl2.ds1.DS1_FLAG_BASE = {"dsr": 127721, "ptde": 127273} |
| | Where the event-flag region starts in a decrypted DS1 slot, per game.
|
| |
| | sl2.ds1.DS1_FLAG_MAX_DENSITY |
| | Sanity gate on that base.
|
| |
| | sl2.ds1.DS1_FLAG_SPAN |
| | Sanity gate on that base.
|
| |
| dict | sl2.ds1._KNOWN_FLAG_CACHE = {} |
| | Load the DS1 world-state flag table (category → [[offset, mask, name]]).
|
| |
| dict | sl2.ds1._WORLD_EVENT_CACHE = {} |
| | Load the DS1 world-event table (family → [[offset, mask, Japanese name]]).
|
| |
| | sl2.ds1.DS1_BONFIRE_REC |
| | DS1 bonfire record: 20 bytes, id then state (the rest is unread flags).
|
| |
| | sl2.ds1.DS1_BONFIRE_STATE_D |
| | DS1 bonfire record: 20 bytes, id then state (the rest is unread flags).
|
| |
| dict | sl2.ds1.DS1_BONFIRE_STATE |
| | The state values a real record can hold, and what each means.
|
| |
| int | sl2.ds1.DS1_BONFIRE_MIN_RUN = 5 |
| | Shortest believable run, so a stray id in unrelated data cannot pass.
|
| |
| | sl2.ds1.DSR_MAGIC = bytes.fromhex("00FFFFFFFF000000000000000000000000FFFFFFFF") |
| | Anchor pattern that sits next to the DSR character block.
|
| |
| | sl2.ds1.DSR_SOULS_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_HP_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_STAM_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_LEVEL_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_CLASS_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_HUM_D |
| | DSR field distances from the anchor.
|
| |
| | sl2.ds1.DSR_NG_D |
| |
| | sl2.ds1.DSR_NAME_D |
| |
| int | sl2.ds1.DSR_GENDER_D = -237 |
| | Gender (u8) distance from the anchor.
|
| |
| dict | sl2.ds1.DS1_GENDER = {0: "Female", 1: "Male"} |
| | DS1 gender enum.
|
| |
| dict | sl2.ds1.DS1_DEATHS_OFF = {"ptde": 0x1F118, "dsr": 0x1F2D8} |
| | Total deaths (u32), at a slot-absolute offset per release rather than a distance from the moving anchor — the counter lives in a fixed struct near the event-flag region, not in the character block.
|
| |
| | sl2.ds1.DS1_DEATHS_SENTINEL |
| |
| | sl2.ds1.DS1_DEATHS_SENTINEL_D |
| |
| int | sl2.ds1.DS1_MENU_ENTRY = 10 |
| | DS1's load-screen roster lives in BND4 entry 10, one fixed record per slot: name at +0 (UTF-16), soul level at +36, play time at +40 as a uint32 of SECONDS.
|
| |
| | sl2.ds1.DS1_MENU_LEVEL_D |
| |
| | sl2.ds1.DS1_MENU_PLAYTIME_D |
| |
| int | sl2.ds1.DS1_EQUIP_BASE = 40 |
| | DS1 derived values that are pure functions of one attribute, so they can be computed exactly rather than guessed.
|
| |
| tuple | sl2.ds1.DS1_SLOT_BREAKS = (10, 12, 14, 16, 19, 23, 28, 34, 41, 50) |
| |
| | sl2.ds1.DSR_STAT_D |
| | DSR attribute distances from the anchor (uint8 each), in display order.
|
| |
| dict | sl2.ds1.DS1_CLASS |
| | DS1 class ids to names.
|
| |
| dict | sl2.ds1.DS1_CAT |
| | DS1 inventory slot type (top nibble) to category.
|
| |
| | sl2.ds1.DS1_INV_START |
| | Where the DS1 inventory scan begins, and the anchor that marks the first real slot.
|
| |
| | sl2.ds1.DS1_INV_ANCHOR |
| | Where the DS1 inventory scan begins, and the anchor that marks the first real slot.
|
| |
| | sl2.ds1.DS1_INV_END = bytes.fromhex("00000000FFFFFFFFFFFFFFFF") |
| | End-of-inventory marker.
|
| |
| dict | sl2.ds1.DS1_INFUSION |
| | DS1 weapon infusion paths, keyed by the hundreds digit of the id's upgrade suffix (id = base + path*100 + level).
|
| |