diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-16 08:40:24 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-03-16 08:40:24 -0400 |
commit | 0e372d2fb6785ba47011b6ee0ad1b68ea05ae198 (patch) | |
tree | 72a7d12902002dc661cd543a270a11bda45a7645 /src/fldeff_strength.c | |
parent | b98c803e6d25785b3b268c2c26a87ac74a7e3a95 (diff) | |
parent | d51855dfadf9e1357ef8e33e90b5156f8561405c (diff) |
Merge branch 'master' into tomomichi_debug_menu
Diffstat (limited to 'src/fldeff_strength.c')
-rw-r--r-- | src/fldeff_strength.c | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c new file mode 100644 index 000000000..9f9cd4013 --- /dev/null +++ b/src/fldeff_strength.c @@ -0,0 +1,99 @@ +#include "global.h" +#include "constants/map_objects.h" +#include "braille_puzzles.h" +#include "field_effect.h" +#include "party_menu.h" +#include "pokemon.h" +#include "pokemon_menu.h" +#include "rom6.h" +#include "script.h" +#include "task.h" +#include "text.h" + +static void sub_811AA18(void); +static void sub_811AA38(void); +static void sub_811AA9C(void); + +extern u8 gLastFieldPokeMenuOpened; +extern u16 gSpecialVar_Result; +extern void (*gFieldCallback)(void); +extern void (*gUnknown_03005CE4)(void); + +extern u8 S_UseStrength[]; + +#if DEBUG +void debug_sub_8130318(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + gLastFieldPokeMenuOpened = 0; + gSpecialVar_Result = 0; + sub_811AA38(); + } + else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + gSpecialVar_Result = 0; + sub_811AA18(); + } + else + { + ScriptContext2_Disable(); + } +} +#endif + +bool8 SetUpFieldMove_Strength(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + gSpecialVar_Result = gLastFieldPokeMenuOpened; + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_811AA38; + } + else + { + if (npc_before_player_of_type(87) != TRUE) + return 0; + gSpecialVar_Result = gLastFieldPokeMenuOpened; + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_811AA18; + } + + return TRUE; +} + +static void sub_811AA18(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseStrength); +} + +static void sub_811AA38(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_STRENGTH); +} + +bool8 FldEff_UseStrength(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; + gTasks[taskId].data[9] = (u32)sub_811AA9C; + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); + return FALSE; +} + +static void sub_811AA9C(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + DoBrailleStrengthEffect(); + } + else + { + FieldEffectActiveListRemove(40); + EnableBothScriptContexts(); + } +} |