Map EB roster events and critical chance

This commit is contained in:
gamer147
2026-07-22 22:46:21 -04:00
parent 44f78f8696
commit 84fb0fc62c
4 changed files with 81 additions and 13 deletions

View File

@@ -162,7 +162,7 @@ name = "item_stat_modifiers"
category = "data-table"
type = "int[1000][14]"
value_domain = "signed additive stat values; observed -15..200"
usage = "ITINIT row-major equipment modifiers added directly to the unit's 14-column stat record by CALCREVISE. Descriptions and consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 9 capture power, 10 movement, 11 max HP, 12 max SP, and 13 max FS; column 8 remains unnamed."
usage = "ITINIT row-major equipment modifiers added directly to the unit's 14-column stat record by CALCREVISE. Descriptions and consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, 9 capture power, 10 movement, 11 max HP, 12 max SP, and 13 max FS. CALCBTPARAM adds columns 7 and 8 into the action's critical percentage, and CALCDMG compares the clamped result with a random-modulo-100 roll."
source = "investigation"
confidence = "high"
@@ -272,7 +272,7 @@ name = "skill_combat_stat_deltas"
category = "data-table"
type = "int[300][10]"
value_domain = "signed combat parameter deltas; observed -99..999"
usage = "Sparse SKINIT row-major table applied by CALCBTPARAM for the selected action. Descriptions directly establish columns 0 accuracy, 2 physical attack, 3 physical defense, 4 magic attack, and 9 capture power; columns 1, 5, 6, and 8 share the unit combat-stat layout but need final display-name confirmation."
usage = "Sparse SKINIT row-major table applied by CALCBTPARAM for the selected action. Descriptions and combat consumers establish columns 0 accuracy, 1 evasion, 2 physical attack, 3 physical defense, 4 magic attack, 5 magic defense, 6 speed, 7 luck, 8 critical chance, and 9 capture power. Column 7 is unpopulated in shipped SKINIT; CALCBTPARAM adds any luck and critical modifiers into the critical percentage that CALCDMG rolls after the hit check."
source = "investigation"
confidence = "high"
@@ -416,6 +416,56 @@ usage = "Capture eligibility for 74 ordinary enemy archetypes. SELACT and FIELD
source = "investigation"
confidence = "high"
[[global]]
address = "0x72e4e"
name = "unit_roster_state_flag_base_index"
category = "data-table"
type = "int[1000]"
value_domain = "relative index 921..951 into the persistent flag bank at 0x6d3; four consecutive flags per mapped unit"
usage = "Persistent roster-state block for seven recruitable heroines. SALLY's first three unit actions mark offsets 1, 2, and 0 respectively; UNITECH marks the offset selected by its recruitment mode; DELCH, REMOVECH, SALLY, and EXILE mark offset 3 when the unit is removed or released. The values are relative indices into the shared flag bank, not absolute global addresses."
source = "investigation"
confidence = "high"
[[global]]
address = "0x73236"
name = "unit_sally_action_unlock_requirements"
category = "data-table"
type = "int[1000][4]"
value_domain = "-1 means unconditional, 0 means unavailable, positive values 1744..1915 are one-based indices into the flag bank at 0x6d3"
usage = "Availability requirements for SALLY's first four per-unit actions. While constructing the action mask, SALLY keeps a positive entry only when flag_bank[value - 1] equals 1, keeps -1 as unconditional, and clears an action whose entry is zero. The table covers the seven principal recruitable heroines plus 29 summonable archetypes."
source = "investigation"
confidence = "high"
[[global]]
address = "0x741d6"
name = "unit_sally_event_ids"
category = "data-table"
type = "int[1000][8]"
value_domain = "SCJUMP event/decision ids 1200..1366; zero means no scripted event for that action"
usage = "Eight-slot event table for SALLY's unit actions. A populated slot is copied to scjump_decision_out and translated through the SCJUMP resource table at 0x87a57 into next_script_resource_id, handing control to the corresponding scene. Principal heroines populate all eight actions; other eligible units populate the three form-dependent event slots. EXILE also tests slot 7 when deciding whether a unit can be released."
source = "investigation"
confidence = "high"
[[global]]
address = "0x76116"
name = "unit_roster_variant_ids"
category = "data-table"
type = "int[1000][2]"
value_domain = "EBINIT unit ids; column 0 normal/recruitable form, column 1 brainwashed heroine form"
usage = "Roster-form mapping for 36 recruitable units. Column 0 maps the summonable archetypes and principal heroines to their normal unit id; column 1 maps seven heroines to EBINIT ids 21..27, whose names explicitly identify their brainwashed states. SALLY replaces the selected party unit with the action-selected form, and UNITECH recruitment modes 3/4 select the same two columns."
source = "investigation"
confidence = "high"
[[global]]
address = "0x768e6"
name = "unit_sex_magic_bonus_item_id"
category = "data-table"
type = "int[1000]"
value_domain = "ITINIT item ids 101..710"
usage = "Item awarded by SALLY after the three form-dependent intimate-event actions for 22 eligible units. SALLY passes the value directly to USEITEM and then displays the selected character name followed by the literal message 'sex magic bonus' and the resolved item description. Principal heroines yield planetary stones; the remaining rows resolve to recovery items and rare materials."
source = "investigation"
confidence = "high"
[[global]]
address = "0x76cce"
name = "unit_essence_yield"