Zora/Goron Transformation Masks - #6896
Conversation
| } | ||
|
|
||
| // av1.actionVar1 = combo index (0..2), av2.actionVar2 = next punch queued | ||
| void FormMelee_PunchAction(Player* player, PlayState* play) { |
There was a problem hiding this comment.
- Think maybe player action functions should keep the form
_Action_to make them easily recognizable, something likeFormMelee_Action_Punch - I think MM forms uses the same triple slash system as sword (in OoT counter is
player->unk_845) and actually I think at least the first part of the melee attack system is the same? If going all-in on similarity later.
| } | ||
|
|
||
| static void RegisterFormMelee() { | ||
| // Start a punch on a fresh B press in a neutral grounded action. This runs before |
There was a problem hiding this comment.
It should be possible if desired to integrate the check into melee attack action handler 7 through Player_TryActionHandlerList, either called by vanilla action function or custom.
Even if it could be seen as a contamination of source code, player update does run a fair amount of functions before reaching action handlers that would be skipped on punch frame. The check could also be instantly directed to a separate MM attack flow and not run any further OoT attack code.
It's not very documented in decomp, this is my version of AH 7:
https://github.com/djevangelia/oot/blob/8560e8762ac994b4526c7c65a684c6d6796cbe51/src/overlays/actors/ovl_player_actor/z_player.c#L16169-L16174
| void Player_Action_808407CC(Player* player, PlayState* play); // idle, friendly lock-on/parallel | ||
| void Player_Action_80840DE4(Player* player, PlayState* play); // walk (targeting) | ||
| void Player_Action_808414F8(Player* player, PlayState* play); // run | ||
| void Player_Action_8084170C(Player* player, PlayState* play); // backwalk/sidewalk |
There was a problem hiding this comment.
Some of these movement actions are incorrect and also missing some movement action functions if it has to be complete - I should have them in my decomp PR https://github.com/zeldaret/oot/pull/2728/changes
| void Player_Action_808414F8(Player* player, PlayState* play); // run | ||
| void Player_Action_8084170C(Player* player, PlayState* play); // backwalk/sidewalk | ||
| void Player_Action_8084D610(Player* player, PlayState* play); // tread water (surface idle) | ||
| void Player_Action_8084D7C4(Player* player, PlayState* play); // swim, no control |
| void Player_Action_8084D84C(Player* player, PlayState* play); // swim forward (surface) | ||
| void Player_Action_8084DAB4(Player* player, PlayState* play); // swim, z-targeting | ||
| void Player_Action_8084DC48(Player* player, PlayState* play); // dive | ||
| void Player_Action_8084E1EC(Player* player, PlayState* play); // surface with item/breath |
There was a problem hiding this comment.
Finish dive/water resurface in general, the GI check is just an extra bonus (the cause of GIM by just entering water)
| PlayState* play = gPlayState; | ||
| Player* player = GET_PLAYER(play); | ||
|
|
||
| // No transforming on horseback or while holding the fishing pole; force the mask off |
There was a problem hiding this comment.
Could probably do the anti-riding check in Actor_SetRideActor, make player remove mask before even starting riding
because I can vibe too
rips off #5802 so that both will be compatible with how to load mm data
Build Artifacts