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); }
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); }
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); }
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); }
private void Discover(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self) { orig(self); PrintSceneCollisions(); }
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); }
private void SceneDirector_PopulateScene(On.RoR2.SceneDirector.orig_PopulateScene orig, SceneDirector self) { self.InvokeMethod("RemoveAllExistingSpawnPoints"); orig(self); }