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); } } }
static void UpdatePostfix(SackKnightController __instance) { junkanSpeechTimer -= BraveTime.DeltaTime; }
static void SackKnightControllerConstructor(SackKnightController __instance) { __instance.aiActor.MovementSpeed *= 5; }