Merge pull request #78 from duncathan/spawnpoints

adds arthur's house and camp as spawn points
This commit is contained in:
duncathan salt 2020-02-29 22:31:46 -06:00 committed by GitHub
commit 9eb5b6e4b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 192 additions and 60 deletions

Binary file not shown.

View file

@ -1 +1 @@
>;Taaja>;m~rmt~<7E>aaimwrzaaaamvu>;Taajb>;m~rmt~<7E>aaimwrzaaabmvu>;Taajc>;m~rmt~<7E>aaimwrzaaacmvu>;Taajd>;m~rmt~<7E>aaimwrzaaadmvu>;Taaje>;m~rmt~<7E>aaimwrzaaaemvu>;>;Taajj>;mt~<7E>aaimwrzaaaemvu>;>;>;Tabab>;mzmt∥babkaaaakaaaamо<6D>abbmwr€aaadm<64>raabdkaajdkaabakaaad>;>;Tabac>;mzmw}{adackabaemw}{adabkabadm~зpRm€umvu>;Tabad>;mz>;mw}{adaekabafm~зm<D0B7><EFBFBD><EFBFBD>・・圈浪、<E6B5AA>椁・劒沽pm€umvu>;Tabae>;m|v確wr€aaacm<63>raa1bkaajekaaaikaaag>;Tabaf>;mw}{bgeakabagm~зm<D0B7><EFBFBD><EFBFBD>・・圈浪、<E6B5AA>椁・劒沽pm€umvu>;Tabag>;mwr€aaacmw}\adacmw}\bgebmw}\bgec>;m~隔aaacm<63>raabbkadackaaaikaaag>;>;Tabba>;m|v確wr€aaaem<65>raajakaajckaaahkaaaj>;>;>;Tabfa>;m|v確~隔aaaamt~<7E>aaimwrzaaae>;m<>zaada>;mо<6D>abcmt~∥afakaadfkaaghm<68>zaaca>;mо<6D>abcmt~∥afakaadgkaaghm<68>zaaca>;mvu>;>;Tacaa>;mvu>;Tacab>;mvu>;>;>;Taeaa>;mzmо<6D>accmu∥eaamv<6D>aeab>;>;Taeab>;mv<6D>aabc>;>;
a^w„„<E2809E>„a^<5E>¡¢•<C2A2>—¡©„„„Œ<E2809E>š•<C5A1>„„„„<E2809E>™¢˜a^w„„<E2809E>…a^<5E>¡¢•<C2A2>—¡©„„„Œ<E2809E>š•<C5A1>„„„…<E2809E>™¢˜a^w„„<E2809E>†a^<5E>¡¢•<C2A2>—¡©„„„Œ<E2809E>š•<C5A1>„„„†<E2809E>™¢˜a^w„„<E2809E>‡a^<5E>¡¢•<C2A2>—¡©„„„Œ<E2809E>š•<C5A1>„„„‡<E2809E>™¢˜a^w„„<E2809E>ˆa^<5E>¡¢•<C2A2>—¡©„„„Œ<E2809E>š•<C5A1>„„„ˆ<E2809E>™¢˜a^w„„<E2809E><E2809E>a^<5E>—¡©„„„Œ<E2809E>š•<C5A1>„„„ˆ<E2809E>™¢˜a^w„…„…a^<5E>¤¦<C2A4><C2A6>—¢¤„…„…Ž„„„„Ž„„„„<E2809E>§£©„„……<E280A6>š•£„„„‡<E2809E>¨¦•„„…‡Ž„„<E2809E>‡Ž„„…„Ž„„„‡a^w„…„†a^<5E>¤¦<C2A4><C2A6>š ž„‡„†Ž„…„ˆ<E2809E>š ž„‡„…Ž„…„‡<E2809E>¡§“u<E2809C>¢£˜<C2A3>™¢˜a^w„…„‡a^<5E>¤¦<C2A4>a^<5E>š ž„‡„ˆŽ„…„‰<E2809E>¡§<C2A7>¨©¦šÃÆ»¹ÈȽ»tÇÃÁ¹È¼½Â»“<C2BB>¢£˜<C2A3>™¢˜a^w„…„ˆa^<5E>Ÿ™­<E284A2>š•£„„„†<E2809E>T¦•„„……Ž„„<E2809E>ˆŽ„„„ŒŽ„„„Ša^w„…„‰a^<5E>š ž…Šˆ„Ž„…„Š<E2809E>¡§<C2A7>¨©¦šÃÆ»¹ÈȽ»tÇÃÁ¹È¼½Â»“<C2BB>¢£˜<C2A3>™¢˜a^w„…„Ša^<5E>š•£„„„†<E2809E>š „‡„†<E2809E>š …Šˆ<CB86>š …Šˆ†a^<5E>¡­˜„„„†<E2809E>¨¦•„„……Ž„‡„†Ž„„„ŒŽ„„„Ša^w„……„a^<5E>Ÿ™­<E284A2>š•£„„„ˆ<E2809E>¨¦•„„<E2809E>„Ž„„<E2809E>†Ž„„„Ž„„„<E2809E>a^w„…‰„a^<5E>Ÿ™­<E284A2>¡­˜„„„„<E2809E>—¡©„„„Œ<E2809E>š•<C5A1>„„„ˆa^<5E>«•<C2AB>„„‡„a^<5E>§£©„„…†<E280A6>—¡¤„„‰„Ž„„‡‰Ž„„Š<C5A0>«•<C2AB>„„†„a^<5E>§£©„„…†<E280A6>—¡¤„„‰„Ž„„‡ŠŽ„„Š<C5A0>«•<C2AB>„„†„a^<5E>™¢˜a^w„†„„a^<5E>™¢˜a^w„†„…a^<5E>™¢˜a^w„ˆ„„a^<5E>¤¦<C2A4><C2A6>§£©„„††<E280A0>˜¢¤„ˆ„„<E2809E>™ª™„ˆ„…a^w„ˆ„…a^<5E>™ª™„„…†

View file

