mirror of
https://github.com/zeldaret/tmc
synced 2026-08-02 08:32:26 -04:00
Match sub_080762D8 (#640)
* Nuke sub_080762D8.inc * Match sub_080762D8 * Fix field name * Fix field name v2
This commit is contained in:
@@ -14,6 +14,11 @@ void sub_08076518(ItemBehavior*, u32);
|
||||
void sub_080765E0(ItemBehavior*, u32);
|
||||
void sub_0807660C(ItemBehavior*, u32);
|
||||
|
||||
extern s32 sub_0800875A(Entity*, u32, ItemBehavior*);
|
||||
|
||||
extern const u16 gUnk_0811BE38[];
|
||||
extern const u16 gUnk_0811BE40[];
|
||||
|
||||
void sub_08076088(ItemBehavior* this, Entity* param_2, u32 param_3) {
|
||||
if (param_2 != NULL) {
|
||||
if ((param_2->carryFlags & 1) != 0) {
|
||||
@@ -129,7 +134,101 @@ void sub_080762C4(ItemBehavior* this, Entity* arg1, u8 arg2, u32 arg3) {
|
||||
sub_08077D38(this, arg3);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_080762D8.inc", void sub_080762D8(ItemBehavior* this, u32 index))
|
||||
void sub_080762D8(ItemBehavior* this, u32 index) {
|
||||
u32 animIndex;
|
||||
|
||||
gPlayerState.heldObject &= 0xcf;
|
||||
if (PlayerTryDropObject(this, index) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((gPlayerEntity.iframes < 9) && (gPlayerEntity.knockbackDuration == 0))) {
|
||||
if (this->field_0x18 != NULL) {
|
||||
if (this->field_0x18->action == 2 && this->field_0x18->subAction == 5) {
|
||||
if ((gPlayerState.playerInput.heldInput & 0x80) == 0) {
|
||||
this->field_0x18->subAction = 6; //
|
||||
PlayerCancelHoldItem(this, index);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
PlayerCancelHoldItem(this, index);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
gPlayerState.framestate = 5;
|
||||
gUnk_0200AF00.rActionGrabbing = 8;
|
||||
} else {
|
||||
if (this->field_0x18 != NULL) {
|
||||
this->field_0x18->subAction = 6;
|
||||
}
|
||||
PlayerCancelHoldItem(this, index);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gPlayerState.jump_status == 0) {
|
||||
|
||||
if ((gPlayerState.heldObject == 1) && (sub_0800875A(&gPlayerEntity, 6, this) != 0)) {
|
||||
sub_08076088(this, NULL, index);
|
||||
return;
|
||||
} else if ((gUnk_0811BE38[(gPlayerEntity.animationState >> 1)] & gPlayerState.playerInput.heldInput) != 0) {
|
||||
UpdateItemAnim(this);
|
||||
|
||||
if ((gPlayerState.flags & 8) == 0) {
|
||||
animIndex = 0x340;
|
||||
} else {
|
||||
animIndex = 0x940;
|
||||
}
|
||||
|
||||
if (animIndex != this->animIndex) {
|
||||
SetItemAnim(this, animIndex);
|
||||
}
|
||||
|
||||
gPlayerState.heldObject |= 0x10;
|
||||
gPlayerState.framestate = 0x1a;
|
||||
|
||||
if (gPlayerState.heldObject == 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
sub_08076088(this, this->field_0x18, index);
|
||||
} else {
|
||||
if ((gPlayerState.playerInput.heldInput & gUnk_0811BE40[(gPlayerEntity.animationState >> 1)]) != 0) {
|
||||
if (gPlayerEntity.subtimer < 6) {
|
||||
gPlayerEntity.subtimer++;
|
||||
return;
|
||||
}
|
||||
|
||||
gPlayerState.field_0x35 = this->playerAnimationState;
|
||||
gPlayerState.pushedObject |= 0x80;
|
||||
gPlayerState.heldObject |= 0x20;
|
||||
gPlayerState.framestate = 0x19;
|
||||
|
||||
if ((gPlayerState.flags & 8) == 0) {
|
||||
animIndex = 0x33c;
|
||||
} else {
|
||||
animIndex = 0x93c;
|
||||
}
|
||||
|
||||
if (animIndex == this->animIndex) {
|
||||
UpdateItemAnim(this);
|
||||
} else {
|
||||
SetItemAnim(this, animIndex);
|
||||
}
|
||||
} else {
|
||||
gPlayerEntity.subtimer = 0;
|
||||
|
||||
if ((gPlayerState.flags & 8) == 0) {
|
||||
SetItemAnim(this, 0x340);
|
||||
} else {
|
||||
SetItemAnim(this, 0x940);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
PlayerCancelHoldItem(this, index);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08076488(ItemBehavior* this, u32 index) {
|
||||
u32 bVar1;
|
||||
|
||||
Reference in New Issue
Block a user