diff --git a/JTMM.g3a b/JTMM.g3a index e853470..a1ab382 100644 Binary files a/JTMM.g3a and b/JTMM.g3a differ diff --git a/src/main.c b/src/main.c index 800e04b..86cc71b 100644 --- a/src/main.c +++ b/src/main.c @@ -11,9 +11,10 @@ #include "shared_define.h" #define MAX_HSPD 2.5 -#define DRILL_HSPD 6.0 +#define DRILL_HSPD 5.0 #define ACCELERATION 1.0 #define DECELERATION 0.5 +#define LOCK_MOMENTUM 5 #define MIN_VSPD -12.0 #define MAX_VSPD 6.0 #define JUMP_SPD -3.99 @@ -67,6 +68,7 @@ int main(void) char drill_toggle = 0; int drill_x = 0; int drill_y = 0; + int lock_momentum = 0; set_level(level_id, level); DRAW_LEVEL(); player_x = start_x; @@ -144,20 +146,21 @@ int main(void) int trunc_hspd; //ice if (collide(player_x, player_y + 1, level, '~')) friction = 0.2; + if (lock_momentum) friction = 0; //momentum lock part 1 move = keydown(KEY_RIGHT) - keydown(KEY_LEFT); - if (hspd < MAX_HSPD && hspd > -MAX_HSPD) - { - hspd += ACCELERATION * friction * move; - } + hspd += ACCELERATION * friction * move; + if (lock_momentum) lock_momentum--; //momentum lock part 2 if (hspd > 0) { - if (friction != 0.2) hspd -= DECELERATION * friction; + if (friction != 0.2) + hspd -= ((hspd > MAX_HSPD) + 1) * DECELERATION * friction; else hspd -= DECELERATION / 4 * friction; if (hspd < 0) hspd = 0; } - else if (hspd < 0) + else if (hspd < -0) { - if (friction != 0.2) hspd += DECELERATION * friction; + if (friction != 0.2) + hspd += ((hspd < -MAX_HSPD) + 1) * DECELERATION * friction; else hspd += DECELERATION / 4 * friction; if (hspd > 0) hspd = 0; } @@ -296,13 +299,14 @@ int main(void) collide_and_erase(drill_x, drill_y, level, 'd'); if (collide_spike(drill_x, drill_y, level) || collide_solid(drill_x, drill_y, level, polarity, 0)) { - if (selected_direction == UP || selected_direction == DOWN) - { - vspd = -vspd; - drill_toggle = 0; + drill_toggle = 0; + if (selected_direction == UP) vspd = MAX_VSPD; + else if (selected_direction == DOWN) vspd = JUMP_SPD; + else { + lock_momentum = LOCK_MOMENTUM; + if (selected_direction == LEFT) hspd = DRILL_HSPD; + else /*direction is RIGHT*/ hspd = -DRILL_HSPD; } - else if (selected_direction == LEFT) hspd = DRILL_HSPD; - else /*direction is RIGHT*/ hspd = -DRILL_HSPD; } } //spike collision and death @@ -312,6 +316,8 @@ int main(void) player_y = start_y; polarity = 0; drill_toggle = 0; + lock_momentum = 0; + hspd = 0; vspd = 0; } //border warp @@ -339,6 +345,8 @@ int main(void) player_y = start_y; polarity = 0; drill_toggle = 0; + lock_momentum = 0; + hspd = 0; vspd = 0; } } diff --git a/up-editor/screens/5050.scr b/up-editor/screens/5050.scr index 6bb7485..5c7d056 100644 --- a/up-editor/screens/5050.scr +++ b/up-editor/screens/5050.scr @@ -1 +1 @@ -0000000000000000000000000000000000000000000000000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000..E..rr.......t..00000000011111111bbbb.....00000000000000000bbbb~~~~~00000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000 \ No newline at end of file +0000000000000000000000000000000000000000000000000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000..E..rr.......t..00000000011111111bbbb.....00000000000000000bbbb1111100000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000 \ No newline at end of file diff --git a/up-editor/screens/5059.scr b/up-editor/screens/5059.scr index e3e033c..5037c76 100644 --- a/up-editor/screens/5059.scr +++ b/up-editor/screens/5059.scr @@ -1 +1 @@ -000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vww0.vv^.v^.0v.000000.vv00vvbv.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000...0wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv10000vvv0v0v00000000000000000000000000000000000 \ No newline at end of file +000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vww0.vv^.v^.0v.000000.vv00vvbv.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000....wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv10000vvv0v0v00000000000000000000000000000000000 \ No newline at end of file