diff --git a/pop_2008.asl b/pop_2008.asl index 69c8108..771ee55 100644 --- a/pop_2008.asl +++ b/pop_2008.asl @@ -24,10 +24,11 @@ state("Prince of Persia", "Unknown") {} startup { - vars.splitTypes = new Dictionary { - {"specialEvents", "Split on scripted game events"}, - {"combatEvents", "Split on defeating bosses in specific levels"}, - {"anyStandard", "Splits specific to the Any% (Standard) route"}, + vars.splitTypes = new Dictionary> { + {"specialEvents", Tuple.Create("Split on scripted game events", true)}, + {"combatEvents", Tuple.Create("Split on defeating bosses in specific levels", true)}, + {"anyStandard", Tuple.Create("Splits specific to the Any% (Standard) route", true)}, + {"anyLegacy", Tuple.Create("Legacy splits specific to the Any% (NDJE) route", false)}, }; // Key - Setting ID, Value - Tuple of (Description, Split type, Tooltip and Trigger condition). @@ -50,6 +51,30 @@ startup "", new Func(() => vars.CompletedSplits.Contains("PreDad1") && vars.oldYPos < -238f && vars.inPosWithRange(6f, -233.5f, -33f, 2)) )}, + {"RedPlate", Tuple.Create( + "Step of Ormazd", + "specialEvents", + "Splits on entering the Red plate realm", + new Func(() => vars.inPosWithRange(-55f, -447f, -180f, 2)) + )}, + {"BluePlate", Tuple.Create( + "Hand of Ormazd", + "specialEvents", + "Splits on entering the Blue plate realm", + new Func(() => vars.inPosWithRange(45f, -456f, -180f, 2)) + )}, + {"YellowPlate", Tuple.Create( + "Wings of Ormazd", + "specialEvents", + "Splits on entering the Yellow plate realm", + new Func(() => vars.inPosWithRange(-156f, -413f, -180f, 2)) + )}, + {"GreenPlate", Tuple.Create( + "Breath of Ormazd", + "specialEvents", + "Splits on entering the Green plate realm", + new Func(() => vars.inPosWithRange(150f, -444f, -182f, 2)) + )}, {"TheGod", Tuple.Create( "Defeat Ahriman", "specialEvents", @@ -218,6 +243,12 @@ startup "Splits on defeating the Mourning King before Ahriman encounter", new Func(() => vars.CompletedSplits.Contains("Warrior") && vars.splitBoss(5f, -365f, -32f)) )}, + {"ThirdFight", Tuple.Create( + "Third Fight", + "anyStandard", + "Splits at the start of third fight cutscene", + new Func(() => vars.inPosWithRange(-193f, -143.6f, -32f, 2)) + )}, {"BarrierSkip", Tuple.Create( "Barrier Skip", "anyStandard", @@ -252,19 +283,13 @@ startup "Martyrs Tower", "anyStandard", "", - new Func(() => vars.splitSeed(-564.202f, 207.312f, 22f)) - )}, - {"MTtoMG", Tuple.Create( - "MT -> MG", - "anyStandard", - "", - new Func(() => vars.splitSeed(-454.824f, 398.571f, 27.028f)) + new Func(() => vars.splitSeed(-548f, 230f, 26f)) )}, {"MachineryGround", Tuple.Create( "Machinery Ground", "anyStandard", "", - new Func(() => vars.splitSeed(-361.121f, 480.114f, 12.928f)) + new Func(() => vars.splitSeed(-370f, 468f, 17f)) )}, {"HeavensStair", Tuple.Create( "Heavens Stair", @@ -276,6 +301,18 @@ startup "Spire of Dreams", "anyStandard", "", + new Func(() => vars.splitSeed(266f, 602f, 36f)) + )}, + {"CoronationHall", Tuple.Create( + "Coronation Hall", + "anyStandard", + "", + new Func(() => vars.splitSeed(399f, 535f, 39f)) + )}, + {"RoyalSpire1", Tuple.Create( + "Royal Spire 1", + "anyStandard", + "", new Func(() => vars.splitSeed(-88.5f, 538.5f, 44.5f)) )}, {"Reservoir08", Tuple.Create( @@ -308,17 +345,47 @@ startup "", new Func(() => vars.splitSeed(547.488f, 45.41f, -27.107f)) )}, - {"TowerOfOrmazd", Tuple.Create( - "Tower of Ormazd", + {"TowerOfAhriman", Tuple.Create( + "Tower of Ahriman", "anyStandard", "", - new Func(() => vars.splitSeed(609.907f, 61.905f, -35.001f)) + new Func(() => vars.splitSeed(667f, -14f, -30f)) )}, {"QueensTower", Tuple.Create( "Queen's Tower", "anyStandard", "", - new Func(() => vars.splitSeed(637.262f, 27.224f, -28.603f)) + new Func(() => vars.splitSeed(842f, -16f, -40f)) + )}, + {"CityOfLight", Tuple.Create( + "City of Light", + "anyStandard", + "Splits on defeating Warrior in City of Light", + new Func(() => vars.splitSeed(735f, 166f, -35f)) + )}, + {"TowerOfOrmazd", Tuple.Create( + "Tower of Ormazd", + "anyStandard", + "", + new Func(() => vars.splitSeed(655f, 227f, -37f)) + )}, + {"RoyalSpire2", Tuple.Create( + "Royal Spire 2", + "anyStandard", + "", + new Func(() => vars.splitSeed(407f, 399f, 34f)) + )}, + {"RoyalGardens", Tuple.Create( + "Royal Gardens", + "anyStandard", + "", + new Func(() => vars.splitSeed(152f, 244f, 9f)) + )}, + {"Cavern2", Tuple.Create( + "Cavern 2", + "anyStandard", + "", + new Func(() => vars.splitSeed(79f, 182f, -8f)) )}, {"DoubleJump", Tuple.Create( "Double Jump", @@ -326,22 +393,52 @@ startup "Splits on dying after getting double jump", new Func(() => vars.CompletedSplits.Contains("PreDad1") && vars.inXRange(0f, 10f) && vars.inYRange(-253f, -243f) && vars.currentZPos() < -43) )}, - {"CoronationHall", Tuple.Create( + {"MartyrsTowerNDJE", Tuple.Create( + "Martyrs Tower", + "anyLegacy", + "", + new Func(() => vars.splitSeed(-564.202f, 207.312f, 22f)) + )}, + {"MTtoMG", Tuple.Create( + "MT -> MG", + "anyLegacy", + "", + new Func(() => vars.splitSeed(-454.824f, 398.571f, 27.028f)) + )}, + {"MachineryGroundNDJE", Tuple.Create( + "Machinery Ground", + "anyLegacy", + "", + new Func(() => vars.splitSeed(-361.121f, 480.114f, 12.928f)) + )}, + {"TowerOfOrmazdNDJE", Tuple.Create( + "Tower of Ormazd", + "anyLegacy", + "", + new Func(() => vars.splitSeed(609.907f, 61.905f, -35.001f)) + )}, + {"QueensTowerNDJE", Tuple.Create( + "Queen's Tower", + "anyLegacy", + "", + new Func(() => vars.splitSeed(637.262f, 27.224f, -28.603f)) + )}, + {"CoronationHallNDJE", Tuple.Create( "Coronation Hall", - "anyStandard", + "anyLegacy", "", new Func(() => vars.splitSeed(340f, 590f, 19f)) )}, {"Seed540", Tuple.Create( "540 Seeds", - "anyStandard", + "anyLegacy", "Splits on getting the final seed at Heaven's Stair", new Func(() => vars.splitSeed(-280f, 696f, 87f)) )}, }; foreach (var splitType in vars.splitTypes) { - settings.Add(splitType.Key, true, splitType.Value); + settings.Add(splitType.Key, splitType.Value.Item2, splitType.Value.Item1); } foreach (var data in vars.splitsData) {