public static void TransformSprenNormal(Action <SprenOrbitalItem> orig, SprenOrbitalItem self)
 {
     if (self.Owner.HasPickupID(ETGMod.Databases.Items["The Sprun Bullet"].PickupObjectId))
     {
         if (self.Owner && self.Owner.CurrentRoom != null && self.Owner.CurrentRoom.IsWinchesterArcadeRoom)
         {
             return;
         }
         if (self.Owner && !self.Owner.IsGhost)
         {
             foreach (PlayerItem active in self.Owner.activeItems)
             {
                 if (active is SprenThing)
                 {
                     if (!active.IsCurrentlyActive)
                     {
                         active.ClearCooldowns();
                     }
                 }
             }
         }
     }
     else
     {
         orig(self);
     }
 }
 public static void DeTransformSprenNormal(Action <SprenOrbitalItem> orig, SprenOrbitalItem self)
 {
     orig(self);
 }
        public static void Init()
        {
            m_SprenOrbitalItem = PickupObjectDatabase.GetById(578).GetComponent <SprenOrbitalItem>();

            if (!m_SprenOrbitalItem)
            {
                return;
            }

            GameObject sprunObject = new GameObject("Sprun");

            sprunObject.AddComponent <SprunButBetter>();
            sprunObject.AddComponent <tk2dSprite>();
            DuplicateSprite(sprunObject.GetComponent <tk2dSprite>(), m_SprenOrbitalItem.GetComponent <tk2dSprite>());

            SprunButBetter sprun = sprunObject.GetComponent <SprunButBetter>();

            ItemBuilder.SetupItem(sprun, "The Way of Guns", "Transforms into a powerful weapon upon using a blank.\n\nThis Bullet Sprite will transform into an enormously powerful radiant energy weapon under certain circumstances." +
                                  " Traditionally, this means showing proficiency in bridge delivery and maintenance. If no bridge is available, however, it will take less important things like courage or determination into consideration.", "cel");


            sprun.itemName       = "Sprun But Better";
            sprun.PickupObjectId = 578;
            sprun.quality        = m_SprenOrbitalItem.quality;
            sprun.additionalMagnificenceModifier = m_SprenOrbitalItem.additionalMagnificenceModifier;
            sprun.ItemSpansBaseQualityTiers      = m_SprenOrbitalItem.ItemSpansBaseQualityTiers;
            sprun.ItemRespectsHeartMagnificence  = m_SprenOrbitalItem.ItemRespectsHeartMagnificence;
            sprun.associatedItemChanceMods       = m_SprenOrbitalItem.associatedItemChanceMods;
            sprun.contentSource             = m_SprenOrbitalItem.contentSource;
            sprun.ShouldBeExcludedFromShops = m_SprenOrbitalItem.ShouldBeExcludedFromShops;
            sprun.CanBeDropped = m_SprenOrbitalItem.CanBeDropped;
            sprun.PreventStartingOwnerFromDropping = m_SprenOrbitalItem.PreventStartingOwnerFromDropping;
            sprun.PersistsOnDeath   = m_SprenOrbitalItem.PersistsOnDeath;
            sprun.RespawnsIfPitfall = m_SprenOrbitalItem.RespawnsIfPitfall;
            sprun.PreventStartingOwnerFromDropping = m_SprenOrbitalItem.PreventStartingOwnerFromDropping;
            sprun.IgnoredByRat = m_SprenOrbitalItem.IgnoredByRat;
            sprun.SaveFlagToSetOnAcquisition  = m_SprenOrbitalItem.SaveFlagToSetOnAcquisition;
            sprun.ForcedPositionInAmmonomicon = m_SprenOrbitalItem.ForcedPositionInAmmonomicon;
            sprun.UsesCustomCost             = m_SprenOrbitalItem.UsesCustomCost;
            sprun.CustomCost                 = m_SprenOrbitalItem.CustomCost;
            sprun.PersistsOnPurchase         = m_SprenOrbitalItem.PersistsOnPurchase;
            sprun.CanBeSold                  = m_SprenOrbitalItem.CanBeSold;
            sprun.passiveStatModifiers       = m_SprenOrbitalItem.passiveStatModifiers;
            sprun.ArmorToGainOnInitialPickup = m_SprenOrbitalItem.ArmorToGainOnInitialPickup;
            sprun.minimapIcon                = m_SprenOrbitalItem.minimapIcon;

            sprun.OrbitalPrefab         = m_SprenOrbitalItem.OrbitalPrefab;
            sprun.OrbitalFollowerPrefab = m_SprenOrbitalItem.OrbitalFollowerPrefab;
            sprun.HasUpgradeSynergy     = m_SprenOrbitalItem.HasUpgradeSynergy;
            sprun.CanBeMimicked         = m_SprenOrbitalItem.CanBeMimicked;
            sprun.modifiers             = m_SprenOrbitalItem.modifiers;
            sprun.synergyModifiers      = m_SprenOrbitalItem.synergyModifiers;
            sprun.BreaksUponContact     = m_SprenOrbitalItem.BreaksUponContact;
            sprun.BreaksUponOwnerDamage = m_SprenOrbitalItem.BreaksUponOwnerDamage;
            sprun.BreakVFX = m_SprenOrbitalItem.BreakVFX;

            sprun.LimitGunId             = m_SprenOrbitalItem.LimitGunId;
            sprun.LimitDuration          = m_SprenOrbitalItem.LimitDuration;
            sprun.IdleAnimation          = m_SprenOrbitalItem.IdleAnimation;
            sprun.GunChangeAnimation     = m_SprenOrbitalItem.GunChangeAnimation;
            sprun.GunChangeMoreAnimation = m_SprenOrbitalItem.GunChangeMoreAnimation;
            sprun.BackchangeAnimation    = m_SprenOrbitalItem.BackchangeAnimation;

            m_SprenOrbitalItem.quality = ItemQuality.EXCLUDED;

            sprunObject.SetActive(false);
            FakePrefab.MarkAsFakePrefab(sprunObject);
            DontDestroyOnLoad(sprunObject);
        }