summaryrefslogtreecommitdiff
path: root/src/manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/manager')
-rw-r--r--src/manager/manager33.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/manager/manager33.c b/src/manager/manager33.c
index df2feeb7..b284a1b5 100644
--- a/src/manager/manager33.c
+++ b/src/manager/manager33.c
@@ -1,3 +1,33 @@
#include "manager.h"
+#include "room.h"
+#include "player.h"
+#include "audio.h"
+#include "object.h"
-ASM_FUNC("asm/non_matching/manager33/Manager33_Main.inc", void Manager33_Main(Manager* this))
+void Manager33_Main(Manager* this) {
+ RoomControls* roomControls = &gRoomControls;
+ u32 a = roomControls->roomOriginX + 0x1f8;
+ u32 x = (a - gPlayerEntity.x.HALF.HI) + 0x10;
+ u32 b = roomControls->roomOriginY + 0x140;
+ u32 y = (b - gPlayerEntity.y.HALF.HI) + 0x10;
+ if (this->action == 0) {
+ if (x < 0x20 &&
+ y < 0x20 &&
+ gPlayerEntity.height.HALF.HI < -0x18 &&
+ gPlayerState.field_0xa8 == 0x14) {
+ this->action += 1;
+ this->unk_0e = 0x5a;
+ SoundReq(SFX_10A);
+ }
+ } else {
+ if (--this->unk_0e == 0) {
+ Entity* object = CreateObject(OBJECT_96, 1, 0);
+ if (object != NULL) {
+ object->x.HALF.HI = roomControls->roomOriginX + 0x1f8;
+ object->y.HALF.HI = roomControls->roomOriginY + 0x140;
+ object->height.HALF.HI = 0xffe8;
+ }
+ DeleteThisEntity();
+ }
+ }
+}