@ -1 +1 @@
ro垥暈時o悲暆晻煏暈殹ú簳晻潯<EFBFBD>畷晻暋<EFBFBD>﹔o垥暈杛o肠〃埠晻暆Ξ晻晼—畅ro垥暈梤o悲暆晻煏暈洝ú簳晻潯<EFBFBD>畷晻棥<EFBFBD>﹔o垥暈榬o肠〃埠晻暆Ξ晻晿—畅ro垥暈檙o肠〃埠晻暆Ξ晻暀—畅ro垥暈歳o〃埠晻棙Ξ晻晻—畅ro垥暈況o〃埠晻棙Ξ晻晽—畅ro垥枙時o“<EFBFBD>「春晻枛ˇ车晼晻煏晻暉晻晽Υ晻晻」乏晻櫄煏暈暉晻潠煏暁榬o垥枙杛o“<EFBFBD><EFBFBD>呠杂屬呍帐訐穿—畅ro垥枛時o“<EFBFBD>悲暅潟煏枛枴哺瑖┢犹首唶呚翁迂吰资呎哑刭首噬ro蒲褏咱首呝褪吷栽讚穿ro<EFBFBD>屫呎自瞧茄迏釉賲茀淘陨呂墒苧o僭吺淤首吰言邮摀摗炒<EFBFBD><EFBFBD>﹔o垥枛杛o“<EFBFBD>「春晻枛ˇ车晼枙煏晻暉晻晽Υ晻晽」乏晻櫆煏暈棢晻暀煏晼渞o垥枟時o汞晻棖煏枟杛o“<EFBFBD>脯驹趨褪谱呝褪呚在由呍藚宗赝斡蘲o芷偈讌俗砸呠钨臀訐穿ro<EFBFBD>呠在焉訉賲鞘吰吿栽蓞紊e茀僭呁势蓃o斡呠钨驮谫吰訁莆讌倨有摗炒<EFBFBD><EFBFBD>﹔o垥枟杛o“<EFBFBD>Υ晻晿」乏晻櫇煏暈槦晼殮煏晻杛oro垥枤時o“<EFBFBD>肠〃埠晻暆〖Ξ晻暁〃车晿晻煏枛湡晻晽Ξ晻晽ro〖Ξ晻枙roˇ车晿晻煏晻槦晻晽〖Ξ晻枦roˇ车晿晻煏晻枱晻晽ro脯」悍Θ晻棜ψ蕝苁呚傥蜒呂訁偻蕆o逼寝孜淤亭穿Θ晻晻〃贝roˇ车晿晻煏晻槦晻晽〖Ξ晻洐roˇ车晿晻煏晽暉晻晽〖Ξ晻殨roˇ车晿晻煏晻枱晻晽〖Ξ晻枙roˇ车晿晻煏晻槦晻晽〖Ξ晼櫀roˇ车晿晻煏晽暉晻晽〖Ξ晻枙ro「春晻枛ˇ车晼枙煏晻暉晻晽〖Ξ晻棔ro々车晿晻〖Ξ晻棔ro「春晻枛ˇ车晼枙煏晻暉晻晻睈暆棔—畅ro垥槙時o垥槝時o〉樊脯驹趨厥蕝茀勤儋杂摗炒<EFBFBD>复簳暀槨ū贰哺<EFBFBD>资刎噬呂贀穿〃贝ro〖Ξ晻殨ro「春晻湒ro〃驳晻暅煏晿殶晻晻ro〃驳晻暆煏晿殶晻晻ro〃驳晻棝煏晿枱晼枛ro〖Ξ晻殨—畅ro
<EFBFBD>银妍<EFBFBD><EFBFBD>霰董衛薛祐妤壯鬲竟騷壯妖魚蛻壯壯頃驍<EFBFBD>银妍<EFBFBD><EFBFBD>霰董瘧怬壯秦螂嬪壯迅敷<EFBFBD><EFBFBD>壯骨<EFBFBD>傍顫魚藪妖壯惕妍韋瘧怬壯秦螂嬪壯底敷<EFBFBD><EFBFBD>壯高<EFBFBD>傍顫竟騷壯妖魚蛻壯妒頃驍<EFBFBD>银妍<EFBFBD><EFBFBD>霰董衛薛祐妤壯乾竟騷壯妖魚蛻壯妨頃驍<EFBFBD>银妍<EFBFBD><EFBFBD>瘧怬妝玟螂嬪壯妊敷<EFBFBD><EFBFBD>壯鬼<EFBFBD>竟騷壯帚魚蛻壯妝頃驍<EFBFBD>银妍<EFBFBD><EFBFBD>瘧怬妝玟螂嬪壯奕敷<EFBFBD><EFBFBD>夾壯<EFBFBD>麻標傘巛壯豕雩龔夾壯惕壯妤壯妝魚裟壯壯傚伓壯型惕妍妤壯祠惕妞<EFBFBD><EFBFBD>夾夾<EFBFBD>麻標傍尨燭𢎽緪癔埈諗憟傅ⅶ頃驍<EFBFBD>银豕<EFBFBD><EFBFBD>翹迣衛薛悖妤夾豕傍尨蒈嵒睖<EFBFBD><EFBFBD>罻碚<EFBFBD><EFBFBD>誽崹醏橎<EFBFBD><EFBFBD>蝆埈縰<EFBFBD><EFBFBD>貁縃戊齪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>賟箬崷蜸堒緦𠏵䡱緧<EFBFBD>靷嗏<EFBFBD>錛䚀槶塕𠏵蜪樔孕戊齪輒敷<EFBFBD><EFBFBD>夾豕<EFBFBD>麻標傘巛壯豕雩龔夾豆惕壯妤壯妝魚裟壯妝傚伓壯垣惕妍店壯妨惕夾<EFBFBD><EFBFBD>夾岱<EFBFBD>鹿佹壯岳惕貝<EFBFBD><EFBFBD>翹迣騫憶緶姄嗏<EFBFBD><EFBFBD>耩懤<EFBFBD>篊烾擣葮槧<EFBFBD>鍐醏<EFBFBD>楌緛𢎽鳪葮憟傅ⅶ<EFBFBD>燭𨫎緶蜞<EFBFBD><EFBFBD>欿𠏵䡱緧<EFBFBD>靷嗏𤩱<EFBFBD>葄嵫<EFBFBD>馲𢎽鳪蛺擫𠏵<EFBFBD><EFBFBD>醓槻戊齪輒敷<EFBFBD><EFBFBD>夾岳<EFBFBD>麻標魚裟壯妒傚伓壯垢惕妍玩夾洵惕壯<EFBFBD><EFBFBD><EFBFBD>夾洹<EFBFBD>麻標傍顫竟騷壯妖割蛻壯妞竟龔妒壯惕豕拳壯妝魚蛻壯妝<EFBFBD>割蛻壯豆<EFBFBD>雩龔妒壯惕壯玩壯妝割蛻壯身<EFBFBD>雩龔妒壯惕壯迂壯妝<EFBFBD>傍尨傚旻魚蛹壯帕賊<EFBFBD>鎏𤍢錟蝆鉮<EFBFBD><EFBFBD><EFBFBD>崷謮馲錈雲齪輒螂漣壯妊疑<EFBFBD><EFBFBD>衙カ爭妤壯妒惕壯底庛嬪妣<EFBFBD><EFBFBD>衙カ爭妤壯岱惕壯底庛嬪妞<EFBFBD><EFBFBD>衙カ爭妤壯夾惕壯底庛嬪夾<EFBFBD><EFBFBD>衙カ爭妤壯妒惕壯底庛嬪走<EFBFBD><EFBFBD>衙カ爭妤壯岱惕壯底庛嬪夾<EFBFBD><EFBFBD>岊怬夾迅衙カ豕妤壯壯惕壯底庛嬪妝<EFBFBD><EFBFBD>酷カ爭妊庛嬪妝<EFBFBD><EFBFBD>岊怬夾迅衙カ豕妤壯壯惕壯妊衛╡祟妊敷<EFBFBD><EFBFBD>妒壯<EFBFBD>银牧<EFBFBD><EFBFBD>ネ應騫憶緶𤍢嗈𠏵畑擫錛憟傅ⅶ傘巛壯囿竟蟹傍尨ロ塎縔<EFBFBD>鳪戊齪輒疑<EFBFBD><EFBFBD>庛嬪妞<EFBFBD><EFBFBD>岊怬妙<EFBFBD><EFBFBD>瘧カ壯拳壯狀惕壯<EFBFBD><EFBFBD>瘧カ壯秧壯狀惕壯<EFBFBD><EFBFBD>瘧カ妝面壯爸惕豕<EFBFBD><EFBFBD>庛嬪妞妊敷<EFBFBD><EFBFBD>

View file

