Skip to content

Desacoplamento de Locomotivas (decouple) ​

Fonte: Branch de recurso jgrpp-decouple do pulsexlb/OpenTTD-patches (nucleo dos 152 commits), incorporado ao jrpm via git merge.

Introducao a Funcionalidade ​

O "desacoplamento de locomotivas" permite que trens desenganchem e engatem vagoes ou locomotivas em estacoes/durante a programacao, possibilitando:

  • Desengate: O trem, seguindo uma "ordem de desengate", solta parte dos vagoes (ou vagoes + locomotiva) em uma estacao designada, e o restante continua a viagem;
  • Engate: O trem aguarda em uma estacao e se acopla automaticamente a outro trem (ou grupo de vagoes estacionado);
  • Apos o desengate, os dois trens executam programacoes independentes: Atraves de mecanismos como "pular condicionalmente comandos", os dois trens apos o desengate seguem programacoes diferentes;
  • Transferencia de tiquetes: Ao desengatar/engatar, os tiquetes (etiquetas de rastreamento de restricao) sao transferidos corretamente ou deduplicados entre os trens.

Capacidades Principais ​

CapacidadeDescricao
Ordens de desengate/engateNovos tipos de ordem, suportando restricoes como "carregar/nao carregar", "aguardar engate", "desengatar"
Limites de comprimento e velocidade de acoplamentoLimita operacoes de acoplamento com base no comprimento do trem; operacoes de acoplamento tem limite de velocidade
Suporte a cabecas duplasLocomotivas dianteira e traseira (incluindo locomotivas duplas NewGRF) acoplam/desacoplam corretamente
Navegacao de acoplamentoYAPF/NPF suportam planejamento de rota de acoplamento; apenas em estacoes
Marcha a rePode inverter a direcao apos acoplamento, suporta tecnicas como "inverter apos desengate"
Acoplamento NewGRFSuporta atributos de acoplamento definidos por NewGRF (atributos 0xC6/0xF2, etc.)
ArquivoVersao de arquivo SLV_ORDER_DECOUPLE; contador num_decouple persistido

Como Usar ​

  1. Use ordens de "desengate" (decouple) na estacao para dividir o trem;
  2. Defina ordens de engate para o trem aguardar a conexao;
  3. Use "pular condicionalmente comandos" (conditional order skip) para que os dois trens apos o desengate sigam rotas diferentes;
  4. Arraste na estacao para ajustar a ordem dos vagoes, ou use ferramentas auxiliares como "filtrar por comprimento".

Codigo Relacionado ​

  • Ordens: src/order_cmd.cpp, src/order_gui.cpp, src/order_type.h
  • Trem: src/train_cmd.cpp, src/train.h
  • Navegacao: src/pathfinder/yapf, src/pathfinder/npf
  • Arquivo: src/sl/saveload_common.h (SLV_ORDER_DECOUPLE)

Atencao ​

  • Este recurso envolve alteracoes profundas na ordem fisica dos trens/logica de reserva de sinal, recomenda-se testar exaustivamente apos compilacao real: desengate, engate, reversao, reparo de colisao, substituicao automatica (autoreplace), etc.;
  • Strings e GUI relacionadas ao desengate ja foram incorporadas (STR_DECOUPLE*, etc.).

Atualização de fusão upstream 2026-09-28 (px-patch 2609.x) ​

113 novos commits da pulsexlb foram fundidos, com mudanças de desacoplamento/acoplamento:

  • O estado de reivindicação de acoplamento é salvo no jogo (bloco CPLM + XSLFI_COUPLE_CLAIM_STATE);
  • Um trem pode continuar acoplando mesmo com outros veículos no bloco alvo fora da direção de acoplamento;
  • Ao inverter a marcha em estação, garante-se que o bloco esteja livre;
  • Corrigidos erros de propulsão após desacoplar, número da unidade com primary != first, reconversão automática em estação etc.;
  • Corrigida a devolução incorreta de etiquetas após desacoplar com horários de espera de acoplamento e a não devolução após acoplar;
  • Comandos de plataforma com carga/descarga e horário são copiados integralmente ao desacoplar;
  • Corrigido o travamento quando a condição pré-acoplamento muda; o horário principal não é mais apagado por engano;
  • Painel de informações para trens sem motor; (jgrpp 0.73.3) arrastar e soltar ordens e duplo clique.