private void OnBroken()
        {
            spriteAnimator.Play(breakAnimName);
            specRigidbody.enabled = false;
            IsBroken = true;
            sprite.HeightOffGround = -3f;
            sprite.UpdateZDepth();
            string ShadowObjectName = "Expand_RickRollChestShadow";

            if (chestType == ChestType.SurpriseChest)
            {
                ShadowObjectName = "Expand_SurpriseChestShadow";
            }
            Transform shadowTransform = transform.Find(ShadowObjectName);

            if (shadowTransform != null)
            {
                Destroy(shadowTransform.gameObject);
            }
            if (m_registeredIconRoom != null)
            {
                Minimap.Instance.DeregisterRoomIcon(m_registeredIconRoom, minimapIconInstance);
            }
            if (!m_Opened)
            {
                m_room.DeregisterInteractable(this);
                if (m_registeredIconRoom != null)
                {
                    Minimap.Instance.DeregisterRoomIcon(m_registeredIconRoom, minimapIconInstance);
                }
                bool  GoldJunkFlag         = GameStatsManager.Instance.GetFlag(GungeonFlags.ITEMSPECIFIC_GOLD_JUNK);
                float ChestDowngradeChance = GameManager.Instance.RewardManager.ChestDowngradeChance;
                float ChestHalfHeartChance = GameManager.Instance.RewardManager.ChestHalfHeartChance;
                float ChestExplosionChance = GameManager.Instance.RewardManager.ChestExplosionChance;
                float ChestJunkChance      = GameManager.Instance.RewardManager.ChestJunkChance;
                float Multiplier           = (!GoldJunkFlag) ? 0f : 0.005f;
                bool  flag3             = GameStatsManager.Instance.GetFlag(GungeonFlags.ITEMSPECIFIC_SER_JUNKAN_UNLOCKED);
                float ChestJunkanChance = (!flag3 || Chest.HasDroppedSerJunkanThisSession) ? 0f : GameManager.Instance.RewardManager.ChestJunkanUnlockedChance;
                if (GameManager.Instance.PrimaryPlayer && GameManager.Instance.PrimaryPlayer.carriedConsumables.KeyBullets > 0)
                {
                    ChestJunkChance *= GameManager.Instance.RewardManager.HasKeyJunkMultiplier;
                }
                if (SackKnightController.HasJunkan())
                {
                    ChestJunkChance *= GameManager.Instance.RewardManager.HasJunkanJunkMultiplier;
                    Multiplier      *= 3f;
                }
                ChestJunkChance -= Multiplier;
                float AllChances = Multiplier + ChestDowngradeChance + ChestHalfHeartChance + ChestExplosionChance + ChestJunkChance + ChestJunkanChance;
                float ChestExplosionChanceMultiplier = (UnityEngine.Random.value * AllChances);
                if (ChestExplosionChanceMultiplier > ChestDowngradeChance + ChestHalfHeartChance + ChestJunkChance + ChestJunkanChance)
                {
                    Exploder.DoDefaultExplosion(sprite.WorldCenter, Vector2.zero, null, false, CoreDamageTypes.None, false);
                }
            }
        }
        private void OnBroken()
        {
            spriteAnimator.Play(breakAnimName);
            specRigidbody.enabled = false;
            IsBroken = true;
            Transform shadowTransform = transform.Find("ChestShadow");

            if (shadowTransform != null)
            {
                Destroy(shadowTransform.gameObject);
            }
            if (!m_Opened)
            {
                m_Opened = true;
                m_room.DeregisterInteractable(this);
                if (m_registeredIconRoom != null)
                {
                    Minimap.Instance.DeregisterRoomIcon(m_registeredIconRoom, minimapIconInstance);
                }
                bool  flag2 = GameStatsManager.Instance.GetFlag(GungeonFlags.ITEMSPECIFIC_GOLD_JUNK);
                float num   = GameManager.Instance.RewardManager.ChestDowngradeChance;
                float num2  = GameManager.Instance.RewardManager.ChestHalfHeartChance;
                float num3  = GameManager.Instance.RewardManager.ChestExplosionChance;
                float num4  = GameManager.Instance.RewardManager.ChestJunkChance;
                float num5  = (!flag2) ? 0f : 0.005f;
                bool  flag3 = GameStatsManager.Instance.GetFlag(GungeonFlags.ITEMSPECIFIC_SER_JUNKAN_UNLOCKED);
                float num6  = (!flag3 || Chest.HasDroppedSerJunkanThisSession) ? 0f : GameManager.Instance.RewardManager.ChestJunkanUnlockedChance;
                if (GameManager.Instance.PrimaryPlayer && GameManager.Instance.PrimaryPlayer.carriedConsumables.KeyBullets > 0)
                {
                    num4 *= GameManager.Instance.RewardManager.HasKeyJunkMultiplier;
                }
                if (SackKnightController.HasJunkan())
                {
                    num4 *= GameManager.Instance.RewardManager.HasJunkanJunkMultiplier;
                    num5 *= 3f;
                }
                num4 -= num5;
                float num7 = num5 + num + num2 + num3 + num4 + num6;
                float num8 = UnityEngine.Random.value * num7;
                if (num8 > num + num2 + num4 + num6)
                {
                    Exploder.DoDefaultExplosion(sprite.WorldCenter, Vector2.zero, null, false, CoreDamageTypes.None, false);
                }
            }
        }
Ejemplo n.º 3
0
 static void UpdatePostfix(SackKnightController __instance)
 {
     junkanSpeechTimer -= BraveTime.DeltaTime;
 }
Ejemplo n.º 4
0
 static void SackKnightControllerConstructor(SackKnightController __instance)
 {
     __instance.aiActor.MovementSpeed *= 5;
 }