mirror of
https://github.com/zeldaret/tmc
synced 2026-06-10 12:55:36 -04:00
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
#include "global.h"
|
|
#include "item.h"
|
|
#include "entity.h"
|
|
#include "link.h"
|
|
|
|
extern void _call_via_r2();
|
|
extern void sub_08077E78(ItemBehavior*, u32);
|
|
extern void PlaySFX(u32);
|
|
extern void sub_08078F60(void);
|
|
extern void sub_08077D38(ItemBehavior*, u32);
|
|
extern void sub_0805E544(void);
|
|
extern void UpdateItemAnim(ItemBehavior*);
|
|
extern void CreateBird(void);
|
|
extern void UnfreezeTime(void);
|
|
|
|
extern Entity gLinkEntity;
|
|
extern LinkState gLinkState;
|
|
extern void (*gOcarinaStates[4])(ItemBehavior*, u32);
|
|
extern u8 gUnk_02034490;
|
|
|
|
void Ocarina(ItemBehavior* pItemBeh, u32 inputFlags)
|
|
|
|
{
|
|
// u32 *ocarinaStates = &gOcarinaStates;
|
|
//_call_via_r2(pItemBeh, inputFlags,(ocarinaStates)[pItemBeh->stateID]);
|
|
gOcarinaStates[pItemBeh->stateID](pItemBeh, inputFlags);
|
|
gLinkEntity.itemCooldown = gLinkEntity.itemCooldown + 1;
|
|
}
|
|
|
|
void OcarinaUse(ItemBehavior* itemBeh, s32 inputFlags) {
|
|
u32 bVar1;
|
|
u32 var;
|
|
|
|
if (gLinkState.linkAction == 24) {
|
|
sub_08077E78(itemBeh, inputFlags);
|
|
} else {
|
|
itemBeh->unk4 |= 15;
|
|
gLinkEntity.animationState = 4;
|
|
var = gLinkEntity.spriteSettings.raw & ~0x40;
|
|
gLinkEntity.spriteSettings.raw &= var;
|
|
|
|
gLinkEntity.flags = gLinkEntity.flags & 127;
|
|
gLinkEntity.itemCooldown = 2;
|
|
gLinkState.flags.all = (gLinkState.flags.all | 0x10000000);
|
|
gLinkState.filler8[0] = 255;
|
|
gUnk_02034490 = 1;
|
|
bVar1 = (8 >> inputFlags);
|
|
gLinkState.unk3 = bVar1 | gLinkState.unk3;
|
|
gLinkState.keepFacing = bVar1 | gLinkState.keepFacing;
|
|
sub_08078F60();
|
|
sub_08077D38(itemBeh, inputFlags);
|
|
PlaySFX(534);
|
|
sub_0805E544();
|
|
}
|
|
}
|