public ShrineRestackData(ShrineRestackBehavior shrine) { var purchaseInteraction = shrine.GetComponent <PurchaseInteraction>(); transform = new SerializableTransform(shrine.transform); available = purchaseInteraction.available; }
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); } }