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