mirror of https://github.com/zeldaret/tmc.git
37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/**
|
|
* @file hyruleTownBellManager.c
|
|
* @ingroup Managers
|
|
*
|
|
* @brief Spawns the heart piece if the player jumps against the bell in Hyrule Town.
|
|
*/
|
|
#include "manager/hyruleTownBellManager.h"
|
|
#include "object.h"
|
|
#include "player.h"
|
|
#include "room.h"
|
|
#include "sound.h"
|
|
|
|
void HyruleTownBellManager_Main(HyruleTownBellManager* this) {
|
|
RoomControls* roomControls = &gRoomControls;
|
|
u32 a = roomControls->origin_x + 0x1f8;
|
|
u32 x = (a - gPlayerEntity.base.x.HALF.HI) + 0x10;
|
|
u32 b = roomControls->origin_y + 0x140;
|
|
u32 y = (b - gPlayerEntity.base.y.HALF.HI) + 0x10;
|
|
if (super->action == 0) {
|
|
if (x < 0x20 && y < 0x20 && gPlayerEntity.base.z.HALF.HI < -0x18 && gPlayerState.framestate == PL_STATE_CAPE) {
|
|
super->action++;
|
|
super->timer = 90;
|
|
SoundReq(SFX_10A);
|
|
}
|
|
} else {
|
|
if (--super->timer == 0) {
|
|
Entity* object = CreateObject(GRAVEYARD_KEY, 1, 0);
|
|
if (object != NULL) {
|
|
object->x.HALF.HI = roomControls->origin_x + 0x1f8;
|
|
object->y.HALF.HI = roomControls->origin_y + 0x140;
|
|
object->z.HALF.HI = -24;
|
|
}
|
|
DeleteThisEntity();
|
|
}
|
|
}
|
|
}
|