private void DupeChest(Chest chest, PlayerController user) { IntVector2 bestRewardLocation = user.CurrentRoom.GetBestRewardLocation(IntVector2.One * 3, RoomHandler.RewardLocationStyle.PlayerCenter, true); ChestToolbox.ChestTier tier = chest.GetChestTier(); if (tier == ChestToolbox.ChestTier.RAT) { tier = ChestToolbox.ChestTier.RED; } else if (tier == ChestToolbox.ChestTier.TRUTH) { tier = ChestToolbox.ChestTier.BLUE; } ChestToolbox.ThreeStateValue isMimic = ChestToolbox.ThreeStateValue.UNSPECIFIED; if (chest.IsMimic) { isMimic = ChestToolbox.ThreeStateValue.FORCEYES; } else { isMimic = ChestToolbox.ThreeStateValue.FORCENO; } ChestToolbox.SpawnChestEasy(bestRewardLocation, tier, chest.IsLocked, Chest.GeneralChestType.UNSPECIFIED, isMimic); }
protected override void DoEffect(PlayerController user) { IPlayerInteractable nearestInteractable = user.CurrentRoom.GetNearestInteractable(user.CenterPosition, 1f, user); if (!(nearestInteractable is Chest)) { return; } Chest dupeChest = nearestInteractable as Chest; IntVector2 bestRewardLocation = user.CurrentRoom.GetBestRewardLocation(IntVector2.One * 3, RoomHandler.RewardLocationStyle.PlayerCenter, true); ChestToolbox.ChestTier tier = dupeChest.GetChestTier(); if (tier == ChestToolbox.ChestTier.RAT) { tier = ChestToolbox.ChestTier.RED; } else if (tier == ChestToolbox.ChestTier.TRUTH) { tier = ChestToolbox.ChestTier.BLUE; } ChestToolbox.ThreeStateValue isMimic = ChestToolbox.ThreeStateValue.UNSPECIFIED; if (dupeChest.IsMimic) { isMimic = ChestToolbox.ThreeStateValue.FORCEYES; } else { isMimic = ChestToolbox.ThreeStateValue.FORCENO; } ChestToolbox.ThreeStateValue isFused = ChestToolbox.ThreeStateValue.UNSPECIFIED; if (dupeChest.GetFuse() != null) { isFused = ChestToolbox.ThreeStateValue.FORCEYES; } else { isFused = ChestToolbox.ThreeStateValue.FORCENO; } Chest spawnedChest = ChestToolbox.SpawnChestEasy(bestRewardLocation, tier, dupeChest.IsLocked, Chest.GeneralChestType.UNSPECIFIED, isMimic, isFused); if (dupeChest.GetComponent <JammedChestBehav>()) { spawnedChest.gameObject.AddComponent <JammedChestBehav>(); } else if (dupeChest.GetComponent <PassedOverForJammedChest>()) { spawnedChest.gameObject.AddComponent <PassedOverForJammedChest>(); } }
private void UpgradeChest(Chest chest, PlayerController user) { ChestToolbox.ChestTier tier = chest.GetChestTier(); ChestToolbox.ChestTier targetTier = ChestToolbox.ChestTier.OTHER; switch (tier) { case ChestToolbox.ChestTier.BROWN: targetTier = ChestToolbox.ChestTier.BLUE; break; case ChestToolbox.ChestTier.BLUE: targetTier = ChestToolbox.ChestTier.GREEN; break; case ChestToolbox.ChestTier.GREEN: targetTier = ChestToolbox.ChestTier.RED; break; case ChestToolbox.ChestTier.RED: targetTier = ChestToolbox.ChestTier.BLACK; break; case ChestToolbox.ChestTier.BLACK: targetTier = ChestToolbox.ChestTier.RAINBOW; break; case ChestToolbox.ChestTier.SYNERGY: targetTier = ChestToolbox.ChestTier.BLACK; break; } ChestToolbox.ThreeStateValue isMimic = ChestToolbox.ThreeStateValue.UNSPECIFIED; if (chest.IsMimic) { isMimic = ChestToolbox.ThreeStateValue.FORCEYES; } else { isMimic = ChestToolbox.ThreeStateValue.FORCENO; } if (targetTier != ChestToolbox.ChestTier.OTHER) { ChestToolbox.SpawnChestEasy(chest.sprite.WorldBottomLeft.ToIntVector2(), targetTier, chest.IsLocked, Chest.GeneralChestType.UNSPECIFIED, isMimic); } else { GameManager.Instance.RewardManager.SpawnRewardChestAt(chest.sprite.WorldBottomLeft.ToIntVector2()); } user.CurrentRoom.DeregisterInteractable(chest); chest.DeregisterChestOnMinimap(); Destroy(chest.gameObject); }
public static void Accept(PlayerController player, GameObject shrine) { if (player.characterIdentity == PlayableCharacters.Robot) { player.healthHaver.Armor -= 2; } else { StatModifier HP = new StatModifier { statToBoost = PlayerStats.StatType.Health, amount = -1f, modifyType = StatModifier.ModifyMethod.ADDITIVE }; player.ownerlessStatModifiers.Add(HP); player.stats.RecalculateStats(player); } foreach (Chest chest in GetAllChests()) { ChestToolbox.ChestTier targetTier = ChestToolbox.ChestTier.OTHER; ChestToolbox.ChestTier curTier = chest.GetChestTier(); switch (curTier) { case ChestToolbox.ChestTier.BROWN: targetTier = ChestToolbox.ChestTier.BLUE; break; case ChestToolbox.ChestTier.BLUE: targetTier = ChestToolbox.ChestTier.GREEN; break; case ChestToolbox.ChestTier.GREEN: if (UnityEngine.Random.value <= 0.75f) { targetTier = ChestToolbox.ChestTier.RED; } else { targetTier = ChestToolbox.ChestTier.SYNERGY; } break; case ChestToolbox.ChestTier.RED: targetTier = ChestToolbox.ChestTier.BLACK; break; case ChestToolbox.ChestTier.BLACK: if (UnityEngine.Random.value <= 0.05f) { targetTier = ChestToolbox.ChestTier.RAINBOW; } else { chest.ForceUnlock(); } break; case ChestToolbox.ChestTier.SYNERGY: if (UnityEngine.Random.value <= 0.5f) { targetTier = ChestToolbox.ChestTier.RED; } else { targetTier = ChestToolbox.ChestTier.BLACK; } break; } ChestToolbox.ThreeStateValue isMimic = ChestToolbox.ThreeStateValue.UNSPECIFIED; if (chest.IsMimic) { isMimic = ChestToolbox.ThreeStateValue.FORCEYES; } else { isMimic = ChestToolbox.ThreeStateValue.FORCENO; } if (targetTier != ChestToolbox.ChestTier.OTHER) { Chest newChest = ChestToolbox.SpawnChestEasy(chest.sprite.WorldBottomLeft.ToIntVector2(), targetTier, chest.IsLocked, chest.ChestType, isMimic, ChestToolbox.ThreeStateValue.FORCENO); if (chest.GetComponent <JammedChestBehav>()) { newChest.gameObject.AddComponent <JammedChestBehav>(); } player.CurrentRoom.DeregisterInteractable(chest); chest.DeregisterChestOnMinimap(); UnityEngine.Object.Destroy(chest.gameObject); } shrine.GetComponent <CustomShrineController>().numUses++; GameUIRoot.Instance.notificationController.DoCustomNotification( "Kliklok's Blessing", "Chests Upgraded", ShrineFactory.ShrineIconCollection, spriteId, UINotificationController.NotificationColor.SILVER, true, false ); AkSoundEngine.PostEvent("Play_OBJ_shrine_accept_01", shrine); } }