O que está feito e o que falta
Gerado automaticamente a partir das rondas de trabalho e da auditoria do cliente contra o servidor. Ordenado por impacto e, dentro do mesmo impacto, pelo esforço menor. Actualizado em 13/09/2026 14:39.
Por fazer
-
Bau do Chefe (DROP_REWARD_BOX_TYPE_PIE + DROP_REWARD_OBJECT_GROUP)
Alto médioA cadeia esta tracada de ponta a ponta e tudo a jusante ja existe (os objectos estao em objetos_coleta.json e as tabelas de queda em loot.json); falta o elo do meio -- na morte, ler a accao 26 do AiIndex, sortear quantos baus e qual objecto, e injectar as entidades no mundo com APPEAR_OBJECT.
Extrair as tres tabelas e, na morte, assentar N objectos a volta do corpo pelo caminho de `assentar_objeto`, usando o Object_Drop_Datum_Point_Range como raio enquanto as posicoes absolutas nao forem decididas.
-
Passivas de atributo puro (SKILL_PASSIVE.AbilityType)
Alto médioO gerador descarta, por regra escrita, toda a passiva sem BuffLink -- e e exactamente ai que vivem os bonus de atributo das habilidades (classe 8: 91 de 94 descartadas).
Exportar AbilityType/AbilityValue/LevelUpAbilityValue e soma-los aos atributos enquanto a condicao valer.
-
Buffs que o golpe poe em QUEM LANCA (BuffTarget = 1)
Alto médioA metade "no alvo" esta ligada; a metade "no proprio" esta escrita e desligada. Falta o estado do jogador e a chamada que aplica e envia estes buffs.
Criar o estado de buff do jogador e chamar, no fim do golpe, as tres funcoes que ja existem.
-
Entrar em qualquer mapa mesmo com a mensagem de bloqueio
Alto médio pedido do donoA mensagem de requisito DEVE aparecer (e' o jogo), mas o adm em modo criativo tem de conseguir entrar na mesma, e o mapa tem de funcionar. Vale para todos os mapas, incluindo 4F/5F, Dominacao e Expedicao, e o 11F/12F da Praca Magica.
No portao de entrada de cada conteudo, deixar passar a conta adm depois de mandar a mensagem, em vez de recusar.
-
Skills que nao dao dano
Alto médio pedido do donoO dono lanca skills e o alvo nao perde vida. Na lista ja constam as causas provaveis: atributos de dano nao entram em golpe() (#7), passivas de atributo puro descartadas (#5), acerto/esquiva inexistentes (#6), e a cobertura da classe 8 nas tabelas de skill. ACHADO 03/09 no log: os golpes sem dano do
Medir com o dono: classe, skill (SkillId), alvo, e o STRUCK/dano no log; reproduzir com sonda-combate/sonda-dano; consertar a tabela ou o golpe() e provar com dano > 0 no log.
-
Ascensao da Pedra Magica (60086) -- handler em modulo, por ligar
Alto médio pedido do donoItem 5 da lista: o 60086 caia no par automatico (sucesso mentiroso).
servidor/pedra_ascensao.py (60086->12069, custo/taxa/destruicao de trance_custo; adm sem custo e sucesso garantido; degrau em mirx_item_trance_tb; atributos_extra soma trance_atrib); scripts/testar-pedra-ascensao.py verd
-
Mapa-mundi nao abre ao clicar
Alto médio pedido do donoPara conta NORMAL os blocos 13123/13125 vao VAZIOS (17 B) e o cliente funciona. Para conta ADM (`_conta_e_adm`) vao com o corpo sintetico de conquistas_gm.json: ou sao deitados fora pelo tecto (cliente sem o bloco -> mapa/montaria nao inicializam) ou, com o tecto levantado, chegam a dizer 'tudo comp
gateway.py: CONQUISTAS_GM_SINTETICAS (env MIRX_CONQUISTAS_GM_SINTETICAS, default 0); s_conquistas_concluidas/s_play_data devolvem b'' tambem para adm. testar-quadros-tecto.py verde (0 B). Depois de publicar: dono FECHA o
-
Skills bugadas e sem animacao
Alto médio pedido do donoQueixa do dono: skills sem animacao. No log o combate sai com atk_id marcado '(?)' e dano total=0 em varios lancamentos.
A investigar pelo agente qa-debug junto com o cooldown e a evasao de emergencia.
-
Painel GM: botao Remover, atalho 50.000 e alcance ao o personagem do dono
Alto médio pedido do donoSo' havia Adicionar; a caixa de quantidade nao tinha 50.000; o painel so' abria para jogador_teste e -- achado -- gm_personagem_da_conta() nao travava por conta nenhuma (qualquer CharacterUID do servidor era alvo de escrita).
site/inc/gm.php: gm_remover_item (lapide em item_delete_tb, StackCnt nunca negativo, SELECT FOR UPDATE, log com Quantidade negativa), gm_quantidade_item, gm_inventario_por_idx; MIRX_GM_CONTAS += 'Fenrir'; MIRX_GM_CONTAS_
-
o personagem do dono (506) true end game: nivel, skills das 8 classes, mitico por classe, pets
Alto médio pedido do donoDono: 'deixa o cliente o personagem do dono tudo topado ... skills todas no 12 de cada classe, tudo mitico com melhor aprimoramento e reforja ... true end game ... todos os pets'. Antes: nivel 200, 13 skills no nivel 1, sem nenhuma fase de skill/equipamento gravada, encaixes 11-15 grau 5 SEM atributos nem aprimorame
scripts/topar-personagem.py (restauro em uma pasta do servidor Nivel 250 (tecto de combate.json), 13 skills x 8 classes no tecto da tabela do CLIENTE (10 nas classes 1-5, 12 nas 6-8 -- MaxSki
-
o personagem do dono (506) true end game -- 2a leva: sistemas de progressao
Alto médio pedido do donoDepois do nivel/skills/equipamento, o 506 tinha ZERO linhas em todos os sistemas de poder: constituicao, bencao do dragao, espiritos, forca, treino do ermo, potencial, treino celeste.
scripts/topar-progressao.py (restauro em uma pasta do servidor Maximos DERIVADOS das tabelas do cliente, nao escritos a martelo: constituicao 7x135 + tier 27; bencao 10 slots x 25; espir
-
Cliente pede missao principal ja' feita (Mestre Desconhecido, Vale dos Isolados) -- e a montaria morta: MESMA causa
Alto médio pedido do donoDono no o personagem do dono (506): 'mestre desconhecido no vale dos isolados esta pedindo pra eu fazer essa missao principal, porem eu ja fiz a missao principal completa' e, antes, 'montaria nao ta funcionando'. MEDIDO: o banco JA' diz campanha terminada -- quest_main_tb do 506 esta' em 211010400 ('O Elo Quebrado d
Ligar servidor/playdata.py (progresso REAL derivado, ja' escrito por outra sessao, com dados/playdata.json e tres funcoes novas em banco.py) a s_play_data/s_conquistas_concluidas em vez do corpo vazio. NADA disto esta' p
-
o personagem do dono (506): encaixes todos destrancados e equipados
Alto médio pedido do donoPrints de 04/09: Pedra Magica 12 slots com cadeados e nenhuma pedra; Espirito 3/10; Pedaco Mistico 1/12; Esfera da Alma Magica 8/11; E.T. 0/10; Artefato Sagrado Ancestral 4/5. (Artefato de Dragao ja' 10/10 +20 Nv.25.)
servidor/encaixes_livres.py + scripts/topar-encaixes.py: destrancar todos os slots pelos tectos das tabelas do cliente e equipar tudo; conferir o bloco de LOGIN proprio de cada familia (causa conhecida do 'quando cai, de
-
Advento do Dragao Divino esta' 'so visualmente feito, mas bugado'
Alto médio pedido do donoO dono nao disse o que esta' partido. A tela mostra 8 pontos de pressao (7 dourados), 10 atributos com selo SS e os botoes Anseio / Desbloquear Novamente. Hipoteses: atributos que nao entram no calculo; botoes que recusam ou dao sucesso falso; quadro acima de 2048 B; alarme 731003 que insiste; banco
Sonda + teste que falha antes e passa depois, por defeito encontrado.
-
Evasao/esquiva (vigor) deixou de funcionar
Alto médio pedido do donoQueixa do dono, 04/09/2026: 'a evasao de energia nao funciona mais'. A esquiva gasta vigor (dados/esquiva.json: skill 89010, custo 100, cooldown 1,0 s por classe) e o servidor tem de devolver o vigor pelo 22544 -- o cliente NAO regenera sozinho (CLASS.RegenerationVigor e' lido no arranque e nunca ma
Reproduzir primeiro, depois consertar. Suspeitos pela ordem: (1) gateway.armar_vigor/_devolver_vigor deixou de ser chamado no caminho do golpe; (2) a guarda dentro de _devolver_vigor passou a barrar; (3) a skill 89010/89
-
Importar os atributos de TODOS os personagens, sempre actualizados
Alto médio pedido do donoA fotografia so era escrita para quem estivesse ligado e mexesse em algo; qualquer personagem que nao tivesse entrado ficava com os 51 campos vazios no painel.
servidor/status_fotografia.py: varre quem esta sem fotografia ou com mais de 5 min, recalcula com a MESMA atributos() e grava -- le do banco, nao precisa do jogador ligado. Import protegido, arranque nas duas portas, e e
-
Encaixes de opcao do equipamento (60809 / 60810 / 60811)
Alto grandeSo o GET existe e responde sempre "nada pendente". Alterar a opcao do encaixe, decidir/confirmar e herdar encaixes entre pecas nao tem handler, com as seis tabelas completas no pak.
Implementar os tres opcodes com sorteio por RandomOptionGroupId, custo de material e heranca por MaterialTierNRate.
-
Efeitos de atributo dos buffs (BUFF.BuffIndexType)
Alto grandeO servidor aplica, empilha, promove e anuncia buffs -- e nenhum buff altera um numero. A Distorcao (80010) e aplicada e o monstro continua a correr a mesma velocidade.
Criar uma camada de estado do portador que entre em atributos() e golpe(), e emitir os campos 10/11/12 do _buff_info.
-
MONSTER_AI -- o guiao inteiro (morte, limiar de vida, FSM, agressao)
Alto grandeA tabela e ignorada de ponta a ponta. Alem do bau: 913 linhas com CheckType 4 (na morte) invocam outro monstro; ha accoes por percentagem de vida (o enraivecer do chefe); e o SearchingType nunca extraido faz com que 178 monstros marcados como agressivos nunca agridam por aproximacao. Facto que simpl
Copiar AiIndex/FSMIndex para o catalogo e correr um avaliador simples das linhas cujo CheckType/CheckValue casam, no dano e na morte.
-
Missoes secundarias, Pedidos e Missoes de Relacao
Alto grandeAceitar devolve eco e mais nada: nao grava, nao conta progresso, nao conclui, nao paga. Cerca de 6.000 passos de conteudo inertes, e a QUESTOPEN_CONDITION que decide o que abre nunca e lida.
Extrair as tabelas, persistir estado e contagem, e fechar o passo com recompensa.
-
Modo Historia completo, do inicio ao fim
Alto grande pedido do donoO dono quer a campanha inteira, do primeiro passo ate' ao ultimo que existe hoje, a funcionar de ponta a ponta. A cadeia ja' foi regenerada do Global (2.571 passos) e o passo inatingivel e' fechado, mas nao ha' prova de que a cadeia corre toda.
Percorrer a cadeia passo a passo num teste, fechar os que travam, e dar ao adm um caminho para saltar o que nao for alcancavel.
-
TODOS os mapas a funcionar, mobs no lugar certo
Alto grande pedido do donostages.json tem 732 mapas; stage_spawn.json cobre 662 -- 70 ficam SEM spawn nenhum, e 53 desses tem StageType numerico ('3') em vez de nome, sinal de coluna mal lida na geracao. Falta prova de que os monstros de cada mapa sao os daquele mapa.
Inventario mapa a mapa em docs/; corrigir a GERACAO (scripts/gerar-*.py) e nao o sintoma; conferir nivel/grau contra StageLevel; conferir chefes unicos nao semeados como populacao (scripts/testar-chefes-unicos.py).
-
o personagem do dono (506): todas as conquistas e misterios concluidos, montarias e trajes libertados
Alto ? pedido do donoJanela de montarias mostra a condicao a vermelho em 0/1: 'Misterio - Concluir Coragem Imprudente', 'Derrotar Raide de Boss do Rei Nefariox', 'Capturar Vale Oculto 1 vez', 'Aprimorar Habilidade 60 vezes' (0/60), 'Tornar-se Rei vencendo um Cerco do castelo', 'Tornar-se Imperador vencendo o Confronto d
Progresso real no banco a partir de ACHIEVEMENT/PLAYDATA/ACHIEVEMENT_LEVEL do cliente + serializacao PAGINADA de 13123/13125 (o corpo sintetico de 03/09 partiu mapas/montarias/skills e esta' desligado por bandeira). Cada
-
o personagem do dono (506): Conquista (10 predios), Uniao Universal, Imperador de Sabuk, Rei de Bicheon e Vale Oculto da Lunula de Sangue
Alto ? pedido do donoTela Conquista com os 10 predios 'Bloqueado'/'Lv.0 Name' e cronometro coreano; Uniao Universal trancada; Castelo Sabuk com 'Imperador: a conta de administracao' em texto mas retrato vazio e 'expectativa da ascensao'; Castelo Bicheon sem cla a ocupar e Rei vazio; os 3 Vales Ocultos sem cla ocupante.
Estado REAL de dominio no banco (nao so' o texto): predios no degrau maximo, Uniao Universal aberta, e os titulos RETIRADOS do a conta de administracao (467) e passados ao o personagem do dono (506) numa operacao atomica -- o dono disse 'remova esses t
-
Nivel de cla congelado em 1
Médio médioNao existe coluna de XP de cla e o nivel e constante no codigo. Consequencia directa para o dono: 63 dos 67 nos da Torre da Conquista exigem nivel 2..40 e ficam trancados para sempre -- so quatro sao alcancaveis. O XP de cla que a doacao ja calcula e deitado fora.
Criar a coluna GuildExp, derivar o nivel de GUILD_LEVEL e passa-lo a guild_dev_aberto e ao tecto de membros.
-
Doacao ao cla e contribuicao do membro sempre a zero
Médio médioA doacao credita o cofre e manda o premio, mas nunca aplica o EXP de cla nem a contribuicao; e o campo guild_contribution que vai para o cliente le uma chave que NUNCA existe no dicionario do personagem, logo e sempre 0.
Carregar a coluna, creditar exp_taxa e contribuicao na doacao e ligar o premio por escalao.
-
Torre da Conquista -- bonus de META do cla (kind = 4)
Médio médioOs bonus de personagem ja sao somados; os de kind 4, que sao propriedade do cla (+30 membros, +99.000.000 de capacidade de cofre, +18 aliancas), nao sao lidos por ninguem.
Somar os atributos kind 4 dos degraus ja construidos aos tectos de membros, cofre e alianca.
-
Passiva e Poder de Combate do Potencial
Médio médio432 linhas concedem uma habilidade passiva e 900 de poder por no; o gerador guardou o campo e o servidor nunca o le.
Conceder a passiva do no e somar o Passive_CombatPoint.
-
Coleccao de Esferas da Alma Magica (PLAYDATA_COLLECTION)
Médio médio241 coleccoes que dao atributo permanente ao entregar a esfera do chefe correspondente: faltam as tres pernas -- os PlayDataId nao sao enviados nem contados, os itens nao caem e nao ha handler de registo.
Extrair a tabela, acrescentar os PlayDataId e os itens ao espolio e implementar o registo.
-
Elemento do golpe (DamageAttribute) e defesas elementais
Médio médioO canal elemental do golpe e lido da tabela, viaja ate ao motor de dano e e deitado fora. As defesas elementais por classe tambem estao geradas e mortas -- a Invocadora tem Holydefense -1000 (fraqueza) e Darkdefense +500.
Passar o canal a mitigacao e aplicar a defesa elemental do alvo.
-
Tectos de atributo e par Add/Ratio (STATUS_CALCULATE / STATUS_LIMIT / STD)
Médio médioOs atributos sao somados sem tecto e sem a multiplicacao pelo par percentual: um Ratio* nunca multiplica nada e um Add* pode passar o maximo que o cliente aceita.
Aplicar o par e o clamp no fim de atributos(), usando as funcoes que ja existem.
-
Resistencia a controlo (ConGrade e Def*Per)
Médio médioO controlo e aplicado sempre e com a duracao cheia: atordoar um mob de HitConGrade 500 e um chefe de 20000 da exactamente o mesmo. Do lado do jogador nem existe estado de controlo.
Comparar grau contra grau, sortear com os pares 48/49, 50/51, 52/53 e 119/120, e criar o estado do jogador.
-
Condicoes das passivas (CastingCondition) e passivas no proprio
Médio médioSo 4 das 18 condicoes correm e, dentro dessas, tudo o que nao seja "no alvo" e descartado em silencio. A maior fatia que falta e a 131 (ao usar a habilidade).
Implementar a condicao 131 e o ramo em='eu' das condicoes ja executadas.
-
BUFF_ATTACK -- o golpe periodico do buff
Médio médioImplementado para buffs ativos do jogador contra monstros: aplica o primeiro pulso ao anexar, repete em cadencia configuravel, respeita area/altura/quantidade derivadas e emite 3010/3011 mais atualizacao de HP.
PvP por buff continua bloqueado: TargetType nao tem enum/prova de permissao de alvo no acervo atual. `MIRX_BUFF_ATTACK_INTERVALO` e politica configuravel, nao valor certificado do Global.
-
Usar item -- 167 pocoes de buff e os bilhetes
Médio médioO handler so trata cura, caixas e pergaminho de regresso; todo o resto e recusado com "sem efeito implementado": 167 pocoes e elixires de buff, 6 impulsionadores de EXP, 5 bilhetes de bolsa, 3 licencas de mineracao, entre outros.
Ligar o BuffId do item ao sistema de buffs e implementar as familias de bilhete.
-
Durabilidade -- desgaste, quebra e reparo (60459)
Médio médioO servidor so usa a durabilidade maxima ao criar o item: nao ha consumo, nao ha niveis de quebra (o 3 tira 20% de status, o 4 destroi o item) e nao ha reparo.
Extrair as duas tabelas, consumir durabilidade, aplicar a penalidade de status e implementar o reparo.
-
Opcao de Selo (StampOptionGroupId, 60741)
Médio médio254 itens tem uma opcao de Selo definida e o grupo de sorteio existe; o gerador nem le a coluna e o opcode nao tem handler -- a janela fica muda.
Exportar a coluna e implementar o 60741 com o sorteio do grupo.
-
Passiva fixa e passiva aleatoria do item
Médio médio302 itens dao uma passiva fixa (mais 40 com uma segunda e 8 com uma terceira) e 64 dao passiva aleatoria -- nada e aplicado. E a hipotese registada de que o ITEM_PASSIVE_RANDOM nao tinha ligacao esta errada: a coluna esta no ITEM_ATTRIBUTE.
Exportar as colunas, ligar o grupo aleatorio ao item e aplicar as passivas.
-
Troca Especial (60655) e Troca Aleatoria (60084)
Médio médioDuas janelas de troca de item por item com custo e sorteio, todas as tabelas prontas, nenhum handler. O 60084 tem par declarado e responde vazio ("correu bem e nada aconteceu"); o 60655 nao tem par nenhum -- botao morto.
Gerar os dois ficheiros e implementar os handlers com o corte por classe.
-
Fabrico Draco (60571)
Médio médioSeparador proprio da janela de fabrico, distinto do ITEM_MAKE que ja esta feito, sem handler.
Acrescentar a tabela ao gerador e implementar o handler.
-
Colunas de OBJECT que mudam o comportamento
Médio médioobjetos_coleta.json guarda 8 campos de 56 colunas. Ficam de fora 40 objectos ja colocados que deviam gerar um monstro ao serem colhidos (MonGenValue 10000 = 100%), 70 que dao buff a quem colhe, 92 com tempo de vida e 42 com condicao de activacao -- hoje qualquer objecto e sempre colhivel.
Extrair as colunas e ligar geracao de monstro, buff, tempo de vida e condicao de colheita.
-
MONSTER_RAREACTION -- escudo, marcador de minimapa e recuperacao
Médio médio328 monstros do mundo tem linha e nenhuma coluna e lida: 17 chefes com escudo, 107 com marcador de minimapa e 328 com RecoveryHPPer 2500, a recuperacao de vida ao largar o alvo que o servidor tambem nao faz.
Extrair a tabela e ligar escudo, marcador e recuperacao.
-
Pergaminho do Demonio (OBJECT_INTERACTION_MON_GEN)
Médio médioO item existe no mapa do servidor e nao faz nada: usar devia criar o objecto na posicao do jogador e interagir com ele devia fazer nascer o grupo de monstros.
Implementar o uso do item e a injeccao do objecto e do grupo de monstros.
-
Janelas do chefe de mundo (60408 / 60409 / 60410 / 60412)
Médio médioO 60413 (lista de chefes de pe) esta feito; as quatro janelas a volta -- lista do evento, zona, contribuicao e o que o chefe larga -- caem no par automatico e saem vazias.
Responder as quatro janelas a partir da agenda que ja esta em dados/raide.json e do loot do chefe.
-
Aparencia / Customizacao (60097 e 60206)
Médio médioA customizacao so e escrita uma vez, na criacao do personagem, e nunca mais muda: os dois opcodes caem no par automatico.
Implementar os dois handlers validando contra CUSTOMIZING_TYPE e gravando em customize_tb.
-
INSTANCE_DUNGEON_SETTING -- so os cronometros sao usados
Médio médioO gerador so extrai Timer1..4; ficam por usar o teleporte dos jogadores para a arena quando o chefe aparece, as cinematicas e os avisos na tela.
Extrair as colunas e aplicar o warp e os avisos no aparecimento do chefe.
-
Recompensa de primeira limpeza e recompensa de cla das raides
Médio médioAs 38 raides definem 4-5 itens de primeira limpeza (equipamento por classe), 3 recompensas de cla, o presente para os membros e os pontos por sucesso, falha e morte do chefe; nada disso e entregue -- so o espolio corrente.
Extrair as colunas, gravar a primeira limpeza por personagem e entregar.
-
Compra rapida do SHOP_ITEM (lotes de pocoes por Cobre)
Médio médioA lista chega vazia e o comprar devolve sucesso sem cobrar nem entregar.
Gerar os dados e implementar as duas mensagens.
-
Produto por Periodo (pacote de 14 dias)
Médio médioO artigo compra-se na Loja e o premio nunca chega: 60130 e 60298 caem no par automatico.
Registar a compra com data e entregar o premio inicial e o diario.
-
QUEST_DROP_ITEM lido da versao Topaz
Médio médioO servidor decidiu nao largar o item da missao porque leu a tabela do Topaz (131 linhas, todas QuestType 6). O pak tem 1.618 linhas e 63 sao de campanha -- o contrario do que o comentario afirma. Atenua o impacto: hoje so 2 passos da cadeia activa sao desse tipo.
Regerar do pak e voltar a sortear o item nos passos de campanha.
-
Cargos do cla: lider com permissao total e usar cargo a cargo
Médio médio pedido do donoO dono aparece so' com TITULO, sem o cargo, e quer poder usar cada cargo do cla e entrar no Saque.
Dar-lhe o cargo de lider com todas as autoridades e permitir trocar de cargo no painel.
-
Uniao Universal por libertar
Médio médio pedido do donoO icone aparece trancado no painel de Treino. Ja' medido antes: ContentsId 7300/7301, condicao 1100101, sem opcode proprio no protocolo.
Confirmar se o cliente a destranca por contents_esta_aberto; se sim, abrir para o adm.
-
Bau do chefe (DROP_REWARD_BOX) nunca implementado
Médio médio pedido do donoO chefe morre e larga espolio directo, mas nao larga o BAU. O cliente tem o sistema inteiro: /OBJECT.csv IsBossDropRewardBox (1.320 objectos), /DROP_REWARD_BOX_TYPE_PIE.csv (1.031), /DROP_REWARD_OBJECT_GROUP.csv (2.246) e /DROP_REWARD_BOX_POSITION.csv (109.189 posicoes).
Na morte do chefe, sortear os baus do grupo e cria-los como objectos colhiveis a volta do corpo.
-
Invocacoes de cracha nao funcionam
Médio médio pedido do donoAs abas Cracha de Demonio e Cracha dos Abandonados nao respondem.
Medir o opcode no log e tratar a familia, como se fez para a Pedra Magica.
-
Sistema de libertar os outros pets
Médio médio pedido do donoO dono quer o caminho normal de desbloquear pets a funcionar.
Ligar a peca de invocacao ao desbloqueio, em vez de dar todos abertos.
-
Correr a linha de base das 69 sondas (nunca correu)
Médio médio pedido do donoExistem 69 sondas (scripts/sonda-*.py) que medem o servidor vivo, mas nunca foram corridas todas de uma vez para fixar uma linha de base; sem ela nao se sabe o que uma publicacao partiu.
Um roteiro que corre as 69 em sequencia contra o VPS (so' leitura), grava o resultado em docs/sondas-base.json e compara com a corrida anterior.
-
Mobs sem animacao (ataque/idle)
Médio médio pedido do donoMonstros deslizam ou batem sem animacao. Rasto: ataques_cobertura.json com 1.539 de 2.614 attack_id cobertos (501 sem linha, 574 vazios); provocar_monstro desiste em silencio; 16001 ATTACK antes do 16002 STRUCK 'so-confirmar'.
Completar a tabela de attack_id por monstro a partir do MONSTER/SKILL_ATTACK do pak; para os sem linha, usar o ataque basico da familia; nunca desistir em silencio (log + fallback).
-
Cooldown padrao do servidor em todas as contas, EXCEPTO troca de classe
Médio médio pedido do donoO dono quer o cooldown NORMAL (do jogo) a valer para todas as contas, incluindo a dele -- menos o cooldown da TROCA DE CLASSE (60537), que deve ficar sem espera.
Localizar onde o cooldown e' isento/reduzido para adm e passar a aplicar o padrao; abrir excepcao unica para a troca de classe.
-
Codex e Salao das Escrituras do 506 -- por medir antes de topar
Médio médio pedido do donoSao os dois unicos sistemas de poder que ficaram por topar. O Codex responde num quadro so', sem paginacao (~5766 entradas em codex.json); o Salao pode chegar a ~1290 linhas. O tecto de envio e' 2048 B e um quadro acima disso e' deitado fora EM SILENCIO -- e' o padrao do acidente das conquistas sint
Medir o quadro de s_codex_data e do Salao com a carga cheia (o mesmo metodo usado para o 49001 dos pets) e, se passar dos 2048, paginar o handler ANTES de gravar seja o que for.
-
Discord da comunidade MirX -- avisos de actualizacao, chat, loja de pacotes
Médio médio pedido do donoNao existe servidor Discord proprio nem qualquer integracao no codigo. O site so menciona o Discord como canal de suporte (faq.php, comunidade.php). Nao ha bot, nao ha webhook, nao ha loja.
Tres blocos independentes: (1) estrutura do servidor Discord -- canais, cargos, regras, template de reporte de bug; (2) bot/webhook de avisos automaticos -- estado dos servicos (7000/31002/33001), nova versao do lancador
-
o personagem do dono (506): Codex, Salao das Escrituras 1 e 2 e Misterios a 100%
Médio médio pedido do donoOs dois unicos sistemas de poder que ficaram por topar no 506 (pedido antigo 'por medir antes de topar'). O Codex responde num quadro so' (~5.766 entradas) e o tecto de envio e' 2048 B em silencio. | Print 04/09: Salao 2 com grupos parciais -- Subjugador da Lamina 3/6, Golpe Acelerado 1/6, Bodhidhar
Medir o quadro com carga cheia, paginar ANTES de gravar progresso, e so' depois encher.
-
Cores dos trajes: gravar a tintura e garantir traje na classe certa
Médio médio pedido do donoA cor tingida perde-se e ha' suspeita de traje a aparecer em classe errada. Existem DOIS pares de opcode de cor e so' um e' tratado: 60048->7019 grava em mirx_costume_color_tb; 60042->7005 nao tem handler. Alem disso a troca de classe (60537) desequipa tudo e repoe de mirx_phase_equip_tb -- se a cor
servidor/traje_cores.py trata o par em falta e a persistencia; auditoria traje x classe x grupo de paleta pelas tabelas do cliente (COSTUME/COSTUME_ITEM/COSTUME_PALETTE/COLOR_INDEX, as 8 classes); teste de ida-e-volta de
-
As quatro janelas do chefe de mundo
Médio médio pedido do donoA lista de chefes de pé já funcionava; as quatro janelas à volta dela — lista do evento, zona, contribuição e o que o chefe larga — saíam vazias. O motivo escrito no código era 'não há agendador de evento mundial neste servidor'.
Isso deixou de ser verdade: há agenda, com 694 chefes, dia, hora e duração, e o registo mostra-os a nascer. As janelas passam a falar com ela — quais estão de pé, quais estão na janela do horário, e a zona do chefe que s
-
Janela de Eventos do jogador (USER_EVENT / EVENTDATA / Bingo / Bencao)
Médio grandeNenhum handler: o par automatico responde corpo vazio, que em proto3 e "nao tens evento nenhum" -- a janela abre em branco. Nota honesta: quase todas as datas destas tabelas sao de 2020-2024, logo qualquer implementacao tem de redatar as janelas.
Escolher os eventos que fazem sentido, redatar as janelas e implementar a familia.
-
Passe de Batalha, Passe de Evento, Passe de Missao e Ficha de Temporada
Médio grandeQuatro familias sem handler e sem ficheiro de dados. Nao e conteudo caducado: ha seis passes activos hoje (janela de 31/08 a 30/09/2026) com 528 linhas de recompensa.
Gerar os dados, contar pontos de missao e implementar o resgate por degrau.
-
STAGE_MON_GEN -- eventos de mapa (Torre do Dragao Negro)
Médio grande148 linhas de eventos por mapa, 60 dos 63 stages sao servidos, incluindo 20 linhas com EventWarpUsable -- o evento que arrasta o jogador para outro sitio. Dentro do andar da Torre nenhum evento dispara.
Extrair as duas tabelas e disparar os eventos dentro do andar.
-
Servidor MirX LOCAL no PC do dono ('Dreamscape local'): jogar sem VPS, com painel de GM
Médio grande pedido do donoO dono quer entrar e divertir-se localmente, com painel de GM para por o que quiser. O pacote Dreamscape (Downloads) e' so' um cliente inicial (Mir4G.exe 1.127.1, TA_486179, launcher para dl.dreamscapemir.com) -- nao traz servidor; os bugs sao todos do nosso servidor. Ja existe MySQL 8 portatil em C
Arrancar frontserver+gateway locais contra C:\mysql, patch de IP do cliente para localhost (com atalho separado), painel de GM local (php -S) ou continuar a usar o /admin da VPS apontado ao banco local.
-
Painel de GM: mostrar o que e negociavel; escolher trade/vinculado
Médio grande pedido do donoO dono quer ver o que e trade e escolher entregar como vinculado.
MOSTRAR: feito e publicado -- o cartao diz negociavel/nao negociavel a partir do TradeType (elegibilidade de categoria para o Mercado Unificado, provado pela sonda-mercado.py). ESCOLHER: NAO FEITO de proposito -- o pacot
-
Mistérios: dezanove cadeias nunca apareciam no menu
Médio ? pedido do donoA lista de cadeias de Mistérios vinha de um dump antigo e tinha 62 entradas; a tabela do cliente tem 81. As dezanove que faltavam nem apareciam no menu. Pior: ao ABRIR o menu, o servidor respondia com uma lista vazia e apagava a que tinha mandado no arranque.
A lista passa a sair da tabela do cliente, e as duas respostas — a do arranque e a do menu — passam a dizer a mesma coisa.
-
Mistérios: as cadeias passam a guardar progresso
Médio ? pedido do donoDe manhã a lista passou de 62 para 81 cadeias e as duas respostas do servidor deixaram de se contradizer — mas todas iam como 'nunca começada', porque não havia onde guardar progresso.
Agora há. As cadeias que o jogo abre de raiz aparecem abertas, o passo actual e o contador são guardados e voltam depois de sair, e os passos avançam de três maneiras: quando o cliente diz que falou ou chegou, quando se
-
Aprimoramento multiplo (60521 / 60751)
Baixo rápidoO botao de aprimorar em serie nao tem handler, apesar de o aprimoramento simples ja ter toda a regra carregada (2.414 regras).
Repetir o 60065 em ciclo, com o mesmo debito e a mesma resposta.
-
Chefes de raide agendados no saguao do 11F/12F
Baixo rápidoraide.json agenda os chefes 51620/51820/51921/52222 (todos 'Monstro Transparente') e 52906 nos mapas 201301101 e 201301201, que sao os SAGUOES do 11F e do 12F -- sem catalogo de spawns. A cada janela o log diz 'fica SEM CORPO'.
Confirmar que sao gatilhos invisiveis e tira-los do agendamento de raide (ou dar-lhes corpo mudo) para o log parar de gritar.
-
Aviso do Dragao Divino insiste com tudo no maximo
Baixo rápido pedido do donoO ponto de exclamacao continua a notificar como se faltasse subir, mesmo com os 6 furos no tecto. Ja' medido: e' o CONTENTS_ALARM 731003 tipo 3, que quer dizer 'ha' material disponivel'.
Confirmar se o servidor pode calar o alarme; se for so' do cliente, registar como limite.
-
Detalhe de origem dos atributos (60210)
Baixo médioO cliente pergunta de onde vem cada atributo e recebe o par automatico de 17 B -- em proto3 isso e o servidor a afirmar "nao vem de lado nenhum".
Instrumentar atributos() para devolver a origem de cada parcela e responder o 17533.
-
Colunas de STAGE que definem a regra do mapa
Baixo médio12 de 90 colunas sao guardadas. Ficam por ler KillZone (quem cai pelo mapa nao morre nunca), DeathPenalty_*, PkOnOff, CanMeditation, EXPPenalty e SafetyArea.
Extrair as colunas e aplicar pelo menos o KillZone e a regra de PK por mapa.
-
MONSTER_PHASING -- bloco de atributos alternativo
Baixo médio1.249 linhas com um bloco completo de atributos por monstro; 40 correspondem a monstros do mundo servido. Fica registado para nao voltar a ser "descoberto".
Decidir se o bloco substitui os atributos base nesses 40 e, se sim, extrair.
-
Fabrico por encomenda e artesanato de NPC (60569 / 60570 / 60685)
Baixo médioDuas variantes do fabrico sem handler: a agencia (limites por mundo, tentativa e periodo, com premios de consolacao por falha) e o craft de NPC.
Acrescentar as tabelas ao gerador e implementar os handlers.
-
Loja pop-up (UI_SHOP_POPUPSTORE)
Baixo médioA montra temporaria nao abre: o 60743 nao tem handler nem par, logo o pedido morre sem resposta.
Acrescentar a tabela ao gerador e implementar o handler com as condicoes de abertura.
-
Quadro (Painting) -- evento de coleccao e troca no cla
Baixo médioO evento de juntar os oito quadros e os cinco opcodes de troca entre membros do cla caem no par automatico.
Implementar o evento a solo e deixar a troca para quando houver membros.
-
Loja de NPC do cla e as restantes janelas de cla sem handler
Baixo médioA banca de NPC do cla (60376-60380) e mais uma duzia de opcodes de cla abrem janela em branco; a marca do cla tambem nao e validada contra a tabela.
Implementar a banca e validar a marca contra GUILD_MARK.
-
Prendas / Presente do Cla (GUILD_GIFT)
Baixo médioCinco opcodes caem no par automatico e a aba fica em branco: 63 baus com ate 20 entradas ponderadas e uma escada de 80 niveis que consome XP e chaves douradas.
Gerar os dados, acumular o GiftExp e implementar a abertura.
-
Missoes diarias e cooperativas do cla
Baixo médioDuas abas inteiras do painel do cla em branco, com 1.858 linhas por tras. O grupo cooperativo exige o no 101015, hoje inalcancavel por causa do achado do nivel de cla.
Implementar as missoes diarias primeiro (rendem a solo) e deixar as cooperativas para quando houver membros.
-
Chat -- bloqueio de utilizador e filtro de linguagem
Baixo médioOs tres opcodes da lista de bloqueio nao tem handler e nenhuma das cinco tabelas de filtro e usada -- nem no chat, nem na validacao de nome de personagem ou de cla.
Aplicar o filtro nos nomes (rende a solo) e implementar a lista de bloqueio quando houver mais jogadores.
-
CONTENTS_ALARM -- os 82 avisos nunca sao enviados
Baixo médioA tabela define os avisos e pontos vermelhos de cada conteudo (condicao mais texto); o servidor nunca envia o pacote de alarme.
Avaliar as condicoes e emitir o 17515.
-
Ficha de Temporada (SEASONTOKEN_MAKE)
Baixo médioQuatro opcodes sem par nenhum: silencio total.
Gerar os dados e implementar a troca -- depende de redatar o CloseTime.
-
Armazem/Selagem Draco e sacola de compras
Baixo grandeNove opcodes sem handler. Nada disto e RMT: a selagem e so uma cobranca de moeda para trancar o item e a sacola e onde a compra fica antes de ser levantada.
Implementar a selagem primeiro e a sacola depois.
-
Grupo (PARTY) -- so a criacao da sala existe
Baixo grandeOs 21 opcodes seguintes nao tem handler: a sala criada nao se desfaz nem se enche e as telas Procurar Grupo e Info do Grupo ficam em branco. Sem efeito enquanto o dono jogar sozinho -- inclui o BUFF_PARTY, cujo bonus so comeca em dois membros.
Implementar quando houver um segundo jogador.
-
PK -- karma, penalidade, roubo ao morrer e Procurado
Baixo grandeSo o MODO de PK esta implementado. Falta o grau e o karma, a penalidade de XP, o que se rouba ao morrer e o sistema de Procurado; o pk_modo.json tambem so guarda 4 dos 18 modos e 10 das 26 colunas.
Implementar quando houver um segundo jogador.
-
Guerra de Cla, Cerco, Sabuk, Torneio e Alianca
Baixo grandeAs telas de info list ja estao simuladas e as 13 escritas de dominio recusam com motivo -- isso esta feito e honesto. Falta o resto: cerca de 60 opcodes com 26 tabelas por tras.
Implementar quando houver um segundo cla.
-
Raide Competitiva, Masmorra Infinita e Masmorra de Elite
Baixo grandeTres conteudos temporizados definidos no cliente sem nada do lado do servidor. Os mapas de Elite existem em mundo_spawns.json, mas a lista e a entrada directa nao.
A Infinita e a de Elite rendem a solo e valem primeiro; a Competitiva pede 20 pessoas.
-
Porque é que o servidor aparece 'Em manutenção'
Baixo ? pedido do donoA etiqueta vermelha ao lado do nome do servidor ficou onze dias por explicar. Três experiências mudaram campos da mensagem que lista os mundos, e nenhuma a tirou.
Não há conserto do lado do servidor, e agora sabe-se porquê. A prova saiu da própria tabela de textos do jogo, ao olhar para a vizinhança em vez de só para a palavra: aquele texto pertence ao ecrã de ESCOLHER ÁREA, não a
-
Poder Antidemónio: metade da pergunta respondida
Baixo ? pedido do donoDois atributos do painel não eram lidos por ninguém, e não se sabia sequer o que eram.
Não há conserto ainda, mas já se sabe metade: a coluna correspondente dos monstros está lado a lado com as outras duas defesas e cresce com o nível tal como elas, em 4198 dos 13 683 monstros. Ou seja é um canal de defesa
-
CLASS.IgnoreStatus e MainStatusList
? rápidoO gateway filtra `IgnoreStatus` na composição de atributos e nos dois canais de ataque; `MainStatusList` continua apenas uma indicação de apresentação do cliente e não altera a lista de status transmitida.
Concluído em 12/09.
Achados da auditoria já consertados
- Tesouro de Espirito -- 186 dos 276 recusados [prioridade 2] publicado · 03/09/2026 · pet_tesouro.json regenerado do pak: 450 itens, 7 degraus (scripts/gerar-pet-tesouro-global.py)
- Classificacao -- categorias das classes 6/7/8 devolvem lista vazia [prioridade 3] publicado · 03/09/2026 · RANKING_POR_CLASSE_PODER/NIVEL estendidos a 10107-10109/10407-10409; classes.json com os 8 nomes
- Recompensas da campanha -- fonte Topaz e indice de classe travado em 4 publicado · 03/09/2026 · gerar-recompensas.py le os 31 QUEST_*.csv do pak; 541 -> 1.108 passos com premio; indice min(7, classe-1) (aplicar-recompensa-8-classes.py)
- Segunda tabela de queda dos monstros com nome (NameTagDropItemId) publicado · 03/09/2026 · gerar-loot-nome-monstros.py: loot2 em 1.213 monstros do catalogo; loot.json 5.158 -> 5.404 tabelas; largar_loot rola as duas (aplicar-loot-segunda-tabela.py)
- Torre do Dragao Negro -- 3 dos 5 registos publicado · 03/09/2026 · gerar-torre-dragao.py: 5 registos (4F e Campo de Batalha); nivel_min alinhado; entrada livre do Campo para conta normal (aplicar-torre-campo-batalha-livre.py)
- Bilhetes de masmorra -- 4 dos 11 tipos publicado · 03/09/2026 · gerar-bilhetes-global.py le /DUNGEON_TICKET.csv do pak: 4 -> 11 tipos; banco.py carrega-os de bilhetes.json e gastar_bilhete passou a contar linhas (antes devolvia sucesso com saldo 0)
- Bonus de Esmagar -- RESOLVIDO 03/09 e 12/09/2026 publicado · 03/09/2026 · SYSTEM_DATA.Base_Smite=500 (+50%) + SKILL_PASSIVE AbilityType 57 por habilidade e nivel (+15% a +90%), teto Smite_Amplify_Max 25000; esmagar_amp() em habilidades.py (aplicar-esmagar-real.py, 43 testes)
- Aprimoramento (+N) -- ganho de atributo [prioridade 1] publicado · 03/09/2026 · aprimoramento.json regenerado do pak (1.757 perfis, 4.160 itens com ganho); ancora +0->+1 = 730 de poder
- Pico Secreto -- 4 andares e a Iniciacao em falta publicado · 03/09/2026 · gerar-pico-secreto.py le /SECRET_DUNGEON.csv + /STAGE.csv + /WARP_LOCATION.csv do pak: 8 -> 13 registos (Iniciacao + 12 andares); RowId%1000==0 e' a Iniciacao (colidia com o 1F) -- aplicar-pico-secreto-mapeamento.py; 139
- Artefato Sagrado Ancestral (HOLYSTUFF) -- grau e nivel sem atributo publicado · 12/09/2026 · Artefato Sagrado, as tres metades. Os blocos Status01..04 SAIRAM do CSV (dados/espiritos_graus.json 400 linhas, espiritos_niveis.json 2000) e somam em atributos() pelo bloco '2b) Artefato Sagrado Ancestral' -- isso ja' e
- Forja -- Pedras Magicas encaixadas geradas do Topaz publicado · 03/09/2026 · gerar-joias.py le ITEM/ITEM_ATTRIBUTE/ITEM_JEWEL_TIER/ITEM_JEWEL_SLOTCOLOR do pak com filtro MainType==8: 72 -> 198 pedras, 2.301 -> 3.065 pecas com encaixe; as 72 antigas dao o mesmo resultado (testar-forja-pedras.py)
- Pets -- 38 dos 99 espiritos com as passivas a zero publicado · 13/09/2026 · Revalidado: dados/pets.json mantem os 99 espiritos; a cadeia PET.SkillId -> PET_SKILL -> SKILL_PASSIVE preenche SkillAttrs dos 38 Global antes vazios (sobram 8 sem passiva por origem). O gateway soma SkillAttrs no atribu
- Ascensao da Pedra Magica (60086) -- dados prontos, opcode mudo publicado · 12/09/2026 · Ascensao da Pedra Magica (60086/12069): `servidor/pedra_ascensao.py` tem o handler, e' despachado por `op in pedra_ascensao._OPCODES_FAMILIA` e `atributos_extra` entra em atributos() (gateway 13476). A prova do achado di
- Acerto e Esquiva (AddAccuracy 28 / AddDodge 29) publicado · 12/09/2026 · As DUAS metades. O sorteio de acerto ja' existia e o par 28/29 mexe mesmo -- medido em 200 golpes com a mesma semente: 183 acertos com precisao alta, 158 com esquiva alta, 170 neutro. Faltava o STRUCK de falha: o campo 1
- Atributos de dano e mitigacao nunca entram no golpe() publicado · 12/09/2026 · Feito pelo lote 'STATUS do cliente ligados ao motor de dano' e VERIFICADO hoje a correr: com StatusID 5000, o dano passa de 97 379 646 para 146 069 469 em AddAtkBossDamage (41), AddAtkNormalMonDamage (40), AddAllDamage (
- Conquistas (ACHIEVEMENT + ACHIEVEMENT_LEVEL) publicado · 12/09/2026 · Conquistas (ACHIEVEMENT + ACHIEVEMENT_LEVEL): `playdata.bonus_achievement_level` soma em atributos() (gateway 13507) e o bloco de conquistas completas vai no pacote (19583). scripts/testar-achievement.py: 40 verificacoes
- Ascensao da Peca Mistica (60089) e do Tesouro de Espirito (60088) publicado · 12/09/2026 · Ascensao da Peca Mistica (60089) e Tesouro de Espirito (60088): o 60089 e' despachado por `pedaco_mistico._OPCODES_FAMILIA` e o 60088 tem handler proprio no gateway (39107), com `_gastar_useid`/`gastar_moedas`/`_gravar_t
- Escudo de chefe e absorcao de dano publicado · 12/09/2026 · Escudo de chefe e absorcao de dano: `mirx_dano._RAREACTION` carrega dados/monstro_rareaction.json (526 KB) e aplica escudo, marcador de minimapa e recuperacao. Medido hoje no mundo: escudo=17, minimapa=111, recuperacao=3
- Treino Celeste (HEAVEN_TRAINING) publicado · 04/09/2026 · servidor/treino_celeste.py com os 16 opcodes da familia + dados/treino_celeste.json (grade/nivel do HEAVEN_TRAINING_*.csv do cliente Global). O modulo estava publicado sem o .json e recusava tudo em silencio; o .json ent
- Encaixes do Pedaco Mistico (60740) -- modulo novo e codigo morto publicado · 12/09/2026 · Encaixes do Pedaco Mistico (60740): servidor/encaixes_slot.py deixou de ser codigo morto -- esta' ligado no dispatch do gateway (o ramo 'elif encaixes_slot is not None and op in encaixes_slot._OPCODES_FAMILIA', gateway.p
- Mapa Divino / Holy Puzzle -- a lista nunca sai publicado · 12/09/2026 · Mapa Divino / Holy Puzzle: o 57171 e' EMPURRADO (nao existe pedido do lado do cliente -- procurado nos opcodes e nos .proto, so' a resposta existe), e por isso `tratar()` nunca o podia mandar. Agora `gateway._holy_puzzle
- Bonus de conjunto do Treino Ermo (CLOSED_TRAINING_COLLECT) publicado · 12/09/2026 · Bonus de conjunto do Treino Ermo (CLOSED_TRAINING_COLLECT): o bloco esta' em `atributos()` (gateway.py:13446-13459) -- le' dados/treino_ermo.json ['coletas'] (40 degraus x 8 pares) por `treino_ermo_passo` e soma a linha
- Poder de combate das habilidades (SKILL_COST.SkillCombatPoint) publicado · 12/09/2026 · Poder de combate das habilidades: `poder_combate.poder_extra_progressao` entra em `combat_point` (gateway.py:13850) e o SKILL_PASSIVE_BATTLEPOINT esta' extraido -- scripts/testar-poder-habilidades.py passa.
- Codex -- 39 coleccoes periodicas activas descartadas publicado · 12/09/2026 · Codex, coleccoes periodicas: dados/codex.json tem 36 entradas com `periodo_inicio`/`periodo_fim` -- as periodicas DEIXARAM de ser descartadas pelo gerador (era esse o achado: 'o gerador antigo descartava TODA colecao com
- Peso de escolha do golpe do monstro (AttackRate_0..3) publicado · 12/09/2026 · Peso de escolha do golpe do monstro: dados/golpe_pesos.json (10 743 monstros, AttackRate_0) e `random.choices(usa, weights=...)` no lugar do `random.choice`. Medido no teste: o golpe de 60% sai 60,0% em 20 000 sorteios (
- Goblin bonus na morte (SummonGoblinRate02 / GoblinId02) publicado · 12/09/2026 · Goblin bonus na morte: scripts/gerar-eventos-morte.py le' SummonGoblinRate02/GoblinId02 (MEDIDO: as colunas 01 estao a ZERO nas 13 mil linhas do MONSTER.csv e so' as 02 tem valor -- 3319 monstros), dados/eventos_morte.js
- STAGE_SECTOR.RewardDropRate -- taxa de queda por grau do sector publicado · 12/09/2026 · STAGE_SECTOR.RewardDropRate: dados/setor_drop.json (852 sectores, taxas 200/300/400/500) e `multiplicador_do_setor` na TAXA DE CADA RAMO de `sortear_loot`, na morte do monstro e no bau do chao. A leitura da taxa como REL
- Raide -- ponto de entrada lido do sitio errado publicado · 12/09/2026 · Raide, ponto de entrada: dados/raide_entrada.json (scripts/gerar-raide-entrada.py, com scripts/testar-raide-entrada.py a passar) e o gateway le'-o em gateway.py:24979 -- 'a serio esta' em dados/raide_entrada.json (medida
- Pico Secreto -- cp_min e nivel_min inventados publicado · 03/09/2026 · nivel_min = STAGE.EnableLevel (32; 10 na Iniciacao) e cp_min = max(SDgnPCPower, EnableCombatPower) nos 13 andares, do pak
- Estender tempo do Pico Secreto (60425) publicado · 03/09/2026 · 60425 SECRET_DUNGEON_TIME_EXTEND -> 44712 em servidor/miudos.py, clone do 60421 da Praca (+1800 s) -- aplicar-pico-secreto-tempo.py
- Correio -- apagar carta(s) seleccionada(s) (60171) publicado · 04/09/2026 · servidor/social_pvp.py _mail_del: 60171 -> 15213, apaga pelo banco.correio_apagar (uma carta por uid pedido) e devolve ERRO_OK + a lista do que foi mesmo apagado.
- Milhagem (moeda 6) nunca e creditada publicado · 12/09/2026 · Milhagem (moeda 6): `loja_limites.milhagem_por_compra_loja` passa a ser chamada no 60290 e soma a `moedas_extra`, a lista que o handler ja' credita DEPOIS da entrega -- um bonus de compra recusada nunca chega la'. 187 do
- Mercado Unificado -- quatro abas de historico publicado · 12/09/2026 · Mercado Unificado, as quatro abas de historico: 60471, 60472, 60474 e 60475 tem handler em servidor/eventos_extra.py, que o gateway importa (316) e o arranque nao acusa como indisponivel. scripts/testar-mercado-historico
- COMBO (contador de acertos encadeados) publicado · 12/09/2026 · COMBO (contador de acertos encadeados): dados/combo.json com as seis faixas e habilidades.combo_registar_acerto chamado no caminho de ataque (gateway.py:23310). O arranque do servidor confirma em log: 'combo.json acresce
- Cargos do cla -- o BuffId de cada cargo nunca e aplicado publicado · 12/09/2026 · Cargos do cla, BuffId: `guilda_extra.cargo_buff_id_do_membro` existia sem chamador nenhum -- o BuffId de GUILD_POSITION.csv nunca chegava aos atributos. Agora `atributos()` soma-o ao lado da Tecnica do Cla, com FONTE_TEC
- Premio de classificacao (RANKING_REWARD) publicado · 12/09/2026 · Premio de classificacao (RANKING_REWARD): `servidor/social_pvp.py` trata o 60675 -> 55217 (o meu resumo) e o 60577 -> 55214 (levantar premio), com dados/ranking_recompensas.json. A prova dizia 'grep de 60577/60675/55214/
- Esferas da Alma Magica -- a habilidade do nivel 12 nao existe publicado · 12/09/2026 · Esferas da Alma Magica -- habilidade do nivel 12: `servidor/esferas.py` le' PetSkillId por encaixe aberto e soma PetSkillCombatPoint. A prova dizia 'grep de PetSkill em servidor/*.py = ZERO'. scripts/testar-esferas.py: 4
- Mitico / Despertar do Artefato Ancestral (60790) publicado · 12/09/2026 · dados/mitico.json (NPC_EQUIP_AWAKEN, 64 linhas) e o handler do 60790: valida o aprimoramento minimo (15 em todas as linhas -- e' o portao que faz o ecra ser de fim de jogo), cobra a moeda ANTES de tocar na peca, consome
- Sublime / MAKE_LOFTY (60805) publicado · 12/09/2026 · dados/lofty.json das quatro ITEM_LOFTY_* e o handler do 60805: tres materiais validados por grau/nivel/familia, moeda cobrada antes de tocar em item nenhum, sorteio pelo grupo (a soma de NormalRewardProbability e' exacta
- Lista de tutoriais concluidos quando pedida em jogo (60112) publicado · 12/09/2026 · Lista de tutoriais concluidos em jogo (60112 CLIENT_GAME_TUTORIAL_CLEAR_LIST -> 13135): handler em servidor/quest_extra.py, no _OPCODES_FAMILIA do modulo (conferido por import), a ler banco.tutoriais.
- Codex -- botao Registar tudo (60782) publicado · 12/09/2026 · O handler existia em quest_extra desde sempre e NUNCA corria: o 60782 estava declarado tambem em item_extra, que vem antes na cadeia de `elif` do despacho e respondia uma recusa de tres linhas. Saiu da familia de item_ex
- Titulo Infinito (ENDLESSTITLE) publicado · 12/09/2026 · Titulo Infinito: das duas metades do achado so' uma estava por fazer. A ESCRITA (62021 ENDLESS_TITLE_CHANGE) ja' persistia em mirx_endless_title_tb ha' dias; a LEITURA do login nao -- o 13153 esta' na faixa do BLOCO_DADO
- Esconder a arma secundaria do traje (60676) publicado · 12/09/2026 · Esconder a arma secundaria do traje (60676 CHANGE_COSTUME_SUB_WEAPON_DISABLE -> 7020): handler em servidor/personagem_extra.py, no _OPCODES_FAMILIA do modulo (conferido por import). scripts/testar-aparencia.py passa.
- NFT / selagem de personagem (60770 e 60804) resolvido · 12/09/2026 · NFT / selagem de personagem (60770 LOBBY_NFT_NONCE e 60804 GAME_NFT_TOKEN_INFO_CHECK): tratados por servidor/rmt_desativado.py, que responde a verdade deste servidor -- RMT_ENABLED=false, nao ha' cadeia nem token. Nao e'
- Tempo de recarga de item (ITEM.CoolTime, 60087) publicado · 12/09/2026 · Tempo de recarga de item: `_reservar_recarga_item` (gateway.py:9188) guarda o instante do ultimo uso por item e recusa dentro da recarga -- scripts/testar-item-cooltime.py passa (relogio injectado).
- Expansao de bolsa e armazem publicado · 12/09/2026 · Expansao de bolsa: o 60290-vizinho BUY_INVEN dava os encaixes DE GRACA, e o comentario dizia porque -- 'o tipo 4 NAO tem ramo em Money_Update_DB.txt, cobrar dele seria chute'. Era verdade quando foi escrito e ja' nao e':
- Recarga de bilhete de graca e sem tecto publicado · 12/09/2026 · Recarga de bilhete: `loja_limites.pode_recarregar_bilhete` ligado no gateway (32752), conta as recargas do dia, cobra o custo da linha e trava no tecto; tipo de bilhete sem tabela e' RECUSADO (falha fechada) -- scripts/t
- Loja de NPC -- limite de compras por periodo nao e aplicado publicado · 12/09/2026 · Loja de NPC, limite por periodo: `loja_limites.pode_comprar_npc` conta, repoe por periodo e mostra o restante (scripts/testar-loja-npc-limite.py). 12/09: os limites TAMBEM voltaram a existir nos dados -- dados/loja.json
- Constituicao -- CapStepStatus8 publicado · 12/09/2026 · Constituicao CapStepStatus8: o gerador le' 1..8 e dados/mastery_tier.json tem 78 tiers com os oito pares, coerentes com as 81 linhas do CSV que usam o oitavo -- scripts/testar-mastery-status8.py, 216 tiers conferidos.
- MONEY.csv -- politicas por moeda ignoradas publicado · 12/09/2026 · MONEY.csv, politicas por moeda: dados/money_politicas.json (scripts/gerar-money-politicas.py) e lista branca no anuncio do Mercado via servidor/loja_limites.py -- provado que a Milhagem (6) NAO e' negociavel (Policy_Trad
- Mercado -- tecto de preco e preco de referencia publicado · 12/09/2026 · Mercado, tecto de preco e preco de referencia: `TECTO_PRECO_MERCADO` (Trade_OverSalePrice), a espera imposta e a exclusao dos extremos na media, em servidor/loja_limites.py -- o teste prova que a referencia da' 100 e nao
- Suprimento do Cla (GUILD_SUPPLY) resolvido · 12/09/2026 · Suprimento do Cla (GUILD_SUPPLY): resolvido por MEDICAO, e a resposta e' nao mandar. scripts/testar-respostas-bem-formadas.py (via protocolo/tratados.py) mede que `tem_handler()` e' FALSE para as DUAS respostas nesta ver
- guilda.json gerado do Topaz publicado · 12/09/2026 · guilda.json JA' estava regerado do pak e ninguem fechou o item. Conferidas as quatro lacunas que o achado nomeia, uma a uma: autoridade 181 presente (a unica com Can_War=1 que faltava), MaxGrade2MemberCount presente nos
- MonAttackDamage e MonDefense nunca extraidas publicado · 12/09/2026 · MonAttackDamage e MonDefense extraidas para dados/mon_attack_defense.json (scripts/gerar-mon-attack-defense.py), ao lado de PhysicalAttack/PhysicalDefense para comparacao directa. A formula NAO foi trocada -- o proprio a
- Pico Secreto -- 12F e Iniciacao sem monstros; 9F/10F/11F com 6 pontos publicado · 03/09/2026 · gerar-spawns-pico-e-campo.py (sessao paralela): mundo_spawns.json com Pico Secreto 13 andares >=100 pontos e 24 mapas de campo; 0 chefe unico como populacao
- Cobertura de pacotes -- servidor responder a tudo o que o cliente Global envia feito e publicado · 04/09/2026 · 13 modulos de familia novos (rmt_desativado, guilda_extra, eventos_extra, guerra_cla_leitura, personagem_extra, item_extra, party, treino_celeste, quest_extra, buracos_criticos, social_pvp, zona_espera, masmorra_extra).
- Incenso da combinacao (25/25) -- deve dar o GRAU SEGUINTE, nao uma caixa publicado · 03/09/2026 · ALVO CORRIGIDO: o '25/25' e' o Queimador de Incenso da COMBINACAO (resgatar_pontos_combinacao, 60085->12067), nao o gacha. promessa.premio_incenso(tipo, regras, catalogo): cada ponto_tipo pertence a uma regra de grau G c
- Promessa do Dragao Divino -- Lendario deve dar MITICO publicado · 03/09/2026 · servidor/promessa.py: no sorteio 10045 (Invocacao de Pedra de Espirito Lendaria) a troca da Promessa entrega pet Tier 6 (Mitico, hipotese por eliminacao: 7 pets, nunca transcendem) via item 1701200000+PetId//100 (56 pare
- Materiais nao sao subtraidos ao criar publicado · 03/09/2026 · scripts/aplicar-materiais-adm.py: no ramo adm do fabrico (criar/trocar) a receita deixa de ter mat/mat_esp vazios -- os materiais sao conferidos e consumidos como para qualquer jogador; moeda gratis e sucesso garantido m
- Loja: precos reais (simbolicos) e LIMITE de compra a contar publicado · 03/09/2026 · dados/loja.json regenerado (gerar-loja.py --criativo --limites-reais): 692 artigos na vitrine, 678 com limite real (antes 15), precos simbolicos mantidos; o contador/limite por periodo ja' existia no gateway (mirx_loja_c
- WEMIX PLAY Webshop: mesmos precos simbolicos e mesmo limite feito · 03/09/2026 · Medido: UI_SHOP_WEBSHOP.csv (114 GoodsId) e' so' um mapa GoodsId->URL externa e tem 100% de overlap com UI_SHOP_GOODS.csv: os mesmos artigos ja' estao em dados/loja.json com preco simbolico e limite real (49 na vitrine).
- Tirar a credencial em texto limpo dos 34 ficheiros feito · 03/09/2026 · scripts/credenciais.py (senha_vps/host_vps/usuario_vps; env MIRX_VPS_PASS ou %LOCALAPPDATA%\MirXps.cred com ACL so' do utilizador); 54 scripts reescritos mecanicamente (3 guardas por ficheiro) + 40 .pyc contaminados apa
- Por o projecto em git feito · 03/09/2026 · git local em Dropbox/MIR4/.git (branch main, sem remoto), 2 commits (10.577 ficheiros, .git 34 MB); .gitignore exclui backup/, saida-pak/, *.antes*, *.bak, *.hex, caches; testar-credenciais.py passou antes do commit. Reg
- Juntar os 4 backlogs num so' feito · 03/09/2026 · scripts/gerar-lista-mestra.py junta HANDOFF (rondas), AUDITORIA-CLIENTE, auditoria-feitos.json, pedidos-dono.json e triagem-pendentes.json em docs/LISTA-MESTRA.md + lista-mestra.json + site/estado.json; corre a cada actu
- Refazer a medicao de cobertura contando os modulos feito · 04/09/2026 · scripts/placar-cobertura.py passou a somar os _OPCODES_FAMILIA dos modulos servidor/*.py (nova funcao opcodes_dos_modulos, le a arvore, nao importa). O numero publicado subiu de 255/666 para 559/666, e os opcodes 'sem fo
- Impregnacao do Pedaco Mistico -- janela de resultado com atributos vazios publicado · 03/09/2026 · servidor/impregnacao.py: 60741 sorteia opcoes novas do StampOptionGroupId (3103-3105; 254 pecas) e deixa pendente; 60742 grava so' com is_new_option=1 e devolve o item com as opcoes (26 testes)
- Actualizar o lancador no site (instalar/actualizar noutro PC) publicado · 03/09/2026 · Lancador 1.1.0 no site (MirX-lancador.zip 11,2 MB, sha 35107d4a...) e manifesto 2026.09.03-1: reconhece a build 1.131.1 (rev 490408) do MIR4 Global pela tabela e builds futuras pelos padroes de bytes (cifra x2 + anti-che
- Personagem ZZZZZ em Bicheon, nivel 200 publicado · 03/09/2026 · aplicar-zzz-bicheon-200.py: CharacterUID 470 Lev 4->200, Exp 0, StageIdx 101001010 (Bicheon), pos (4021,-10133,589); ponto de restauracao antes
- Equipamento a desequipar sozinho (ainda acontece em 03/09) publicado · 03/09/2026 · Causa medida no log: cada troca de classe (60537) chama desequipar_tudo ('[classe] 17 pecas desequipadas (eram da classe 8)') e esquecia o que saiu. Agora banco.fase_equip_guardar/fase_equip_carregar (tabela nova mirx_ph
- Status (atributos) que nao funcionam RESOLVIDO e publicado 04/09/2026: gateway.status_gm(p) lia p['CharacterUID'] e a sessao so tem character_uid minusculo -- o override do painel nunca era lido. Uma palavra. Por confirmar em jogo pelo dono. · ·
- Mobs no lugar errado / mapa com monstro errado publicado · 03/09/2026 · Parte resolvida com dados: scripts/gerar-spawns-pico-e-campo.py regenerou dados/mundo_spawns.json (Pico Secreto Iniciacao/9F-12F com 106-108 pontos cada; 21 dos 24 mapas de campo do bug n.3 povoados; 1001/400003 sem terr
- Painel GM /admin nao lista todos os personagens (ex.: ZZZZZ) feito · 03/09/2026 · site/inc/gm.php (gm_personagens sem filtro de conta + gm_personagem_da_conta so' verifica existencia) e site/admin.php (call site, seletor com conta/UID). 1 -> 21 personagens; ZZZZZ visivel e editavel.
- Sincronizar personagens (visibilidade mutua) e PvP de teste publicado · 03/09/2026 · servidor/gateway.py (aplicar-zona-partilhada.py + aplicar-pvp-area.py + PvP de teste). Sem trava de zona segura. 47 testes verdes, dano PvP simulado 54931->20922. Publicado com reinicio.
- ZZZZZ com a missao principal no mesmo passo do a conta de administracao publicado · 03/09/2026 · aplicar-zzz-missao-igual.py (le o passo do 467 em runtime; ponto de restauracao antes). Os dois ja' estavam em Bicheon nivel 200.
- Sincronizar SEMPRE ZZZZZ com a conta de administracao (cron) publicado · 03/09/2026 · sync-zzz-mirxadmin.sh no VPS (uma pasta do servidor por cron a cada 3 min; copia nivel, mapa e missao principal do 467 para o 470 so' quando o ZZZZZ esta' offline (nao mexe em sessao viva). Log em o log do servidor
- ZZZZZ aceder a todos os mapas (como a conta de administracao) publicado · 03/09/2026 · servidor/gateway.py (aplicar-mapas-criativos.py); 10 testes verdes.
- Especificacao funcional completa do MIR4 (55 partes) + referencia tecnica MirX/UE5 feito · 03/09/2026 · Lancados 03/09 ~09:30: A visao geral/personagem/power (1,2,43-46), B movimento/combate/dano/skills/buffs (3-6,42), C classes (7), D equipamento..codex/mysteries (8-15), E missoes/autocombat/IA/monstros/loot/party/morte (
- Formula oficial de combate do MirX (implementada em Python) publicado · 03/09/2026 · servidor/mirx_dano.py ligado ao golpe() vivo (aplicar-formula-combate.py, flag MIRX_FORMULA_OFICIAL=1). Todo o dano PvE+PvP usa a formula; adm continua imortal. 26 testes da formula + pvp-visibilidade verdes; PvP guard v
- Air Walk / voo nao sincroniza para os outros jogadores (remoto ve a andar no chao) publicado · 03/09/2026 · Aplicado 03/09 ~11:0x; testar-sync-airwalk.py 31/31; regressao verde. Limitacao: o cliente e' o oficial (Wemade), nao ha' log [LOCAL]/[REMOTE] nosso -- prova em jogo com 2 personagens + captura. Publicacao pela sessao pc
- Dash nao aparece para os outros jogadores + leve atraso ao iniciar movimentos publicado · 03/09/2026 · Publicado ~12:1x pela pc-a7 (43/43 no teste offline). Prova em jogo: dash visivel ao outro; atraso ao iniciar a medir pelo dono (hipotese Nagle).
- Orientacao multiplayer: dash e skills saem para o lado/atras na tela dos outros publicado · 03/09/2026 · APLICADO no gateway.py em 03/09 ~11:3x (dono: 'pode aplicar'; ensaio em copia + guarda md5 + regressao verde). Publicacao no lote da sessao pc-8b (Invocadora). Sem log [LOCAL]/[REMOTE] (cliente Wemade): prova em jogo nas
- Leve travada no movimento remoto (dead reckoning) publicado · 03/09/2026 · Aplicado ~11:3x com aplicar_lote_movimento.py; por publicar (lote pc-8b). Afinar LOOKAHEAD em jogo: parar bruscamente e inverter (overshoot). PUBLICADO pela pc-8b ~11:20 (lote conjunto com as 4 correcoes da Invocadora; b
- Auditoria Spirit Summoner -- correcoes 1 a 4 publicado · 03/09/2026 · aplicar-summoner-1a4.py + testar-summoner-1a4.py (24/24); combate-global 76/76; bateria conjunta 53/54. Publicado com reinicio 11:20. Decisoes: totens fieis ao original (ponto de origem, NAO entidades); contagem de hits
- Dash: 'buga a localizacao' no remoto (volta ao inicio do dash) publicado · 03/09/2026 · Validado em copia (65/65). APLICADO ~11:5x (janela concedida pela pc-8b; md5 247fd6c1; regressao verde). POR PUBLICAR: sai no lote da pc-8b (CC + multi-hit). PUBLICADO pela pc-8b ~12:31 (lote CC + multi-hit); VPS = local
- Aura de pet a aparecer sem pet equipado feito · ·
- o personagem do dono (a conta do dono): modo historia completo e todos os mapas feito e publicado 12/09/2026 (verificado) · ·
- Cooldown padrao em todas as contas, menos troca de classe FEITO e publicado 03/09/2026 · ·
- Aura de pet inexistente (o personagem do dono sem pet) feito · ·
- Treino Celeste recusava tudo (achado, nao pedido) FEITO e publicado 03/09/2026 · ·
- Regressao apos lotes de 15:52/16:4x: mapas, montarias, skills resolvido por revert (pc-8b, ~17:10); a confirmar pelo dono · ·
- Treino Celeste: 'Erro na tabela da Uniao Universal' ao treinar do nivel 0 feito e publicado 12/09/2026 (verificado) · ·
- Mapa-mundi (F10) nao abre e nome da missao principal nao aparece publicado 04/09 ~01:55 (gateway fe9d5b58); por confirmar em jogo · · Causa medida: passo terminal 211010400 (Level 500, sem seguinte) marcado State=2 e fechado no login -> cliente sem missao corrente -> CONTENTS_OPEN tipo 2 tranca mapa e tracker. Conserto: passo_terminal fica ACTIVO (gate
- Painel de GM /admin -- botao Remover item feito e publicado 12/09/2026 (verificado) · ·
- Painel de GM: caixa do Remover -- contagem real e 'Remover tudo' feito e publicado · ·
- Painel de GM: 'Remover tudo' aparecia na caixa de Adicionar feito e publicado · ·
- Painel de GM: status compacto com as duas bolinhas, como no jogo feito e publicado · ·
- Painel de GM: filtro na Trilha (ultimas concessoes) feito e publicado · ·
- Painel de GM: botao Moedas parecia texto solto feito e publicado · ·
- Painel de GM: mostrar no site os status calculados do jogo feito e PUBLICADO 04/09/2026: site no ar, mirx_status_atual_tb criada, gateway e banco publicados (4 servicos activos, 4 portas a escutar, sonda de campanha entrou no jogo). A fotografia enche no proximo login/mudanca de status. · ·
- Ponte do painel de GM: item nao chegava ao jogo (so ao relogar) RESOLVIDO e publicado; confirmado pelo dono em jogo e no banco (8 pedidos seguidos em Estado=1, entregues em 1-2 s) · ·
- Painel de GM: trocar a pagina do status arrastando feito e publicado · ·
- Painel de GM: filtro Negociavel na lista de itens feito e publicado · ·
- Barra de filtros esfarrapada (site inteiro) feito e publicado · ·
- Caixa de quantidade: o botao Remover saia da moldura feito e publicado · ·
- Estaticos: cache do CSS/JS presa a um numero escrito a mao feito e publicado · ·
- playmirx.com passa a ser o dominio, sempre em https feito · ·
- Fotografia de status: o carimbo que nunca avancava feito · ·
- Fúria: a Suprema pedia 125 mortes feito · ·
- Baú do chefe: a barra segue a cor feito · ·
- Câmara do Líder com o número certo de chefes feito · ·
- Painel de Detalhes: tudo caía em "Outro" feito · ·
- Prorrogar o tempo da Praça Mágica era de graça feito · ·
- Encaixes do baralho de Espíritos travados feito · ·
- Recarga das habilidades conferida contra o cliente feito · ·
- Espólio do baú do chefe não subia no canto feito · ·
- Atraso do servidor ao usar e equipar itens feito · ·
- Morrer não custava nada feito · ·
- Vigor de Caça gasto sem dar nada feito · ·
- Altar da Sublimação respondia sempre que não feito · ·
- Karma: o servidor decidia PvP às cegas feito · ·
- Mapas onde o jogo desenha um chefe e o chão está deserto feito · ·
- Botões que dois módulos disputavam, e ganhava o errado feito · ·
- Precisão do motor de dano feito · ·
- A porta em que o servidor mandava entrar estava errada feito · ·
- Higiene: um pacote inventado podia derrubar o servidor feito · ·
- Lesão Interna: a penalidade de morte que fica feito · ·
- Morrer mal alinhado passa a custar caro feito · ·
- Registos do servidor sem rotação feito · ·
- Despertar Mítico e Tesouro Ancestral feito · ·
- Quando se escapa a um golpe, o jogo passa a dizê-lo feito · ·
- A lista de coisas por fazer estava desactualizada feito · ·
- Ficar parado no mapa, sem conseguir andar feito · ·
- Advento do Dragão Divino: três atributos que o painel prometia e o jogo não pagava feito · ·
- Chefes de raide agendados no saguao do 11F/12F feito · ·
Rondas publicadas
Caixa de Seleção: vinha sempre a primeira pedra (Vigor) e sem aviso no ecrã. CAUSA: CLIENT_GAME_USE_ITEM tem QUATRO campos {1 use_item_uid, 2 use_item_count, 3 is_inven_use, 4 select_get_id} e o handler passava o campo 2 (a quantidade, sempre 1) como escolha — casava sempre com o SortNo 1 do grupo. Agora usa o campo 4. AVISO: GAME_CLIENT_NOTIFY_ITEM_GAIN (2500) nunca era enviado; s_notify_item_gain/avisos_de_ganho mandam um aviso por item DISTINTO com a soma das unidades. Teste novo: scripts/testar-caixa-escolha.py
três pedidos do dono, todos publicados: • **Caixas**: 9.999 Caixa de Seleção de Pedra Mágica Lendária (604020088) e 9.999 Épica (604020087) na mochila do 467 (empilháveis, uma linha cada; scripts/aplicar-caixas-pedra-467.py, ponto 20260903-0158). Ao abrir dão a escolher entre 10 pedras (uma por família, Tier II). ATENÇÃO: elas não abririam — dados/caixas_escolha.json tinha só 2 grupos de 108; regenerado do pak actual (gerar-caixas.py) e publicado. • **Atributos aleatórios**: com melhor=True toda pedra saía com o ME
Pedra Mágica: os atributos secundários nunca existiram. MEDIDO: a única linha que aparecia ("Aumento de Todo o DANO DE ATAQUE +6,7%") NÃO vem do fio — é o Attribute1 de /ITEM_ATTRIBUTE.csv, que o cliente desenha sozinho. As outras são RandomOptionCountMax (= Grau − 1; 4 na Lendária de Ascensão) tiradas de RandomOptionGroupId, e viajam no campo 8 random_option_list do 13104. Nenhum caminho de criação de item escrevia em item_option_tb (sortear_encantamento só é chamado pela janela de Encantar). Conserto: servidor/pe
Pedra Mágica: o baralho 0 não existe no cliente. MEDIDO: mirx_magic_stone_tb tinha 10 linhas em DeckIndex 0 e 2 em 1; o 8007 DECK_LIST saía com active_deck_index 0 e um deck_info de deck_index 0, que o cliente não desenha (roda vazia, poder 0, botão "Alterar baralho (0)") — e o bloco de login 13164 lia o mesmo 0, daí "volta vazio todos". Agora: banco.pedra_magica_deck_ativo devolve 1 por omissão; PEDRA_MAGICA_DECK_MIN=1 e _pedra_magica_deck(uid, deck) normalizam tudo o que chegue <= 0 para o baralho activo; a lista
lista B inteira publicada, 28/28 testes verdes: • **Ponto de Pressão** (Advento do Dragão Divino): garantir_dragao_criativo abre os 6 furos no tecto (grau 5, 10 atributos do pool da Ânsia 24xxx) uma vez por sessão no 60746; "Desbloquear Novamente" e Ânsia do adm no mesmo tecto, sem recusa. Alternativa por banco: scripts/aplicar-pontos-pressao-467.py. • **Espólio da masmorra**: servidor/espolio.py (60205 DROP_RECEIVE_INFO_LIST, mirx_espolio_tb) — a janela deixa de dizer "Ainda sem nenhum espólio". • **Dominação**: s
Moedas identificadas em /MONEY.csv: 6 Milhagem, 19 Jade de Dragão, 13 Pedra da Guerra, 14 Pontos de PvP, 15 Moeda do Clã, 16 Pontos de Amizade, 17 Moedas do Clã, 21 Emblema de Cavalo, 22 Ponto de Admiração, 23 Aço de Dragão (3 sem nome, 7 "Fugir"); saldos do adm em 1 B (scripts/aplicar-jade-milhagem-467.py, ponto 20260903-0040). Janela Evento: o cliente faz POST /event/list?lang=pt na API 7000 e recebia "endpoint nao implementado" (67 B); agora nginx serve o ficheiro em POST (location = /event/list, conf .antes-eve
print do dono (Cheonho "1/1" devia ir a "0/1"): a peça é material puro, o espírito existe sem ela → reserva ZERO (gasta até 0, em falha e sucesso). Adm com 0 peças segue sem recusa e sem gastar; não-adm sem peça é recusado antes de pagar. Nota: garantir_pets_criativos repõe 1 peça por espírito no login (uma vez por sessão) — o adm volta a ter 1/1 ao religar.
medido no log/BD que a peça FOI gasta (item_stack_tb 2 → 1) mas a janela continuou a mostrar 2 — o cliente não aplica o campo 4 (del_item) à cópia local da bolsa. Agora a resposta 49025 vem seguida da mochila inteira (INVEN START/DATA/END) sempre que alguma pilha é tocada. Só existe um item por espírito (UseId 1701000049 → 1701200049).
promover Espírito (60572 PET_UPGRADE) agora gasta a peça do próprio espírito (PET_LEVEL.LvUpNeedPetItemCount → regra "pecas_pet"; item = PET_PECAS[tid].item_id, ex. Wooska 4901 → 1701200049) em FALHA e em SUCESSO, com reserva de 1 (o próprio espírito; consumir até 0 apagava o alvo e garantir_pets_criativos repunha). Adm nunca recebe result≠0 (com 1 peça segue sem gastar, com log); não-adm é recusado ANTES de pagar moeda/material. A peça vai no campo 4 (del_item) da 49025. Teste: scripts/testar-pets.py (+10 conferên
Loja arrumada por categoria — só a vitrine ACTUAL do Global fica ligada (692 artigos; 5.778 fora de cartaz desligados; era isso o "bagunçado"/repetido), preço estético = centavos do Global em Moeda de Ouro, adm não é cobrado (igual ao Mercado). Raides: 38/38 com chefe (INSTANCE_DUNGEON_INFO.DungeonBossMonsterId; posição de BossAppearPlayer1WarpXYZ), 32 mapas novos da campanha povoados, 70 mapas nomeados (stages.json agora publicado). Purgatório: as 16 stages UNDERWORLD já tinham ~1.000 monstros (2F-7F por confirmar
Técnica do Clã — "Cooperar" já era tratado (60363, +10 exp por clique, teto 8.700 = 870 cliques); agora para o adm um Cooperar enche a barra e a obra (LEVELUP_START) é instantânea; 60369 SKILL_START + bónus de atributo via servidor/tecnica_cla.py (mirx_guild_tecnica_skill_tb). Aparência: servidor/aparencia.py ligado — CHARACTER_INFO_LOGIN_GLOBAL leva 16 costume_list e 22 luxury_costume_pet_id (Vestível→Pet por NOME, hipótese) e APPEAR_USER leva 13 vehicle_id e 30 equip_costume_list. Aura do Espírito: PET.csv não te
Oração (NPC_PRAY 11/21: 60788 PRAY_ITEM -> 12101, 60789 BONUS -> 12102, bloco de login 13175 CHARACTER_PRAY_SYSTEM_DATA que ia VAZIO; dados/oracao.json; mirx_pray_tb; adm 100% de sucesso); 13137 MAP_WAYPOINT_DATA deixa de ser recusado (QUADROS_GRANDES 16 KB); todos os 10 Grandes Prédios do CLÃ TESTE no degrau máximo (Forja, Mina, Árvore, Santuários, Torres, Portão — aplicar-predios-cla-todos.py). 6 agentes em curso: Desencantar, Técnica do Clã, aparência (vestível/ aura/montarias/classes), raides c/ chefe + mapas n
armazém do 467 fundido (528 -> 35 itens; 493 sacos x1 somados em 4 pilhas; cópia *-antes-fundir-armazem); spawns do Pico Secreto 1-8F e Torre (11 stages) no chão real (1.117 pontos, área Secret_02/FD_BlackDragonTower), chefes grade>=4 colapsados para 1x (eram 3 linhas n=10); mundo_spawns.json + area_mapas.json agora no publicador. Pendente: "x93" do Nefariox não reproduzido nos dados (suspeita: acumulação em runtime/respawn); Purgatório sem spawns.
Pico Secreto aceita os ids do cliente (SECRET_DUNGEON RowId 1000/1001..8001 -> andar = id//1000; antes "masmorra pico_secreto/1001 desconhecida"); raides sem mapa em mundo_spawns (34/38) entram pela posição do 1º WARP_LOCATION do mapa (dados/warps_por_stage.json, 1.104 mapas; sem chefe dentro ainda); História: passo final 109207300 (Level 500, inatingível — teto 250) é fechado pelo servidor para o adm ao entrar (fechar_passo_inatingivel). Pendentes do mesmo diagnóstico: chefe dentro da raide (D3), Torre "Retornar"
Marcadores antigos verificados como resolvidos
- 5000 da Caixa de Energia já na conta — dono tem de relogardocs/HANDOFF.md:161 — ItemId 601100309, pilha de 5000 no um personagem do dono, conferida no banco `[(1383003, 601100309, 0, 5000, 0)]`; o inventário só carrega no login.
- Testar a Promessa (medidor do tipo 1 em 999/1000)servidor/gateway.py:23948-23972 — ganho_promessa, `promessa_agora`, bloco de troca e `banco.sorteio_promessa_definir` (definido em servidor/banco.py:4051); campo 11 sempre enviado
- Treino Ermo: handler 60573/60574servidor/gateway.py:28490-28494 despacha CLOSED_TRAINING_INFO/UPGRADE para `treino_ermo_info` (gateway.py:18352) e `treino_ermo_aprimorar` (gateway.py:18365); persistência em servi
- Bug nº1 (skill): sem sintoma concreto do donodocs/HANDOFF.md:535 regista que as "12 falhas de skill" foram inventadas por uma sonda com o personagem errado, parado numa cidade; a medição própria está em scripts/sonda-skills-t
- Dono corre publicar-mercado-infinito.py (mercado infinito + bolsa sem tecto + Loja criativa)docs/HANDOFF.md:1173-1176 — "Publicado 02/09 14:04 (`publicar-mercado-infinito.py`, ponto uma pasta do servidor gateway/banco com ... lojas NPC, e
- Dono corre aplicar-moedas-bigint.py (tira o 65.535 e o 2,1/4,2 bi)docs/HANDOFF.md:718-721 — "**Energia/moedas bigint** aplicado 17:29 pelo Coordenador com autorização explícita do dono (sql_mode relaxado na sessão por causa do DEFAULT zero de Log
- Status editável no painel — falta correr publicar-mercado-infinito.py (cria mirx_status_tb)A tabela foi criada no publish das 14:04 (docs/HANDOFF.md:1176 "tabelas mirx_status_tb + 3 de coleção criadas"; SQL listado em scripts/publicar-mercado-infinito.py:116). Painel em
- Dano "3 skills por mob" para CONTAS_GM (dano_modo_criativo)servidor/gateway.py:11008 `dano_modo_criativo(m, dano_normal)` (fatia hp_max/2,6 para mob e /12 para chefe, janela de 0,8 s por skill) aplicado em gateway.py:14912-14913; publicado
- Mercado "lagando" — instrumentação diria no próximo publishInstrumentação no código publicado: servidor/gateway.py:22624 `print("[mercado] procura cat=%d: %d tipo(s), %d quadro(s), %.0f ms")` e gateway.py:22657 `"[mercado] preco medio pedi
- Constituição: 60820 MULTI e 60060 LEVEL_LIMIT sem handler (+ aba Chi/SCRIPTUREHALL)servidor/gateway.py:20338 handler de CLIENT_GAME_UPGRADE_MASTERY_MULTI (60820, "Subir tudo", topa no MaxLv do tier) e gateway.py:20379 handler de CLIENT_GAME_UPGRADE_MASTERY_LEVEL_
- Constituição: zerar níveis do a conta de administracao para testar do inícioscripts/aplicar-reset-constituicao.py (mysqldump da mastery_tb → UPDATE MasteryCnt=0 do um personagem do dono → SELECT de prova) e docs/HANDOFF.md:716 "Constituição zerada a pedido (aplicar-rese
- Esfera da Alma Mágica Especial: não desequipa (e poder -21)servidor/gateway.py:25496 — handler CLIENT_GAME_MAGIC_ORB_DEL_DECK (60683) chama banco.desequipar_te(deck 23 e 28), devolve 58064 + CHANGE_STAT; o -21 vinha de itens que somavam 0
- Nenhuma caixa abre (sacos de ouro, baús de montaria/joia)servidor/gateway.py:5799 recompensas_da_caixa + 5858 abrir_caixa (tipos 1/2/3, ITEM_RANDOM_GET_1/2, ITEM_SELECT_GET, ITEM_PACKAGE) e gateway.py:25772 no 60069 USE_ITEM -> 12018 OPE
- Cadeado na troca de classe (classes 'Owned' com cadeado)servidor/gateway.py:21672-21689 — no 60538 INFO o adm recebe a lista 1..8 por definição (fase_abrir_todas + fallback que ignora o banco e avisa no log), 60536/60537 nunca recusam;
- Oração (Pedra de Espírito Mítica) não funcionaservidor/gateway.py:3454-3458 (60788 PRAY_ITEM -> 12101, 60789 BONUS -> 12102, bloco de login 13175) e o handler em gateway.py:25523-25576 (adm 100% de sucesso, sem consumo, grava
- Mercador de Criação: <Criação de Esfera da Alma Mágica> não cria o Pergaminhoservidor/gateway.py:24370-24418 — 60070 MAKE_ITEM e 60081 EXCHANGE_ITEM partilham handler e para o adm a receita é copiada com mat/mat_esp/custo vazios, so_por_tipo=None e sucesso
- NPC Porquínio: Troca de Pedaço de Tesouro (Floresta, Terra, Luz)servidor/gateway.py:24371 — o 60081 (Trocar) é gémeo do 60070 e usa a mesma receita, com adm sem material nem custo (24398-24414); as receitas 3001003/05/07/10/13 estão em dados/fa
- "Onde obter": decidir entre comando /onde e página no siteDecidido pela página: scripts/gerar-onde-obter-site.py:1-25 gera site/static/dados/onde/<ItemId>.json a partir de dados/onde_obter.json (15 MB) e o botão foi publicado na enciclopé
- Transcender Espírito derruba o cliente (Roxion I -> II, erro crítico 1)servidor/gateway.py:26490-26503 — comentário 'MEDIDO 02/09 18:2x: a RECUSA aqui derrubou o cliente'; para o adm responde result=0 sem mudar o nível em vez de recusar, e dados/pet_n
- Salão dos Desafiadores: dono quer ser Top 1servidor/gateway.py:25440-25465 — 60816/60817 deixaram o par automático e respondem 59320/59321 com uma única entrada: rank 1, character_uid, NickName, classe, guilda e ranking_val
- Combinação: Pedra Mágica Épico II não entra em combinação nenhumascripts/gerar-composicao-global.py:1-8 regenera dados/composicao.json do TA_490408.pak (ITEM_MATERIAL_COMPOSE/_LIST/_POINT) exactamente por causa do 801100008; o ficheiro actual te
- Modo História: TP da missão volta ao Pântano da Grande Centopeia (passo depois do 109207300)dados/cadeia_missoes.json tem 2.571 passos e scripts/testar-cadeia-global.py:286 exige que o sucessor de 109207300 seja o 110000000 "Terra Proibida — Falar com o Mestre" (stage 109
- Animação de ataque dos monstros/chefes (ronda 33) — 16001 antes do 16002servidor/gateway.py:16005 monta s_attack(uid, {1:[11] state, 2:[0] skill, 3:[attack_id], 6:[alvo PC]}) e envia GAME_CLIENT_ATTACK antes do GAME_CLIENT_STRUCK, com fallback se o pac
- "Cálculo real do poder e status" + "contar o XP na barra"combate.json regenerado e conferido contra o TA_490408 na ronda 39 (dados/combate.json tem niveis/classes/combatpoint/exibidos/status_limites/status_limit; scripts/gerar-combate-gl
- Chefes: golpes + animação (ronda 38) — 97 chefes de raide.json por doador, skill=0 no 16001scripts/gerar-chefes-golpes.py documenta a medição (179 grade 4/5, só Turkan/Nerkan sem golpe; 97 classid de raide.json corrigidos por doador) e scripts/testar-chefes-golpes.py gar
- Dragão Divino "!" — pôr as opções no grau máximo (mirx_divine_dragon)servidor/gateway.py:8113 garantir_dragao_criativo abre os 6 furos no tecto (grau 5, DRAGAO_HOLE_MAX_GRAU5 atributos do pool da Ânsia 24xxx) uma vez por sessão, chamado no 60746 (ga
- Confirmar no fio: campos reais do 60820/60060, caixas tipo 1/3, selo GET/GET_ALLos três já têm handler e instrumentação: gateway.py:20346 imprime "[constituicao] 60820 campos=%r" e gateway.py:20386 o mesmo para o 60060; caixas tipo 1 e tipo 3 estão implementad
- Desencantar não funciona como deveriaservidor/desencantar.py:84/486 (60780→12096, adm nunca recusa, sem custo, degrau máximo) despachado em servidor/gateway.py:19617; teste scripts/testar-desencantar.py; HANDOFF:812 m
- Espólio da masmorra não vai para o saquinhoservidor/espolio.py:85/112 (60205→17516, stage_type 103/104/110, persistência mirx_espolio_tb) + gateway.py:15188-15213 (largar_loot alimenta espolio_acumulado) e gateway.py:20446-
- Mobs em posições erradas na Câmara de Experiência IIIdados/salas_praca.json (regerado 02/09 21:04, chave _correcao_02_09; a sala '[1F] Câmara de Experiência III' = 201300110 com caixa_chao/âncora nova) por scripts/gerar-salas-praca.p
- Loja 'Oferta Limitada'/IAPservidor/gateway.py:24036-24105 (60657/60659/60693/60694 → 31612/31614/31617/31618 com total_price, 60658/60660 verify ok, 60289 → 31506+31507 paginado) e scripts/testar-loja-iap.p
- Modo História travado (Terra Proibida — Aguardar o Mestre)servidor/gateway.py:16131-16155 fechar_passo_inatingivel (passo 109207300 tipo Level alvo 500 > teto 250 fechado para o adm), chamado no entrar em jogo em gateway.py:19934; HANDOFF
- Constituição: subir Tier + 'Subir tudo'servidor/gateway.py:20338-20377 (60820 MULTI 'Subir tudo', campos medidos 02/09 17:5x) e 20379-20404 (60060 LEVEL_LIMIT, tier em mastery_tb slot 255, adm sem material/moeda); adm i
- Quebrar o selo: a caixa não entra no encaixeservidor/gateway.py:25290-25315 (60445 LIST, 60446 REGISTER com start_time -86400 = pronto na hora, 60447/60451/60453), estado por sessão p['_selo']; HANDOFF:711 [x] 'Quebrar o sel
- Técnica do Clã não sobe (Salão de Artes Marciais)servidor/gateway.py:15596-15616 (60363 DONATION: para o adm um Cooperar enche a barra até exp_para_subir) + servidor/tecnica_cla.py:80-90 (60369 SKILL_START, único sem handler) e b
- Montarias repetidas na Coleçãoservidor/gateway.py:3076-3080 s_lista_montarias exclui as duplicadas de dados/colecao.json['oculto'] = {'2015':1,'22011':1} (scripts/gerar-colecao-oculto.py); HANDOFF:826 ronda 41
- Status real somando TUDOservidor/gateway.py:9186-9299 _extras_atributos soma encantamento (opcoes_equipadas), Treino Ermo, Potencial, traje e montaria equipados, vestíveis e encaixes próprios, chamado em
- E.T. ainda derruba o cliente (slot 301-305) + Pedra Mágica não ocupa o encaixe da rodaservidor/gateway.py:21235-21256 desvia MainType 24 ANTES de qualquer 8001 para _equipar_encaixe_proprio/mirx_te_equip_tb (e 21173-21184 manda o desequipar por 8019, nunca 8023); a
- "Quando o jogo cai, desequipa" (artefatos slots 11-15 vazios)servidor/banco.py:1068-1112: equipar_item e desequipar_item passaram a correr leitura+REPLACE/DELETE numa SÓ transação (atómico e idempotente, com o pedido do dono citado no docstr
- Agente em curso: Espíritos (pets) — publicar quando terminaremservidor/gateway.py:4223 s_pet_list (61 pets, todos desbloqueados) + garantir_pets_criativos em gateway.py:4086-4132 (peças de invocação e 10 encaixes do baralho para a conta adm,
- 13137 MAP_WAYPOINT_DATA recusado no login (7.099 B > 2.048)servidor/gateway.py:7381 QUADROS_GRANDES = {13137: 16000} (tecto do cliente 16 KB) consultado na trava de envio em servidor/gateway.py:13524 (tecto = QUADROS_GRANDES.get(op_r, TAMA
- Espólio de masmorra não fica salvo ("Ainda sem nenhum espólio obtido")servidor/espolio.py (módulo novo de 03/09: stage_type correcto 103/104/110, persistência do saco em mirx_espolio_tb entre religações), tabela em scripts/mirx-espolio.sql:19, teste
- Graça do Artefato de Dragão ("não é possível receber")servidor/gateway.py:5334-5337 (59301 DRAGON_BLESS_INFO empurrado no login/após equipar e 60777 GROW com adm sem custo e 10 slots activos, dados/dragon_bless.json, mirx_dragon_bless
- Advento do Dragão Divino (DIVINE_DRAGON 60746-60749, zero handlers)servidor/gateway.py:7848-7893 com os quatro handlers (60746 INFO, 60747 OPEN, 60748 OPTION_CHANGE, 60749 OPTION_ACCEPT -> 50501-50504), dados/divine_dragon.json (scripts/gerar-divi
- Janela Evento: "não foi possível carregar"scripts/publicar-evento-api.py:1-17 publica o EventList real ({EventId, UiButtonText, UiInPresetUrl, WebEventUrl} -> /evento) e scripts/publicar-evento-nginx.py:1-7 acrescenta o `l
- Jade de Dragão por identificar entre os tipos 3/7/19scripts/aplicar-jade-milhagem-467.py:3-4 regista a leitura directa de /MONEY.csv (TA_490408.pak, 03/09): 19 = Jade de Dragão, 6 = Milhagem, 23 = Aço de Dragão etc., e semeia 1e9 de
- Dominação — entrar a qualquer horaservidor/dominacao_extra.py:69-79 (_OPCODES_FAMILIA 60612/60613/60638), interruptor MIRX_DOMINACAO_SEMPRE_ABERTA=adm|todos|0 em :88-90, despacho em servidor/gateway.py:19621, teste
- Expediçãoservidor/interserver.py:82-90 e :543 tratam 60508 SERVER_EXPEDITION_INFO -> 1351, 60509 WORLD_LIST -> 1353 e 60510 START -> 1355; família em :91-102, despacho em servidor/gateway.p
- Inter-server — simulado aceiteservidor/interserver.py cobre a família inteira do inter-server (Mapa das Forças 60476, Santuário 60578, Altar 60600, Cerco 60542, Saque 60609, Escolta 60692) com estado simulado a
- Boss x3 — Executor do Clã Twinway nasce 3-4 vezesscripts/aplicar-boss-unico-praca.py (cabeçalho: "Um chefe por sala nas salas SINTETIZADAS da Praça Mágica ('Boss x3')", causa medida: gerar-praca-andares-novos.py copiou geradores
- Janela de espólio da masmorra ("Ainda sem nenhum espólio obtido")servidor/espolio.py:82-85 trata 60205 REQUEST_DROP_RECEIVE_INFO_LIST -> 17516 com persistência em mirx_espolio_tb (:112, :249; DDL em scripts/mirx-espolio.sql:19), stage_type corri
- Limpar os 3.499 itens do MirXArqueiroscripts/aplicar-limpar-arqueiro.py (lápide em item_delete_tb para todo ItemIdx ausente de dados/site/ITEM.json, equipados intactos) foi corrido: docs/HANDOFF.md:777-781 regista 17.
- Confirmar em jogo: ressuscitar (3B.4) e tornado espalhado (3B.5)Ressuscitar: HANDOFF:1222-1224 marca [x] no código (RESULT com revived_type/uid + BROADCAST_REVIVAL 17501 + ALIVE_CHECK + warp para zona segura mesmo no próprio mapa) e :1173-1175
Encontrou algo que não está aqui? Diga na comunidade com a versão do lançador e os passos para reproduzir.