private static void DreamBlock_Added(On.Celeste.DreamBlock.orig_Added orig, DreamBlock self, Scene scene) { if (MadelinePartyModule.IsSIDMadelineParty((scene as Level).Session.Area.GetSID()) && (scene as Level).Session.LevelData.Entities.Any((data) => data.Name.Equals("madelineparty/dreamBlockRNGSyncer"))) { DynData <Scene> sceneData = new DynData <Scene>(); var seed = sceneData.Get <int?>("madelinePartyRandomSeed"); if (seed == null) { seed = Calc.Random.Next(); sceneData["madelinePartyRandomSeed"] = seed; } DynData <DreamBlock> selfData = new DynData <DreamBlock>(self); selfData["madelinePartyRandom"] = new Random(seed.Value); Random oldRand = Calc.Random; Calc.Random = selfData.Get <Random>("madelinePartyRandom"); orig(self, scene); Calc.Random = oldRand; } else { orig(self, scene); } }
private static void DreamBlockAdded(On.Celeste.DreamBlock.orig_Added orig, DreamBlock self, Monocle.Scene scene) { orig(self, scene); if (AdventureHelperModule.Settings.CombineDreamBlocks && !AdventureHelperModule.Session.DreamBlocksNotToCombine.Contains(self)) { AdventureHelperModule.Session.DreamBlocksToCombine.Add(self); DreamBlockCombiner combiner = self.Scene.Tracker.GetEntity <DreamBlockCombiner>(); if (combiner == null) { self.Scene.Add(combiner = new DreamBlockCombiner()); } } }