internal AndGate(Gate a, Gate b) { if (a is AndGate andGateA && b is AndGate andGateB) { _gates = andGateA.Gates.Union(andGateB.Gates).ToArray(); }
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; }
public ItemLocation(ItemKey key, string areaName, string name, ItemInfo defaultItem, Gate gate) { Key = key; AreaName = areaName; Name = name; Gate = gate; DefaultItem = defaultItem; }
void Add(ItemKey itemKey, string name, ItemInfo defaultItem, Gate gate) { Add(new ItemLocation(itemKey, areaName, name, defaultItem, gate)); }