示例#1
0
 internal AndGate(Gate a, Gate b)
 {
     if (a is AndGate andGateA && b is AndGate andGateB)
     {
         _gates = andGateA.Gates.Union(andGateB.Gates).ToArray();
     }
示例#2
0
        void SetupGates()
        {
            OculusRift = (seedOptions.RequireEyeOrbRing)
                                ? R.OculusRift
                                : R.None;

            MawGassMask = (seedOptions.GassMaw)
                                ? R.GassMask
                                : R.None;

            AccessToLakeDesolation = (!seedOptions.Inverted)
                                ? (Gate)R.None
                                : R.GateLakeDesolation
                                     | R.GateKittyBoss
                                     | R.GateLeftLibrary
                                     | R.GateSealedCaves
                                     | (R.GateSealedSirensCave & R.CardE)
                                     | (R.GateMilitairyGate & ((R.CardC & R.CardE) | R.CardB));

            LowerLakeDesolationBridge = AccessToLakeDesolation & (R.TimeStop | R.ForwardDash | R.GateKittyBoss | R.GateLeftLibrary);

            AccessToPast = (seedOptions.Inverted)
                                ? (Gate)R.None
                                : (                       //libraryTimespinner
                R.TimespinnerWheel & R.TimespinnerSpindle //activateLibraryTimespinner
                & (LowerLakeDesolationBridge & R.CardD)   //midLibrary
                )
                           | R.GateLakeSirineLeft
                           | R.GateAccessToPast
                           | R.GateLakeSirineRight
                           | R.GateRoyalTowers
                           | R.GateCastleRamparts
                           | R.GateCastleKeep
                           | (MawGassMask & (R.GateCavesOfBanishment | R.GateMaw));

            MultipleSmallJumpsOfNpc = (Gate)(R.TimespinnerWheel | R.UpwardDash);
            DoubleJumpOfNpc         = (R.DoubleJump & R.TimespinnerWheel) | R.UpwardDash;
            ForwardDashDoubleJump   = (R.ForwardDash & R.DoubleJump) | R.UpwardDash;

            //past
            LeftSideForestCaves    = (AccessToPast & (R.TimespinnerWheel | R.ForwardDash | R.DoubleJump)) | R.GateLakeSirineRight | R.GateLakeSirineLeft;
            UpperLakeSirine        = (LeftSideForestCaves & (R.TimeStop | R.Swimming)) | R.GateLakeSirineLeft;
            LowerlakeSirine        = (LeftSideForestCaves | R.GateLakeSirineLeft) & R.Swimming;
            LowerCavesOfBanishment = LowerlakeSirine | R.GateCavesOfBanishment | (R.GateMaw & R.DoubleJump);
            UpperCavesOfBanishment = AccessToPast;
            CastleRamparts         = AccessToPast;
            CastleKeep             = CastleRamparts;
            RoyalTower             = (CastleKeep & R.DoubleJump) | R.GateRoyalTowers;
            MidRoyalTower          = RoyalTower & (MultipleSmallJumpsOfNpc | ForwardDashDoubleJump);
            UpperRoyalTower        = MidRoyalTower & R.DoubleJump;
            KillMaw = (LowerlakeSirine | R.GateCavesOfBanishment | R.GateMaw) & MawGassMask;
            var killTwins  = CastleKeep & R.TimeStop;
            var killAelana = UpperRoyalTower;

            //future
            UpperLakeDesolation              = AccessToLakeDesolation & UpperLakeSirine & R.AntiWeed;
            LeftLibrary                      = UpperLakeDesolation | LowerLakeDesolationBridge | R.GateLeftLibrary | R.GateKittyBoss | (R.GateSealedSirensCave & R.CardE) | (R.GateMilitairyGate & (R.CardB | (R.CardC & R.CardE)));
            UpperLeftLibrary                 = LeftLibrary & (R.DoubleJump | R.ForwardDash);
            MidLibrary                       = (LeftLibrary & R.CardD) | (R.GateSealedSirensCave & R.CardE) | (R.GateMilitairyGate & (R.CardB | (R.CardC & R.CardE)));
            UpperRightSideLibrary            = (MidLibrary & (R.CardC | (R.CardB & R.CardE))) | ((R.GateMilitairyGate | R.GateSealedSirensCave) & R.CardE);
            RightSideLibraryElevator         = R.CardE & ((MidLibrary & (R.CardC | R.CardB)) | R.GateMilitairyGate | R.GateSealedSirensCave);
            LowerRightSideLibrary            = (MidLibrary & R.CardB) | RightSideLibraryElevator | R.GateMilitairyGate | (R.GateSealedSirensCave & R.CardE);
            SealedCavesLeft                  = (AccessToLakeDesolation & R.DoubleJump) | R.GateSealedCaves;
            SealedCavesLower                 = SealedCavesLeft & R.CardA;
            SealedCavesSirens                = (MidLibrary & R.CardB & R.CardE) | R.GateSealedSirensCave;
            MilitairyFortress                = LowerRightSideLibrary & KillMaw & killTwins & killAelana;
            MilitairyFortressHangar          = MilitairyFortress;
            RightSideMilitairyFortressHangar = MilitairyFortressHangar & R.DoubleJump;
            TheLab           = MilitairyFortressHangar & R.CardB;
            TheLabPoweredOff = TheLab & DoubleJumpOfNpc;
            UpperLab         = TheLabPoweredOff & ForwardDashDoubleJump;
            EmperorsTower    = UpperLab;

            //pyramid
            LeftPyramid = UpperLab & (
                R.TimespinnerWheel & R.TimespinnerSpindle &
                R.TimespinnerPiece1 & R.TimespinnerPiece2 & R.TimespinnerPiece3);
            Nightmare = LeftPyramid & R.UpwardDash;
        }
示例#3
0
 public ItemLocation(ItemKey key, string areaName, string name, ItemInfo defaultItem, Gate gate)
 {
     Key         = key;
     AreaName    = areaName;
     Name        = name;
     Gate        = gate;
     DefaultItem = defaultItem;
 }
示例#4
0
 void Add(ItemKey itemKey, string name, ItemInfo defaultItem, Gate gate)
 {
     Add(new ItemLocation(itemKey, areaName, name, defaultItem, gate));
 }