From f95a2ec8b7eea567d83648ab16995cdc93553017 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Sat, 21 Mar 2020 16:31:53 +0100 Subject: [PATCH] Reduced spike hitboxes (Lephenixnoir suggestion) and created a Massena-difficulty level --- JTMM.g3a | Bin 71344 -> 71936 bytes include/collide.h | 1 + src/collide.c | 9 +++++++++ src/levels.c | 2 +- src/main.c | 4 ++-- src/menu.c | 2 +- up-editor/screens/5059.scr | 1 + 7 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 up-editor/screens/5059.scr diff --git a/JTMM.g3a b/JTMM.g3a index 3cd77afdd2dd03dc29722a223c848d434ea7c814..7295e5e9baa2cf732cf5acf5e0e509d708945087 100644 GIT binary patch delta 3523 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 KliQs6>Hh#|Q^`*N diff --git a/include/collide.h b/include/collide.h index 25f3a53..88786e1 100644 --- a/include/collide.h +++ b/include/collide.h @@ -1,4 +1,5 @@ char collide(int x, int y, char level[], char tile); +char collide_spike(int x, int y, char level[]); char collide_solid(int x, int y, char level[], char polarity); char collide_point(int x, int y, char level[], char tile); char collide_and_erase(int x, int y, char level[], char tile); diff --git a/src/collide.c b/src/collide.c index de9f975..036e0b6 100644 --- a/src/collide.c +++ b/src/collide.c @@ -4,6 +4,7 @@ #define PLAYER_H 11 #define PLAYER_W 11 #define LEVEL_WIDTH 28 +#define SPIKE_SCAM 2 char collide(int x, int y, char level[], char tile) { @@ -15,6 +16,14 @@ char collide(int x, int y, char level[], char tile) return 0; } +char collide_spike(int x, int y, char level[]) +{ + return (collide_point(x + SPIKE_SCAM, y + SPIKE_SCAM, level, 'v') || + collide_point(x + PLAYER_W - SPIKE_SCAM, y + SPIKE_SCAM, level, 'v') || + collide_point(x + SPIKE_SCAM, y + PLAYER_H - SPIKE_SCAM, level, 'v') || + collide_point(x + PLAYER_W - SPIKE_SCAM, y + PLAYER_H - SPIKE_SCAM, level, 'v')); +} + char collide_point(int x, int y, char level[], char tile) { return (level[(int)(x/16) + (int)(y/16) * LEVEL_WIDTH] == tile); diff --git a/src/levels.c b/src/levels.c index 47efc04..9214473 100644 --- a/src/levels.c +++ b/src/levels.c @@ -1,3 +1,3 @@ #include "levels.h" #include -void set_level(int level_id, char level[]){switch (level_id){case 5050:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000..E..rr..........000000--00000000000bbbb.....000000--00000000000bbbb00000000000--00.............00000000000--00.............00000000000--00.........000000000000000--00..S......000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5051:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--00......................00--00S....................E00--0000rrrrrrrrrbbbbbbbbb0000--0000vvvvvvvvvvvvvvvvvv0000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5052:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--0000000000.........0000000--0000000000.......E.0000000--0000000000....000000000000--0000000000......0000000000--0000000000bb....0000000000--0000000000......0000000000--0000000000....000000000000--0000000000......0000000000--0000000000rr....0000000000--0000000.........0000000000--0000000.S.......0000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5053:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--0000.....00000000000000000--000.......0000000000000000--00.........000000000000000--00.........000000000000000--00.........0000....b..r.00--00.........000.....b..r.00--00....0............b..rE00--00....0..........bbbrrr.00--00....0.........bvvvvvvv00--00.S..0.........v000000000--0000**00000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5054:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......000...v...000...00--00......000.......000.E.00--00.S....000.......000...00--00000...000...0...000...00--00000www000www0www000www00--00000www000www0www000www00--00000www000www0www000www00--00000vww000wwv0vww000wwv00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5055:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--000000..............000000--.r...0..............0...b.--.r...0..............0...b.--.r.S.0..............0.E.b.--000000..............000000--00......................00--00......................00--00......................00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5056:memcpy(level,"-----------------------------00000000000000..0000000000--00000000000000..0000000000--000000.......0..0...ww...0--000000.......0..0...ww...0--000000.......0......ww...0--000000bbb0...0.....vvvv..0--000000vww0...0..00vvvvvvE0--000000www0v.....0000000000--000000wwv0v.....0000000000--000000rrr0...0..0000000000--00...0wwv0...0..v000000000--00...bwww0...0..v000000000--00.S.bwww0***0..0000000000--00000000000000..0000000000--00000000000000..0000000000-----------------------------",476);break;case 5057:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00....v000000vvvvvvvv...00--00....v0vv000...........00--00....0v..000.........S.00--00ww0.E...000........00000--00ww0000v...........v00000--00ww000..............00000--00ww000...........w..00000--00wwwwww00^.......v..00000--00wwwwww00^.......v..00000--00vvvvvv00^......vv..00000--00000000000......vv..00000--000000000000vvv0v00**00000--00000000000000000000000000-----------------------------",476);break;case 5058:memcpy(level,"-----------------------------0000000000ww0000000www0000--000000000www0000000www0000--00.....0..000000000www0000--00.S...0.^000000000www0000--00000..0.^00000........000--00000..0.^0000.........000--00.....0.^000vbww0rrrrr000--00.....0.^00rwwbw0.....000--00bb0vvv.^0vwrwwv0.....000--00wwrww..0wbwwrw00v.vvv000--00wwrww..0wwbwv000.....000--00wwrww..0rwwb0000.....000--00vvvww..0wrv000000.E.0000--0000000**0ww0000000...0000--0000000000ww0000000...0000-----------------------------",476);break;}} \ No newline at end of file +void set_level(int level_id, char level[]){switch (level_id){case 5050:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000.....rr..........000000--000..E..rr..........000000--00000000000bbbb.....000000--00000000000bbbb00000000000--00.............00000000000--00.............00000000000--00.........000000000000000--00..S......000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5051:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--00......................00--00S....................E00--0000rrrrrrrrrbbbbbbbbb0000--0000vvvvvvvvvvvvvvvvvv0000--00000000000000000000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5052:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--0000000000.........0000000--0000000000.......E.0000000--0000000000....000000000000--0000000000......0000000000--0000000000bb....0000000000--0000000000......0000000000--0000000000....000000000000--0000000000......0000000000--0000000000rr....0000000000--0000000.........0000000000--0000000.S.......0000000000--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5053:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00000000000000000000000000--0000.....00000000000000000--000.......0000000000000000--00.........000000000000000--00.........000000000000000--00.........0000....b..r.00--00.........000.....b..r.00--00....0............b..rE00--00....0..........bbbrrr.00--00....0.........bvvvvvvv00--00.S..0.........v000000000--0000**00000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5054:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......000...v...000...00--00......000.......000.E.00--00.S....000.......000...00--00000...000...0...000...00--00000www000www0www000www00--00000www000www0www000www00--00000www000www0www000www00--00000vww000wwv0vww000wwv00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000wwwwwwwww0wwwwwwwww00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5055:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00......................00--00......................00--00......................00--000000..............000000--.r...0..............0...b.--.r...0..............0...b.--.r.S.0..............0.E.b.--000000..............000000--00......................00--00......................00--00......................00--00000000000000000000000000--00000000000000000000000000-----------------------------",476);break;case 5056:memcpy(level,"-----------------------------00000000000000..0000000000--00000000000000..0000000000--000000.......0..0...ww...0--000000.......0..0...ww...0--000000.......0......ww...0--000000bbb0...0.....vvvv..0--000000vww0...0..00vvvvvvE0--000000www0v.....0000000000--000000wwv0v.....0000000000--000000rrr0...0..0000000000--00...0wwv0...0..v000000000--00...bwww0...0..v000000000--00.S.bwww0***0..0000000000--00000000000000..0000000000--00000000000000..0000000000-----------------------------",476);break;case 5057:memcpy(level,"-----------------------------00000000000000000000000000--00000000000000000000000000--00....v000000vvvvvvvv...00--00....v0vv000...........00--00....0v..000.........S.00--00ww0.E...000........00000--00ww0000v...........v00000--00ww000..............00000--00ww000...........w..00000--00wwwwww00^.......v..00000--00wwwwww00^.......v..00000--00vvvvvv00^......vv..00000--00000000000......vv..00000--000000000000vvv0v00**00000--00000000000000000000000000-----------------------------",476);break;case 5058:memcpy(level,"-----------------------------0000000000ww0000000www0000--000000000www0000000www0000--00.....0..000000000www0000--00.S...0.^000000000www0000--00000..0.^00000........000--00000..0.^0000.........000--00.....0.^000vbww0rrrrr000--00.....0.^00rwwbw0.....000--00bb0vvv.^0vwrwwv0.....000--00wwrww..0wbwwrw00v.vvv000--00wwrww..0wwbwv000.....000--00wwrww..0rwwb0000.....000--00vvvww..0wrv000000.E.0000--0000000**0ww0000000...0000--0000000000ww0000000...0000-----------------------------",476);break;case 5059:memcpy(level,"-----------------------------00000000000000000000000000--0000000vvvvvv0000000000000--000000vv....vv^...v0000000--00...0v......v^v...0000000--00...0v..v...v^..^.0000000--00.S.0vww0v..v^..^.0E.0000--00rrr0vvww0..v^..^.0..0000--00.v000vwS0.vv^.v^.0v.0000--00.vv00vv0v.vv^..^..w.0000--00..v0vvww0..v^..^....0000--00...0vwrwv..v^..^....0000--00...0wwwvv..v^v.^w...0000--00vr..wwvvv.wr...^vvvv0000--000vv00000vvv0v0v000000000--00000000000000000000000000-----------------------------",476);break;}} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 6e2a29f..bf238b1 100644 --- a/src/main.c +++ b/src/main.c @@ -196,7 +196,7 @@ int main(void) } } //spike collision and death - if (collide(player_x, player_y, level, 'v')) + if (collide_spike(player_x, player_y, level)) { player_x = start_x; player_y = start_y; @@ -214,7 +214,7 @@ int main(void) if (collide(player_x, player_y, level, 'E')) { level_id++; - if (level_id == 5059) + if (level_id == 5060) { just_breathe(step); return 0; diff --git a/src/menu.c b/src/menu.c index cb3289e..3d83424 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2,7 +2,7 @@ #include #include "menu.h" -#define LAST_LEVEL 5058 +#define LAST_LEVEL 5059 #define Y_POS 88 diff --git a/up-editor/screens/5059.scr b/up-editor/screens/5059.scr new file mode 100644 index 0000000..a5b6d5e --- /dev/null +++ b/up-editor/screens/5059.scr @@ -0,0 +1 @@ +000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vwS0.vv^.v^.0v.000000.vv00vv0v.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000...0wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv00000vvv0v0v00000000000000000000000000000000000 \ No newline at end of file