Phreel-BaseGameFixes icon

BaseGameFixes

Fixes various base game errors and NREs you'd encounter late-game.

By Phreel
Last updated 9 hours ago
Total downloads 418
Total rating 0 
Categories Mods Tweaks
Dependency string Phreel-BaseGameFixes-1.0.3
Dependants 0 other packages depend on this package

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2122 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2122
RiskofThunder-HookGenPatcher-1.2.9 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.9

README

BaseGameFixes

Fixes a collection of base game errors and NullReferenceExceptions via Harmony patches.

Fixes

  • Defective Unit - death state no longer throws when its model is already gone (e.g. Void Fields wave ending).
  • Void Barnacle - spawn no longer tries to spawn a null muzzle flash effect.
  • Dream Demon - projectile no longer throws on destroyed growth renderers.
  • RigidbodySoundOnImpact - no longer throws when a collision happens before Start.
  • SetStateOnHurt - freeze/stun no longer throws when applied before Start (duration modifiers are still respected).
  • DoTargetInfoSearch - When a drone command is aimed at a chest, the loop finds the chest correctly.
  • SpecialObjectAttributes.Start - Some prefabs have a missing object in that list. A patch that runs before Start removes dead entries from it.
  • beamVfxInstance.transform - Skips the update when the beam effect or the muzzle is gone.
  • MinionOwnership - Skips minions that are already destroyed. A destroyed minion has no CharacterMaster to report as lost anyway.
  • AddTimedBuffInterval - When anything sets TeamComponent.teamIndex, the component adds itself to the global team list right away, even if the object hasn't woken up. If a mod sets teamIndex on a body prefab, that prefab joins the team list for good. Prefabs never get OnDestroy, so it's never removed. Every BuffWard (Warbanner and the like) then reaches that ghost member on every FixedUpdate and throws. That's where the slowdown comes from: an exception plus a ~40-frame stack trace logged constantly. Each throw also aborts the BuffWard loop, so allies after the ghost entry in the list weren't getting the buff at all.
  • ComputePathNodeIndex - Out-of-range indices are now treated as invalid, which the game already handles by returning "unreachable".
  • SimpleMuzzleFlash - FireLaserDisc null-checks the wrapper object around the muzzle flash prefab, not the prefab inside it, and that prefab is null. SimpleMuzzleFlash now does nothing when the prefab is null.
  • ChipAnimator.OnDestroy - it destroyed chips without checking them. It now skips a null array and chips that are already gone.
  • TrialGongInteractionHurtbox - damage-over-time has no hurtbox, which the push-direction code needs. While the method runs, the gong's own main hurtbox stands in, so the hit still counts. The original value is put back afterwards.