Lanzallamas-BetterArmoryFix icon

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.

Last updated 6 hours ago
Total downloads 22
Total rating 0 
Categories Bug Fixes
Dependency string Lanzallamas-BetterArmoryFix-2.1.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

Y4NGZ313-BetterArmory-1.0.6 icon
Y4NGZ313-BetterArmory

Standalone weapons pack: Heavy Shotgun, Revolver, Assault Rifle, Bolt-Action Rifle, Pistol and Flame Thrower, with configurable shop listings, interior spawns, damage and ammunition, plus an ammo HUD.

Preferred version: 1.0.6

README

BetterArmoryFix

Parches puntuales y no oficiales para bugs de BetterArmory (com.y4ngz.betterarmory) mientras no estén corregidos en el mod original.

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 ya fue corregido oficialmente por Yangz313 en BetterArmory 1.0.6 — gracias por el arreglo rápido y prolijo. Si tenés BetterArmory actualizado, no necesitás ese fix, y ya no está incluido acá.

Lo que queda en este mod es un fix aparte, para un bug distinto que seguía presente al momento de esta versión.

Qué corrige esta versión

Spam de NullReferenceException / animación de armas rota. Y4NGZWeaponItem.get_Shotgun() puede lanzar una excepción real cuando el arma tiene una referencia de red obsoleta (típicamente tras una reconexión), en vez de fallar con gracia. Como WeaponFirstPersonAnimation.IsAlive() depende de ese getter, el juego queda crasheando ese chequeo cada frame para siempre, rompiendo toda la animación de armas en primera persona.

Este mod atrapa esa excepción con un Harmony Finalizer y devuelve un valor seguro, dejando que el propio BetterArmory se recupere solo como ya estaba diseñado para hacerlo.

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

Bug 2: stats de Lategame Upgrades (More Ship Upgrades) distintas entre host y cliente

Este es un mod completamente distinto a BetterArmory (Lategame Upgrades, de malco), pero vive en el mismo tipo de problema: al reconectarte, el cliente carga su guardado personal (indexado por su propio SteamID) y lo aplica al diccionario único y compartido de niveles de mejora (UpgradeBus.Instance.upgradeLevels) — de donde lee TODA la lógica del juego. Si esa copia personal quedó desactualizada respecto al estado real del host, el cliente termina viendo niveles de mejora distintos a los que tiene el host (fuerza de espalda, pulmones, etc.).

Este mod detecta ese momento y, si no sos el host, sustituye temporalmente el SteamID usado para la búsqueda por el del host (obtenido desde la lobby de Steam), forzando a que el cliente cargue la copia del host — que es la que realmente refleja el estado en vivo de la partida — en vez de la suya. Es una dependencia opcional: si no tenés Lategame Upgrades instalado, este parche simplemente no se activa.

Instalación

Con Thunderstore Mod Manager / r2modman

Buscá BetterArmoryFix en el mod manager de tu perfil e instalalo desde ahí con un clic, como cualquier otro mod. 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 (es una dependencia obligatoria) y BepInEx funcionando.

Cómo confirmar que funciona

En BepInEx/LogOutput.log, si el bug de BetterArmory llega a ocurrir, vas a ver (una sola vez por sesión, para no llenar el log de spam):

[Info   :BetterArmoryFix] Contuve un crash en Y4NGZWeaponItem.get_Shotgun() (arma con referencia obsoleta, típicamente 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.)

Si tenés Lategame Upgrades instalado, cada vez que un cliente reconecta vas a ver:

[Info   :BetterArmoryFix] Forzando que el cliente cargue las stats del host (SteamID host=XXXXXXXXXXXXXXXXX) en vez de su copia personal.

Después de eso, las mejoras deberían mostrar el mismo nivel para todos.