Lethal Company
Install with App

Details

Latest version
2.4.1
Last Updated
First Uploaded
Downloads
1K
Likes
0
Size
55KB
Dependants

Categories

BetterArmoryFix

Parches no oficiales para bugs de reconexión y de cambio de dueño en BetterArmory (com.y4ngz.betterarmory).

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.

Después de esa actualización, con BetterArmory 1.0.7 (que reescribió buena parte del sistema del lanzallamas agregando validación server-side de propiedad del arma) encontramos un bug distinto y más profundo: cuando un arma de BetterArmory pasa de un jugador a otro durante la partida (típicamente porque el dueño anterior se desconectó o murió sosteniéndola), el servidor sigue creyendo que la sostiene el jugador viejo. El nuevo dueño puede agarrarla y ver la animación de disparo, pero el servidor rechaza el disparo en silencio porque no coincide con quien figura como "sosteniéndola". Confirmamos esto con evidencia de ambos lados (logs de host y cliente mostrando el mismatch exacto) y ya le mandamos el reporte — si esto también termina corrigiéndose en una versión oficial, avisen para sacar el parche de acá.

Qué corrige 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. Mismatch de propiedad del arma al cambiar de dueño

El bug descrito arriba. Corrige playerHeldBy y la propiedad de red (NetworkObject.OwnerClientId) del arma justo después de que el juego equipa cualquier ítem, si detecta que quedaron apuntando al jugador equivocado. Solo actúa en el host, y solo si hay un mismatch real — si todo está sincronizado, no hace nada.

No modifica ningún DLL original — todo pasa en tiempo de ejecución vía Harmony.

Diagnóstico incluido

Además de los fixes, el mod trae instrumentación detallada que usamos para encontrar y confirmar el bug del punto 3, y que puede servir para investigar cosas nuevas más adelante:

  • [DIAG], [DIAG2], [DIAG3] (cliente) y [DIAG4-HOST] (host): siguen el camino completo de un intento de disparo del lanzallamas, desde el clic hasta la validación del servidor. Fue justo esta instrumentación la que permitió encontrar el bug del punto 3.
  • [DIAG5-VISIBILIDAD] (ambos lados): sigue abierto un reporte de armas que el cliente no ve hasta que el host las agarra y las suelta al empezar la partida. Este diagnóstico loguea, en host y cliente, cada vez que una copia local de un arma de BetterArmory se inicializa (con su NetworkObjectId), para poder comparar ambos lados y confirmar si el objeto nunca llegó a mostrarse del lado del cliente.

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

  1. Descargá el .zip de la página de Thunderstore.
  2. Extraé BetterArmoryFix.dll.
  3. Copialo a:
    <Lethal Company>\BepInEx\plugins\BetterArmoryFix\BetterArmoryFix.dll
    
  4. Asegurate de tener BetterArmory instalado (dependencia obligatoria) y BepInEx funcionando.

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 BetterArmory cambió de versión y ese parche puntual no se está aplicando.

Confirmación de que los fixes están actuando:

[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] Corregido mismatch de propiedad para 'Y4NGZ_flame_thrower_Prefab(Clone)': playerHeldBy desincronizado=True, ownership de red desincronizado=True -> ahora asignado al jugador que lo equipó (clientId=2).

Si estás investigando el reporte abierto de armas invisibles al inicio de partida, compará las líneas [DIAG5-VISIBILIDAD] del host contra las del cliente, buscando el mismo NetworkObjectId.

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