@ -1 +1 @@
=:S``i`=:l}~qls}…``cglvqy````lu~t=:S``ia=:l}~qls}…``cglvqy```alu~t=:S``ib=:l}~qls}…``cglvqy```blu~t=:S``ic=:l}~qls}…``cglvqy```clu~t=:S``id=:l}~qls}…``cglvqy```dlu~t=:S`a``=:l€ylvq```bl„q``chj``ibj```ej```c=:S`a`a=:S`a`b=:l€ylƒ…``aalt~€`a`blvq```dl„q``d`j``ibj```dj```e=:S`a`c=:lv|z`fhaj`a`e=:ly„z``agj`a`d=:l€yl}ƒw|Ÿ“›•”^l~tlu~t=:S`a`d=:l€ylƒ…``bblwy„a`aglv|[`fhaly„]``ag=:l}ƒwl„……£•”P¤˜•Pmsœ™ž™“P{•©m^l~tls|lu†u`a`e=:S`a`e=:l€ylƒ…``aalt~€`a`clvq````l„q``daj``i`j``aej```i=:S`a`f=:l{u‰lƒ…``aalq~€`a`fj``0`j```blvq```dl„q``dbj``idj```ej```i=:S`aa`=:lu†u`aaa=:S`aaa=:l{u‰lƒ…``aalq~€`aa`j````j```blvq```bl„q``dcj``ibj```dj``ac=:S`ab`=:l{u‰lvq```dl„q``d`j``idj``abj```b=:S`c``=:S`c`a=:lt~€`c`alrq```alv|]`fh`lu~t=:S`c`b=:lt~€`c`bls}…```glrq``a`ls~€`c``j``acj````lrƒ|````lu~t=:Sa```=:l{u‰lvr````j``afl‡qy`be`ls}…````=:l}ƒcl„…ls}…``ae=:t•¤•”P}Ÿž£¤•¢Pˆ^lv}``afl‡qy`af`lv|[fa`fl~tls|ls}…``cg=:ls~€`c``j````j````lv|[`fh`lu~t=:Sab``=:l{u‰lq~€ab``j``b`j```b=:lv~ab``j``aflvqy```a=:l‡qy`a``lvq```al„q``dgjab``j``chj``af
>;Taaja>;m~rmt~<7E>adhmwrzaaaamw}{gcackaajfmvu>;Taajb>;m~rmt~<7E>adhmwrzaaabmw}{gcackaajfmvu>;Taajc>;m~rmt~<7E>adhmwrzaaacmw}{gcackaajfmvu>;Taajd>;m~rmt~<7E>adhmwrzaaadmw}{gcackaajfmvu>;Taaje>;m~rmt~<7E>adhmwrzaaaemw}{gcackaajfmvu>;Taajf>;mt~∥aiakaaagkaabgmvu>;Tabaa>;mzmwr€aaacm<63>raadikaajckaaafkaaad>;Tabab>;Tabac>;mzmо<6D>abbmu∥bacmwr€aaaem<65>raaeakaajckaaaekaaaf>;Tabad>;mw}{agibkabaf>;mz<6D>aabhkabae>;mzm~з}<7D>莫抹_m€umvu>;Tabae>;mzmо<6D>accmxz<78>abhmw}\agibmz<6D>aabh>;m~зm<D0B7>ユ、抹Q・剿Qnt撓泅撚|蓑n_m€umt}€mv<6D>abaf>;Tabaf>;mzmо<6D>abbmu∥badmwr€aaaam<61>raae1kaajakaabfkaaaj>;Tabag>;m|v確о<E7A2BA>abbmr∥bagkaaaakaaacmwr€aaaem<65>raaeckaajekaaafkaaaj>;Tabba>;mv<6D>abbb>;Tabbb>;m|v確о<E7A2BA>abbmr∥bbakaaaakaaacmwr€aaacm<63>raaedkaajckaaaekaabd>;Tabca>;m|v確wr€aaaem<65>raaeakaajekaabckaaac>;Tadaa>;Tadab>;mu∥dabms€raaabmw}^agiamvu>;Tadac>;mu∥dacmt~<7E>aahms€raabamt∥daakaabdkaaaamsмaaaamvu>;Tbaaa>;m|v確w€saaaakaabgm<67>zacfamt~<7E>aaa>;m~<7E>m<EFBFBD>t~<7E>abf>;u沫亦・抹Q~<7E>洟・魅Q雲mw€~aabgm<67>zabgamw}\gbagm€umt}€mt~<7E>adh>;mt∥daakaaaakaaaamw}\agiamvu>;Tbcaa>;m|v確rcaakaacakaaac>;mw€bcaakaabgmwrzaaab>;m<>zabaamwr€aaabm<62>raaehkbcaakaadikaabg

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -1 +1 @@
|y挓煥焲y<E784B2><EFBFBD>寄煙牐<E78599>案煙煙<E78599>匠|y挓煥爘y<E78898><EFBFBD>寄煙牐<E78599>案煙煚<E78599>匠|y挓煥<E68C93>y<EFBFBD><EFBFBD>寄煙牐<E78599>案煙煛<E78599>匠|y挓煥<E68C93>y<EFBFBD><EFBFBD>寄煙牐<E78599>案煙煝<E78599>匠|y挓煥<E68C93>y<EFBFBD><EFBFBD>寄煙牐<E78599>案煙煟<E78599>匠|y挓煥<E68C93>y<EFBFBD>案煙煚<E78599>匠|y挓牊焲y<E784B2><EFBFBD>娇煚煙<E7859A>煙煩煙煛<E78599>灸煙牋|y<>熬煙煟<E78599><EFBFBD>涟煙<E78599>煚あ<E7859A><EFBFBD>y挓<79>焲y<E784B2><EFBFBD>懊|y<>还牐 <E78990><E38080><EFBFBD>y<EFBFBD>还牐<E8BF98><E78990><EFBFBD><EFBFBD>y<EFBFBD>还煣ⅳ<E785A3><E285B3>爘y<E78898><EFBFBD>牧妻嵊鈴圬肿銖溥忋自忊裔栽轁<E6A0BD><EFBFBD>涣|y煟湡<E7859F>煣徠卣詮艳嵩徱棕塾潾骄倡唇硘y挓<79>爘y<E78898><EFBFBD><EFBFBD>牧妻嵊鈴圬肿銖溥忋自忊裔栽轁<E6A0BD><EFBFBD>涣|y<>牧谱鑿愚輺銖柁鋸阈谠徯忈遭惝<E981AD><EFBFBD>匠|y挓<79><E68C93>y<EFBFBD><EFBFBD>粴牐¥<E78990><EFBFBD>牧妻嵊鈴圬肿銖溥忋自忊裔栽轁<E6A0BD><EFBFBD><EFBFBD>牧绒鋸谳捩洀笍拚阍輳嵩肄嵊杂忔仔銃y笍墼嗅菰訌剌忋仔銖蒉阍艳挹潩潾骄倡唇硘y挓<79><E68C93>y<EFBFBD><EFBFBD>露妻嵊鈴圬肿銖溥忋自忊裔栽轁<E6A0BD><EFBFBD>涣|y<>牧笍哚需徴掎忚掬釓遑毅掎铦<E68E8E><EFBFBD>匠|y挓<79>焲y挓 焲y<E784B2><EFBFBD>露绒鋸肇萦忀捭棕葜忁諒剌阍嵩忏潩潾骄倡唇硘y挓 爘y<E78898><EFBFBD><EFBFBD>露米葬詵鈴袕蒉阍艳挹洀肄逶嵩觸y剌徲溻銤潩<E98AA4><EFBFBD>还牐 <E78990> <EFBFBD>祷範ぉ煛 <E7859B>匠|y挓 <E68C93>y<EFBFBD><EFBFBD><EFBFBD>牧|y侈忚o鋸嫘葶忋迯捱暂忋自忀捭匝揶诋<E68FB6>焦煙煙<E78599>粴牐 |y<><EFBFBD>寄煙牊辉嗅菰訌邹鎻戕忋嵩秀徴坜抻杂|y徂艳汊惈瓢笩牓煫骄倡良墨唇硘y挓 <E68C93>y<EFBFBD><EFBFBD>露睫阕剌謴咱庠徸葬詮羞咴嗅鈢y遭咴邑雄坭忎庠珍蹪潩<E8B9AA><EFBFBD>匠|y挓·焲y<E784B2>慈|y<>懊|y<>还牐<E78990>·<EFBFBD>y<EFBFBD>还牐<E78990>·<EFBFBD>y<EFBFBD>还牐 <E78990>·<EFBFBD>y<EFBFBD>还牐<E8BF98><E78990>·<EFBFBD>y<EFBFBD>还煣<E785A3>·牜磁礋煚▅y挓·爘y<E78898><EFBFBD>露|y侈忚掬忔休銖戕忈遭惝<E981AD>焦煙煙<E78599>熬煙煟<E78599>寄煙煙<E78599>案煙<E6A188><E78599>涣|y潩潩潾骄倡不緗y<E7B797>案煚煙<E7859A>笟牊煙|y<>娇煛牊<E7859B>粶煣<E785A3>粴牐<E7B2B4><E78990>瘸煙煛<E78599>寄|y<>涟煙Β<E78599>煥ぉ煙牎<E78599>煙▅y挓·<E68C93>y<EFBFBD><EFBFBD><EFBFBD>牧伦詮剽輺銖苻遑葜洀唁銖劂徾揶阝|y圬谠忊自栤忊阖圹徯圬逶潾骄倡唇硘y挓·<E68C93>y<EFBFBD><EFBFBD><EFBFBD>牧侈忚掬忔休銖戕徲嵝剌忋自忔秀葬|y蔗捃彶溽坭<E6BABD>冉篃煙煫不緗y<E7B797>粴牐<E78990>熬煙煚<E78599>寄煙煙<E78599>案煚煙<E7859A>案煙煚|y<>案煙<E6A188>|y<>寄煙牐<E78599>娇煛<E5A887><E7859B>煙牘煙煛<E78599>案煙<E6A188><E78599>娇煛<E5A887><E7859B>煙牘煙煙|y<>案煙<E6A188>|y<><EFBFBD>牧伦詮赵圹忊掬萦徯廑栽邼<E6A0BD>境|y<>匠|y挓·<E68C93>y<EFBFBD><EFBFBD>娇煛<E5A887><E7859B>·ī煙煙<E78599>粴煣<E785A3>粴牊<E7898A>粶牐<E7B2B6><E78990>粴牐<E78990>案煙牊<E78599>匠|y挓·<E68C93>y<EFBFBD><EFBFBD>露米詮言訓鈴廪哌剌謴嬖銤<E5AC96><EFBFBD>匠|y挓ˉ<E68C93>
0==F=IZ[NIPZb==>AISNV====IR[Q0==F>IZ[NIPZb==>AISNV===>IR[Q0==F?IZ[NIPZb==>AISNV===?IR[Q0==F@IZ[NIPZb==>AISNV===@IR[Q0==FAIZ[NIPZb==>AISNV===AIR[Q0==FBISNV===>IR[Q0=>==IXRfIN[]=>==G====G===?I`\b==>>ISN\===AIP``Ia_N==AEG==FAG=>B@G==>C0=?==IXRfI`NaISYW>AA>G=?=@ISYW>AA=G=?=?ISYW=E@BG=?=>IZ`TIab_d|q<7F>-yvtu<74>-<2D>}-<2D>ur-<2D>prr{;I[\QIPY_=A:=E:=E-dvsr-o|r-puvyq;I[\QIR[Q0=?=>IXRfIZ`TIab_d|q<7F>-yvtu<74>-<2D>}-<2D>ur-<2D>prr{;I[\QIPY_Iab_du<64>-q|{4<>-<2D>|<7C>-<2D>nxr-n-r<7F><72>LI[\QIR[Q0=?=?IXRfISY8>AABIZ`TIab_d|q<7F>-yvtu<74>-<2D>}-<2D>ur-<2D>prr{;I[\QIPY_Iab_f|<7C>-x{|<7C>9-V-|s<>r{-rp|qrq-<2D>un<75>V-yrn{rq-v{-<2D>un<75>-{|<7C>ro||x;;;I[\QIR[Q0=?=@IXRfIZ`Td|q<7F>-yvtu<74>-<2D>}-<2D>ur-<2D>prr{;I[\QIPY_Iab_V-}n<7F>-s|-<2D>|<7C>-<2D>vp<76>|<>;I[\QIR[Q0=?>=0=??=IXRfIZ`Tf|<7C>-sv{q-{|<7C>uv{t-|s-v{<7B>rr<7F><72>;;;I[\QIR[Q0=??>IXRfI`NaIZ`Taurr4<72>-n-{|<7C>ro||x9-p|<7C>rrqv{-q<><71><EFBFBD>;;;I[\QISYW>AA>G=??@ISYW>AABG=???IR[Q0=???IXRfIZ`TIab_Q|-<2D>|<7C>-<2D>n{<7B>-<2D>|-|}r{-<2D>ur-{|<7C>ro||xLIf[W====ISY8>AA> IPY_IPZb==>=Yrn{rq-u|<7C>-<2D>|-<2D>rn<72>-sy||qrq|o|<7C><>.IdNV=>C=I[\QI_ZbIR[Q0=??@IXRfIZ`T[|<7C>uv{t-ry<72>r-urr-n}}rn<6E>r<>}rpvnyy<79>-<2D><>rs<72>y;;;I[\QIR[Q0=?A=IXRfIZ`TIab_T|-onpx-<2D>|-<2D>ur-yno<6E>v{<7B>uLIf[W====I]_VISN\===AIa_N==ACG==FAG===EG===F0=?B=IXRfI`NaISYW>AAAG=?BDISYW>AA?G=?BAISYW>AA>G=?B@ISYW>AA=G=?B?ISYW=E@CG=?B>IRcR==>F0=?B>IXRfIZ`TQ|-<2D>|<7C>-<2D>n{<7B>-<2D>|-r<7F><72>LIf[W====ISN\===AIPZb====IdNV==?=IPY_;;;;;I[\QIPY\IdNV=>==IYV8>===IQ[]=?>=ISY:=E@CISY8>AA=IZfQ===?I_ZbIa_N==D@G==FBG==>?G===F0=?B?IXRfIZ`TIab_`ur-v<>{4<>-z|<7C>v{t9-o<><6F>-v<>-y||x<>yvxr-<2D>ur4<72>-<2D><>vyy-nyv<79>r;I[\QIR[Q0=?B@IXRfIZ`TIab_Q|-<2D>|<7C>-<2D>n{<7B>-<2D>|-qnv{-<2D>ur-<2D>n<EFBFBD>rs|z-P<>y<7F>LIf[W====IPY\ISY8>AA?ISN\===>IPZb====IdNV=>==ISNV===>IdNV==C=IPZb==>AIN[]=?C=G===>G===?IdNV==A=IN[]=?C=G===>G====IdNV==B=IZ`TIab_`ur-sryy-<2D>|<7C>{q-n<>yrr};I[\QIR[Q0=?BAIXRfIP[]=?C=G=?BFG====ISY8=E@CISY8>=A?ISY:>AA=ISY8>AAAIdNV==>=IR[Q0=?BDIXRfIZ`Taur-orq4<71>-<2D>|}}v{t-<2D>r<EFBFBD>;I[\QIR[Q0=?C=

Binary file not shown.

View file

@ -1 +1 @@
ro垥暈時o悲晿櫀煏暈殹ú簳晻灐<EFBFBD>畷晻暋<EFBFBD>﹔o垥暈杛o悲晿櫀煏暈洝ú簳晻灐<EFBFBD>畷晻枴<EFBFBD>﹔o垥暈梤o悲晿櫀煏暈湣ú簳晻灐<EFBFBD>畷晻棥<EFBFBD>﹔o垥暈榬o悲晿櫀煏暈潯ú簳晻灐<EFBFBD>畷晻槨<EFBFBD>﹔o垥暈檙o悲晿櫀煏暈灐ú簳晻灐<EFBFBD>畷晻櫋<EFBFBD>﹔o垥暈歳o〃埠晻棟Ξ晻晻—畅ro垥暈況o〃埠晻棟Ξ晻晼—畅ro垥暈渞o〃埠晻棟Ξ晻晽—畅ro垥暈漴o〃埠晻棟Ξ晻晿—畅ro垥暈瀝o〃埠晻棟Ξ晻暀—畅ro垥枙時o〉樊Υ晻晽」乏晻枛煏暈棢晻晼煏晿漴o垥枙杛o〉樊Υ晻晽」乏晻枛煏槙潫晻晼煏晿漴o垥棔時o“<EFBFBD>脯岗胜穿〃狈臼仆憛畢杏攒呁首摗炒﹔o雇瀑屫呝褪吶谫蕝涛籽呠驮呚倨挢ro仍哉噬呞諈斡叇踪挖讓貐驮谪蕆o蒲褏偻蕝傥沂憛孜掏伽穿ro竿e呚驮苁蓞谡呁首蕝釉賲僭詒o言犹吰淘摗炒﹔o际吽在由呁首呠曝褪蓞谡呑翁唾ro褪资呂訁偻蕝资厥综晕讚穿ro竿蕝稍守訉賲厥室呝詤盐惺呞豶o亿韧摀摗炒﹔o畢稍訉賲杏攒呠娃憛匚尤蕝赝蕦豶o茀参椅唐呄谪賲盐惺呞負穿—畅ro垥槙時o〉樊ro睈晿棝睈晿湒睊晿棖睈晿洍ro々车晿晻—华晿晼ro垥槙杛o—华晻殭ro垥檿時o—畅ro垥檿杛o“<EFBFBD>京晻晽々车暀晻Θ晻暃ν啞炒<EFBFBD>ū磖oˇ车暀晽煏晻洘晻晽〖Ξ晻湞々车暀晽睈晿湒—畅ro垥檿梤o垥櫀時o“<EFBFBD>〃埠晻晻…波京晻晽ro〃车暀枙煏枤暉晻晻〖Ξ晻晼roˇ车暀枙煏晼枱晻晽〖Ξ晼殨roΞ晻晼〖Ξ晼晻ro「波々车暀枙〖Ξ晻殨〃埠晻棟—华暀枛ro垥櫀杛o悲棛暀煏晻暋<EFBFBD>悧檿櫋<EFBFBD>獣櫀梤o垥櫀梤o—华晻潧
|y挓煥焲y<E784B2><EFBFBD>还煝 <E7859D>煥か布臒煙ǐ蛋笩煙煫唇硘y挓煥爘y<E78898><EFBFBD>还煝 <E7859D>煥カ布臒煙ǐ蛋笩煙牜唇硘y挓煥<E68C93>y<EFBFBD><EFBFBD>还煝 <E7859D>煥Λ布臒煙ǐ蛋笩煙唇硘y挓煥<E68C93>y<EFBFBD><EFBFBD>还煝 <E7859D>煥Й布臒煙ǐ蛋笩煙<E7ACA9>唇硘y挓煥<E68C93>y<EFBFBD><EFBFBD>还煝 <E7859D>煥ǐ布臒煙ǐ蛋笩煙唇硘y挓煥<E68C93>y<EFBFBD>寄煙¨<E78599>案煙煙<E78599>匠|y挓煥<E68C93>y<EFBFBD>寄煙¨<E78599>案煙煚<E78599>匠|y挓煥<E68C93>y<EFBFBD>寄煙¨<E78599>案煙煛<E78599>匠|y挓煥<E68C93>y<EFBFBD>寄煙¨<E78599>案煙煝<E78599>匠|y挓煥▅y<E29685>寄煙¨<E78599>案煙煟<E78599>匠|y挓牊焲y<E784B2><EFBFBD>熬煙煛<E78599>涟煙牋<E78599>煥々煙煚<E78599><EFBFBD>y挓牊爘y<E78898><EFBFBD>熬煙煛<E78599>涟煙牋<E78599><E7898B>З煙煚<E78599><EFBFBD>y挓<79>焲y<E784B2><EFBFBD>露落援<E890BD><EFBFBD>涣仍凶洀笍谳捩徸葬潾骄硘y米秀栤忋自徱溷詮重巅忔邹忊阈桠|y肄捱杂忎邚剌彴徙卒釚鈴邹溻詜y雄蹚阕詮阖茉洀嶝肿惝<E882BF>境|y伦詮庾捩杂忎邚自嵩忀捭忋揶|y坜葜徯洲潾骄硘y圃徴o漭訌自釓嫘庾杂忎邚嶝肿銃y自嵩徹輳阕詮嵩庠徨挢釢<E68CA2>境|y伦詮愚遭輺銖庠攒忋迯圬谠忎鈢y茕易潩潾骄硘y笍愚輺銖谳捩忔阻洀庳菀詮庾詵鈢y袕钾茇中徺溻銖圬谠忎鉂<E5BF8E><EFBFBD>匠|y挓<79>焲y<E784B2>粮|y<>粴煝ˉ<E7859D>粴煝<E7B2B4><E7859D>粶煝<E7B2B6><E7859D>粴煝ァ|y<>娇煝煙<E7859D>糯煝煚|y挓<79>爘y<E78898>糯煙ぃ|y挓<79>焲y<E784B2>匠|y挓<79>爘y<E78898><EFBFBD>瘸煙煛<E78599>娇煟煙<E7859F><EFBFBD>安煙煡白惈骄倡不緗y<E7B797>娇煟煛<E7859F>煙ォ煙煛<E78599>案煙Η<E78599>娇煟煛<E7859F>粴煝<E7B2B4><E7859D>匠|y挓<79><E68C93>y挓 焲y<E784B2><EFBFBD>寄煙煙<E78599><EFBFBD>瘸煙煛|y<>娇煟牊<E7859F>牑煩煙煙<E78599>案煙煚|y<>娇煟牊<E7859F>煚牘煙煛<E78599>案煚<E6A188>|y<>案煙煚<E78599>案煚煙|y<><EFBFBD>娇煟牊<E7859F>案煙<E6A188><E78599>寄煙¨<E78599>糯煟牋|y挓 爘y<E78898>还。煟<E38082>煙煫祷殹<E7A5B7>磁礋 <E7A48B>y挓 <E68C93>y<EFBFBD>糯煙Д|y挓<79>焲y<E784B2><EFBFBD><EFBFBD>牧掇徰幸趶戕忋自徾醒栳剌阕<E5898C>冉篃煙焲y<E784B2><EFBFBD>熬煙煟<E78599>涟煙<E78599>煙煣<E78599><EFBFBD>

View file

@ -8,12 +8,14 @@
#0093
<MNA<CMU0008<FAI0003<END
#0094
<MNA<CMU0008<FAI0004<END
<MNA<FLJ0800:0097<CMU0008<FAI0004<END
#0095
<CMU0023<FAI0000<END
#0096
<CMU0023<FAI0002<END
#0097
<CMU0023<FAI0004<END
#0100
<KEY<SOU0011<ANP0100:0000:0002<FAO0000<TRA0045:0090:0081:0053
@ -65,4 +67,3 @@ Labyrinth?<NOD<FAC0000<CLO
<CMP0026:0031:0111
<WAI0050<END
<END

View file

@ -1,14 +1,16 @@
#0090
<MNA<CMU0037<FAI0000<END
<MNA<CMU0037<FAI0000<FLJ6202:0095<END
#0091
<MNA<CMU0037<FAI0001<END
<MNA<CMU0037<FAI0001<FLJ6202:0095<END
#0092
<MNA<CMU0037<FAI0002<END
<MNA<CMU0037<FAI0002<FLJ6202:0095<END
#0093
<MNA<CMU0037<FAI0003<END
<MNA<CMU0037<FAI0003<FLJ6202:0095<END
#0094
<MNA<CMU0037<FAI0004<END
<MNA<CMU0037<FAI0004<FLJ6202:0095<END
#0095
<CMP0080:0006:0016<END In Camp mode, make Camp chest accessible without flight or damage boost
#0100
<PRI<FAO0002<TRA0038:0092:0005:0003

View file

@ -28,6 +28,13 @@
#0101
<PRI<FAO0004<TRA0012:0094:0037:0011
#0102
<PRI<FLJ0324:0104
<ITJ0001:0103
<MSGLocked.<NOD<END
#0103
<SOU0022<GIT1001<FL+0324<FL+0441
<MSG<TURUsed =Arthur's Key=.<NOD<IT-0001<GIT0000<CLO<EVE0104
#0104
<PRI<SOU0011<DNP0102<FAO0004<TRA0011:0094:0016:0053
#0200
<KEY

View file

@ -52,6 +52,10 @@ robots!<WAI0160<NOD<RMU<END
<KEY<MSGNothing else here appears
especially useful...<NOD<END
#0240
<KEY<MSG<TURGo back to the labyrinth?<YNJ0000
<PRI<FAO0004<TRA0046:0094:0008:0009
#0250
<KEY
<SAT

View file

@ -69,3 +69,7 @@ a Mimiga just like us.<NOD<END
#0412
<EVE0086
#0500
<KEY<MSG<TURGo back to the labyrinth?<YNJ0000
<PRI<FAO0004<TRA0046:0094:0008:0009

View file

@ -31,12 +31,16 @@
<EVE1002
#1002
<CMU0000<EVE1010
<CMU0000<EVE1004
#1003
<FL-0836
<EVE1010
#1004
<FLJ6200:1010
<FL+6300<EVE1010
#1010
<NCJ0336:1011
<TRA0015:0410:0016:0012<END

View file

@ -1 +1 @@
?<Ubbkb?<n€snu㍍bcjn〝{bbbcn久bbbbnxs{bbbbnw€v?<Ubbkc?<n€snu㍍bcjn〝{bbbcn久bbbbnxs{bbbcnw€v?<Ubbkd?<n€snu㍍bcjn〝{bbbcn久bbbdnxs{bbbdnt<6E>bbbbnw€v?<Ubbke?<n€snu㍍bcjn〝{bbbcn久bbbbnxs{bbbenw€v?<Ubbkf?<n€snu㍍bcjn〝{bbbcn久bbbbnxs{bbbfnw€v?<Ubbkg?<nu㍍bdenxs{bbbbnw€v?<Ubcbb?<n}w杵xsbbcnu<6E>n<EFBFBD>sbbfilbbkclbbbjlbbbk?<Ub2bb?<Ubdcb?<Ucbbb?<n}w杵t《cbbbnx~]hcbk?<ns€dbblbbcblbbbb?<ns€dcblbbcblbbbb?<n鋭{bebbnxsbbd?<n〝{bbbbnu<6E>nw<6E>cbbc?<Ucbbc?<nw<6E>cbbd?<Ucbbd?<nu㍍bbbnw<6E>cbcb?<Ucbbe?<nx~_bjeh?<nw<6E>cbcb?<Ucbcb?<n€u|beehlcbcc?<n<>sbbcglbfcblbbchlbbcd?<Ucbcc?<nx~|hbbdlcbcd?<n{<7B>bbbg?<n<>sbbcglbfcblbbchlbbcd?<Ucbcd?<n{<7B>bbbh?<n<>sbbcglbfcblbbchlbbcd
XUn{{кXU∟剏㍽丐{{|ョ<>剩{{{|∟、旬{{{≡券{{{{≒剌XUn{{лXU∟剏㍽丐{{|ョ<>剩{{{|∟、旬{{{≡券{{{|≒剌XUn{{мXU∟剏㍽丐{{|ョ<>剩{{{|∟、旬{{}≡券{{{}㍾棊{{{{≒剌XUn{{нXU∟剏㍽丐{{|ョ<>剩{{{|∟、旬{{{≡券{{{~≒剌XUn{{<7B>XU∟剏㍽丐{{|ョ<>剩{{{|∟、旬{{{≡券{{{≒剌XUn{{оXU㍽丐{{}~≡券{{{{≒剌XUn{|{{XU⊥畝≡建{{{|㍽棍<E38DBD>搆{{{{л<>{{ュ{{{ЧUn{}{{XUn{}|{XUn|{{{XU⑫畝㍾嚮|{{{≡要-{ЧU㈹剱{}{{<7B>{|{<7B>{{{XU㈹剱{}|{<7B>{|{<7B>{{{XU<58>券{~{{≡建{{{}XU<58>剩{{{{㍽棍≒。酢{{|XUn|{{|XU≒。酢{{}XUn|{{}XU㍽丐{{{{≒。酢{{XUn|{{~XU≡踊{ミ々U≒。酢{|{XUn|{{XU≡藍±{{<7B>{|{XU≡要×{{≒。酢{|{XUn|{|{XU⊿歯{~~≦|{||XU<58>搆{{|€<>|{<7B>{|≦{{|}XUn|{||XU≡藍{}<7D>{|}XU∑殼{{{€XU<58>搆{{|€<>|{<7B>{|≦{{|}XUn|{|}XU∑殼{{{々U<E38085>搆{{|€<>|{<7B>{|≦{{|}

BIN
src/assets/icon/Arthur2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/icon/Camp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -78,7 +78,7 @@ local function _itemData()
snake = {
name = "Snake",
script = "<EVE0005",
attributes = {"weapon", "weaponBoss", "nonProgressive"}
attributes = {"weapon", "weaponBoss", "nonProgressive", "weaponStrong"}
},
bubbler = {
name = "Bubbler",
@ -88,17 +88,17 @@ local function _itemData()
machineGun = {
name = "Machine Gun",
script = "<EVE0008",
attributes = {"weapon", "weaponBoss", "weaponSN", "flight", "mandatory"}
attributes = {"weapon", "weaponBoss", "weaponSN", "flight", "mandatory", "weaponStrong"}
},
blade = {
name = "Blade",
script = "<EVE0009",
attributes = {"weapon", "weaponBoss", "weaponSN", "mandatory"}
attributes = {"weapon", "weaponBoss", "weaponSN", "mandatory", "weaponStrong"}
},
nemesis = {
name = "Nemesis",
script = "<EVE0010",
attributes = {"weapon", "weaponBoss", "weaponSN", "nonProgressive"}
attributes = {"weapon", "weaponBoss", "weaponSN", "nonProgressive", "weaponStrong"}
},
---------------
@ -359,10 +359,10 @@ local function _itemData()
----------------
-- GAME MODES --
----------------
objBadEnd = objective("Bad Ending", "<FL+6003<EVE0091"),
objNormalEnd = objective("Normal Ending", "<FL+6000<EVE0091"),
objBestEnd = objective("Best Ending", "<FL+6001<EVE0091"),
objAllBosses = objective("All Bosses", "<FL+6002<IT+0005<EVE0091")
objBadEnd = objective("Bad Ending", "<FL+6003"),
objNormalEnd = objective("Normal Ending", "<FL+6000"),
objBestEnd = objective("Best Ending", "<FL+6001"),
objAllBosses = objective("All Bosses", "<FL+6002<IT+0005")
}
local array = {}

View file

@ -4,6 +4,8 @@ function C:new(worldGraph, name)
self.locations = {}
self.world = worldGraph
self.name = name
self.order = worldGraph.order
worldGraph.order = worldGraph.order + 1
end
function C:canAccess(items)

View file

@ -16,9 +16,17 @@ function firstCave:new(worldGraph)
firstCapsule = Location("First Cave Life Capsule", "Cave", "0401", self),
gunsmithChest = Location("Hermit Gunsmith Chest", "Pole", "0202", self),
gunsmith = Location("Tetsuzou", "Pole", "0303", self),
objective = Location("Objective", "Start", "0201", self)
objective = Location("Game Settings", "Start", "0201", self)
}
self.requirements = function(self, items)
if self.world:StartPoint() then
return true
elseif self.world:Arthur() or self.world:Camp() then
return _has(items, "flight") and self.world.regions.mimigaVillage:canAccess(items)
end
end
self.locations.gunsmith.requirements = function(self, items)
return _has(items, "flight") and _has(items, "polarStar") and _has(items, "eventCore") and self.region.world.regions.mimigaVillage:canAccess(items)
end
@ -39,7 +47,11 @@ function mimigaVillage:new(worldGraph)
}
self.requirements = function(self, items)
return _has(items, "weaponSN")
if self.world:StartPoint() then
return _has(items, "weaponSN")
elseif self.world:Camp() or self.world:Arthur() then
return _has(items, "arthurKey") and self.world.regions.arthur:canAccess(items) or self.world.regions.waterway:canAccess(items)
end
end
self.locations.assembly.requirements = function(self, items) return _has(items, "juice") end
@ -70,8 +82,13 @@ function arthur:new(worldGraph)
}
self.requirements = function(self, items)
if _has(items, "arthurKey") and _has(items, "weaponSN") then return true end
return false
if self.world:StartPoint() then
return _has(items, "arthurKey") and _has(items, "weaponSN")
elseif self.world:Camp() then
return self.world.regions.labyrinthB:canAccess(items)
elseif self.world:Arthur() then
return true
end
end
self.locations.risenBooster.requirements = function(self, items) return _has(items, "eventCore") end
@ -90,6 +107,7 @@ function eggCorridor1:new(worldGraph)
self.requirements = function(self, items) return self.world.regions.arthur:canAccess(items) end
self.locations.cthulhu.requirements = function(self, items) return _has(items, "weaponSN") or _has(items, "flight") end
self.locations.eventSue.requirements = function(self, items) return _has(items, "idCard") and _has(items, "weaponBoss") end
self.locations.eventSue:setItem(self.world.items:getByKey("eventSue"))
end
@ -170,7 +188,7 @@ function upperSandZone:new(worldGraph)
}
self.requirements = function(self, items)
return self.world.regions.arthur:canAccess(items)
return self.world.regions.arthur:canAccess(items) and _has(items, "weaponSN")
end
self.locations.curly.requirements = function(self, items) return _has(items, "polarStar") end
@ -197,7 +215,11 @@ function lowerSandZone:new(worldGraph)
}
self.requirements = function(self, items)
return _has(items, "eventOmega") and self.world.regions.upperSandZone:canAccess(items)
if self.world:StartPoint() or self.world:Arthur() then
return _has(items, "eventOmega") and self.world.regions.upperSandZone:canAccess(items)
elseif self.world:Camp() then
return self.world.regions.labyrinthW:canAccess(items)
end
end
self.locations.jenka.requirements = function(self, items) return _count(items, "puppy", 5) end
@ -223,17 +245,21 @@ function labyrinthW:new(worldGraph)
}
self.requirements = function(self, items)
if not self.world.regions.arthur:canAccess(items) then return false end
if _has(items, "eventToroko") and self.world.regions.lowerSandZone:canAccess(items) then return true end
if _has(items, "flight") and _has(items, "weaponBoss") and self.world.regions.labyrinthB:canAccess(items) then return true end
return false
if self.world:StartPoint() or self.world:Arthur() then
if not self.world.regions.arthur:canAccess(items) then return false end
if _has(items, "eventToroko") and self.world.regions.lowerSandZone:canAccess(items) then return true end
if _has(items, "flight") and _has(items, "weaponBoss") and self.world.regions.labyrinthB:canAccess(items) then return true end
return false
elseif self.world:Camp() then
return true
end
end
self.locations.mazeCapsule.requirements = function(self, items) return _has(items, "weapon") end
self.locations.turboChaba.requirements = function(self, items) return _has(items, "machineGun") end
self.locations.snakeChaba.requirements = function(self, items) return _has(items, "fireball") end
self.locations.whimChaba.requirements = function(self, items) return _count(items, "polarStar", 2) end
self.locations.campChest.requirements = function(self, items) return _has(items, "flight") end
self.locations.campChest.requirements = function(self, items) return _has(items, "flight") or self.region.world:Camp() end
self.locations.puuBlack.requirements = function(self, items) return _has(items, "clinicKey") and _has(items, "weaponBoss") end
end
@ -245,7 +271,11 @@ function labyrinthB:new(worldGraph)
}
self.requirements = function(self, items)
return self.world.regions.arthur:canAccess(items)
if self.world:StartPoint() or self.world:Arthur() then
return self.world.regions.arthur:canAccess(items)
elseif self.world:Camp() then
return self.world.regions.labyrinthW:canAccess(items) and _has(items, "weaponBoss")
end
end
end
@ -292,7 +322,6 @@ function waterway:new(worldGraph)
}
self.requirements = function(self, items)
if not self.world.regions.arthur:canAccess(items) then return false end
if _has(items, "airTank") and _has(items, "weaponBoss") and self.world.regions.labyrinthM:canAccess(items) then return true end
return false
end
@ -317,7 +346,7 @@ function eggCorridor2:new(worldGraph)
return false
end
self.locations.dragonChest.requirements = function(self, items) return _has(items, "weapon") end
self.locations.dragonChest.requirements = function(self, items) return _has(items, "weaponSN") or _has(items, "eventCore") end
self.locations.sisters.requirements = function(self, items) return _has(items, "weaponBoss") end
end
@ -409,6 +438,8 @@ local worldGraph = Class:extend()
function worldGraph:new(items)
self.items = items
self.order = 0
self.spawn = ""
self.regions = {
firstCave = firstCave(self),
@ -432,6 +463,16 @@ function worldGraph:new(items)
}
end
function worldGraph:StartPoint() return self.spawn == "Start Point" end
function worldGraph:Arthur() return self.spawn == "Arthur's House" end
function worldGraph:Camp() return self.spawn == "Camp" end
function worldGraph:getSpawnScript()
if self:StartPoint() then return "<FL+6200<EVE0091" end
if self:Arthur() then return "<FL+6201<FL+0301<FL+0302<TRA0001:0094:0008:0004" end
if self:Camp() then return "<FL+6202<FL+0301<FL+0302<TRA0040:0094:0014:0009" end
end
function worldGraph:getLocations()
local locations = {}
for key, region in pairs(self.regions) do
@ -450,6 +491,10 @@ function worldGraph:getMALCO()
return {self.regions.grasstownEast.locations.malco}
end
function worldGraph:getCamp()
return {self.regions.labyrinthW.locations.physician, self.regions.labyrinthW.locations.campChest}
end
function worldGraph:getPuppySpots()
return {
self.regions.upperSandZone.locations.curly,
@ -550,7 +595,15 @@ function worldGraph.locationsArray(locations)
end
function worldGraph:logLocations()
for k,r in pairs(self.regions) do
local array = {}
for k,v in pairs(self.regions) do
table.insert(array, v)
end
local function sort(a,b)
return a.order < b.order
end
for k,r in ipairs(_.sort(array,sort)) do
if next(r.locations) then
logSpoiler("")
logSpoiler("Region: " .. r.name)

View file

@ -144,36 +144,53 @@ function C:getObjective()
end
function C:_shuffleItems(tscFiles)
-- place the objective scripts in Start Point
self:_fastFillItems(self:getObjective(), self.worldGraph:getObjectiveSpot())
-- ensure unique randomization between settings with the same seed
local function shuffle(t)
if self.obj == "objBadEnd" then return _.shuffle(_.shuffle(t)) end
if self.obj == "objNormalEnd" then return _.shuffle(_.shuffle(_.shuffle(t))) end
if self.obj == "objAllBosses" then return _.shuffle(_.shuffle(_.shuffle(_.shuffle(t)))) end
return _.shuffle(t)
end
-- first, 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])
local obj = self:getObjective()[1]
obj.name = obj.name .. (", %s"):format(self.worldGraph.spawn)
obj.script = obj.script .. self.worldGraph:getSpawnScript()
-- place the objective scripts in Start Point
self:_fastFillItems({obj}, self.worldGraph:getObjectiveSpot())
if self.worldGraph:StartPoint() then
-- first, 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])
elseif self.worldGraph:Camp() then
-- give Dr. Gero a strong weapon... you'll need it
self.worldGraph:getCamp()[1]:setItem(shuffle(self.itemDeck:getItemsByAttribute("weaponStrong"))[1])
-- and some HP once you fight your way past the first few enemies
self.worldGraph:getCamp()[2]:setItem(self.itemDeck:getByKey("capsule5G"))
end
-- place the bomb on MALCO for bad end
if self.obj == "objBadEnd" then
self.worldGraph:getMALCO()[1]:setItem(self.itemDeck:getByKey("bomb"))
end
local mandatory = _.compact(_.shuffle(self.itemDeck:getMandatoryItems(true)))
local optional = _.compact(_.shuffle(self.itemDeck:getOptionalItems(true)))
local puppies = _.compact(_.shuffle(self.itemDeck:getItemsByAttribute("puppy")))
local mandatory = _.compact(shuffle(self.itemDeck:getMandatoryItems(true)))
local optional = _.compact(shuffle(self.itemDeck:getOptionalItems(true)))
local puppies = _.compact(shuffle(self.itemDeck:getItemsByAttribute("puppy")))
if not self.puppy then
-- then fill puppies, for normal gameplay
self:_fastFillItems(puppies, _.shuffle(self.worldGraph:getPuppySpots()))
self:_fastFillItems(puppies, shuffle(self.worldGraph:getPuppySpots()))
else
-- for puppysanity, shuffle puppies in with the mandatory items
mandatory = _.shuffle(_.append(mandatory, puppies))
mandatory = shuffle(_.append(mandatory, puppies))
puppies = {}
end
-- next fill hell chests, which cannot have mandatory items
self:_fastFillItems(optional, _.shuffle(self.worldGraph:getHellSpots()))
self:_fastFillItems(optional, shuffle(self.worldGraph:getHellSpots()))
-- place mandatory items with assume fill
self:_fillItems(mandatory, _.shuffle(_.reverse(self.worldGraph:getEmptyLocations())))
self:_fillItems(mandatory, shuffle(_.reverse(self.worldGraph:getEmptyLocations())))
-- place optional items with a simple random fill
local opt = #optional
@ -181,7 +198,7 @@ function C:_shuffleItems(tscFiles)
if opt > loc then
logWarning(("Trying to fill more optional items than there are locations! Items: %d Locations: %d"):format(opt, loc))
end
self:_fastFillItems(optional, _.shuffle(self.worldGraph:getEmptyLocations()))
self:_fastFillItems(optional, shuffle(self.worldGraph:getEmptyLocations()))
self.worldGraph:writeItems(tscFiles)
self.worldGraph:logLocations()
@ -269,6 +286,8 @@ function C:_unmountDirectory(path)
end
function C:_logSettings()
-- these random calls are a hacky way to make sure that
-- randomization changes between seeds if settings change
local obj = "Best Ending"
if self.obj == "objBadEnd" then
obj = "Bad Ending"
@ -278,32 +297,49 @@ function C:_logSettings()
obj = "All Bosses"
end
local spawn = (", %s"):format(self.worldGraph.spawn)
local puppy = self.puppy and ", Puppysanity" or ""
logNotice(("Game settings: %s"):format(obj .. puppy))
logNotice(("Game settings: %s"):format(obj .. spawn .. puppy))
end
function C:_updateSettings()
Settings.settings.puppy = self.puppy
Settings.settings.obj = self.obj
Settings.settings.mychar = self.mychar
Settings.settings.spawn = self.worldGraph.spawn
Settings:update()
end
function C:_updateSharecode(seed)
local settings = 0 -- 0b00000000
-- 0bXXXXXPOO
-- 0bXXXSSPOO
-- P: single bit used for puppysanity
-- O: two bits used for objective
-- S: two bits used for spawn location
-- X: unused
-- bitshift intervals
local obj = 0
local pup = 2
local spn = 3
if self.obj == "objBadEnd" then
settings = bit.bor(settings, 1)
settings = bit.bor(settings, bit.blshift(1, obj))
elseif self.obj == "objNormalEnd" then
settings = bit.bor(settings, 2)
settings = bit.bor(settings, bit.blshift(2, obj))
elseif self.obj == "objAllBosses" then
settings = bit.bor(settings, 3)
settings = bit.bor(settings, bit.blshift(3, obj))
end
if self.puppy then settings = bit.bor(settings, bit.blshift(1, pup)) end
if self.worldGraph:StartPoint() then
settings = bit.bor(settings, bit.blshift(0, spn))
elseif self.worldGraph:Arthur() then
settings = bit.bor(settings, bit.blshift(1, spn))
elseif self.worldGraph:Camp() then
settings = bit.bor(settings, bit.blshift(2, spn))
end
if self.puppy then settings = bit.bor(settings, 4) end
if #seed < 20 then
seed = seed .. (" "):rep(20-#seed)

View file

@ -12,6 +12,7 @@ function C:setDefaults()
self.settings.csdirectory = nil
self.settings.puppy = false
self.settings.obj = "objBestEnd"
self.settings.spawn = "Start Point"
self:update()
end
@ -26,6 +27,7 @@ function C:serialize()
line = line .. ("puppy = %s,\r\n "):format(self.settings.puppy)
line = line .. ("obj = %q,\r\n "):format(self.settings.obj or "")
line = line .. ("mychar = %q,\r\n "):format(self.settings.mychar or "")
line = line .. ("spawn = %q,\r\n "):format(self.settings.spawn or "")
line = line .. "\r\n}"
return line

View file

@ -12,14 +12,14 @@ layout:setTheme(require 'lib.luigi.theme.dark')
settings:setTheme(require 'lib.luigi.theme.dark')
function C:setup()
self:loadSettings(Settings.settings.puppy, Settings.settings.obj, nil, Settings.settings.mychar)
self:loadSettings(Settings.settings.puppy, Settings.settings.obj, nil, Settings.settings.mychar, Settings.settings.spawn)
background = lg.newImage('assets/background.png')
self:draw()
layout:show()
end
function C:loadSettings(puppy, obj, seed, mychar)
function C:loadSettings(puppy, obj, seed, mychar, spawn)
settings.puppy.value = puppy
if obj == "objBadEnd" or obj == 1 then
@ -55,6 +55,15 @@ function C:loadSettings(puppy, obj, seed, mychar)
settings.mychar.index = 7
end
settings.mychar.value = "override"
if spawn == "Start Point" or spawn == 0 then
settings.spawn.index = 1
elseif spawn == "Arthur's House" or spawn == 1 then
settings.spawn.index = 2
elseif spawn == "Camp" or spawn == 2 then
settings.spawn.index = 3
end
settings.spawn.value = "override"
end
layout.version.text = 'Cave Story Randomizer [Open Mode] v' .. VERSION
@ -74,6 +83,7 @@ layout.go:onPress(function()
Randomizer.obj = settings.objective.value
Randomizer.puppy = settings.puppy.value
Randomizer.mychar = settings.mychar.value
Randomizer.worldGraph.spawn = settings.spawn.value
C:setStatus(Randomizer:randomize())
@ -119,8 +129,9 @@ settings.importshare:onPress(function()
settings.importshare.text = "Sharecode Imported"
local pup = bit.band(sharesettings, 4) ~= 0
local obj = bit.band(sharesettings, 3)
local spn = bit.brshift(bit.band(sharesettings, 24), 3)
seed = seed:gsub("^%s*(.-)%s*$", "%1") -- trim any leading or trailing whitespace
Screen:loadSettings(pup, obj, seed)
Screen:loadSettings(pup, obj, seed, nil, spn)
else
settings.importshare.text = "Invalid Sharecode!"
end

View file

@ -29,6 +29,12 @@ return { style = 'dialog',
{ text = " King", value = "assets/myChar/King.bmp", icon = "assets/icon/King.png" },
{ text = " Kanpachi", value = "assets/myChar/Kanpachi.bmp", icon = "assets/icon/Kanpachi.png" },
{ text = " Frog", value = "assets/myChar/Frog.bmp", icon = "assets/icon/Frog.png" }
},
{ type = 'label', text = 'Spawn Location', minheight = 32 },
{ type = 'stepper', id = 'spawn', align = 'middle left', height = 48, width = 200,
{ text = " Start\r\n Point", value = "Start Point", icon = "assets/icon/StartPoint2.png" },
{ text = " Arthur's\r\n House", value = "Arthur's House", icon = "assets/icon/Arthur2.png" },
{ text = " Camp", value = "Camp", icon = "assets/icon/Camp.png" }
}
},
},