Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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>();
            }
        }
Esempio n. 3
0
        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);
        }
        protected override void DoEffect(PlayerController user)
        {
            ChestToolbox.ChestTier chestToSpawn = ChestToolbox.ChestTier.OTHER;
            switch (MemorisedTier)
            {
            case PocketChestTier.BROWN:
                chestToSpawn = ChestToolbox.ChestTier.BROWN;
                break;

            case PocketChestTier.BLUE:
                chestToSpawn = ChestToolbox.ChestTier.BLUE;
                break;

            case PocketChestTier.GREEN:
                chestToSpawn = ChestToolbox.ChestTier.GREEN;
                break;

            case PocketChestTier.RED:
                chestToSpawn = ChestToolbox.ChestTier.RED;
                break;

            case PocketChestTier.BLACK:
                chestToSpawn = ChestToolbox.ChestTier.BLACK;
                break;

            case PocketChestTier.SYNERGY:
                chestToSpawn = ChestToolbox.ChestTier.SYNERGY;
                break;

            case PocketChestTier.RAINBOW:
                chestToSpawn = ChestToolbox.ChestTier.RAINBOW;
                break;
            }
            if (chestToSpawn != ChestToolbox.ChestTier.OTHER)
            {
                IntVector2 bestRewardLocation2 = user.CurrentRoom.GetBestRewardLocation(IntVector2.One * 3, RoomHandler.RewardLocationStyle.PlayerCenter, true);
                ChestToolbox.SpawnChestEasy(bestRewardLocation2, chestToSpawn, !(chestToSpawn == ChestToolbox.ChestTier.RAINBOW || chestToSpawn == ChestToolbox.ChestTier.BROWN), Chest.GeneralChestType.UNSPECIFIED);
            }
        }
Esempio n. 5
0
        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);
            }
        }