Atualização 2.37
07/06/2026
Monster AI Editor: condição PROVEN "If HP abaixo de X%" (IDA+corpus) + 222 campos de propriedade nomeados (fim de "campo 0xNN"). Halyson disse para usar IDA e adivinhou "deve ser um arquivo de config onde a linha = um número" — os dois no ponto. RE em `FFX_recon.i64`: o dispatch nativo ATEL = `handler = (FuncspaceTables[funcId>>12] + 16(funcId&0xFFF))` (slot +0 CALLPOPA / +12 CALL); `readChrProperty` (0x700F) = `0x7A4D70` → um switch `field→property` (`sub_7B2DD0`). Cross-referenced com FFXDataParser/ScriptConstants.putBattleActorProperty (a "config" que o dono intuíu) + o corpus: campo 0x00 = HP (stat_hp, a propriedade most-read do corpus — 306×), 0x02 = maxHP (137×), 0x119 = NearDeath (= IDA case 281 `current<max/2`). Opcodes aritméticos provados (` 0x16` etc.). #11 REAL shipado: um snippet guardado "If HP abaixo de X% → force command" = o idiom `HP100 < maxHPX` (campos corpus-proven 0/2) — o boss-enrage real, não mais um palpite (a versão v2.35.0 anterior era genérica porque o campo HP não estava provado; agora está). Naming: novo `FfxLib/Ai/AiChrPropertyNames.cs` (222 campos nomeados, mesma proveniência pública da tabela func-name do codec) ligado ao detector de buff/stat → ações de status agora mostram "Haste/Protect/StatusPoison/HP/maxHP…" em vez de "campo 0xNN". Gate `--ai2`: enrage HP% 346/346 + condicional 346/346; `--ai3` PASS. Docs: `docs/reverse/FFX_AI_NATIVE_DISPATCH_AND_CHRPROPERTY_FIELDMAP_2026-06-07.md` (+ rename-queue para o `.i64`). Honesto: estrutura provada offline, efeito in-game = RT2; o medidor 0xDA/218=HP%×256 existe em IDA mas o corpus não o usa (I usou o caminho que o AI realmente usa, 0/2). Build do editor vermelho por causa do WIP da lane do Sphere Grid (não relacionado); todos os meus arquivos FfxLib, gate-validated.
Ler notas