summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2018-01-01 16:31:35 -0600
committerDiegoisawesome <diego@domoreaweso.me>2018-01-01 16:31:35 -0600
commit4f726232b8b3f295f9df6a747c0206e0e4983365 (patch)
treed7c1a28218c922c96fa109b81a27c3d0b232762b /src
parentad277a69dd468e25fa47585945c3df86be828ea7 (diff)
parentd8c329b888e0184b33c409fa8266fe79ec3f7e92 (diff)
Merge remote-tracking branch 'EternalCode/master'
Diffstat (limited to 'src')
-rw-r--r--src/fldeff_teleport.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
new file mode 100644
index 000000000..72896904e
--- /dev/null
+++ b/src/fldeff_teleport.c
@@ -0,0 +1,56 @@
+#include "global.h"
+#include "field_effect.h"
+#include "task.h"
+
+extern bool8 is_light_level_1_2_3_or_6(u8 mapType);
+extern void* hm_add_c3_launch_phase_2(void);
+extern void sub_808469C(void);
+extern u8 GetCursorSelectionMonId(void);
+extern u8 oei_task_add(void);
+extern void FieldEffectActiveListRemove(u8 id);
+extern void sub_80B7FC8(void);
+extern void SetPlayerAvatarTransitionFlags(u8);
+
+extern void* gUnknown_0203CEEC;
+extern void* gUnknown_03005DB0;
+
+void hm_teleport_run_dp02scr(void);
+void sub_817C94C(void);
+
+// 817C8BC
+bool8 SetUpFieldMove_Teleport(void)
+{
+ if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE)
+ {
+ gUnknown_03005DB0 = hm_add_c3_launch_phase_2;
+ gUnknown_0203CEEC = hm_teleport_run_dp02scr;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// 817C8FC
+void hm_teleport_run_dp02scr(void)
+{
+ sub_808469C();
+ FieldEffectStart(0x3F);
+ gFieldEffectArguments[0] = (u32)GetCursorSelectionMonId();
+}
+
+// 817C91C
+u8 FldEff_UseTeleport(void)
+{
+ u8 taskID = oei_task_add();
+ gTasks[taskID].data[8] = (u32)sub_817C94C >> 16;
+ gTasks[taskID].data[9] = (u32)sub_817C94C;
+ SetPlayerAvatarTransitionFlags(1);
+ return 0;
+}
+
+void sub_817C94C(void)
+{
+ FieldEffectActiveListRemove(0x3F);
+ sub_80B7FC8();
+}
+
+