예제 #1
0
        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);
            }
        }
예제 #2
0
 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());
         }
     }
 }