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_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_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 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 lock_anim, MOVEMENT_ACTION_LOCK_ANIM
create_movement_action free_unlock_anim, MOVEMENT_ACTION_FREE_AND_UNLOCK_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_left_affine, MOVEMENT_ACTION_WALK_LEFT_AFFINE
create_movement_action walk_right_affine, MOVEMENT_ACTION_WALK_RIGHT_AFFINE create_movement_action walk_right_affine, MOVEMENT_ACTION_WALK_RIGHT_AFFINE
create_movement_action levitate, MOVEMENT_ACTION_LEVITATE 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 gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 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_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 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 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3 delay 3
@@ -2441,7 +2441,7 @@ Move_HORN_ATTACK:
Move_FURY_ATTACK: Move_FURY_ATTACK:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HORN_HIT 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 choosetwoturnanim FuryAttackRight, FuryAttackLeft
FuryAttackContinue: FuryAttackContinue:
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 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 createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0
delay 4 delay 4
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 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 playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 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 createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2 createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2
waitforvisualfinish waitforvisualfinish
createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1 createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1
waitforvisualfinish 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 createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16
delay 0 delay 0
playsewithpan SE_M_HAZE, 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 createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE
delay 8 delay 8
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0
@@ -8570,14 +8570,14 @@ Move_ARM_THRUST:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
splitbgprio ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0
delay 6 delay 6
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3
delay 4 delay 4
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3 createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3
waitforvisualfinish 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 playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
choosetwoturnanim ArmThrustRight, ArmThrustLeft choosetwoturnanim ArmThrustRight, ArmThrustLeft
ArmThrustContinue: ArmThrustContinue:
+5 -3
View File
@@ -1,6 +1,7 @@
#include "constants/global.h" #include "constants/global.h"
#include "constants/battle.h" #include "constants/battle.h"
#include "constants/pokemon.h" #include "constants/pokemon.h"
#include "constants/battle_arena.h"
#include "constants/battle_script_commands.h" #include "constants/battle_script_commands.h"
#include "constants/battle_anim.h" #include "constants/battle_anim.h"
#include "constants/battle_string_ids.h" #include "constants/battle_string_ids.h"
@@ -4482,7 +4483,7 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_THATS_IT arenajudgmentstring B_MSG_REF_THATS_IT
arenawaitmessage B_MSG_REF_THATS_IT arenawaitmessage B_MSG_REF_THATS_IT
pause B_WAIT_TIME_LONG pause B_WAIT_TIME_LONG
setbyte gBattleCommunication, 0 setbyte gBattleCommunication, 0 @ Reset state for arenajudgmentwindow
arenajudgmentwindow arenajudgmentwindow
pause B_WAIT_TIME_LONG pause B_WAIT_TIME_LONG
arenajudgmentwindow arenajudgmentwindow
@@ -4495,8 +4496,9 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_JUDGE_BODY arenajudgmentstring B_MSG_REF_JUDGE_BODY
arenawaitmessage B_MSG_REF_JUDGE_BODY arenawaitmessage B_MSG_REF_JUDGE_BODY
arenajudgmentwindow arenajudgmentwindow
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 3, BattleScript_ArenaJudgmentPlayerLoses jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_PLAYER_LOST, BattleScript_ArenaJudgmentPlayerLoses
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 4, BattleScript_ArenaJudgmentDraw jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_TIE, BattleScript_ArenaJudgmentDraw
@ ARENA_RESULT_PLAYER_WON
arenajudgmentstring B_MSG_REF_PLAYER_WON arenajudgmentstring B_MSG_REF_PLAYER_WON
arenawaitmessage B_MSG_REF_PLAYER_WON arenawaitmessage B_MSG_REF_PLAYER_WON
arenajudgmentwindow arenajudgmentwindow
+18 -2
View File
@@ -435,11 +435,15 @@ AI_CGM_BetterWhenAudienceExcited:
AI_CGM_BetterWhenAudienceExcited_1stUp: AI_CGM_BetterWhenAudienceExcited_1stUp:
@ BUG: Should be if_appeal_num_eq 0 @ BUG: Should be if_appeal_num_eq 0
@ 1st up on 1st appeal excitement will always be 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 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax
if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax
end end
AI_CGM_BetterWhenAudienceExcited_Not1stAppeal: AI_CGM_BetterWhenAudienceExcited_1stAppeal:
if_random_less_than 125, AI_CGM_End if_random_less_than 125, AI_CGM_End
score -15 score -15
end end
@@ -542,7 +546,11 @@ AI_CGM_TargetMonWithJudgesAttention:
end end
AI_CGM_TargetMonWithJudgesAttention_CheckMon1: AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 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 if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
score +2 score +2
if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2 if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
@@ -551,7 +559,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
AI_CGM_TargetMonWithJudgesAttention_CheckMon2: AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
if_user_order_eq MON_2, AI_CGM_End if_user_order_eq MON_2, AI_CGM_End
if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 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 if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
score +2 score +2
if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3 if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
@@ -560,7 +572,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
AI_CGM_TargetMonWithJudgesAttention_CheckMon3: AI_CGM_TargetMonWithJudgesAttention_CheckMon3:
if_user_order_eq MON_3, AI_CGM_End if_user_order_eq MON_3, AI_CGM_End
if_cannot_participate 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 if_used_combo_starter MON_3, AI_CGM_End
.endif
if_random_less_than 125, AI_CGM_End if_random_less_than 125, AI_CGM_End
score +2 score +2
if_not_completed_combo MON_3, AI_CGM_End if_not_completed_combo MON_3, AI_CGM_End
+1 -1
View File
@@ -158,7 +158,7 @@
"y": 9, "y": 9,
"elevation": 0, "elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY", "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "OldaleTown_EventScript_CitySign" "script": "OldaleTown_EventScript_TownSign"
}, },
{ {
"type": "sign", "type": "sign",
+3 -3
View File
@@ -29,8 +29,8 @@ OldaleTown_EventScript_MoveMartEmployee::
setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
return return
OldaleTown_EventScript_CitySign:: OldaleTown_EventScript_TownSign::
msgbox OldaleTown_Text_CitySign, MSGBOX_SIGN msgbox OldaleTown_Text_TownSign, MSGBOX_SIGN
end end
OldaleTown_EventScript_Girl:: OldaleTown_EventScript_Girl::
@@ -395,7 +395,7 @@ OldaleTown_Text_BrendanLetsGoBack:
.string "LAB now.\l" .string "LAB now.\l"
.string "{PLAYER}, you should hustle back, too.$" .string "{PLAYER}, you should hustle back, too.$"
OldaleTown_Text_CitySign: OldaleTown_Text_TownSign:
.string "OLDALE TOWN\n" .string "OLDALE TOWN\n"
.string "“Where things start off scarce.”$" .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 call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment
setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER
specialvar VAR_RESULT, GetLeadMonFriendshipScore 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 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 goto PacifidlogTown_House2_EventScript_GiveFrustration
end end
+1 -1
View File
@@ -144,7 +144,7 @@ Route111_EventScript_RootFossilDisappeared::
@ Unused @ Unused
Route111_Movement_PlayerFall:: Route111_Movement_PlayerFall::
store_lock_anim lock_anim
walk_fast_down walk_fast_down
walk_fast_down 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 goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell
msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore 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 release
end end
@@ -7,13 +7,13 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater::
msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore specialvar VAR_RESULT, GetLeadMonFriendshipScore
switch VAR_RESULT switch VAR_RESULT
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary case FRIENDSHIP_1_TO_49, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
case 2, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou case FRIENDSHIP_50_TO_99, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
case 3, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou case FRIENDSHIP_100_TO_149, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
case 4, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot case FRIENDSHIP_150_TO_199, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
case 5, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy case FRIENDSHIP_200_TO_254, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
case 6, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
release release
end end
+1 -1
View File
@@ -120,7 +120,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
void SetBattlerSpriteYOffsetFromRotation(u8 spriteId); void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2); 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); u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight);
u8 AnimDummyReturnArg(u8 battler); u8 GetSpritePalIdxByBattler(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8); s16 CloneBattlerSpriteWithBlend(u8);
void DestroySpriteWithActiveSheet(struct Sprite *); void DestroySpriteWithActiveSheet(struct Sprite *);
u8 CreateInvisibleSpriteCopy(int, u8, int); u8 CreateInvisibleSpriteCopy(int, u8, int);
+2
View File
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_ARENA_H #ifndef GUARD_BATTLE_ARENA_H
#define GUARD_BATTLE_ARENA_H #define GUARD_BATTLE_ARENA_H
#include "constants/battle_arena.h"
void CallBattleArenaFunction(void); void CallBattleArenaFunction(void);
u8 BattleArena_ShowJudgmentWindow(u8 *state); u8 BattleArena_ShowJudgmentWindow(u8 *state);
void BattleArena_InitPoints(void); void BattleArena_InitPoints(void);
+7 -4
View File
@@ -34,16 +34,19 @@ enum
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706 #define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707 #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_HEALTHBOX_SAFARI_TILE 0xD70B
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C #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_BAR_PAL 0xD710
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 #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 enum
{ {
HEALTHBOX_ALL, HEALTHBOX_ALL,
+6
View File
@@ -17,4 +17,10 @@
#define ARENA_CATEGORY_SKILL 1 #define ARENA_CATEGORY_SKILL 1
#define ARENA_CATEGORY_BODY 2 #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 #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_UP_RIGHT 0x91
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92 #define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93 #define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94 #define MOVEMENT_ACTION_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95 #define MOVEMENT_ACTION_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96 #define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97 #define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
#define MOVEMENT_ACTION_LEVITATE 0x98 #define MOVEMENT_ACTION_LEVITATE 0x98
+9
View File
@@ -181,6 +181,15 @@
#define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7 #define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7
#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint #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_FRIENDSHIP 255
#define MAX_SHEEN 255 #define MAX_SHEEN 255
#define MAX_CONDITION 255 #define MAX_CONDITION 255
+1 -1
View File
@@ -63,7 +63,7 @@ struct PairedPalettes
struct LockedAnimObjectEvents struct LockedAnimObjectEvents
{ {
u8 objectEventIds[OBJECT_EVENTS_COUNT]; u8 localIds[OBJECT_EVENTS_COUNT];
u8 count; u8 count;
}; };
-3
View File
@@ -45,9 +45,6 @@ SECTIONS {
/* COMMON starts at 0x30022A8 */ /* COMMON starts at 0x30022A8 */
INCLUDE "sym_common.ld" INCLUDE "sym_common.ld"
src/*.o(COMMON);
gflib/*.o(COMMON);
*libc.a:sbrkr.o(COMMON); *libc.a:sbrkr.o(COMMON);
end = .; end = .;
. = 0x8000; . = 0x8000;
+8 -8
View File
@@ -84,7 +84,7 @@ static void AnimMilkBottle(struct Sprite *);
static void AnimMilkBottle_Step1(struct Sprite *); static void AnimMilkBottle_Step1(struct Sprite *);
static void AnimMilkBottle_Step2(struct Sprite *, int, int); static void AnimMilkBottle_Step2(struct Sprite *, int, int);
static void AnimGrantingStars(struct Sprite *); static void AnimGrantingStars(struct Sprite *);
static void AnimSparkingStars(struct Sprite *); static void AnimSparklingStars(struct Sprite *);
static void AnimBubbleBurst(struct Sprite *); static void AnimBubbleBurst(struct Sprite *);
static void AnimBubbleBurst_Step(struct Sprite *); static void AnimBubbleBurst_Step(struct Sprite *);
static void AnimSleepLetterZ(struct Sprite *); static void AnimSleepLetterZ(struct Sprite *);
@@ -1416,7 +1416,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate =
.anims = gGrantingStarsAnimTable, .anims = gGrantingStarsAnimTable,
.images = NULL, .images = NULL,
.affineAnims = gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSparkingStars, .callback = AnimSparklingStars,
}; };
static const union AnimCmd sAnim_BubbleBurst[] = 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); sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
if (sprite->y2 == 0) if (sprite->y2 == 0)
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63)); PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
if (moveAlongLinearPath(sprite)) if (moveAlongLinearPath(sprite))
{ {
sprite->y2 = 0; sprite->y2 = 0;
sprite->data[0] = 0; sprite->data[0] = 0;
sprite->callback = AnimItemSteal_Step2; 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; sprite->callback = TranslateSpriteLinearFixedPoint;
} }
static void AnimSparkingStars(struct Sprite *sprite) static void AnimSparklingStars(struct Sprite *sprite)
{ {
u8 battler; u8 battler;
if (!gBattleAnimArgs[2]) if (!gBattleAnimArgs[2])
@@ -4264,7 +4264,7 @@ static void AnimLockOnTarget_Step1(struct Sprite *sprite)
sprite->callback = StartAnimLinearTranslation; sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2); StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2);
sprite->data[5] += 0x100; sprite->data[5] += 0x100;
PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(63)); PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
break; break;
} }
@@ -4350,7 +4350,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite)
sprite->data[2]++; sprite->data[2]++;
pal = sprite->oam.paletteNum; pal = sprite->oam.paletteNum;
LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); 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) else if (sprite->data[1] == 0)
{ {
@@ -4812,7 +4812,7 @@ static void AnimSharpenSphere(struct Sprite *sprite)
sprite->data[2] = 0; sprite->data[2] = 0;
sprite->data[3] = 0; sprite->data[3] = 0;
sprite->data[4] = 0; sprite->data[4] = 0;
sprite->data[5] = BattleAnimAdjustPanning(-64); sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
sprite->callback = AnimSharpenSphere_Step; 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[gTasks[taskId].data[1] + 13] = spriteId;
gTasks[taskId].data[0] = gTasks[taskId].data[3]; gTasks[taskId].data[0] = gTasks[taskId].data[3];
gTasks[taskId].data[1]++; 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) if (gTasks[taskId].data[1] > 2)
gTasks[taskId].func = AirCutterProjectileStep2; gTasks[taskId].func = AirCutterProjectileStep2;
} }
@@ -1839,7 +1839,7 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
int i; int i;
u16 rand; u16 rand;
s16 *ptr; s16 *ptr;
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63)); PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->x += sprite->x2; sprite->x += sprite->x2;
sprite->y += sprite->y2; sprite->y += sprite->y2;
sprite->y2 = 0; sprite->y2 = 0;
@@ -2485,7 +2485,7 @@ static void AnimPencil(struct Sprite *sprite)
sprite->data[3] = 16; sprite->data[3] = 16;
sprite->data[4] = 0; sprite->data[4] = 0;
sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2; 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; sprite->callback = AnimPencil_Step;
} }
@@ -3043,9 +3043,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId)
static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b)
{ {
u8 tile; u8 tile = (b & 1) ? 32 : 0;
tile = (b & 1);
tile = ((-tile | tile) >> 31) & 32;
sprite->oam.tileNum += tile + (a << 2); sprite->oam.tileNum += tile + (a << 2);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMusicNotePaletteTagsTable[b >> 1]); sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMusicNotePaletteTagsTable[b >> 1]);
} }
@@ -3792,8 +3790,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
if (sprite->data[4] > 3) if (sprite->data[4] > 3)
{ {
int var1 = sprite->data[2]; sprite->invisible = sprite->data[2] % 2;
sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1);
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
} }
+17 -17
View File
@@ -1646,7 +1646,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
sprite->data[2]++; sprite->data[2]++;
if (sprite->data[3] == 0) 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]; y = task->data[3] + task->data[5];
spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]); 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) if (spriteId != MAX_SPRITES)
{ {
@@ -2107,7 +2107,7 @@ static void AnimWishStar(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->x = -16; sprite->x = -16;
else else
sprite->x = 256; sprite->x = DISPLAY_WIDTH + 16;
sprite->y = 0; sprite->y = 0;
sprite->callback = AnimWishStar_Step; sprite->callback = AnimWishStar_Step;
@@ -2136,7 +2136,7 @@ static void AnimWishStar_Step(struct Sprite *sprite)
} }
newX = sprite->x + sprite->x2 + 32; newX = sprite->x + sprite->x2 + 32;
if (newX > 304) if (newX > DISPLAY_WIDTH + 64)
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
} }
@@ -2411,7 +2411,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[11] = gBattle_BG1_Y;
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
break; break;
case 1: case 1:
if (gTasks[taskId].data[4]++ > 0) if (gTasks[taskId].data[4]++ > 0)
@@ -2446,7 +2446,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
{ {
gTasks[taskId].data[3] = 0; gTasks[taskId].data[3] = 0;
gTasks[taskId].data[0] = 1; gTasks[taskId].data[0] = 1;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
} }
break; break;
case 4: 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. // Copies the target mon's sprite, and makes a white silhouette that shrinks away.
void AnimTask_RolePlaySilhouette(u8 taskId) void AnimTask_RolePlaySilhouette(u8 taskId)
{ {
u8 isBackPic; bool8 isBackPic;
u32 personality; u32 personality;
u32 otId; u32 otId;
u16 species; u16 species;
@@ -3206,7 +3206,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
{ {
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{ {
isBackPic = 0; isBackPic = FALSE;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -3226,7 +3226,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
} }
else else
{ {
isBackPic = 1; isBackPic = TRUE;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -4845,7 +4845,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0) 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[10] -= 0x800;
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
} }
@@ -4867,7 +4867,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0) if (gSprites[spriteId].y2 == 0)
{ {
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
break; break;
@@ -4904,7 +4904,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 += 10; sprite->y2 += 10;
if (sprite->y2 >= 0) if (sprite->y2 >= 0)
{ {
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->y2 = 0; sprite->y2 = 0;
sprite->data[0]++; sprite->data[0]++;
} }
@@ -4914,7 +4914,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 = -(gSineTable[sprite->data[1]] >> 3); sprite->y2 = -(gSineTable[sprite->data[1]] >> 3);
if (sprite->data[1] > 0x7F) if (sprite->data[1] > 0x7F)
{ {
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0; sprite->data[1] = 0;
sprite->y2 = 0; sprite->y2 = 0;
sprite->data[0]++; sprite->data[0]++;
@@ -4933,7 +4933,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
case 3: case 3:
if (++sprite->data[1] > 8) 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[1] = 0;
sprite->data[0]++; sprite->data[0]++;
} }
@@ -5097,7 +5097,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gTasks[taskId].data[1] &= 0xFF; gTasks[taskId].data[1] &= 0xFF;
x = gSprites[spriteId].x + gSprites[spriteId].x2; 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[1] = 0;
gTasks[taskId].data[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[1] = 0;
gTasks[taskId].data[0]++; gTasks[taskId].data[0]++;
@@ -5227,7 +5227,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite)
case 0: case 0:
if (gBattleAnimArgs[7] == -1) 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->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32; sprite->data[0] = -32;
sprite->data[7]++; sprite->data[7]++;
+2 -2
View File
@@ -583,7 +583,7 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
sprite->data[7] = gBattleAnimArgs[4]; sprite->data[7] = gBattleAnimArgs[4];
sprite->oam.tileNum += gBattleAnimArgs[6] * 4; sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
sprite->callback = AnimZapCannonSpark_Step; sprite->callback = AnimZapCannonSpark_Step;
AnimZapCannonSpark_Step(sprite); sprite->callback(sprite);
} }
static void AnimZapCannonSpark_Step(struct Sprite *sprite) static void AnimZapCannonSpark_Step(struct Sprite *sprite)
@@ -1159,7 +1159,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
task->data[4] = 7; task->data[4] = 7;
task->data[5] = -1; task->data[5] = -1;
task->data[11] = 12; 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[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[14] = task->data[12]; task->data[14] = task->data[12];
task->data[15] = (task->data[13] - task->data[12]) / 3; 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[0] = gBattleAnimArgs[1];
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 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); StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
gSprites[sprite->data[7]].callback = SpriteCallbackDummy; 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[0] == 0)
{ {
if (sprite->data[7] != 64) if (sprite->data[7] != MAX_SPRITES)
{ {
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
DestroySprite(&gSprites[sprite->data[7]]); DestroySprite(&gSprites[sprite->data[7]]);
+2 -2
View File
@@ -1227,8 +1227,8 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId)
{ {
struct Task *task = &gTasks[taskId]; struct Task *task = &gTasks[taskId];
task->data[12] = !GetBattlerSide(gBattleAnimAttacker) ? 1 : -1; task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ 2) + 1; task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1;
task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET);
task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); 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->x = sprite->data[4] >> 4;
sprite->y = sprite->data[5] >> 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) || sprite->y > 157 || sprite->y < -45)
DestroySpriteAndMatrix(sprite); DestroySpriteAndMatrix(sprite);
} }
+18 -14
View File
@@ -45,7 +45,7 @@ static void AnimThrowIceBall(struct Sprite *);
static void InitIceBallParticle(struct Sprite *); static void InitIceBallParticle(struct Sprite *);
static void AnimIceBallParticle(struct Sprite *); static void AnimIceBallParticle(struct Sprite *);
static void AnimTask_HazeScrollingFog_Step(u8); static void AnimTask_HazeScrollingFog_Step(u8);
static void AnimTask_LoadMistTiles_Step(u8); static void AnimTask_MistBallFog_Step(u8);
static void AnimTask_Hail2(u8); static void AnimTask_Hail2(u8);
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
@@ -353,7 +353,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate =
.callback = AnimThrowMistBall, .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, 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; sprite->data[0] = 1;
AnimFastTranslateLinear(sprite); 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 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16) || sprite->y + sprite->y2 < -16)
break; break;
@@ -762,7 +763,8 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
sprite->data[0] = 1; sprite->data[0] = 1;
AnimFastTranslateLinear(sprite); 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 > 256
|| sprite->y + sprite->y2 < -16) || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
@@ -816,7 +818,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
{ {
sprite->data[0] = 1; sprite->data[0] = 1;
AnimFastTranslateLinear(sprite); 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 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16) || sprite->y + sprite->y2 < -16)
break; break;
@@ -846,7 +849,8 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[0] == 1) 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 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16) || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite); DestroyAnimSprite(sprite);
@@ -1086,7 +1090,7 @@ static void AnimThrowMistBall(struct Sprite *sprite)
} }
// Displays misty background in Mist Ball. // Displays misty background in Mist Ball.
void AnimTask_LoadMistTiles(u8 taskId) void AnimTask_MistBallFog(u8 taskId)
{ {
struct BattleAnimBgData animBg; struct BattleAnimBgData animBg;
@@ -1109,10 +1113,10 @@ void AnimTask_LoadMistTiles(u8 taskId)
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1; 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; struct BattleAnimBgData animBg;
@@ -1123,7 +1127,7 @@ static void AnimTask_LoadMistTiles_Step(u8 taskId)
{ {
case 0: case 0:
gTasks[taskId].data[9] += 1; 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])); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11]));
if (gTasks[taskId].data[11] == 5) if (gTasks[taskId].data[11] == 5)
{ {
@@ -1410,14 +1414,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
} }
else else
{ {
battlerX = (sHailCoordData[hailStructId].x); battlerX = sHailCoordData[hailStructId].x;
battlerY = (sHailCoordData[hailStructId].y); battlerY = sHailCoordData[hailStructId].y;
} }
} }
else else
{ {
battlerX = (sHailCoordData[hailStructId].x); battlerX = sHailCoordData[hailStructId].x;
battlerY = (sHailCoordData[hailStructId].y); battlerY = sHailCoordData[hailStructId].y;
} }
spriteX = battlerX - ((battlerY + 8) / 2); spriteX = battlerX - ((battlerY + 8) / 2);
id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18); id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18);
+13 -24
View File
@@ -5,7 +5,6 @@
#include "task.h" #include "task.h"
#include "trig.h" #include "trig.h"
// This file's functions.
static void AnimTask_ShakeMon_Step(u8 taskId); static void AnimTask_ShakeMon_Step(u8 taskId);
static void AnimTask_ShakeMon2_Step(u8 taskId); static void AnimTask_ShakeMon2_Step(u8 taskId);
static void AnimTask_ShakeMonInPlace_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[4] = gBattleAnimArgs[1];
gTasks[taskId].data[5] = gBattleAnimArgs[2]; gTasks[taskId].data[5] = gBattleAnimArgs[2];
gTasks[taskId].func = AnimTask_ShakeMon_Step; gTasks[taskId].func = AnimTask_ShakeMon_Step;
AnimTask_ShakeMon_Step(taskId); gTasks[taskId].func(taskId);
} }
static void AnimTask_ShakeMon_Step(u8 taskId) static void AnimTask_ShakeMon_Step(u8 taskId)
@@ -156,17 +155,14 @@ static void AnimTask_ShakeMon_Step(u8 taskId)
void AnimTask_ShakeMon2(u8 taskId) void AnimTask_ShakeMon2(u8 taskId)
{ {
u8 spriteId; u8 spriteId;
bool8 destroy = FALSE; bool8 abort = FALSE;
u8 battlerId; u8 battlerId;
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT) if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
{ {
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == SPRITE_NONE) if (spriteId == SPRITE_NONE)
{ abort = TRUE;
DestroyAnimVisualTask(taskId);
return;
}
} }
else if (gBattleAnimArgs[0] != 8) else if (gBattleAnimArgs[0] != 8)
{ {
@@ -188,7 +184,7 @@ void AnimTask_ShakeMon2(u8 taskId)
} }
if (IsBattlerSpriteVisible(battlerId) == FALSE) if (IsBattlerSpriteVisible(battlerId) == FALSE)
destroy = TRUE; abort = TRUE;
spriteId = gBattlerSpriteIds[battlerId]; spriteId = gBattlerSpriteIds[battlerId];
} }
@@ -197,7 +193,7 @@ void AnimTask_ShakeMon2(u8 taskId)
spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
} }
if (destroy) if (abort)
{ {
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
return; return;
@@ -332,10 +328,8 @@ void AnimTask_ShakeAndSinkMon(u8 taskId)
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId) static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
{ {
s16 x; u8 spriteId = gTasks[taskId].data[0];
u8 spriteId; s16 x = gTasks[taskId].data[1];
spriteId = gTasks[taskId].data[0];
x = gTasks[taskId].data[1];
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++) if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
{ {
gTasks[taskId].data[8] = 0; gTasks[taskId].data[8] = 0;
@@ -365,11 +359,8 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
void AnimTask_TranslateMonElliptical(u8 taskId) void AnimTask_TranslateMonElliptical(u8 taskId)
{ {
u8 i; u8 i;
u8 spriteId; u8 wavePeriod = 1;
u8 wavePeriod; u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
wavePeriod = 1;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5) if (gBattleAnimArgs[4] > 5)
gBattleAnimArgs[4] = 5; gBattleAnimArgs[4] = 5;
@@ -742,7 +733,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId)
{ {
u8 spriteId = gTasks[taskId].data[0]; u8 spriteId = gTasks[taskId].data[0];
gSprites[spriteId].x2 += gTasks[taskId].data[1]; 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); DestroyAnimVisualTask(taskId);
return; return;
@@ -831,8 +822,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
// arg 4: sprite object mode // arg 4: sprite object mode
void AnimTask_ScaleMonAndRestore(u8 taskId) void AnimTask_ScaleMonAndRestore(u8 taskId)
{ {
u8 spriteId; u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]); PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[1] = gBattleAnimArgs[1];
@@ -893,7 +883,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
} }
else else
{ {
if (gBattleAnimArgs[2] == 0) if (gBattleAnimArgs[2] == ANIM_ATTACKER)
{ {
gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimAttacker); 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 // Rotates mon to side and back to original position. For Peck and when a held item activates
void AnimTask_RotateMonToSideAndRestore(u8 taskId) void AnimTask_RotateMonToSideAndRestore(u8 taskId)
{ {
u8 spriteId; u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[1] = 0; gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[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_1 55125
#define TAG_MOVE_EFFECT_MON_2 55126 #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, .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_1, },
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, }, { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
@@ -440,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite)
#define sAmplitudeX sAmplitude #define sAmplitudeX sAmplitude
#define sAmplitudeY data[4] #define sAmplitudeY data[4]
// TranslateSpriteInWavePattern // TranslateSpriteInLissajousCurve
#define sCirclePosX sCirclePos #define sCirclePosX sCirclePos
#define sCircleSpeedX sCircleSpeed #define sCircleSpeedX sCircleSpeed
#define sCirclePosY data[4] #define sCirclePosY data[4]
@@ -487,7 +487,7 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite)
// Unused // Unused
// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc. // 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) if (sprite->sDuration)
{ {
@@ -1508,13 +1508,13 @@ u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLef
return selectedPalettes; return selectedPalettes;
} }
// Presumably something commented here, just returns arg u8 GetSpritePalIdxByBattler(u8 battler)
u8 AnimDummyReturnArg(u8 battler)
{ {
return battler; return battler;
} }
static u8 GetBattlerAtPosition_(u8 position) // Unused
static u8 GetSpritePalIdxByPosition(u8 position)
{ {
return GetBattlerAtPosition(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 // arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite) void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{ {
bool8 v1; bool8 respectMonPicOffsets;
u8 coordType; u8 coordType;
if (!(gBattleAnimArgs[5] & 0xff00)) if (!(gBattleAnimArgs[5] & 0xff00))
v1 = TRUE; respectMonPicOffsets = TRUE;
else else
v1 = FALSE; respectMonPicOffsets = FALSE;
if (!(gBattleAnimArgs[5] & 0xff)) if (!(gBattleAnimArgs[5] & 0xff))
coordType = BATTLER_COORD_Y_PIC_OFFSET; coordType = BATTLER_COORD_Y_PIC_OFFSET;
else else
coordType = BATTLER_COORD_Y; coordType = BATTLER_COORD_Y;
InitSpritePosToAnimAttacker(sprite, v1); InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2]; 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 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm)
{ {
u8 spriteId; u8 spriteId;
u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]); u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag); u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[id].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL) if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL)
gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000); gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000);
@@ -2139,9 +2139,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer); FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
if (!isBackpic) 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 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()) if (IsContest())
{ {
+3 -5
View File
@@ -818,7 +818,7 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId)
{ {
for (i = 8; i < 13; i++) for (i = 8; i < 13; i++)
{ {
if (task->data[i] != 64) if (task->data[i] != MAX_SPRITES)
DestroySprite(&gSprites[task->data[i]]); DestroySprite(&gSprites[task->data[i]]);
} }
@@ -997,12 +997,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId)
scanlineParams.dmaDest = &REG_BG2HOFS; scanlineParams.dmaDest = &REG_BG2HOFS;
} }
i = task->data[14]; for (i = task->data[14]; i <= task->data[14] + 64; i++)
while (i <= task->data[14] + 64)
{ {
gScanlineEffectRegBuffers[0][i] = task->data[10]; gScanlineEffectRegBuffers[0][i] = task->data[10];
gScanlineEffectRegBuffers[1][i] = task->data[10]; gScanlineEffectRegBuffers[1][i] = task->data[10];
i++;
} }
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
@@ -1137,7 +1135,7 @@ static void AnimPsychoBoost(struct Sprite *sprite)
case 1: case 1:
if (sprite->affineAnimEnded) if (sprite->affineAnimEnded)
{ {
PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(-64)); PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
ChangeSpriteAffineAnim(sprite, 1); ChangeSpriteAffineAnim(sprite, 1);
sprite->data[0]++; sprite->data[0]++;
} }
+2 -2
View File
@@ -596,8 +596,8 @@ void AnimTask_Rollout(u8 taskId)
task->data[6] = 0; task->data[6] = 0;
task->data[7] = 0; task->data[7] = 0;
pan1 = BattleAnimAdjustPanning(-64); pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
pan2 = BattleAnimAdjustPanning(63); pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[13] = pan1; task->data[13] = pan1;
task->data[14] = (pan2 - pan1) / task->data[8]; 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].data[12] = r9;
gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step; gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step;
SoundTask_LoopSEAdjustPanning_Step(taskId); gTasks[taskId].func(taskId);
} }
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId) static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
@@ -385,7 +385,7 @@ void SoundTask_AdjustPanningVar(u8 taskId)
gTasks[taskId].data[11] = sourcePan; gTasks[taskId].data[11] = sourcePan;
gTasks[taskId].func = SoundTask_AdjustPanningVar_Step; gTasks[taskId].func = SoundTask_AdjustPanningVar_Step;
SoundTask_AdjustPanningVar_Step(taskId); gTasks[taskId].func(taskId);
} }
static void SoundTask_AdjustPanningVar_Step(u8 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]; healthBoxSpriteId = gHealthboxSpriteIds[battler];
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam; spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5]; spriteId2 = gSprites[healthBoxSpriteId].data[5];
*paletteId1 = AllocSpritePalette(0xD709); *paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1);
*paletteId2 = AllocSpritePalette(0xD70A); *paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2);
offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100; offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
offset2 = (gSprites[spriteId2].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; spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5]; spriteId2 = gSprites[healthBoxSpriteId].data[5];
FreeSpritePaletteByTag(0xD709); FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1);
FreeSpritePaletteByTag(0xD70A); FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2);
paletteId1 = IndexOfSpritePaletteTag(0xD6FF); paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL);
paletteId2 = IndexOfSpritePaletteTag(0xD704); paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL);
gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1; gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
gSprites[spriteId1].oam.paletteNum = paletteId1; gSprites[spriteId1].oam.paletteNum = paletteId1;
gSprites[spriteId2].oam.paletteNum = paletteId2; 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]) if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
{ {
gTasks[taskId].data[0] = 0; gTasks[taskId].data[0] = 0;
paletteNum = IndexOfSpritePaletteTag(0xD709); paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1);
colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2; colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
switch (gTasks[taskId].data[1]) 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++) for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
{ {
if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler)) if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler))
selectedPalettes |= 0x10000 << AnimDummyReturnArg(battler); selectedPalettes |= 0x10000 << GetSpritePalIdxByBattler(battler);
} }
StartBlendAnimSpriteColor(taskId, selectedPalettes); StartBlendAnimSpriteColor(taskId, selectedPalettes);
@@ -535,9 +535,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
gTasks[taskId].func = StatsChangeAnimation_Step3; gTasks[taskId].func = StatsChangeAnimation_Step3;
if (sAnimStatsChangeData->data[0] == 0) if (sAnimStatsChangeData->data[0] == 0)
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64)); PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
else else
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64)); PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
} }
static void StatsChangeAnimation_Step3(u8 taskId) 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 SpriteCB_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler); 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_POUND] = 1,
[MOVE_KARATE_CHOP] = 1, [MOVE_KARATE_CHOP] = 1,
[MOVE_DOUBLE_SLAP] = 1, [MOVE_DOUBLE_SLAP] = 1,
@@ -54,11 +70,9 @@ static const s8 sMindRatings[] =
[MOVE_VICE_GRIP] = 1, [MOVE_VICE_GRIP] = 1,
[MOVE_GUILLOTINE] = 1, [MOVE_GUILLOTINE] = 1,
[MOVE_RAZOR_WIND] = 1, [MOVE_RAZOR_WIND] = 1,
[MOVE_SWORDS_DANCE] = 0,
[MOVE_CUT] = 1, [MOVE_CUT] = 1,
[MOVE_GUST] = 1, [MOVE_GUST] = 1,
[MOVE_WING_ATTACK] = 1, [MOVE_WING_ATTACK] = 1,
[MOVE_WHIRLWIND] = 0,
[MOVE_FLY] = 1, [MOVE_FLY] = 1,
[MOVE_BIND] = 1, [MOVE_BIND] = 1,
[MOVE_SLAM] = 1, [MOVE_SLAM] = 1,
@@ -68,7 +82,6 @@ static const s8 sMindRatings[] =
[MOVE_MEGA_KICK] = 1, [MOVE_MEGA_KICK] = 1,
[MOVE_JUMP_KICK] = 1, [MOVE_JUMP_KICK] = 1,
[MOVE_ROLLING_KICK] = 1, [MOVE_ROLLING_KICK] = 1,
[MOVE_SAND_ATTACK] = 0,
[MOVE_HEADBUTT] = 1, [MOVE_HEADBUTT] = 1,
[MOVE_HORN_ATTACK] = 1, [MOVE_HORN_ATTACK] = 1,
[MOVE_FURY_ATTACK] = 1, [MOVE_FURY_ATTACK] = 1,
@@ -79,22 +92,14 @@ static const s8 sMindRatings[] =
[MOVE_TAKE_DOWN] = 1, [MOVE_TAKE_DOWN] = 1,
[MOVE_THRASH] = 1, [MOVE_THRASH] = 1,
[MOVE_DOUBLE_EDGE] = 1, [MOVE_DOUBLE_EDGE] = 1,
[MOVE_TAIL_WHIP] = 0,
[MOVE_POISON_STING] = 1, [MOVE_POISON_STING] = 1,
[MOVE_TWINEEDLE] = 1, [MOVE_TWINEEDLE] = 1,
[MOVE_PIN_MISSILE] = 1, [MOVE_PIN_MISSILE] = 1,
[MOVE_LEER] = 0,
[MOVE_BITE] = 1, [MOVE_BITE] = 1,
[MOVE_GROWL] = 0,
[MOVE_ROAR] = 0,
[MOVE_SING] = 0,
[MOVE_SUPERSONIC] = 0,
[MOVE_SONIC_BOOM] = 1, [MOVE_SONIC_BOOM] = 1,
[MOVE_DISABLE] = 0,
[MOVE_ACID] = 1, [MOVE_ACID] = 1,
[MOVE_EMBER] = 1, [MOVE_EMBER] = 1,
[MOVE_FLAMETHROWER] = 1, [MOVE_FLAMETHROWER] = 1,
[MOVE_MIST] = 0,
[MOVE_WATER_GUN] = 1, [MOVE_WATER_GUN] = 1,
[MOVE_HYDRO_PUMP] = 1, [MOVE_HYDRO_PUMP] = 1,
[MOVE_SURF] = 1, [MOVE_SURF] = 1,
@@ -108,58 +113,27 @@ static const s8 sMindRatings[] =
[MOVE_DRILL_PECK] = 1, [MOVE_DRILL_PECK] = 1,
[MOVE_SUBMISSION] = 1, [MOVE_SUBMISSION] = 1,
[MOVE_LOW_KICK] = 1, [MOVE_LOW_KICK] = 1,
[MOVE_COUNTER] = 0,
[MOVE_SEISMIC_TOSS] = 1, [MOVE_SEISMIC_TOSS] = 1,
[MOVE_STRENGTH] = 1, [MOVE_STRENGTH] = 1,
[MOVE_ABSORB] = 1, [MOVE_ABSORB] = 1,
[MOVE_MEGA_DRAIN] = 1, [MOVE_MEGA_DRAIN] = 1,
[MOVE_LEECH_SEED] = 0,
[MOVE_GROWTH] = 0,
[MOVE_RAZOR_LEAF] = 1, [MOVE_RAZOR_LEAF] = 1,
[MOVE_SOLAR_BEAM] = 1, [MOVE_SOLAR_BEAM] = 1,
[MOVE_POISON_POWDER] = 0,
[MOVE_STUN_SPORE] = 0,
[MOVE_SLEEP_POWDER] = 0,
[MOVE_PETAL_DANCE] = 1, [MOVE_PETAL_DANCE] = 1,
[MOVE_STRING_SHOT] = 0,
[MOVE_DRAGON_RAGE] = 1, [MOVE_DRAGON_RAGE] = 1,
[MOVE_FIRE_SPIN] = 1, [MOVE_FIRE_SPIN] = 1,
[MOVE_THUNDER_SHOCK] = 1, [MOVE_THUNDER_SHOCK] = 1,
[MOVE_THUNDERBOLT] = 1, [MOVE_THUNDERBOLT] = 1,
[MOVE_THUNDER_WAVE] = 0,
[MOVE_THUNDER] = 1, [MOVE_THUNDER] = 1,
[MOVE_ROCK_THROW] = 1, [MOVE_ROCK_THROW] = 1,
[MOVE_EARTHQUAKE] = 1, [MOVE_EARTHQUAKE] = 1,
[MOVE_FISSURE] = 1, [MOVE_FISSURE] = 1,
[MOVE_DIG] = 1, [MOVE_DIG] = 1,
[MOVE_TOXIC] = 0,
[MOVE_CONFUSION] = 1, [MOVE_CONFUSION] = 1,
[MOVE_PSYCHIC] = 1, [MOVE_PSYCHIC] = 1,
[MOVE_HYPNOSIS] = 0,
[MOVE_MEDITATE] = 0,
[MOVE_AGILITY] = 0,
[MOVE_QUICK_ATTACK] = 1, [MOVE_QUICK_ATTACK] = 1,
[MOVE_RAGE] = 1, [MOVE_RAGE] = 1,
[MOVE_TELEPORT] = 0,
[MOVE_NIGHT_SHADE] = 1, [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_SELF_DESTRUCT] = 1,
[MOVE_EGG_BOMB] = 1, [MOVE_EGG_BOMB] = 1,
[MOVE_LICK] = 1, [MOVE_LICK] = 1,
@@ -173,118 +147,67 @@ static const s8 sMindRatings[] =
[MOVE_SKULL_BASH] = 1, [MOVE_SKULL_BASH] = 1,
[MOVE_SPIKE_CANNON] = 1, [MOVE_SPIKE_CANNON] = 1,
[MOVE_CONSTRICT] = 1, [MOVE_CONSTRICT] = 1,
[MOVE_AMNESIA] = 0,
[MOVE_KINESIS] = 0,
[MOVE_SOFT_BOILED] = 0,
[MOVE_HI_JUMP_KICK] = 1, [MOVE_HI_JUMP_KICK] = 1,
[MOVE_GLARE] = 0,
[MOVE_DREAM_EATER] = 1, [MOVE_DREAM_EATER] = 1,
[MOVE_POISON_GAS] = 0,
[MOVE_BARRAGE] = 1, [MOVE_BARRAGE] = 1,
[MOVE_LEECH_LIFE] = 1, [MOVE_LEECH_LIFE] = 1,
[MOVE_LOVELY_KISS] = 0,
[MOVE_SKY_ATTACK] = 1, [MOVE_SKY_ATTACK] = 1,
[MOVE_TRANSFORM] = 0,
[MOVE_BUBBLE] = 1, [MOVE_BUBBLE] = 1,
[MOVE_DIZZY_PUNCH] = 1, [MOVE_DIZZY_PUNCH] = 1,
[MOVE_SPORE] = 0,
[MOVE_FLASH] = 0,
[MOVE_PSYWAVE] = 1, [MOVE_PSYWAVE] = 1,
[MOVE_SPLASH] = 0,
[MOVE_ACID_ARMOR] = 0,
[MOVE_CRABHAMMER] = 1, [MOVE_CRABHAMMER] = 1,
[MOVE_EXPLOSION] = 1, [MOVE_EXPLOSION] = 1,
[MOVE_FURY_SWIPES] = 1, [MOVE_FURY_SWIPES] = 1,
[MOVE_BONEMERANG] = 1, [MOVE_BONEMERANG] = 1,
[MOVE_REST] = 0,
[MOVE_ROCK_SLIDE] = 1, [MOVE_ROCK_SLIDE] = 1,
[MOVE_HYPER_FANG] = 1, [MOVE_HYPER_FANG] = 1,
[MOVE_SHARPEN] = 0,
[MOVE_CONVERSION] = 0,
[MOVE_TRI_ATTACK] = 1, [MOVE_TRI_ATTACK] = 1,
[MOVE_SUPER_FANG] = 1, [MOVE_SUPER_FANG] = 1,
[MOVE_SLASH] = 1, [MOVE_SLASH] = 1,
[MOVE_SUBSTITUTE] = 0,
[MOVE_STRUGGLE] = 1, [MOVE_STRUGGLE] = 1,
[MOVE_SKETCH] = 0,
[MOVE_TRIPLE_KICK] = 1, [MOVE_TRIPLE_KICK] = 1,
[MOVE_THIEF] = 1, [MOVE_THIEF] = 1,
[MOVE_SPIDER_WEB] = 0,
[MOVE_MIND_READER] = 0,
[MOVE_NIGHTMARE] = 0,
[MOVE_FLAME_WHEEL] = 1, [MOVE_FLAME_WHEEL] = 1,
[MOVE_SNORE] = 1, [MOVE_SNORE] = 1,
[MOVE_CURSE] = 0,
[MOVE_FLAIL] = 1, [MOVE_FLAIL] = 1,
[MOVE_CONVERSION_2] = 0,
[MOVE_AEROBLAST] = 1, [MOVE_AEROBLAST] = 1,
[MOVE_COTTON_SPORE] = 0,
[MOVE_REVERSAL] = 1, [MOVE_REVERSAL] = 1,
[MOVE_SPITE] = 0,
[MOVE_POWDER_SNOW] = 1, [MOVE_POWDER_SNOW] = 1,
[MOVE_PROTECT] = -1, [MOVE_PROTECT] = -1,
[MOVE_MACH_PUNCH] = 1, [MOVE_MACH_PUNCH] = 1,
[MOVE_SCARY_FACE] = 0,
[MOVE_FAINT_ATTACK] = 1, [MOVE_FAINT_ATTACK] = 1,
[MOVE_SWEET_KISS] = 0,
[MOVE_BELLY_DRUM] = 0,
[MOVE_SLUDGE_BOMB] = 1, [MOVE_SLUDGE_BOMB] = 1,
[MOVE_MUD_SLAP] = 1, [MOVE_MUD_SLAP] = 1,
[MOVE_OCTAZOOKA] = 1, [MOVE_OCTAZOOKA] = 1,
[MOVE_SPIKES] = 0,
[MOVE_ZAP_CANNON] = 1, [MOVE_ZAP_CANNON] = 1,
[MOVE_FORESIGHT] = 0,
[MOVE_DESTINY_BOND] = 0,
[MOVE_PERISH_SONG] = 0,
[MOVE_ICY_WIND] = 1, [MOVE_ICY_WIND] = 1,
[MOVE_DETECT] = -1, [MOVE_DETECT] = -1,
[MOVE_BONE_RUSH] = 1, [MOVE_BONE_RUSH] = 1,
[MOVE_LOCK_ON] = 0,
[MOVE_OUTRAGE] = 1, [MOVE_OUTRAGE] = 1,
[MOVE_SANDSTORM] = 0,
[MOVE_GIGA_DRAIN] = 1, [MOVE_GIGA_DRAIN] = 1,
[MOVE_ENDURE] = -1, [MOVE_ENDURE] = -1,
[MOVE_CHARM] = 0,
[MOVE_ROLLOUT] = 1, [MOVE_ROLLOUT] = 1,
[MOVE_FALSE_SWIPE] = 1, [MOVE_FALSE_SWIPE] = 1,
[MOVE_SWAGGER] = 0,
[MOVE_MILK_DRINK] = 0,
[MOVE_SPARK] = 1, [MOVE_SPARK] = 1,
[MOVE_FURY_CUTTER] = 1, [MOVE_FURY_CUTTER] = 1,
[MOVE_STEEL_WING] = 1, [MOVE_STEEL_WING] = 1,
[MOVE_MEAN_LOOK] = 0,
[MOVE_ATTRACT] = 0,
[MOVE_SLEEP_TALK] = 0,
[MOVE_HEAL_BELL] = 0,
[MOVE_RETURN] = 1, [MOVE_RETURN] = 1,
[MOVE_PRESENT] = 1, [MOVE_PRESENT] = 1,
[MOVE_FRUSTRATION] = 1, [MOVE_FRUSTRATION] = 1,
[MOVE_SAFEGUARD] = 0,
[MOVE_PAIN_SPLIT] = 0,
[MOVE_SACRED_FIRE] = 1, [MOVE_SACRED_FIRE] = 1,
[MOVE_MAGNITUDE] = 1, [MOVE_MAGNITUDE] = 1,
[MOVE_DYNAMIC_PUNCH] = 1, [MOVE_DYNAMIC_PUNCH] = 1,
[MOVE_MEGAHORN] = 1, [MOVE_MEGAHORN] = 1,
[MOVE_DRAGON_BREATH] = 1, [MOVE_DRAGON_BREATH] = 1,
[MOVE_BATON_PASS] = 0,
[MOVE_ENCORE] = 0,
[MOVE_PURSUIT] = 1, [MOVE_PURSUIT] = 1,
[MOVE_RAPID_SPIN] = 1, [MOVE_RAPID_SPIN] = 1,
[MOVE_SWEET_SCENT] = 0,
[MOVE_IRON_TAIL] = 1, [MOVE_IRON_TAIL] = 1,
[MOVE_METAL_CLAW] = 1, [MOVE_METAL_CLAW] = 1,
[MOVE_VITAL_THROW] = 1, [MOVE_VITAL_THROW] = 1,
[MOVE_MORNING_SUN] = 0,
[MOVE_SYNTHESIS] = 0,
[MOVE_MOONLIGHT] = 0,
[MOVE_HIDDEN_POWER] = 1, [MOVE_HIDDEN_POWER] = 1,
[MOVE_CROSS_CHOP] = 1, [MOVE_CROSS_CHOP] = 1,
[MOVE_TWISTER] = 1, [MOVE_TWISTER] = 1,
[MOVE_RAIN_DANCE] = 0,
[MOVE_SUNNY_DAY] = 0,
[MOVE_CRUNCH] = 1, [MOVE_CRUNCH] = 1,
[MOVE_MIRROR_COAT] = 0,
[MOVE_PSYCH_UP] = 0,
[MOVE_EXTREME_SPEED] = 1, [MOVE_EXTREME_SPEED] = 1,
[MOVE_ANCIENT_POWER] = 1, [MOVE_ANCIENT_POWER] = 1,
[MOVE_SHADOW_BALL] = 1, [MOVE_SHADOW_BALL] = 1,
@@ -294,56 +217,25 @@ static const s8 sMindRatings[] =
[MOVE_BEAT_UP] = 1, [MOVE_BEAT_UP] = 1,
[MOVE_FAKE_OUT] = -1, [MOVE_FAKE_OUT] = -1,
[MOVE_UPROAR] = 1, [MOVE_UPROAR] = 1,
[MOVE_STOCKPILE] = 0,
[MOVE_SPIT_UP] = 1, [MOVE_SPIT_UP] = 1,
[MOVE_SWALLOW] = 0,
[MOVE_HEAT_WAVE] = 1, [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_FACADE] = 1,
[MOVE_FOCUS_PUNCH] = 1, [MOVE_FOCUS_PUNCH] = 1,
[MOVE_SMELLING_SALT] = 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_SUPERPOWER] = 1,
[MOVE_MAGIC_COAT] = 0,
[MOVE_RECYCLE] = 0,
[MOVE_REVENGE] = 1, [MOVE_REVENGE] = 1,
[MOVE_BRICK_BREAK] = 1, [MOVE_BRICK_BREAK] = 1,
[MOVE_YAWN] = 0,
[MOVE_KNOCK_OFF] = 1, [MOVE_KNOCK_OFF] = 1,
[MOVE_ENDEAVOR] = 1, [MOVE_ENDEAVOR] = 1,
[MOVE_ERUPTION] = 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_SECRET_POWER] = 1,
[MOVE_DIVE] = 1, [MOVE_DIVE] = 1,
[MOVE_ARM_THRUST] = 1, [MOVE_ARM_THRUST] = 1,
[MOVE_CAMOUFLAGE] = 0,
[MOVE_TAIL_GLOW] = 0,
[MOVE_LUSTER_PURGE] = 1, [MOVE_LUSTER_PURGE] = 1,
[MOVE_MIST_BALL] = 1, [MOVE_MIST_BALL] = 1,
[MOVE_FEATHER_DANCE] = 0,
[MOVE_TEETER_DANCE] = 0,
[MOVE_BLAZE_KICK] = 1, [MOVE_BLAZE_KICK] = 1,
[MOVE_MUD_SPORT] = 0,
[MOVE_ICE_BALL] = 1, [MOVE_ICE_BALL] = 1,
[MOVE_NEEDLE_ARM] = 1, [MOVE_NEEDLE_ARM] = 1,
[MOVE_SLACK_OFF] = 0,
[MOVE_HYPER_VOICE] = 1, [MOVE_HYPER_VOICE] = 1,
[MOVE_POISON_FANG] = 1, [MOVE_POISON_FANG] = 1,
[MOVE_CRUSH_CLAW] = 1, [MOVE_CRUSH_CLAW] = 1,
@@ -352,17 +244,10 @@ static const s8 sMindRatings[] =
[MOVE_METEOR_MASH] = 1, [MOVE_METEOR_MASH] = 1,
[MOVE_ASTONISH] = 1, [MOVE_ASTONISH] = 1,
[MOVE_WEATHER_BALL] = 1, [MOVE_WEATHER_BALL] = 1,
[MOVE_AROMATHERAPY] = 0,
[MOVE_FAKE_TEARS] = 0,
[MOVE_AIR_CUTTER] = 1, [MOVE_AIR_CUTTER] = 1,
[MOVE_OVERHEAT] = 1, [MOVE_OVERHEAT] = 1,
[MOVE_ODOR_SLEUTH] = 0,
[MOVE_ROCK_TOMB] = 1, [MOVE_ROCK_TOMB] = 1,
[MOVE_SILVER_WIND] = 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_WATER_SPOUT] = 1,
[MOVE_SIGNAL_BEAM] = 1, [MOVE_SIGNAL_BEAM] = 1,
[MOVE_SHADOW_PUNCH] = 1, [MOVE_SHADOW_PUNCH] = 1,
@@ -374,22 +259,15 @@ static const s8 sMindRatings[] =
[MOVE_BULLET_SEED] = 1, [MOVE_BULLET_SEED] = 1,
[MOVE_AERIAL_ACE] = 1, [MOVE_AERIAL_ACE] = 1,
[MOVE_ICICLE_SPEAR] = 1, [MOVE_ICICLE_SPEAR] = 1,
[MOVE_IRON_DEFENSE] = 0,
[MOVE_BLOCK] = 0,
[MOVE_HOWL] = 0,
[MOVE_DRAGON_CLAW] = 1, [MOVE_DRAGON_CLAW] = 1,
[MOVE_FRENZY_PLANT] = 1, [MOVE_FRENZY_PLANT] = 1,
[MOVE_BULK_UP] = 0,
[MOVE_BOUNCE] = 1, [MOVE_BOUNCE] = 1,
[MOVE_MUD_SHOT] = 1, [MOVE_MUD_SHOT] = 1,
[MOVE_POISON_TAIL] = 1, [MOVE_POISON_TAIL] = 1,
[MOVE_COVET] = 1, [MOVE_COVET] = 1,
[MOVE_VOLT_TACKLE] = 1, [MOVE_VOLT_TACKLE] = 1,
[MOVE_MAGICAL_LEAF] = 1, [MOVE_MAGICAL_LEAF] = 1,
[MOVE_WATER_SPORT] = 0,
[MOVE_CALM_MIND] = 0,
[MOVE_LEAF_BLADE] = 1, [MOVE_LEAF_BLADE] = 1,
[MOVE_DRAGON_DANCE] = 0,
[MOVE_ROCK_BLAST] = 1, [MOVE_ROCK_BLAST] = 1,
[MOVE_SHOCK_WAVE] = 1, [MOVE_SHOCK_WAVE] = 1,
[MOVE_WATER_PULSE] = 1, [MOVE_WATER_PULSE] = 1,
@@ -397,9 +275,7 @@ static const s8 sMindRatings[] =
[MOVE_PSYCHO_BOOST] = 1, [MOVE_PSYCHO_BOOST] = 1,
}; };
#define TAG_JUDGEMENT_ICON 1000 static const struct OamData sOam_JudgementIcon =
static const struct OamData sJudgementIconOamData =
{ {
.y = 0, .y = 0,
.affineMode = ST_OAM_AFFINE_OFF, .affineMode = ST_OAM_AFFINE_OFF,
@@ -416,44 +292,44 @@ static const struct OamData sJudgementIconOamData =
.affineParam = 0 .affineParam = 0
}; };
static const union AnimCmd sJudgementIconAnimCmd0[] = static const union AnimCmd sAnim_JudgementIcon_X[] =
{ {
ANIMCMD_FRAME(0, 1), ANIMCMD_FRAME(0, 1),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sJudgementIconAnimCmd1[] = static const union AnimCmd sAnim_JudgementIcon_Triangle[] =
{ {
ANIMCMD_FRAME(4, 1), ANIMCMD_FRAME(4, 1),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sJudgementIconAnimCmd2[] = static const union AnimCmd sAnim_JudgementIcon_Circle[] =
{ {
ANIMCMD_FRAME(8, 1), ANIMCMD_FRAME(8, 1),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sJudgementIconAnimCmd3[] = static const union AnimCmd sAnim_JudgementIcon_Line[] =
{ {
ANIMCMD_FRAME(12, 1), ANIMCMD_FRAME(12, 1),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd *const sJudgementIconAnimCmds[] = static const union AnimCmd *const sAnims_JudgementIcon[] =
{ {
sJudgementIconAnimCmd0, [ANIM_ICON_X] = sAnim_JudgementIcon_X,
sJudgementIconAnimCmd1, [ANIM_ICON_TRIANGLE] = sAnim_JudgementIcon_Triangle,
sJudgementIconAnimCmd2, [ANIM_ICON_CIRCLE] = sAnim_JudgementIcon_Circle,
sJudgementIconAnimCmd3 [ANIM_ICON_LINE] = sAnim_JudgementIcon_Line,
}; };
static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon = static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon =
{ {
.tileTag = TAG_JUDGEMENT_ICON, .tileTag = TAG_JUDGEMENT_ICON,
.paletteTag = TAG_NONE, .paletteTag = TAG_NONE,
.oam = &sJudgementIconOamData, .oam = &sOam_JudgementIcon,
.anims = sJudgementIconAnimCmds, .anims = sAnims_JudgementIcon,
.images = NULL, .images = NULL,
.affineAnims = gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_JudgmentIcon, .callback = SpriteCB_JudgmentIcon,
@@ -507,12 +383,12 @@ void CallBattleArenaFunction(void)
u8 BattleArena_ShowJudgmentWindow(u8 *state) u8 BattleArena_ShowJudgmentWindow(u8 *state)
{ {
int i; int i;
u8 ret = 0; u8 result = ARENA_RESULT_RUNNING;
switch (*state) switch (*state)
{ {
case 0: case 0:
BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK); 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); LoadCompressedSpriteSheet(sBattleArenaJudgementSymbolsSpriteSheet);
LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20); LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20);
gBattle_WIN0H = 0xFF; gBattle_WIN0H = 0xFF;
@@ -549,13 +425,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
case 3: case 3:
if (!IsDma3ManagerBusyWithBgCopy()) 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++) for (i = 0; i < 8; i++)
{ {
u8 spriteId = CreateSprite(&sSpriteTemplate_JudgmentIcon, 64 + i * 16, 84, 0); 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)++; (*state)++;
} }
break; break;
@@ -566,7 +444,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; result = ARENA_RESULT_STEP_DONE;
break; break;
case 5: case 5:
PlaySE(SE_ARENA_TIMEUP1); PlaySE(SE_ARENA_TIMEUP1);
@@ -575,7 +453,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; result = ARENA_RESULT_STEP_DONE;
break; break;
case 6: case 6:
PlaySE(SE_ARENA_TIMEUP1); PlaySE(SE_ARENA_TIMEUP1);
@@ -584,49 +462,50 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; result = ARENA_RESULT_STEP_DONE;
break; break;
case 7: case 7:
PlaySE(SE_ARENA_TIMEUP2); PlaySE(SE_ARENA_TIMEUP2);
if (gBattleTextBuff1[0] > gBattleTextBuff2[0]) if (gBattleTextBuff1[0] > gBattleTextBuff2[0])
{ {
ret = 2; result = ARENA_RESULT_PLAYER_WON;
gBattleScripting.battler = 0; gBattleScripting.battler = 0;
} }
else if (gBattleTextBuff1[0] < gBattleTextBuff2[0]) else if (gBattleTextBuff1[0] < gBattleTextBuff2[0])
{ {
ret = 3; result = ARENA_RESULT_PLAYER_LOST;
gBattleScripting.battler = 1; gBattleScripting.battler = 1;
} }
else else
{ {
ret = 4; result = ARENA_RESULT_TIE;
} }
(*state)++; (*state)++;
break; 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)++; (*state)++;
break; break;
case 9: case JUDGEMENT_STATE_FINISHED + 1:
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);
HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR); HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR);
CopyBgTilemapBufferToVram(0); CopyBgTilemapBufferToVram(0);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256); m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256);
BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK); BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK);
(*state)++; (*state)++;
break; break;
case 10: case JUDGEMENT_STATE_FINISHED + 2:
if (!gPaletteFade.active) 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); FreeSpriteTilesByTag(TAG_JUDGEMENT_ICON);
ret = 1; result = ARENA_RESULT_STEP_DONE;
(*state)++; (*state)++;
} }
break; break;
} }
return ret; return result;
} }
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler) 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) if (pointsPlayer > pointsOpponent)
{ {
animNum = 2; animNum = ANIM_ICON_CIRCLE;
// +2 to score total for winning
if (battler != 0) if (battler != 0)
gBattleTextBuff2[0] += 2; gBattleTextBuff2[0] += 2;
else else
@@ -664,7 +544,8 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
} }
else if (pointsPlayer == pointsOpponent) else if (pointsPlayer == pointsOpponent)
{ {
animNum = 1; animNum = ANIM_ICON_TRIANGLE;
// +1 to score total for a tie
if (battler != 0) if (battler != 0)
gBattleTextBuff2[0] += 1; gBattleTextBuff2[0] += 1;
else else
@@ -672,7 +553,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
} }
else else
{ {
animNum = 0; animNum = ANIM_ICON_X;
} }
pointsPlayer = CreateSprite(&sSpriteTemplate_JudgmentIcon, x, y, 0); 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) static void SpriteCB_JudgmentIcon(struct Sprite *sprite)
{ {
if (gBattleCommunication[0] > 8) if (gBattleCommunication[0] > JUDGEMENT_STATE_FINISHED)
DestroySprite(sprite); DestroySprite(sprite);
} }
@@ -701,8 +582,7 @@ void BattleArena_InitPoints(void)
void BattleArena_AddMindPoints(u8 battler) void BattleArena_AddMindPoints(u8 battler)
{ {
s8 *mindPoints = gBattleStruct->arenaMindPoints; gBattleStruct->arenaMindPoints[battler] += sMindRatings[gCurrentMove];
mindPoints[battler] += sMindRatings[gCurrentMove];
} }
void BattleArena_AddSkillPoints(u8 battler) void BattleArena_AddSkillPoints(u8 battler)
+5 -2
View File
@@ -6368,7 +6368,10 @@ static void Cmd_various(void)
break; break;
case VARIOUS_ARENA_JUDGMENT_WINDOW: case VARIOUS_ARENA_JUDGMENT_WINDOW:
i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]); 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; return;
gBattleCommunication[1] = i; gBattleCommunication[1] = i;
@@ -8517,7 +8520,7 @@ static void Cmd_friendshiptodamagecalculation(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN) if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25; gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25;
else // EFFECT_FRUSTRATION else // EFFECT_FRUSTRATION
gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25; gDynamicBasePower = 10 * (MAX_FRIENDSHIP - gBattleMons[gBattlerAttacker].friendship) / 25;
gBattlescriptCurrInstr++; gBattlescriptCurrInstr++;
} }
@@ -253,9 +253,9 @@ u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *, struct Spr
u8 MovementAction_Levitate_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_Levitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitate_Step0(struct ObjectEvent *, struct Sprite *); u8 MovementAction_StopLevitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitateAtTop_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_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_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FlyUp_Step1(struct ObjectEvent *, struct Sprite *); u8 MovementAction_FlyUp_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Fly_Finish(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_WalkSlowDiagonalUpRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct ObjectEvent *, struct Sprite *); u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_Levitate[])(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_UP_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalUpRight,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkSlowDiagonalDownLeft, [MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkSlowDiagonalDownLeft,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalDownRight, [MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalDownRight,
[MOVEMENT_ACTION_STORE_AND_LOCK_ANIM] = gMovementActionFuncs_StoreAndLockAnim, [MOVEMENT_ACTION_LOCK_ANIM] = gMovementActionFuncs_LockAnim,
[MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM] = gMovementActionFuncs_FreeAndUnlockAnim, [MOVEMENT_ACTION_UNLOCK_ANIM] = gMovementActionFuncs_UnlockAnim,
[MOVEMENT_ACTION_WALK_LEFT_AFFINE] = gMovementActionFuncs_WalkLeftAffine, [MOVEMENT_ACTION_WALK_LEFT_AFFINE] = gMovementActionFuncs_WalkLeftAffine,
[MOVEMENT_ACTION_WALK_RIGHT_AFFINE] = gMovementActionFuncs_WalkRightAffine, [MOVEMENT_ACTION_WALK_RIGHT_AFFINE] = gMovementActionFuncs_WalkRightAffine,
[MOVEMENT_ACTION_LEVITATE] = gMovementActionFuncs_Levitate, [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[] = 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[] = static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] =
{ {
[PARTY_BOX_LEFT_COLUMN] = [PARTY_BOX_LEFT_COLUMN] =
@@ -663,51 +651,6 @@ static const u16 sUnusedData[] =
0x0121, 0x013b, 0x000f, 0x0013, 0x0039, 0x0046, 0x0094, 0x00f9, 0x007f, 0x0123, 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 struct
{ {
const u8 *text; 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_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1};
static const u8 sPartyMenuAction_TakeItemTossCancel[] = {MENU_TAKE_ITEM, MENU_TOSS, 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[] = static const u8 *const sPartyMenuActions[] =
{ {
[ACTIONS_NONE] = NULL, [ACTIONS_NONE] = NULL,
@@ -818,17 +742,32 @@ static const u8 sPartyMenuActionCounts[] =
[ACTIONS_TAKEITEM_TOSS] = ARRAY_COUNT(sPartyMenuAction_TakeItemTossCancel) [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, [FIELD_MOVE_CUT] = MOVE_CUT,
MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_TERMINATOR [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 struct
{ {
bool8 (*fieldMoveFunc)(void); bool8 (*fieldMoveFunc)(void);
u8 msgId; u8 msgId;
} static const sFieldMoveCursorCallbacks[] = } static const sFieldMoveCursorCallbacks[FIELD_MOVES_COUNT] =
{ {
[FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, PARTY_MSG_NOTHING_TO_CUT}, [FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, PARTY_MSG_NOTHING_TO_CUT},
[FIELD_MOVE_FLASH] = {SetUpFieldMove_Flash, PARTY_MSG_CANT_USE_HERE}, [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 = 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 = static const struct SpritePalette sSpritePalette_HeldItem =
{ {
sHeldItemPalette, 0xd750 .data = sHeldItemPalette, .tag = TAG_HELD_ITEM
}; };
static const struct SpriteTemplate sSpriteTemplate_HeldItem = static const struct SpriteTemplate sSpriteTemplate_HeldItem =
{ {
0xd750, .tileTag = TAG_HELD_ITEM,
0xd750, .paletteTag = TAG_HELD_ITEM,
&sOamData_HeldItem, .oam = &sOamData_HeldItem,
sSpriteAnimTable_HeldItem, .anims = sSpriteAnimTable_HeldItem,
NULL, .images = NULL,
gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
SpriteCallbackDummy .callback = SpriteCallbackDummy
}; };
static const struct OamData sOamData_MenuPokeball = 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); FieldEffectStart(FLDEFF_RIPPLE);
} }
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *) = { u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_StoreAndLockAnim_Step0, MovementAction_LockAnim_Step0,
MovementAction_Finish, MovementAction_Finish,
}; };
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *) = { u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_FreeAndUnlockAnim_Step0, MovementAction_UnlockAnim_Step0,
MovementAction_Finish, MovementAction_Finish,
}; };
@@ -8768,36 +8768,36 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
MovementAction_Fly_Finish, 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; bool32 ableToStore = FALSE;
if (sLockedAnimObjectEvents == NULL) if (sLockedAnimObjectEvents == NULL)
{ {
sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents)); sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId; sLockedAnimObjectEvents->localIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->count = 1; sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE; ableToStore = TRUE;
} }
else else
{ {
u8 i; u8 i;
u8 firstFreeSlot; u8 firstFreeSlot = OBJECT_EVENTS_COUNT;
bool32 found; bool32 found = FALSE;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++) 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; firstFreeSlot = i;
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId) if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
{ {
found = TRUE; found = TRUE;
break; break;
} }
} }
if (!found && firstFreeSlot != 16) if (!found && firstFreeSlot != OBJECT_EVENTS_COUNT)
{ {
sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId; sLockedAnimObjectEvents->localIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->count++; sLockedAnimObjectEvents->count++;
ableToStore = TRUE; ableToStore = TRUE;
} }
@@ -8813,7 +8813,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
return TRUE; return TRUE;
} }
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite) u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{ {
bool32 ableToStore; bool32 ableToStore;
u8 index; u8 index;
@@ -8823,9 +8823,9 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
{ {
ableToStore = FALSE; ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent); index = FindLockedObjectEventIndex(objectEvent);
if (index != 16) if (index != OBJECT_EVENTS_COUNT)
{ {
sLockedAnimObjectEvents->objectEventIds[index] = 0; sLockedAnimObjectEvents->localIds[index] = 0;
sLockedAnimObjectEvents->count--; sLockedAnimObjectEvents->count--;
ableToStore = TRUE; ableToStore = TRUE;
} }
@@ -8848,7 +8848,7 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++) for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{ {
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId) if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
return i; return i;
} }
return OBJECT_EVENTS_COUNT; 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++) 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, 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(); DrawWholeMapView();
} }
@@ -941,19 +941,19 @@ u8 GetLeadMonFriendshipScore(void)
{ {
struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()]; struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()];
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP)
return 6; return FRIENDSHIP_MAX;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200)
return 5; return FRIENDSHIP_200_TO_254;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150)
return 4; return FRIENDSHIP_150_TO_199;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100)
return 3; return FRIENDSHIP_100_TO_149;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50)
return 2; return FRIENDSHIP_50_TO_99;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1) if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1)
return 1; return FRIENDSHIP_1_TO_49;
return 0; return FRIENDSHIP_NONE;
} }
static void CB2_FieldShowRegionMap(void) static void CB2_FieldShowRegionMap(void)
+1 -2
View File
@@ -2520,8 +2520,7 @@ static u16 KeyInterCB_Idle(u32 key)
return LINK_KEY_CODE_EMPTY; return LINK_KEY_CODE_EMPTY;
} }
// Ignore the player's inputs as long as there is an event script // Ignore the player's inputs as long as there is an event script being executed.
// in ScriptContext2.
static u16 KeyInterCB_DeferToEventScript(u32 key) static u16 KeyInterCB_DeferToEventScript(u32 key)
{ {
u16 retVal; u16 retVal;
+81 -7
View File
@@ -73,6 +73,80 @@
#include "constants/rgb.h" #include "constants/rgb.h"
#include "constants/songs.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_SELECTED (1 << 0)
#define PARTY_PAL_FAINTED (1 << 1) #define PARTY_PAL_FAINTED (1 << 1)
#define PARTY_PAL_TO_SWITCH (1 << 2) #define PARTY_PAL_TO_SWITCH (1 << 2)
@@ -1186,13 +1260,13 @@ void Task_HandleChooseMonInput(u8 taskId)
switch (PartyMenuButtonHandler(slotPtr)) switch (PartyMenuButtonHandler(slotPtr))
{ {
case 1: // Selected mon case A_BUTTON: // Selected mon
HandleChooseMonSelection(taskId, slotPtr); HandleChooseMonSelection(taskId, slotPtr);
break; break;
case 2: // Selected Cancel case B_BUTTON: // Selected Cancel / pressed B
HandleChooseMonCancel(taskId, slotPtr); HandleChooseMonCancel(taskId, slotPtr);
break; break;
case 8: // Start button case START_BUTTON:
if (sPartyMenuInternal->chooseHalf) if (sPartyMenuInternal->chooseHalf)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
@@ -1409,7 +1483,7 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
} }
if (JOY_NEW(START_BUTTON)) if (JOY_NEW(START_BUTTON))
return 8; return START_BUTTON;
if (movementDir) if (movementDir)
{ {
@@ -1418,8 +1492,8 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
} }
// Pressed Cancel // Pressed Cancel
if ((JOY_NEW(A_BUTTON)) && *slotPtr == PARTY_SIZE + 1) if (JOY_NEW(A_BUTTON) && *slotPtr == PARTY_SIZE + 1)
return 2; return B_BUTTON;
return JOY_NEW(A_BUTTON | 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 // Add field moves to action list
for (i = 0; i < MAX_MON_MOVES; i++) 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]) 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[] = static const u8 sMovement_ShiftRight[] =
{ {
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM, MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_RIGHT, MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM, MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END MOVEMENT_ACTION_STEP_END
}; };
static const u8 sMovement_ShiftDown[] = static const u8 sMovement_ShiftDown[] =
{ {
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM, MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_DOWN, MOVEMENT_ACTION_WALK_NORMAL_DOWN,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM, MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END MOVEMENT_ACTION_STEP_END
}; };
static const u8 sMovement_ShiftLeft[] = static const u8 sMovement_ShiftLeft[] =
{ {
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM, MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_LEFT, MOVEMENT_ACTION_WALK_NORMAL_LEFT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM, MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END MOVEMENT_ACTION_STEP_END
}; };
static const u8 sMovement_ShiftUp[] = static const u8 sMovement_ShiftUp[] =
{ {
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM, MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_UP, MOVEMENT_ACTION_WALK_NORMAL_UP,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM, MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END MOVEMENT_ACTION_STEP_END
}; };