diff --git a/constraints.txt b/constraints.txt new file mode 100644 index 0000000..4ec405d --- /dev/null +++ b/constraints.txt @@ -0,0 +1,1677 @@ + +// .---------------------' +// | Area 0 : Southern Woodland +// '---------------------. + +// Starting Forest +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ( & ) | | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & & ", +} + +{ + +"prereq": " + & ( + ( & ( | ) & ) + | ( & & ) +)", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + ( | ) + & ( + + | ( & ) + | | | | | + ) +", +} + +{ + +"prereq": " + & ( + ( & ( | ) & ) + | ( & ) +)", +} + +{ + +"prereq": " + & & & + ( + | ( & ( | )) + | | | | ) +", +} + +{ + +"prereq": " + ( & ( | )) + // jump into hole to reset duck, then hammer roll bonk duck + | ( & & ( | ( & ))) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "( & ( | ) & ) | ( & )", +} + +{ + +"prereq": " & & & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " +( + + | + | ( & ) + | + | + | +) & ( | )", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + + + +// Forest Night + +{ + +"prereq": " + & ( + ( & ( | ( & ))) + | () + | ( & ( + + | ( & ( | )) + )) + | ( & & ( + + | + )) + | ( & ( + // slide bonk + ( & & ) + // 4 tile zip. amulet cancel needed for wall jump. consumables don't work. + | ( & ( | ( & ))) + // get bee into hole, airjump into hole and whirlbonk bee + | ( & ) + )) +) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "IMPOSSIBLE", // dummy edge for template constraint +} + +{ + +"prereq": " & ( | ( & ))", +} + + +{ + +"prereq": " & & ", +} + +{ + +"prereq": " & ( | )", +} + +{ + +"prereq": " + & & ( + + | ( & ( + + | ( & ) + | ( & ) + | + | ) + ) + | + | + | ( & ( | )) + | ( & ) +)", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": "", +} + + +// Cave + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & & ", +} + +{ + +"prereq": "", +} + + +// Spectral + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | + | + | ( & ( | )) + | ( & ) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + ( & ( | | )) + | ( & ) + | + | +", +} + +{ + +"prereq": " +// standing on the edge of the ledge to avoid the prologue trigger is +( | ) & ( + | | | + | ( & & ) + | +) +" +} + +{ + +"prereq": "" +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + & ( + ( & ( + + | ( & ) + | ( & ) + | + )) + | ( & ) // buffered wall launch + | ( & & & ) + | ( & & ) + | ( & & ) +)", +} + +{ + +"prereq": " & ( + & ( + // launch off a 1 tile wall + | ( & ) // slide jump into quickdrop airdash + ) + | ( & ) // quickdrop airdash or launch off the lower wall + | + | +)", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | + | ( & ) + | ( & ) // slide bonk off bunny and wallkick up the hole +", +} + +{ + +"prereq": "", +} + +// .---------------------' +// | Area 1 : Western Coast +// '---------------------. + +// Beach and Pyramid +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & + ( | | | ( & )) +", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | | | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " +( & ( + + | + | +)) | ( & & ) +", +} + +{ + +"prereq": " + + | + | ( & ) + | +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + & ( + + | ( & ( | )) + | + ) +", +} + +{ + +"prereq": " + & + ( | ) +", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": "( & ) | | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ", +} + + +// Graveyard and Sky Island + +{ + +"prereq": " +( +// First jump + + | ( & ( | ( & ))) + | + | ( & ( | )) + // slide bonk + | ( & ) + // damage + | +) & ( +// Second jump + + | + | ( & ) + | + | + // never ever slide bonk + | ( & ( | )) +) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & & ( | )", +} + +{ + +"prereq": " | ( & & ( | ))", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + ( & ) + | ( & (( & ) | | | )) + | ( & ( | )) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +// + +{ + +"prereq": " + & + & ( + + | ( & ) + | ( & ( + + | + | + | + | + ) ) + ) +", +} + +// important nonsense - no necessary +{ + +"prereq": " & & & & & & & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + & + // Divided by room + & ( | ( & )) + & ( + + | ( & ) + | ( & ( | )) + | ( & ) + | + ) & +", +} + +{ + +"prereq": " + & + & ( + + | + | ( & ( | )) + ) & ( + + | ( & ) + | ( & ( | )) + | ( & ) + | + ) +", +} + +{ + +"prereq": " + + & ( + ( & ) + | ( & & ) + | ( & & ) + | ( & & ) + | ( & ( | )) + ) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " & & ( | ( & ))", +} + +//This edge does not provide a particularly useful path +//{ +// +//"prereq": "( & ) & & & & ", +//} + +{ + +"prereq": "( & & ) | ( & & )", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " + ( & & ) + | ( & ) + | ( & ( | ( & & ))) +", +} + +{ + +"prereq": " | ( & )", +} + +{ + +"prereq": " + ( | ( & & )) & + ( + + | + | ( & ( | )) + | ( & ) + ) & ( | ) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " +// RIBBON & + + | + | + | + | + | ( & ) + | +", +} + +{ + +"prereq": "", +} + +// .---------------------' +// | Area 2 : Island Core +// '---------------------. + + +// Ravine + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "( | ) & ( + // going up the long chasm + & ( | ( & )) + )", +} + +{ + +"prereq": "", // semisolid +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " +// Jumping up the chasm +( & & & ( | )) +| ( & & & ( | ( & ))) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " +// From save room up to ledge below egg +( + ( & & (( & ) | )) + | ( & ( | )) + | ( & & ) +) +// From ledge below egg to flower ledge +& ( | | | | ) +// Jumping up hole above chocolate arena +& ( + (( | ) & ( | )) + | ( & ) + | ( & & ) + | +) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + ( & (( & ) | | )) + | + | ( & & & & ) + | ( & & & & ( | )) +", +} + + +// Park and Sky Bridge +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +// consumables do not work due to screen transition +"prereq": " & & ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + & ( + + | ( & & ) + | ( & ( + ( & ) + | ( & ) + )) +) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "IMPOSSIBLE", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | + | (( | ( & )) & ( + + | + | ( & ( & )) + | ( & & ) + )) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + & ( + (( | ) & ( + + | + | ( | ( & )) + )) + | ( & ) +) +", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " + + | + | + | + | ( & ( & )) + | ( & & ) +", +} + +{ + +// technically goes through SKY_BRIDGE_MAIN, but not really important +"prereq": " | ", +} + +{ + +"prereq": "", +} + +// .---------------------' +// | Area 3 : Northern Tundra +// '---------------------. + +// Snowland, Palace and Icy Summit +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " & ( | )", +} + +{ + +"prereq": " + ( & ) + | ( & ) + | ( & & & & ) + | ( & ( | )) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | ( & ( + (( | ( & )) & ) + | () + | ( & ( | )) // damage + maybe slide bonk + ))" +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | ( & ( | )) + | (( | ) & ) + // can probably be done with lower level items, haven't done it successfully yet. + | ( & & ) + | ( & ) + ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " + + | ( & ( | )) + | ( & & ) + | () +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | | ", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + + +// Aquarium + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "FIRE_ORB", +} + +{ + +"prereq": "FIRE_ORB", +} + +{ + +"prereq": " + & & + ( + ( & & ) // you need to disable speed + | ( & & ) + | ( & ) + | ( & ) + | ( & & & ) + | ( & ) + ) +", +} + +{ + +"prereq": " + & & ( + + | ( & & ) + | ( & ( + + | + // airdash to opposite wall and wallkick off it + | ( & ) + // aj, rwj, qd, amulet, wk + | + // wimpy, bounce + | + )) + ) +", +} + +{ + +"prereq": " | ( & )", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "IMPOSSIBLE", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & (( & ) | ( & ))", +} + +// .---------------------' +// | Area 4 : Eastern Highlands +// '---------------------. + + +// Riverbank + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " | ", +} + +{ + +"prereq": " | ( & ) | | | ( & )", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ( | )", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + + +{ + +"prereq": " & ", +} + +{ + +"prereq": " | | ( & & )", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + +{ + +"prereq": " + + | + | ( & ( | )) + | + | ( & ) // damage off spider bullets +", +} + +{ + +"prereq": " + + | + | + | + | ( & & ) +", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": " & ", +} + + +// Evernight + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ + +"prereq": "", +} + +{ \ No newline at end of file diff --git a/src/sig/MultiRando.java b/src/sig/MultiRando.java index 3f2a2d8..e6c5ff0 100644 --- a/src/sig/MultiRando.java +++ b/src/sig/MultiRando.java @@ -2,6 +2,6 @@ package sig; public class MultiRando { public static void main(String[] args) { - System.out.println("Hello World!"); + } } diff --git a/src/sig/Node.java b/src/sig/Node.java new file mode 100644 index 0000000..57f66a6 --- /dev/null +++ b/src/sig/Node.java @@ -0,0 +1,14 @@ +package sig; + +import java.util.List; + +public class Node{ + Node north; + List northR; + Node east; + List eastR; + Node west; + List westR; + Node south; + List southR; +} \ No newline at end of file diff --git a/src/sig/Restriction.java b/src/sig/Restriction.java new file mode 100644 index 0000000..a6b9144 --- /dev/null +++ b/src/sig/Restriction.java @@ -0,0 +1,59 @@ +package sig; + +public class Restriction { + private static int i=0; + final static long INTERMEDIATE_HARD = DefineBitwiseConstant(); + final static long INTERMEDIATE = DefineBitwiseConstant(); + final static long SPEED1 = DefineBitwiseConstant(); + final static long AIR_DASH = DefineBitwiseConstant(); + final static long AIR_JUMP = DefineBitwiseConstant(); + final static long EXPLOSIVES_ENEMY = DefineBitwiseConstant(); + final static long SLIDING_POWDER = DefineBitwiseConstant(); + final static long PROLOGUE_TRIGGER = DefineBitwiseConstant(); + final static long EXPLOSIVES = DefineBitwiseConstant(); + final static long HAMMER_ROLL_ZIP = DefineBitwiseConstant(); + final static long ADVANCED_VHARD = DefineBitwiseConstant(); + final static long SLIDE_ZIP = DefineBitwiseConstant(); + final static long AMULET_FOOD = DefineBitwiseConstant(); + final static long WHIRL_BONK = DefineBitwiseConstant(); + final static long RABI_SLIPPERS = DefineBitwiseConstant(); + final static long BUNNY_STRIKE = DefineBitwiseConstant(); + final static long DARKNESS = DefineBitwiseConstant(); + final static long WALL_JUMP_LV2 = DefineBitwiseConstant(); + final static long WHIRL_BONK_CANCEL = DefineBitwiseConstant(); + final static long HAMMER_ROLL = DefineBitwiseConstant(); + final static long ADVANCED_STUPID = DefineBitwiseConstant(); + final static long DOWNDRILL_SEMISOLID_CLIP = DefineBitwiseConstant(); + final static long HARD = DefineBitwiseConstant(); + final static long SLIDE_JUMP_BUNSTRIKE_CANCEL = DefineBitwiseConstant(); + final static long BUNNY_AMULET = DefineBitwiseConstant(); + final static long IMPOSSIBLE = DefineBitwiseConstant(); + final static long CARROT_SHOOTER = DefineBitwiseConstant(); + final static long CARROT_BOMB = DefineBitwiseConstant(); + final static long BACKTRACK_1 = DefineBitwiseConstant(); + final static long ADVANCED_HARD = DefineBitwiseConstant(); + final static long SPEED5 = DefineBitwiseConstant(); + final static long KOTRI_1 = DefineBitwiseConstant(); + final static long COCOA_1 = DefineBitwiseConstant(); + final static long CHAPTER_1 = DefineBitwiseConstant(); + final static long WALL_JUMP = DefineBitwiseConstant(); + final static long AIR_DASH_LV3 = DefineBitwiseConstant(); + final static long SLIDE_JUMP_BUNSTRIKE = DefineBitwiseConstant(); + final static long INTERMEDIATE_VERYHARD = DefineBitwiseConstant(); + final static long TM_PANDORA = DefineBitwiseConstant(); + final static long HALLOWEEN = DefineBitwiseConstant(); + final static long BOOST = DefineBitwiseConstant(); + final static long BOOST_MANY = DefineBitwiseConstant(); + final static long EIGHT_TILE_WALLJUMP = DefineBitwiseConstant(); + final static long TM_CHOCOLATE = DefineBitwiseConstant(); + final static long WATER_ORB = DefineBitwiseConstant(); + final static long ADVANCED = DefineBitwiseConstant(); + final static long BUNNY_AMULET_LV2 = DefineBitwiseConstant(); + final static long TWO_AMULET_FOOD = DefineBitwiseConstant(); + final static long UNDERWATER = DefineBitwiseConstant(); + final static long SPEED3 = DefineBitwiseConstant(); + final static long PIKO_HAMMER_LEVELED = DefineBitwiseConstant(); + final static long BACKTRACK_3 = DefineBitwiseConstant(); + + private static long DefineBitwiseConstant() {/*System.out.println("Restrictions reach a bit-wise value of "+Long.toBinaryString((long)Math.pow(2,i)));*/return (long)Math.pow(2,i++);} +}