static void PreventRevivesShuffle(On.RoR2.ShrineRestackBehavior.orig_AddShrineStack orig, ShrineRestackBehavior self, Interactor interactor) { if (NetworkServer.active) { //Remove revives before shuffling so it doesn't add to the shuffle RoR2.Inventory playerInventory = interactor.GetComponent <CharacterBody>().master.inventory; playerInventory.RemoveItem(RoR2Content.Items.ExtraLife, 9999); playerInventory.RemoveItem(RoR2Content.Items.ExtraLifeConsumed, 9999); //Shuffle orig(self, interactor); //Reshuffle if shuffle landed on a revive item while (playerInventory.GetItemCount(RoR2Content.Items.ExtraLife) != 0 || playerInventory.GetItemCount(RoR2Content.Items.ExtraLife) != 0) { playerInventory.ShrineRestackInventory(Run.instance.treasureRng); } } else { orig(self, interactor); } }
public void AddShrineStack(Interactor interactor) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.ShrineRestackBehavior::AddShrineStack(RoR2.Interactor)' called on client"); return; } this.waitingForRefresh = true; CharacterBody component = interactor.GetComponent <CharacterBody>(); if (component && component.master) { Inventory inventory = component.master.inventory; if (inventory) { inventory.ShrineRestackInventory(this.rng); Chat.SendBroadcastChat(new Chat.SubjectFormatChatMessage { subjectCharacterBodyGameObject = interactor.gameObject, baseToken = "SHRINE_RESTACK_USE_MESSAGE" }); } } EffectManager.instance.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/ShrineUseEffect"), new EffectData { origin = base.transform.position, rotation = Quaternion.identity, scale = 1f, color = new Color(1f, 0.23f, 0.6337214f) }, true); this.purchaseCount++; this.refreshTimer = 2f; if (this.purchaseCount >= this.maxPurchaseCount) { this.symbolTransform.gameObject.SetActive(false); } }
private static void StackInventory() { //Does the same thing as the shrine of order. Orders all your items into stacks of several random items. LocalPlayerInv.ShrineRestackInventory(Run.instance.runRNG); }