public void OnPopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
 {
     Debug.Log("[CRCore3]: Previous SceneDirector interactible credits: " + self.interactableCredit.ToString());
     self.interactableCredit = (int)(interactibleCreditMultiplier.Value * self.interactableCredit);
     Debug.Log("[CRCore3]: Updated SceneDirector interactible credits to: " + self.interactableCredit.ToString());
     orig(self);
 }
Example #2
0
 private static void SceneDirector_PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
 {
     if (gurrenInteractSpawnCard && Run.instance.userMasters.Values.Any((x) =>
     {
         if (x != null && x.bodyPrefab != null)
         {
             var body = x.bodyPrefab.GetComponent <CharacterBody>();
             if (body)
             {
                 var found = body.bodyIndex == BodyCatalog.FindBodyIndex("LagannBody");
                 if (found)
                 {
                     var gurrenMinionCache = GurrenMinionCache.GetOrSetGurrenStatusCache(x);
                     if (!gurrenMinionCache.gurrenMinion)
                     {
                         return(true);
                     }
                 }
             }
         }
         return(false);
     }))
     {
         TTGL_SurvivorPlugin.instance.Logger.LogMessage("Added Gurren On Level");
         DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(gurrenInteractSpawnCard, new DirectorPlacementRule
         {
             placementMode = DirectorPlacementRule.PlacementMode.Random
         }, self.rng));
     }
     orig(self);
 }
            void PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector sceneDirector)
            {
                RoR2.InteractableSpawnCard[] allInteractables = UnityEngine.Resources.LoadAll <RoR2.InteractableSpawnCard>("SpawnCards/InteractableSpawnCard");
                foreach (RoR2.InteractableSpawnCard spawnCard in allInteractables)
                {
                    string interactableName = InteractableCalculator.GetSpawnCardName(spawnCard);
                    if (interactableName == "Lockbox" || interactableName == "ScavBackpack")
                    {
                        DropOdds.UpdateChestTierOdds(spawnCard, interactableName);
                    }
                    else if (interactableName == "CasinoChest")
                    {
                        DropOdds.UpdateDropTableTierOdds(spawnCard, interactableName);
                    }
                    else if (interactableName == "ShrineCleanse")
                    {
                        ExplicitPickupDropTable dropTable = spawnCard.prefab.GetComponent <RoR2.ShopTerminalBehavior>().dropTable as ExplicitPickupDropTable;
                        DropOdds.UpdateDropTableItemOdds(dropTable, interactableName);
                    }
                }

                if (ClassicStageInfo.instance != null)
                {
                    int categoriesLength = ClassicStageInfo.instance.interactableCategories.categories.Length;
                    for (int categoryIndex = 0; categoryIndex < categoriesLength; categoryIndex++)
                    {
                        List <DirectorCard> directorCards = new List <DirectorCard>();
                        foreach (DirectorCard directorCard in ClassicStageInfo.instance.interactableCategories.categories[categoryIndex].cards)
                        {
                            string interactableName = InteractableCalculator.GetSpawnCardName(directorCard.spawnCard);
                            if (new List <string>()
                            {
                            }.Contains(interactableName))
                            {
                            }
                            if (playerInteractables.interactablesInvalid.Contains(interactableName))
                            {
                            }
                            else
                            {
                                DropOdds.UpdateChestTierOdds(directorCard.spawnCard, interactableName);
                                DropOdds.UpdateShrineTierOdds(directorCard, interactableName);
                                directorCards.Add(directorCard);
                            }
                        }
                        DirectorCard[] directorCardArray = new DirectorCard[directorCards.Count];
                        for (int cardIndex = 0; cardIndex < directorCards.Count; cardIndex++)
                        {
                            directorCardArray[cardIndex] = directorCards[cardIndex];
                        }
                        if (directorCardArray.Length == 0)
                        {
                            ClassicStageInfo.instance.interactableCategories.categories[categoryIndex].selectionWeight = 0;
                        }
                        ClassicStageInfo.instance.interactableCategories.categories[categoryIndex].cards = directorCardArray;
                    }
                }
                orig(sceneDirector);
            }
