Lethal Company
This package has been deprecated and may no longer be maintained. We recommend looking for an alternative.
Install with App

Details

Latest version
1.1.2
Last Updated
First Uploaded
Downloads
220
Likes
1
Size
48KB
Dependants

Categories

Tags

Deprecated

FlamethrowerReconnectFix

Parche no oficial para BetterArmory (com.y4ngz.betterarmory) que corrige dos bugs relacionados con reconectarte a un servidor (con o sin morir antes, seas host o cliente):

  1. El lanzallamas deja de disparar fuego y de gastar munición (la animación sigue funcionando, pero no pasa nada más).
  2. Un spam continuo de NullReferenceException que rompe la animación de armas en primera persona por el resto de la sesión.

Causa del bug 1 (lanzallamas)

FlamethrowerStreamDriver.RegisterNetworkHandlers() registra sus 5 handlers de red una sola vez, comparando NetworkManager.Singleton contra un campo estático cacheado. Ese NetworkManager sobrevive a la reconexión (mismo objeto), pero Unity Netcode sí crea un CustomMessagingManager nuevo en cada StartClient(). Como la comparación no detecta ese cambio, los handlers quedan "colgados" del CustomMessagingManager viejo y el lanzallamas deja de funcionar en red.

Fix: detectamos cuándo aparece un CustomMessagingManager nuevo y forzamos el re-registro limpiando el campo estático cacheado de BetterArmory.

Causa del bug 2 (animación de armas rota)

Y4NGZWeaponItem.get_Shotgun() hace GetComponent<ShotgunItem>() sobre un arma cuyo objeto de red ya fue destruido tras la desconexión. En vez de fallar con gracia, esto lanza una NullReferenceException real. Como IsAlive() (que debía detectar "esta arma ya no es válida") depende de este getter, nunca llega a devolver false: el juego queda crasheando ese chequeo cada frame para siempre.

Este crash empieza apenas te desconectás, antes de que exista una sesión nueva a la que "engancharse" — por eso detectar la reconexión (como en el bug

  1. llega tarde acá.

Fix: en vez de adivinar el momento de la reconexión, blindamos directamente el punto exacto del crash con un Harmony Finalizer: si get_Shotgun() explota, atrapamos la excepción y devolvemos null de forma segura. Con eso IsAlive() vuelve a funcionar como BetterArmory ya esperaba (arma vieja → "no está viva" → se limpia sola), sin importar cuándo pasó la desconexión ni si sos host o cliente.

Ninguno de los dos fixes modifica el DLL original de BetterArmory — todo pasa en tiempo de ejecución vía Harmony.

Cómo compilarlo

Necesitas Visual Studio, VS Code + C# Dev Kit, o Rider, con el SDK de .NET instalado.

  1. Abre FlamethrowerReconnectFix.csproj y edita la línea:

    <LethalCompanyDir>C:\Program Files (x86)\Steam\steamapps\common\Lethal Company</LethalCompanyDir>
    

    poniendo la ruta real donde tienes instalado el juego (clic derecho en Lethal Company en Steam → Administrar → Explorar archivos locales).

  2. Compila en modo Release:

    dotnet build -c Release
    

    (o simplemente "Build" desde tu IDE).

  3. Esto genera bin\Release\net472\FlamethrowerReconnectFix.dll.

Cómo instalarlo

Copia FlamethrowerReconnectFix.dll a:

<Lethal Company>\BepInEx\plugins\FlamethrowerReconnectFix\FlamethrowerReconnectFix.dll

Si usas r2modman/Thunderstore Mod Manager, puedes en vez de eso empaquetar esta carpeta como mod local (con el manifest.json incluido) e importarla ahí, para que se instale junto a tu perfil de 67 mods sin tocar nada a mano.

Debe cargar después de BetterArmory (el BepInDependency ya se encarga de eso automáticamente).

Cómo confirmar que funciona

En el log de BepInEx (BepInEx/LogOutput.log), después de una reconexión deberías ver estas líneas nuevas (la del bug 2 solo aparece una vez por sesión, aunque el problema se repita muchas veces, para no llenar el log de spam):

[Info   :FlamethrowerReconnectFix] Nuevo CustomMessagingManager detectado (reconexión). Forzando re-registro de los handlers del lanzallamas.
[Info   :FlamethrowerReconnectFix] Contuve un crash en Y4NGZWeaponItem.get_Shotgun() (arma con referencia obsoleta tras una reconexión). Devolviendo null de forma segura en vez de dejar que se propague. (Este aviso solo se muestra una vez por sesión.)

Después de eso, el lanzallamas debería volver a disparar fuego y gastar munición con normalidad, y la animación de armas no debería quedar rota ni llenar el log de NullReferenceException en cadena.

Nota

Este es un parche "puente" hecho para tu instalación. Lo ideal a mediano plazo es reportarle este bug al autor de BetterArmory (Y4NGZ313) con este mismo diagnóstico, para que lo arregle en el mod original y no necesites este parche extra.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.