diff --git a/pre-edited-cs/Doukutsu.exe b/pre-edited-cs/Doukutsu.exe index fccbfef..597d704 100644 Binary files a/pre-edited-cs/Doukutsu.exe and b/pre-edited-cs/Doukutsu.exe differ diff --git a/pre-edited-cs/data/Org/0000.dat b/pre-edited-cs/data/Org/0000.dat new file mode 100644 index 0000000..fb001d3 Binary files /dev/null and b/pre-edited-cs/data/Org/0000.dat differ diff --git a/pre-edited-cs/data/Org/0000.org b/pre-edited-cs/data/Org/0000.org new file mode 100644 index 0000000..64f9c04 Binary files /dev/null and b/pre-edited-cs/data/Org/0000.org differ diff --git a/pre-edited-cs/data/Org/0001.org b/pre-edited-cs/data/Org/0001.org new file mode 100644 index 0000000..25349a7 Binary files /dev/null and b/pre-edited-cs/data/Org/0001.org differ diff --git a/pre-edited-cs/data/Org/0002.org b/pre-edited-cs/data/Org/0002.org new file mode 100644 index 0000000..6953f51 Binary files /dev/null and b/pre-edited-cs/data/Org/0002.org differ diff --git a/pre-edited-cs/data/Org/0003.org b/pre-edited-cs/data/Org/0003.org new file mode 100644 index 0000000..5276ec0 Binary files /dev/null and b/pre-edited-cs/data/Org/0003.org differ diff --git a/pre-edited-cs/data/Org/0004.org b/pre-edited-cs/data/Org/0004.org new file mode 100644 index 0000000..7326296 Binary files /dev/null and b/pre-edited-cs/data/Org/0004.org differ diff --git a/pre-edited-cs/data/Org/0005.org b/pre-edited-cs/data/Org/0005.org new file mode 100644 index 0000000..9ed0977 Binary files /dev/null and b/pre-edited-cs/data/Org/0005.org differ diff --git a/pre-edited-cs/data/Org/0006.org b/pre-edited-cs/data/Org/0006.org new file mode 100644 index 0000000..e2b96f9 Binary files /dev/null and b/pre-edited-cs/data/Org/0006.org differ diff --git a/pre-edited-cs/data/Org/0007.org b/pre-edited-cs/data/Org/0007.org new file mode 100644 index 0000000..61b3404 Binary files /dev/null and b/pre-edited-cs/data/Org/0007.org differ diff --git a/pre-edited-cs/data/Org/0008.org b/pre-edited-cs/data/Org/0008.org new file mode 100644 index 0000000..42b17f8 Binary files /dev/null and b/pre-edited-cs/data/Org/0008.org differ diff --git a/pre-edited-cs/data/Org/0009.org b/pre-edited-cs/data/Org/0009.org new file mode 100644 index 0000000..0af7aed Binary files /dev/null and b/pre-edited-cs/data/Org/0009.org differ diff --git a/pre-edited-cs/data/Org/0010.org b/pre-edited-cs/data/Org/0010.org new file mode 100644 index 0000000..d29c6f1 Binary files /dev/null and b/pre-edited-cs/data/Org/0010.org differ diff --git a/pre-edited-cs/data/Org/0011.org b/pre-edited-cs/data/Org/0011.org new file mode 100644 index 0000000..9737449 Binary files /dev/null and b/pre-edited-cs/data/Org/0011.org differ diff --git a/pre-edited-cs/data/Org/0012.org b/pre-edited-cs/data/Org/0012.org new file mode 100644 index 0000000..f10cb3d Binary files /dev/null and b/pre-edited-cs/data/Org/0012.org differ diff --git a/pre-edited-cs/data/Org/0013.org b/pre-edited-cs/data/Org/0013.org new file mode 100644 index 0000000..26ca085 Binary files /dev/null and b/pre-edited-cs/data/Org/0013.org differ diff --git a/pre-edited-cs/data/Org/0014.org b/pre-edited-cs/data/Org/0014.org new file mode 100644 index 0000000..5a980d6 Binary files /dev/null and b/pre-edited-cs/data/Org/0014.org differ diff --git a/pre-edited-cs/data/Org/0015.org b/pre-edited-cs/data/Org/0015.org new file mode 100644 index 0000000..da0eb0c Binary files /dev/null and b/pre-edited-cs/data/Org/0015.org differ diff --git a/pre-edited-cs/data/Org/0016.org b/pre-edited-cs/data/Org/0016.org new file mode 100644 index 0000000..afdc2d4 Binary files /dev/null and b/pre-edited-cs/data/Org/0016.org differ diff --git a/pre-edited-cs/data/Org/0017.org b/pre-edited-cs/data/Org/0017.org new file mode 100644 index 0000000..bbb0b34 Binary files /dev/null and b/pre-edited-cs/data/Org/0017.org differ diff --git a/pre-edited-cs/data/Org/0018.org b/pre-edited-cs/data/Org/0018.org new file mode 100644 index 0000000..30f982f Binary files /dev/null and b/pre-edited-cs/data/Org/0018.org differ diff --git a/pre-edited-cs/data/Org/0019.org b/pre-edited-cs/data/Org/0019.org new file mode 100644 index 0000000..645719d Binary files /dev/null and b/pre-edited-cs/data/Org/0019.org differ diff --git a/pre-edited-cs/data/Org/0020.org b/pre-edited-cs/data/Org/0020.org new file mode 100644 index 0000000..169bb20 Binary files /dev/null and b/pre-edited-cs/data/Org/0020.org differ diff --git a/pre-edited-cs/data/Org/0021.org b/pre-edited-cs/data/Org/0021.org new file mode 100644 index 0000000..86c6e36 Binary files /dev/null and b/pre-edited-cs/data/Org/0021.org differ diff --git a/pre-edited-cs/data/Org/0022.org b/pre-edited-cs/data/Org/0022.org new file mode 100644 index 0000000..48e1cf5 Binary files /dev/null and b/pre-edited-cs/data/Org/0022.org differ diff --git a/pre-edited-cs/data/Org/0023.org b/pre-edited-cs/data/Org/0023.org new file mode 100644 index 0000000..5a8e754 Binary files /dev/null and b/pre-edited-cs/data/Org/0023.org differ diff --git a/pre-edited-cs/data/Org/0024.org b/pre-edited-cs/data/Org/0024.org new file mode 100644 index 0000000..621e7ed Binary files /dev/null and b/pre-edited-cs/data/Org/0024.org differ diff --git a/pre-edited-cs/data/Org/0025.org b/pre-edited-cs/data/Org/0025.org new file mode 100644 index 0000000..9153d66 Binary files /dev/null and b/pre-edited-cs/data/Org/0025.org differ diff --git a/pre-edited-cs/data/Org/0026.org b/pre-edited-cs/data/Org/0026.org new file mode 100644 index 0000000..acd9125 Binary files /dev/null and b/pre-edited-cs/data/Org/0026.org differ diff --git a/pre-edited-cs/data/Org/0027.org b/pre-edited-cs/data/Org/0027.org new file mode 100644 index 0000000..6de1c19 Binary files /dev/null and b/pre-edited-cs/data/Org/0027.org differ diff --git a/pre-edited-cs/data/Org/0028.org b/pre-edited-cs/data/Org/0028.org new file mode 100644 index 0000000..0340484 Binary files /dev/null and b/pre-edited-cs/data/Org/0028.org differ diff --git a/pre-edited-cs/data/Org/0029.org b/pre-edited-cs/data/Org/0029.org new file mode 100644 index 0000000..1e56324 Binary files /dev/null and b/pre-edited-cs/data/Org/0029.org differ diff --git a/pre-edited-cs/data/Org/0030.org b/pre-edited-cs/data/Org/0030.org new file mode 100644 index 0000000..f6397dd Binary files /dev/null and b/pre-edited-cs/data/Org/0030.org differ diff --git a/pre-edited-cs/data/Org/0031.org b/pre-edited-cs/data/Org/0031.org new file mode 100644 index 0000000..e422161 Binary files /dev/null and b/pre-edited-cs/data/Org/0031.org differ diff --git a/pre-edited-cs/data/Org/0032.org b/pre-edited-cs/data/Org/0032.org new file mode 100644 index 0000000..7daf808 Binary files /dev/null and b/pre-edited-cs/data/Org/0032.org differ diff --git a/pre-edited-cs/data/Org/0033.org b/pre-edited-cs/data/Org/0033.org new file mode 100644 index 0000000..b3b587f Binary files /dev/null and b/pre-edited-cs/data/Org/0033.org differ diff --git a/pre-edited-cs/data/Org/0034.org b/pre-edited-cs/data/Org/0034.org new file mode 100644 index 0000000..182c539 Binary files /dev/null and b/pre-edited-cs/data/Org/0034.org differ diff --git a/pre-edited-cs/data/Org/0035.org b/pre-edited-cs/data/Org/0035.org new file mode 100644 index 0000000..71dde3d Binary files /dev/null and b/pre-edited-cs/data/Org/0035.org differ diff --git a/pre-edited-cs/data/Org/0036.org b/pre-edited-cs/data/Org/0036.org new file mode 100644 index 0000000..7115b7b Binary files /dev/null and b/pre-edited-cs/data/Org/0036.org differ diff --git a/pre-edited-cs/data/Org/0037.org b/pre-edited-cs/data/Org/0037.org new file mode 100644 index 0000000..c0ec90c Binary files /dev/null and b/pre-edited-cs/data/Org/0037.org differ diff --git a/pre-edited-cs/data/Org/0038.org b/pre-edited-cs/data/Org/0038.org new file mode 100644 index 0000000..c45beeb Binary files /dev/null and b/pre-edited-cs/data/Org/0038.org differ diff --git a/pre-edited-cs/data/Org/0039.org b/pre-edited-cs/data/Org/0039.org new file mode 100644 index 0000000..d8b74a7 Binary files /dev/null and b/pre-edited-cs/data/Org/0039.org differ diff --git a/pre-edited-cs/data/Org/0040.org b/pre-edited-cs/data/Org/0040.org new file mode 100644 index 0000000..b571c1b Binary files /dev/null and b/pre-edited-cs/data/Org/0040.org differ diff --git a/pre-edited-cs/data/Org/0041.org b/pre-edited-cs/data/Org/0041.org new file mode 100644 index 0000000..f3093d0 Binary files /dev/null and b/pre-edited-cs/data/Org/0041.org differ diff --git a/pre-edited-cs/data/Org/0042.org b/pre-edited-cs/data/Org/0042.org new file mode 100644 index 0000000..93d268a Binary files /dev/null and b/pre-edited-cs/data/Org/0042.org differ diff --git a/pre-edited-cs/data/Org/0043.org b/pre-edited-cs/data/Org/0043.org new file mode 100644 index 0000000..25ac220 Binary files /dev/null and b/pre-edited-cs/data/Org/0043.org differ diff --git a/pre-edited-cs/data/Org/0044.org b/pre-edited-cs/data/Org/0044.org new file mode 100644 index 0000000..b35cee3 Binary files /dev/null and b/pre-edited-cs/data/Org/0044.org differ diff --git a/pre-edited-cs/data/Org/0045.org b/pre-edited-cs/data/Org/0045.org new file mode 100644 index 0000000..204a375 Binary files /dev/null and b/pre-edited-cs/data/Org/0045.org differ diff --git a/pre-edited-cs/data/Org/0046.org b/pre-edited-cs/data/Org/0046.org new file mode 100644 index 0000000..adad4dc Binary files /dev/null and b/pre-edited-cs/data/Org/0046.org differ diff --git a/pre-edited-cs/data/Stage/Hell3.tsc b/pre-edited-cs/data/Stage/Hell3.tsc index 74358e1..f25d55e 100644 --- a/pre-edited-cs/data/Stage/Hell3.tsc +++ b/pre-edited-cs/data/Stage/Hell3.tsc @@ -1 +1 @@ -0-FSS\S0-_pqd_idlSSSS_hqg0-FSS\T0-_pqd_idlSSST_hqg0-FSS\U0-_pqd_idlSSSU_hqg0-FSS\V0-_pqd_idlSSSV_hqg0-FSS\W0-_pqd_idlSSSW_hqg0-FSS\X0-_nh|0-_iomTXVU]SUSS_idlSSSV0-_iomTXXS]SUST_hqg0-FSS\Y0-_nh|_p|eSSSU_zdlSSSU_sul_idlSSST_hqg0-FSTSS0-_sul_idrSSST_wudSS[T]SS\X]STXT]SSTV0-FSTTS0-_sul_irpSSTY_idrSSSV0-_zdlSSVS0-_iomTXVW]STTT0-_wudSS[W]SS\X]SSTS]SSSU0-FSTTT0-_wudSS[X]SS\X]SSTS]SSSU0-FSUSS0-_fqsSUSS]SVUS]SSSS0-_ioPTXVU_ioNTXVV0-_zdlSSSU_idlSSSV_iomTXXS]SUST_hqg0-FSUST0-_gqsSUST0-_fpsSSSZ]SSTW]SSST0-_fpsSSS[]SSTW]SSST0-_fpsSSS\]SSTW]SSST0-_fpsSSTS]SSTW]SSST0-_fpsSSTT]SSTW]SSST0-_fpsSSTU]SSTW]SSST0-_fpsSSTV]SSTW]SSST_hqg0-FSUWS0-FSUWT0-_gqsSUWT_dqsSUWS]SSTS]SSSV_hqg0-FSUWU0-FSUWV0-_gqsSUWV_dqsSUWU]SSTS]SSSV_hqg0-FSUWW0-FSUWX0-_gqsSUWX_dqsSUWW]SSTS]SSSV_hqg0-FSUXS0-FSUXT0-_gqsSUXT_dqsSUXS]SSTS]SSST_hqg0-FSUXU0-#SUXV0-_gqsSUXV_dqsSUXU]SSTS]SSSV_hqg0-FSUXW0-FSUXX0-_gqsSUXX_dqsSUXW]SSTS]SSST_hqg0-FSUXY0-FSUXZ0-_gqsSUXZ_dqsSUXY]SSTS]SSSV_hqg0-FSU\S0-_gqsSU\S_vrxSSTU0-_fpsSTTZ]SSS\]SSU[0-_fpsSTTZ]SSTS]SSU[0-_fpsSTTZ]SSTT]SSU[0-_hqg0-FSU\T0-_gqsSU\T_vrxSSTU0-_fpsSS\X]SSSV]SSU[0-_fpsSS\X]SSSW]SSU[0-_fpsSS\X]SSSX]SSU[0-_fpsSS\X]SSSY]SSU[0-_hqg0-FSU\U0-_gqsSU\U_vrxSSTU0-_fpsSSSS]SSSS]SSU[0-_fpsSSSS]SSSS]SSU[0-_fpsSSSS]SSSS]SSU[0-_hqg0-FSVSS0-_gqsSVSS_gqdSVS\_gqdSVTT_gqdSVTZ0-_irqSVST]SSTY0-_fpxSSSZ_evoSSSS0-_fpsSSUS]SSTT]SSST0-_fpsSSUS]SSTU]SSST0-_erdSTSS0-_fqsTSST]SVVS]SSSS0-_fqsTSSU]SVVS]SSSU0-_vrxSSTU0-_hqg0-FSVST0-FSVSU0-_prySST[]SSTS_hqg0-FSV\S0-_sul_iomTXXT]SSST_ioNTXXT0-_vrxSSUU_fqsSV\S]SSUT]SSSS_hyhSWSS0-FSWSS0-_hyhSSVX0-FS\SS0-_gqsS\SS_hqg0-FS\ST0-_gqsS\ST_hqg0-FTSSS0-_erdSXSS_fpxSSSS_ioPTXXS_hqg0-FTSST0-FTSSU \ No newline at end of file +>;Taaja>;m~rmt~†aadgmwrzaaaamvu>;Taajb>;m~rmt~†aadgmwrzaaabmvu>;Taajc>;m~rmt~†aadgmwrzaaacmvu>;Taajd>;m~rmt~†aadgmwrzaaadmvu>;Taaje>;m~rmt~†aadgmwrzaaaemvu>;Taajf>;m|vŠ>;mw}{bfdckacaamwrzaaad>;mw}{bffakacabmvu>;Taajg>;m|vŠm~Šsaaacmˆrzaaacmƒzmwrzaaabmvu>;Tabaa>;mƒzmwr€aaabm…ƒraaibkaajfkabfbkaabd>;Tabba>;mƒzmw€~aabgmwr€aaad>;mˆrzaada>;mw}{bfdekabbb>;m…ƒraaiekaajfkaabakaaac>;Tabbb>;m…ƒraaifkaajfkaabakaaac>;Tacaa>;mtacaakadcakaaaa>;mw}^bfdcmw}\bfdd>;mˆrzaaacmwrzaaadmw}{bffakacabmvu>;Tacab>;muacab>;mt~aaahkaabekaaab>;mt~aaaikaabekaaab>;mt~aaajkaabekaaab>;mt~aabakaabekaaab>;mt~aabbkaabekaaab>;mt~aabckaabekaaab>;mt~aabdkaabekaaabmvu>;Tacea>;Taceb>;muacebmraceakaabakaaadmvu>;Tacec>;Taced>;muacedmraceckaabakaaadmvu>;Tacee>;Tacef>;muacefmraceekaabakaaadmvu>;Tacfa>;Tacfb>;muacfbmracfakaa1akaaabmvu>;Tacfc>;Tacfd>;muacfdmracfckaabakaaadmvu>;Tacfe>;Tacff>;muacffmracfekaabakaaabmvu>;Tacfg>;Tacfh>;muacfhmracfgkaabakaaadmvu>;Tacja>;muacjam„€†aabc>;mt~abbhkaaajkaaci>;mt~abbhkaabakaaci>;mt~abbhkaabbkaaci>;mvu>;Tacjb>;muacjbm„€†aabc>;mt~aajfkaaadkaaci>;mt~aajfkaaaekaaci>;mt~aajfkaaafkaaci>;mt~aajfkaaagkaaci>;mvu>;Tacjc>;muacjcm„€†aabc>;mt~aaaakaaaakaaci>;mt~aaaakaaaakaaci>;mt~aaaakaaaakaaci>;mvu>;Tadaa>;muadaamuradajmuradbbmuradbh>;mw€adabkaabg>;mt~†aaahms„}aaaa>;mt~aacakaabbkaaab>;mt~aacakaabckaaab>;ms€rabaa>;mtbaabkaddakaaaa>;mtbaackaddakaaac>;m„€†aabc>;mvu>;Tadab>;Tadac>;m~€‡aabikaabamvu>;Tadja>;mƒzmw}{bffbkaaabmw}\bffb>;m„€†aaccmtadjakaacbkaaaamv‡vaeaa>;Taeaa>;mv‡vaadf>;Tajaa>;muajaamvu>;Tajab>;muajabmvu>;Tbaaa>;ms€rafaamt~†aaaamw}^bffamvu>;Tbaab>;Tbaac \ No newline at end of file diff --git a/pre-edited-cs/data/Stage/ScriptSource/Hell3.txt b/pre-edited-cs/data/Stage/ScriptSource/Hell3.txt index 6535f85..8d21f51 100644 --- a/pre-edited-cs/data/Stage/ScriptSource/Hell3.txt +++ b/pre-edited-cs/data/Stage/ScriptSource/Hell3.txt @@ -1,14 +1,14 @@ #0090 - pEnd then + -- This is totally normal and can be ignored. + logDebug(('Found "%s", but was outside of label.'):format(needle, replacement)) + return text, false end - end - assert(original, 'No unreplaced item with key: ' .. originalKey) - -- Log change - local template = "[%s] %s -> %s" - logNotice(template:format(self._mapName, original.name, replacement.name)) - - -- Replace before. - if original.replaceBefore then - for needle, replacement in pairs(original.replaceBefore) do - local wasChanged - self._text, wasChanged = self:_stringReplace(self._text, needle, replacement, original.label) - - -- Log error if replace was not optional. - if wasChanged == false then - local wasOptional = false - for _, pattern in ipairs(OPTIONAL_REPLACES) do - if needle:find(pattern, 1, true) then - wasOptional = true - break - end - end - if wasOptional == false then - local template = 'Unable to replace [%s] "%s" with "%s".' - logError(template:format(original.map, needle, replacement)) + -- find the earliest occurence of an override + for k,v in ipairs(overrides) do + local over = text:find(v, pStart) + if over ~= nil then + if o ~= nil then + o = math.min(o, over) + else + o = over end end end + + -- no overrides found + if o == nil then break end + + pStart = o+1 end - -- Replace attributes. - self:_replaceAttribute(original, replacement, 'command') - self:_replaceAttribute(original, replacement, 'getText') - self:_replaceAttribute(original, replacement, 'displayCmd') - self:_replaceAttribute(original, replacement, 'music') -end - -function C:_replaceAttribute(original, replacement, attribute) - local originalTexts = original[attribute] - if originalTexts == nil or originalTexts == '' then - return - elseif type(originalTexts) == 'string' then - originalTexts = {originalTexts} - end - - local replaceText = replacement[attribute] or '' - if type(replaceText) == 'table' then - replaceText = replaceText[1] - end - -- Fix: After collecting Curly's Panties or Chako's Rouge, music would go silent. - if attribute == 'music' and replaceText == '' then - replaceText = " pEnd then - -- This is totally normal and can be ignored. - logNotice(('Found "%s", but was outside of label.'):format(needle, replacement)) - return text, false - end local len = needle:len() local j = i + len - 1 assert((i % 1 == 0) and (i > 0) and (i <= j), tostring(i)) @@ -170,7 +104,7 @@ function C:_getLabelPositionRange(label) assert(type(label) == 'string') assert(#label == 4) - assert(tonumber(label) >= 1) + assert(tonumber(label) >= 0) assert(tonumber(label) <= 9999) local i = 1 diff --git a/src/ui/draw.lua b/src/ui/draw.lua index d8ef861..b87125d 100644 --- a/src/ui/draw.lua +++ b/src/ui/draw.lua @@ -7,6 +7,7 @@ local C = Class:extend() local layout = Luigi(require 'ui.main') local settings = Luigi(require 'ui.settings') local sequence = Luigi(require 'ui.sequence') +local music = Luigi(require 'ui.music') local style = require 'ui.style' local theme = require 'lib.luigi.theme.dark' @@ -14,10 +15,12 @@ local theme = require 'lib.luigi.theme.dark' layout:setStyle(style) settings:setStyle(style) sequence:setStyle(style) +music:setStyle(style) layout:setTheme(theme) settings:setTheme(theme) sequence:setTheme(theme) +music:setTheme(theme) function C:setup() self:loadPuppy(Settings.settings.puppy) @@ -25,6 +28,7 @@ function C:setup() self:loadMyChar(Settings.settings.mychar) self:loadSpawn(Settings.settings.spawn) self:loadSeqSettings(Settings.settings.seqbreaks, Settings.settings.dboosts) + self:loadMusicSettings(Settings.settings.musicShuffle, Settings.settings.musicBeta, Settings.settings.musicFlavor) background = lg.newImage('assets/background.png') self:draw() @@ -100,12 +104,28 @@ function C:loadSeqSettings(breaks, seq) end end +function C:loadMusicSettings(shuffle, beta, flavor) + settings.music.value = shuffle + music.beta.value = beta + if flavor == "Shuffle" then music.shuffle.value = true end + if flavor == "Random" then music.random.value = true end + if flavor == "Chaos" then music.random.value = true end +end + layout.version.text = 'Cave Story Randomizer [Open Mode] v' .. VERSION layout.author.text = 'by shru and duncathan' layout.twitter.text = '(@shruuu and @duncathan_salt)' layout.footer.text = 'Original randomizer:\r\nshru.itch.io/cave-story-randomizer' +music.panel.text = [[Shuffle: remap every song to a new song. For example, all instances of Mischievous Robot become Pulse. Songs may remap to themselves. + +Random: remap every cue to a new song. For example, entering the Egg Corridor by any means plays Meltdown 2. + +Chaos: remap every