mirror of https://github.com/zeldaret/tmc.git
54 lines
1.5 KiB
C
54 lines
1.5 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;
|
|
extern u8 gUnk_02034490;
|
|
|
|
void Ocarina(ItemBehavior *pItemBeh,u32 inputFlags)
|
|
|
|
{
|
|
u32 *ocarinaStates = &gOcarinaStates;
|
|
_call_via_r2(pItemBeh, inputFlags,(ocarinaStates)[pItemBeh->stateID]);
|
|
gLinkEntity.itemCooldown = gLinkEntity.itemCooldown + 1;
|
|
}
|
|
|
|
void OcarinaUse(ItemBehavior *itemBeh,s32 inputFlags)
|
|
|
|
{
|
|
u32 bVar1;
|
|
|
|
if (gLinkState.linkAction == 24) {
|
|
sub_08077E78(itemBeh,inputFlags);
|
|
}
|
|
else {
|
|
itemBeh->unk4 = itemBeh->unk4 | 15;
|
|
gLinkEntity.animationState = 4;
|
|
gLinkEntity.shadowSize = gLinkEntity.animationState & (gLinkEntity.shadowSize - 0x45);
|
|
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();
|
|
}
|
|
} |