Replace punching with dashing

This commit is contained in:
Vivian Lim 2020-05-05 08:49:43 -07:00
parent 15aa7d86bd
commit c8ffb475a5
4 changed files with 102 additions and 5 deletions

View File

@ -173,7 +173,7 @@ u32 determine_interaction(struct MarioState *m, struct Object *o) {
if (action == ACT_PUNCHING || action == ACT_MOVE_PUNCHING || action == ACT_JUMP_KICK) {
s16 dYawToObject = mario_angle_to_object(m, o) - m->faceAngle[1];
if (m->flags & MARIO_PUNCHING) {
if (m->flags & MARIO_PUNCHING || action == ACT_MOVE_PUNCHING) {
if (-0x2AAA <= dYawToObject && dYawToObject <= 0x2AAA) {
interaction = INT_PUNCH;
}

View File

@ -454,11 +454,14 @@ s32 act_jump(struct MarioState *m) {
s32 act_double_jump(struct MarioState *m) {
s32 animation;
/*
if (m->vel[1] >= 0.0f) {
animation = MARIO_ANIM_DOUBLE_JUMP_RISE;
} else {
animation = MARIO_ANIM_DOUBLE_JUMP_FALL;
}
*/
animation = MARIO_ANIM_SLIDEFLIP;
if (check_kick_or_dive_in_air(m)) {
return TRUE;
@ -1970,7 +1973,7 @@ s32 act_special_triple_jump(struct MarioState *m) {
return set_mario_action(m, ACT_GROUND_POUND, 0);
}
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);
play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);
update_air_without_turn(m);
@ -1981,7 +1984,8 @@ s32 act_special_triple_jump(struct MarioState *m) {
} else {
set_mario_action(m, ACT_FREEFALL_LAND_STOP, 0);
}
play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
//play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);
play_mario_sound(m, SOUND_ACTION_TERRAIN_LANDING, SOUND_MARIO_HAHA);
break;
case AIR_STEP_HIT_WALL:

View File

@ -479,11 +479,13 @@ s32 check_ground_dive_or_punch(struct MarioState *m) {
UNUSED s32 unused;
if (m->input & INPUT_B_PRESSED) {
/*
//! Speed kick (shoutouts to SimpleFlips)
if (m->forwardVel >= 29.0f && m->controller->stickMag > 48.0f) {
m->vel[1] = 20.0f;
return set_mario_action(m, ACT_DIVE, 1);
}
*/
return set_mario_action(m, ACT_MOVE_PUNCHING, 0);
}
@ -835,6 +837,89 @@ s32 act_walking(struct MarioState *m) {
}
s32 act_move_punching(struct MarioState *m) {
// repurpose for star dash
if (m->input & INPUT_A_PRESSED) {
return set_mario_action(m, ACT_SPECIAL_TRIPLE_JUMP, 0);
}
if (m->input & INPUT_B_PRESSED && m->actionState > 0) {
return set_mario_action(m, ACT_BRAKING, 0);
}
if (m->actionState == 0) {
//play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE, m->marioObj->header.gfx.cameraToObject);
play_sound(SOUND_GENERAL_SWISH_AIR, m->marioObj->header.gfx.cameraToObject);
}
m->actionState = 1;
//m->flags |= MARIO_PUNCHING;
if (mario_check_object_grab(m)) {
mario_grab_used_object(m);
m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;
return set_mario_action(m, ACT_DIVE_SLIDE, 0);
}
/*
if (m->waterLevel - m->floorHeight > 50.0f) {
play_sound(SOUND_GENERAL_FLAME_OUT, m->marioObj->header.gfx.cameraToObject);
return set_mario_action(m, ACT_WALKING, 0);
}
*/
if (m->input & INPUT_Z_DOWN) {
if (m->forwardVel > 0) {
m->forwardVel = approach_f32(m->forwardVel, 0.0f, 4.0f, 2.0f);
}
else if (m->forwardVel == 0){
return set_mario_action(m, ACT_BRAKING, 0);
}
}
else {
m->forwardVel = approach_f32(m->forwardVel, 60.0f, 10.0f, 1.0f);
}
if (m->input & INPUT_Z_DOWN) {
set_mario_animation(m, MARIO_ANIM_SKID_ON_GROUND);
m->particleFlags |= PARTICLE_DUST;
play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);
}
else {
set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, (s32)(m->forwardVel / 2.0f * 0x10000));
m->particleFlags |= PARTICLE_SPARKLES;
}
if (m->input & INPUT_NONZERO_ANALOG) {
m->faceAngle[1] =
m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x600, 0x600);
}
apply_slope_accel(m);
switch (perform_ground_step(m)) {
case GROUND_STEP_LEFT_GROUND:
set_mario_action(m, ACT_FREEFALL, 0);
break;
case GROUND_STEP_HIT_WALL:
slide_bonk(m, ACT_BACKWARD_GROUND_KB, ACT_BRAKING_STOP);
break;
}
//func_80263AD4(m, 9, 45);
//play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);
play_sound(SOUND_ACTION_TERRAIN_STEP, m->marioObj->header.gfx.cameraToObject);
return FALSE;
//
/*
if (should_begin_sliding(m)) {
return set_mario_action(m, ACT_BEGIN_SLIDING, 0);
}
@ -845,7 +930,7 @@ s32 act_move_punching(struct MarioState *m) {
m->actionState = 1;
mario_update_punch_sequence(m);
//mario_update_punch_sequence(m);
if (m->forwardVel >= 0.0f) {
apply_slope_decel(m, 0.5f);
@ -856,6 +941,9 @@ s32 act_move_punching(struct MarioState *m) {
apply_slope_accel(m);
}
play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);
m->forwardVel = 20.0f;
switch (perform_ground_step(m)) {
case GROUND_STEP_LEFT_GROUND:
set_mario_action(m, ACT_FREEFALL, 0);
@ -867,6 +955,7 @@ s32 act_move_punching(struct MarioState *m) {
}
return FALSE;
*/
}
s32 act_hold_walking(struct MarioState *m) {

View File

@ -14,7 +14,7 @@
* Used by act_punching() to determine Mario's forward velocity during each
* animation frame.
*/
s8 sPunchingForwardVelocities[8] = { 0, 1, 1, 2, 3, 5, 7, 10 };
s8 sPunchingForwardVelocities[8] = { 0, 100, 90, 100, 10, 10, 5, 4 };
void animated_stationary_ground_step(struct MarioState *m, s32 animation, u32 endAction) {
stationary_ground_step(m);
@ -158,9 +158,13 @@ s32 act_punching(struct MarioState *m) {
}
m->actionState = 1;
/*
if (m->actionArg == 0) {
m->actionTimer = 7;
}
*/
m->actionTimer = 4;
mario_set_forward_vel(m, sPunchingForwardVelocities[m->actionTimer]);
if (m->actionTimer > 0) {