
BetterArmoryFix
Parches no oficiales para bugs de reconexión. Corrige el spam de NullReferenceException de BetterArmory y el desync de stats de Lategame Upgrades (More Ship Upgrades) entre host y cliente.BetterArmoryFix
Parches y diagnósticos puntuales, no oficiales, para bugs de reconexión en
BetterArmory (com.y4ngz.betterarmory) y Lategame Upgrades / More
Ship Upgrades (com.malco.lethalcompany.moreshipupgrades).
Gracias, Yangz313 🔥
Este mod nació como un fix para el lanzallamas, que dejaba de disparar fuego y de gastar munición después de morir y reconectarte al servidor. Ese bug específico (el registro de handlers de red) ya fue corregido oficialmente por Yangz313 en BetterArmory 1.0.6+ — gracias por el arreglo rápido y prolijo. Este mod mantiene un parche de respaldo para ese mismo caso por las dudas, pero no debería hacer falta si tenés BetterArmory actualizado.
Estado actual: investigación activa
BetterArmory 1.0.7 reescribió buena parte del sistema del lanzallamas (agregó validación server-side de propiedad del arma), y el síntoma original volvió a reportarse pese al fix oficial. Esta versión (2.3.0) es principalmente una build de diagnóstico: no solo corrige lo que ya sabemos, sino que loguea en detalle los puntos donde el bug podría seguir escondido, para poder confirmarlo con datos reales antes de escribir un fix definitivo nuevo.
Qué corrige / vigila esta versión
1. Lanzallamas — registro de handlers de red (respaldo)
FlamethrowerStreamDriver.RegisterNetworkHandlers() podía quedar
registrado sobre un CustomMessagingManager viejo tras reconectar. Ya
corregido oficialmente en BetterArmory 1.0.6+; este mod detecta el mismo
caso como red de seguridad adicional.
2. Y4NGZWeaponItem.get_Shotgun() — crash en cadena
Podía lanzar una NullReferenceException real sobre un arma con
referencia obsoleta, rompiendo la animación de armas en primera persona
en cadena. Se atrapa con un Harmony Finalizer y se devuelve null de
forma segura.
3. Stats de Lategame Upgrades distintas entre host y cliente
Al reconectar, el cliente puede cargar su guardado personal (por SteamID) en vez del estado compartido y en vivo del host, mostrando niveles de mejora desactualizados (fuerza de espalda, pulmones, etc., que deberían ser iguales para todo el equipo). Este mod sustituye temporalmente el SteamID de búsqueda por el del host al detectar este momento, forzando a que el cliente cargue la copia correcta. Es una dependencia opcional: si no tenés Lategame Upgrades instalado, este parche no hace nada.
4. Diagnóstico: lanzallamas sin fuego/munición pese al fix de Yangz
Instrumenta los 4 puntos posibles de falla — desde el clic ([DIAG2]),
pasando por la lógica local ([DIAG]) y el envío ([DIAG3]), hasta la
validación del lado del host ([DIAG4-HOST], nuevo en BetterArmory
1.0.7) — para localizar exactamente dónde se pierde el disparo del
cliente reconectado.
5. Diagnóstico: armas invisibles para el cliente al inicio de partida
El cliente reporta no ver las armas hasta que el host las agarra y las
suelta. [DIAG5-VISIBILIDAD] loguea, en ambos lados, cada vez que una
copia local de un arma de BetterArmory se inicializa, con su
NetworkObjectId — permite comparar host vs. cliente y confirmar si el
objeto nunca llegó a mostrarse del lado del cliente.
No modifica ningún DLL original — todo pasa en tiempo de ejecución vía Harmony.
Instalación
Con Thunderstore Mod Manager / r2modman
Buscá BetterArmoryFix en el mod manager de tu perfil e instalalo desde ahí con un clic. Se activa automáticamente en tu próxima partida.
Manual
- Descargá el
.zipde la página de Thunderstore. - Extraé
BetterArmoryFix.dll. - Copialo a:
<Lethal Company>\BepInEx\plugins\BetterArmoryFix\BetterArmoryFix.dll - Asegurate de tener BetterArmory instalado (dependencia obligatoria) y BepInEx funcionando. Lategame Upgrades es opcional.
Cómo leer los logs
Al arrancar, revisá primero las líneas [STARTUP] en BepInEx/LogOutput.log
— confirman si cada parche encontró su objetivo. Si alguna dice "NO
ENCONTRADO", significa que el mod correspondiente cambió de versión y ese
parche puntual no se está aplicando.
Después, durante el juego, según qué estés investigando:
- Lanzallamas sin fuego/munición: revisá
[DIAG],[DIAG2],[DIAG3]en el log del cliente, y[DIAG4-HOST]en el log del host, en el momento exacto del intento de disparo fallido. - Stats de Lategame Upgrades distintas: revisá
[DIAG-LGU]en el log del cliente, justo después de reconectar. - Armas invisibles al inicio: compará las líneas
[DIAG5-VISIBILIDAD]del host contra las del cliente, buscando el mismoNetworkObjectId.
Ejemplo de confirmación de los parches ya corregidos (no deberían aparecer si todo anda bien, o solo una vez por sesión si el bug igual ocurre):
[Info :BetterArmoryFix] Nuevo CustomMessagingManager detectado (reconexión). Forzando re-registro de los handlers del lanzallamas (respaldo).
[Info :BetterArmoryFix] Contuve un crash en Y4NGZWeaponItem.get_Shotgun() (arma con referencia obsoleta). Devolviendo null de forma segura. (Este aviso solo se muestra una vez por sesión.)
[Info :BetterArmoryFix] Forzando que el cliente cargue las stats del host (SteamID host=XXXXXXXXXXXXXXXXX) en vez de su copia personal.