mirror of
https://github.com/cave-story-randomizer/cave-story-randomizer
synced 2024-11-12 18:02:52 +00:00
enables basic generation for objectives
This commit is contained in:
parent
09e4883acf
commit
3035764ad4
|
@ -15,7 +15,8 @@ function firstCave:new(worldGraph)
|
||||||
self.locations = {
|
self.locations = {
|
||||||
firstCapsule = Location("First Cave Life Capsule", "Cave", "0401", self),
|
firstCapsule = Location("First Cave Life Capsule", "Cave", "0401", self),
|
||||||
gunsmithChest = Location("Hermit Gunsmith Chest", "Pole", "0202", self),
|
gunsmithChest = Location("Hermit Gunsmith Chest", "Pole", "0202", self),
|
||||||
gunsmith = Location("Tetsuzou", "Pole", "0303", self)
|
gunsmith = Location("Tetsuzou", "Pole", "0303", self),
|
||||||
|
gameMode = Location("Game Mode Setup Script", "Start", "0201", self)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.locations.gunsmith.requirements = function(self, items)
|
self.locations.gunsmith.requirements = function(self, items)
|
||||||
|
@ -441,6 +442,10 @@ function worldGraph:getLocations()
|
||||||
return locations
|
return locations
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function worldGraph:getGameModeSpot()
|
||||||
|
return {self.regions.firstCave.locations.gameMode}
|
||||||
|
end
|
||||||
|
|
||||||
function worldGraph:getPuppySpots()
|
function worldGraph:getPuppySpots()
|
||||||
return {
|
return {
|
||||||
self.regions.upperSandZone.locations.curly,
|
self.regions.upperSandZone.locations.curly,
|
||||||
|
|
|
@ -34,6 +34,7 @@ function C:new()
|
||||||
self.worldGraph = WorldGraph(self.itemDeck)
|
self.worldGraph = WorldGraph(self.itemDeck)
|
||||||
self.customseed = nil
|
self.customseed = nil
|
||||||
self.puppy = false
|
self.puppy = false
|
||||||
|
self.game = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
function C:setPath(path)
|
function C:setPath(path)
|
||||||
|
@ -128,7 +129,14 @@ function C:_writePlaintext(tscFiles)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function C:getGameMode()
|
||||||
|
return {self.itemDeck:getByKey(self.game)}
|
||||||
|
end
|
||||||
|
|
||||||
function C:_shuffleItems(tscFiles)
|
function C:_shuffleItems(tscFiles)
|
||||||
|
-- place the game mode scripts in Start Point
|
||||||
|
self:_fastFillItems(self:getGameMode(), self.worldGraph:getGameModeSpot())
|
||||||
|
|
||||||
local mandatory = _.compact(_.shuffle(self.itemDeck:getMandatoryItems(true)))
|
local mandatory = _.compact(_.shuffle(self.itemDeck:getMandatoryItems(true)))
|
||||||
local optional = _.compact(_.shuffle(self.itemDeck:getOptionalItems(true)))
|
local optional = _.compact(_.shuffle(self.itemDeck:getOptionalItems(true)))
|
||||||
local puppies = _.compact(_.shuffle(self.itemDeck:getItemsByAttribute("puppy")))
|
local puppies = _.compact(_.shuffle(self.itemDeck:getItemsByAttribute("puppy")))
|
||||||
|
@ -143,8 +151,6 @@ function C:_shuffleItems(tscFiles)
|
||||||
|
|
||||||
-- then fill one of the first cave spots with a weapon that can break blocks
|
-- then fill one of the first cave spots with a weapon that can break blocks
|
||||||
_.shuffle(self.worldGraph:getFirstCaveSpots())[1]:setItem(_.shuffle(self.itemDeck:getItemsByAttribute("weaponSN"))[1])
|
_.shuffle(self.worldGraph:getFirstCaveSpots())[1]:setItem(_.shuffle(self.itemDeck:getItemsByAttribute("weaponSN"))[1])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- next fill hell chests, which cannot have mandatory items
|
-- next fill hell chests, which cannot have mandatory items
|
||||||
self:_fastFillItems(optional, _.shuffle(self.worldGraph:getHellSpots()))
|
self:_fastFillItems(optional, _.shuffle(self.worldGraph:getHellSpots()))
|
||||||
|
|
|
@ -28,6 +28,17 @@ layout.go:onPress(function()
|
||||||
if settings.seedselect.value and settings.customseed.value ~= "" then
|
if settings.seedselect.value and settings.customseed.value ~= "" then
|
||||||
Randomizer.customseed = settings.customseed.value
|
Randomizer.customseed = settings.customseed.value
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if settings.bad.value then
|
||||||
|
Randomizer.game = "gameBadEnd"
|
||||||
|
else if settings.norm.value then
|
||||||
|
Randomizer.game = "gameNormalEnd"
|
||||||
|
else if settings.boss.value then
|
||||||
|
Randomizer.game = "gameAllBosses"
|
||||||
|
else
|
||||||
|
Randomizer.game = "gameBestEnd"
|
||||||
|
end
|
||||||
|
|
||||||
Randomizer.puppy = settings.puppy.value
|
Randomizer.puppy = settings.puppy.value
|
||||||
C:setStatus(Randomizer:randomize())
|
C:setStatus(Randomizer:randomize())
|
||||||
Randomizer:new()
|
Randomizer:new()
|
||||||
|
|
|
@ -13,10 +13,10 @@ return { style = 'dialog',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ type = 'label', text = 'Objective' },
|
{ type = 'label', text = 'Objective' },
|
||||||
{ type = 'radio', group = 'objective', text = 'Bad ending' },
|
{ type = 'radio', group = 'objective', text = 'Bad ending', id = 'bad' },
|
||||||
{ type = 'radio', group = 'objective', text = 'Normal ending' },
|
{ type = 'radio', group = 'objective', text = 'Normal ending', id = 'norm'},
|
||||||
{ type = 'radio', group = 'objective', text = 'Best ending', value = true },
|
{ type = 'radio', group = 'objective', text = 'Best ending', id = 'best', value = true },
|
||||||
{ type = 'radio', group = 'objective', text = 'All bosses' },
|
{ type = 'radio', group = 'objective', text = 'All bosses', id = 'boss' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ style = 'dialogFoot',
|
{ style = 'dialogFoot',
|
||||||
|
|
Loading…
Reference in a new issue