diff --git a/src/database/world_graph.lua b/src/database/world_graph.lua index e0e3754..c608dcf 100644 --- a/src/database/world_graph.lua +++ b/src/database/world_graph.lua @@ -702,7 +702,7 @@ function worldGraph.locationsArray(locations) return array end -function worldGraph:logLocations() +function worldGraph:serialize() local array = {} for k,v in pairs(self.regions) do table.insert(array, v) @@ -712,17 +712,27 @@ function worldGraph:logLocations() return a.order < b.order end + local lines = {} + for k,r in ipairs(_.sort(array,sort)) do if next(r.locations) then - logSpoiler("") - logSpoiler("Region: " .. r.name) + lines:insert("") + lines:insert("Region: " .. r.name) for k2,l in pairs(r.locations) do if l.item ~= nil and not _has({l.item}, "event") then - logSpoiler("\t " .. l.name .. ": " .. l.item.name) + lines:insert("\t " .. l.name .. ": " .. l.item.name) end end end end + + return lines +end + +function worldGraph:logLocations() + for k,v in ipairs(worldGraph:serialize()) do + logSpoiler(v) + end end return worldGraph \ No newline at end of file diff --git a/src/randomizer.lua b/src/randomizer.lua index 7c0c19d..d72f3ad 100644 --- a/src/randomizer.lua +++ b/src/randomizer.lua @@ -286,8 +286,18 @@ function C:_copyMyChar() end function C:_generateHash() + local serialized = self.worldGraph:serialize():concat() + local hashed = ld.encode('string', 'hex', ld.hash('sha256', serialized)) + hashed = tonumber(hashed:sub(-8, -1), 16) + hashed = hashed % (39^5) + + local h = {} + for i=1,5 do + h:insert((hashed%39)+1) + hashed = math.floor(hashed / 39) + end + local path = self:_getWritePath() .. '/hash.txt' - local h = {love.math.random(39), love.math.random(39), love.math.random(39), love.math.random(39), love.math.random(39)} U.writeFile(path, ("%04d,%04d,%04d,%04d,%04d"):format(h[1], h[2], h[3], h[4], h[5])) return h end