_f~~0~`<0~0?` 0 ? <8>|ffFfvF"#D?<?>m}^U^U|`Jp@pJ`a`8'RB(8gT}(x?T0(2;8'D?@  h   grw~~ߨ?_08g@ xpp?c?36qw xx`<<?x|``!0`@o~801C;'>Ls?88?؞l, L p <p 77)p<?3>3M:s;3 7qwvp3l311q<x-!@Cw?> %-@ p> 8=???-f?x x<>~~> x.ps@y$`K* ?>>> `@_!$3`8`@"@>f@|0 ! :@@@DDDDDDD@DDDDD@DD@DD@D@@@@DDDDDDDDDDDD@DUPP@DD@@DDD@@@DD@DDDD@DD@DDDDDD@DDDDDDDDDDD@D@UPUUPUPPUPUP@D@@D@D@@DDDDDDDDDDDDDDDDDD@DDD@DDDDDDDDDDD$D$QD$2UD"3U@"3SUUUUUUUPPUUPUUU@D@D@D@DDDDDDDDDDDD@$"DDDDDDDDD@DDU ~~B~B@~@~BRB~l ,hd.j'Xj#???????????????`WikzhF7g         ?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""ww""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""ww""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""wwUUwwwUUUwwwwwwUwwUUwwwUUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwGDtGDwGDwDDwDDtDwDtwwwwwwwwwwwwwww""""""""wwUUwwwUUUwwwwwwUwwUUwwwUUUwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwDtwDwtDwtDwtDwwDGtDwwwwwwwwwwwwwww""""""""wUUUwwUUwUUwwwwUwwUUUwwUUwUUwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwGDwDwwDwtDwtDDwwGDGwwwwwwwwwwwwwww""""""""wUUUwwUUwUUwwwwUwwUUUwwUUwUUwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwDtDwtDwtDDwDwwDGtGwwwwwwwwwwwwwww""""""""wwUUwwUUUwUwwwUwwwwUUwwUUUwUwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwDDwGDwGDwDwtDDtDwDtwwwwwwwwwwwwwww""""""""wwUUwwUUUwUwwwUwwwwUUwwUUUwUwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""wwwUUwwUUwwUwwUwwwwwUUwwUUwwUwwwwwwwwwwwwwADDDDDDDDADDDDDDDDDwwwwwwwwwwwwwwwwwwwtGtwDtwDtwwwwwwwwwwwwwwwwwwwwwwww""""""wwwUUwwUUwwUwwUwwwwwUUwwUUwwUwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwGwDtGtDGtDwwwwwwwwwwwwwwwwwwwwwwwww""""wwwUUUUwwUUUwwUwwwwwUUUUwwUUUwwwwwwwwwwwwwwADDDDDDDADDDDDDDDwwwwwwwwwwwwwwwwwwtwGtGDGGDGwwwwwwwwwwwwwwwwwwwwwwwww""""wwwUUUUwwUUUwwUwwwwwUUUUwwUUUwwwwwwwwwwwwwwADDDDDDDADDDDDDDwwwwwwwwwwwwwwwwwGwwGtGtGGtGwwwwwwwwwwwwwwwwwwwwwwwwww""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwtwwDDwDtwDtwwwwwwwwwwwwwwwwwwwwwwwwww""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDADDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDADDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDADDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDwwDDwwwwwwDwDDDDDwwwwwwwwwwwwwwwwwwwwwwwwADADDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDwwDDwwwwwwDwDDDDDwwwwwwwwwwwwwwwwwwwwwwwwADDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwDDDwwwwwDwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwADADDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwDDDwwwwwDwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwADDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDwwwwwDDwwwwDwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwADADwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDwwwwwDDwwwwDwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwADADwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDwwDDwwwDwwwwDwwDDwwwwwwwwwwwwwwwwwwwwwwwwADDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDDwwDDwwwDwwwwDwwDDwwwwwwwwwwwwwwwwwwwwwwwwADADwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDDDDwDwwwwwwDDDwwwwwwwwwwwwwwwwwwwwwwwwwADDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDDDDwDwwwwwwDDDwwwwwwwwwwwwwwwwwwwwwwwwwADADDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDADDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDADDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwDDDDwDDDDwwDDDDwDDwwDDwwDDDDwwwwwwwwwwwwwwwADDDDDDDADDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwDDDDwDDDDwwDDDDwDDwwDDwwDDDDwwwwwwwwwwwwwwwADDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDwwDDwwwDDwwDDDwwwDDwDDDwwwwwDDwwwwwwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDwwDDwwwDDwwDDDwwwDDwDDDwwwwwDDwwwwwwwwwwwwwwADDDDDDDADDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwwDDwwwDDwwwDDDwwwwwwDDwwwDDDwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwwDDwwwDDwwwDDDwwwwwwDDwwwDDDwwwwwwwwwwwwwwwADDDDDDDDADDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDwwDDwwwDDwwwwDDDwDDwwDDwwDDwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDwwDwwDDwwwDDwwwwDDDwDDwwDDwwDDwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwDDDDwwDDwwDDDDwwDDwDDDDwDDDDDwwwwwwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwDDDDwwDDDDwwDDwwDDDDwwDDwDDDDwDDDDDwwwwwwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwffffwffffwfffffwffwwffwwwwwwfwfffffwwwwwwwwADDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwffffwffffwfffffwffwwffwwwwwwfwfffffwwwwwwwwADDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffwwfwwffwwwffwwffwwwwffwfffwwwwwfwwffwwwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffwwfwwffwwwffwwffwwwwffwfffwwwwwfwwffwwwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwwffwwwffwwffffwwwwwwffwwwwfwwwffffwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwwffwwwffwwffffwwwwwwffwwwwfwwwffffwwwwwwwwwADDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffwwfwwffwwwffwwffwwwwffwwffwwwfwwwwwwwffwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffwwfwwffwwwffwwffwwwwffwwffwwwfwwwwwwwffwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwffffwwffwwfffffwffwffffwfwwwwwffffwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwffffwwffffwwffwwfffffwffwffffwfwwwwwffffwwwwwwwwwADDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'"www""'r'ww'r'w"r'r''"rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"wwww'r'"'ww'r''r''"''r'wwwwwwwwww333383333833338333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""www'r'""ww'""'r''""'r'wwwwwwwwww333383333833338333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"wrww'r'r"ww'r''""'r"'r'wwwwwwwwwwxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'"www""'r'ww'r''r''r''"rwwwwwwwwwwxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwUUuwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wUUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wWUwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww13333333333333333wwDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDww133333333313333wwIDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDADDDDDDDww133331333313333wwDDIDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDww13333313333wwDIDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww133331313333wwIDDIDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww133331333333wwIIDDIIDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww1333313333wwDIIIDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww1333331113333wwIDIDDIDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDfDDDDDDDww1333331333wwDDDDIwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDafDDDDDDDww13333311111111333wwIIDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDffADww13333311333wwDIDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDaffADww13333311111111333wwDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDfffDww1333331333wwDIDIDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDaffffDww1333333113333wwIIDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDffffffffffDww1333333133333wwDDIDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADfffffffffffDww13333333133333wwIDIIDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADafffffffffffDww1333331333333wwIDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADafffffffffffDww13313133133333wwIDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADaffffffffffDww13333133333313333wwDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDffffffffffDww13333313333333wwIDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDaffffDww133333133313333wwIDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDffffDww133333133333wwIDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDaffDww13333333331333wwDDIDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDffADww133333113331333wwIDIDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDafDDDDDDDww133333313333wwDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDaDDDDDDDww133333333333333wwDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww13333333333333333wwIDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww13333333333wwDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww1333331313333wwIDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDww1333333313333wwIDDIDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDADDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwADDDDDDDDDDDDDDDDDDww1333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww|-- title: Chain Combo -- author: game developer -- desc: short description -- script: lua -- input: keyboard function BOOT() runTime=0 dt=1/60 P=print S=string T=table T1=T.insert T2=T.remove TP=type function T3(s) local t={} for i,v in ipairs(s)do if TP(v)=="table"then t[i]=T3(v) else t[i]=v end end for i,v in pairs(s) do if TP(v)=="table"then t[i]=T3(v) else t[i]=v end end return t end function T4(T,F) local t={} for i,v in ipairs(T)do if F(v) then T1(t,i) end end return t end function T5(t,i) return T4(t,function(v) return v==i end) end function textFix(t,x) local parts={} for i=1,#t,x do table.insert(parts,string.sub(t,i,i+x-1)) end local S="" for i,v in ipairs(parts) do S=S..v.."\n" end return S end worksAfterDraw={2,3} worksAfterPlay={2,4,5,6} worksOnPile={7} M=math M1=M.random M2=M.cos M3=M.sin M4=M.tan M5=M.max M6=M.min M7=M.abs pie=M.pi function D1(a,b,x,y) return ((x-a)^2+(y-b)^2)^(1/2) end function D2(a,b,x,y) return M.atan2(y-b,x-a) end function mv2Set(a,b,i) if TP(a[i])=="table" then T1(b,T3(a[i])) T2(a,i) else T1(b,a[i]) T2(a,i) end end function toB(x) local ans="" local x=x while (x>=2)do ans=tonumber(math.fmod(x,2))..ans x=x//2 end ans=x..ans return ans end function toD(x) local x,ans=tostring(x),0 for i=#x,1,-1 do ans=ans+tonumber(string.sub(string.reverse(x),i,i))*2^(i-1) end return math.floor(ans) end aroD={ 0,1/2,1,-1/2 } aroC={ 2,10,6,3 } poke4(2*0x3ffc,8) function A(a,x,y,w,h) toolz={ tri=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) local dots={{0,0}} for i=1,2 do T1(dots,{v.dots[i][1]*(w or 1),v.dots[i][2]*(h or 1)}) end if (v.pivot)then for i=1,3 do local D=D1(dots[i][1],dots[i][2],v.pivot[1],v.pivot[2]) local A=D2(v.pivot[1],v.pivot[2],dots[i][1],dots[i][2]) dots[i][1]=v.pivot[1]+D*M2(A+v.a) dots[i][2]=v.pivot[2]+D*M3(A+v.a) end end for i=1,3 do dots[i][1]=dots[i][1]+x dots[i][2]=dots[i][2]+y end tri(dots[1][1],dots[1][2],dots[2][1],dots[2][2],dots[3][1],dots[3][2],v.c) end, line=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) if v.w*(h or 1)==1 then line(x,y,x+v.l*M2(v.a),y+v.l*M3(v.a),v.c) else A( {{ id="rect", x=0, y=-v.w/2, w=v.l, h=v.w, pivot={0,v.w/2}, a=v.a, c=v.c }} ,x,y,w or 1,h or 1 ) circ(x,y,v.w/2,v.c) circ(x+v.l*M2(v.a),y+v.l*M3(v.a),v.w/2,v.c) end end, ang=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) for i=0,v.ang,v.ang do A({ { id="line", x=0,y=0, w=v.w, l=v.l, a=v.a+i, c=v.c } },x,y,w,h) end end, rect=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) local dots={ {0,0}, {v.w*(w or 1),0}, {v.w*(w or 1),v.h*(h or 1)}, {0,v.h*(h or 1)}} if not v.pivot then for i,v in ipairs(dots)do v[1]=v[1]+x v[2]=v[2]+y end rect(dots[1][1],dots[1][2],v.w*(w or 1),v.h*(h or 1),v.c) else pivot={v.pivot[1] or 0,v.pivot[2] or 0} for i=1,4 do local D=D1(dots[i][1],dots[i][2],v.pivot[1],v.pivot[2]) local A=D2(v.pivot[1],v.pivot[2],dots[i][1],dots[i][2]) dots[i][1]=v.pivot[1]+D*M2(A+v.a) dots[i][2]=v.pivot[2]+D*M3(A+v.a) end for i,v in ipairs(dots)do v[1]=v[1]+x v[2]=v[2]+y end for i=0,2,2 do tri(dots[1+(i)%4][1], dots[1+(i)%4][2], dots[1+(i+1)%4][1], dots[1+(i+1)%4][2], dots[1+(i+2)%4][1], dots[1+(i+2)%4][2],v.c) end end end, lnk=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) local dots={{0,0}} for a,b in ipairs(v.dots) do if TP(b)=="table" then T1(dots,{b[1],b[2]}) elseif TP(b)=="number" then T1(dots,{v.dots[b][1],v.dots[b][2]}) end end if (v.mr)then local mr=v.mr if mr==1 then for i=#dots,1,-1 do T1(dots,{-dots[i][1],dots[i][2]}) end end end if (v.pivot)then for a,b in ipairs(dots) do local D=D1(dots[a][1],dots[a][2],v.pivot[1],v.pivot[2]) local A=D2(v.pivot[1],v.pivot[2],dots[a][1],dots[a][2]) dots[a][1]=v.pivot[1]+D*M2(A+v.a) dots[a][2]=v.pivot[2]+D*M3(A+v.a) end end for i=0,#dots-1 do A({ { id="line", x=dots[1+(i)%#dots][1], y=dots[1+(i)%#dots][2], w=v.w, c=v.c, l=D1(dots[1+i%#dots][1], dots[1+i%#dots][2], dots[1+(i+1)%#dots][1], dots[1+(i+1)%#dots][2] ), a=D2(dots[1+i%#dots][1], dots[1+i%#dots][2], dots[1+(i+1)%#dots][1], dots[1+(i+1)%#dots][2] ) }},x,y,w,h ) end end, aro1=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) A( { {id="tri", x=x, y=y+v.pH*(h or 1), dots={ {v.w,0},{v.w/2,-v.pH} }, a=v.a, c=v.c, pivot={v.w*(w or 1)/2,(v.h/2-v.pH)*(h or 1)} }, { id="rect", x=x+(v.w*(w or 1)-v.bW*(w or 1))/2, y=y+v.pH*(h or 1), w=v.bW*(w or 1), h=(v.h-v.pH)*(h or 1), pivot={v.bW*(w or 1)/2,(v.h/2-v.pH)*(h or 1)}, c=v.c, a=v.a } }, 0,0,w,h) if (v.lW)then A({{ id="lnk", x=v.w/2, y=0, w=v.lW, c=v.c2, pivot={0,v.h/2}, mr=1, a=v.a, dots={ {v.w/2,v.pH}, {v.bW/2,v.pH}, {v.bW/2,v.h}, {0,v.h} } }},x,y,w,h) end end, X=function(v,x,y,w,h) local x=(x or 0)+(v.x or 0)*(w or 1) local y=(y or 0)+(v.y or 0)*(h or 1) for i=1,v.s,1 do A({{ id="rect", x=x, y=y, w=v.w, h=v.h, c=v.c, a=i*v.a2+v.a1, pivot={v.w/2,v.h/2} }},0,0) end end, poly=function(v,x,y,w,h) end } for i,v in ipairs(a)do if (v.id)then toolz[v.id](v,x,y,w,h) elseif #v>=6 then if (v.bit)then poke4(2*0x3ffc,v.bit) else poke4(2*0x3ffc,8) end if (v.swap)then if TP(v.swap)=="number" then palSwap(0,1,v.swap) else for i,v in ipairs(v.swap)do end end end spr(v[1],x+v[2],y+v[3],v[6],v[7] or 1,v[8] or 0,v[9] or 0,v[4],v[5]) poke4(2*0x3ffc,8) palReset() end end end shake={0,dt*12,0,0,0} function addShake(dt,s,dx1,dx2,dy1,dy2) shake={0,dt,s,dx1,dx2,dy1,dy2} end function shakeScreen() if shake[3]>0 then shake[1]=shake[1]+dt if shake[1]>=shake[2] then shake[3]=shake[3]-1 shake[1]=0 for i=0,1 do local s1,s2=M1(),1 if s1>=0.5 then s2=-1 end poke(0X3FF9+i,s2*M1(shake[4+i*2],shake[5+i*2])) end end else poke(0X3FF9,0) poke(0X3FFA,0) end end pops={} function popUpdate() for i=#pops,1,-1 do local v=pops[i] v:update() if v.kl then T2(pops,i) end end end function popDraw() for i=#pops,1,-1 do local v=pops[i] v:draw() end end function drawGameUI() uiTxts={{"hp",index=1}, {"nrj",index=1}, {"bits"}, {"bite"}, {"score"}, } for i,v in ipairs(uiTxts)do local A,B=ME[v[1]],gameUI[v[1]] if (v.index)then A=A[v.index] end local n=B-A if n~=0 then if n>0 then gameUI[v[1]]=M5(gameUI[v[1]]-M5(1,M7(n)//10),A)//1 else gameUI[v[1]]=M6(gameUI[v[1]]+M5(1,M7(n)//10),A)//1 end end end end function palSwap(at,id,new) local A=peek(0x3ff0+at)//16 local B=peek(0x3ff0+at)%16 if id==0 then poke(0x3ff0+at,A*16+new) else poke(0x3ff0+at,new*16+B) end end function palReset() for i=0,15 do palSwap(i//2,i%2,i) end end function allColor(c) for i=0,15 do palSwap(i//2,i%2,c) end end maxCardNo=20 function advancedSprite(id,x,y,w,h,size,bit,f) for cut=0,size[1]*size[2]-1 do local x=x+w*8*(4/bit)*(cut%size[1]) local y=y+w*8*(cut//size[1]) local at=0x4000+32*id+(cut%size[1])*32+16*32*(cut//size[1]) for i=0,4*8-1 do local p=peek(at+i) local stream=tostring(toB(p)) while(#stream<8) do stream="0"..stream end local pixels={} for d=1,8,bit do table.insert(pixels,string.sub(stream,d,d+bit-1)) end stream="" for i=#pixels,1,-1 do stream=stream..pixels[i] end for ii=0,8/bit-1,1 do local pixel=toD(tonumber(string.sub(stream,1+(ii)*bit,(ii+1)*bit))) local X,Y=x+(4/bit)*(i%4)*2*w+(ii-1)*w,y+h*(2*i//8) local rangeX,rangeY={size[3][1],size[3][2]},{size[4][1],size[4][2]} local at={ 2*(4/bit)*(i%4)+ (8*(4/bit))*(cut%size[1])+ ii, (i//4)+8*(cut//size[1]) } if rangeX[1]<=at[1] and rangeX[2]>=at[1] and rangeY[1]<=at[2] and rangeY[2]>=at[2] then if (f) then f(X,Y,w,h,pixel,ii) else pix(X,Y,pixel) end end end end end end help={ {"INTRODUCTION","Welcome to CHAIN COMBO. Your goal is simple, play matching cards to build your combo, and cash out your reward."}, {"MATCHES","Anytime you play a card with the same number or shape, you build up your combo."}, {"JUICE","Whenever you draw a card, you get +21 JUICE. Playing a card gives you +21 JUICE and takes away its BITS value from your JUICE."}, {"FULL BATTERY","When you fill your battery with juice, you get one BETTER BITE. BETTER BITE is not lost when you fail to cashout."}, {"HAND LIMIT","Make sure to not make your hand have too many cards."}, {"FOES","Watch out for enemy cards. They gave this back (most of the time). Foe cards are instantly played the moment they are drawn."}, {"HP","Make sure to never run out of HP (do you really need to be told this.)"}, {"NRJ","You lose 1 NRJ when you draw a card.If you draw a card when you have no NRJ, you lose all your BITS and all your BITE (excluding your BETTER BITE). You lose NRJ when you play a special card."}, {"INSPECT","Press the Y button(or S key) to view info on cards in hand. Press up and down to switch between seeing info on card on pile or card in hand."} } helpPg=1 screen="main" bangs={} function bangAct() for i,v in ipairs(bangs) do v.r=v.r+v.dr v.t=v.t-1/60 if v.t<=0 then v.kl=true end end end function bangDraw() if #bangs>0then for i=#bangs,1 do local v=bangs[i] if v.kl then T2(bangs,i) else circ(v.x,v.y,v.r,v.c) end end end end ghosts={} function seeGhosts() for i=#ghosts,1,-1 do local v=ghosts[i] v.t=M5(0,v.t-1/60) rectb(v.x,v.y,v.w,cWH[2],v.c) if v.t<=0 then T2(ghosts,i) end end end battery={lvl=0,dx=0,state=0,dt=1/60} function batteryUpdate() if battery.state==1 and battery.lvl~=ME.BITEPLUS[2] then battery.dt=battery.dt-1/60 if battery.dt<=0then battery.lvl=battery.lvl+1 battery.dt=1/120 if battery.lvl~0==ME.BITEPLUS[2]then battery.dt=1 end end elseif battery.state==1 then battery.dt=battery.dt-1/60 if battery.dt<=0then battery.dt=1/120 battery.state=0 end else local A,B=battery.lvl,ME.BITEPLUS[1] if A~=B then battery.dt=battery.dt-1/60 if battery.dt<=0 then battery.dt=1/120 if A-B<0 or battery.state==1then local o=B if battery.state==1 then o=ME.BITEPLUS[2]end battery.lvl=M6(o,battery.lvl+1) else battery.lvl=M5(B,battery.lvl-1) end end end end end function batteryDraw(x,y,w,h,s) local C=2 if battery.lvl>=ME.BITEPLUS[2]*3/4 then C=5 elseif battery.lvl>=ME.BITEPLUS[2]/2 then C=4 elseif battery.lvl>=ME.BITEPLUS[2]/4 then C=3 end if battery.lvl==ME.BITEPLUS[2]then local cols={3,4,5,11} C=cols[1+(battery.dt/(3/60)//1)%4] end rect(x,y,w,h,9) rect(x,y,w*(battery.lvl/ME.BITEPLUS[2]),h,C) for i=0,w,w/s do rect(x+i,y,1,h,8) end rect(x+w,y+h/4,w/20,h/2,8) rectb(x,y,w,h,8) rectb(x+1,y+1,w-2,h-2,8) end pals={ default={},light={},dark={},hot={},cool={} } for i=0,15 do pals["only"..i]={} end for i=0,2 do pals["tint"..i]={} end currentPal="default" for i=0,15 do for ii=0,47 do T1(pals["only"..i],peek(0X3FC0+i*3+ii%3)) end end for i=0,15 do for ii=0,2 do T1(pals.default,peek(0X3FC0+i*3+ii)) T1(pals.light,peek(0X3FC0+12+ii)) T1(pals.dark,peek(0X3FC0+3+ii)) for iii=0,2 do if ii==iii then T1(pals["tint"..iii],M6(55+peek(0X3FC0+i*3+ii),255)) else T1(pals["tint"..iii],peek(0X3FC0+i*3+ii)) end end end end palsToShift={} function palleteManager() if #palsToShift>0 then local p=palsToShift[1] p[1]=M5(0,p[1]-1/60) if p[1]<=0 then currentPal=p[3] T2(palsToShift,1) else currentPal=p[2] end end end function shiftCol() for i=1,48 do local a,b=peek(0X3FC0+i-1),pals[currentPal][i] if a~=b then if a0)do mv2Set(A,B,M1(#A)) end end function bigBang() --police academy 1984 --malcom in the middle --lerning english with leo if ME.bite>=2*ME.BITE then if ME.onFire==false then ME.onFire=true T1(bangs,{r=0,dr=10,t=1/6,x=64+cWH[1]//2,y=8+cWH[2]//2,c=4}) T1(palsToShift,{1/6,"only4","tint0"}) end else if currentPal~="default" and #palsToShift==0 then T1(palsToShift,{1/6,currentPal,"default"}) ME.onFire=false --currentPal="default" end end end colorTransitionTime=0 screenTransitionDelay=1/2 deckAt={8,72} UI={ MAIN={ { id=1, job=function() newGame() end, draw=function(b,m) basicButt(b,m,"NEW GAME",{4,5},6,1,4,1,2) end }, { id=2, job=function() screen="help" ui={} end, draw=function(b,m) basicButt(b,m,"HELP",{4,5},6,1,4,1,2) end }, { id=3, job=function() screen="credits" ui={} end, draw=function(b,m) basicButt(b,m,"CREDITS",{4,5},6,1,4,1,2) end }, { id=4, job=function() exit() end, draw=function(b,m) basicButt(b,m,"EXIT",{4,5},6,1,4,1,2) end } }, PAUSE=function() local m={} m.draw=function(m,b) local X,Y,W,H=m.xy[1],m.xy[2],m.w,m.h rect(X,Y,W,H,4) P("PAUSED",X+4,Y+4,3,false,2) end T1( m,{ id=1+#m, job=function(b,m) screen="game" ui={} end, draw=function(b,m) basicButt(b,m,"Continue",{4,5},6,1,4,1,1) end } ) for i,v in ipairs({{"deck","D"},{"hand","H"},{"pile","P"}})do T1(m,{ id=1+#m, job=function(b,m) if #ME[v[2]]>0 then makeMenu("CARD_LIST",0,24,240,cWH[2]+40,0,2,cWH[1],cWH[2],1,1,{cards=ME[v[2]],f=function() ui={} end}) else makeMenu("ALERT",0,24,240,cWH[2]+40,0,2,cWH[1],cWH[2],1,1, {text="No Card Here"}) end end, draw=function(b,m) basicButt(b,m,"Inspect "..v[1],{4,5},6,1,4,1,1) end }) end return m end, GG={ { id=1, job=function() ME={} newGame() end, draw=function(b,m) basicButt(b,m,"RESTART",{6,5},6,1,4,1,1) end }, { id=2, job=function(b,m) ME={} screen="main" mainMenu() end, draw=function(b,m) basicButt(b,m,"MAIN MENU",{6,5},6,1,4,1,1) end } }, REWARD=function() local m={} m.draw=function(m) rect(m.xy[1],m.xy[2],m.w,m.h,8) P("PICK OR SKIP!",m.xy[1]+8,m.xy[2]+4,11,false,3) local b=m[m.target] local C=currentCardRewards[m.target] if m.target<4 then print(specialCards[C.id].name,m.xy[1]+m.w/40,m.xy[2]+m.h*6.5/10,11,false,2) print(textFix(specialCards[C.id].info,40),m.xy[1]+m.w/40,m.xy[2]+m.h*7.5/10,4) else print("SKIP",m.xy[1]+m.w/40,m.xy[2]+m.h*6.5/10,11,false,2) print(textFix("Get 10 koyn.",40),m.xy[1]+m.w/40,m.xy[2]+m.h*7.5/10,4) end end local move=function() currentCardRewards={} ME.score=0 ME.bits=0 ME.bite=0 screen="shop" ME.koyn=ME.koyn+5*ME.lvl+10 ME.goal=ME.goal+100 ME.BITE=ME.BITE+1 makeTheShop() makeMenu("SHOP",4,4,150,128,0,0,150,32,2,1) end for i,v in ipairs(currentCardRewards)do T1(m,{ id=i, job=function(b,m) mv2Set(currentCardRewards,ME.H,i) ME.hPg=M5(1,#ME.H-2) ME.hPg2=#ME.H move() end, draw=function(b,m) CD(currentCardRewards[i],b.xy[1],b.xy[2]) basicButt(b,m,"",{4,5},nil,1,4,1,2) end } ) end T1(m,{ id=4, job=function(b,m) ME.koyn=ME.koyn+10 move() end, draw=function(b,m) A({{id="X", x=0,y=0,w=36,h=4,a1=pie/4,s=2,a2=pie/2,c=2, }},b.xy[1]+2,b.xy[2]+24) P("SKIP",b.xy[1]+8,b.xy[2]+44,2) basicButt(b,m,"",{4,5},nil,1,4,1,2) end }) return m end, TAKE_REWARD={ { id="YA", job=function(b,m) end, draw=function(b,m) local t="YA" if currentCardRewards.pick==nil then t="NA" end basicButt(b,m,t,{4,5},6,1,4,1,2) end } }, SHOP=function(d) local m={} for i,v in ipairs(currentShop)do T1(m,{ id=i, job=function() if ME.koyn>=currentShop[i].cost then ME.koyn=ME.koyn-currentShop[i].cost currentShop[i].job() end end, draw=function(b,m) if TP(b.id)=="number" then local c=6 if currentShop[b.id].cost>=ME.koyn then c=2 end rect(b.xy[1],b.xy[2],b.w,b.h,c) P(shopStuff[currentShop[b.id].id].name,b.xy[1]+4,b.xy[2]+4,1) P(textFix(shopStuff[currentShop[b.id].id].info or "",12),b.xy[1]+4,b.xy[2]+12,1) P(currentShop[b.id].cost,b.xy[1]+100,b.xy[2]+4,4,false,2) if m.target==b.id then rectb(b.xy[1],b.xy[2],b.w,b.h,11) end end end }) end return m end, WHICH_SET=function(d) local m={} local txt={"Cards in deck", "Cards in hand","Cards in pile"} for i,v in ipairs({"D","H","P"})do T1(m,{ id=i, job=function() makeMenu("CARD_LIST",0,24,240,cWH[2]+40,0,2,cWH[1],cWH[2],1,1,{cards=ME[v],f=d.f,f2=d.f2}) end, draw=function(b,m) basicButt(b,m,txt[i],{4,4},6,1,4,1,2) end }) end return m end, ALERT=function(d) local m={} m.anyButt=function() T2(ui,#ui) end m.draw=function(m,b) local X,Y,W,H=m.xy[1],m.xy[2],m.w,m.h rect(X,Y,W,H,3) P(textFix(d.text,25),X+8,Y+8,4) end T1(m,{ id=1,job=function()end,draw=function()end }) return m end, CARD_LIST=function(d) local m={} m.draw=function(m,b) local X,Y,W,H=m.xy[1],m.xy[2],m.w,m.h rect(X,Y,W,H,3) local b=m[m.target] local C=d.cards[m.target] if (C)then if C.typ=="basic"then print("BASIC",m.xy[1]+8,m.xy[2]+64,11,false,2) elseif C.typ=="special" then print(specialCards[C.id].name,m.xy[1]+8,m.xy[2]+64,11,false,2) print(textFix(specialCards[C.id].info,35),m.xy[1]+8,m.xy[2]+80,4) end end end local c=1 for i,v in ipairs(d.cards)do local f2=d.f2 or function(c)return true end if f2(v)then T1(m,{ id=c, job=function() d.f(d.cards[i],i) end, draw=function(b,m) CD(d.cards[i],b.xy[1],b.xy[2],true) if b.id==m.target then rectb(b.xy[1],b.xy[2],b.w,b.h,11) rectb(b.xy[1]+1,b.xy[2]+1,b.w-2,b.h-2,11) end end }) c=c+1 end end --andre cardoso return m end } ui={} function makeMenu(id,X,Y,W,H,x,y,w,h,d,s,extra) local m=UI[id] local newUI={} if type(m)=="table" then for i,v in ipairs(m)do T1(newUI,{ id=v.id, job=v.job, tapped=0, draw=v.draw }) end elseif type(m)=="function" then newUI=m(extra) end for i,v in ipairs(newUI)do v.tapped=0 end newUI.id=id newUI.target=1 newUI.dir=d newUI.xy={X,Y} newUI.w=W newUI.h=H local xShift=0 local yShift=0 if d==1 then xShift=w+s elseif d==2 then yShift=h+s end for i=1,#newUI do local v=newUI[i] if i==1 then v.xy={X+x,Y+y} v.w=w v.h=h else v.xy={newUI[i-1].xy[1]+xShift,newUI[i-1].xy[2]+yShift} v.w=w v.h=h end end T1(ui,T3(newUI)) end function menUse() if #ui>0 then local m,C=ui[#ui],0 for i,v in ipairs(m)do if v.tapped>0then v.tapped=M5(0,v.tapped-1/60) if v.tapped==0 then v.job() end end if TP(v.id)=="number" then C=C+1 end end if (btnp(0) and m.dir==2) or (btnp(2) and m.dir==1) then m.target=M5(m.target-1,1) elseif (btnp(1) and m.dir==2) or (btnp(3) and m.dir==1) then m.target=M6(m.target+1,C) elseif btnp(4)then if (m[m.target])then m[m.target].tapped=1/6 end elseif (m.anyButt) then for i=0,7 do if btnp(i)then m.anyButt(m,b) end end end local B=m[m.target] local dr={"w","h"} for i,v in ipairs(dr) do if m.dir==i then local shift=0 if(B)then if B.xy[i]+B[v]>m.xy[i]+m[v] then shift=m.xy[i]+m[v]-B.xy[i]-B[v] elseif B.xy[i]0 then local m=ui[#ui] if (m.draw)then m:draw() end for a,b in ipairs(m)do b.draw(b,m) end end end cWH={40,55} function mainMenu() makeMenu("MAIN",0,24,240,104,0,0,240,20,2,0) end mainMenu() function basicButt(b,m,a,O,c1,c2,C1,C2,w) local C,TC=c1,c2 if b.tapped>1/30 and b.tapped<=1/6 then C,TC=C1,C2 end if (c1) then rect(b.xy[1],b.xy[2],b.w,b.h,C) end if TP(a)then P(a,b.xy[1]+O[1],b.xy[2]+O[2],TC,false,w or 2) end if b.id==m.target then for i=0,1 do rectb(b.xy[1]+i,b.xy[2]+i,b.w-i*2,b.h-i*2,11) end end end defaultPlayerVariables={ cant=false,lastHitBy=nil,levelTime=0, hp={5,5},nrj={3,3},limit=5,bits=0,bite=0,BITE=5, BITEPLUS={0,200,0}, score=0,onFire=false,goal=100,lvl=1, D={},H={},P={},koyn=100, hPg=1,hPg2=1,inspect=false,pileTopInfo=false, stats={ {"DRAWS",0}, {"PLAYS",0}, {"HIGHEST CASHOUT","NO CHANCE"}, {"PLAY TIME",0} } } ME={} currentCardRewards={pick=nil} gameUI={hp=5,nrj=3,bits=0,bite=0,score=0} nextDraw=1 nextCardActs={} function C(typ,id) local c={} c.size=1 c.clp=0 c.xy={0,0} c.XY={0,0} c.shape={} c.no={} c.getSize=function(c,x,y) local clp=c.clp local cx,cw if clp<=cWH[1]//2 then cx=x+clp cw=cWH[1]-2*clp else cx=x+cWH[1]-clp cw=2*(clp-cWH[1]//2) end return cx,cw,clp end if type(typ)=="table"then c.typ="basic" for i=1,maxCardNo do if #T5(typ[1],i)>0then T1(c.no,i) end end for i=1,4 do if #T5(typ[2],i)>0then T1(c.shape,i) end end elseif typ=="fo" then c.typ="fo" c.id=id c.size=foeCards[id].size or 1 elseif typ=="special" then c.typ="special" c.id=id c.size=specialCards[id].size or 1 end return c end function flip(c,d) c.clp=M6(M5(0,c.clp+(d or 4)),cWH[1]) end function handSee(X,Y) for i,v in ipairs(ME.H)do moveTheCards(v,14) end for i=ME.hPg,ME.hPg+2 do if (ME.H[i]) then local c=ME.H[i] c.XY={X+(cWH[1]+4)*(i-ME.hPg),Y} CD(c) if i==ME.hPg2 then circ(X+(cWH[1]+4)*(ME.hPg2-ME.hPg),Y,2,5) end end end end function matchB(a,b) if(a)then local C={{},{}} if (b)then for c,d in ipairs({"shape","no"})do for i,v in ipairs(a[d])do if #T5(b[d],v)>0then T1(C[c],v) end end end end return C end end function match(a,b) if(a)then if not b or (#b.shape==0 or #b.no==0) or #matchB(a,b)[1]>0 or #matchB(a,b)[2]>0then if not b then ME.nrj[1]=M5(ME.nrj[2],ME.nrj[1]) for i,v in ipairs(a.no)do ME.bits=ME.bits+v end for i,v in ipairs(a.shape)do ME.bite=ME.bite+1 sfx(1,math.floor(40+(30*M6(1,ME.bite/ME.BITE))//1)) end elseif #matchB(a,b)[1]>0 or #matchB(a,b)[2]>0 then sfx(1,math.floor(40+(30*M6(1,ME.bite/ME.BITE))//1)) ME.nrj[1]=M5(ME.nrj[2],ME.nrj[1]) ME.bits=ME.bits+a.no[1] if #matchB(a,b)[1]>0 then for i,v in ipairs(matchB(a,b)[1])do ME.bite=ME.bite+1 end else ME.bite=ME.bite+1 end if #T5(a.no,1)>0 and ME.bite>=ME.BITE and b.typ=="basic" then if TP(ME.stats[3][2])=="string" then ME.stats[3][2]=ME.bits*ME.bite else ME.stats[3][2]=M5(ME.stats[3][2],ME.bits*ME.bite) end ME.score=ME.score+ME.bits*ME.bite ME.bits=0 ME.BITEPLUS[3]=0 ME.bite=0 end end elseif #matchB(a,b)[1]==0 and #matchB(a,b)[2]==0then ME.bits=0 ME.bite=ME.BITEPLUS[3] end end end function deckSee(X,Y) for i,v in ipairs(ME.D)do v.xy={X,Y} v.XY={X,Y} v.clp=0 end if #ME.D>0 then CD(ME.D[nextDraw],X,Y) for i=0,7 do local p={9,1} rect(X,i+Y+cWH[2],cWH[1],1,p[1+(i%2)]) pix(X,i+Y+cWH[2],1) pix(X+cWH[1]-1,i+Y+cWH[2],1) end end end function pileSee(X,Y) if #ME.P>0then if ME.pileTopInfo then rect(X-4,Y-4,cWH[1]+8,cWH[2]+8,11) end if #ME.P>1 then CD(ME.P[#ME.P-1]) end local c=ME.P[#ME.P] c.XY={X,Y} local v=ME.P[#ME.P] if atRest(ME.P[#ME.P])then flip(ME.P[#ME.P]) end local g=M6(2,ME.bite//ME.BITE) moveTheCards(v,5+20*M5(0,M6((ME.bite/ME.BITE),2),g)) CD(c) end end function doTheCard() local na=false local c=ME.P[#ME.P] if (c) and atRest(c) or c==nil then if #nextCardActs>0 then na=true local c=nextCardActs[1] c[2]=c[2]-1/60 if c[2]<=0 then c[1]() T2(nextCardActs,1) end end end return na end function dontAccept() local stop=false if #ME.P>0then if ME.P[#ME.P].xy[1]~=ME.P[#ME.P].XY[1] or ME.P[#ME.P].xy[2]~=ME.P[#ME.P].XY[2] then stop=true end end return stop end function trueSize(set) local C=0 for i,v in ipairs(set)do C=C+(v.size or 1) end return C end specialCards={ {name="CHEW BONES",info="+3 BITS for each card in hand.",job=function(c,t) ME.bits=ME.bits+trueSize(ME.H)*3 end,bg=9,pic={{136,8,0,2,3,0,swap=4}}}, {name="MOUSE FLY",info="Passive Hand: Gain +1 BITS after a draw or card play.",job=function(c,t) if t=="afterDraw" or t=="afterPlay" then ME.bits=ME.bits+3 end end,bg=3,pic={{128,0,0,4,4,0}} }, { name="TED-E",info="Passive Hand: Gain +1 BITE after every draw. This card counts as 3.",job=function(c,t) if t=="afterDraw" then ME.bite=ME.bite+1 end end,bg=9,pic={{132,0,0,4,4,0,swap=3}},size=3 }, { name="AMBIDEXTROUS AVIAN",info="Passive Hand: Gain +3 BITS whenever you play a LEFT or RIGHT shape.",job=function(c,t) if t=="afterPlay" then if #ME.P>0 then local c=ME.P[#ME.P] if c.typ=="basic" and (#T5(c.shape,2)>0 or #T5(c.shape,4)) then ME.bits=ME.bits+3 end end end end,bg=9, pic={{138,0,0,4,4,0,swap=4}} }, { name="HIGH NOTE",info="Gain +3 BITE when you play an UP.", job=function(c,t) if t=="afterPlay" then if #ME.P>0 then local c=ME.P[#ME.P] if c.typ=="basic" and #T5(c.shape,1)>0 then ME.bite=ME.bite+3 end end end end,bg=9,pic={{772,0,0,4,4,0,swap=4}} }, { name="DUCK AND ROLL",info="Gain +1 BITE when you play a DOWN.", job=function(c,t) if t=="afterPlay" then if #ME.P>0 then local c=ME.P[#ME.P] if c.typ=="basic" and #T5(c.shape,2)>0 then ME.bite=ME.bite+3 end end end end,bg=9,pic={{904,0,16,4,2,0,swap=4}} }, { name="THE SPECIALIST",info="Top Of The Pile: Gain +10 BITS for each special card in hand.",job=function(c,t) if t=="onPile" then for i,v in ipairs(ME.H)do if v.typ=="special" then ME.bits=ME.bits+10 end end end end,bg=9,pic={{397,0,0,3,3,0,swap=4}} } } function loseHP(c,x) ME.hp[1]=ME.hp[1]-x if TP(c)=="table" then ME.lastHitBy=T3(c) end sfx(0) addShake(dt,24,2,4,2,4) T1(pops,{t=dt*12,txt="-"..x.." HP",x=66,y=8, update=function(self) self.t=self.t-dt if self.t<=0then self.kl=true end end, draw=function(self) P(self.txt,self.x,self.y,2,false,2,true) end,tags={"loseHP"} }) end foeCards={ {name="KILL TOY",info="If you are past hand limit, -1 HP",job=function(c,t) if trueSize(ME.H)>ME.limit then loseHP(c,1) end end, pic={{1792,8,8,3,4,0}}}, { name="2-SLO",info="-1 HP if your BITE is below cash out requirement",job=function(c,t) if ME.bite=ME.BITEPLUS[2])do if ME.BITEPLUS[1]>=ME.BITEPLUS[2] then battery.state=1 battery.dt=1/6 ME.bite=ME.bite+1 ME.nrj[1]=M5(ME.nrj[1],ME.nrj[2]) ME.BITEPLUS[1]=ME.BITEPLUS[1]-ME.BITEPLUS[2] ME.BITEPLUS[3]=ME.BITEPLUS[3]+1 end end end function drawACard() if #ME.D>0then mv2Set(ME.D,ME.H,nextDraw) ME.stats[1][2]=ME.stats[1][2]+1 if #ME.P>0 then local v=ME.P[#ME.P] if v.typ=="special" and #T5(worksOnPile,v.id)>0then T1(nextCardActs,{function() specialCards[v.id].job(v,"onPile") end,1/6}) end end for i,v in ipairs(ME.H)do if v.typ=="special" and #T5(worksAfterDraw,v.id)>0then T1(nextCardActs,{function() specialCards[ME.H[i].id].job(c,"afterDraw") end,1/6}) end end ME.hPg=#ME.H-2 ME.hPg2=#ME.H end if #ME.D>0 then nextDraw=M1(#ME.D) end end function reFill() if #ME.D==0 then shuffle(ME.P,ME.D) end end function wonLevel() if #nextCardActs==0then if ME.hp[1]<=0 then if gameUI.hp==ME.hp[1] then T1(nextCardActs,{function() screen="gg" makeMenu("GG",8,112,200,128,0,0,60,20,1,1) end ,1/2}) end elseif gameUI.score>=ME.goal and gameUI.score==ME.score then T1(nextCardActs,{function() local picks,picksB={},{} for i=1,#specialCards do T1(picks,i) end for i=1,3 do if #picks>0 then local r=M1(#picks) T1(picksB,picks[r]) T2(picks,r) end end for i,v in ipairs(picksB)do T1(currentCardRewards,C("special",v)) currentCardRewards[i].clp=cWH[1] end screen="reward" makeMenu("REWARD",8,4,224,128,8,24,cWH[1],cWH[2],1,(208-cWH[1]*4)/3) end,1/2}) end end end function slideCardsRight() if ME.hPg2<=#ME.H-2 then ME.hPg=M5(ME.hPg-1,1) end ME.hPg2=M5(ME.hPg2-1,1) end function slideCardsLeft() ME.hPg=M6(ME.hPg+1,#ME.H-2) ME.hPg2=M6(ME.hPg2+1,#ME.H) end function flipCardsInHand() for i,v in ipairs(ME.H)do if atRest(v)then flip(v) end end end function autoPlay() if ME.H[#ME.H].typ=="fo" then mv2Set(ME.H,ME.P,#ME.H) ME.stats[2][2]=ME.stats[2][2]+1 local C=ME.P[#ME.P] T1(nextCardActs,{function() foeCards[ME.P[#ME.P].id].job(C) end,1/6}) end end function playACard() if #ME.H>0then ME.stats[2][2]=ME.stats[2][2]+1 mv2Set(ME.H,ME.P,ME.hPg2) local c=ME.P[#ME.P] gainBurst(c) if c.typ=="basic" then T1(nextCardActs,{function() if #ME.P>0then match(ME.P[#ME.P],ME.P[#ME.P-1]) end end ,1/60}) elseif c.typ=="special" then T1(nextCardActs,{function() ME.nrj[1]=ME.nrj[1]-1 specialCards[ME.P[#ME.P].id].job(c) end,1/60}) end ME.hPg2=M6(M5(ME.hPg2,1),#ME.H) ME.hPg=M6(M5(ME.hPg,1),#ME.H-2) for i,v in ipairs(ME.H)do if v.typ=="special" and #T5(worksAfterPlay,v.id)>0then T1(nextCardActs,{function() specialCards[ME.H[i].id].job(v,"afterPlay") end,1/6}) end end end end time=0 function gameBG() local c=7 if ME.onFire and currentPal=="tint0" then c=3 end cls(c) end end BOOT() function TIC() runTime=runTime+dt if screen=="main" then cls(1) P("CHAIN COMBO",8,8,4,false,2) elseif screen=="help" then if btnp(2) then helpPg=M5(1,helpPg-1) elseif btnp(3)then helpPg=M6(#help,helpPg+1) elseif btnp(4) then screen="main" mainMenu() end cls(7) P("Press A button to leave,100,12") P(help[helpPg][1],8,8,3,false,2) P(textFix(help[helpPg][2],42),8,24,4) elseif screen=="credits" then if btnp(4) then screen="main" mainMenu() end cls(7) P("Press A button to leave",8,100) P("This game was made by dukeDarer!",8,8,3) elseif screen=="game" then if #T4(ui,function(v) return v.id=="PAUSE" end)==0then ME.levelTime=ME.levelTime+dt ME.stats[4][2]=M.floor((ME.levelTime//60))..":"..M.floor((ME.levelTime%60)) end flipCardsInHand() bangAct() wonLevel() reFill() local a=dontAccept() local b=doTheCard() local c=#ui>0 ME.cant=a or b or c if ME.cant==false then if btnp(0)then if ME.inspect and #ME.P>0then ME.pileTopInfo=true end elseif btnp(1)then if ME.inspect and #ME.P>0 then ME.pileTopInfo=false end elseif btnp(2) then slideCardsRight() elseif btnp(3)then slideCardsLeft() elseif btnp(4)then playACard() elseif btnp(5)and ME.pileTopInfo==false then if #ME.D>0then drawACard() gainBurst() end ME.nrj[1]=M5(ME.nrj[1]-1,-1) autoPlay() gainBurst() elseif btnp(6)then makeMenu("PAUSE",40,8,160,120,4,24,152,20,2,2) elseif btnp(7)then if ME.inspect==true then ME.inspect=false ME.pileTopInfo=false else ME.inspect=true end end end if ME.nrj[1]<0then ME.bits=0 ME.bite=ME.BITEPLUS[3] ME.nrj[1]=0 end palleteManager() shiftCol() bigBang() shakeScreen() popUpdate() gameBG() seeGhosts() pileSee(114,8) handSee(80,76) deckSee(deckAt[1],deckAt[2]) bangDraw() poke4(2*0x3ffc,8)allColor(2)spr(0,8,4,0,2,0,0,1,1)palReset()poke4(2*0x3ffc,2) local HC=5 local tagF=T4(pops,function(v) return #T5(v.tags,"loseHP") end) if gameUI.hp0then HC=2 elseif gameUI.hpME.limit then handC=2 end P(trueSize(ME.H).." IN HAND",180,64,handC) P("SCORE:"..gameUI.score.."\n/"..ME.goal,180,8,4) if ME.inspect then local C=ME.H[ME.hPg2] if ME.pileTopInfo==true then C=ME.P[#ME.P] end if (C)then if C.typ=="special" then P(specialCards[C.id].name,144,24,11) P(textFix(specialCards[C.id].info,15),144,34,11) elseif C.typ=="fo" then P(foeCards[C.id].name,144,24,11) P(textFix(foeCards[C.id].info,15),144,34,11) else local n="BASIC CARD. Make sure to play a card that matches its shape/number to build your BITE." if C.no==1 then n=n.." You can cash out with this card." end P(textFix(n,15),144,24,11) end else P(textFix("No cards in pile.",15),144,24,11) end end drawGameUI() --rect(8,64,80*ME.BITEPLUS[1]/ME.BITEPLUS[2],6,11) batteryUpdate() batteryDraw(8,63,80,8,8) elseif screen=="reward" then cls(4) elseif screen=="shop" then if btnp(6) then screen="game" ui={} end cls(4) rect(160,16,76,80,10) allColor(2) spr(0,164,22,0,2) allColor(4) spr(1,164,41,0,2) allColor(3) rect(166,63,12,12,11) allColor(4) spr(2,164,61,0,2) palReset() local hC=5 if ME.hp[1]<=ME.hp[2]*3/4 and ME.hp[1]>=ME.hp[2]/4 then hC=3 elseif ME.hp[1]<=ME.hp[2]/4then hC=2 end P(ME.hp[1].."/"..ME.hp[2],184,24,hC,false,2) P(ME.nrj[1].."/"..ME.nrj[2],184,44,4,false,2) local lC=8 if trueSize(ME.H)>ME.limit then lC=2 end P("Hand\nLimit: ",164,82,lC,false) P(trueSize(ME.H).."/"..ME.limit,192,82,lC,false,2,true) P(ME.koyn,184,63,3,false,3) elseif screen=="gg"then cls(2) P("GAME OVER!!!",60,8,4,false,2) P("LOST AT LEVEL "..ME.lvl,40,20,4) for i,v in ipairs(ME.stats)do P(v[1]..":"..v[2],40,25+i*10,4) end if (ME.lastHitBy)then if TP(ME.lastHitBy)=="table"then P("Lost To",184,24,1) CD(ME.lastHitBy,184,36) end end end menUse() drawTheMenus() popDraw() end function CD(c,x,y,flp)local ar={0,1,2,3}local x,y=x or c.xy[1],y or c.xy[2] if x+cWH[1]>=0 and x<=240 and y+cWH[2]>=0 and y<=136 then local cx,cw,clp=c:getSize(x,y) if flp then cx=x cw=cWH[1] clp=cWH[1] end clip(cx,y,cw,cWH[2]) local rC=10 if clp<=cWH[1]//2 then if c.typ=="fo"then rC=2 else rC=9 end else if c.typ=="fo"then rC=2 elseif c.typ=="basic"then if #c.shape==4 then rC=1 else rC=4 end elseif c.typ=="special"then rC=specialCards[c.id].bg end end rect(cx,y,cw,cWH[2],rC) if clp2 then b=6 end A({{id="aro1",x=ii*9,y=b+i*9,w=6,h=6,a=pie*aroD[1+(i+ii)%4],c=aroC[1+(i+ii)%4],c=8,pH=3,bW=2}},x+3,y+3) end end rect(x,y+20,cWH[2]-2,15,9) rectb(x,y+20,cWH[1],15,8) P("CHAIN\nCOMBO",x+6,y+22,8,fixed,1,false) end else if c.typ=="basic"then if #c.no==1then local xS=0 if c.no[1]>9 then xS=-5 end local TC=1 if #c.shape==4 then TC=4 end P(c.no[1],x+16+xS,y+42,TC,false,2) end if#c.shape==1then A({{id="aro1",x=0,y=0,w=28,y=20,a=pie*aroD[c.shape[1]],c=aroC[c.shape[1]],h=28,pH=14,bW=8,lW=2,c2=1}},x+6,y-12) else local p={cWH[1]/2,cWH[2]/2} local slots={ {0,-1}, {1,0}, {0,1}, {-1,0} } circ(x+p[1],y+p[2],1,8) for i=1,4 do local S=T5(c.shape,i) if #S>0then A({{id="aro1", x=11*slots[i][1], y=11*slots[i][2], w=12,a=pie*aroD[i], c=aroC[i],h=12,pH=6,bW=4, lW=1,c2=1}},x+p[1]-6,y+p[2]-12) end end end elseif c.typ=="special"then A(specialCards[c.id].pic,x+4,y+4) elseif c.typ=="fo" then A(foeCards[c.id].pic,x+4,y+4) end end rectb(cx,y,cw,cWH[2],1) clip() end end function moveTheCards(c,v,g) local a,b a=T3(c.xy) d={ M2(D2(c.xy[1],c.xy[2],c.XY[1],c.XY[2])), M3(D2(c.xy[1],c.xy[2],c.XY[1],c.XY[2])), } local v=v local DIS=D1(c.xy[1],c.xy[2],c.XY[1],c.XY[2]) if DIS>100 then local M=M5((100-DIS)/10,-0.5) v=v+M*v elseif DIS<100 and DIS>40 then v=v elseif DIS>5 then local M=M5((DIS-40)/10,-0.5) v=v+M*v else v=1 end v=M5(1,v) for i=1,2 do if c.xy[i]~=c.XY[i] then if c.xy[i]>c.XY[i] then c.xy[i]=M5(c.xy[i]-M7((v or 1)*d[i]),c.XY[i]) else c.xy[i]=M6(c.xy[i]+M7((v or 1)*d[i]),c.XY[i]) end end end b=T3(c.xy) if (g)then local m,n=c:getSize(0,0) local DG=D1(a[1],a[2],b[1],b[2])/g local DG2=D2(a[1],a[2],b[1],b[2]) if DG~=0 then for i=1,g do local D=DG*i T1(ghosts,{ x=a[1]+D*M2(DG2), y=a[2]+D*M3(DG2), w=n, h=cWH[2], c=1,t=1/18 }) end end end end function atRest(c,x,y) return c.xy[1]==c.XY[1]and c.xy[2]==c.XY[2] end