Example #4
0
            void PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, RoR2.SceneDirector sceneDirector)
            {
                if (Data.modEnabled)
                {
                    sceneDirector.interactableCredit = Mathf.FloorToInt(sceneDirector.interactableCredit * Data.interactableMultiplier);

                    List <SpawnCard> spawnCards     = new List <SpawnCard>();
                    List <string>    spawnCardNames = new List <string>();
                    //spawnCardNames = new List<string>() { "ShrineChance" };
                    //spawnCardNames = new List<string>() { "BrokenDrone1", "BrokenDrone2", "BrokenEmergencyDrone", "BrokenEquipmentDrone", "BrokenFlameDrone", "BrokenMegaDrone", "BrokenMissileDrone", "BrokenTurret1" };
                    //spawnCardNames = new List<string>() { "Duplicator", "DuplicatorLarge", "DuplicatorMilitary", "DuplicatorWild" };
                    //spawnCardNames = new List<string>() { "EquipmentBarrel", "TripleShopEquipment" };

                    RoR2.InteractableSpawnCard[] allInteractables = UnityEngine.Resources.LoadAll <RoR2.InteractableSpawnCard>("SpawnCards/InteractableSpawnCard");
                    foreach (RoR2.InteractableSpawnCard spawnCard in allInteractables)
                    {
                        string interactableName = ItemDropAPIFixes.InteractableCalculator.GetSpawnCardName(spawnCard);
                        if (spawnCardNames.Contains(interactableName))
                        {
                            spawnCards.Add(spawnCard);
                        }
                    }

                    if (spawnCardNames.Count > 0)
                    {
                        DirectorCard[] directorCards = new DirectorCard[spawnCards.Count];
                        for (int cardIndex = 0; cardIndex < spawnCards.Count; cardIndex++)
                        {
                            DirectorCard directorCard = new DirectorCard();
                            directorCard.spawnCard       = spawnCards[cardIndex];
                            directorCard.selectionWeight = 1;
                            directorCards[cardIndex]     = directorCard;
                        }

                        DirectorCardCategorySelection.Category category = new DirectorCardCategorySelection.Category();
                        category.name            = "FORCED";
                        category.cards           = directorCards;
                        category.selectionWeight = 1000;

                        DirectorCardCategorySelection.Category[] categoriesAdjusted = new DirectorCardCategorySelection.Category[ClassicStageInfo.instance.interactableCategories.categories.Length + 1];
                        for (int categoryIndex = 0; categoryIndex < ClassicStageInfo.instance.interactableCategories.categories.Length; categoryIndex++)
                        {
                            categoriesAdjusted[categoryIndex] = ClassicStageInfo.instance.interactableCategories.categories[categoryIndex];
                        }
                        categoriesAdjusted[categoriesAdjusted.Length - 1]           = category;
                        ClassicStageInfo.instance.interactableCategories.categories = categoriesAdjusted;
                    }
                    ;

                    foreach (int key in Data.allDroneIDs.Keys)
                    {
                        if (!Data.itemsToDrop.Contains(key) && !ItemDropAPIFixes.ItemDropAPIFixes.playerInteractables.interactablesInvalid.Contains(Data.allDroneIDs[key]))
                        {
                            ItemDropAPIFixes.ItemDropAPIFixes.playerInteractables.interactablesInvalid.Add(Data.allDroneIDs[key]);
                        }
                    }
                }
                orig(sceneDirector);
            }
