mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-15 06:06:04 +00:00
Document en_ba damage bug (#1934)
* comment on en_ba collision bug * format
This commit is contained in:
parent
4e1b0f6694
commit
86bd6e9232
1 changed files with 10 additions and 3 deletions
|
@ -235,6 +235,7 @@ void EnBa_SwingAtPlayer(EnBa* this, PlayState* play) {
|
|||
s16 phi_fp;
|
||||
|
||||
Math_SmoothStepToF(&this->actor.world.pos.y, this->actor.home.pos.y + 60.0f, 1.0f, 10.0f, 0.0f);
|
||||
|
||||
if ((this->actor.xzDistToPlayer <= 175.0f) || (this->unk_31A != 0)) {
|
||||
if (this->unk_318 == 20) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_HAND_UP);
|
||||
|
@ -300,16 +301,22 @@ void EnBa_SwingAtPlayer(EnBa* this, PlayState* play) {
|
|||
}
|
||||
this->unk_2A8[13].x = this->unk_2A8[12].x;
|
||||
this->unk_2A8[13].y = this->unk_2A8[12].y;
|
||||
|
||||
//! @bug This code being located here gives multiple opportunities for the current action to change
|
||||
//! before damage handling can be done.
|
||||
//! By, for example, taking damage on the same frame the collider contacts Player, a different action
|
||||
//! will run and `AT_HIT` will remain set. Then when returning back to this action, Player
|
||||
//! will get knocked back instantly, even though there was no apparent collision.
|
||||
//! Handling `AT_HIT` directly in Update, where it can run every frame, would help catch these edge cases.
|
||||
if (this->collider.base.atFlags & AT_HIT) {
|
||||
this->collider.base.atFlags &= ~AT_HIT;
|
||||
if (this->collider.base.at == &player->actor) {
|
||||
func_8002F71C(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f);
|
||||
}
|
||||
}
|
||||
|
||||
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base);
|
||||
return;
|
||||
}
|
||||
if ((this->actor.xzDistToPlayer > 175.0f) || (player->stateFlags1 & PLAYER_STATE1_26)) {
|
||||
} else if ((this->actor.xzDistToPlayer > 175.0f) || (player->stateFlags1 & PLAYER_STATE1_26)) {
|
||||
EnBa_SetupIdle(this);
|
||||
} else {
|
||||
EnBa_SetupSwingAtPlayer(this);
|
||||
|
|
Loading…
Reference in a new issue