public static FinalBossBeam Clone(this FinalBossBeam finalBossBeam)
        {
            FinalBoss boss = finalBossBeam.GetField("boss")?.TryFindOrCloneObject() as FinalBoss;

            if (boss == null)
            {
                return(null);
            }

            return(Engine.Pooler.Create <FinalBossBeam>().Init(boss,
                                                               new Player(finalBossBeam.GetPlayerPosition(), PlayerSpriteMode.Madeline)));
        }
 private static FinalBossBeam FinalBossBeamOnInit(On.Celeste.FinalBossBeam.orig_Init orig, FinalBossBeam self,
                                                  FinalBoss boss, Player target)
 {
     self.TrySetEntityId2(boss.HasEntityId2() ? boss.GetEntityId2().ToString() : "null", target.GetEntityId2());
     self.SetPlayerPosition(target);
     return(orig(self, boss, target));
 }
 public static void SetPlayerPosition(this FinalBossBeam finalBossBeam, Player player)
 {
     finalBossBeam.SetExtendedDataValue(FinalBossBeamPlayerPositionKey, player.Position);
 }
 public static Vector2 GetPlayerPosition(this FinalBossBeam finalBossBeam)
 {
     return(finalBossBeam.GetExtendedDataValue <Vector2>(FinalBossBeamPlayerPositionKey));
 }