Example #5
0
        static void CustomSpawner(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
        {
            if (NetworkServer.active)
            {
                if (VoteAPI.VoteResults.HasVote(Settings.CustomInteractablesSpawner.Item2))
                {
                    if (Run.instance && SceneInfo.instance.sceneDef.baseSceneName != "bazaar" ||
                        SceneInfo.instance.sceneDef.baseSceneName != "mysteryspace" ||
                        SceneInfo.instance.sceneDef.baseSceneName != "arena")
                    {
                        //Custom spawn
                        //Drones
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenMegaDrone", Settings.MegaDroneAmount, Settings.MegaDronePrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenDrone1", Settings.GunnerDroneAmount, Settings.GunnerDronePrice, Run.instance.stageRng);         //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenDrone2", Settings.HealerDroneAmount, Settings.HealerDronePrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenMissileDrone", Settings.MissileDroneAmount, Settings.MissileDronePrice, Run.instance.stageRng); //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenEquipmentDrone", Settings.EquipmentDroneAmount, -1, Run.instance.stageRng);                     //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenFlameDrone", Settings.FlameDroneAmount, Settings.FlameDronePrice, Run.instance.stageRng);       //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBrokenTurret1", Settings.TurretAmount, Settings.TurretPrice, Run.instance.stageRng);                  //Non default

                        //Shrines
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineRestack", Settings.ShrineOfOrderAmount, -1, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineBlood", Settings.ShrineOfBloodAmount, -1, Run.instance.stageRng);                                //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineChance", Settings.ShrineOfChanceAmount, Settings.ShrineOfChancePrice, Run.instance.stageRng);    //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineCombat", Settings.ShrineOfCombatAmount, -1, Run.instance.stageRng);                              //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineHealing", Settings.ShrineOfHealingAmount, Settings.ShrineOfHealingPrice, Run.instance.stageRng); //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShrineGoldshoresAccess", Settings.GoldShrineAmount, Settings.GoldShrinePrice, Run.instance.stageRng);  //Non default

                        //Misc
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscBarrel1", Settings.CapsuleAmount, -1, Run.instance.stageRng);          //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscRadarTower", Settings.RadarTowerAmount, Settings.RadarTowerPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscMSPortal", Settings.CelestialPortalAmount, -1, Run.instance.stageRng); //Non default
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscShopPortal", Settings.ShopPortalAmount, -1, Run.instance.stageRng);    //Non default

                        //Duplicators
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscDuplicator", Settings.DuplicatorAmount, -1, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscDuplicatorLarge", Settings.DuplicatorLargeAmount, -1, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscDuplicatorMilitary", Settings.DuplicatorMilitaryAmount, -1, Run.instance.stageRng); //Non default

                        //Chests
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscGoldChest", Settings.GoldChestAmount, Settings.GoldChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscChest1", Settings.SmallChestAmount, Settings.SmallChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscChest2", Settings.LargeChestAmount, Settings.LargeChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscCategoryChestDamage", Settings.DamageChestAmount, Settings.DamageChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscCategoryChestHealing", Settings.HealingChestAmount, Settings.HealingChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscCategoryChestUtility", Settings.UtilityChestAmount, Settings.UtilityChestPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscTripleShop", Settings.TripleShopAmount, Settings.TripleShopPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscTripleShopLarge", Settings.TripleShopLargeAmount, Settings.TripleShopLargePrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscEquipmentBarrel", Settings.EquipmentBarrelAmount, Settings.EquipmentBarrelPrice, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscLockbox", Settings.LockboxAmount, -1, Run.instance.stageRng);
                        Tools.CustomGenerate("SpawnCards/InteractableSpawnCard/iscLunarChest", Settings.LunarChestAmount, -1, Run.instance.stageRng);
                    }
                }
            }
            orig(self);
        }
        private void DoNotPopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
        {
            self.SetFieldValue <float>("interactableCredit", 0);

            orig(self);
        }
Example #7
0
 private void Discover(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
 {
     orig(self);
     PrintSceneCollisions();
 }
Example #8
0
 private void SceneDirector_PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
 {
     orig(self);
     string[] chosenPathSet = GetPathSet(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
     PatchScene(chosenPathSet, cfgLODOverride.Value);
 }
Example #9
0
 private void SceneDirector_PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self)
 {
     self.InvokeMethod("RemoveAllExistingSpawnPoints");
     orig(self);
 }