private IEnumerator HandleFreeFiringBeam(BeamController beam, SpeculativeRigidbody otherShooter, float duration)
        {
            float elapsed = 0f;

            yield return(null);

            while (elapsed < duration)
            {
                Vector2 sourcePos;
                if (otherShooter == null)
                {
                    break;
                }
                if (!otherShooter.GetComponentInParent <FlippableCover>())
                {
                    break;
                }
                if (otherShooter.GetComponentInParent <FlippableCover>().IsBroken)
                {
                    break;
                }
                else
                {
                    sourcePos = otherShooter.UnitCenter;
                }

                elapsed += BraveTime.DeltaTime;
                if (sourcePos != null)
                {
                    beam.Origin = sourcePos;
                    beam.LateUpdatePosition(sourcePos);
                }
                else
                {
                    ETGModConsole.Log("SOURCEPOS WAS NULL IN BEAM FIRING HANDLER");
                }
                yield return(null);
            }
            beam.CeaseAttack();
            yield break;
        }