Compare commits

...

2 Commits

4 changed files with 29 additions and 24 deletions

BIN
JTMM.g3a

Binary file not shown.

View File

@ -10,10 +10,11 @@
#include "menu.h"
#include "shared_define.h"
#define MAX_HSPD 2.0
#define DRILL_HSPD 6.0
#define MAX_HSPD 2.5
#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
@ -44,7 +45,6 @@ int main(void)
double vspd = 0.0; //player vertical speed
double hspd = 0; //player horizontal speed
int move = 0;
int direction = 0;
int on_ground = 6; //remember if player is on solid
char in_water = 0;
int player_x = 0;
@ -68,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;
@ -133,7 +134,7 @@ int main(void)
if (!drill_buffer)
{
drill_toggle = !drill_toggle;
selected_direction = last_direction;
if (drill_toggle) selected_direction = last_direction;
}
drill_buffer = 1;
}
@ -145,27 +146,25 @@ 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 (move) {
if (hspd < MAX_HSPD)
{
hspd += ACCELERATION * friction;
}
direction = move;
}
else if (hspd > 0)
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;
}
trunc_hspd = hspd * direction;
trunc_hspd = hspd;
if (1) //glue was here
{
if (!collide_solid(player_x + trunc_hspd, player_y, level, polarity, 0))
@ -300,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
@ -316,6 +316,8 @@ int main(void)
player_y = start_y;
polarity = 0;
drill_toggle = 0;
lock_momentum = 0;
hspd = 0;
vspd = 0;
}
//border warp
@ -342,6 +344,9 @@ int main(void)
player_x = start_x;
player_y = start_y;
polarity = 0;
drill_toggle = 0;
lock_momentum = 0;
hspd = 0;
vspd = 0;
}
}

View File

@ -1 +1 @@
0000000000000000000000000000000000000000000000000000000.....rr.dddd.....000000000.....rr.dddd.....000000000.....rr.dddd.....000000000.....rr.dddd.....000000000..E..rr.dddd..t..00000000011111111bbbb.....00000000000000000bbbb1111100000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000..E..rr.......t..00000000011111111bbbb.....00000000000000000bbbb1111100000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000

View File

@ -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
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