Ledge Climb Slow
Ledge Climb Slow is internally implemented as two actions: Ledge Climb Slow 1 and Ledge Climb Slow 2. These two actions have the same behavior...
| Ledge Climb Slow 2 | |
| Properties | |
| Hex | 0x0000054D |
| Action Flags | moving |
| Action Group | Automatic |
| ID | 0x14D |
| Transitions | |
| Into | (common automatic cancel: Water Plunge), Soft Bonk, (actionTimer >= 28 exit: Jump, Freefall, Walking, Begin Sliding), Idle |
| Out of | Ledge Climb Slow 1 |
| Ledge Climb Slow 1 | |
| Properties | |
| Hex | 0x0000054C |
| Action Flags | moving |
| Action Group | Automatic |
| ID | 0x14C |
| Transitions | |
| Into | (common automatic cancel: Water Plunge), Soft Bonk, (actionTimer >= 28 exit: Jump, Freefall, Walking, Begin Sliding), Idle |
| Out of | Ledge Grab |
Mario can enter Ledge Climb Slow 1 during Ledge Grab by holding the joystick towards where Mario is facing (towards the ledge). Also, on the EU version, you cannot Ledge Climb Slow while holding A.
As the name suggests, this is slower than Ledge Climb Fast, which Mario can do by pressing A in the Ledge Grab.
Transition In
The common cancel steps for automatic actions are run.
- If Mario is more than 100 units below the water level, do stuff, Water Plunge
- Set quicksand depth to 0
Behavior
todo, temporary:
s32 act_ledge_climb_slow(struct MarioState *m) {
if (m->input & INPUT_OFF_FLOOR) {
return let_go_of_ledge(m);
}
if (m->actionTimer >= 28
&& (m->input
& (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE))) {
climb_up_ledge(m);
return check_common_action_exits(m);
}
if (m->actionTimer == 10) {
play_sound_if_no_flag(m, SOUND_MARIO_EEUH, MARIO_MARIO_SOUND_PLAYED);
}
update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE);
update_ledge_climb_camera(m);
if (m->marioObj->header.gfx.animInfo.animFrame == 17) {
m->action = ACT_LEDGE_CLIMB_SLOW_2;
}
return FALSE;
}
During a ledge climb slow, when the animation timer reaches 17, the action is set to Ledge Climb Slow 2.