worldgrid _SouthernWoodland = new GridlineObj ( 1 , 0 , 34.12 , 34.25 ) ;
worldgrid _Graveyard = new GridlineObj ( 15 , 1 , 29.85 , 29.85 ) ;
worldgrid _BeachPyramid = new GridlineObj ( 2 , 240 , 29.85 , 29.85 ) ;
worldgrid _ParkSkyHigh = new GridlineObj ( 3 , 0 , 31.25 , 31.25 ) ;
worldgrid _TownTop = new GridlineObj ( 277 , 357 , 26.25 , 27 ) ;
worldgrid _TownMain = new GridlineObj ( 277 , 392 , 26.25 , 27 ) ;
worldgrid _RabiRavine = new GridlineObj ( 402 , 250 , 31.25 , 31.25 ) ;
worldgrid _NorthernTundra = new GridlineObj ( 1 , 1 , 29.87 , 30.00 ) ;
worldgrid _EasternHighlands = new GridlineObj ( 0 , 0 , 29.95 , 29.95 ) ;
worldgrid _VolcanicCanerns = new GridlineObj ( 0 , 0 , 32.12 , 32.12 ) ; //The "typo" is actually a reference/easter egg. Kind of a meme. Ask around the community if interested.
worldgrid _Plurkwood = new GridlineObj ( 1 , 169 , 22.25 , 22.25 ) ;
worldgrid _SystemInterior = new GridlineObj ( 242 , 303 , 31.25 , 31.25 ) ;
/ *
BEGINNER
INTERMEDIATE
ADVANCED
HARDCORE
* /
var DifficultyLevel = {
BEGINNER : 1 ,
INTERMEDIATE : 2 ,
ADVANCED : 3 ,
HARDCORE : 4
} ;
DIFFICULTY = DifficultyLevel . BEGINNER ;
var NONE = true ;
var EXPLOSIVES _ENEMY = BLOCK _CLIP = SLIDING _POWDER = ITM = DOWNDRILL _SEMISOLID _CLIP = RABI _SLIPPERS = AIR _JUMP = WALL _JUMP = ITM _HARD = AIR _DASH = SPEED5 = ADV _STUPID = WALL _JUMP _LV2 = WHIRL _BONK _CANCEL = SLIDE _JUMP _BUNSTRIKE _CANCEL = BUNNY _WHIRL = BUNNY _AMULET = PIKO _HAMMER = SLIDE _JUMP _BUNSTRIKE = ADV _VHARD =
WHIRL _BONK = AIR _DASH _LV3 = SPEED3 = SPEED2 = EXPLOSIVES = CARROT _BOMB = CARROT _SHOOTER = HAMMER _ROLL _ZIP = ADV _HARD = SLIDE _ZIP = HARD = SPEED1 = ITM _VHARD = DARKNESS = LIGHT _ORB = WATER _ORB = UNDERWATER = CARROT _SHOOTER _ENTRY = DOWNDRILL _SEMISOLID _CLIP = RIVERBANK _LOWER _HEALTH _UP _ROOM = PIKO _HAMMER _LEVELED = MANY _AMULET _FOOD = THREE _AMULET _FOOD = FIRE _ORB = TWO _AMULET _FOOD = POST _GAME = IMPOSSIBLE = AMULET _FOOD = BUNNY _STRIKE = HAMMER _ROLL = false ;
var ASHURI _2 = TOWN _MAIN = PROLOGUE _TRIGGER = BOOST = CHARGE _RING = TM _CHOCOLATE = TM _VANILLA = TM _CICINI = TM _SYARO = TM _LILITH = SLIDING _POWDER = COCOA _1 = KOTRI _1 = CHAPTER _1 = POST _IRISU = BOSS _KEKE _BUNNY = PLURKWOOD = true ;
Item = {
"CarrotBomb" : false ,
"CarrotShooter" : false ,
"SlidingPowder" : false ,
"RabiSlippers" : false ,
"AirJump" : false ,
"WallJump" : false ,
"BunnyWhirl" : false ,
"BunnyAmulet" : false ,
"BunnyStrike" : false ,
"PikoHammer" : false ,
"LightOrb" : false ,
"WaterOrb" : false ,
"FireOrb" : false ,
"AirDash" : false ,
"HammerRoll" : false
}
function EvaluateConstraints ( ) {
NONE = true ;
ITM = HARD = DIFFICULTY >= DifficultyLevel . INTERMEDIATE ;
ITM _HARD = ADV _HARD = DIFFICULTY >= DifficultyLevel . INTERMEDIATE ;
ADV _VHARD = ITM _VHARD = DIFFICULTY >= DifficultyLevel . ADVANCED ;
ADV _STUPID = DIFFICULTY >= DifficultyLevel . HARDCORE ;
CARROT _BOMB = Item [ "CarrotBomb" ] ;
CARROT _SHOOTER = Item [ "CarrotShooter" ] ;
EXPLOSIVES = CARROT _BOMB || CARROT _SHOOTER ;
EXPLOSIVES _ENEMY = CARROT _BOMB || ( CARROT _SHOOTER && ITM ) ;
BLOCK _CLIP = ITM ;
SLIDING _POWDER = Item [ "SlidingPowder" ] ;
DOWNDRILL _SEMISOLID _CLIP = ITM ;
RABI _SLIPPERS = Item [ "RabiSlippers" ] ;
AIR _JUMP = Item [ "AirJump" ] ;
WALL _JUMP = WALL _JUMP _LV2 = Item [ "WallJump" ] ;
BUNNY _WHIRL = Item [ "BunnyWhirl" ] ;
BUNNY _AMULET = Item [ "BunnyAmulet" ] ;
BUNNY _STRIKE = Item [ "BunnyStrike" ] ;
PIKO _HAMMER = PIKO _HAMMER _LEVELED = Item [ "PikoHammer" ] ;
LIGHT _ORB = Item [ "LightOrb" ] ;
WATER _ORB = Item [ "WaterOrb" ] ;
FIRE _ORB = Item [ "FireOrb" ] ;
DARKNESS = LIGHT _ORB || ITM ;
UNDERWATER = WATER _ORB || ITM ;
SPEED5 = SPEED3 = SPEED2 = SPEED1 = ADV _VHARD ;
AIR _DASH = AIR _DASH _LV3 = Item [ "AirDash" ] ;
HAMMER _ROLL = Item [ "HammerRoll" ] ;
HAMMER _ROLL _ZIP = HAMMER _ROLL && ADV _VHARD ;
WHIRL _BONK = BUNNY _WHIRL && ITM ;
WHIRL _BONK _CANCEL = BUNNY _WHIRL && BUNNY _AMULET && ITM ;
SLIDE _JUMP _BUNSTRIKE _CANCEL = BUNNY _WHIRL && BUNNY _AMULET && SLIDING _POWDER && BUNNY _STRIKE && ADV _VHARD ;
SLIDE _JUMP _BUNSTRIKE = SLIDING _POWDER && BUNNY _STRIKE && ITM ;
AMULET _FOOD = MANY _AMULET _FOOD = THREE _AMULET _FOOD = TWO _AMULET _FOOD = BUNNY _AMULET && ADV _VHARD ;
SLIDE _ZIP = SLIDING _POWDER && ADV _STUPID ;
CARROT _SHOOTER _ENTRY = CARROT _SHOOTER && ADV _VHARD ;
DOWNDRILL _SEMISOLID _CLIP = PIKO _HAMMER && ADV _VHARD ;
RIVERBANK _LOWER _HEALTH _UP _ROOM = ITM ;
}
constraints = { } ;
markers = [
new Location ( 17 , 0 , worldgrid _SouthernWoodland , "MANA_WAGER" ) ,
new Location ( 20 , 0 , worldgrid _SouthernWoodland , "EGG_FOREST_NE_PEDESTAL" ) ,
new Location ( 0 , 1 , worldgrid _SouthernWoodland , "NATURE_ORB" ) ,
new Location ( 2 , 1 , worldgrid _SouthernWoodland , "EGG_FORESTNIGHT_ARURAUNE" ) ,
new Location ( 9 , 1 , worldgrid _SouthernWoodland , "HP_UP_NORTH_FOREST" ) ,
new Location ( 13 , 1 , worldgrid _SouthernWoodland , "LIGHT_ORB" ) ,
new Location ( 18 , 1 , worldgrid _SouthernWoodland , "MP_UP_NORTHEAST_FOREST" ) ,
new Location ( 2 , 2 , worldgrid _SouthernWoodland , "PACK_UP_FOREST_NIGHT" ) ,
new Location ( 6 , 2 , worldgrid _SouthernWoodland , "EGG_FORESTNIGHT_EAST" ) ,
new Location ( 15 , 2 , worldgrid _SouthernWoodland , "EGG_FOREST_NE_LEDGE" ) ,
new Location ( 17 , 2 , worldgrid _SouthernWoodland , "REGEN_UP_EAST_FOREST" ) ,
new Location ( 6 , 3 , worldgrid _SouthernWoodland , "TOXIC_STRIKE" ) ,
new Location ( 4 , 4 , worldgrid _SouthernWoodland , "ATK_UP_FOREST_NIGHT" ) ,
new Location ( 10 , 4 , worldgrid _SouthernWoodland , "REGEN_UP_MID_FOREST" ) ,
new Location ( 12 , 4 , worldgrid _SouthernWoodland , "CARROT_BOMB" ) ,
new Location ( 6 , 5 , worldgrid _SouthernWoodland , "PIKO_HAMMER" ) ,
new Location ( 14 , 5 , worldgrid _SouthernWoodland , "HP_UP_FOREST_POST_COCOA" ) ,
new Location ( 17 , 5 , worldgrid _SouthernWoodland , "MP_UP_EAST_FOREST" ) ,
new Location ( 6 , 6 , worldgrid _SouthernWoodland , "EGG_CAVE_UNDER_HAMMER" ) ,
new Location ( 7 , 6 , worldgrid _SouthernWoodland , "MP_UP_FOREST_CAVE" ) ,
new Location ( 17 , 6 , worldgrid _SouthernWoodland , "PACK_UP_EAST_FOREST" ) ,
new Location ( 4 , 7 , worldgrid _SouthernWoodland , "MP_UP_CAVE" ) ,
new Location ( 13 , 7 , worldgrid _SouthernWoodland , "DEF_TRADE" ) ,
new Location ( 4 , 8 , worldgrid _SouthernWoodland , "PACK_UP_SPECTRAL" ) ,
new Location ( 5 , 8 , worldgrid _SouthernWoodland , "HP_UP_CAVE" ) ,
new Location ( 9 , 8 , worldgrid _SouthernWoodland , "REGEN_UP_CAVE" ) ,
new Location ( 13 , 8 , worldgrid _SouthernWoodland , "EGG_CAVE_COCOA" ) ,
new Location ( 3 , 9 , worldgrid _SouthernWoodland , "HP_UP_WEST_SPECTRAL" ) ,
new Location ( 10 , 9 , worldgrid _SouthernWoodland , "MP_UP_MID_SPECTRAL" ) ,
new Location ( 16 , 9 , worldgrid _SouthernWoodland , "CHARGE_RING" ) ,
new Location ( 4 , 10 , worldgrid _SouthernWoodland , "EGG_SPECTRAL_WEST" ) ,
new Location ( 9 , 10 , worldgrid _SouthernWoodland , "WALL_JUMP" ) ,
new Location ( 12 , 10 , worldgrid _SouthernWoodland , "EGG_SPECTRAL_SLIDE" ) ,
new Location ( 17 , 10 , worldgrid _SouthernWoodland , "MP_UP_CICINI" ) ,
new Location ( 8 , 11 , worldgrid _SouthernWoodland , "TOUGH_SKIN" ) ,
new Location ( 11 , 11 , worldgrid _SouthernWoodland , "HP_UP_MID_SPECTRAL" ) ,
new Location ( 17 , 11 , worldgrid _SouthernWoodland , "ARM_STRENGTH" ) ,
new Location ( 20 , 0 , worldgrid _Graveyard , "PACK_UP_SKY_ISLAND" ) ,
new Location ( 15 , 1 , worldgrid _Graveyard , "TOP_FORM" ) ,
new Location ( 18 , 1 , worldgrid _Graveyard , "PURE_LOVE" ) ,
new Location ( 0 , 3 , worldgrid _Graveyard , "SURVIVAL" ) ,
new Location ( 7 , 3 , worldgrid _Graveyard , "EGG_GRAVEYARD_NEAR_LIBRARY" ) ,
new Location ( 19 , 3 , worldgrid _Graveyard , "EGG_SKY_TOWN" ) ,
new Location ( 21 , 3 , worldgrid _Graveyard , "REGEN_UP_SKY_ISLAND" ) ,
new Location ( 3 , 4 , worldgrid _Graveyard , "HEALTH_WAGER" ) ,
new Location ( 7 , 4 , worldgrid _Graveyard , "MP_UP_UPPER_GRAVEYARD" ) ,
new Location ( 9 , 4 , worldgrid _Graveyard , "CRISIS_BOOST" ) ,
new Location ( 19 , 4 , worldgrid _Graveyard , "HP_UP_SKY_ISLAND" ) ,
new Location ( 4 , 5 , worldgrid _Graveyard , "HP_UP_GRAVEYARD" ) ,
new Location ( 17 , 5 , worldgrid _Graveyard , "AIR_DASH" ) ,
new Location ( 4 , 6 , worldgrid _Graveyard , "MP_UP_GRAVEYARD_WARP" ) ,
new Location ( 7 , 6 , worldgrid _Graveyard , "AUTO_EARRINGS" ) ,
new Location ( 9 , 6 , worldgrid _Graveyard , "ATK_UP_GRAVEYARD" ) ,
new Location ( 15 , 0 , worldgrid _BeachPyramid , "PACK_UP_BEACH" ) ,
new Location ( 14 , 2 , worldgrid _BeachPyramid , "EGG_PYRAMID_BEACH" ) ,
new Location ( 16 , 2 , worldgrid _BeachPyramid , "HP_UP_PYRAMID_ENTRANCE" ) ,
new Location ( 6 , 3 , worldgrid _BeachPyramid , "SUNNY_BEAM" ) ,
new Location ( 12 , 3 , worldgrid _BeachPyramid , "HP_UP_BEACH" ) ,
new Location ( 19 , 3 , worldgrid _BeachPyramid , "MP_UP_BEACH_TUNNEL" ) ,
new Location ( 22 , 3 , worldgrid _BeachPyramid , "MP_UP_BEACH_PILLAR" ) ,
new Location ( 4 , 4 , worldgrid _BeachPyramid , "ATK_UP_BEACH_CAVE" ) ,
new Location ( 9 , 4 , worldgrid _BeachPyramid , "HEALTH_PLUS" ) ,
new Location ( 11 , 4 , worldgrid _BeachPyramid , "HP_UP_INNER_PYRAMID" ) ,
new Location ( 14 , 5 , worldgrid _BeachPyramid , "ARMORED" ) ,
new Location ( 17 , 5 , worldgrid _BeachPyramid , "MP_UP_PYRAMID_BOMBBLOCK_ROOM" ) ,
new Location ( 19 , 5 , worldgrid _BeachPyramid , "HOURGLASS" ) ,
new Location ( 13 , 6 , worldgrid _BeachPyramid , "PACK_UP_PYRAMID" ) ,
new Location ( 16 , 6 , worldgrid _BeachPyramid , "EGG_PYRAMID_LOWER" ) ,
new Location ( 18 , 6 , worldgrid _BeachPyramid , "REGEN_UP_PYRAMID" ) ,
new Location ( 2 , 7 , worldgrid _BeachPyramid , "EGG_BEACH_TO_AQUARIUM" ) ,
new Location ( 10 , 7 , worldgrid _BeachPyramid , "MP_UP_PYRAMID_DARK_ROOM" ) ,
new Location ( 13 , 7 , worldgrid _BeachPyramid , "ATK_UP_PYRAMID" ) ,
new Location ( 14 , 7 , worldgrid _BeachPyramid , "CHAOS_ROD" ) ,
new Location ( 6 , 0 , worldgrid _ParkSkyHigh , "EGG_SKY_BRIDGE_WARP" ) ,
new Location ( 5 , 1 , worldgrid _ParkSkyHigh , "MP_UP_SKY_BRIDGE" ) ,
new Location ( 7 , 1 , worldgrid _ParkSkyHigh , "HP_UP_SKY_BRIDGE" ) ,
new Location ( 11 , 2 , worldgrid _ParkSkyHigh , "LUCKY_SEVEN" ) ,
new Location ( 11 , 3 , worldgrid _ParkSkyHigh , "EGG_SKY_BRIDGE_BY_VANILLA" ) ,
new Location ( 14 , 3 , worldgrid _ParkSkyHigh , "ATK_UP_VANILLA" ) ,
new Location ( 4 , 4 , worldgrid _ParkSkyHigh , "HEALTH_SURGE" ) ,
new Location ( 2 , 5 , worldgrid _ParkSkyHigh , "ATK_UP_PARK" ) ,
new Location ( 7 , 5 , worldgrid _ParkSkyHigh , "HEX_CANCEL" ) ,
new Location ( 8 , 5 , worldgrid _ParkSkyHigh , "PACK_UP_SKY_BRIDGE" ) ,
new Location ( 3 , 7 , worldgrid _ParkSkyHigh , "REGEN_UP_PARK" ) ,
new Location ( 2 , 8 , worldgrid _ParkSkyHigh , "ATK_TRADE" ) ,
new Location ( 9 , 8 , worldgrid _ParkSkyHigh , "REGEN_UP_SKY_BRIDGE" ) ,
new Location ( 6 , 9 , worldgrid _ParkSkyHigh , "MP_UP_PARK" ) ,
new Location ( 1 , 11 , worldgrid _ParkSkyHigh , "EGG_PARK_SPIKES" ) ,
new Location ( 2 , 12 , worldgrid _ParkSkyHigh , "HP_UP_PARK" ) ,
new Location ( 3 , 13 , worldgrid _ParkSkyHigh , "EGG_UPRPRC_BASE" ) ,
new Location ( 6 , 13 , worldgrid _ParkSkyHigh , "MP_UP_UPRPRC_HQ" ) ,
new Location ( 3 , 14 , worldgrid _ParkSkyHigh , "RABI_SLIPPERS" ) ,
new Location ( 1 , 15 , worldgrid _ParkSkyHigh , "DEF_GROW" ) ,
new Location ( 2 , 15 , worldgrid _ParkSkyHigh , "EGG_PARK_GREEN_KOTRI" ) ,
//new Location(4,15,worldgrid_ParkSkyHigh, " "),
//new Location(9,15,worldgrid_ParkSkyHigh, " "),
new Location ( 0.5 , 0 , worldgrid _TownTop , "SPEED_BOOST" ) ,
new Location ( 1.5 , 0 , worldgrid _TownTop , "BUNNY_STRIKE" ) ,
//new Location(3,0,worldgrid_TownTop, " "),
new Location ( 5 , 0 , worldgrid _TownMain , "EGG_TOWN" ) ,
//new Location(7,0,worldgrid_TownMain, " "),
new Location ( 4 , 1 , worldgrid _RabiRavine , "HAMMER_WAVE" ) ,
new Location ( 6 , 1 , worldgrid _RabiRavine , "ATK_UP_NORTH_RAVINE" ) ,
new Location ( 7 , 1 , worldgrid _RabiRavine , "MP_UP_RAVINE" ) ,
new Location ( 4 , 2 , worldgrid _RabiRavine , "ATK_UP_WEST_RAVINE" ) ,
new Location ( 6 , 2 , worldgrid _RabiRavine , "EGG_RAVINE_MID" ) ,
new Location ( 4 , 3 , worldgrid _RabiRavine , "EGG_RAVINE_ABOVE_CHOCOLATE" ) ,
new Location ( 6 , 3 , worldgrid _RabiRavine , "HP_UP_MID_RAVINE" ) ,
new Location ( 8 , 3 , worldgrid _RabiRavine , "MANA_SURGE" ) ,
new Location ( 7 , 6 , worldgrid _RabiRavine , "REGEN_UP_RAVINE" ) ,
new Location ( 5 , 7 , worldgrid _RabiRavine , "HP_UP_SOUTH_RAVINE" ) ,
new Location ( 1 , 0 , worldgrid _NorthernTundra , "WATER_ORB" ) ,
new Location ( 9 , 0 , worldgrid _NorthernTundra , "GOLD_CARROT" ) ,
new Location ( 1 , 1 , worldgrid _NorthernTundra , "HP_UP_PALACE" ) ,
new Location ( 5 , 1 , worldgrid _NorthernTundra , "EGG_PALACE_BRIDGE" ) ,
new Location ( 12 , 1 , worldgrid _NorthernTundra , "ATK_UP_ICY_SUMMIT" ) ,
new Location ( 16 , 1 , worldgrid _NorthernTundra , "SUPER_CARROT" ) ,
new Location ( 6 , 2 , worldgrid _NorthernTundra , "EGG_PALACE_WALL" ) ,
new Location ( 9 , 2 , worldgrid _NorthernTundra , "PACK_UP_ICY_SUMMIT" ) ,
new Location ( 16 , 2 , worldgrid _NorthernTundra , "HP_UP_ICY_SUMMIT" ) ,
new Location ( 3 , 3 , worldgrid _NorthernTundra , "ATK_UP_PALACE" ) ,
new Location ( 5 , 3 , worldgrid _NorthernTundra , "REGEN_UP_PALACE" ) ,
new Location ( 11 , 3 , worldgrid _NorthernTundra , "EGG_ICY_SUMMIT_NIXIE" ) ,
//new Location(1,4,worldgrid_NorthernTundra, " "),
new Location ( 5 , 4 , worldgrid _NorthernTundra , "STAMINA_PLUS" ) ,
new Location ( 15 , 4 , worldgrid _NorthernTundra , "MP_UP_ICY_SUMMIT" ) ,
new Location ( 17 , 4 , worldgrid _NorthernTundra , "EGG_ICY_SUMMIT_WARP" ) ,
new Location ( 6 , 5 , worldgrid _NorthernTundra , "MP_UP_PALACE" ) ,
new Location ( 9 , 6 , worldgrid _NorthernTundra , "EGG_SNOWLAND_WARP" ) ,
new Location ( 2 , 7 , worldgrid _NorthernTundra , "EGG_SNOWLAND_TO_EVERNIGHT" ) ,
new Location ( 4 , 7 , worldgrid _NorthernTundra , "ATK_UP_SNOWLAND" ) ,
//new Location(11,7,worldgrid_NorthernTundra, " "),
new Location ( 15 , 7 , worldgrid _NorthernTundra , "MP_UP_SNOWLAND" ) ,
new Location ( 7 , 8 , worldgrid _NorthernTundra , "SELF_DEFENSE" ) ,
new Location ( 16 , 8 , worldgrid _NorthernTundra , "QUICK_BARRETTE" ) ,
new Location ( 21 , 8 , worldgrid _NorthernTundra , "HP_UP_SNOWLAND" ) ,
new Location ( 9 , 9 , worldgrid _NorthernTundra , "ATK_UP_UPPER_AQUARIUM" ) ,
new Location ( 17 , 9 , worldgrid _NorthernTundra , "REGEN_UP_SNOWLAND_WATER" ) ,
new Location ( 18 , 9 , worldgrid _NorthernTundra , "EGG_SNOWLAND_LAKE" ) ,
new Location ( 22 , 10 , worldgrid _NorthernTundra , "CARROT_BOOST" ) ,
new Location ( 8 , 11 , worldgrid _NorthernTundra , "HP_UP_UPPER_AQUARIUM" ) ,
new Location ( 22 , 11 , worldgrid _NorthernTundra , "REGEN_UP_AQUARIUM" ) ,
new Location ( 2 , 12 , worldgrid _NorthernTundra , "MANA_PLUS" ) ,
new Location ( 13 , 12 , worldgrid _NorthernTundra , "ATK_UP_MID_AQUARIUM" ) ,
new Location ( 22 , 12 , worldgrid _NorthernTundra , "PACK_UP_AQUARIUM" ) ,
new Location ( 1 , 13 , worldgrid _NorthernTundra , "HP_UP_WEST_AQUARIUM" ) ,
new Location ( 6 , 13 , worldgrid _NorthernTundra , "EGG_AQUARIUM" ) ,
new Location ( 20 , 13 , worldgrid _NorthernTundra , "MP_UP_AQUARIUM" ) ,
new Location ( 22 , 0 , worldgrid _EasternHighlands , "EGG_EVERNIGHT_SAYA" ) ,
new Location ( 10 , 1 , worldgrid _EasternHighlands , "SPIKE_BARRIER" ) ,
new Location ( 18 , 1 , worldgrid _EasternHighlands , "EGG_EVERNIGHT_MID" ) ,
new Location ( 19 , 1 , worldgrid _EasternHighlands , "REGEN_UP_EVERNIGHT" ) ,
new Location ( 16 , 2 , worldgrid _EasternHighlands , "ATK_UP_EVERNIGHT_UPRPRC" ) ,
new Location ( 18 , 2 , worldgrid _EasternHighlands , "PACK_UP_NORTH_EVERNIGHT" ) ,
new Location ( 20 , 2 , worldgrid _EasternHighlands , "ATK_UP_EVERNIGHT" ) ,
new Location ( 14 , 3 , worldgrid _EasternHighlands , "HP_UP_EVERNIGHT" ) ,
new Location ( 23 , 3 , worldgrid _EasternHighlands , "HAMMER_ROLL" ) ,
new Location ( 8 , 4 , worldgrid _EasternHighlands , "EXPLODE_SHOT" ) ,
new Location ( 1 , 5 , worldgrid _EasternHighlands , "REGEN_UP_NORTHWEST_RIVERBANK" ) ,
new Location ( 3 , 5 , worldgrid _EasternHighlands , "EGG_RIVERBANK_SPIDER_SPIKE" ) ,
new Location ( 11 , 5 , worldgrid _EasternHighlands , "FRAME_CANCEL" ) ,
new Location ( 13 , 5 , worldgrid _EasternHighlands , "MP_UP_EVERNIGHT" ) ,
new Location ( 16 , 5 , worldgrid _EasternHighlands , "PLUS_NECKLACE" ) ,
new Location ( 3 , 6 , worldgrid _EasternHighlands , "ATK_GROW" ) ,
new Location ( 8 , 6 , worldgrid _EasternHighlands , "EGG_RIVERBANK_WALL" ) ,
new Location ( 18 , 7 , worldgrid _EasternHighlands , "PACK_UP_SOUTH_EVERNIGHT" ) ,
new Location ( 7 , 8 , worldgrid _EasternHighlands , "ATK_UP_RIVERBANK_PIT" ) ,
new Location ( 8 , 8 , worldgrid _EasternHighlands , "MP_UP_MID_RIVERBANK" ) ,
new Location ( 16 , 8 , worldgrid _EasternHighlands , "CASHBACK" ) ,
new Location ( 1 , 9 , worldgrid _EasternHighlands , "PACK_UP_RIVERBANK" ) ,
new Location ( 8 , 9 , worldgrid _EasternHighlands , "BUNNY_WHIRL" ) ,
new Location ( 10 , 9 , worldgrid _EasternHighlands , "ATK_UP_EAST_RIVERBANK" ) ,
new Location ( 12 , 9 , worldgrid _EasternHighlands , "HP_UP_RIVERBANK" ) ,
new Location ( 17 , 9 , worldgrid _EasternHighlands , "WEAKEN" ) ,
new Location ( 2 , 11 , worldgrid _EasternHighlands , "MP_UP_SOUTHWEST_RIVERBANK" ) ,
new Location ( 3 , 11 , worldgrid _EasternHighlands , "REGEN_UP_SOUTH_RIVERBANK" ) ,
new Location ( 11 , 11 , worldgrid _EasternHighlands , "HP_UP_LAB_SLIDE_TUNNEL" ) ,
new Location ( 12 , 11 , worldgrid _EasternHighlands , "MP_UP_LAB" ) ,
new Location ( 14 , 12 , worldgrid _EasternHighlands , "EGG_LAB" ) ,
new Location ( 15 , 12 , worldgrid _EasternHighlands , "HP_UP_LAB_PIT" ) ,
new Location ( 22 , 12 , worldgrid _EasternHighlands , "ATK_UP_EAST_LAB" ) ,
new Location ( 23 , 12 , worldgrid _EasternHighlands , "PACK_UP_LAB" ) ,
new Location ( 15 , 13 , worldgrid _EasternHighlands , "SLIDING_POWDER" ) ,
new Location ( 18 , 13 , worldgrid _EasternHighlands , "ATK_UP_LAB_COMPUTER" ) ,
new Location ( 16 , 0 , worldgrid _VolcanicCanerns , "EGG_VOLCANIC_NE" ) ,
new Location ( 4 , 2 , worldgrid _VolcanicCanerns , "EGG_VOLCANIC_BOMB_BUNNIES" ) ,
new Location ( 15 , 2 , worldgrid _VolcanicCanerns , "PACK_UP_VOLCANIC" ) ,
new Location ( 3 , 3 , worldgrid _VolcanicCanerns , "HP_UP_VOLCANIC" ) ,
new Location ( 14 , 3 , worldgrid _VolcanicCanerns , "EGG_VOLCANIC_FIRE_ORB" ) ,
new Location ( 14 , 6 , worldgrid _VolcanicCanerns , "FIRE_ORB" ) ,
new Location ( 21 , 11 , worldgrid _VolcanicCanerns , "EGG_VOLCANIC_BIG_DROP" ) ,
new Location ( 3 , 0 , worldgrid _Plurkwood , "P_HAIRPIN" ) ,
new Location ( 7 , 5 , worldgrid _Plurkwood , "EGG_PLURK_EAST" ) ,
new Location ( 0 , 6 , worldgrid _Plurkwood , "EGG_PLURK_CAVE" ) ,
new Location ( 0 , 12 , worldgrid _Plurkwood , "EGG_PLURK_CATS" ) ,
new Location ( 10 , 0 , worldgrid _SystemInterior , "HP_UP_CYBERSPACE" ) ,
new Location ( 11 , 1 , worldgrid _SystemInterior , "ATK_UP_CYBERSPACE" ) ,
new Location ( 1 , 2 , worldgrid _SystemInterior , "REGEN_UP_CYBERSPACE" ) ,
new Location ( 2 , 2 , worldgrid _SystemInterior , "PACK_UP_CYBERSPACE" ) ,
new Location ( 7 , 4 , worldgrid _SystemInterior , "AIR_JUMP" ) ,
new Location ( 14 , 4 , worldgrid _SystemInterior , "MP_UP_CYBERSPACE" ) ,
//new Location(5,5,worldgrid_SystemInterior, " "),
new Location ( 14 , 6 , worldgrid _SystemInterior , "EGG_SYSINT1" ) ,
] ;
openMarkers = [
] ;
function EvaluateMarkers ( ) {
for ( i = 0 ; i < markers . length ; i ++ ) {
var item = markers [ i ] . itemName ;
switch ( item ) {
case "NATURE_ORB" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_FOREST_NIGHT" : {
constraints [ item ] = ( EXPLOSIVES _ENEMY | BLOCK _CLIP ) ;
} break ;
case "HP_UP_WEST_SPECTRAL" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_FOREST_NIGHT" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_SPECTRAL" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_CAVE" : {
constraints [ item ] = SLIDING _POWDER ;
} break ;
case "HP_UP_CAVE" : {
constraints [ item ] = NONE ;
} break ;
case "BLESSED" : {
constraints [ item ] = POST _GAME ;
} break ;
case "TOXIC_STRIKE" : {
constraints [ item ] = NONE ;
} break ;
case "PIKO_HAMMER" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_FOREST_CAVE" : {
constraints [ item ] = SLIDING _POWDER ;
} break ;
case "TOUGH_SKIN" : {
constraints [ item ] = ASHURI _2 & TOWN _MAIN ;
} break ;
case "REGEN_UP_CAVE" : {
constraints [ item ] = ( EXPLOSIVES _ENEMY | ITM ) & SLIDING _POWDER ;
} break ;
case "HP_UP_NORTH_FOREST" : {
constraints [ item ] =
( ( EXPLOSIVES _ENEMY & SLIDING _POWDER ) | DOWNDRILL _SEMISOLID _CLIP ) ;
} break ;
case "WALL_JUMP" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_MID_FOREST" : {
constraints [ item ] =
( ITM _HARD & ( WALL _JUMP _LV2 | WHIRL _BONK _CANCEL ) )
| AIR _JUMP
| ( ( RABI _SLIPPERS | SLIDE _JUMP _BUNSTRIKE _CANCEL ) & WALL _JUMP _LV2 ) ;
} break ;
case "MP_UP_MID_SPECTRAL" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_MID_SPECTRAL" : {
constraints [ item ] = NONE ;
} break ;
case "CARROT_BOMB" : {
constraints [ item ] = NONE ;
} break ;
case "DEF_TRADE" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "LIGHT_ORB" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_FOREST_POST_COCOA" : {
constraints [ item ] = PIKO _HAMMER | EXPLOSIVES _ENEMY ;
} break ;
case "CHARGE_RING" : {
constraints [ item ] = NONE ;
} break ;
case "ARM_STRENGTH" : {
constraints [ item ] = AIR _JUMP | ( SLIDE _JUMP _BUNSTRIKE | AIR _DASH | AIR _JUMP | ( ADV _VHARD & AMULET _FOOD ) ) ;
} break ;
case "REGEN_UP_EAST_FOREST" : {
constraints [ item ] = NONE ;
} break ;
case "MANA_WAGER" : {
constraints [ item ] =
WHIRL _BONK
| ( AIR _JUMP & ( RABI _SLIPPERS | ITM _HARD ) )
| ( AIR _DASH & ( RABI _SLIPPERS | SLIDE _JUMP _BUNSTRIKE _CANCEL ) )
// 4 tile corner rwj, airdash, wallkick, amulet cancel
| ( ADV _VHARD & AIR _DASH _LV3 & BUNNY _AMULET )
// slide bonk off big bunny
| ( ADV _STUPID & SLIDING _POWDER & RABI _SLIPPERS ) ;
} break ;
case "MP_UP_EAST_FOREST" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_EAST_FOREST" : {
constraints [ item ] = ( PIKO _HAMMER | EXPLOSIVES _ENEMY ) & SLIDING _POWDER ;
} break ;
case "MP_UP_CICINI" : {
constraints [ item ] = ( COCOA _1 & KOTRI _1 & CHAPTER _1 ) | ( AIR _JUMP
| SLIDE _JUMP _BUNSTRIKE _CANCEL
| ( ITM _HARD & ( WALL _JUMP _LV2 | AIR _DASH ) )
| ( RABI _SLIPPERS & ( ADV _VHARD | ( ADV _HARD & SPEED3 ) ) )
| ( ADV _STUPID & PROLOGUE _TRIGGER & SPEED3 ) ) ;
} break ;
case "MP_UP_NORTHEAST_FOREST" : {
constraints [ item ] = EXPLOSIVES _ENEMY & SLIDING _POWDER ;
} break ;
case "SURVIVAL" : {
constraints [ item ] = NONE ;
} break ;
case "HEALTH_WAGER" : {
constraints [ item ] =
( AIR _JUMP & AIR _DASH )
| ( AIR _JUMP & ITM _HARD )
| ( AIR _DASH _LV3 & (
ADV _VHARD | ( ITM _HARD & ( WALL _JUMP | BUNNY _AMULET ) )
) )
| ( AIR _DASH & ADV _STUPID )
| ( ADV _VHARD & BUNNY _STRIKE & BUNNY _AMULET ) ;
} break ;
case "ATK_UP_BEACH_CAVE" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_GRAVEYARD_WARP" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "HP_UP_GRAVEYARD" : {
constraints [ item ] = NONE ;
} break ;
case "SUNNY_BEAM" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_UPPER_GRAVEYARD" : {
constraints [ item ] =
// Getting onto the ledge
( AIR _JUMP | AIR _DASH | ( ITM _HARD & ( AMULET _FOOD | BUNNY _STRIKE ) ) )
& ( CARROT _BOMB | BLOCK _CLIP ) ;
} break ;
case "AUTO_EARRINGS" : {
constraints [ item ] = NONE ;
} break ;
case "AUTO_TRIGGER" : {
constraints [ item ] = POST _GAME & IMPOSSIBLE ;
} break ;
case "HEALTH_PLUS" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_PYRAMID_DARK_ROOM" : {
constraints [ item ] = DARKNESS ;
} break ;
case "CRISIS_BOOST" : {
constraints [ item ] =
( AIR _JUMP & ( RABI _SLIPPERS | ITM _HARD ) )
| ( AIR _DASH & ( RABI _SLIPPERS | SLIDE _JUMP _BUNSTRIKE _CANCEL ) ) ;
} break ;
case "ATK_UP_GRAVEYARD" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "HP_UP_INNER_PYRAMID" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "HP_UP_BEACH" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "ATK_UP_PYRAMID" : {
constraints [ item ] = CARROT _BOMB ;
} break ;
case "PACK_UP_PYRAMID" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "ARMORED" : {
constraints [ item ] = NONE ;
} break ;
case "CHAOS_ROD" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_BEACH" : {
constraints [ item ] = EXPLOSIVES _ENEMY | BLOCK _CLIP ;
} break ;
case "TOP_FORM" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_PYRAMID_ENTRANCE" : {
constraints [ item ] = CARROT _BOMB | ( CARROT _SHOOTER & BOOST & ADV _HARD ) ;
} break ;
case "HITBOX_DOWN" : {
constraints [ item ] = POST _GAME & CARROT _BOMB & IMPOSSIBLE ;
} break ;
case "MP_UP_PYRAMID_BOMBBLOCK_ROOM" : {
constraints [ item ] = NONE ;
} break ;
case "AIR_DASH" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER ;
} break ;
case "REGEN_UP_PYRAMID" : {
constraints [ item ] = NONE ;
} break ;
case "PURE_LOVE" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER ;
} break ;
case "MP_UP_BEACH_TUNNEL" : {
constraints [ item ] = NONE ;
} break ;
case "HOURGLASS" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_SKY_ISLAND" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "PACK_UP_SKY_ISLAND" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "REGEN_UP_SKY_ISLAND" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "MP_UP_BEACH_PILLAR" : {
constraints [ item ] = NONE ;
} break ;
case "DEF_GROW" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_PARK" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "ATK_TRADE" : {
constraints [ item ] = EXPLOSIVES ;
} break ;
case "HP_UP_PARK" : {
constraints [ item ] = EXPLOSIVES _ENEMY ;
} break ;
case "RABI_SLIPPERS" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_PARK" : {
constraints [ item ] = SLIDING _POWDER | HAMMER _ROLL _ZIP ;
} break ;
case "HEALTH_SURGE" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_SKY_BRIDGE" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER
} break ;
case "MP_UP_UPRPRC_HQ" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_PARK" : {
constraints [ item ] = RABI _SLIPPERS | SLIDING _POWDER | AIR _DASH | AIR _JUMP | ( ITM & SPEED2 ) | ( ADV _VHARD & AMULET _FOOD )
} break ;
case "HEX_CANCEL" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_SKY_BRIDGE" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_SKY_BRIDGE" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_SKY_BRIDGE" : {
constraints [ item ] = NONE ;
} break ;
case "LUCKY_SEVEN" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_VANILLA" : {
constraints [ item ] =
( CARROT _BOMB | ( CARROT _SHOOTER & BOOST & ADV _HARD ) ) &
SLIDING _POWDER ;
} break ;
case "HAMMER_WAVE" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_WEST_RAVINE" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_SOUTH_RAVINE" : {
constraints [ item ] = EXPLOSIVES _ENEMY & ( SLIDING _POWDER | HAMMER _ROLL _ZIP ) ;
} break ;
case "ATK_UP_NORTH_RAVINE" : {
constraints [ item ] = EXPLOSIVES | BLOCK _CLIP
} break ;
case "HP_UP_MID_RAVINE" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "MP_UP_RAVINE" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "REGEN_UP_RAVINE" : {
// cramped 2 tile zip in and out
constraints [ item ] = EXPLOSIVES | ( ADV _STUPID & SLIDE _ZIP ) ;
} break ;
case "MANA_SURGE" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_PALACE" : {
constraints [ item ] = NONE ;
} break ;
case "WATER_ORB" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_WEST_AQUARIUM" : {
constraints [ item ] = DARKNESS & EXPLOSIVES } break ;
case "MANA_PLUS" : {
constraints [ item ] = DARKNESS
} break ;
case "ATK_UP_PALACE" : {
constraints [ item ] = FIRE _ORB
} break ;
case "ATK_UP_SNOWLAND" : {
constraints [ item ] = EXPLOSIVES _ENEMY & ( SLIDING _POWDER | HAMMER _ROLL | BLOCK _CLIP )
} break ;
case "REGEN_UP_PALACE" : {
constraints [ item ] =
DARKNESS &
(
SLIDE _JUMP _BUNSTRIKE
| WHIRL _BONK
| AIR _DASH
| AIR _JUMP
// rwj left wall, wallkick overhang
| ( RABI _SLIPPERS & ( ( ITM _HARD & SPEED2 ) | ADV _STUPID ) )
// wimpy right corner, bounce left wall, amulet (similar to spike barrier)
| ( ADV _STUPID & AMULET _FOOD )
)
} break ;
case "STAMINA_PLUS" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "MP_UP_PALACE" : {
constraints [ item ] = NONE ;
} break ;
case "SELF_DEFENSE" : {
constraints [ item ] = SLIDING _POWDER & UNDERWATER ;
} break ;
case "HP_UP_UPPER_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "GOLD_CARROT" : {
constraints [ item ] =
AIR _JUMP
| ( WALL _JUMP _LV2 & (
WHIRL _BONK
| ( AIR _DASH & HARD )
| SLIDE _JUMP _BUNSTRIKE
| ( RABI _SLIPPERS & (
SLIDING _POWDER
| ( SPEED1 & ITM _HARD )
| ( AMULET _FOOD & ADV _STUPID )
) )
) )
} break ;
case "ATK_UP_UPPER_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_ICY_SUMMIT" : {
constraints [ item ] = AIR _JUMP | AIR _DASH | ( WHIRL _BONK & ADV _VHARD )
} break ;
case "ATK_UP_ICY_SUMMIT" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "ATK_UP_MID_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_ICY_SUMMIT" : {
constraints [ item ] = ADV _STUPID | RABI _SLIPPERS | AIR _JUMP | WALL _JUMP | WHIRL _BONK | ( SPEED1 & ITM _VHARD ) | ( SLIDING _POWDER | HAMMER _ROLL _ZIP )
} break ;
case "MP_UP_SNOWLAND" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "QUICK_BARRETTE" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_ICY_SUMMIT" : {
constraints [ item ] = NONE ;
} break ;
case "SUPER_CARROT" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "REGEN_UP_SNOWLAND_WATER" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_SNOWLAND" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "CARROT_BOOST" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_AQUARIUM" : {
constraints [ item ] = SLIDING _POWDER
} break ;
case "PACK_UP_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_NORTHWEST_RIVERBANK" : {
constraints [ item ] = NONE ;
} break ;
case "PACK_UP_RIVERBANK" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_SOUTHWEST_RIVERBANK" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "ATK_GROW" : {
constraints [ item ] = NONE ;
} break ;
case "REGEN_UP_SOUTH_RIVERBANK" : {
constraints [ item ] = DARKNESS & UNDERWATER & EXPLOSIVES
} break ;
case "ATK_UP_RIVERBANK_PIT" : {
constraints [ item ] = NONE ;
} break ;
case "BUNNY_WHIRL" : {
constraints [ item ] =
PIKO _HAMMER | ( CARROT _SHOOTER & BOOST & ADV _HARD )
// slide zip from bomb block slide tunnel in room to the left
| SLIDE _ZIP ;
} break ;
case "EXPLODE_SHOT" : {
constraints [ item ] = NONE ;
} break ;
case "MP_UP_MID_RIVERBANK" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "ATK_UP_EAST_RIVERBANK" : {
constraints [ item ] =
DOWNDRILL _SEMISOLID _CLIP
// A bit of a workaround. Assumption: You can walk from riverbank main to health room, unconstrained.
| ( EXPLOSIVES & RIVERBANK _LOWER _HEALTH _UP _ROOM & SLIDING _POWDER )
} break ;
case "SPIKE_BARRIER" : {
constraints [ item ] = NONE ;
} break ;
case "FRAME_CANCEL" : {
constraints [ item ] = EXPLOSIVES _ENEMY & ( SLIDING _POWDER | HAMMER _ROLL _ZIP )
} break ;
case "HP_UP_LAB_SLIDE_TUNNEL" : {
constraints [ item ] = SLIDING _POWDER
} break ;
case "MP_UP_LAB" : {
constraints [ item ] = SLIDING _POWDER
} break ;
case "HP_UP_RIVERBANK" : {
constraints [ item ] = EXPLOSIVES _ENEMY | BUNNY _WHIRL | AIR _DASH | BLOCK _CLIP | PIKO _HAMMER _LEVELED } break ;
case "MP_UP_EVERNIGHT" : {
constraints [ item ] =
DARKNESS & SLIDING _POWDER
& (
( AIR _JUMP & ( RABI _SLIPPERS | AIR _DASH | ITM _HARD ) )
| WHIRL _BONK
| ( RABI _SLIPPERS & AIR _DASH )
| ( BUNNY _STRIKE & AIR _DASH & ITM _HARD )
| ( ADV _STUPID & THREE _AMULET _FOOD ) // wimpy, bounce, spam amulet (same as spike barrier jump)
)
} break ;
case "HP_UP_EVERNIGHT" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "HP_UP_LAB_PIT" : {
constraints [ item ] = CARROT _BOMB
} break ;
case "SLIDING_POWDER" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_EVERNIGHT_UPRPRC" : {
constraints [ item ] = SLIDING _POWDER & ( EXPLOSIVES | DOWNDRILL _SEMISOLID _CLIP )
} break ;
case "CASHBACK" : {
constraints [ item ] = NONE ;
} break ;
case "PLUS_NECKLACE" : {
constraints [ item ] = NONE ;
} break ;
case "WEAKEN" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_LAB_COMPUTER" : {
constraints [ item ] = EXPLOSIVES | BLOCK _CLIP } break ;
case "PACK_UP_SOUTH_EVERNIGHT" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "PACK_UP_NORTH_EVERNIGHT" : {
constraints [ item ] =
AIR _DASH | AIR _JUMP | SLIDE _JUMP _BUNSTRIKE
| ( ADV _VHARD & RABI _SLIPPERS & AMULET _FOOD )
| ( ADV _STUPID & WALL _JUMP _LV2 & MANY _AMULET _FOOD )
} break ;
case "REGEN_UP_EVERNIGHT" : {
constraints [ item ] = EXPLOSIVES
} break ;
case "ATK_UP_EVERNIGHT" : {
constraints [ item ] = NONE ;
} break ;
case "ATK_UP_EAST_LAB" : {
constraints [ item ] = EXPLOSIVES _ENEMY & (
AIR _JUMP
| AIR _DASH
| ( RABI _SLIPPERS & ADV _VHARD )
| ( RABI _SLIPPERS & SLIDE _JUMP _BUNSTRIKE )
) | ( EXPLOSIVES _ENEMY & HAMMER _ROLL _ZIP ) ;
} break ;
case "PACK_UP_LAB" : {
constraints [ item ] = NONE ;
} break ;
case "HAMMER_ROLL" : {
constraints [ item ] = BUNNY _WHIRL
} break ;
case "RIBBON_BADGE" : {
constraints [ item ] = POST _IRISU & SLIDING _POWDER } break ;
case "ERINA_BADGE" : {
constraints [ item ] = POST _IRISU & SLIDING _POWDER } break ;
case "HP_UP_VOLCANIC" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "CARROT_SHOOTER" : {
constraints [ item ] = POST _GAME
} break ;
case "FIRE_ORB" : {
// 1.8 requirements
constraints [ item ] = FIRE _ORB | CARROT _BOMB | ( CARROT _SHOOTER & ( BOOST | CHARGE _RING ) )
} break ;
case "PACK_UP_VOLCANIC" : {
constraints [ item ] = EXPLOSIVES _ENEMY
} break ;
case "REGEN_UP_CYBERSPACE" : {
constraints [ item ] = ( CARROT _BOMB | ( CARROT _SHOOTER & BOOST & ADV _HARD ) ) & ( AIR _JUMP | AIR _DASH | SLIDE _JUMP _BUNSTRIKE | ADV _STUPID )
} break ;
case "PACK_UP_CYBERSPACE" : {
constraints [ item ] = NONE ;
} break ;
case "CYBER_FLOWER" : {
constraints [ item ] = POST _GAME & IMPOSSIBLE } break ;
case "AIR_JUMP" : {
constraints [ item ] = NONE ;
} break ;
case "HP_UP_CYBERSPACE" : {
constraints [ item ] =
( SLIDING _POWDER & (
CARROT _BOMB
// hammer roll zip oob, then almost blind 2 tile zip
| ( ADV _STUPID & SLIDE _ZIP & HAMMER _ROLL _ZIP )
) )
& (
( AIR _JUMP & ( RABI _SLIPPERS | ITM _HARD ) ) // 6tile airjump
| ( AIR _DASH _LV3 & ITM _HARD ) // 4tile walljump, some other strange jumps
| ( AIR _DASH & ADV _VHARD ) // (needs slide) 4tile walljump + weird jump at end
| ( WALL _JUMP _LV2 & (
( RABI _SLIPPERS & ADV _VHARD ) // buffered wall launch
| ADV _STUPID // (needs slide) two slide bonks, one buffered wall launch
) )
| ( WHIRL _BONK & ITM _VHARD ) // 3 buffered whirlbonks. last one is tight
)
} break ;
case "ATK_UP_CYBERSPACE" : {
constraints [ item ] = CARROT _BOMB | ( CARROT _SHOOTER & BOOST & ADV _HARD )
} break ;
case "MP_UP_CYBERSPACE" : {
constraints [ item ] = NONE ;
} break ;
// EGGS
case "EGG_CAVE_COCOA" : {
constraints [ item ] = ADV _STUPID | EXPLOSIVES _ENEMY } break ;
case "EGG_CAVE_UNDER_HAMMER" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_FOREST_NE_LEDGE" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_FOREST_NE_PEDESTAL" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_FORESTNIGHT_ARURAUNE" : {
constraints [ item ] = DARKNESS & EXPLOSIVES } break ;
case "EGG_FORESTNIGHT_EAST" : {
constraints [ item ] = DARKNESS & EXPLOSIVES } break ;
case "EGG_RUMI" : {
constraints [ item ] = POST _GAME
} break ;
case "EGG_SPECTRAL_SLIDE" : {
constraints [ item ] = ( SLIDING _POWDER & COCOA _1 & KOTRI _1 & CHAPTER _1 ) | ( SLIDING _POWDER & (
AIR _JUMP
| SLIDE _JUMP _BUNSTRIKE _CANCEL
| ( ITM _HARD & ( WALL _JUMP _LV2 | AIR _DASH ) )
| ( RABI _SLIPPERS & ( ADV _VHARD | ( ADV _HARD & SPEED3 ) ) )
| ( ADV _STUPID & SPEED3 )
) )
} break ;
case "EGG_SPECTRAL_WEST" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_BEACH_TO_AQUARIUM" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_GRAVEYARD_NEAR_LIBRARY" : {
constraints [ item ] =
AIR _JUMP
| AIR _DASH
| SLIDE _JUMP _BUNSTRIKE
| ( SLIDING _POWDER & ( RABI _SLIPPERS | ( ADV _VHARD & SPEED5 ) | ( ADV _STUPID & TWO _AMULET _FOOD ) ) )
} break ;
case "EGG_HALLOWEEN_CICINI_ROOM" : {
constraints [ item ] =
EXPLOSIVES & (
SLIDE _ZIP
| HAMMER _ROLL _ZIP
| ( CARROT _SHOOTER & BOOST & SLIDING _POWDER )
| ( TM _CHOCOLATE & TM _VANILLA & TM _CICINI & TM _SYARO & TM _LILITH & SLIDING _POWDER & BUNNY _WHIRL )
)
} break ;
case "EGG_HALLOWEEN_LEFT_PILLAR" : {
constraints [ item ] = AIR _JUMP | RABI _SLIPPERS | SLIDING _POWDER | BUNNY _WHIRL } break ;
case "EGG_HALLOWEEN_MID" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER
} break ;
case "EGG_HALLOWEEN_NEAR_BOSS" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_HALLOWEEN_PAST_PILLARS1" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_HALLOWEEN_PAST_PILLARS2" : {
constraints [ item ] =
( BUNNY _WHIRL & AIR _DASH _LV3 & ( ADV _VHARD | AIR _JUMP ) )
| ( BUNNY _WHIRL & AIR _JUMP & WALL _JUMP _LV2 & ADV ) | ( ADV _STUPID & SLIDE _ZIP & EXPLOSIVES _ENEMY & BUNNY _AMULET _LV2 &
BUNNY _STRIKE & AIR _JUMP & WALL _JUMP _LV2 & AIR _DASH )
} break ;
case "EGG_HALLOWEEN_RIGHT_PILLAR" : {
constraints [ item ] = AIR _JUMP | RABI _SLIPPERS | SLIDING _POWDER | BUNNY _WHIRL } break ;
case "EGG_HALLOWEEN_SW_SLIDE" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER
} break ;
case "EGG_HALLOWEEN_WARP_ZONE" : {
constraints [ item ] =
WHIRL _BONK
| ( AIR _JUMP & ( AIR _DASH | ADV _STUPID ) )
| ( ADV _STUPID & AIR _DASH & WALL _JUMP _LV2 & BUNNY _AMULET _LV2 & (
SLIDE _JUMP _BUNSTRIKE _CANCEL
| ( RABI _SLIPPERS & SLIDING _POWDER )
// probably speed something
) )
} break ;
case "EGG_HALLOWEEN_WEST" : {
constraints [ item ] =
//SLIDING_POWDER & DARKNESS & (FIRE_ORB | (ADV_HARD & RIBBON)) &
SLIDING _POWDER & DARKNESS & ( FIRE _ORB | ADV _HARD ) &
( BUNNY _WHIRL | (
CARROT _SHOOTER
& BOOST _MANY
& ( CARROT _BOMB | PIKO _HAMMER )
& ADV _STUPID
) )
} break ;
case "EGG_LIBRARY" : {
constraints [ item ] = POST _GAME & IMPOSSIBLE } break ;
case "EGG_PYRAMID_LOWER" : {
constraints [ item ] = EXPLOSIVES } break ;
case "EGG_PYRAMID_BEACH" : {
constraints [ item ] = ( ADV _STUPID & AMULET _FOOD ) | EXPLOSIVES | AIR _JUMP | AIR _DASH } break ;
case "EGG_SKY_TOWN" : {
constraints [ item ] = EXPLOSIVES } break ;
case "EGG_PARK_SPIKES" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_PARK_GREEN_KOTRI" : {
constraints [ item ] =
WHIRL _BONK | AIR _JUMP | AIR _DASH
| ( RABI _SLIPPERS & SLIDE _JUMP _BUNSTRIKE )
| ( ADV _VHARD & (
( RABI _SLIPPERS & AMULET _FOOD )
| SLIDING _POWDER // slide bonk off stone
) )
} break ;
case "EGG_UPRPRC_BASE" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_SKY_BRIDGE_WARP" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_SKY_BRIDGE_BY_VANILLA" : {
constraints [ item ] = CARROT _BOMB } break ;
case "EGG_RAVINE_ABOVE_CHOCOLATE" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_RAVINE_MID" : {
constraints [ item ] = EXPLOSIVES & SLIDING _POWDER
} break ;
case "EGG_SNOWLAND_TO_EVERNIGHT" : {
constraints [ item ] = EXPLOSIVES } break ;
case "EGG_PALACE_BRIDGE" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_AQUARIUM" : {
constraints [ item ] = DARKNESS | SLIDING _POWDER } break ;
case "EGG_PALACE_WALL" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_SNOWLAND_WARP" : {
constraints [ item ] = RABI _SLIPPERS | AIR _JUMP | AIR _DASH | ADV _HARD } break ;
case "EGG_ICY_SUMMIT_NIXIE" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_ICY_SUMMIT_WARP" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_SNOWLAND_LAKE" : {
constraints [ item ] =
AIR _JUMP | WATER _ORB | WHIRL _BONK | WALL _JUMP _LV2
| ( WALL _JUMP & ( RABI _SLIPPERS | ( AIR _DASH & ITM _HARD ) ) )
| ( ADV _STUPID & MANY _AMULET _FOOD )
} break ;
case "EGG_RIVERBANK_SPIDER_SPIKE" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_RIVERBANK_WALL" : {
constraints [ item ] =
WHIRL _BONK | AIR _JUMP | AIR _DASH | SLIDING _POWDER
| ( ADV _VHARD & RABI _SLIPPERS & AMULET _FOOD )
| ( ADV _STUPID & WALL _JUMP _LV2 & TWO _AMULET _FOOD )
} break ;
case "EGG_LAB" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_EVERNIGHT_MID" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_EVERNIGHT_SAYA" : {
constraints [ item ] =
ADV _STUPID // softlock potential. get item via saya blocks
| AIR _JUMP
| SLIDE _JUMP _BUNSTRIKE
| WHIRL _BONK
| ( RABI _SLIPPERS & (
AIR _DASH _LV3
| ( AIR _DASH & ( ( SPEED2 & ITM _HARD ) | ( SPEED1 & ADV _VHARD ) ) )
) )
} break ;
case "EGG_TOWN" : {
constraints [ item ] = AIR _JUMP & ( RABI _SLIPPERS | SLIDE _JUMP _BUNSTRIKE _CANCEL ) } break ;
case "EGG_PLURK_EAST" : {
constraints [ item ] = PLURKWOOD } break ;
case "EGG_PLURK_CAVE" : {
constraints [ item ] = PLURKWOOD & EXPLOSIVES _ENEMY } break ;
case "EGG_PLURK_CATS" : {
constraints [ item ] = PLURKWOOD } break ;
case "EGG_VOLCANIC_BOMB_BUNNIES" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_MEMORIES_SYSINT" : {
constraints [ item ] = POST _GAME & EXPLOSIVES _ENEMY } break ;
case "EGG_MEMORIES_RAVINE" : {
constraints [ item ] = POST _GAME & EXPLOSIVES _ENEMY } break ;
case "EGG_VOLCANIC_FIRE_ORB" : {
constraints [ item ] = EXPLOSIVES _ENEMY } break ;
case "EGG_VOLCANIC_NE" : {
constraints [ item ] =
AIR _JUMP | AIR _DASH | BUNNY _STRIKE |
// 0% ADV_STUPID jump: walljump off left wall, damage boost off dog, wallkick off left wall, amulet
( ADV _STUPID & AMULET _FOOD ) |
WHIRL _BONK |
( SLIDING _POWDER & ( RABI _SLIPPERS | WALL _JUMP | ITM _HARD ) ) |
( RABI _SLIPPERS & WALL _JUMP )
} break ;
case "EGG_VOLCANIC_BIG_DROP" : {
constraints [ item ] = ITM | AIR _JUMP | AIR _DASH } break ;
case "EGG_CRESPIRIT" : {
constraints [ item ] = WARP _DESTINATION } break ;
case "EGG_HOSPITAL_WALL" : {
constraints [ item ] = WARP _DESTINATION & POST _GAME & EXPLOSIVES } break ;
case "EGG_HOSPITAL_BOX" : {
constraints [ item ] = WARP _DESTINATION & POST _GAME & EXPLOSIVES } break ;
case "EGG_SYSINT1" : {
constraints [ item ] = NONE ;
} break ;
case "EGG_SYSINT2" : {
constraints [ item ] = POST _GAME & IMPOSSIBLE
} break ;
case "SPEED_BOOST" : {
constraints [ item ] = NONE ;
} break ;
case "BUNNY_STRIKE" : {
constraints [ item ] = SLIDING _POWDER } break ;
case "P_HAIRPIN" : {
constraints [ item ] = BOSS _KEKE _BUNNY
} break ;
}
if ( markers [ i ] . difficulty === null && constraints [ item ] ) {
markers [ i ] . difficulty = DIFFICULTY ;
switch ( DIFFICULTY ) {
case DifficultyLevel . BEGINNER : {
openBeginnerMarkers . push ( markers [ i ] ) ;
} break ;
case DifficultyLevel . INTERMEDIATE : {
openIntermediateMarkers . push ( markers [ i ] ) ;
} break ;
case DifficultyLevel . ADVANCED : {
openAdvancedMarkers . push ( markers [ i ] ) ;
} break ;
case DifficultyLevel . HARDCORE : {
openHardcoreMarkers . push ( markers [ i ] ) ;
} break ;
}
}
}
}
function ClearDifficultyMarkers ( ) {
for ( i = 0 ; i < markers . length ; i ++ ) {
markers [ i ] . difficulty = null ;
}
}
function UpdateConstraints ( ) {
openBeginnerMarkers = [ ] ;
openIntermediateMarkers = [ ] ;
openAdvancedMarkers = [ ] ;
openHardcoreMarkers = [ ] ;
ClearDifficultyMarkers ( ) ;
DIFFICULTY = DifficultyLevel . BEGINNER ;
EvaluateConstraints ( ) ;
EvaluateMarkers ( ) ;
DIFFICULTY = DifficultyLevel . INTERMEDIATE ;
EvaluateConstraints ( ) ;
EvaluateMarkers ( ) ;
DIFFICULTY = DifficultyLevel . ADVANCED ;
EvaluateConstraints ( ) ;
EvaluateMarkers ( ) ;
DIFFICULTY = DifficultyLevel . HARDCORE ;
EvaluateConstraints ( ) ;
EvaluateMarkers ( ) ;
drawMarkers ( ) ;
}
function drawMarkers ( ) {
var sw = document . getElementById ( "swood" ) ;
var wc = document . getElementById ( "wcoast" ) ;
var ic = document . getElementById ( "core" ) ;
var nt = document . getElementById ( "ntun" ) ;
var eh = document . getElementById ( "ehigh" ) ;
var ot = document . getElementById ( "other" ) ;
for ( i = 0 ; i < markers . length ; i ++ ) {
if ( markers [ i ] . elem == "" ) {
markers [ i ] . elem = document . createElement ( "img" ) ;
}
markers [ i ] . elem . setAttribute ( "src" , "images/marker0.png" ) ;
markers [ i ] . elem . setAttribute ( "class" , "markera" ) ;
markers [ i ] . elem . id = markers [ i ] . itemName + "(" + Math . round ( ( markers [ i ] . x - markers [ i ] . gridObj . xoffset ) / markers [ i ] . gridObj . xgrid ) + "," + Math . round ( ( markers [ i ] . y - markers [ i ] . gridObj . yoffset ) / markers [ i ] . gridObj . ygrid ) + ")" ;
markers [ i ] . elem . style . left = markers [ i ] . x + "px" ;
markers [ i ] . elem . style . top = markers [ i ] . y + "px" ;
markers [ i ] . elem . style . width = markers [ i ] . gridObj . xgrid + "px" ;
markers [ i ] . elem . style . height = markers [ i ] . gridObj . ygrid + "px" ;
markers [ i ] . elem . onclick = toggleMarker ;
markers [ i ] . elem . onmouseenter = showTooltip ;
markers [ i ] . elem . onmouseleave = hideTooltip ;
switch ( markers [ i ] . gridObj ) {
case worldgrid _SouthernWoodland : {
sw . appendChild ( markers [ i ] . elem ) ;
} break ;
case worldgrid _Graveyard :
case worldgrid _BeachPyramid : {
wc . appendChild ( markers [ i ] . elem ) ;
} break ;
case worldgrid _ParkSkyHigh :
case worldgrid _TownTop :
case worldgrid _TownMain :
case worldgrid _RabiRavine : {
ic . appendChild ( markers [ i ] . elem ) ;
} break ;
case worldgrid _NorthernTundra : {
nt . appendChild ( markers [ i ] . elem ) ;
} break ;
case worldgrid _EasternHighlands : {
eh . appendChild ( markers [ i ] . elem ) ;
} break ;
case worldgrid _VolcanicCanerns :
case worldgrid _Plurkwood :
case worldgrid _SystemInterior : {
ot . appendChild ( markers [ i ] . elem ) ;
} break ;
}
/ * i f ( i < 3 7 ) {
sw . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 37 ) && ( i <= 56 ) ) {
wc . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 57 ) && ( i <= 91 ) ) {
ic . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 92 ) && ( i <= 126 ) ) {
nt . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 127 ) && ( i <= 163 ) ) {
eh . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 164 ) && ( i <= 182 ) ) {
ot . appendChild ( markers [ i ] . elem ) ;
} else if ( ( i >= 183 ) && ( i <= 197 ) ) {
wc . appendChild ( markers [ i ] . elem ) ;
} * /
}
for ( i = 0 ; i < openBeginnerMarkers . length ; i ++ ) {
openBeginnerMarkers [ i ] . elem . setAttribute ( "class" , "markerb" ) ;
}
for ( i = 0 ; i < openIntermediateMarkers . length ; i ++ ) {
openIntermediateMarkers [ i ] . elem . setAttribute ( "class" , "markerc" ) ;
}
for ( i = 0 ; i < openAdvancedMarkers . length ; i ++ ) {
openAdvancedMarkers [ i ] . elem . setAttribute ( "class" , "markerd" ) ;
}
for ( i = 0 ; i < openHardcoreMarkers . length ; i ++ ) {
openHardcoreMarkers [ i ] . elem . setAttribute ( "class" , "markere" ) ;
}
}
activateItem = function ( pressed ) {
Item [ pressed . id ] = ! Item [ pressed . id ] ;
if ( pressed . getAttribute ( "class" ) == "off" ) {
pressed . setAttribute ( "class" , "on" ) ;
} else {
pressed . setAttribute ( "class" , "off" ) ;
}
UpdateConstraints ( ) ;
}