Atualização 2.37
07/06/2026
v2.37.0BETA
Seymour
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 switchfield→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 281current<max/2). Opcodes aritméticos provados (* 0x16etc.). #11 REAL shipado: um snippet guardado "If HP abaixo de X% → force command" = o idiomHP*100 < maxHP*X(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: novoFfxLib/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;--ai3PASS. 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
v2.36.0.1
v2.37.1BETA
Seymour
SPHERE GRID CANVAS: visuais AUTÊNTICOS (ícones REAL FFX via o atlas do editor) + nós legíveis + aviso de quebra AO VIVO + cores/legenda/brilho/hover/som
- O dono pediu "deixe bonito + avisos automáticos" e apontou que o v1 era um círculo minúsculo sem ícone. Achado-chave: o editor JÁ tinha o renderizador bonito do Explorer (
SphereGridPreview_Control+Assets/SphereGrid/icon_atlas.png) — então extraí o atlas REAL (e removi o game-icons.net que havia adicionado antes). Agora o Canvas: (1) ícones AUTÊNTICOS FFX — um orbe colorido + o spriteicon_atlas.pngporAppearanceType(STR/DEF/MAG/HP/MP/white/black/special/skill/lock) OU um selo de texto (AGI/ACC/EVA/LCK…), exatamente como o Explorer, viaSphereGridNodeVisualInfoconstruído depanel.bin(a mesma lógicaCreatePreviewVisual/BuildShortLabel). (2) nós LEGÍVEIS — orbe ~12px (era 5.5) + o zoom padrão agora abre num nível legível (sem espremer 828 nós) + LOD (pontos ao reduzir o zoom para a visão geral) + recorte da viewport. (3) aviso de quebra LIVE — arrastar um nó <40u OU cruzar um link o torna VERMELHO instantaneamente + exibe um banner, sem clicar em Validar (uma checagem barata somente do nó movido, por frame). (4) cores por categoria + uma legenda, brilho pulsante na seleção (DispatcherTimer), iluminação no hover, e som viaAudioStudio_Service(SFX de UI do FFX incluídos; permitido porque o projeto é PRIVADO — correção do dono). SEM IA de imagem — é o sprite REAL do jogo já distribuído no editor. Compilação com 0 erros; o editor inicia sem travar
v2.37.0
v2.37.2BETA
Seymour
Monster AI Editor: #8 targets reais NAMED (Self / inimigos / aliados / Character#N…) — o parser rachou os sentinelas
- Seguindo "olhe os parsers":
FFXDataParser/ScriptConstants.putEnum("btlActor")IS exatamente o mapa target-sentinel que IDA não tinha entregado (o resolver ATEL deu timeout). Agora nomeados e corpus-consistent: -13/0xFFF3 = Self (provado), -14/0xFFF2 = FrontlineChars (os "inimigos" do monstro = os chars do jogador; o sentinela literal mais comum, 272×), -6/-7/-8 = Character #1/#2/#3, -15/0xFFF1 = AllMonsters (os "aliados" do monstro — bate com White Wind→monstros de cura), -17 = LastAttacker, -5 = AllActors, -3 = TargetActors, -20 = AllAeons,0x10NN = MonsterType… (inimigo/aliado é da POV do monstro). Então o 🎯 Change target (v2.33.0) deixa de ser "copiar por exemplo" e vira um dropdown nomeado target-MODE — o "one / all enemies / all allies" que o dono queria no #8 desde o início; a lista de ações mostra "alvo: FrontlineChars"; e o disassembly / editor de operando glossa os sentinelas (0xFFE9–0xFFFF, a faixa inequívoca) como "(alvo: Self/…)". NovoFfxLib/Ai/AiTargetNames.cs(btlActor, mesma proveniência pública das tabelas func/property do codec); ligado no dropdown +AiScript_File.OperandGloss. Gate--ai2/--ai3PASS (RT0 byte-identical intactos — só gloss, zero bytes mudados); o editor compila 0 erros. Honesto: Self é byte-proven; o resto dos nomes vem de RE público + corpus-consistent (semântica fina = RT2)
v2.37.1
v2.37.3BETA
Seymour
SPHERE GRID CANVAS: nós escalam com o zoom + ícones vetoriais limpos (o atlas cortava errado)
- Feedback do dono no v2.37.1: o atlas do Explorer (
icon_atlas.png) cortava suas células errado (Lv1-4 e muitos outros feios) e os nós encolhiam ao dar zoom (tamanho screen-constant → perdidos no espaçamento). Dois fixes: (1) raio escala com o zoom —CurrentNodeRadius = clamp(26×scale, 5..42px), então zoom-in = um orbe BIGGER (ícone legível), zoom-out = menor (overview); o ícone/texto escala junto. (2) ícones vetoriais — de volta aos glifos game-icons.net (CC BY) (caminhoSphereGridIcons.cs, SVG →Geometry.Parse) que escalam nítidos em qualquer zoom, sem corte (o atlas de bitmap é descartado): locks = um badge limpo "L{n}" (Lv1-4 nunca mais clipe), stats ganham ícone (HP/MP/Strength/Defense/Magic/Agility/Luck/ability), o resto = um badge de texto escalado (ACC/EVA/MDF/WHT/BLK/SPL/SKL). Mantém o orbe category-colored + glow/hover/legenda/live-break-warning/som. Build 0 erros; atribuição CC-BY emSPHERE_GRID_ICON_CREDITS.txt
v2.37.2