mirror of
https://github.com/cave-story-randomizer/cave-story-randomizer
synced 2025-07-18 01:53:42 +00:00
first pass of building the location framework
the game is organized into regions, which have various connections to other regions. each of these connections has a set of requirements. a requirement is a set of items or events which the player must have in order to fulfill the requirement. each region also has a set of item locations, which each also have a set of requirements as well as the map and event number (not all locations are complete on this front yet) for that location. ideally, the solver will traverse the regions and locations like a graph in order to ensure the game can be completed.
This commit is contained in:
parent
391666e841
commit
e8c84d3640
554
src/database/locations.lua
Normal file
554
src/database/locations.lua
Normal file
|
@ -0,0 +1,554 @@
|
||||||
|
local data = {
|
||||||
|
firstCave1 = {
|
||||||
|
connections = {
|
||||||
|
mimigaVillage = {{"weaponSN"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
firstCapsule = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Cave",
|
||||||
|
event = "#0401"
|
||||||
|
},
|
||||||
|
gunsmithChest = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Pole",
|
||||||
|
event = "#0402"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
firstCave2 = {
|
||||||
|
connections = {
|
||||||
|
mimigaVillage = {{"weaponSN"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
gunsmith = {
|
||||||
|
requirements = {"polarStar", "eventCore"},
|
||||||
|
map = "Pole",
|
||||||
|
event = "#0303"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
}
|
||||||
|
mimigaVillage = {
|
||||||
|
connections = {
|
||||||
|
firstCave2 = {{"weaponSN", "machineGun"}, {"weaponSN", "booster1"}},
|
||||||
|
arthur = {{"arthursKey"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
yamashita = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Plant",
|
||||||
|
event = "#0401"
|
||||||
|
},
|
||||||
|
reservoir = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Pool",
|
||||||
|
event = "#0301"
|
||||||
|
},
|
||||||
|
mapChest = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Mimi",
|
||||||
|
event = "#0202"
|
||||||
|
},
|
||||||
|
assemblyHall = {
|
||||||
|
requirements = {{"juice"}},
|
||||||
|
map = "Comu",
|
||||||
|
event = "#0303"
|
||||||
|
},
|
||||||
|
graveyard = {
|
||||||
|
requirements = {{"locket"}},
|
||||||
|
map = "Cemet",
|
||||||
|
event = "#0301"
|
||||||
|
},
|
||||||
|
mushroom = {
|
||||||
|
requirements = {{"locket", "eventCurly", "machineGun"}, {"locket", "eventCurly", "booster1"}},
|
||||||
|
map = "Mapi",
|
||||||
|
event = "#0202"
|
||||||
|
},
|
||||||
|
maPignon = {
|
||||||
|
requirements = {{"locket", "mushroomBadge", "weapon", "booster1"}, {"locket", "mushroomBadge", "machineGun"}},
|
||||||
|
map = "Mapi",
|
||||||
|
event = "#0501"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
}
|
||||||
|
arthur = {
|
||||||
|
connections = {
|
||||||
|
mimigaVillage = {{"arthursKey"}},
|
||||||
|
eggCorridor1 = {},
|
||||||
|
eggCorridor2 = {{"eventCore"}, --also unlocks if you have access to the teleporter between grasstown and plantation, but that's logically redundant
|
||||||
|
grasstownWest = {},
|
||||||
|
upperSandZone = {{"weaponSN"}},
|
||||||
|
labyrinthB = {},
|
||||||
|
plantation = {{"teleportKey"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
risenBooster = {
|
||||||
|
requirements = {{"eventCore"}},
|
||||||
|
map = "Pens1",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
eggCorridor1 = {
|
||||||
|
connections = {
|
||||||
|
arthur = {}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
basil = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Eggs",
|
||||||
|
event = "#0403"
|
||||||
|
},
|
||||||
|
cthulhu = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Eggs",
|
||||||
|
event = "#0404"
|
||||||
|
},
|
||||||
|
eggItem = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Egg6",
|
||||||
|
event = "#0201"
|
||||||
|
},
|
||||||
|
observationChest = {
|
||||||
|
requirements = {},
|
||||||
|
map = "EggR",
|
||||||
|
event = "#0301"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventSue = {
|
||||||
|
requirements = {{"idCard", "weapon"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grasstownWest = {
|
||||||
|
connections = {
|
||||||
|
arthur = {},
|
||||||
|
grasstownEast = {{"juice"}, {"booster1"}, {"machineGun"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
keySpot = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Weed",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
jellyCapsule = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Weed",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
santa = {
|
||||||
|
requirements = {{"santaKey"}},
|
||||||
|
map = "Santa",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
charcoal = {
|
||||||
|
requirements = {{"santaKey", "juice"}},
|
||||||
|
map = "Santa",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
chaco = {
|
||||||
|
requirements = {{"santaKey"}, {"fireball"}},
|
||||||
|
map = "Chako",
|
||||||
|
event = "#6969"
|
||||||
|
},
|
||||||
|
kulala = {
|
||||||
|
requirements = {{"santaKey", "weapon"}, {"fireball"}},
|
||||||
|
map = "Weed",
|
||||||
|
event = "0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
grasstownEast = {
|
||||||
|
connections = {
|
||||||
|
grasstownWest = {{"eventFans"}, {"machineGun"}, {"booster1"}},
|
||||||
|
plantation = {{"bomb", "weaponSN"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
kazuma1 = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Weed",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
kazuma2 = {
|
||||||
|
requirements = {{"eventFans"}},
|
||||||
|
map = "Weed",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
execution = {
|
||||||
|
requirements = {{"weaponSN"}},
|
||||||
|
map = "WeedD",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
outsideHut = {
|
||||||
|
requirements = {{"eventFans"}, {"machineGun"}, {"booster1"}},
|
||||||
|
map = "Weed",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
hutChest = {
|
||||||
|
requirements = {{"eventFans"}, {"machineGun"}, {"booster1"}},
|
||||||
|
map = "WeedB",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
gumChest = {
|
||||||
|
requirements = {{"eventFans", "gumKey", "weapon"}, {"machineGun", "gumKey"}, {"booster1", "gumKey", "weapon"}},
|
||||||
|
map = "Frog",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
malco = {
|
||||||
|
requirements = {{"eventFans", "juice", "charcoal", "gum"}},
|
||||||
|
map = "Malco",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventFans = {
|
||||||
|
requirements = {{"rustyKey", "weapon"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
upperSandZone = {
|
||||||
|
connections = {
|
||||||
|
arthur = {},
|
||||||
|
lowerSandZone = {{"eventOmega"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
curly = {
|
||||||
|
requirements = {{"polarStar"}},
|
||||||
|
map = "Curly",
|
||||||
|
event = "#0518"
|
||||||
|
},
|
||||||
|
panties = {
|
||||||
|
requirements = {},
|
||||||
|
map = "CurlyS",
|
||||||
|
event = "#0421"
|
||||||
|
},
|
||||||
|
curlyPup = {
|
||||||
|
requirements = {},
|
||||||
|
map = "CurlyS",
|
||||||
|
event = "#0401"
|
||||||
|
},
|
||||||
|
sandCapsule = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Sand",
|
||||||
|
event = "#0502"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventOmega = {
|
||||||
|
requirements = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lowerSandZone = {
|
||||||
|
connections = {
|
||||||
|
upperSandZone = {{"eventOmega"}},
|
||||||
|
labyrinthW = {{"puppies", "weapon"}, {"booster1"}, {"machineGun"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
chestPup = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Sand",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
pupCapsule = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Sand",
|
||||||
|
event = "#0503"
|
||||||
|
},
|
||||||
|
darkPup = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Dark",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
runPup = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Sand",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
storehousePup = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Sand",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
jenka = {
|
||||||
|
requirements = {{"puppies"}},
|
||||||
|
map = "Jenka1",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
king = {
|
||||||
|
requirements = {{"puppies", "weapon"}},
|
||||||
|
map = "Gard",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
labyrinthB = {
|
||||||
|
connections = {
|
||||||
|
labyrinthW = {{"machineGun"}, {"booster1", "weapon"}},
|
||||||
|
boulder = {{"machineGun"}, {"booster1"}},
|
||||||
|
arthur = {}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
fallenBooster = {
|
||||||
|
requirements = {},
|
||||||
|
map = "MazeB",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
labyrinthW = {
|
||||||
|
connections = {
|
||||||
|
lowerSandZone = {},
|
||||||
|
labyrinthB = {{"weapon"}},
|
||||||
|
boulder = {},
|
||||||
|
labyrinthM = {{"machineGun"}, {"booster1"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
critterCapsule = {
|
||||||
|
requirements = {{"weapon"}},
|
||||||
|
map = "MazeI",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
turboChaba = {
|
||||||
|
requirements = {{"machineGun"}},
|
||||||
|
map = "MazeA",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
snakeChaba = {
|
||||||
|
requirements = {{"polarStar", "fireball"}},
|
||||||
|
map = "MazeA",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
whimChaba = {
|
||||||
|
requirements = {{"spur"}},
|
||||||
|
map = "MazeA",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
armsBarrier = {
|
||||||
|
requirements = {{"machineGun"}, {"booster1"}},
|
||||||
|
map = "MazeO",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
physician = {
|
||||||
|
requirements = {},
|
||||||
|
map = "MazeO",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
puuBlack = {
|
||||||
|
requirements = {{"clinicKey", "weapon"}},
|
||||||
|
map = "MazeD",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
boulder = {
|
||||||
|
connections = {
|
||||||
|
labyrinthB = {},
|
||||||
|
labyrinthW = {},
|
||||||
|
labyrinthM = {{"cureAll", "weapon"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
boulderChest = {
|
||||||
|
requirements = {{"cureAll", "weapon"}},
|
||||||
|
map = "MazeS",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
labyrinthM = {
|
||||||
|
connections = {
|
||||||
|
labyrinthW = {},
|
||||||
|
boulder = {{"cureAll", "weapon"}},
|
||||||
|
darkPlace = {}
|
||||||
|
},
|
||||||
|
locations = {},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
darkPlace = {
|
||||||
|
connections = {
|
||||||
|
waterway = {{"airTank"}},
|
||||||
|
core = {{"cureAll"}},
|
||||||
|
labyrinthM = {}
|
||||||
|
},
|
||||||
|
locations = {},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
core = {
|
||||||
|
connections = {
|
||||||
|
darkPlace = {}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
ropeSpot = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Almond",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
curlyCorpse = {
|
||||||
|
requirements = {{"eventCore"},
|
||||||
|
map = "Almond",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventCore = {
|
||||||
|
requirements = {{"weapon"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
waterway = {
|
||||||
|
connections = {
|
||||||
|
darkPlace = {},
|
||||||
|
mimigaVillage = {{"weaponSN"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
ironhead = {
|
||||||
|
requirements = {{"weaponSN"}},
|
||||||
|
map = "Stream",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventCurly = {
|
||||||
|
requirements = {{"eventCore", "towRope"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
eggCorridor2 = {
|
||||||
|
connections = {
|
||||||
|
arthur = {},
|
||||||
|
outerWall = {{"bomb"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
dragonChest = {
|
||||||
|
requirements = {{"weapon"}},
|
||||||
|
map = "Eggs2",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
sisters = {
|
||||||
|
requirements = {{"weapon"}},
|
||||||
|
map = "EggR2",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
outerWall = {
|
||||||
|
connections = {
|
||||||
|
eggCorridor2 = {{"bomb"}},
|
||||||
|
plantation = {{"machineGun"}, {"booster1"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
clock = {
|
||||||
|
requirements = {}, --eventCurly? works like that in vanilla
|
||||||
|
map = "Clock",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
mrLittle = {
|
||||||
|
requirements = {{"locket", "machineGun"}, {"locket", "booster1"}},
|
||||||
|
map = "Little",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
plantation = {
|
||||||
|
connections = {
|
||||||
|
arthur = {{"teleportKey"}},
|
||||||
|
outerWall = {},
|
||||||
|
grasstownEast = {{"bomb", "weaponSN"}},
|
||||||
|
lastCave = {{"eventRocket", "booster2", "weapon"}}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
kanpachi = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Cent",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
jail1 = {
|
||||||
|
requirements = {{"teleportKey"}},
|
||||||
|
map = "Jail1",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
momorin = {
|
||||||
|
requirements = {{"letter", "booster1"}},
|
||||||
|
map = "Momo",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
sprinkler = {
|
||||||
|
requirements = {{"mask"}},
|
||||||
|
map = "Cent",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
megane = {
|
||||||
|
requirements = {{"brokenSprinkler", "mask"}},
|
||||||
|
map = "lounge",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
topCapsule = {
|
||||||
|
requirements = {{"machineGun", "booster1"}},
|
||||||
|
map = "Cent",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
plantPup = {
|
||||||
|
requirements = {{"eventRocket"}},
|
||||||
|
map = "Cent",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
curlyShroom = {
|
||||||
|
requirements = {{"eventCurly", "maPignon"}},
|
||||||
|
map = "Cent",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventRocket = {
|
||||||
|
requirements = {{"newSprinkler", "booster1", "controller"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lastCave = {
|
||||||
|
connections = {
|
||||||
|
plantation = {},
|
||||||
|
balcony = {{"eventSue", "ironBond"}} --required to get into the endgame boss rush
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
redDemon = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Priso2",
|
||||||
|
event = "#0000",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {}
|
||||||
|
},
|
||||||
|
balcony = {
|
||||||
|
connections = {
|
||||||
|
lastCave = {}
|
||||||
|
},
|
||||||
|
locations = {
|
||||||
|
hellCapsule = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Hell1",
|
||||||
|
event = "#0000"
|
||||||
|
},
|
||||||
|
hellChest = {
|
||||||
|
requirements = {},
|
||||||
|
map = "Hell3",
|
||||||
|
event = "#0000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
events = {
|
||||||
|
eventHellCurly = { --do you get to take curly with you in hell?
|
||||||
|
requirements = {{"eventCurly"}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue