|
| | sl2.ds2.ds2_name (buf) |
| | Read a DS2 name, or None for an empty slot.
|
| |
| | sl2.ds2.ds2_inventory (buf, item_db) |
| | Sort both DS2 inventory regions into categories.
|
| |
| | sl2.ds2.ds2_phys_atk (stat) |
| | Physical attack bonus (ATK: Str/Dex) at a stat value: linear-interpolate the decade breakpoints of DS2_PHYS_ATK_BP, floored to the game's integer display.
|
| |
| | sl2.ds2.ds2_elem_def (stat) |
| | Shared DS2 elemental-defence curve: +6/pt to 10, +8/pt to 20, +1/pt to 60, +0.5/pt (one every other) to 99.
|
| |
| | sl2.ds2.ds2_derived_stats (stats) |
| | Compute DS2 base derived stats from the attribute block.
|
| |
| | sl2.ds2.ds2_covenants (buf) |
| | Every DS2 covenant the character has discovered, with its rank.
|
| |
| | sl2.ds2.ds2_parse (buf, item_db, game="ds2sotfs") |
| | Parse one DS2 slot into the unified character dict, or None if empty.
|
| |
| | sl2.ds2.load_ds2_bonfires (base_dir) |
| |
| | sl2.ds2.load_ds2_bonfire_areas (base_dir) |
| |
| | sl2.ds2.load_ds2_bosses (base_dir) |
| |
| | sl2.ds2.load_ds2_boss_souls (base_dir) |
| |
| | sl2.ds2.ds2_base_name (name) |
| | An inventory name with its " +N" reinforcement suffix removed.
|
| |
| | sl2.ds2.ds2_infer_bosses (world, ch, base_dir) |
| | Bosses this character has defeated, as {boss: [evidence]}, or None.
|
| |
| | sl2.ds2.ds2_visited_bonfires (world, bf_db) |
| | Names of the bonfires this character has discovered, or None.
|
| |
| | sl2.ds2.ds2_bonfire_areas (visited, area_db, bf_db) |
| | Group discovered bonfires by area, in the (area, count, names) shape DS1 and DS3 already emit, so all three render through the same section.
|
| |
| | sl2.ds2.ds2_augment (ch, data, entries, i, base_dir, dec=decrypt_ds2) |
| | DS2-only augment: attach world-block progression (bonfires, bosses) to a parsed character.
|
| |
| | sl2.ds2.ds2_active_slots (data, entries, slots, dec=decrypt_ds2) |
| | Which DS2 block entries hold a character still listed in the menu.
|
| |
|
| tuple | sl2.ds2.DS2_GAMES = ("ds2sotfs", "ds2vanilla") |
| | The two DS2 releases.
|
| |
| dict | sl2.ds2.DS2_FAMILY = {"dsr": "ds1", "ptde": "ds1", "ds2vanilla": "ds2sotfs"} |
| | Game id to the id whose lookup tables it uses (attribute reference, derived stats, themes).
|
| |
| | sl2.ds2.DS2_NAME_OFF |
| | DS2 character-slot offsets (absolute, into decrypted game data).
|
| |
| | sl2.ds2.DS2_SOULS_OFF |
| | DS2 character-slot offsets (absolute, into decrypted game data).
|
| |
| | sl2.ds2.DS2_SOULMEM_OFF |
| | DS2 character-slot offsets (absolute, into decrypted game data).
|
| |
| | sl2.ds2.DS2_HP_OFF |
| | DS2 character-slot offsets (absolute, into decrypted game data).
|
| |
| | sl2.ds2.DS2_NG_OFF |
| | DS2 character-slot offsets (absolute, into decrypted game data).
|
| |
| | sl2.ds2.DS2_TITLE_NAME_OFF |
| | DS2 header (BND4 entry 0) title-list layout: each menu slot's name sits at DS2_TITLE_NAME_OFF + DS2_TITLE_STRIDE * title_index.
|
| |
| | sl2.ds2.DS2_TITLE_STRIDE |
| | DS2 header (BND4 entry 0) title-list layout: each menu slot's name sits at DS2_TITLE_NAME_OFF + DS2_TITLE_STRIDE * title_index.
|
| |
| int | sl2.ds2.DS2_TITLE_PLAYTIME_OFF = 66 |
| | Play time (u32 seconds) inside a header title record: name is at record base +0, the play-time counter at +66.
|
| |
| | sl2.ds2.DS2_CLASS_OFF |
| | Starting class (byte) and current covenant (byte) offsets in the slot block.
|
| |
| | sl2.ds2.DS2_COVENANT_OFF |
| | Starting class (byte) and current covenant (byte) offsets in the slot block.
|
| |
| dict | sl2.ds2.DS2_CLASS |
| | DS2 starting-class and covenant id→name (from the SOTFS Cheat Engine table dropdowns).
|
| |
| dict | sl2.ds2.DS2_COVENANT |
| |
| | sl2.ds2.DS2_COV_DISC_D |
| | Per-covenant discovered flag and rank, as two dense byte runs in covenant-id order just past the current-covenant byte.
|
| |
| | sl2.ds2.DS2_COV_RANK_D |
| | Per-covenant discovered flag and rank, as two dense byte runs in covenant-id order just past the current-covenant byte.
|
| |
| | sl2.ds2.DS2_COV_MAX_RANK |
| | Per-covenant discovered flag and rank, as two dense byte runs in covenant-id order just past the current-covenant byte.
|
| |
| | sl2.ds2.DS2_GENDER_OFF |
| | Gender (u8) and hollowing level (u8) offsets in the slot block.
|
| |
| | sl2.ds2.DS2_HOLLOW_OFF |
| | Gender (u8) and hollowing level (u8) offsets in the slot block.
|
| |
| int | sl2.ds2.DS2_DEATHS_OFF = 104 |
| | Total deaths (u32) in the slot block.
|
| |
| dict | sl2.ds2.DS2_GENDER = {0: "Male", 1: "Female"} |
| | DS2 gender enum.
|
| |
| | sl2.ds2.DS2_WORLD_ENTRY_DELTA |
| | Bonfire (rest-point) progression lives in a separate WORLD block, not the character-status block.
|
| |
| | sl2.ds2.DS2_BONFIRE_FLAG_DELTA |
| | Bonfire (rest-point) progression lives in a separate WORLD block, not the character-status block.
|
| |
| | sl2.ds2.DS2_BONFIRE_MIN_RUN |
| | Bonfire (rest-point) progression lives in a separate WORLD block, not the character-status block.
|
| |
| | sl2.ds2.DS2_STAT_OFF |
| | DS2 attribute offsets (uint16 each), in display order; Level last.
|
| |
| | sl2.ds2.DS2_STAMINA_BASE |
| | DS2 derived-stat bases (values BEFORE rings/equipment).
|
| |
| | sl2.ds2.DS2_EQUIP_BASE |
| | DS2 derived-stat bases (values BEFORE rings/equipment).
|
| |
| | sl2.ds2.DS2_AGL_BASE |
| | DS2 derived-stat bases (values BEFORE rings/equipment).
|
| |
| | sl2.ds2.DS2_IFRAMES |
| | Roll i-frames by Agility value (fextralife/community breakpoints).
|
| |
| tuple | sl2.ds2.DS2_SLOT_BREAKS = (10, 13, 16, 20, 25, 30, 40, 50, 60, 75, 94) |
| | Attunement values at which a spell slot is unlocked (fextralife Attunement).
|
| |
| | sl2.ds2.DS2_PHYS_ATK_BP |
| | Physical attack bonus (ATK: Str / ATK: Dex) by stat value — decade breakpoints of the weapon-independent curve (the weapon then applies its own scaling on top).
|
| |
| | sl2.ds2.DS2_INV_RANGE |
| | Shared elemental-defence curve breakpoint rates (per stat point): +6 (1-10), +8 (11-20), +1 (21-60), +0.5 (61-99); base 0.
|
| |
| | sl2.ds2.DS2_KEY_RANGE |
| | Shared elemental-defence curve breakpoint rates (per stat point): +6 (1-10), +8 (11-20), +1 (21-60), +0.5 (61-99); base 0.
|
| |
| dict | sl2.ds2.DS2_STACKABLE |
| | DS2 categories whose slot +8 field is a real count (float durability elsewhere).
|
| |
| dict | sl2.ds2.DS2_UPGRADEABLE = {"weapons", "armors"} |
| | Categories whose slot +12 field carries a reinforcement level.
|
| |
| | sl2.ds2.DS2_REINF_OFF |
| | Byte offsets inside the uint32 upgrade field of a 16-byte item record: the LOW byte (+12) is the reinforcement level (0..10); the next byte (+13) is the infusion id.
|
| |
| | sl2.ds2.DS2_INFUSE_OFF |
| | Byte offsets inside the uint32 upgrade field of a 16-byte item record: the LOW byte (+12) is the reinforcement level (0..10); the next byte (+13) is the infusion id.
|
| |
| dict | sl2.ds2.DS2_INFUSION |
| | DS2 infusion ids to names.
|
| |
| dict | sl2.ds2.DS2_GREAT_SOULS |
| | The four DS2 "Old" great souls (from the Lost Sinner, the Rotten, the Old Iron King, and the Duke's Dear Freja).
|
| |
| dict | sl2.ds2._DS2_BONFIRE_CACHE = {} |
| | Load the DS2 bonfire id→name table (db_ds2/bonfires.json, keyed by the low-16-bit id as 4-hex).
|
| |
| dict | sl2.ds2._DS2_AREA_CACHE = {} |
| | Load the DS2 bonfire→area table (db_ds2/bonfire_areas.json): bonfire id → the area it belongs to, so discovered bonfires group the way DS1's and DS3's do instead of listing 77 flat names.
|
| |
| dict | sl2.ds2._DS2_BOSS_CACHE = {} |
| | Load the DS2 boss-defeat flag table (db_ds2/boss_flags.json, world-block byte offset as hex → boss name).
|
| |
| dict | sl2.ds2._DS2_BOSS_SOUL_CACHE = {} |
| | Load the DS2 boss-soul → boss-name table (db_ds2/boss_souls.json).
|
| |
| dict | sl2.ds2.DS2_BOSS_GATE |
| | Progression gates: a boss proven dead by something the character has.
|
| |
| dict | sl2.ds2.DS2_ITEM_GATE |
| | Inventory item held ⇒ boss dead (item only obtainable past it).
|
| |
| dict | sl2.ds2.DS2_BOSS_PREREQ |
| | Boss defeated ⇒ its mandatory predecessors also defeated (each list is the full transitive set, so a single pass closes it).
|
| |