Merge remote-tracking branch 'pret/master' into pret_clean2

This commit is contained in:
Eduardo Quezada
2022-08-27 00:56:00 -04:00
60 changed files with 1577 additions and 1659 deletions
+2 -2
View File
@@ -152,8 +152,8 @@
create_movement_action walk_slow_diag_northeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT
create_movement_action walk_slow_diag_southwest, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT
create_movement_action walk_slow_diag_southeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT
create_movement_action store_lock_anim, MOVEMENT_ACTION_STORE_AND_LOCK_ANIM
create_movement_action free_unlock_anim, MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM
create_movement_action lock_anim, MOVEMENT_ACTION_LOCK_ANIM
create_movement_action unlock_anim, MOVEMENT_ACTION_UNLOCK_ANIM
create_movement_action walk_left_affine, MOVEMENT_ACTION_WALK_LEFT_AFFINE
create_movement_action walk_right_affine, MOVEMENT_ACTION_WALK_RIGHT_AFFINE
create_movement_action levitate, MOVEMENT_ACTION_LEVITATE
+10 -10
View File
@@ -798,14 +798,14 @@ Move_DOUBLE_EDGE:
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
@@ -2441,7 +2441,7 @@ Move_HORN_ATTACK:
Move_FURY_ATTACK:
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HORN_HIT
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, 0, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2
choosetwoturnanim FuryAttackRight, FuryAttackLeft
FuryAttackContinue:
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
@@ -2590,7 +2590,7 @@ Move_LOW_KICK:
createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0
delay 4
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, 1, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4
@@ -2835,7 +2835,7 @@ SkullBashSetUpHeadDown:
createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2
waitforvisualfinish
createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1
waitforvisualfinish
@@ -3958,7 +3958,7 @@ Move_MIST_BALL:
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16
delay 0
playsewithpan SE_M_HAZE, 0
createvisualtask AnimTask_LoadMistTiles, 5
createvisualtask AnimTask_MistBallFog, 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE
delay 8
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0
@@ -8570,14 +8570,14 @@ Move_ARM_THRUST:
loadspritegfx ANIM_TAG_IMPACT
splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0
delay 6
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3
delay 4
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 1
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
choosetwoturnanim ArmThrustRight, ArmThrustLeft
ArmThrustContinue:
+5 -3
View File
@@ -1,6 +1,7 @@
#include "constants/global.h"
#include "constants/battle.h"
#include "constants/pokemon.h"
#include "constants/battle_arena.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_anim.h"
#include "constants/battle_string_ids.h"
@@ -4482,7 +4483,7 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_THATS_IT
arenawaitmessage B_MSG_REF_THATS_IT
pause B_WAIT_TIME_LONG
setbyte gBattleCommunication, 0
setbyte gBattleCommunication, 0 @ Reset state for arenajudgmentwindow
arenajudgmentwindow
pause B_WAIT_TIME_LONG
arenajudgmentwindow
@@ -4495,8 +4496,9 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_JUDGE_BODY
arenawaitmessage B_MSG_REF_JUDGE_BODY
arenajudgmentwindow
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 3, BattleScript_ArenaJudgmentPlayerLoses
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 4, BattleScript_ArenaJudgmentDraw
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_PLAYER_LOST, BattleScript_ArenaJudgmentPlayerLoses
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_TIE, BattleScript_ArenaJudgmentDraw
@ ARENA_RESULT_PLAYER_WON
arenajudgmentstring B_MSG_REF_PLAYER_WON
arenawaitmessage B_MSG_REF_PLAYER_WON
arenajudgmentwindow
+18 -2
View File
@@ -435,11 +435,15 @@ AI_CGM_BetterWhenAudienceExcited:
AI_CGM_BetterWhenAudienceExcited_1stUp:
@ BUG: Should be if_appeal_num_eq 0
@ 1st up on 1st appeal excitement will always be 0
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_Not1stAppeal
.ifdef BUGFIX
if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
.else
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
.endif
if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax
if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax
end
AI_CGM_BetterWhenAudienceExcited_Not1stAppeal:
AI_CGM_BetterWhenAudienceExcited_1stAppeal:
if_random_less_than 125, AI_CGM_End
score -15
end
@@ -542,7 +546,11 @@ AI_CGM_TargetMonWithJudgesAttention:
end
AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.ifdef BUGFIX
if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.else
if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
score +2
if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
@@ -551,7 +559,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
if_user_order_eq MON_2, AI_CGM_End
if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.ifdef BUGFIX
if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.else
if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
score +2
if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
@@ -560,7 +572,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
AI_CGM_TargetMonWithJudgesAttention_CheckMon3:
if_user_order_eq MON_3, AI_CGM_End
if_cannot_participate MON_3, AI_CGM_End
.ifdef BUGFIX
if_not_used_combo_starter MON_3, AI_CGM_End
.else
if_used_combo_starter MON_3, AI_CGM_End
.endif
if_random_less_than 125, AI_CGM_End
score +2
if_not_completed_combo MON_3, AI_CGM_End
+1 -1
View File
@@ -158,7 +158,7 @@
"y": 9,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "OldaleTown_EventScript_CitySign"
"script": "OldaleTown_EventScript_TownSign"
},
{
"type": "sign",
+3 -3
View File
@@ -29,8 +29,8 @@ OldaleTown_EventScript_MoveMartEmployee::
setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
return
OldaleTown_EventScript_CitySign::
msgbox OldaleTown_Text_CitySign, MSGBOX_SIGN
OldaleTown_EventScript_TownSign::
msgbox OldaleTown_Text_TownSign, MSGBOX_SIGN
end
OldaleTown_EventScript_Girl::
@@ -395,7 +395,7 @@ OldaleTown_Text_BrendanLetsGoBack:
.string "LAB now.\l"
.string "{PLAYER}, you should hustle back, too.$"
OldaleTown_Text_CitySign:
OldaleTown_Text_TownSign:
.string "OLDALE TOWN\n"
.string "“Where things start off scarce.”$"
+2 -2
View File
@@ -11,9 +11,9 @@ PacifidlogTown_House2_EventScript_FanClubYoungerBrother::
call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment
setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 4, PacifidlogTown_House2_EventScript_GiveReturn
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, PacifidlogTown_House2_EventScript_GiveReturn
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 2, PacifidlogTown_House2_EventScript_PutInEffort
goto_if_ge VAR_RESULT, FRIENDSHIP_50_TO_99, PacifidlogTown_House2_EventScript_PutInEffort
goto PacifidlogTown_House2_EventScript_GiveFrustration
end
+1 -1
View File
@@ -144,7 +144,7 @@ Route111_EventScript_RootFossilDisappeared::
@ Unused
Route111_Movement_PlayerFall::
store_lock_anim
lock_anim
walk_fast_down
walk_fast_down
walk_fast_down
@@ -192,7 +192,7 @@ SlateportCity_PokemonFanClub_EventScript_SootheBellWoman::
goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell
msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 4, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
release
end
@@ -7,13 +7,13 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater::
msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore
switch VAR_RESULT
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
case 2, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
case 3, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
case 4, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
case 5, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
case 6, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
case FRIENDSHIP_1_TO_49, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
case FRIENDSHIP_50_TO_99, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
case FRIENDSHIP_100_TO_149, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
case FRIENDSHIP_150_TO_199, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
case FRIENDSHIP_200_TO_254, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
release
end
+1 -1
View File
@@ -120,7 +120,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2);
u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight);
u8 AnimDummyReturnArg(u8 battler);
u8 GetSpritePalIdxByBattler(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8);
void DestroySpriteWithActiveSheet(struct Sprite *);
u8 CreateInvisibleSpriteCopy(int, u8, int);
+2
View File
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_ARENA_H
#define GUARD_BATTLE_ARENA_H
#include "constants/battle_arena.h"
void CallBattleArenaFunction(void);
u8 BattleArena_ShowJudgmentWindow(u8 *state);
void BattleArena_InitPoints(void);
+7 -4
View File
@@ -34,16 +34,19 @@ enum
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707
#define TAG_HEALTHBOX_PALS_1 0xD709
#define TAG_HEALTHBOX_PALS_2 0xD70A
#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
#define TAG_HEALTHBOX_PAL 0xD6FF
#define TAG_HEALTHBAR_PAL 0xD704
#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
#define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE
#define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE
enum
{
HEALTHBOX_ALL,
+6
View File
@@ -17,4 +17,10 @@
#define ARENA_CATEGORY_SKILL 1
#define ARENA_CATEGORY_BODY 2
#define ARENA_RESULT_RUNNING 0 // For intermediate steps, when BattleArena_ShowJudgmentWindow should be called again immediately
#define ARENA_RESULT_STEP_DONE 1 // A step has been completed, the script may advance to the next instruction
#define ARENA_RESULT_PLAYER_WON 2
#define ARENA_RESULT_PLAYER_LOST 3
#define ARENA_RESULT_TIE 4
#endif //GUARD_CONSTANTS_BATTLE_ARENA_H
+2 -2
View File
@@ -232,8 +232,8 @@
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
#define MOVEMENT_ACTION_LEVITATE 0x98
+9
View File
@@ -181,6 +181,15 @@
#define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7
#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint
// Constants for GetLeadMonFriendshipScore
#define FRIENDSHIP_NONE 0
#define FRIENDSHIP_1_TO_49 1
#define FRIENDSHIP_50_TO_99 2
#define FRIENDSHIP_100_TO_149 3
#define FRIENDSHIP_150_TO_199 4
#define FRIENDSHIP_200_TO_254 5
#define FRIENDSHIP_MAX 6
#define MAX_FRIENDSHIP 255
#define MAX_SHEEN 255
#define MAX_CONDITION 255
+1 -1
View File
@@ -63,7 +63,7 @@ struct PairedPalettes
struct LockedAnimObjectEvents
{
u8 objectEventIds[OBJECT_EVENTS_COUNT];
u8 localIds[OBJECT_EVENTS_COUNT];
u8 count;
};
-3
View File
@@ -45,9 +45,6 @@ SECTIONS {
/* COMMON starts at 0x30022A8 */
INCLUDE "sym_common.ld"
src/*.o(COMMON);
gflib/*.o(COMMON);
*libc.a:sbrkr.o(COMMON);
end = .;
. = 0x8000;
+8 -8
View File
@@ -84,7 +84,7 @@ static void AnimMilkBottle(struct Sprite *);
static void AnimMilkBottle_Step1(struct Sprite *);
static void AnimMilkBottle_Step2(struct Sprite *, int, int);
static void AnimGrantingStars(struct Sprite *);
static void AnimSparkingStars(struct Sprite *);
static void AnimSparklingStars(struct Sprite *);
static void AnimBubbleBurst(struct Sprite *);
static void AnimBubbleBurst_Step(struct Sprite *);
static void AnimSleepLetterZ(struct Sprite *);
@@ -1416,7 +1416,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate =
.anims = gGrantingStarsAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSparkingStars,
.callback = AnimSparklingStars,
};
static const union AnimCmd sAnim_BubbleBurst[] =
@@ -3184,14 +3184,14 @@ static void AnimItemSteal_Step3(struct Sprite *sprite)
sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
if (sprite->y2 == 0)
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
if (moveAlongLinearPath(sprite))
{
sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = AnimItemSteal_Step2;
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
}
@@ -4137,7 +4137,7 @@ static void AnimGrantingStars(struct Sprite *sprite)
sprite->callback = TranslateSpriteLinearFixedPoint;
}
static void AnimSparkingStars(struct Sprite *sprite)
static void AnimSparklingStars(struct Sprite *sprite)
{
u8 battler;
if (!gBattleAnimArgs[2])
@@ -4264,7 +4264,7 @@ static void AnimLockOnTarget_Step1(struct Sprite *sprite)
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2);
sprite->data[5] += 0x100;
PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
break;
}
@@ -4350,7 +4350,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite)
sprite->data[2]++;
pal = sprite->oam.paletteNum;
LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4);
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
}
else if (sprite->data[1] == 0)
{
@@ -4812,7 +4812,7 @@ static void AnimSharpenSphere(struct Sprite *sprite)
sprite->data[2] = 0;
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = BattleAnimAdjustPanning(-64);
sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
sprite->callback = AnimSharpenSphere_Step;
}
+5 -8
View File
@@ -1642,7 +1642,7 @@ static void AirCutterProjectileStep1(u8 taskId)
gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
gTasks[taskId].data[0] = gTasks[taskId].data[3];
gTasks[taskId].data[1]++;
PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-63));
PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER + 1));
if (gTasks[taskId].data[1] > 2)
gTasks[taskId].func = AirCutterProjectileStep2;
}
@@ -1839,7 +1839,7 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
int i;
u16 rand;
s16 *ptr;
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->x += sprite->x2;
sprite->y += sprite->y2;
sprite->y2 = 0;
@@ -2485,7 +2485,7 @@ static void AnimPencil(struct Sprite *sprite)
sprite->data[3] = 16;
sprite->data[4] = 0;
sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2;
sprite->data[6] = BattleAnimAdjustPanning(63);
sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
sprite->callback = AnimPencil_Step;
}
@@ -3043,9 +3043,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId)
static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b)
{
u8 tile;
tile = (b & 1);
tile = ((-tile | tile) >> 31) & 32;
u8 tile = (b & 1) ? 32 : 0;
sprite->oam.tileNum += tile + (a << 2);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMusicNotePaletteTagsTable[b >> 1]);
}
@@ -3792,8 +3790,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
if (sprite->data[4] > 3)
{
int var1 = sprite->data[2];
sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1);
sprite->invisible = sprite->data[2] % 2;
DestroyAnimSprite(sprite);
}
+17 -17
View File
@@ -1646,7 +1646,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
sprite->data[2]++;
if (sprite->data[3] == 0)
{
PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(-64));
PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
}
}
@@ -1930,7 +1930,7 @@ static void TormentAttacker_Step(u8 taskId)
y = task->data[3] + task->data[5];
spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]);
PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
if (spriteId != MAX_SPRITES)
{
@@ -2107,7 +2107,7 @@ static void AnimWishStar(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->x = -16;
else
sprite->x = 256;
sprite->x = DISPLAY_WIDTH + 16;
sprite->y = 0;
sprite->callback = AnimWishStar_Step;
@@ -2136,7 +2136,7 @@ static void AnimWishStar_Step(struct Sprite *sprite)
}
newX = sprite->x + sprite->x2 + 32;
if (newX > 304)
if (newX > DISPLAY_WIDTH + 64)
DestroyAnimSprite(sprite);
}
@@ -2411,7 +2411,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
gTasks[taskId].data[11] = gBattle_BG1_Y;
gTasks[taskId].data[0]++;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
break;
case 1:
if (gTasks[taskId].data[4]++ > 0)
@@ -2446,7 +2446,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
{
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[0] = 1;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
break;
case 4:
@@ -3183,7 +3183,7 @@ static void AnimReversalOrb_Step(struct Sprite *sprite)
// Copies the target mon's sprite, and makes a white silhouette that shrinks away.
void AnimTask_RolePlaySilhouette(u8 taskId)
{
u8 isBackPic;
bool8 isBackPic;
u32 personality;
u32 otId;
u16 species;
@@ -3206,7 +3206,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
isBackPic = 0;
isBackPic = FALSE;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -3226,7 +3226,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
}
else
{
isBackPic = 1;
isBackPic = TRUE;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -4845,7 +4845,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
gTasks[taskId].data[10] -= 0x800;
gTasks[taskId].data[0]++;
}
@@ -4867,7 +4867,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
DestroyAnimVisualTask(taskId);
}
break;
@@ -4904,7 +4904,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 += 10;
if (sprite->y2 >= 0)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->y2 = 0;
sprite->data[0]++;
}
@@ -4914,7 +4914,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 = -(gSineTable[sprite->data[1]] >> 3);
if (sprite->data[1] > 0x7F)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0;
sprite->y2 = 0;
sprite->data[0]++;
@@ -4933,7 +4933,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
case 3:
if (++sprite->data[1] > 8)
{
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0;
sprite->data[0]++;
}
@@ -5097,7 +5097,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gTasks[taskId].data[1] &= 0xFF;
x = gSprites[spriteId].x + gSprites[spriteId].x2;
if ((u16)(x + 32) > 304)
if (x < -32 || x > DISPLAY_WIDTH + 32)
{
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -5180,7 +5180,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
}
}
if ((u16)(x + 32) > 304)
if (x < -32 || x > DISPLAY_WIDTH + 32)
{
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -5227,7 +5227,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite)
case 0:
if (gBattleAnimArgs[7] == -1)
{
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32;
sprite->data[7]++;
+2 -2
View File
@@ -583,7 +583,7 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
sprite->data[7] = gBattleAnimArgs[4];
sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
sprite->callback = AnimZapCannonSpark_Step;
AnimZapCannonSpark_Step(sprite);
sprite->callback(sprite);
}
static void AnimZapCannonSpark_Step(struct Sprite *sprite)
@@ -1159,7 +1159,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
task->data[4] = 7;
task->data[5] = -1;
task->data[11] = 12;
task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[14] = task->data[12];
task->data[15] = (task->data[13] - task->data[12]) / 3;
+2 -2
View File
@@ -500,7 +500,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[1];
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
if (sprite->data[7] != 64)
if (sprite->data[7] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
@@ -513,7 +513,7 @@ static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
if (sprite->data[7] != 64)
if (sprite->data[7] != MAX_SPRITES)
{
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
DestroySprite(&gSprites[sprite->data[7]]);
+2 -2
View File
@@ -1227,8 +1227,8 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId)
{
struct Task *task = &gTasks[taskId];
task->data[12] = !GetBattlerSide(gBattleAnimAttacker) ? 1 : -1;
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ 2) + 1;
task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1;
task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET);
task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
+1 -1
View File
@@ -1215,7 +1215,7 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite)
sprite->x = sprite->data[4] >> 4;
sprite->y = sprite->data[5] >> 4;
if (sprite->x > 285 || sprite->x < -45
if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45
|| sprite->y > 157 || sprite->y < -45)
DestroySpriteAndMatrix(sprite);
}
+18 -14
View File
@@ -45,7 +45,7 @@ static void AnimThrowIceBall(struct Sprite *);
static void InitIceBallParticle(struct Sprite *);
static void AnimIceBallParticle(struct Sprite *);
static void AnimTask_HazeScrollingFog_Step(u8);
static void AnimTask_LoadMistTiles_Step(u8);
static void AnimTask_MistBallFog_Step(u8);
static void AnimTask_Hail2(u8);
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
@@ -353,7 +353,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate =
.callback = AnimThrowMistBall,
};
static const u8 wMistBlendAmounts[] =
static const u8 sMistBlendAmounts[] =
{
0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
};
@@ -696,7 +696,8 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
break;
@@ -762,7 +763,8 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > 256
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > 256
|| sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
@@ -816,7 +818,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
{
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
break;
@@ -846,7 +849,8 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[0] == 1)
{
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
@@ -1086,7 +1090,7 @@ static void AnimThrowMistBall(struct Sprite *sprite)
}
// Displays misty background in Mist Ball.
void AnimTask_LoadMistTiles(u8 taskId)
void AnimTask_MistBallFog(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -1109,10 +1113,10 @@ void AnimTask_LoadMistTiles(u8 taskId)
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1;
gTasks[taskId].func = AnimTask_LoadMistTiles_Step;
gTasks[taskId].func = AnimTask_MistBallFog_Step;
}
static void AnimTask_LoadMistTiles_Step(u8 taskId)
static void AnimTask_MistBallFog_Step(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -1123,7 +1127,7 @@ static void AnimTask_LoadMistTiles_Step(u8 taskId)
{
case 0:
gTasks[taskId].data[9] += 1;
gTasks[taskId].data[11] = wMistBlendAmounts[gTasks[taskId].data[9]];
gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]];
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11]));
if (gTasks[taskId].data[11] == 5)
{
@@ -1410,14 +1414,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
}
else
{
battlerX = (sHailCoordData[hailStructId].x);
battlerY = (sHailCoordData[hailStructId].y);
battlerX = sHailCoordData[hailStructId].x;
battlerY = sHailCoordData[hailStructId].y;
}
}
else
{
battlerX = (sHailCoordData[hailStructId].x);
battlerY = (sHailCoordData[hailStructId].y);
battlerX = sHailCoordData[hailStructId].x;
battlerY = sHailCoordData[hailStructId].y;
}
spriteX = battlerX - ((battlerY + 8) / 2);
id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18);
+13 -24
View File
@@ -5,7 +5,6 @@
#include "task.h"
#include "trig.h"
// This file's functions.
static void AnimTask_ShakeMon_Step(u8 taskId);
static void AnimTask_ShakeMon2_Step(u8 taskId);
static void AnimTask_ShakeMonInPlace_Step(u8 taskId);
@@ -108,7 +107,7 @@ void AnimTask_ShakeMon(u8 taskId)
gTasks[taskId].data[4] = gBattleAnimArgs[1];
gTasks[taskId].data[5] = gBattleAnimArgs[2];
gTasks[taskId].func = AnimTask_ShakeMon_Step;
AnimTask_ShakeMon_Step(taskId);
gTasks[taskId].func(taskId);
}
static void AnimTask_ShakeMon_Step(u8 taskId)
@@ -156,17 +155,14 @@ static void AnimTask_ShakeMon_Step(u8 taskId)
void AnimTask_ShakeMon2(u8 taskId)
{
u8 spriteId;
bool8 destroy = FALSE;
bool8 abort = FALSE;
u8 battlerId;
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
{
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == SPRITE_NONE)
{
DestroyAnimVisualTask(taskId);
return;
}
abort = TRUE;
}
else if (gBattleAnimArgs[0] != 8)
{
@@ -188,7 +184,7 @@ void AnimTask_ShakeMon2(u8 taskId)
}
if (IsBattlerSpriteVisible(battlerId) == FALSE)
destroy = TRUE;
abort = TRUE;
spriteId = gBattlerSpriteIds[battlerId];
}
@@ -197,7 +193,7 @@ void AnimTask_ShakeMon2(u8 taskId)
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
}
if (destroy)
if (abort)
{
DestroyAnimVisualTask(taskId);
return;
@@ -332,10 +328,8 @@ void AnimTask_ShakeAndSinkMon(u8 taskId)
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
{
s16 x;
u8 spriteId;
spriteId = gTasks[taskId].data[0];
x = gTasks[taskId].data[1];
u8 spriteId = gTasks[taskId].data[0];
s16 x = gTasks[taskId].data[1];
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
{
gTasks[taskId].data[8] = 0;
@@ -365,11 +359,8 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
void AnimTask_TranslateMonElliptical(u8 taskId)
{
u8 i;
u8 spriteId;
u8 wavePeriod;
wavePeriod = 1;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
u8 wavePeriod = 1;
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
gBattleAnimArgs[4] = 5;
@@ -742,7 +733,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId)
{
u8 spriteId = gTasks[taskId].data[0];
gSprites[spriteId].x2 += gTasks[taskId].data[1];
if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u)
if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32)
{
DestroyAnimVisualTask(taskId);
return;
@@ -831,8 +822,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
// arg 4: sprite object mode
void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
@@ -893,7 +883,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
}
else
{
if (gBattleAnimArgs[2] == 0)
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
{
gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimAttacker);
}
@@ -916,8 +906,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
// Rotates mon to side and back to original position. For Peck and when a held item activates
void AnimTask_RotateMonToSideAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
+15 -15
View File
@@ -81,7 +81,7 @@ static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] =
#define TAG_MOVE_EFFECT_MON_1 55125
#define TAG_MOVE_EFFECT_MON_2 55126
static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
static const struct SpriteTemplate sSpriteTemplates_MoveEffectMons[] =
{
{
.tileTag = TAG_MOVE_EFFECT_MON_1,
@@ -103,7 +103,7 @@ static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
}
};
static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] =
static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] =
{
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1, },
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
@@ -440,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite)
#define sAmplitudeX sAmplitude
#define sAmplitudeY data[4]
// TranslateSpriteInWavePattern
// TranslateSpriteInLissajousCurve
#define sCirclePosX sCirclePos
#define sCircleSpeedX sCircleSpeed
#define sCirclePosY data[4]
@@ -487,7 +487,7 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite)
// Unused
// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc.
static void TranslateSpriteInWavePattern(struct Sprite *sprite)
static void TranslateSpriteInLissajousCurve(struct Sprite *sprite)
{
if (sprite->sDuration)
{
@@ -1508,13 +1508,13 @@ u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLef
return selectedPalettes;
}
// Presumably something commented here, just returns arg
u8 AnimDummyReturnArg(u8 battler)
u8 GetSpritePalIdxByBattler(u8 battler)
{
return battler;
}
static u8 GetBattlerAtPosition_(u8 position)
// Unused
static u8 GetSpritePalIdxByPosition(u8 position)
{
return GetBattlerAtPosition(position);
}
@@ -1552,20 +1552,20 @@ void AnimSpriteOnMonPos(struct Sprite *sprite)
// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{
bool8 v1;
bool8 respectMonPicOffsets;
u8 coordType;
if (!(gBattleAnimArgs[5] & 0xff00))
v1 = TRUE;
respectMonPicOffsets = TRUE;
else
v1 = FALSE;
respectMonPicOffsets = FALSE;
if (!(gBattleAnimArgs[5] & 0xff))
coordType = BATTLER_COORD_Y_PIC_OFFSET;
else
coordType = BATTLER_COORD_Y;
InitSpritePosToAnimAttacker(sprite, v1);
InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -2097,8 +2097,8 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm)
{
u8 spriteId;
u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]);
u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag);
u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[id].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL)
gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000);
@@ -2139,9 +2139,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
if (!isBackpic)
spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else
spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority);
spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority);
if (IsContest())
{
+3 -5
View File
@@ -818,7 +818,7 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId)
{
for (i = 8; i < 13; i++)
{
if (task->data[i] != 64)
if (task->data[i] != MAX_SPRITES)
DestroySprite(&gSprites[task->data[i]]);
}
@@ -997,12 +997,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId)
scanlineParams.dmaDest = &REG_BG2HOFS;
}
i = task->data[14];
while (i <= task->data[14] + 64)
for (i = task->data[14]; i <= task->data[14] + 64; i++)
{
gScanlineEffectRegBuffers[0][i] = task->data[10];
gScanlineEffectRegBuffers[1][i] = task->data[10];
i++;
}
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
@@ -1137,7 +1135,7 @@ static void AnimPsychoBoost(struct Sprite *sprite)
case 1:
if (sprite->affineAnimEnded)
{
PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
ChangeSpriteAffineAnim(sprite, 1);
sprite->data[0]++;
}
+2 -2
View File
@@ -596,8 +596,8 @@ void AnimTask_Rollout(u8 taskId)
task->data[6] = 0;
task->data[7] = 0;
pan1 = BattleAnimAdjustPanning(-64);
pan2 = BattleAnimAdjustPanning(63);
pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[13] = pan1;
task->data[14] = (pan2 - pan1) / task->data[8];
+2 -2
View File
@@ -100,7 +100,7 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId)
gTasks[taskId].data[12] = r9;
gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step;
SoundTask_LoopSEAdjustPanning_Step(taskId);
gTasks[taskId].func(taskId);
}
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
@@ -385,7 +385,7 @@ void SoundTask_AdjustPanningVar(u8 taskId)
gTasks[taskId].data[11] = sourcePan;
gTasks[taskId].func = SoundTask_AdjustPanningVar_Step;
SoundTask_AdjustPanningVar_Step(taskId);
gTasks[taskId].func(taskId);
}
static void SoundTask_AdjustPanningVar_Step(u8 taskId)
+7 -7
View File
@@ -550,8 +550,8 @@ static void LoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battl
healthBoxSpriteId = gHealthboxSpriteIds[battler];
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
*paletteId1 = AllocSpritePalette(0xD709);
*paletteId2 = AllocSpritePalette(0xD70A);
*paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1);
*paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2);
offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100;
@@ -580,10 +580,10 @@ static void FreeHealthboxPalsForLevelUp(u8 battler)
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
FreeSpritePaletteByTag(0xD709);
FreeSpritePaletteByTag(0xD70A);
paletteId1 = IndexOfSpritePaletteTag(0xD6FF);
paletteId2 = IndexOfSpritePaletteTag(0xD704);
FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1);
FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2);
paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL);
paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL);
gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
gSprites[spriteId1].oam.paletteNum = paletteId1;
gSprites[spriteId2].oam.paletteNum = paletteId2;
@@ -611,7 +611,7 @@ static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId)
if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
{
gTasks[taskId].data[0] = 0;
paletteNum = IndexOfSpritePaletteTag(0xD709);
paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1);
colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
switch (gTasks[taskId].data[1])
{
+3 -3
View File
@@ -97,7 +97,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
{
if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler))
selectedPalettes |= 0x10000 << AnimDummyReturnArg(battler);
selectedPalettes |= 0x10000 << GetSpritePalIdxByBattler(battler);
}
StartBlendAnimSpriteColor(taskId, selectedPalettes);
@@ -535,9 +535,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
gTasks[taskId].func = StatsChangeAnimation_Step3;
if (sAnimStatsChangeData->data[0] == 0)
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64));
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
else
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64));
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
}
static void StatsChangeAnimation_Step3(u8 taskId)
+58 -178
View File
@@ -38,9 +38,25 @@ static void BufferArenaOpponentName(void);
static void SpriteCB_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
static const s8 sMindRatings[] =
#define JUDGEMENT_STATE_FINISHED 8
#define TAG_JUDGEMENT_ICON 1000
enum {
ANIM_ICON_X, // Player lost
ANIM_ICON_TRIANGLE, // Tie
ANIM_ICON_CIRCLE, // Player won
ANIM_ICON_LINE, // Line segment for separating the score total at the bottom
};
// This table holds the number of points to add to the 'mind' score for each move.
// All moves with power != 0 give 1 point, with the following exceptions:
// - Counter, Mirror Coat, and Bide give 0 points
// - Fake Out subtracts 1 point
// All moves with power == 0 give 0 points, with the following exceptions:
// - Protect, Detect, and Endure subtract 1 point
static const s8 sMindRatings[MOVES_COUNT] =
{
[MOVE_NONE] = 0,
[MOVE_POUND] = 1,
[MOVE_KARATE_CHOP] = 1,
[MOVE_DOUBLE_SLAP] = 1,
@@ -54,11 +70,9 @@ static const s8 sMindRatings[] =
[MOVE_VICE_GRIP] = 1,
[MOVE_GUILLOTINE] = 1,
[MOVE_RAZOR_WIND] = 1,
[MOVE_SWORDS_DANCE] = 0,
[MOVE_CUT] = 1,
[MOVE_GUST] = 1,
[MOVE_WING_ATTACK] = 1,
[MOVE_WHIRLWIND] = 0,
[MOVE_FLY] = 1,
[MOVE_BIND] = 1,
[MOVE_SLAM] = 1,
@@ -68,7 +82,6 @@ static const s8 sMindRatings[] =
[MOVE_MEGA_KICK] = 1,
[MOVE_JUMP_KICK] = 1,
[MOVE_ROLLING_KICK] = 1,
[MOVE_SAND_ATTACK] = 0,
[MOVE_HEADBUTT] = 1,
[MOVE_HORN_ATTACK] = 1,
[MOVE_FURY_ATTACK] = 1,
@@ -79,22 +92,14 @@ static const s8 sMindRatings[] =
[MOVE_TAKE_DOWN] = 1,
[MOVE_THRASH] = 1,
[MOVE_DOUBLE_EDGE] = 1,
[MOVE_TAIL_WHIP] = 0,
[MOVE_POISON_STING] = 1,
[MOVE_TWINEEDLE] = 1,
[MOVE_PIN_MISSILE] = 1,
[MOVE_LEER] = 0,
[MOVE_BITE] = 1,
[MOVE_GROWL] = 0,
[MOVE_ROAR] = 0,
[MOVE_SING] = 0,
[MOVE_SUPERSONIC] = 0,
[MOVE_SONIC_BOOM] = 1,
[MOVE_DISABLE] = 0,
[MOVE_ACID] = 1,
[MOVE_EMBER] = 1,
[MOVE_FLAMETHROWER] = 1,
[MOVE_MIST] = 0,
[MOVE_WATER_GUN] = 1,
[MOVE_HYDRO_PUMP] = 1,
[MOVE_SURF] = 1,
@@ -108,58 +113,27 @@ static const s8 sMindRatings[] =
[MOVE_DRILL_PECK] = 1,
[MOVE_SUBMISSION] = 1,
[MOVE_LOW_KICK] = 1,
[MOVE_COUNTER] = 0,
[MOVE_SEISMIC_TOSS] = 1,
[MOVE_STRENGTH] = 1,
[MOVE_ABSORB] = 1,
[MOVE_MEGA_DRAIN] = 1,
[MOVE_LEECH_SEED] = 0,
[MOVE_GROWTH] = 0,
[MOVE_RAZOR_LEAF] = 1,
[MOVE_SOLAR_BEAM] = 1,
[MOVE_POISON_POWDER] = 0,
[MOVE_STUN_SPORE] = 0,
[MOVE_SLEEP_POWDER] = 0,
[MOVE_PETAL_DANCE] = 1,
[MOVE_STRING_SHOT] = 0,
[MOVE_DRAGON_RAGE] = 1,
[MOVE_FIRE_SPIN] = 1,
[MOVE_THUNDER_SHOCK] = 1,
[MOVE_THUNDERBOLT] = 1,
[MOVE_THUNDER_WAVE] = 0,
[MOVE_THUNDER] = 1,
[MOVE_ROCK_THROW] = 1,
[MOVE_EARTHQUAKE] = 1,
[MOVE_FISSURE] = 1,
[MOVE_DIG] = 1,
[MOVE_TOXIC] = 0,
[MOVE_CONFUSION] = 1,
[MOVE_PSYCHIC] = 1,
[MOVE_HYPNOSIS] = 0,
[MOVE_MEDITATE] = 0,
[MOVE_AGILITY] = 0,
[MOVE_QUICK_ATTACK] = 1,
[MOVE_RAGE] = 1,
[MOVE_TELEPORT] = 0,
[MOVE_NIGHT_SHADE] = 1,
[MOVE_MIMIC] = 0,
[MOVE_SCREECH] = 0,
[MOVE_DOUBLE_TEAM] = 0,
[MOVE_RECOVER] = 0,
[MOVE_HARDEN] = 0,
[MOVE_MINIMIZE] = 0,
[MOVE_SMOKESCREEN] = 0,
[MOVE_CONFUSE_RAY] = 0,
[MOVE_WITHDRAW] = 0,
[MOVE_DEFENSE_CURL] = 0,
[MOVE_BARRIER] = 0,
[MOVE_LIGHT_SCREEN] = 0,
[MOVE_HAZE] = 0,
[MOVE_REFLECT] = 0,
[MOVE_FOCUS_ENERGY] = 0,
[MOVE_BIDE] = 0,
[MOVE_METRONOME] = 0,
[MOVE_MIRROR_MOVE] = 0,
[MOVE_SELF_DESTRUCT] = 1,
[MOVE_EGG_BOMB] = 1,
[MOVE_LICK] = 1,
@@ -173,118 +147,67 @@ static const s8 sMindRatings[] =
[MOVE_SKULL_BASH] = 1,
[MOVE_SPIKE_CANNON] = 1,
[MOVE_CONSTRICT] = 1,
[MOVE_AMNESIA] = 0,
[MOVE_KINESIS] = 0,
[MOVE_SOFT_BOILED] = 0,
[MOVE_HI_JUMP_KICK] = 1,
[MOVE_GLARE] = 0,
[MOVE_DREAM_EATER] = 1,
[MOVE_POISON_GAS] = 0,
[MOVE_BARRAGE] = 1,
[MOVE_LEECH_LIFE] = 1,
[MOVE_LOVELY_KISS] = 0,
[MOVE_SKY_ATTACK] = 1,
[MOVE_TRANSFORM] = 0,
[MOVE_BUBBLE] = 1,
[MOVE_DIZZY_PUNCH] = 1,
[MOVE_SPORE] = 0,
[MOVE_FLASH] = 0,
[MOVE_PSYWAVE] = 1,
[MOVE_SPLASH] = 0,
[MOVE_ACID_ARMOR] = 0,
[MOVE_CRABHAMMER] = 1,
[MOVE_EXPLOSION] = 1,
[MOVE_FURY_SWIPES] = 1,
[MOVE_BONEMERANG] = 1,
[MOVE_REST] = 0,
[MOVE_ROCK_SLIDE] = 1,
[MOVE_HYPER_FANG] = 1,
[MOVE_SHARPEN] = 0,
[MOVE_CONVERSION] = 0,
[MOVE_TRI_ATTACK] = 1,
[MOVE_SUPER_FANG] = 1,
[MOVE_SLASH] = 1,
[MOVE_SUBSTITUTE] = 0,
[MOVE_STRUGGLE] = 1,
[MOVE_SKETCH] = 0,
[MOVE_TRIPLE_KICK] = 1,
[MOVE_THIEF] = 1,
[MOVE_SPIDER_WEB] = 0,
[MOVE_MIND_READER] = 0,
[MOVE_NIGHTMARE] = 0,
[MOVE_FLAME_WHEEL] = 1,
[MOVE_SNORE] = 1,
[MOVE_CURSE] = 0,
[MOVE_FLAIL] = 1,
[MOVE_CONVERSION_2] = 0,
[MOVE_AEROBLAST] = 1,
[MOVE_COTTON_SPORE] = 0,
[MOVE_REVERSAL] = 1,
[MOVE_SPITE] = 0,
[MOVE_POWDER_SNOW] = 1,
[MOVE_PROTECT] = -1,
[MOVE_MACH_PUNCH] = 1,
[MOVE_SCARY_FACE] = 0,
[MOVE_FAINT_ATTACK] = 1,
[MOVE_SWEET_KISS] = 0,
[MOVE_BELLY_DRUM] = 0,
[MOVE_SLUDGE_BOMB] = 1,
[MOVE_MUD_SLAP] = 1,
[MOVE_OCTAZOOKA] = 1,
[MOVE_SPIKES] = 0,
[MOVE_ZAP_CANNON] = 1,
[MOVE_FORESIGHT] = 0,
[MOVE_DESTINY_BOND] = 0,
[MOVE_PERISH_SONG] = 0,
[MOVE_ICY_WIND] = 1,
[MOVE_DETECT] = -1,
[MOVE_BONE_RUSH] = 1,
[MOVE_LOCK_ON] = 0,
[MOVE_OUTRAGE] = 1,
[MOVE_SANDSTORM] = 0,
[MOVE_GIGA_DRAIN] = 1,
[MOVE_ENDURE] = -1,
[MOVE_CHARM] = 0,
[MOVE_ROLLOUT] = 1,
[MOVE_FALSE_SWIPE] = 1,
[MOVE_SWAGGER] = 0,
[MOVE_MILK_DRINK] = 0,
[MOVE_SPARK] = 1,
[MOVE_FURY_CUTTER] = 1,
[MOVE_STEEL_WING] = 1,
[MOVE_MEAN_LOOK] = 0,
[MOVE_ATTRACT] = 0,
[MOVE_SLEEP_TALK] = 0,
[MOVE_HEAL_BELL] = 0,
[MOVE_RETURN] = 1,
[MOVE_PRESENT] = 1,
[MOVE_FRUSTRATION] = 1,
[MOVE_SAFEGUARD] = 0,
[MOVE_PAIN_SPLIT] = 0,
[MOVE_SACRED_FIRE] = 1,
[MOVE_MAGNITUDE] = 1,
[MOVE_DYNAMIC_PUNCH] = 1,
[MOVE_MEGAHORN] = 1,
[MOVE_DRAGON_BREATH] = 1,
[MOVE_BATON_PASS] = 0,
[MOVE_ENCORE] = 0,
[MOVE_PURSUIT] = 1,
[MOVE_RAPID_SPIN] = 1,
[MOVE_SWEET_SCENT] = 0,
[MOVE_IRON_TAIL] = 1,
[MOVE_METAL_CLAW] = 1,
[MOVE_VITAL_THROW] = 1,
[MOVE_MORNING_SUN] = 0,
[MOVE_SYNTHESIS] = 0,
[MOVE_MOONLIGHT] = 0,
[MOVE_HIDDEN_POWER] = 1,
[MOVE_CROSS_CHOP] = 1,
[MOVE_TWISTER] = 1,
[MOVE_RAIN_DANCE] = 0,
[MOVE_SUNNY_DAY] = 0,
[MOVE_CRUNCH] = 1,
[MOVE_MIRROR_COAT] = 0,
[MOVE_PSYCH_UP] = 0,
[MOVE_EXTREME_SPEED] = 1,
[MOVE_ANCIENT_POWER] = 1,
[MOVE_SHADOW_BALL] = 1,
@@ -294,56 +217,25 @@ static const s8 sMindRatings[] =
[MOVE_BEAT_UP] = 1,
[MOVE_FAKE_OUT] = -1,
[MOVE_UPROAR] = 1,
[MOVE_STOCKPILE] = 0,
[MOVE_SPIT_UP] = 1,
[MOVE_SWALLOW] = 0,
[MOVE_HEAT_WAVE] = 1,
[MOVE_HAIL] = 0,
[MOVE_TORMENT] = 0,
[MOVE_FLATTER] = 0,
[MOVE_WILL_O_WISP] = 0,
[MOVE_MEMENTO] = 0,
[MOVE_FACADE] = 1,
[MOVE_FOCUS_PUNCH] = 1,
[MOVE_SMELLING_SALT] = 1,
[MOVE_FOLLOW_ME] = 0,
[MOVE_NATURE_POWER] = 0,
[MOVE_CHARGE] = 0,
[MOVE_TAUNT] = 0,
[MOVE_HELPING_HAND] = 0,
[MOVE_TRICK] = 0,
[MOVE_ROLE_PLAY] = 0,
[MOVE_WISH] = 0,
[MOVE_ASSIST] = 0,
[MOVE_INGRAIN] = 0,
[MOVE_SUPERPOWER] = 1,
[MOVE_MAGIC_COAT] = 0,
[MOVE_RECYCLE] = 0,
[MOVE_REVENGE] = 1,
[MOVE_BRICK_BREAK] = 1,
[MOVE_YAWN] = 0,
[MOVE_KNOCK_OFF] = 1,
[MOVE_ENDEAVOR] = 1,
[MOVE_ERUPTION] = 1,
[MOVE_SKILL_SWAP] = 0,
[MOVE_IMPRISON] = 0,
[MOVE_REFRESH] = 0,
[MOVE_GRUDGE] = 0,
[MOVE_SNATCH] = 0,
[MOVE_SECRET_POWER] = 1,
[MOVE_DIVE] = 1,
[MOVE_ARM_THRUST] = 1,
[MOVE_CAMOUFLAGE] = 0,
[MOVE_TAIL_GLOW] = 0,
[MOVE_LUSTER_PURGE] = 1,
[MOVE_MIST_BALL] = 1,
[MOVE_FEATHER_DANCE] = 0,
[MOVE_TEETER_DANCE] = 0,
[MOVE_BLAZE_KICK] = 1,
[MOVE_MUD_SPORT] = 0,
[MOVE_ICE_BALL] = 1,
[MOVE_NEEDLE_ARM] = 1,
[MOVE_SLACK_OFF] = 0,
[MOVE_HYPER_VOICE] = 1,
[MOVE_POISON_FANG] = 1,
[MOVE_CRUSH_CLAW] = 1,
@@ -352,17 +244,10 @@ static const s8 sMindRatings[] =
[MOVE_METEOR_MASH] = 1,
[MOVE_ASTONISH] = 1,
[MOVE_WEATHER_BALL] = 1,
[MOVE_AROMATHERAPY] = 0,
[MOVE_FAKE_TEARS] = 0,
[MOVE_AIR_CUTTER] = 1,
[MOVE_OVERHEAT] = 1,
[MOVE_ODOR_SLEUTH] = 0,
[MOVE_ROCK_TOMB] = 1,
[MOVE_SILVER_WIND] = 1,
[MOVE_METAL_SOUND] = 0,
[MOVE_GRASS_WHISTLE] = 0,
[MOVE_TICKLE] = 0,
[MOVE_COSMIC_POWER] = 0,
[MOVE_WATER_SPOUT] = 1,
[MOVE_SIGNAL_BEAM] = 1,
[MOVE_SHADOW_PUNCH] = 1,
@@ -374,22 +259,15 @@ static const s8 sMindRatings[] =
[MOVE_BULLET_SEED] = 1,
[MOVE_AERIAL_ACE] = 1,
[MOVE_ICICLE_SPEAR] = 1,
[MOVE_IRON_DEFENSE] = 0,
[MOVE_BLOCK] = 0,
[MOVE_HOWL] = 0,
[MOVE_DRAGON_CLAW] = 1,
[MOVE_FRENZY_PLANT] = 1,
[MOVE_BULK_UP] = 0,
[MOVE_BOUNCE] = 1,
[MOVE_MUD_SHOT] = 1,
[MOVE_POISON_TAIL] = 1,
[MOVE_COVET] = 1,
[MOVE_VOLT_TACKLE] = 1,
[MOVE_MAGICAL_LEAF] = 1,
[MOVE_WATER_SPORT] = 0,
[MOVE_CALM_MIND] = 0,
[MOVE_LEAF_BLADE] = 1,
[MOVE_DRAGON_DANCE] = 0,
[MOVE_ROCK_BLAST] = 1,
[MOVE_SHOCK_WAVE] = 1,
[MOVE_WATER_PULSE] = 1,
@@ -397,9 +275,7 @@ static const s8 sMindRatings[] =
[MOVE_PSYCHO_BOOST] = 1,
};
#define TAG_JUDGEMENT_ICON 1000
static const struct OamData sJudgementIconOamData =
static const struct OamData sOam_JudgementIcon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -416,44 +292,44 @@ static const struct OamData sJudgementIconOamData =
.affineParam = 0
};
static const union AnimCmd sJudgementIconAnimCmd0[] =
static const union AnimCmd sAnim_JudgementIcon_X[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd1[] =
static const union AnimCmd sAnim_JudgementIcon_Triangle[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd2[] =
static const union AnimCmd sAnim_JudgementIcon_Circle[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd3[] =
static const union AnimCmd sAnim_JudgementIcon_Line[] =
{
ANIMCMD_FRAME(12, 1),
ANIMCMD_END
};
static const union AnimCmd *const sJudgementIconAnimCmds[] =
static const union AnimCmd *const sAnims_JudgementIcon[] =
{
sJudgementIconAnimCmd0,
sJudgementIconAnimCmd1,
sJudgementIconAnimCmd2,
sJudgementIconAnimCmd3
[ANIM_ICON_X] = sAnim_JudgementIcon_X,
[ANIM_ICON_TRIANGLE] = sAnim_JudgementIcon_Triangle,
[ANIM_ICON_CIRCLE] = sAnim_JudgementIcon_Circle,
[ANIM_ICON_LINE] = sAnim_JudgementIcon_Line,
};
static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon =
{
.tileTag = TAG_JUDGEMENT_ICON,
.paletteTag = TAG_NONE,
.oam = &sJudgementIconOamData,
.anims = sJudgementIconAnimCmds,
.oam = &sOam_JudgementIcon,
.anims = sAnims_JudgementIcon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_JudgmentIcon,
@@ -507,12 +383,12 @@ void CallBattleArenaFunction(void)
u8 BattleArena_ShowJudgmentWindow(u8 *state)
{
int i;
u8 ret = 0;
u8 result = ARENA_RESULT_RUNNING;
switch (*state)
{
case 0:
BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL);
LoadCompressedSpriteSheet(sBattleArenaJudgementSymbolsSpriteSheet);
LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20);
gBattle_WIN0H = 0xFF;
@@ -549,13 +425,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
// Create dividing line for the the score totals at the bottom
for (i = 0; i < 8; i++)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_JudgmentIcon, 64 + i * 16, 84, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
StartSpriteAnim(&gSprites[spriteId], ANIM_ICON_LINE);
}
ret = 1;
result = ARENA_RESULT_STEP_DONE;
(*state)++;
}
break;
@@ -566,7 +444,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 5:
PlaySE(SE_ARENA_TIMEUP1);
@@ -575,7 +453,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 6:
PlaySE(SE_ARENA_TIMEUP1);
@@ -584,49 +462,50 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 7:
PlaySE(SE_ARENA_TIMEUP2);
if (gBattleTextBuff1[0] > gBattleTextBuff2[0])
{
ret = 2;
result = ARENA_RESULT_PLAYER_WON;
gBattleScripting.battler = 0;
}
else if (gBattleTextBuff1[0] < gBattleTextBuff2[0])
{
ret = 3;
result = ARENA_RESULT_PLAYER_LOST;
gBattleScripting.battler = 1;
}
else
{
ret = 4;
result = ARENA_RESULT_TIE;
}
(*state)++;
break;
case 8:
case JUDGEMENT_STATE_FINISHED:
// Finishing this state is the indicator to SpriteCB_JudgmentIcon that its safe to destroy the judgement icon sprites
(*state)++;
break;
case 9:
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
case JUDGEMENT_STATE_FINISHED + 1:
SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL);
HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR);
CopyBgTilemapBufferToVram(0);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256);
BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK);
(*state)++;
break;
case 10:
case JUDGEMENT_STATE_FINISHED + 2:
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
FreeSpriteTilesByTag(TAG_JUDGEMENT_ICON);
ret = 1;
result = ARENA_RESULT_STEP_DONE;
(*state)++;
}
break;
}
return ret;
return result;
}
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
@@ -656,7 +535,8 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
if (pointsPlayer > pointsOpponent)
{
animNum = 2;
animNum = ANIM_ICON_CIRCLE;
// +2 to score total for winning
if (battler != 0)
gBattleTextBuff2[0] += 2;
else
@@ -664,7 +544,8 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
}
else if (pointsPlayer == pointsOpponent)
{
animNum = 1;
animNum = ANIM_ICON_TRIANGLE;
// +1 to score total for a tie
if (battler != 0)
gBattleTextBuff2[0] += 1;
else
@@ -672,7 +553,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
}
else
{
animNum = 0;
animNum = ANIM_ICON_X;
}
pointsPlayer = CreateSprite(&sSpriteTemplate_JudgmentIcon, x, y, 0);
@@ -681,7 +562,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
static void SpriteCB_JudgmentIcon(struct Sprite *sprite)
{
if (gBattleCommunication[0] > 8)
if (gBattleCommunication[0] > JUDGEMENT_STATE_FINISHED)
DestroySprite(sprite);
}
@@ -701,8 +582,7 @@ void BattleArena_InitPoints(void)
void BattleArena_AddMindPoints(u8 battler)
{
s8 *mindPoints = gBattleStruct->arenaMindPoints;
mindPoints[battler] += sMindRatings[gCurrentMove];
gBattleStruct->arenaMindPoints[battler] += sMindRatings[gCurrentMove];
}
void BattleArena_AddSkillPoints(u8 battler)
+5 -2
View File
@@ -6368,7 +6368,10 @@ static void Cmd_various(void)
break;
case VARIOUS_ARENA_JUDGMENT_WINDOW:
i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]);
if (i == 0)
// BattleArena_ShowJudgmentWindow's last state was an intermediate step.
// Return without advancing the current instruction so that it will be called again.
if (i == ARENA_RESULT_RUNNING)
return;
gBattleCommunication[1] = i;
@@ -8517,7 +8520,7 @@ static void Cmd_friendshiptodamagecalculation(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25;
else // EFFECT_FRUSTRATION
gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25;
gDynamicBasePower = 10 * (MAX_FRIENDSHIP - gBattleMons[gBattlerAttacker].friendship) / 25;
gBattlescriptCurrInstr++;
}
@@ -253,9 +253,9 @@ u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *, struct Spr
u8 MovementAction_Levitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_LockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Finish(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FlyUp_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FlyUp_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Fly_Finish(struct ObjectEvent *, struct Sprite *);
@@ -410,8 +410,8 @@ u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpLeft[])(struct ObjectEvent *,
u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_Levitate[])(struct ObjectEvent *, struct Sprite *);
@@ -570,8 +570,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalUpRight,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkSlowDiagonalDownLeft,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalDownRight,
[MOVEMENT_ACTION_STORE_AND_LOCK_ANIM] = gMovementActionFuncs_StoreAndLockAnim,
[MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM] = gMovementActionFuncs_FreeAndUnlockAnim,
[MOVEMENT_ACTION_LOCK_ANIM] = gMovementActionFuncs_LockAnim,
[MOVEMENT_ACTION_UNLOCK_ANIM] = gMovementActionFuncs_UnlockAnim,
[MOVEMENT_ACTION_WALK_LEFT_AFFINE] = gMovementActionFuncs_WalkLeftAffine,
[MOVEMENT_ACTION_WALK_RIGHT_AFFINE] = gMovementActionFuncs_WalkRightAffine,
[MOVEMENT_ACTION_LEVITATE] = gMovementActionFuncs_Levitate,
+28 -89
View File
@@ -1,9 +1,3 @@
enum {
TAG_POKEBALL = 1200,
TAG_POKEBALL_SMALL,
TAG_STATUS_ICONS,
};
static const struct BgTemplate sPartyMenuBgTemplates[] =
{
{
@@ -35,12 +29,6 @@ static const struct BgTemplate sPartyMenuBgTemplates[] =
},
};
enum
{
PARTY_BOX_LEFT_COLUMN,
PARTY_BOX_RIGHT_COLUMN
};
static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] =
{
[PARTY_BOX_LEFT_COLUMN] =
@@ -663,51 +651,6 @@ static const u16 sUnusedData[] =
0x0121, 0x013b, 0x000f, 0x0013, 0x0039, 0x0046, 0x0094, 0x00f9, 0x007f, 0x0123,
};
enum
{
MENU_SUMMARY,
MENU_SWITCH,
MENU_CANCEL1,
MENU_ITEM,
MENU_GIVE,
MENU_TAKE_ITEM,
MENU_MAIL,
MENU_TAKE_MAIL,
MENU_READ,
MENU_CANCEL2,
MENU_SHIFT,
MENU_SEND_OUT,
MENU_ENTER,
MENU_NO_ENTRY,
MENU_STORE,
MENU_REGISTER,
MENU_TRADE1,
MENU_TRADE2,
MENU_TOSS,
MENU_FIELD_MOVES,
};
enum
{
FIELD_MOVE_CUT,
FIELD_MOVE_FLASH,
FIELD_MOVE_ROCK_SMASH,
FIELD_MOVE_STRENGTH,
FIELD_MOVE_SURF,
FIELD_MOVE_FLY,
FIELD_MOVE_DIVE,
FIELD_MOVE_WATERFALL,
FIELD_MOVE_TELEPORT,
FIELD_MOVE_DIG,
FIELD_MOVE_SECRET_POWER,
FIELD_MOVE_MILK_DRINK,
FIELD_MOVE_SOFT_BOILED,
FIELD_MOVE_SWEET_SCENT,
};
// What a weird choice of table termination;
#define FIELD_MOVE_TERMINATOR MOVE_SWORDS_DANCE
struct
{
const u8 *text;
@@ -763,25 +706,6 @@ static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMM
static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1};
static const u8 sPartyMenuAction_TakeItemTossCancel[] = {MENU_TAKE_ITEM, MENU_TOSS, MENU_CANCEL1};
// IDs for the action lists that appear when a party mon is selected
enum
{
ACTIONS_NONE,
ACTIONS_SWITCH,
ACTIONS_SHIFT,
ACTIONS_SEND_OUT,
ACTIONS_ENTER,
ACTIONS_NO_ENTRY,
ACTIONS_STORE,
ACTIONS_SUMMARY_ONLY,
ACTIONS_ITEM,
ACTIONS_MAIL,
ACTIONS_REGISTER,
ACTIONS_TRADE,
ACTIONS_SPIN_TRADE,
ACTIONS_TAKEITEM_TOSS
};
static const u8 *const sPartyMenuActions[] =
{
[ACTIONS_NONE] = NULL,
@@ -818,17 +742,32 @@ static const u8 sPartyMenuActionCounts[] =
[ACTIONS_TAKEITEM_TOSS] = ARRAY_COUNT(sPartyMenuAction_TakeItemTossCancel)
};
static const u16 sFieldMoves[] =
static const u16 sFieldMoves[FIELD_MOVES_COUNT + 1] =
{
MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH, MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL, MOVE_TELEPORT,
MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_TERMINATOR
[FIELD_MOVE_CUT] = MOVE_CUT,
[FIELD_MOVE_FLASH] = MOVE_FLASH,
[FIELD_MOVE_ROCK_SMASH] = MOVE_ROCK_SMASH,
[FIELD_MOVE_STRENGTH] = MOVE_STRENGTH,
[FIELD_MOVE_SURF] = MOVE_SURF,
[FIELD_MOVE_FLY] = MOVE_FLY,
[FIELD_MOVE_DIVE] = MOVE_DIVE,
[FIELD_MOVE_WATERFALL] = MOVE_WATERFALL,
[FIELD_MOVE_TELEPORT] = MOVE_TELEPORT,
[FIELD_MOVE_DIG] = MOVE_DIG,
[FIELD_MOVE_SECRET_POWER] = MOVE_SECRET_POWER,
[FIELD_MOVE_MILK_DRINK] = MOVE_MILK_DRINK,
[FIELD_MOVE_SOFT_BOILED] = MOVE_SOFT_BOILED,
[FIELD_MOVE_SWEET_SCENT] = MOVE_SWEET_SCENT,
// NOTE: This value is used as the terminal value for the table. There's no reason to do this, as the size of the table is known.
// Whichever move shares this value (MOVE_SWORDS_DANCE by default) if present will be treated as the end of the array rather than a field move.
[FIELD_MOVES_COUNT] = FIELD_MOVES_COUNT
};
struct
{
bool8 (*fieldMoveFunc)(void);
u8 msgId;
} static const sFieldMoveCursorCallbacks[] =
} static const sFieldMoveCursorCallbacks[FIELD_MOVES_COUNT] =
{
[FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, PARTY_MSG_NOTHING_TO_CUT},
[FIELD_MOVE_FLASH] = {SetUpFieldMove_Flash, PARTY_MSG_CANT_USE_HERE},
@@ -899,23 +838,23 @@ static const union AnimCmd *const sSpriteAnimTable_HeldItem[] =
static const struct SpriteSheet sSpriteSheet_HeldItem =
{
sHeldItemGfx, sizeof(sHeldItemGfx), 0xd750
.data = sHeldItemGfx, .size = sizeof(sHeldItemGfx), .tag = TAG_HELD_ITEM
};
static const struct SpritePalette sSpritePalette_HeldItem =
{
sHeldItemPalette, 0xd750
.data = sHeldItemPalette, .tag = TAG_HELD_ITEM
};
static const struct SpriteTemplate sSpriteTemplate_HeldItem =
{
0xd750,
0xd750,
&sOamData_HeldItem,
sSpriteAnimTable_HeldItem,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
.tileTag = TAG_HELD_ITEM,
.paletteTag = TAG_HELD_ITEM,
.oam = &sOamData_HeldItem,
.anims = sSpriteAnimTable_HeldItem,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct OamData sOamData_MenuPokeball =
+17 -17
View File
@@ -8746,13 +8746,13 @@ static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *
FieldEffectStart(FLDEFF_RIPPLE);
}
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_StoreAndLockAnim_Step0,
u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_LockAnim_Step0,
MovementAction_Finish,
};
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_FreeAndUnlockAnim_Step0,
u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_UnlockAnim_Step0,
MovementAction_Finish,
};
@@ -8768,36 +8768,36 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
MovementAction_Fly_Finish,
};
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_LockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore = FALSE;
if (sLockedAnimObjectEvents == NULL)
{
sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE;
}
else
{
u8 i;
u8 firstFreeSlot;
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
u8 firstFreeSlot = OBJECT_EVENTS_COUNT;
bool32 found = FALSE;
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (firstFreeSlot == 16 && sLockedAnimObjectEvents->objectEventIds[i] == 0)
if (firstFreeSlot == OBJECT_EVENTS_COUNT && sLockedAnimObjectEvents->localIds[i] == 0)
firstFreeSlot = i;
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
{
found = TRUE;
break;
}
}
if (!found && firstFreeSlot != 16)
if (!found && firstFreeSlot != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->count++;
ableToStore = TRUE;
}
@@ -8813,7 +8813,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
return TRUE;
}
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore;
u8 index;
@@ -8823,9 +8823,9 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
{
ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent);
if (index != 16)
if (index != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[index] = 0;
sLockedAnimObjectEvents->localIds[index] = 0;
sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
@@ -8848,7 +8848,7 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
return i;
}
return OBJECT_EVENTS_COUNT;
+8 -8
View File
@@ -868,7 +868,7 @@ static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId)
for (i = 0; i < nDoors; i++)
{
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET, metatileId | MAPGRID_COLLISION_MASK);
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + 8) | MAPGRID_COLLISION_MASK);
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + METATILE_ROW_WIDTH) | MAPGRID_COLLISION_MASK);
}
DrawWholeMapView();
}
@@ -941,19 +941,19 @@ u8 GetLeadMonFriendshipScore(void)
{
struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()];
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP)
return 6;
return FRIENDSHIP_MAX;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200)
return 5;
return FRIENDSHIP_200_TO_254;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150)
return 4;
return FRIENDSHIP_150_TO_199;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100)
return 3;
return FRIENDSHIP_100_TO_149;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50)
return 2;
return FRIENDSHIP_50_TO_99;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1)
return 1;
return FRIENDSHIP_1_TO_49;
return 0;
return FRIENDSHIP_NONE;
}
static void CB2_FieldShowRegionMap(void)
+1 -2
View File
@@ -2520,8 +2520,7 @@ static u16 KeyInterCB_Idle(u32 key)
return LINK_KEY_CODE_EMPTY;
}
// Ignore the player's inputs as long as there is an event script
// in ScriptContext2.
// Ignore the player's inputs as long as there is an event script being executed.
static u16 KeyInterCB_DeferToEventScript(u32 key)
{
u16 retVal;
+81 -7
View File
@@ -73,6 +73,80 @@
#include "constants/rgb.h"
#include "constants/songs.h"
enum {
MENU_SUMMARY,
MENU_SWITCH,
MENU_CANCEL1,
MENU_ITEM,
MENU_GIVE,
MENU_TAKE_ITEM,
MENU_MAIL,
MENU_TAKE_MAIL,
MENU_READ,
MENU_CANCEL2,
MENU_SHIFT,
MENU_SEND_OUT,
MENU_ENTER,
MENU_NO_ENTRY,
MENU_STORE,
MENU_REGISTER,
MENU_TRADE1,
MENU_TRADE2,
MENU_TOSS,
MENU_FIELD_MOVES
};
// IDs for the action lists that appear when a party mon is selected
enum {
ACTIONS_NONE,
ACTIONS_SWITCH,
ACTIONS_SHIFT,
ACTIONS_SEND_OUT,
ACTIONS_ENTER,
ACTIONS_NO_ENTRY,
ACTIONS_STORE,
ACTIONS_SUMMARY_ONLY,
ACTIONS_ITEM,
ACTIONS_MAIL,
ACTIONS_REGISTER,
ACTIONS_TRADE,
ACTIONS_SPIN_TRADE,
ACTIONS_TAKEITEM_TOSS,
};
// In CursorCb_FieldMove, field moves <= FIELD_MOVE_WATERFALL are assumed to line up with the badge flags.
// Badge flag names are commented here for people searching for references to remove the badge requirement.
enum {
FIELD_MOVE_CUT, // FLAG_BADGE01_GET
FIELD_MOVE_FLASH, // FLAG_BADGE02_GET
FIELD_MOVE_ROCK_SMASH, // FLAG_BADGE03_GET
FIELD_MOVE_STRENGTH, // FLAG_BADGE04_GET
FIELD_MOVE_SURF, // FLAG_BADGE05_GET
FIELD_MOVE_FLY, // FLAG_BADGE06_GET
FIELD_MOVE_DIVE, // FLAG_BADGE07_GET
FIELD_MOVE_WATERFALL, // FLAG_BADGE08_GET
FIELD_MOVE_TELEPORT,
FIELD_MOVE_DIG,
FIELD_MOVE_SECRET_POWER,
FIELD_MOVE_MILK_DRINK,
FIELD_MOVE_SOFT_BOILED,
FIELD_MOVE_SWEET_SCENT,
FIELD_MOVES_COUNT
};
enum {
PARTY_BOX_LEFT_COLUMN,
PARTY_BOX_RIGHT_COLUMN,
};
enum {
TAG_POKEBALL = 1200,
TAG_POKEBALL_SMALL,
TAG_STATUS_ICONS,
};
#define TAG_HELD_ITEM 55120
#define PARTY_PAL_SELECTED (1 << 0)
#define PARTY_PAL_FAINTED (1 << 1)
#define PARTY_PAL_TO_SWITCH (1 << 2)
@@ -1186,13 +1260,13 @@ void Task_HandleChooseMonInput(u8 taskId)
switch (PartyMenuButtonHandler(slotPtr))
{
case 1: // Selected mon
case A_BUTTON: // Selected mon
HandleChooseMonSelection(taskId, slotPtr);
break;
case 2: // Selected Cancel
case B_BUTTON: // Selected Cancel / pressed B
HandleChooseMonCancel(taskId, slotPtr);
break;
case 8: // Start button
case START_BUTTON:
if (sPartyMenuInternal->chooseHalf)
{
PlaySE(SE_SELECT);
@@ -1409,7 +1483,7 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
}
if (JOY_NEW(START_BUTTON))
return 8;
return START_BUTTON;
if (movementDir)
{
@@ -1418,8 +1492,8 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
}
// Pressed Cancel
if ((JOY_NEW(A_BUTTON)) && *slotPtr == PARTY_SIZE + 1)
return 2;
if (JOY_NEW(A_BUTTON) && *slotPtr == PARTY_SIZE + 1)
return B_BUTTON;
return JOY_NEW(A_BUTTON | B_BUTTON);
}
@@ -2536,7 +2610,7 @@ static void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId)
// Add field moves to action list
for (i = 0; i < MAX_MON_MOVES; i++)
{
for (j = 0; sFieldMoves[j] != FIELD_MOVE_TERMINATOR; j++)
for (j = 0; sFieldMoves[j] != FIELD_MOVES_COUNT; j++)
{
if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j])
{
+8 -8
View File
@@ -27,33 +27,33 @@ struct RotatingTilePuzzle
static const u8 sMovement_ShiftRight[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftDown[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_DOWN,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftLeft[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_LEFT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftUp[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_UP,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};