|
|
(11 intermediate revisions by 4 users not shown) |
Line 7: |
Line 7: |
| |group= Airborne | | |group= Airborne |
| |id= 0x081 | | |id= 0x081 |
| |into= | | |into=Universal interactions: [[Twirling]], Transition in: [[Single Jump]], Airborne cancels: [[Water Plunge]], [[Squished]], [[Vertical Wind]], non cancel: [[Dive]], [[Jump Kick]], [[Ground Pound]], common air step: [[Feet Stuck In Ground]], [[Hard Backward Ground Kb]], [[Double Jump Land]], [[Air Hit Wall]], [[Backwards Air Kb]], [[Soft Bonk]], [[Ledge Grab]], [[Start Hanging]], [[Lava Boost]] |
| |out of= [[Single Jump Land]], [[Sideflip Land]], [[Freefall Land]] | | |out of= [[Single Jump Land]], [[Sideflip Land]], [[Freefall Land]] |
| |animation= 0x4C, 0x4D | | |animation= 0x4C, 0x4D |
Line 16: |
Line 16: |
| * A [[Sideflip Land]] | | * A [[Sideflip Land]] |
| * A [[Freefall Land]] | | * A [[Freefall Land]] |
| | |
| | == Transition In == |
| | ''See [[Single Jump|single jump]] for more details'' |
| | |
| | # If Mario is squished and/or has a quicksand depth more than 1, cancel to [[Single Jump]]. (This cancel is shared with [[Twirling]])<ref>https://github.com/n64decomp/sm64/blob/9921382a68bb0c865e5e45eb594d9c64db59b1af/src/game/mario.c#L779-L781</ref> |
| | # Mario's vertical speed is set to <math>52+\frac{\text{hspeed}}4</math>. |
| | # Mario's forward velocity is multiplied by 0.8 |
| | |
| == Behavior == | | == Behavior == |
| As with all airborne actions, a variety of "cancels" are checked prior to actually performing the jump action. These checks are as follows: | | As with all airborne actions, a variety of "cancels" are checked prior to actually performing the jump action. See [[Single Jump#Airborne cancels]] |
| | |
| # Water - If Mario's height is lower than 100 units below the water height, the action is transitioned into the [[water plunge]] action.
| |
| # Squish - If Mario is supposed to be squished, his action is changed to the [[squished]] action.
| |
| # Vertical Wind- If Mario is above a vertical wind floor, his action is changed to the [[vertical wind]] action. (This is due to the jump action having the "Allow Vertical Wind Action" flag. | |
|
| |
|
| At this point, two more things happen prior to the jump action: | | At this point, two more things happen prior to the jump action: |
| * Mario's quicksand depth is set to 0. | | * Mario's quicksand depth is set to 0. |
| * Mario plays a falling noise if he has fallen more than 1150 units from his peak. | | * Mario plays a falling noise if he has fallen more than 1150 units from his peak. |
|
| |
| With the jump action occurring, the following happens: | | With the jump action occurring, the following happens: |
| # If Mario's vertical speed is not negative, his animation is set to the double jump rising animation. Otherwise, it is set to the double jump falling animation. | | # If Mario's vertical speed is not negative, his animation is set to the double jump rising animation. Otherwise, it is set to the double jump falling animation. |
| # If the B button is pressed, Mario will either enter the [[dive]] action if his speed is greater than 28 or the jump kick action otherwise. This stops the double jump action. | | # If the B button is pressed, Mario will either enter the [[dive]] action if his speed is greater than 28 or the [[Jump Kick|jump kick]] action otherwise. |
| # If the Z button is pressed, Mario will enter the [[ground pound]] action. This stops the double jump action. | | # If the Z button is pressed, Mario will enter the [[ground pound]] action. |
| # Mario performs the other noises for the jump. <!--Elaborate on this.--> | | # Mario performs the other noises for the jump. |
| # Mario's velocity is updated via [[straining]].
| | # Now, Mario performs the quarter-frame movement via a full [[Movement_Steps#Air_Step|common air step]]. The landing action is a [[double jump land]] action and the check has both the "Check Ledge Grab" and "Check Hang" flags. |
| # Now, Mario performs the quarter-frame movement. | | |
| ## The position a quarter of Mario's velocity ahead of Mario is checked for cancels/outcomes. Anything in bold is an exit out of the rest of the checks.
| | == References == |
| ### 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'''.
| | <references/> |
| ### 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's height is 78 units or less below a floor and there is not a ceiling 160 units or less above it (because of how variable types an [[overflow jump]] may occur here):
| | {{actions}} |
| ###* Mario's position horizontally is updated to the new position.
| |
| ###* Mario's height is set to that of the floor's height.
| |
| ###* Mario's floor and floor height are updated.
| |
| ###* Mario '''lands'''.
| |
| ### If the position's height is 78 units or less below a floor and there is a ceiling 160 units or less above it (because of how variable types an [[overflow jump]] may occur here):
| |
| ###* Mario's height is set to that of the floor's height.
| |
| ###* Mario '''lands'''. (Because Mario's floor is not updated, this is where a [[Pedro Spot|pedro spot]] may occur)
| |
| ### 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.
| |
| ###* If the ceiling above Mario is hangable, 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'''.
| |
| ### 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'''.
| |
| ###* 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:
| |
| ###* 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'''.
| |
| ### Mario's position is set to the new position and his floor and floor height are updated.
| |
| ### If Mario is colliding with a wall 150 or 30 units up and the upper or only wall is lava, he '''lava wall boosts'''.
| |
| ### If Mario is colliding with a wall 150 or 30 units up and Mario is facing perpendicular to 0x6000 units away, he '''hits a wall'''.
| |
| ### If no other exit has occurred, '''nothing happens'''.
| |
| ## This repeats until Mario encounters something besides '''nothing happens''', up to four times including the initial time.
| |
| ## If Mario's velocity is not negative, his new height is the peak height.
| |
| ## The footstep noise for Mario's floor is updated.
| |
| ## If A is held and vertical speed is more than 20, divide it by 4.
| |
| ## If A is held, Mario is wearing the wing cap, and his vertical speed is negative:
| |
| ### Subtract two from the vertical speed.
| |
| ### If the vertical speed is less than -37.5, add four.
| |
| ### If the vertical speed is more than -37.5 now, set it to -37.5.
| |
| ## If neither of those two previous situations occurred, subtract 4 from Mario's vertical speed and set it to -75 if it passes below.
| |
| ## If Mario is above a vertical wind floor and his vertical position is above -1500 but below 3500:
| |
| ### If Mario's height is 1500 or greater, add 10000/(8*(Mario's Height - 1300)) to the vertical velocity. If it passes 10000/(Mario's Height - 1300), set it to that instead.
| |
| ### Otherwise, add 6.25 to the vertical speed and cap it to 50 if the vertical speed passes it.
| |
| ### The Japanese version plays the wind sound now.
| |
| ## The visual model's position and angle are updated.
| |