From 809f472a57ae35783fb97848ace820821a62ac26 Mon Sep 17 00:00:00 2001 From: shru Date: Sat, 15 Dec 2018 21:14:48 -0500 Subject: [PATCH] Made the patcher all pretty and shit. --- README.md | 14 +- src/assets/background.png | Bin 0 -> 4779 bytes src/assets/monogram_extended.ttf | Bin 0 -> 34164 bytes src/conf.lua | 3 - src/database/items.lua | 62 ++++++-- src/lib/terebi.lua | 234 +++++++++++++++++++++++++++++++ src/main.lua | 74 +++++++++- 7 files changed, 369 insertions(+), 18 deletions(-) create mode 100644 src/assets/background.png create mode 100644 src/assets/monogram_extended.ttf create mode 100644 src/lib/terebi.lua diff --git a/README.md b/README.md index 514a281..eb37f92 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,21 @@ Cave Story Randomizer ===================== +Todo +---- + +- Add all weapons. +- Add all items. +- Add instructions. +- Provide modified Cave.pxm. (When Bubbline or Fireball) + Issues ------ - 3 Life Capsules can not be replaced because they appear on maps with 2 capsules. Need label-aware replace. - Hell Missile Upgrade uses a unique script and won't be easy to replace. -- Bubbler (and other weapons?) can't break blocks in the First Cave. + +Credits +------- + +- Font: https://datagoblin.itch.io/monogram diff --git a/src/assets/background.png b/src/assets/background.png new file mode 100644 index 0000000000000000000000000000000000000000..0193393550ad055504762d1ded9c0b5b37d4c4ba GIT binary patch literal 4779 zcma)AcTm$!xBexxKxm>gMG2^&pmb2A6EKue1Ox>_kg8PaMM^|Kr3gruj(`*iC=eu& z2%@M+mk_B@=?T4rBFN2q@67wx{bs(|nccHz_MF}G%sxA3&r@?#1Q*9i4gdhS3=Q-w z005-Tkk=rrjNb1u!ILq70xS@^0JcwL5dipH4fS-aLi3j=wR%K89e!S46+SD?-LJe; ztkSJh)aS2{%h&`0083$ z^J+Iiv;mSh0J2I1n9VQ$e+oZ`u$>0jcrJU&2hfF{_0Hp?dxKtU!FNI63tiHyQ4*hd z%*MSK9cwf5J%*0^GQ;8i@}DEf+tap~ClbS`lTYIQ@qHw-=7n&fyTro3ekbLHScrl# z1_ySShSO>3(^nBpz}ZqLXR+<=UU1E}1|Y|3ivg-LZ$f#2t`jPN^o!H1=EP#q)%1W^ z7{-a2t35rP?SCavrgO|`MwKBSOU?|sJ#=q)HKRv7uDXX#>SeMEr3(>Dd%<;fG1@LA zlw*&>^-yeA^EA#&O7b{)pZTE;dOsm#&d;%?u5H?{Qj zvtnCsG^?DjXv9HD+x}3TL-d2`^tzekY&1`V-W~mWpguP>{|{+1D7x;eg^_dyA+}@~zyN8q=9Tl~#j7ca=5^fu*(t=|ZW@4@vID3#G z0#7C10r952`z0y9K{Xbfd6c4+ggewM%ZzEn+PBKA9;~N!8Eh4CH!B` zLCob3({Q%*T3(Fyr+Aq_nIH-W2x7G~^eGmUbDzTD%urh-A6=~a3}Re>Rt%P9;a|4^C%x38$HXaoa__PoCm^A=z;1OToSXlQ>jw=1?|J(DZ|!+0=G^bf0Y zu2PD=y=F%_0;EzFNU<#g0FPrBAjTHUZ6O+?2v4msPHcz4qMR)2EsZF*#EWu zFG%_?jcHy~CIIth=@Nb9C?aC3DSz_z(%1DtGCL1D@Oz9QM})L&Q{2CiI`)HZQKABh z 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 literal 0 HcmV?d00001 diff --git a/src/assets/monogram_extended.ttf b/src/assets/monogram_extended.ttf new file mode 100644 index 0000000000000000000000000000000000000000..948c06a5c538b12083b79b1023b3c916db3698c4 GIT binary patch literal 34164 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