private void SkipStage(SceneExitController self) { /*I actually dont know what this does * //self = explicitSceneExitController.GetComponent<SceneExitController>(); #if DEBUG * Chat.AddMessage("Turbo Edition: " + EquipmentName + " getComponent " + self); #endif*/ //CANNOT DO THIS!!!! Throws an exception on ExitStage.State newState! //self = new SceneExitController(); InstanceTracker.Add(self); #if DEBUG Chat.AddMessage("Turbo Edition: " + EquipmentName + " forced stage skip."); #endif //The game does this so lets do too if (NetworkServer.active) { //SceneExitController.ExitState == SceneExitController.ExitState.Idle; self.SetState(SceneExitController.ExitState.Idle); self.Begin(); } //If we are grabbing an already existing instance from the game thanks to InstanceTracker.FirstOrNull we are deleting that one //should be fine since we are leaving the scene though. InstanceTracker.Remove(self); }
public void OnDisable() { InstanceTracker.Remove(this); foreach (HUD hud in HUD.readOnlyInstanceList) { SetHudCountdownEnabled(hud, false); } }
public void OnDisable() { InstanceTracker.Remove(this); }
// Token: 0x06001E57 RID: 7767 RVA: 0x00082E13 File Offset: 0x00081013 private void OnDisable() { InstanceTracker.Remove <ProjectileController>(this); }
public void OnDestroy() { InstanceTracker.Remove(this); rigidBodies.Remove(rigidBody); }
// Token: 0x060021B8 RID: 8632 RVA: 0x00091E0C File Offset: 0x0009000C private void OnDisable() { InstanceTracker.Remove <ArenaInfoPanel>(this); }
private void ModifyDropList(ItemIndex itemIndex, bool add) { Run run = RoR2.Run.instance; ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex); ItemTier itemTier = itemDef.tier; if (itemDef.hidden || itemTier == ItemTier.NoTier) { return; } var pickupIndex = PickupCatalog.FindPickupIndex(itemIndex); bool runHasItem = run.availableItems.array[(int)itemIndex]; bool tier1Has = run.availableTier1DropList.Contains(pickupIndex); bool tier2Has = run.availableTier2DropList.Contains(pickupIndex); bool tier3Has = run.availableTier3DropList.Contains(pickupIndex); bool tierBossHas = run.availableBossDropList.Contains(pickupIndex); bool tierLunarHas = run.availableLunarDropList.Contains(pickupIndex); if (add) { if (!runHasItem) { //run.availableItems.array[(int)itemIndex] = true; run.availableItems.Add(itemIndex); switch (itemTier) { case ItemTier.Tier1: if (!tier1Has) { run.availableTier1DropList.Add(pickupIndex); } break; case ItemTier.Tier2: if (!tier2Has) { run.availableTier2DropList.Add(pickupIndex); } break; case ItemTier.Tier3: if (!tier3Has) { run.availableTier3DropList.Add(pickupIndex); } break; case ItemTier.Lunar: if (!tierLunarHas) { run.availableLunarDropList.Add(pickupIndex); } break; case ItemTier.Boss: if (!tierBossHas) { run.availableBossDropList.Add(pickupIndex); } break; } } } else { if (runHasItem) { //run.availableItems.array[(int)itemIndex] = false; run.availableItems.Remove(itemIndex); switch (itemTier) { case ItemTier.Tier1: if (tier1Has) { run.availableTier1DropList.Remove(pickupIndex); } break; case ItemTier.Tier2: if (tier2Has) { run.availableTier2DropList.Remove(pickupIndex); } break; case ItemTier.Tier3: if (tier3Has) { run.availableTier3DropList.Remove(pickupIndex); } break; case ItemTier.Lunar: if (tierLunarHas) { run.availableLunarDropList.Remove(pickupIndex); } break; case ItemTier.Boss: if (tierBossHas) { run.availableBossDropList.Remove(pickupIndex); } break; } } } run.BuildDropTable(); PickupDropTable.RegenerateAll(run); bool tier1Available = ItemTierAvailable(ItemTier.Tier1); bool tier2Available = ItemTierAvailable(ItemTier.Tier2); bool tier3Available = ItemTierAvailable(ItemTier.Tier3); bool noTierAvailable = !tier1Available && !tier2Available && !tier3Available; //Debug.Log($"Tier Availability: {tier1Available} {tier2Available} {tier3Available}"); void DestroyAndSpawnGold(GameObject gameObject, int count = 0) { if (gameObject) { GameObject gameObject9 = UnityEngine.Object.Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/NetworkedObjects/BonusMoneyPack"), gameObject.transform.position, UnityEngine.Random.rotation); gameObject9.GetComponent <TeamFilter>().teamIndex = TeamIndex.Player; for (int i = 0; i < count; i++) { NetworkServer.Spawn(gameObject9); } Destroy(gameObject); } } void HandleTerminalBehaviors() { foreach (var shopTerminalBehavior in InstanceTracker.GetInstancesList <ShopTerminalBehavior>()) { if (noTierAvailable) { if (shopTerminalBehavior.GetComponent <PurchaseInteraction>().Networkavailable) { DestroyAndSpawnGold(shopTerminalBehavior.gameObject, 3); } } else if (shopTerminalBehavior.pickupIndex == pickupIndex) { shopTerminalBehavior.GenerateNewPickupServer(); shopTerminalBehavior.UpdatePickupDisplayAndAnimations(); } } } HandleTerminalBehaviors(); void HandleChestBehaviors() { List <ChestBehavior> chestBehaviorsToRemove = new List <ChestBehavior>(); foreach (var chestBehavior in InstanceTracker.GetInstancesList <ChestBehavior>()) { bool notPurchased = chestBehavior.GetComponent <PurchaseInteraction>().Networkavailable; void DestroyGold() { if (notPurchased) { DestroyAndSpawnGold(chestBehavior.gameObject, 1); chestBehaviorsToRemove.Add(chestBehavior); } } if (noTierAvailable) { DestroyGold(); } else { chestBehavior.tier1Chance *= (tier1Available ? 1 : 0); chestBehavior.tier2Chance *= (tier2Available ? 1 : 0); chestBehavior.tier3Chance *= (tier3Available ? 1 : 0); var availableItemTiers = new List <ItemTier>(); if (chestBehavior.tier1Chance != 0) { availableItemTiers.Add(ItemTier.Tier1); } if (chestBehavior.tier2Chance != 0) { availableItemTiers.Add(ItemTier.Tier2); } if (chestBehavior.tier3Chance != 0) { availableItemTiers.Add(ItemTier.Tier3); } bool itemTagAvailable = chestBehavior.requiredItemTag == ItemTag.Any ? true : Availability.ItemTagAvailable(availableItemTiers.ToArray(), chestBehavior.requiredItemTag); if (!itemTagAvailable || (chestBehavior.tier1Chance == 0 && chestBehavior.tier2Chance == 0 && chestBehavior.tier3Chance == 0)) { DestroyGold(); } else { if (chestBehavior.dropPickup == pickupIndex) { chestBehavior.Start(); } } } } if (chestBehaviorsToRemove.Count > 0) { foreach (var cb in chestBehaviorsToRemove) { if (cb) { InstanceTracker.Remove(cb); } } } } HandleChestBehaviors(); }
public static void Track_MultiShopCrontroller_Remove(On.RoR2.MultiShopController.orig_OnDestroy orig, MultiShopController self) { orig(self); InstanceTracker.Remove(self); }
public void OnDestroy() { InstanceTracker.Remove(chestBehavior); }
public void OnDisable() { InstanceTracker.Remove(this); Debug.Log("Destroyed Fake User " + name); }
public void OnDestroy() { InstanceTracker.Remove(this); }
public void OnDisable() { InstanceTracker.Remove <MysticsItemsDuplicatorLocator>(this); }
private void OnDisable() { InstanceTracker.Remove(this); }
public void OnDisable() { InstanceTracker.Remove <MysticsItemsRiftChest>(this); }