diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index de90b63b27..cf3306d8de 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -6270,9 +6270,9 @@ BattleScript_MummyActivates:: return BattleScript_AngryPointActivates:: - setbyte sB_ANIM_ARG1 0x38 - setbyte sB_ANIM_ARG2 0x0 call BattleScript_AbilityPopUp + statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL + setgraphicalstatchangevalues playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 printstring STRINGID_ANGRYPOINTACTIVATES waitmessage 0x40 diff --git a/include/battle.h b/include/battle.h index 8ebad4e00a..09a8916a6d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -606,7 +606,7 @@ struct BattleStruct #define SET_STAT_BUFF_VALUE(n)((((n) << 3) & 0xF8)) -#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 3) + (goesDown << 7)) +#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + ((stage) << 3) + (goesDown << 7)) struct BattleScripting { diff --git a/src/battle_debug.c b/src/battle_debug.c index cd0aacbe33..3cdfcfeee5 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -707,7 +707,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) if (data->activeWindow == ACTIVE_WIN_MAIN) { listItemId = ListMenu_ProcessInput(data->mainListTaskId); - if (listItemId != LIST_B_PRESSED && listItemId != LIST_NOTHING_CHOSEN && listItemId < LIST_ITEM_COUNT) + if (listItemId != LIST_CANCEL && listItemId != LIST_NOTHING_CHOSEN && listItemId < LIST_ITEM_COUNT) { data->currentMainListItemId = listItemId; @@ -721,7 +721,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) else if (data->activeWindow == ACTIVE_WIN_SECONDARY) { listItemId = ListMenu_ProcessInput(data->secondaryListTaskId); - if (listItemId == LIST_B_PRESSED) + if (listItemId == LIST_CANCEL) { DestroyListMenuTask(data->secondaryListTaskId, NULL, NULL); ClearStdWindowAndFrameToTransparent(data->secondaryListWindowId, TRUE); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2907bf8159..2599d11cfe 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4011,8 +4011,9 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po static void atk47_setgraphicalstatchangevalues(void) { - u8 value = 0; - switch (GET_STAT_BUFF_VALUE_WITH_SIGN(gBattleScripting.statChanger)) + u8 value = GET_STAT_BUFF_VALUE_WITH_SIGN(gBattleScripting.statChanger); + + switch (value) { case SET_STAT_BUFF_VALUE(1): // +1 value = STAT_ANIM_PLUS1; @@ -4032,6 +4033,12 @@ static void atk47_setgraphicalstatchangevalues(void) case SET_STAT_BUFF_VALUE(3) | STAT_BUFF_NEGATIVE: // -3 value = STAT_ANIM_MINUS2; break; + default: // <-12,-4> and <4, 12> + if (value & STAT_BUFF_NEGATIVE) + value = STAT_ANIM_MINUS2; + else + value = STAT_ANIM_PLUS2; + break; } gBattleScripting.animArg1 = GET_STAT_BUFF_ID(gBattleScripting.statChanger) + value - 1; gBattleScripting.animArg2 = 0; diff --git a/src/battle_util.c b/src/battle_util.c index 58826276c7..71f55c2e79 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -3214,9 +3214,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA && gIsCriticalHit && TARGET_TURN_DAMAGED && IsBattlerAlive(battler) - && gBattleMons[battler].statStages[STAT_ATK] != 0xC) + && gBattleMons[battler].statStages[STAT_ATK] != 12) { - gBattleMons[battler].statStages[STAT_ATK] = 0xC; + SET_STATCHANGER(STAT_ATK, 12 - gBattleMons[battler].statStages[STAT_ATK], FALSE); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AngryPointActivates; effect++;