Movement steps: Difference between revisions

m
no edit summary
(→‎Air Step: clarify the actual events)
mNo edit summary
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
Typically, Mario's position is updated incrementally using his velocity. These increments are called '''steps''', and they behave differently when Mario is on the ground, in the air, in water, hanging, and climbing a pole. When on the ground or in the air, these steps typically occur four times per frame, and are commonly referred to as '''quarter steps''' or sometimes '''quarter frames'''.
Typically, Mario's position is updated incrementally using his velocity. These increments are called '''steps''', and they behave differently when Mario is on the ground, in the air, in water, hanging, and climbing a pole. When on the ground or in the air, these steps typically occur four times per frame, and are commonly referred to as '''quarter steps''' or colloquially '''quarter frames'''.


Steps are also responsible for detecting collision with [[surfaces]], updating Mario's [[referenced surfaces]], and updating Mario's [[Water|water level]]. However, quarter steps don't detect object collisions or warps.
Steps are also responsible for detecting collision with [[surfaces]], updating Mario's [[referenced surfaces]], and updating Mario's [[Water|water level]]. However, quarter steps don't detect object collisions or warps.
Line 19: Line 19:
## If the position is above OOB but below Mario's current floor height, Mario's height is changed to the floor height and he '''lands'''.
## If the position is above OOB but below Mario's current floor height, Mario's height is changed to the floor height and he '''lands'''.
## If the position is above OOB but not below Mario's current floor height, Mario's height is set to the new height and he '''hits a wall'''.
## If the position is above OOB but not below Mario's current floor height, Mario's height is set to the new height and he '''hits a wall'''.
## If the action has the "riding shell" flag and the water level at the position is above the position's floor (up to 78 units above the position):
## If the action has the <span style="color:green;">"riding shell" flag</span> and the water level at the position is above the position's floor (up to 78 units above the position):
##* The floor height from here on is the water height.
##* The floor height from here on is the water height.
##* The floor from this point on is a "fake" floor on the surface of the water.
##* The floor from this point on is a "fake" floor on the surface of the water.
Line 33: Line 33:
## If the position's height is 160 units under, at, or above a ceiling and his vertical velocity is positive or zero:
## If the position's height is 160 units under, at, or above a ceiling and his vertical velocity is positive or zero:
##* Mario's vertical velocity is set to zero.
##* Mario's vertical velocity is set to zero.
##* If the ceiling above Mario is hangable and the air step has the "check hang" flag, Mario '''hangs'''. (Since this did not use the new position's ceiling/location, this is potentially a [[Hangable Ceiling Upwarp|hangable-ceiling upwarp.]])
##* If the ceiling above Mario is hangable and the air step has the <span style="color:green;">"check hang" flag</span>, Mario '''hangs'''. (Since this did not use the new position's ceiling/location, this is potentially a [[Hangable Ceiling Upwarp|hangable-ceiling upwarp.]])
##* Otherwise, '''nothing happens'''.
##* Otherwise, '''nothing happens'''.
## If the position's height is 160 units under, at, or above a ceiling and his vertical velocity is negative:
## If the position's height is 160 units under, at, or above a ceiling and his vertical velocity is negative:
##* If the position's height is at or below Mario's floor height, Mario's height is set to the floor height, and he '''lands'''.
##* If the position's height is at or below Mario's floor height, Mario's height is set to the floor height, and he '''lands'''.
##* Otherwise, Mario's height is set to the new height and he '''hits a wall'''.
##* Otherwise, Mario's height is set to the new height and he '''hits a wall'''.
## If there is a wall 30 units above the position but not 150 units above the position and the air step has the "check ledge grab" flag:
## If there is a wall 30 units above the position but not 150 units above the position and the air step has the <span style="color:green;">"check ledge grab" flag</span>:
##* If Mario's velocity is positive, Mario is pushed by the wall opposite the velocity direction, and there is a floor 60 units behind the wall within 238 units upward, Mario '''ledge grabs'''. (Potentially a [[GLG]])
##* If Mario's velocity is positive, Mario is pushed by the wall opposite the velocity direction, and there is a floor 60 units behind the wall within 238 units upward, Mario '''ledge grabs'''. (Potentially a [[GLG]])
##* Otherwise Mario's position is set to the new position, his floor and floor height are updated, and '''nothing happens'''.
##* Otherwise Mario's position is set to the new position, his floor and floor height are updated, and '''nothing happens'''.
Line 109: Line 109:
** The camera preset is set to the area's default preset.
** The camera preset is set to the area's default preset.
** Mario enters the [[Lava Boost|lava boost]] action while dropping any held objects and no longer riding a shell.
** Mario enters the [[Lava Boost|lava boost]] action while dropping any held objects and no longer riding a shell.
=== Common Air Knockback Step ===
Similar to Common Air Step, it uses the "exit" from Perform Air Step. This function takes in a '''''landing action''''', a '''''hard fall action''''', and a '''''speed'''''.
Before calling Perform Air Step, it sets Mario's speed to '''''speed'''''.
Common Air Knockback Step can cancel into [[Feet Stuck In Ground]], '''''landing action''''', and '''''hard fall action'''''.
Mario cannot '''Hang''' or '''Ledge Grab'''. '''Nothing Happens''' and '''Lava Wall Boosts''' (contains cancel [[Lava Boost]]) are the same as for Perform Air Step.
* '''Lands'''
** If should get stuck in ground, drop and set action to [[Feet Stuck In Ground]]
** If y-velocity less than negative 55 and floor is not lava,
*** If fell more than 3000 units, shake camera, play MARIO_SOUND_ATTACKED, and drop and set mario action to the '''''hard fall action''''' with argument 4
*** Else if fell more than 1500 units and floor is not slippery
**** Hurt counter += 8 if cap, else 12
**** Squish counter += 30
** If neither of the first two checks canceled, set action to '''''landing action''''' (not changing the action argument, though there are differences in the Japanese version where the [[Thrown Forward]] and [[Thrown Backward]] intermediate actions cause the landing action argument to be hurtCounter)
* '''Hits a wall'''
** Change to the background air kb Animation
** If Mario's wall is not null
*** Mario's facingAngle[1] = wallAngle - (s32)(facingAngle[1] - wallAngle)
**** basically this step added two wallAngle
*** play either METAL_BONK or BONK sound
** else
*** play HIT sound
** facingAngle[1] += 0x8000
** Cap vel[1] to 0
** Set forward velocity to negative '''''speed''''' (and update slide and xz velocities to match)
[[Category:Action Mechanics]]
[[Category:Action Mechanics]]
1,024

edits