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

This commit is contained in:
Eduardo Quezada
2022-08-27 00:56:00 -04:00
60 changed files with 1577 additions and 1659 deletions
+2 -2
View File
@@ -152,8 +152,8 @@
create_movement_action walk_slow_diag_northeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT
create_movement_action walk_slow_diag_southwest, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT
create_movement_action walk_slow_diag_southeast, MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT
create_movement_action store_lock_anim, MOVEMENT_ACTION_STORE_AND_LOCK_ANIM
create_movement_action free_unlock_anim, MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM
create_movement_action lock_anim, MOVEMENT_ACTION_LOCK_ANIM
create_movement_action unlock_anim, MOVEMENT_ACTION_UNLOCK_ANIM
create_movement_action walk_left_affine, MOVEMENT_ACTION_WALK_LEFT_AFFINE
create_movement_action walk_right_affine, MOVEMENT_ACTION_WALK_RIGHT_AFFINE
create_movement_action levitate, MOVEMENT_ACTION_LEVITATE
+505 -505
View File
File diff suppressed because it is too large Load Diff
+10 -10
View File
@@ -798,14 +798,14 @@ Move_DOUBLE_EDGE:
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
@@ -2441,7 +2441,7 @@ Move_HORN_ATTACK:
Move_FURY_ATTACK:
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HORN_HIT
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, 0, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2
choosetwoturnanim FuryAttackRight, FuryAttackLeft
FuryAttackContinue:
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1
@@ -2590,7 +2590,7 @@ Move_LOW_KICK:
createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0
delay 4
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, 1, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4
@@ -2835,7 +2835,7 @@ SkullBashSetUpHeadDown:
createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2
waitforvisualfinish
createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1
waitforvisualfinish
@@ -3958,7 +3958,7 @@ Move_MIST_BALL:
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16
delay 0
playsewithpan SE_M_HAZE, 0
createvisualtask AnimTask_LoadMistTiles, 5
createvisualtask AnimTask_MistBallFog, 5
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE
delay 8
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0
@@ -8570,14 +8570,14 @@ Move_ARM_THRUST:
loadspritegfx ANIM_TAG_IMPACT
splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0
delay 6
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3
delay 4
playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET
createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3
waitforvisualfinish
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 1
playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
choosetwoturnanim ArmThrustRight, ArmThrustLeft
ArmThrustContinue:
+5 -3
View File
@@ -1,6 +1,7 @@
#include "constants/global.h"
#include "constants/battle.h"
#include "constants/pokemon.h"
#include "constants/battle_arena.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_anim.h"
#include "constants/battle_string_ids.h"
@@ -4482,7 +4483,7 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_THATS_IT
arenawaitmessage B_MSG_REF_THATS_IT
pause B_WAIT_TIME_LONG
setbyte gBattleCommunication, 0
setbyte gBattleCommunication, 0 @ Reset state for arenajudgmentwindow
arenajudgmentwindow
pause B_WAIT_TIME_LONG
arenajudgmentwindow
@@ -4495,8 +4496,9 @@ BattleScript_ArenaDoJudgment::
arenajudgmentstring B_MSG_REF_JUDGE_BODY
arenawaitmessage B_MSG_REF_JUDGE_BODY
arenajudgmentwindow
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 3, BattleScript_ArenaJudgmentPlayerLoses
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 4, BattleScript_ArenaJudgmentDraw
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_PLAYER_LOST, BattleScript_ArenaJudgmentPlayerLoses
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, ARENA_RESULT_TIE, BattleScript_ArenaJudgmentDraw
@ ARENA_RESULT_PLAYER_WON
arenajudgmentstring B_MSG_REF_PLAYER_WON
arenawaitmessage B_MSG_REF_PLAYER_WON
arenajudgmentwindow
+18 -2
View File
@@ -435,11 +435,15 @@ AI_CGM_BetterWhenAudienceExcited:
AI_CGM_BetterWhenAudienceExcited_1stUp:
@ BUG: Should be if_appeal_num_eq 0
@ 1st up on 1st appeal excitement will always be 0
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_Not1stAppeal
.ifdef BUGFIX
if_appeal_num_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
.else
if_appeal_num_not_eq 0, AI_CGM_BetterWhenAudienceExcited_1stAppeal
.endif
if_excitement_eq 4, AI_CGM_BetterWhenAudienceExcited_1AwayFromMax
if_excitement_eq 3, AI_CGM_BetterWhenAudienceExcited_2AwayFromMax
end
AI_CGM_BetterWhenAudienceExcited_Not1stAppeal:
AI_CGM_BetterWhenAudienceExcited_1stAppeal:
if_random_less_than 125, AI_CGM_End
score -15
end
@@ -542,7 +546,11 @@ AI_CGM_TargetMonWithJudgesAttention:
end
AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
if_cannot_participate MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.ifdef BUGFIX
if_not_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.else
if_used_combo_starter MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
score +2
if_not_completed_combo MON_1, AI_CGM_TargetMonWithJudgesAttention_CheckMon2
@@ -551,7 +559,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon1:
AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
if_user_order_eq MON_2, AI_CGM_End
if_cannot_participate MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.ifdef BUGFIX
if_not_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.else
if_used_combo_starter MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
.endif
if_random_less_than 125, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
score +2
if_not_completed_combo MON_2, AI_CGM_TargetMonWithJudgesAttention_CheckMon3
@@ -560,7 +572,11 @@ AI_CGM_TargetMonWithJudgesAttention_CheckMon2:
AI_CGM_TargetMonWithJudgesAttention_CheckMon3:
if_user_order_eq MON_3, AI_CGM_End
if_cannot_participate MON_3, AI_CGM_End
.ifdef BUGFIX
if_not_used_combo_starter MON_3, AI_CGM_End
.else
if_used_combo_starter MON_3, AI_CGM_End
.endif
if_random_less_than 125, AI_CGM_End
score +2
if_not_completed_combo MON_3, AI_CGM_End
@@ -472,8 +472,8 @@ BattleFrontier_BattlePalaceLobby_Text_FeatWillBeRecorded:
@ Unused
BattleFrontier_BattlePalaceLobby_Text_BattlePointsFor7WinStreak:
.string "For the feat of your 7-win streak,\n"
.string "we present you with Battle Point(s).$"
.string "For the feat of your 7-win streak,\n"
.string "we present you with Battle Point(s).$"
BattleFrontier_BattlePalaceLobby_Text_NoSpaceForPrize:
.string "You seem to have no space for\n"
@@ -33,8 +33,8 @@ EverGrandeCity_ChampionsRoom_EventScript_EnterRoom::
waitmovement 0
setvar VAR_TEMP_1, 1
goto EverGrandeCity_ChampionsRoom_EventScript_Wallace
releaseall
end
releaseall
end
EverGrandeCity_ChampionsRoom_Movement_PlayerApproachWallace:
walk_up
@@ -19,7 +19,7 @@ FortreeCity_DecorationShop_EventScript_ClerkDesks::
release
end
.align 2
.align 2
FortreeCity_DecorationShop_PokemartDecor_Desks:
.2byte DECOR_SMALL_DESK
.2byte DECOR_POKEMON_DESK
+1 -1
View File
@@ -158,7 +158,7 @@
"y": 9,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "OldaleTown_EventScript_CitySign"
"script": "OldaleTown_EventScript_TownSign"
},
{
"type": "sign",
+3 -3
View File
@@ -29,8 +29,8 @@ OldaleTown_EventScript_MoveMartEmployee::
setobjectmovementtype LOCALID_MART_EMPLOYEE, MOVEMENT_TYPE_FACE_DOWN
return
OldaleTown_EventScript_CitySign::
msgbox OldaleTown_Text_CitySign, MSGBOX_SIGN
OldaleTown_EventScript_TownSign::
msgbox OldaleTown_Text_TownSign, MSGBOX_SIGN
end
OldaleTown_EventScript_Girl::
@@ -395,7 +395,7 @@ OldaleTown_Text_BrendanLetsGoBack:
.string "LAB now.\l"
.string "{PLAYER}, you should hustle back, too.$"
OldaleTown_Text_CitySign:
OldaleTown_Text_TownSign:
.string "OLDALE TOWN\n"
.string "“Where things start off scarce.”$"
+2 -2
View File
@@ -11,9 +11,9 @@ PacifidlogTown_House2_EventScript_FanClubYoungerBrother::
call_if_unset FLAG_MET_FANCLUB_YOUNGER_BROTHER, PacifidlogTown_House2_EventScript_FirstMonAssessment
setflag FLAG_MET_FANCLUB_YOUNGER_BROTHER
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 4, PacifidlogTown_House2_EventScript_GiveReturn
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, PacifidlogTown_House2_EventScript_GiveReturn
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 2, PacifidlogTown_House2_EventScript_PutInEffort
goto_if_ge VAR_RESULT, FRIENDSHIP_50_TO_99, PacifidlogTown_House2_EventScript_PutInEffort
goto PacifidlogTown_House2_EventScript_GiveFrustration
end
+1 -1
View File
@@ -144,7 +144,7 @@ Route111_EventScript_RootFossilDisappeared::
@ Unused
Route111_Movement_PlayerFall::
store_lock_anim
lock_anim
walk_fast_down
walk_fast_down
walk_fast_down
@@ -192,7 +192,7 @@ SlateportCity_PokemonFanClub_EventScript_SootheBellWoman::
goto_if_set FLAG_RECEIVED_SOOTHE_BELL, SlateportCity_PokemonFanClub_EventScript_ReceivedSootheBell
msgbox SlateportCity_PokemonFanClub_Text_ShowMePokemonThatLoveYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore
goto_if_ge VAR_RESULT, 4, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
goto_if_ge VAR_RESULT, FRIENDSHIP_150_TO_199, SlateportCity_PokemonFanClub_EventScript_GiveSootheBell
release
end
@@ -7,13 +7,13 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_FriendshipRater::
msgbox VerdanturfTown_FriendshipRatersHouse_Text_SeeHowMuchPokemonLikesYou, MSGBOX_DEFAULT
specialvar VAR_RESULT, GetLeadMonFriendshipScore
switch VAR_RESULT
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
case 2, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
case 3, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
case 4, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
case 5, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
case 6, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
case FRIENDSHIP_NONE, VerdanturfTown_FriendshipRatersHouse_EventScript_DetestsYou
case FRIENDSHIP_1_TO_49, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryWary
case FRIENDSHIP_50_TO_99, VerdanturfTown_FriendshipRatersHouse_EventScript_NotUsedToYou
case FRIENDSHIP_100_TO_149, VerdanturfTown_FriendshipRatersHouse_EventScript_GettingUsedToYou
case FRIENDSHIP_150_TO_199, VerdanturfTown_FriendshipRatersHouse_EventScript_LikesYouQuiteALot
case FRIENDSHIP_200_TO_254, VerdanturfTown_FriendshipRatersHouse_EventScript_VeryHappy
case FRIENDSHIP_MAX, VerdanturfTown_FriendshipRatersHouse_EventScript_AdoresYou
release
end
+1 -1
View File
@@ -315,7 +315,7 @@ MauvilleCity_PokemonCenter_1F_Text_TrendsStartedStory::
.string "the HOENN region!$"
MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedTitle::
.string "The BERRY-Planting TRAINER$"
.string "The BERRY-Planting TRAINER$"
MauvilleCity_PokemonCenter_1F_Text_BerriesPlantedAction::
.string "Planted BERRIES$"
+52 -52
View File
@@ -1,71 +1,71 @@
EventTicket_Text_OldSeaMapTooFar:
.string "What's up, youngster?\p"
.string "What, it's you who's supposed to have\n"
.string "a tattered old map?\p"
.string "Let's have a look.\n"
.string "… … … … … …\p"
.string "Boy, this is quite a ways away.\n"
.string "I'm afraid I can't help you…$"
.string "What's up, youngster?\p"
.string "What, it's you who's supposed to have\n"
.string "a tattered old map?\p"
.string "Let's have a look.\n"
.string "… … … … … …\p"
.string "Boy, this is quite a ways away.\n"
.string "I'm afraid I can't help you…$"
EventTicket_Text_BrineyHoldOnASecond:
.string "BRINEY: Hold on a second!\p"
.string "What's the idea of turning down\n"
.string "someone that I owe so much to?$"
.string "BRINEY: Hold on a second!\p"
.string "What's the idea of turning down\n"
.string "someone that I owe so much to?$"
EventTicket_Text_BrineyLetsSail:
.string "{PLAYER}{KUN}, I'm terribly sorry.\p"
.string "You came to me seeking my help,\n"
.string "and we almost turned you away.\p"
.string "Well, let me make things right.\p"
.string "We'll sail right away, of course!\p"
.string "Let's find this island on\n"
.string "this OLD SEA MAP!$"
.string "{PLAYER}{KUN}, I'm terribly sorry.\p"
.string "You came to me seeking my help,\n"
.string "and we almost turned you away.\p"
.string "Well, let me make things right.\p"
.string "We'll sail right away, of course!\p"
.string "Let's find this island on\n"
.string "this OLD SEA MAP!$"
EventTicket_Text_OddTicketGetOnBoard:
.string "Is it you who brought that odd\n"
.string "ticket?\p"
.string "Where you're trying to go is an island\n"
.string "that's far, far away.\p"
.string "No one knows what awaits there…\p"
.string "The very thought excites my blood\n"
.string "as a sailing man!\p"
.string "Get on board, youngster!$"
.string "Is it you who brought that odd\n"
.string "ticket?\p"
.string "Where you're trying to go is an island\n"
.string "that's far, far away.\p"
.string "No one knows what awaits there…\p"
.string "The very thought excites my blood\n"
.string "as a sailing man!\p"
.string "Get on board, youngster!$"
FarawayIsland_Entrance_Text_SailorReturn:
.string "CAPT. BRINEY can be so maddeningly\n"
.string "fickle…\p"
.string "Do you want to return to LILYCOVE?$"
.string "CAPT. BRINEY can be so maddeningly\n"
.string "fickle…\p"
.string "Do you want to return to LILYCOVE?$"
BirthIsland_Harbor_Text_SailorReturn:
.string "What an oddly shaped island, eh?\n"
.string "Do you want to return to LILYCOVE?$"
.string "What an oddly shaped island, eh?\n"
.string "Do you want to return to LILYCOVE?$"
EventTicket_Text_OddTicketsWhereTo:
.string "Is it you who brought those\n"
.string "odd tickets?\p"
.string "… … …Hm.\p"
.string "These tickets will get you to islands\n"
.string "that are far, far away.\p"
.string "No one knows what awaits there,\n"
.string "or what may happen there.\p"
.string "The very thought excites my blood\n"
.string "as a sailing man!\p"
.string "Get on board, youngster!\n"
.string "Where shall we sail first?$"
.string "Is it you who brought those\n"
.string "odd tickets?\p"
.string "… … …Hm.\p"
.string "These tickets will get you to islands\n"
.string "that are far, far away.\p"
.string "No one knows what awaits there,\n"
.string "or what may happen there.\p"
.string "The very thought excites my blood\n"
.string "as a sailing man!\p"
.string "Get on board, youngster!\n"
.string "Where shall we sail first?$"
NavelRock_Harbor_Text_SailorReturn:
.string "Did… Did you hear that?\n"
.string "That low growling from deep in there.\p"
.string "Are you sure it's safe?\n"
.string "Do you think we should leave?$"
.string "Did… Did you hear that?\n"
.string "That low growling from deep in there.\p"
.string "Are you sure it's safe?\n"
.string "Do you think we should leave?$"
FarawayIsland_Entrance_Text_Sign:
.string "The writing is fading as if it was\n"
.string "written a long time ago…\p"
.string "“…ber, 6th day\n"
.string "If any human…sets foot here…\l"
.string "again…et it be a kindhearted pers…\l"
.string "…ith that hope, I depar…”$"
.string "The writing is fading as if it was\n"
.string "written a long time ago…\p"
.string "“…ber, 6th day\n"
.string "If any human…sets foot here…\l"
.string "again…et it be a kindhearted pers…\l"
.string "…ith that hope, I depar…”$"
FarawayIsland_Interior_Text_Mew:
.string "Myuu…$"
.string "Myuu…$"
+32 -32
View File
@@ -1,51 +1,51 @@
gText_WouldYouLikeToRestYourPkmn::
.string "Hello, and welcome to\n"
.string "the POKéMON CENTER.\p"
.string "We restore your tired POKéMON\n"
.string "to full health.\p"
.string "Would you like to rest your POKéMON?$"
.string "Hello, and welcome to\n"
.string "the POKéMON CENTER.\p"
.string "We restore your tired POKéMON\n"
.string "to full health.\p"
.string "Would you like to rest your POKéMON?$"
gText_IllTakeYourPkmn::
.string "Okay, I'll take your POKéMON\n"
.string "for a few seconds.$"
.string "Okay, I'll take your POKéMON\n"
.string "for a few seconds.$"
gText_RestoredPkmnToFullHealth::
.string "Thank you for waiting.\p"
.string "We've restored your POKéMON\n"
.string "to full health.$"
.string "Thank you for waiting.\p"
.string "We've restored your POKéMON\n"
.string "to full health.$"
gText_WeHopeToSeeYouAgain::
.string "We hope to see you again!$"
.string "We hope to see you again!$"
gText_WelcomeCutShort::
.string "Hello, and welcome to\n"
.string "the POKéMON CENTER.\p"
.string "We restore your tired POKéMON\n"
.string "to full health.\p"
.string "Would you like to…$"
.string "Hello, and welcome to\n"
.string "the POKéMON CENTER.\p"
.string "We restore your tired POKéMON\n"
.string "to full health.\p"
.string "Would you like to…$"
gText_NoticesGoldCard::
.string "Th-that card…\n"
.string "Could it be… The GOLD CARD?!\p"
.string "Oh, the gold color is brilliant!\n"
.string "The four stars seem to sparkle!\p"
.string "I've seen several TRAINERS with\n"
.string "a SILVER CARD before, but, {PLAYER},\l"
.string "you're the first TRAINER I've ever\l"
.string "seen with a GOLD CARD!\p"
.string "Okay, {PLAYER}, please allow me\n"
.string "the honor of resting your POKéMON!$"
.string "Th-that card…\n"
.string "Could it be… The GOLD CARD?!\p"
.string "Oh, the gold color is brilliant!\n"
.string "The four stars seem to sparkle!\p"
.string "I've seen several TRAINERS with\n"
.string "a SILVER CARD before, but, {PLAYER},\l"
.string "you're the first TRAINER I've ever\l"
.string "seen with a GOLD CARD!\p"
.string "Okay, {PLAYER}, please allow me\n"
.string "the honor of resting your POKéMON!$"
gText_YouWantTheUsual::
.string "I'm delighted to see you, {PLAYER}!\n"
.string "You want the usual, am I right?$"
.string "I'm delighted to see you, {PLAYER}!\n"
.string "You want the usual, am I right?$"
gText_IllTakeYourPkmn2::
.string "Okay, I'll take your POKéMON\n"
.string "for a few seconds.$"
.string "Okay, I'll take your POKéMON\n"
.string "for a few seconds.$"
gText_ThankYouForWaiting::
.string "Thank you for waiting.$"
.string "Thank you for waiting.$"
gText_WeHopeToSeeYouAgain2::
.string "We hope to see you again!$"
.string "We hope to see you again!$"
+167 -167
View File
@@ -1,286 +1,286 @@
SecretBase_Text_Trainer0Intro:
.string "Have you made a SECRET BASE already?\p"
.string "I went here, there, everywhere before\n"
.string "choosing this place.\p"
.string "Since you're already here, how would\n"
.string "you like to battle?$"
.string "Have you made a SECRET BASE already?\p"
.string "I went here, there, everywhere before\n"
.string "choosing this place.\p"
.string "Since you're already here, how would\n"
.string "you like to battle?$"
SecretBase_Text_Trainer0AcceptBattle:
.string "Okay!\n"
.string "Here we come!$"
.string "Okay!\n"
.string "Here we come!$"
SecretBase_Text_Trainer0DeclineBattle:
.string "Hunh?\n"
.string "Oh, you can't now…$"
.string "Hunh?\n"
.string "Oh, you can't now…$"
SecretBase_Text_Trainer0Defeated::
.string "Waaargh! You're too strong!\n"
.string "About me losing… Please keep it secret!$"
.string "Waaargh! You're too strong!\n"
.string "About me losing… Please keep it secret!$"
SecretBase_Text_Trainer0PostBattle:
.string "What do you think of my SECRET BASE?\n"
.string "Come visit me again tomorrow.$"
.string "What do you think of my SECRET BASE?\n"
.string "Come visit me again tomorrow.$"
SecretBase_Text_Trainer0PreChampion:
.string "Have you made a SECRET BASE already?\p"
.string "I went here, there, everywhere before\n"
.string "choosing this place.\p"
.string "Feel free to hang out!$"
.string "Have you made a SECRET BASE already?\p"
.string "I went here, there, everywhere before\n"
.string "choosing this place.\p"
.string "Feel free to hang out!$"
SecretBase_Text_Trainer5Intro:
.string "There're a lot of places where\n"
.string "you can make a SECRET BASE.\p"
.string "But I like this spot best.\n"
.string "Don't you think it's nice?\p"
.string "Oh, would you like to have a battle?$"
.string "There're a lot of places where\n"
.string "you can make a SECRET BASE.\p"
.string "But I like this spot best.\n"
.string "Don't you think it's nice?\p"
.string "Oh, would you like to have a battle?$"
SecretBase_Text_Trainer5AcceptBattle:
.string "Okay, here goes!$"
.string "Okay, here goes!$"
SecretBase_Text_Trainer5DeclineBattle:
.string "Oh…\n"
.string "You can't now, okay.$"
.string "Oh…\n"
.string "You can't now, okay.$"
SecretBase_Text_Trainer5Defeated::
.string "Hmmm… It's our loss…\n"
.string "But don't tell anyone!\l"
.string "It's a confidential secret!$"
.string "Hmmm… It's our loss…\n"
.string "But don't tell anyone!\l"
.string "It's a confidential secret!$"
SecretBase_Text_Trainer5PostBattle:
.string "If you're in this area again,\n"
.string "I hope you'll visit me.$"
.string "If you're in this area again,\n"
.string "I hope you'll visit me.$"
SecretBase_Text_Trainer5PreChampion:
.string "There're a lot of places where you can\n"
.string "make a SECRET BASE.\p"
.string "But I like this spot best.\n"
.string "Don't you think it's nice?$"
.string "There're a lot of places where you can\n"
.string "make a SECRET BASE.\p"
.string "But I like this spot best.\n"
.string "Don't you think it's nice?$"
SecretBase_Text_Trainer1Intro:
.string "This is a popular spot.\n"
.string "It's always taken.\p"
.string "Oh! Were you thinking about\n"
.string "taking this spot, too?\p"
.string "I'll tell you what, you can have this\n"
.string "spot if you can beat me.$"
.string "This is a popular spot.\n"
.string "It's always taken.\p"
.string "Oh! Were you thinking about\n"
.string "taking this spot, too?\p"
.string "I'll tell you what, you can have this\n"
.string "spot if you can beat me.$"
SecretBase_Text_Trainer1AcceptBattle:
.string "Okay!\n"
.string "I'm going to defend my SECRET BASE!$"
.string "Okay!\n"
.string "I'm going to defend my SECRET BASE!$"
SecretBase_Text_Trainer1DeclineBattle:
.string "Hunh? Is that right?\n"
.string "You're not interested in this spot?$"
.string "Hunh? Is that right?\n"
.string "You're not interested in this spot?$"
SecretBase_Text_Trainer1Defeated::
.string "I can't keep going!\n"
.string "I surrender!$"
.string "I can't keep going!\n"
.string "I surrender!$"
SecretBase_Text_Trainer1PostBattle:
.string "Okay, when I move one day,\n"
.string "this place will be yours!$"
.string "Okay, when I move one day,\n"
.string "this place will be yours!$"
SecretBase_Text_Trainer1PreChampion:
.string "This is a popular spot.\n"
.string "It's always taken.\p"
.string "I waited a long time for it to open.\n"
.string "I finally got to use it!$"
.string "This is a popular spot.\n"
.string "It's always taken.\p"
.string "I waited a long time for it to open.\n"
.string "I finally got to use it!$"
SecretBase_Text_Trainer6Intro:
.string "Welcome to my POKéMON LAB.\p"
.string "I carry out research on battling in\n"
.string "secrecy.\p"
.string "Would you like to see how strong I am?$"
.string "Welcome to my POKéMON LAB.\p"
.string "I carry out research on battling in\n"
.string "secrecy.\p"
.string "Would you like to see how strong I am?$"
SecretBase_Text_Trainer6AcceptBattle:
.string "I'm going to go all out!$"
.string "I'm going to go all out!$"
SecretBase_Text_Trainer6DeclineBattle:
.string "Oh.\n"
.string "Some other time, then!$"
.string "Oh.\n"
.string "Some other time, then!$"
SecretBase_Text_Trainer6Defeated::
.string "Hmm… I've still got lots to learn.\n"
.string "I have to study some more.$"
.string "Hmm… I've still got lots to learn.\n"
.string "I have to study some more.$"
SecretBase_Text_Trainer6PostBattle:
.string "Thanks for battling with me.\n"
.string "Please come back again tomorrow.$"
.string "Thanks for battling with me.\n"
.string "Please come back again tomorrow.$"
SecretBase_Text_Trainer6PreChampion:
.string "Welcome to my POKéMON LAB.\p"
.string "I carry out research on battling in\n"
.string "secrecy.$"
.string "Welcome to my POKéMON LAB.\p"
.string "I carry out research on battling in\n"
.string "secrecy.$"
SecretBase_Text_Trainer2Intro:
.string "A big mansion is nice, but I like this\n"
.string "sort of place more.\p"
.string "I like it because all kinds of people\n"
.string "come visit me.\p"
.string "So, how would you like a battle?$"
.string "A big mansion is nice, but I like this\n"
.string "sort of place more.\p"
.string "I like it because all kinds of people\n"
.string "come visit me.\p"
.string "So, how would you like a battle?$"
SecretBase_Text_Trainer2AcceptBattle:
.string "That's the way!$"
.string "That's the way!$"
SecretBase_Text_Trainer2DeclineBattle:
.string "When you're ready, give me a shout!$"
.string "When you're ready, give me a shout!$"
SecretBase_Text_Trainer2Defeated::
.string "Aww! Done in!\n"
.string "But it's still fun to battle!$"
.string "Aww! Done in!\n"
.string "But it's still fun to battle!$"
SecretBase_Text_Trainer2PostBattle:
.string "Well, anyway, I should go buy some\n"
.string "decorations and furniture.\p"
.string "I want my SECRET BASE to be a place\n"
.string "other people can enjoy.$"
.string "Well, anyway, I should go buy some\n"
.string "decorations and furniture.\p"
.string "I want my SECRET BASE to be a place\n"
.string "other people can enjoy.$"
SecretBase_Text_Trainer2PreChampion:
.string "A big mansion is nice, but I like this\n"
.string "sort of place more.\p"
.string "I like it because all kinds of people\n"
.string "come visit me.$"
.string "A big mansion is nice, but I like this\n"
.string "sort of place more.\p"
.string "I like it because all kinds of people\n"
.string "come visit me.$"
SecretBase_Text_Trainer7Intro:
.string "I simply adore shopping for decorations\n"
.string "and furniture.\p"
.string "I also love raising POKéMON just\n"
.string "as much.\p"
.string "If you would be so kind, will you battle\n"
.string "with my POKéMON?$"
.string "I simply adore shopping for decorations\n"
.string "and furniture.\p"
.string "I also love raising POKéMON just\n"
.string "as much.\p"
.string "If you would be so kind, will you battle\n"
.string "with my POKéMON?$"
SecretBase_Text_Trainer7AcceptBattle:
.string "Thank you.\n"
.string "Shall we begin?$"
.string "Thank you.\n"
.string "Shall we begin?$"
SecretBase_Text_Trainer7DeclineBattle:
.string "Oh.\n"
.string "How disappointing…$"
.string "Oh.\n"
.string "How disappointing…$"
SecretBase_Text_Trainer7Defeated::
.string "I concede…$"
.string "I concede…$"
SecretBase_Text_Trainer7PostBattle:
.string "That was all in good fun!\n"
.string "I should go enjoy shopping now.$"
.string "That was all in good fun!\n"
.string "I should go enjoy shopping now.$"
SecretBase_Text_Trainer7PreChampion:
.string "I simply adore shopping for decorations\n"
.string "and furniture.\p"
.string "I also love raising POKéMON just\n"
.string "as much.$"
.string "I simply adore shopping for decorations\n"
.string "and furniture.\p"
.string "I also love raising POKéMON just\n"
.string "as much.$"
SecretBase_Text_Trainer3Intro:
.string "Some people make their SECRET BASES in\n"
.string "hard-to-find places.\l"
.string "Do they want to just lie low?\p"
.string "But since you found me, how about we\n"
.string "have a battle?$"
.string "Some people make their SECRET BASES in\n"
.string "hard-to-find places.\l"
.string "Do they want to just lie low?\p"
.string "But since you found me, how about we\n"
.string "have a battle?$"
SecretBase_Text_Trainer3AcceptBattle:
.string "I'm not going down easily!$"
.string "I'm not going down easily!$"
SecretBase_Text_Trainer3DeclineBattle:
.string "Oh… Are you maybe tired from searching\n"
.string "for this place?$"
.string "Oh… Are you maybe tired from searching\n"
.string "for this place?$"
SecretBase_Text_Trainer3Defeated::
.string "I went down…$"
.string "I went down…$"
SecretBase_Text_Trainer3PostBattle:
.string "Where's your SECRET BASE?\n"
.string "I should go visit you there.$"
.string "Where's your SECRET BASE?\n"
.string "I should go visit you there.$"
SecretBase_Text_Trainer3PreChampion:
.string "Some people make their SECRET BASES in\n"
.string "hard-to-find places.\l"
.string "Do they want to just lie low?$"
.string "Some people make their SECRET BASES in\n"
.string "hard-to-find places.\l"
.string "Do they want to just lie low?$"
SecretBase_Text_Trainer8Intro:
.string "People have told me that you can get\n"
.string "decorations in several ways.\p"
.string "We should have a race to see who can\n"
.string "get nicer decorations and furniture!\p"
.string "In the meantime, want to battle?$"
.string "People have told me that you can get\n"
.string "decorations in several ways.\p"
.string "We should have a race to see who can\n"
.string "get nicer decorations and furniture!\p"
.string "In the meantime, want to battle?$"
SecretBase_Text_Trainer8AcceptBattle:
.string "This is my SECRET BASE.\n"
.string "I can't lose!$"
.string "This is my SECRET BASE.\n"
.string "I can't lose!$"
SecretBase_Text_Trainer8DeclineBattle:
.string "I'll battle with you anytime.$"
.string "I'll battle with you anytime.$"
SecretBase_Text_Trainer8Defeated::
.string "Huh?\n"
.string "Did I just lose?$"
.string "Huh?\n"
.string "Did I just lose?$"
SecretBase_Text_Trainer8PostBattle:
.string "I won't lose at collecting decorations.\n"
.string "Come visit again!$"
.string "I won't lose at collecting decorations.\n"
.string "Come visit again!$"
SecretBase_Text_Trainer8PreChampion:
.string "People have told me that you can get\n"
.string "decorations in several ways.\p"
.string "We should have a race to see who can\n"
.string "get nicer decorations and furniture!$"
.string "People have told me that you can get\n"
.string "decorations in several ways.\p"
.string "We should have a race to see who can\n"
.string "get nicer decorations and furniture!$"
SecretBase_Text_Trainer4Intro:
.string "I found a spot I liked, and I did it up\n"
.string "with my favorite decorations.\p"
.string "I raise my favorite POKéMON and grow\n"
.string "stronger with it.\p"
.string "That's what I do.\n"
.string "Want to battle with me?$"
.string "I found a spot I liked, and I did it up\n"
.string "with my favorite decorations.\p"
.string "I raise my favorite POKéMON and grow\n"
.string "stronger with it.\p"
.string "That's what I do.\n"
.string "Want to battle with me?$"
SecretBase_Text_Trainer4AcceptBattle:
.string "Show me what you're made of!$"
.string "Show me what you're made of!$"
SecretBase_Text_Trainer4DeclineBattle:
.string "I guess there are times when you're not\n"
.string "into it.$"
.string "I guess there are times when you're not\n"
.string "into it.$"
SecretBase_Text_Trainer4Defeated::
.string "I know exactly what you're made of now.$"
.string "I know exactly what you're made of now.$"
SecretBase_Text_Trainer4PostBattle:
.string "We can both become stronger.\n"
.string "Let's keep at it!$"
.string "We can both become stronger.\n"
.string "Let's keep at it!$"
SecretBase_Text_Trainer4PreChampion:
.string "I found a spot I liked, and I did it up\n"
.string "with my favorite decorations.\p"
.string "I raise my favorite POKéMON and grow\n"
.string "stronger with it.\p"
.string "Every day is a great day.$"
.string "I found a spot I liked, and I did it up\n"
.string "with my favorite decorations.\p"
.string "I raise my favorite POKéMON and grow\n"
.string "stronger with it.\p"
.string "Every day is a great day.$"
SecretBase_Text_Trainer9Intro:
.string "You can learn a lot about the taste\n"
.string "and sense of people by the kinds of\l"
.string "decorations they have, and how they\l"
.string "display them.\p"
.string "What do you think of my taste?\n"
.string "Are you speechless?\p"
.string "Want to see my taste in battling?$"
.string "You can learn a lot about the taste\n"
.string "and sense of people by the kinds of\l"
.string "decorations they have, and how they\l"
.string "display them.\p"
.string "What do you think of my taste?\n"
.string "Are you speechless?\p"
.string "Want to see my taste in battling?$"
SecretBase_Text_Trainer9AcceptBattle:
.string "There's no holding back!$"
.string "There's no holding back!$"
SecretBase_Text_Trainer9DeclineBattle:
.string "I'll be happy to demonstrate my style\n"
.string "anytime.$"
.string "I'll be happy to demonstrate my style\n"
.string "anytime.$"
SecretBase_Text_Trainer9Defeated::
.string "You're supremely talented!\n"
.string "Your power seems to be limitless…$"
.string "You're supremely talented!\n"
.string "Your power seems to be limitless…$"
SecretBase_Text_Trainer9PostBattle:
.string "What did you think of my style?\n"
.string "I'll keep on polishing it!$"
.string "What did you think of my style?\n"
.string "I'll keep on polishing it!$"
SecretBase_Text_Trainer9PreChampion:
.string "You can learn a lot about the taste\n"
.string "and sense of people by the kinds of\l"
.string "decorations they have, and how they\l"
.string "display them.\p"
.string "What do you think of my taste?\n"
.string "Are you speechless?$"
.string "You can learn a lot about the taste\n"
.string "and sense of people by the kinds of\l"
.string "decorations they have, and how they\l"
.string "display them.\p"
.string "What do you think of my taste?\n"
.string "Are you speechless?$"
+16 -16
View File
@@ -3,29 +3,29 @@
enum
{
BG_ATTR_CHARBASEINDEX = 1,
BG_ATTR_MAPBASEINDEX,
BG_ATTR_SCREENSIZE,
BG_ATTR_PALETTEMODE,
BG_ATTR_MOSAIC,
BG_ATTR_WRAPAROUND,
BG_ATTR_PRIORITY,
BG_ATTR_METRIC,
BG_ATTR_TYPE,
BG_ATTR_BASETILE,
BG_ATTR_CHARBASEINDEX = 1,
BG_ATTR_MAPBASEINDEX,
BG_ATTR_SCREENSIZE,
BG_ATTR_PALETTEMODE,
BG_ATTR_MOSAIC,
BG_ATTR_WRAPAROUND,
BG_ATTR_PRIORITY,
BG_ATTR_METRIC,
BG_ATTR_TYPE,
BG_ATTR_BASETILE,
};
enum {
BG_TYPE_NORMAL,
BG_TYPE_AFFINE,
BG_TYPE_NONE = 0xFFFF
BG_TYPE_NORMAL,
BG_TYPE_AFFINE,
BG_TYPE_NONE = 0xFFFF
};
// Modes for ChangeBgX / ChangeBgY
enum {
BG_COORD_SET,
BG_COORD_ADD,
BG_COORD_SUB,
BG_COORD_SET,
BG_COORD_ADD,
BG_COORD_SUB,
};
// Modes for Unused_AdjustBgMosaic
+1 -1
View File
@@ -120,7 +120,7 @@ void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2);
u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLeft, u8 opponentRight);
u8 AnimDummyReturnArg(u8 battler);
u8 GetSpritePalIdxByBattler(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8);
void DestroySpriteWithActiveSheet(struct Sprite *);
u8 CreateInvisibleSpriteCopy(int, u8, int);
+2
View File
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_ARENA_H
#define GUARD_BATTLE_ARENA_H
#include "constants/battle_arena.h"
void CallBattleArenaFunction(void);
u8 BattleArena_ShowJudgmentWindow(u8 *state);
void BattleArena_InitPoints(void);
+7 -4
View File
@@ -34,16 +34,19 @@ enum
#define TAG_HEALTHBAR_PLAYER2_TILE 0xD706
#define TAG_HEALTHBAR_OPPONENT2_TILE 0xD707
#define TAG_HEALTHBOX_PALS_1 0xD709
#define TAG_HEALTHBOX_PALS_2 0xD70A
#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
#define TAG_HEALTHBOX_PAL 0xD6FF
#define TAG_HEALTHBAR_PAL 0xD704
#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
#define TAG_HEALTHBAR_PAL TAG_HEALTHBAR_PLAYER1_TILE
#define TAG_HEALTHBOX_PAL TAG_HEALTHBOX_PLAYER1_TILE
enum
{
HEALTHBOX_ALL,
+6
View File
@@ -17,4 +17,10 @@
#define ARENA_CATEGORY_SKILL 1
#define ARENA_CATEGORY_BODY 2
#define ARENA_RESULT_RUNNING 0 // For intermediate steps, when BattleArena_ShowJudgmentWindow should be called again immediately
#define ARENA_RESULT_STEP_DONE 1 // A step has been completed, the script may advance to the next instruction
#define ARENA_RESULT_PLAYER_WON 2
#define ARENA_RESULT_PLAYER_LOST 3
#define ARENA_RESULT_TIE 4
#endif //GUARD_CONSTANTS_BATTLE_ARENA_H
+2 -2
View File
@@ -232,8 +232,8 @@
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT 0x91
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT 0x92
#define MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT 0x93
#define MOVEMENT_ACTION_STORE_AND_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_LOCK_ANIM 0x94
#define MOVEMENT_ACTION_UNLOCK_ANIM 0x95
#define MOVEMENT_ACTION_WALK_LEFT_AFFINE 0x96
#define MOVEMENT_ACTION_WALK_RIGHT_AFFINE 0x97
#define MOVEMENT_ACTION_LEVITATE 0x98
+9
View File
@@ -181,6 +181,15 @@
#define FRIENDSHIP_EVENT_FAINT_FIELD_PSN 7
#define FRIENDSHIP_EVENT_FAINT_LARGE 8 // If opponent was >= 30 levels higher. See AdjustFriendshipOnBattleFaint
// Constants for GetLeadMonFriendshipScore
#define FRIENDSHIP_NONE 0
#define FRIENDSHIP_1_TO_49 1
#define FRIENDSHIP_50_TO_99 2
#define FRIENDSHIP_100_TO_149 3
#define FRIENDSHIP_150_TO_199 4
#define FRIENDSHIP_200_TO_254 5
#define FRIENDSHIP_MAX 6
#define MAX_FRIENDSHIP 255
#define MAX_SHEEN 255
#define MAX_CONDITION 255
+1 -1
View File
@@ -63,7 +63,7 @@ struct PairedPalettes
struct LockedAnimObjectEvents
{
u8 objectEventIds[OBJECT_EVENTS_COUNT];
u8 localIds[OBJECT_EVENTS_COUNT];
u8 count;
};
+37 -37
View File
@@ -116,21 +116,21 @@ enum
#define POKENAV_MENU_IDS_START 100000
enum
{
POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons
POKENAV_MAIN_MENU_CURSOR_ON_MAP,
POKENAV_CONDITION_MENU, // The first Condition screen where the player selects Party or Search
POKENAV_CONDITION_SEARCH_MENU, // The Condition search menu where the player selects a search parameter
POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL,
POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS,
POKENAV_REGION_MAP,
POKENAV_CONDITION_GRAPH_PARTY, // The Condition graph screen when Party has been selected
POKENAV_CONDITION_SEARCH_RESULTS, // The list of results from a Condition search
POKENAV_CONDITION_GRAPH_SEARCH, // The Condition graph screen when a search result has been selected
POKENAV_RETURN_CONDITION_SEARCH, // Exited the graph screen back to the list of Condition search results
POKENAV_MATCH_CALL,
POKENAV_RIBBONS_MON_LIST, // The list of Pokémon with ribbons
POKENAV_RIBBONS_SUMMARY_SCREEN, // The ribbon summary screen shown when a Pokémon has been selected
POKENAV_RIBBONS_RETURN_TO_MON_LIST, // Exited the summary screen back to the ribbon list
POKENAV_MAIN_MENU = POKENAV_MENU_IDS_START, // The main menu where the player selects Hoenn Map/Condition/Match Call/Ribbons
POKENAV_MAIN_MENU_CURSOR_ON_MAP,
POKENAV_CONDITION_MENU, // The first Condition screen where the player selects Party or Search
POKENAV_CONDITION_SEARCH_MENU, // The Condition search menu where the player selects a search parameter
POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL,
POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS,
POKENAV_REGION_MAP,
POKENAV_CONDITION_GRAPH_PARTY, // The Condition graph screen when Party has been selected
POKENAV_CONDITION_SEARCH_RESULTS, // The list of results from a Condition search
POKENAV_CONDITION_GRAPH_SEARCH, // The Condition graph screen when a search result has been selected
POKENAV_RETURN_CONDITION_SEARCH, // Exited the graph screen back to the list of Condition search results
POKENAV_MATCH_CALL,
POKENAV_RIBBONS_MON_LIST, // The list of Pokémon with ribbons
POKENAV_RIBBONS_SUMMARY_SCREEN, // The ribbon summary screen shown when a Pokémon has been selected
POKENAV_RIBBONS_RETURN_TO_MON_LIST, // Exited the summary screen back to the ribbon list
};
enum
@@ -185,28 +185,28 @@ enum
enum
{
MC_HEADER_MR_STONE,
MC_HEADER_PROF_BIRCH,
MC_HEADER_BRENDAN,
MC_HEADER_MAY,
MC_HEADER_WALLY,
MC_HEADER_NORMAN,
MC_HEADER_MOM,
MC_HEADER_STEVEN,
MC_HEADER_SCOTT,
MC_HEADER_ROXANNE,
MC_HEADER_BRAWLY,
MC_HEADER_WATTSON,
MC_HEADER_FLANNERY,
MC_HEADER_WINONA,
MC_HEADER_TATE_LIZA,
MC_HEADER_JUAN,
MC_HEADER_SIDNEY,
MC_HEADER_PHOEBE,
MC_HEADER_GLACIA,
MC_HEADER_DRAKE,
MC_HEADER_WALLACE,
MC_HEADER_COUNT
MC_HEADER_MR_STONE,
MC_HEADER_PROF_BIRCH,
MC_HEADER_BRENDAN,
MC_HEADER_MAY,
MC_HEADER_WALLY,
MC_HEADER_NORMAN,
MC_HEADER_MOM,
MC_HEADER_STEVEN,
MC_HEADER_SCOTT,
MC_HEADER_ROXANNE,
MC_HEADER_BRAWLY,
MC_HEADER_WATTSON,
MC_HEADER_FLANNERY,
MC_HEADER_WINONA,
MC_HEADER_TATE_LIZA,
MC_HEADER_JUAN,
MC_HEADER_SIDNEY,
MC_HEADER_PHOEBE,
MC_HEADER_GLACIA,
MC_HEADER_DRAKE,
MC_HEADER_WALLACE,
MC_HEADER_COUNT
};
enum
-3
View File
@@ -45,9 +45,6 @@ SECTIONS {
/* COMMON starts at 0x30022A8 */
INCLUDE "sym_common.ld"
src/*.o(COMMON);
gflib/*.o(COMMON);
*libc.a:sbrkr.o(COMMON);
end = .;
. = 0x8000;
+8 -8
View File
@@ -84,7 +84,7 @@ static void AnimMilkBottle(struct Sprite *);
static void AnimMilkBottle_Step1(struct Sprite *);
static void AnimMilkBottle_Step2(struct Sprite *, int, int);
static void AnimGrantingStars(struct Sprite *);
static void AnimSparkingStars(struct Sprite *);
static void AnimSparklingStars(struct Sprite *);
static void AnimBubbleBurst(struct Sprite *);
static void AnimBubbleBurst_Step(struct Sprite *);
static void AnimSleepLetterZ(struct Sprite *);
@@ -1416,7 +1416,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate =
.anims = gGrantingStarsAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimSparkingStars,
.callback = AnimSparklingStars,
};
static const union AnimCmd sAnim_BubbleBurst[] =
@@ -3184,14 +3184,14 @@ static void AnimItemSteal_Step3(struct Sprite *sprite)
sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
if (sprite->y2 == 0)
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
if (moveAlongLinearPath(sprite))
{
sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = AnimItemSteal_Step2;
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
}
@@ -4137,7 +4137,7 @@ static void AnimGrantingStars(struct Sprite *sprite)
sprite->callback = TranslateSpriteLinearFixedPoint;
}
static void AnimSparkingStars(struct Sprite *sprite)
static void AnimSparklingStars(struct Sprite *sprite)
{
u8 battler;
if (!gBattleAnimArgs[2])
@@ -4264,7 +4264,7 @@ static void AnimLockOnTarget_Step1(struct Sprite *sprite)
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2);
sprite->data[5] += 0x100;
PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
break;
}
@@ -4350,7 +4350,7 @@ static void AnimLockOnTarget_Step4(struct Sprite *sprite)
sprite->data[2]++;
pal = sprite->oam.paletteNum;
LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4);
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
}
else if (sprite->data[1] == 0)
{
@@ -4812,7 +4812,7 @@ static void AnimSharpenSphere(struct Sprite *sprite)
sprite->data[2] = 0;
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = BattleAnimAdjustPanning(-64);
sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
sprite->callback = AnimSharpenSphere_Step;
}
+5 -8
View File
@@ -1642,7 +1642,7 @@ static void AirCutterProjectileStep1(u8 taskId)
gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId;
gTasks[taskId].data[0] = gTasks[taskId].data[3];
gTasks[taskId].data[1]++;
PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-63));
PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER + 1));
if (gTasks[taskId].data[1] > 2)
gTasks[taskId].func = AirCutterProjectileStep2;
}
@@ -1839,7 +1839,7 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
int i;
u16 rand;
s16 *ptr;
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->x += sprite->x2;
sprite->y += sprite->y2;
sprite->y2 = 0;
@@ -2485,7 +2485,7 @@ static void AnimPencil(struct Sprite *sprite)
sprite->data[3] = 16;
sprite->data[4] = 0;
sprite->data[5] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_HEIGHT) + 2;
sprite->data[6] = BattleAnimAdjustPanning(63);
sprite->data[6] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
sprite->callback = AnimPencil_Step;
}
@@ -3043,9 +3043,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId)
static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b)
{
u8 tile;
tile = (b & 1);
tile = ((-tile | tile) >> 31) & 32;
u8 tile = (b & 1) ? 32 : 0;
sprite->oam.tileNum += tile + (a << 2);
sprite->oam.paletteNum = IndexOfSpritePaletteTag(sMusicNotePaletteTagsTable[b >> 1]);
}
@@ -3792,8 +3790,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
if (sprite->data[4] > 3)
{
int var1 = sprite->data[2];
sprite->invisible = var1 - (((s32)(var1 + ((u32)var1 >> 31)) >> 1) << 1);
sprite->invisible = sprite->data[2] % 2;
DestroyAnimSprite(sprite);
}
+17 -17
View File
@@ -1646,7 +1646,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
sprite->data[2]++;
if (sprite->data[3] == 0)
{
PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(-64));
PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
}
}
@@ -1930,7 +1930,7 @@ static void TormentAttacker_Step(u8 taskId)
y = task->data[3] + task->data[5];
spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]);
PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
if (spriteId != MAX_SPRITES)
{
@@ -2107,7 +2107,7 @@ static void AnimWishStar(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
sprite->x = -16;
else
sprite->x = 256;
sprite->x = DISPLAY_WIDTH + 16;
sprite->y = 0;
sprite->callback = AnimWishStar_Step;
@@ -2136,7 +2136,7 @@ static void AnimWishStar_Step(struct Sprite *sprite)
}
newX = sprite->x + sprite->x2 + 32;
if (newX > 304)
if (newX > DISPLAY_WIDTH + 64)
DestroyAnimSprite(sprite);
}
@@ -2411,7 +2411,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
gTasks[taskId].data[11] = gBattle_BG1_Y;
gTasks[taskId].data[0]++;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
break;
case 1:
if (gTasks[taskId].data[4]++ > 0)
@@ -2446,7 +2446,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
{
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[0] = 1;
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
}
break;
case 4:
@@ -3183,7 +3183,7 @@ static void AnimReversalOrb_Step(struct Sprite *sprite)
// Copies the target mon's sprite, and makes a white silhouette that shrinks away.
void AnimTask_RolePlaySilhouette(u8 taskId)
{
u8 isBackPic;
bool8 isBackPic;
u32 personality;
u32 otId;
u16 species;
@@ -3206,7 +3206,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
isBackPic = 0;
isBackPic = FALSE;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -3226,7 +3226,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
}
else
{
isBackPic = 1;
isBackPic = TRUE;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE)
@@ -4845,7 +4845,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
gTasks[taskId].data[10] -= 0x800;
gTasks[taskId].data[0]++;
}
@@ -4867,7 +4867,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
DestroyAnimVisualTask(taskId);
}
break;
@@ -4904,7 +4904,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 += 10;
if (sprite->y2 >= 0)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->y2 = 0;
sprite->data[0]++;
}
@@ -4914,7 +4914,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
sprite->y2 = -(gSineTable[sprite->data[1]] >> 3);
if (sprite->data[1] > 0x7F)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0;
sprite->y2 = 0;
sprite->data[0]++;
@@ -4933,7 +4933,7 @@ static void AnimBlockX_Step(struct Sprite *sprite)
case 3:
if (++sprite->data[1] > 8)
{
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0;
sprite->data[0]++;
}
@@ -5097,7 +5097,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gTasks[taskId].data[1] &= 0xFF;
x = gSprites[spriteId].x + gSprites[spriteId].x2;
if ((u16)(x + 32) > 304)
if (x < -32 || x > DISPLAY_WIDTH + 32)
{
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -5180,7 +5180,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
}
}
if ((u16)(x + 32) > 304)
if (x < -32 || x > DISPLAY_WIDTH + 32)
{
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
@@ -5227,7 +5227,7 @@ static void AnimUnusedItemBagSteal(struct Sprite *sprite)
case 0:
if (gBattleAnimArgs[7] == -1)
{
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63));
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32;
sprite->data[7]++;
+2 -2
View File
@@ -583,7 +583,7 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
sprite->data[7] = gBattleAnimArgs[4];
sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
sprite->callback = AnimZapCannonSpark_Step;
AnimZapCannonSpark_Step(sprite);
sprite->callback(sprite);
}
static void AnimZapCannonSpark_Step(struct Sprite *sprite)
@@ -1159,7 +1159,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId)
task->data[4] = 7;
task->data[5] = -1;
task->data[11] = 12;
task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[14] = task->data[12];
task->data[15] = (task->data[13] - task->data[12]) / 3;
+2 -2
View File
@@ -500,7 +500,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[1];
sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
if (sprite->data[7] != 64)
if (sprite->data[7] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
@@ -513,7 +513,7 @@ static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
if (sprite->data[7] != 64)
if (sprite->data[7] != MAX_SPRITES)
{
FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
DestroySprite(&gSprites[sprite->data[7]]);
+2 -2
View File
@@ -1227,8 +1227,8 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId)
{
struct Task *task = &gTasks[taskId];
task->data[12] = !GetBattlerSide(gBattleAnimAttacker) ? 1 : -1;
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ 2) + 1;
task->data[12] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1;
task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET);
task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
+4 -4
View File
@@ -528,8 +528,8 @@ static void AnimFlyBallAttack_Step(struct Sprite *sprite)
}
if (sprite->x + sprite->x2 < -32
|| sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT)
|| sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -1215,8 +1215,8 @@ 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
|| sprite->y > 157 || sprite->y < -45)
if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45
|| sprite->y > 157 || sprite->y < -45)
DestroySpriteAndMatrix(sprite);
}
+18 -14
View File
@@ -45,7 +45,7 @@ static void AnimThrowIceBall(struct Sprite *);
static void InitIceBallParticle(struct Sprite *);
static void AnimIceBallParticle(struct Sprite *);
static void AnimTask_HazeScrollingFog_Step(u8);
static void AnimTask_LoadMistTiles_Step(u8);
static void AnimTask_MistBallFog_Step(u8);
static void AnimTask_Hail2(u8);
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
@@ -353,7 +353,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate =
.callback = AnimThrowMistBall,
};
static const u8 wMistBlendAmounts[] =
static const u8 sMistBlendAmounts[] =
{
0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5,
};
@@ -696,7 +696,8 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
break;
@@ -762,7 +763,8 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > 256
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > 256
|| sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
@@ -816,7 +818,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
{
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
break;
@@ -846,7 +849,8 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[0] == 1)
{
if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
|| sprite->x + sprite->x2 < -16
|| sprite->y + sprite->y2 > DISPLAY_HEIGHT
|| sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
@@ -1086,7 +1090,7 @@ static void AnimThrowMistBall(struct Sprite *sprite)
}
// Displays misty background in Mist Ball.
void AnimTask_LoadMistTiles(u8 taskId)
void AnimTask_MistBallFog(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -1109,10 +1113,10 @@ void AnimTask_LoadMistTiles(u8 taskId)
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1;
gTasks[taskId].func = AnimTask_LoadMistTiles_Step;
gTasks[taskId].func = AnimTask_MistBallFog_Step;
}
static void AnimTask_LoadMistTiles_Step(u8 taskId)
static void AnimTask_MistBallFog_Step(u8 taskId)
{
struct BattleAnimBgData animBg;
@@ -1123,7 +1127,7 @@ static void AnimTask_LoadMistTiles_Step(u8 taskId)
{
case 0:
gTasks[taskId].data[9] += 1;
gTasks[taskId].data[11] = wMistBlendAmounts[gTasks[taskId].data[9]];
gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]];
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11]));
if (gTasks[taskId].data[11] == 5)
{
@@ -1410,14 +1414,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId,
}
else
{
battlerX = (sHailCoordData[hailStructId].x);
battlerY = (sHailCoordData[hailStructId].y);
battlerX = sHailCoordData[hailStructId].x;
battlerY = sHailCoordData[hailStructId].y;
}
}
else
{
battlerX = (sHailCoordData[hailStructId].x);
battlerY = (sHailCoordData[hailStructId].y);
battlerX = sHailCoordData[hailStructId].x;
battlerY = sHailCoordData[hailStructId].y;
}
spriteX = battlerX - ((battlerY + 8) / 2);
id = CreateSprite(&gHailParticleSpriteTemplate, spriteX, -8, 18);
+13 -24
View File
@@ -5,7 +5,6 @@
#include "task.h"
#include "trig.h"
// This file's functions.
static void AnimTask_ShakeMon_Step(u8 taskId);
static void AnimTask_ShakeMon2_Step(u8 taskId);
static void AnimTask_ShakeMonInPlace_Step(u8 taskId);
@@ -108,7 +107,7 @@ void AnimTask_ShakeMon(u8 taskId)
gTasks[taskId].data[4] = gBattleAnimArgs[1];
gTasks[taskId].data[5] = gBattleAnimArgs[2];
gTasks[taskId].func = AnimTask_ShakeMon_Step;
AnimTask_ShakeMon_Step(taskId);
gTasks[taskId].func(taskId);
}
static void AnimTask_ShakeMon_Step(u8 taskId)
@@ -156,17 +155,14 @@ static void AnimTask_ShakeMon_Step(u8 taskId)
void AnimTask_ShakeMon2(u8 taskId)
{
u8 spriteId;
bool8 destroy = FALSE;
bool8 abort = FALSE;
u8 battlerId;
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
{
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (spriteId == SPRITE_NONE)
{
DestroyAnimVisualTask(taskId);
return;
}
abort = TRUE;
}
else if (gBattleAnimArgs[0] != 8)
{
@@ -188,7 +184,7 @@ void AnimTask_ShakeMon2(u8 taskId)
}
if (IsBattlerSpriteVisible(battlerId) == FALSE)
destroy = TRUE;
abort = TRUE;
spriteId = gBattlerSpriteIds[battlerId];
}
@@ -197,7 +193,7 @@ void AnimTask_ShakeMon2(u8 taskId)
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
}
if (destroy)
if (abort)
{
DestroyAnimVisualTask(taskId);
return;
@@ -332,10 +328,8 @@ void AnimTask_ShakeAndSinkMon(u8 taskId)
static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
{
s16 x;
u8 spriteId;
spriteId = gTasks[taskId].data[0];
x = gTasks[taskId].data[1];
u8 spriteId = gTasks[taskId].data[0];
s16 x = gTasks[taskId].data[1];
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
{
gTasks[taskId].data[8] = 0;
@@ -365,11 +359,8 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
void AnimTask_TranslateMonElliptical(u8 taskId)
{
u8 i;
u8 spriteId;
u8 wavePeriod;
wavePeriod = 1;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
u8 wavePeriod = 1;
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
gBattleAnimArgs[4] = 5;
@@ -742,7 +733,7 @@ static void AnimTask_SlideOffScreen_Step(u8 taskId)
{
u8 spriteId = gTasks[taskId].data[0];
gSprites[spriteId].x2 += gTasks[taskId].data[1];
if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u)
if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32)
{
DestroyAnimVisualTask(taskId);
return;
@@ -831,8 +822,7 @@ static void AnimTask_SwayMonStep(u8 taskId)
// arg 4: sprite object mode
void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[3]);
PrepareBattlerSpriteForRotScale(spriteId, gBattleAnimArgs[4]);
gTasks[taskId].data[0] = gBattleAnimArgs[0];
gTasks[taskId].data[1] = gBattleAnimArgs[1];
@@ -893,7 +883,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
}
else
{
if (gBattleAnimArgs[2] == 0)
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
{
gTasks[taskId].data[7] = !GetBattlerSide(gBattleAnimAttacker);
}
@@ -916,8 +906,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId)
// Rotates mon to side and back to original position. For Peck and when a held item activates
void AnimTask_RotateMonToSideAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]);
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[0];
+15 -15
View File
@@ -81,7 +81,7 @@ static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] =
#define TAG_MOVE_EFFECT_MON_1 55125
#define TAG_MOVE_EFFECT_MON_2 55126
static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
static const struct SpriteTemplate sSpriteTemplates_MoveEffectMons[] =
{
{
.tileTag = TAG_MOVE_EFFECT_MON_1,
@@ -103,7 +103,7 @@ static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
}
};
static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] =
static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] =
{
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1, },
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
@@ -440,7 +440,7 @@ void SetCallbackToStoredInData6(struct Sprite *sprite)
#define sAmplitudeX sAmplitude
#define sAmplitudeY data[4]
// TranslateSpriteInWavePattern
// TranslateSpriteInLissajousCurve
#define sCirclePosX sCirclePos
#define sCircleSpeedX sCircleSpeed
#define sCirclePosY data[4]
@@ -487,7 +487,7 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite)
// Unused
// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc.
static void TranslateSpriteInWavePattern(struct Sprite *sprite)
static void TranslateSpriteInLissajousCurve(struct Sprite *sprite)
{
if (sprite->sDuration)
{
@@ -1508,13 +1508,13 @@ u32 GetBattleMonSpritePalettesMask(u8 playerLeft, u8 playerRight, u8 opponentLef
return selectedPalettes;
}
// Presumably something commented here, just returns arg
u8 AnimDummyReturnArg(u8 battler)
u8 GetSpritePalIdxByBattler(u8 battler)
{
return battler;
}
static u8 GetBattlerAtPosition_(u8 position)
// Unused
static u8 GetSpritePalIdxByPosition(u8 position)
{
return GetBattlerAtPosition(position);
}
@@ -1552,20 +1552,20 @@ void AnimSpriteOnMonPos(struct Sprite *sprite)
// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{
bool8 v1;
bool8 respectMonPicOffsets;
u8 coordType;
if (!(gBattleAnimArgs[5] & 0xff00))
v1 = TRUE;
respectMonPicOffsets = TRUE;
else
v1 = FALSE;
respectMonPicOffsets = FALSE;
if (!(gBattleAnimArgs[5] & 0xff))
coordType = BATTLER_COORD_Y_PIC_OFFSET;
else
coordType = BATTLER_COORD_Y;
InitSpritePosToAnimAttacker(sprite, v1);
InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -2097,8 +2097,8 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm)
{
u8 spriteId;
u16 sheet = LoadSpriteSheet(&sSpriteSheet_MoveEffectMons[id]);
u16 palette = AllocSpritePalette(sSpriteTemplate_MoveEffectMons[id].paletteTag);
u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[id].paletteTag);
if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->buffer == NULL)
gMonSpritesGfxPtr->buffer = AllocZeroed(0x2000);
@@ -2139,9 +2139,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
if (!isBackpic)
spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonFrontPicCoords[species].y_offset, subpriority);
else
spriteId = CreateSprite(&sSpriteTemplate_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority);
spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[id], x, y + gMonBackPicCoords[species].y_offset, subpriority);
if (IsContest())
{
+3 -5
View File
@@ -818,7 +818,7 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId)
{
for (i = 8; i < 13; i++)
{
if (task->data[i] != 64)
if (task->data[i] != MAX_SPRITES)
DestroySprite(&gSprites[task->data[i]]);
}
@@ -997,12 +997,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId)
scanlineParams.dmaDest = &REG_BG2HOFS;
}
i = task->data[14];
while (i <= task->data[14] + 64)
for (i = task->data[14]; i <= task->data[14] + 64; i++)
{
gScanlineEffectRegBuffers[0][i] = task->data[10];
gScanlineEffectRegBuffers[1][i] = task->data[10];
i++;
}
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
@@ -1137,7 +1135,7 @@ static void AnimPsychoBoost(struct Sprite *sprite)
case 1:
if (sprite->affineAnimEnded)
{
PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(-64));
PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER));
ChangeSpriteAffineAnim(sprite, 1);
sprite->data[0]++;
}
+2 -2
View File
@@ -596,8 +596,8 @@ void AnimTask_Rollout(u8 taskId)
task->data[6] = 0;
task->data[7] = 0;
pan1 = BattleAnimAdjustPanning(-64);
pan2 = BattleAnimAdjustPanning(63);
pan1 = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER);
pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
task->data[13] = pan1;
task->data[14] = (pan2 - pan1) / task->data[8];
+2 -2
View File
@@ -100,7 +100,7 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId)
gTasks[taskId].data[12] = r9;
gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step;
SoundTask_LoopSEAdjustPanning_Step(taskId);
gTasks[taskId].func(taskId);
}
static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId)
@@ -385,7 +385,7 @@ void SoundTask_AdjustPanningVar(u8 taskId)
gTasks[taskId].data[11] = sourcePan;
gTasks[taskId].func = SoundTask_AdjustPanningVar_Step;
SoundTask_AdjustPanningVar_Step(taskId);
gTasks[taskId].func(taskId);
}
static void SoundTask_AdjustPanningVar_Step(u8 taskId)
+7 -7
View File
@@ -550,8 +550,8 @@ static void LoadHealthboxPalsForLevelUp(u8 *paletteId1, u8 *paletteId2, u8 battl
healthBoxSpriteId = gHealthboxSpriteIds[battler];
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
*paletteId1 = AllocSpritePalette(0xD709);
*paletteId2 = AllocSpritePalette(0xD70A);
*paletteId1 = AllocSpritePalette(TAG_HEALTHBOX_PALS_1);
*paletteId2 = AllocSpritePalette(TAG_HEALTHBOX_PALS_2);
offset1 = (gSprites[healthBoxSpriteId].oam.paletteNum * 16) + 0x100;
offset2 = (gSprites[spriteId2].oam.paletteNum * 16) + 0x100;
@@ -580,10 +580,10 @@ static void FreeHealthboxPalsForLevelUp(u8 battler)
spriteId1 = gSprites[healthBoxSpriteId].oam.affineParam;
spriteId2 = gSprites[healthBoxSpriteId].data[5];
FreeSpritePaletteByTag(0xD709);
FreeSpritePaletteByTag(0xD70A);
paletteId1 = IndexOfSpritePaletteTag(0xD6FF);
paletteId2 = IndexOfSpritePaletteTag(0xD704);
FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_1);
FreeSpritePaletteByTag(TAG_HEALTHBOX_PALS_2);
paletteId1 = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PAL);
paletteId2 = IndexOfSpritePaletteTag(TAG_HEALTHBAR_PAL);
gSprites[healthBoxSpriteId].oam.paletteNum = paletteId1;
gSprites[spriteId1].oam.paletteNum = paletteId1;
gSprites[spriteId2].oam.paletteNum = paletteId2;
@@ -611,7 +611,7 @@ static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId)
if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11])
{
gTasks[taskId].data[0] = 0;
paletteNum = IndexOfSpritePaletteTag(0xD709);
paletteNum = IndexOfSpritePaletteTag(TAG_HEALTHBOX_PALS_1);
colorOffset = gTasks[taskId].data[10] == 0 ? 6 : 2;
switch (gTasks[taskId].data[1])
{
+3 -3
View File
@@ -97,7 +97,7 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++)
{
if (battler != animBattlers[0] && battler != animBattlers[1] && IsBattlerSpriteVisible(battler))
selectedPalettes |= 0x10000 << AnimDummyReturnArg(battler);
selectedPalettes |= 0x10000 << GetSpritePalIdxByBattler(battler);
}
StartBlendAnimSpriteColor(taskId, selectedPalettes);
@@ -535,9 +535,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
gTasks[taskId].func = StatsChangeAnimation_Step3;
if (sAnimStatsChangeData->data[0] == 0)
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64));
PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
else
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64));
PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(SOUND_PAN_ATTACKER));
}
static void StatsChangeAnimation_Step3(u8 taskId)
+58 -178
View File
@@ -38,9 +38,25 @@ static void BufferArenaOpponentName(void);
static void SpriteCB_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
static const s8 sMindRatings[] =
#define JUDGEMENT_STATE_FINISHED 8
#define TAG_JUDGEMENT_ICON 1000
enum {
ANIM_ICON_X, // Player lost
ANIM_ICON_TRIANGLE, // Tie
ANIM_ICON_CIRCLE, // Player won
ANIM_ICON_LINE, // Line segment for separating the score total at the bottom
};
// This table holds the number of points to add to the 'mind' score for each move.
// All moves with power != 0 give 1 point, with the following exceptions:
// - Counter, Mirror Coat, and Bide give 0 points
// - Fake Out subtracts 1 point
// All moves with power == 0 give 0 points, with the following exceptions:
// - Protect, Detect, and Endure subtract 1 point
static const s8 sMindRatings[MOVES_COUNT] =
{
[MOVE_NONE] = 0,
[MOVE_POUND] = 1,
[MOVE_KARATE_CHOP] = 1,
[MOVE_DOUBLE_SLAP] = 1,
@@ -54,11 +70,9 @@ static const s8 sMindRatings[] =
[MOVE_VICE_GRIP] = 1,
[MOVE_GUILLOTINE] = 1,
[MOVE_RAZOR_WIND] = 1,
[MOVE_SWORDS_DANCE] = 0,
[MOVE_CUT] = 1,
[MOVE_GUST] = 1,
[MOVE_WING_ATTACK] = 1,
[MOVE_WHIRLWIND] = 0,
[MOVE_FLY] = 1,
[MOVE_BIND] = 1,
[MOVE_SLAM] = 1,
@@ -68,7 +82,6 @@ static const s8 sMindRatings[] =
[MOVE_MEGA_KICK] = 1,
[MOVE_JUMP_KICK] = 1,
[MOVE_ROLLING_KICK] = 1,
[MOVE_SAND_ATTACK] = 0,
[MOVE_HEADBUTT] = 1,
[MOVE_HORN_ATTACK] = 1,
[MOVE_FURY_ATTACK] = 1,
@@ -79,22 +92,14 @@ static const s8 sMindRatings[] =
[MOVE_TAKE_DOWN] = 1,
[MOVE_THRASH] = 1,
[MOVE_DOUBLE_EDGE] = 1,
[MOVE_TAIL_WHIP] = 0,
[MOVE_POISON_STING] = 1,
[MOVE_TWINEEDLE] = 1,
[MOVE_PIN_MISSILE] = 1,
[MOVE_LEER] = 0,
[MOVE_BITE] = 1,
[MOVE_GROWL] = 0,
[MOVE_ROAR] = 0,
[MOVE_SING] = 0,
[MOVE_SUPERSONIC] = 0,
[MOVE_SONIC_BOOM] = 1,
[MOVE_DISABLE] = 0,
[MOVE_ACID] = 1,
[MOVE_EMBER] = 1,
[MOVE_FLAMETHROWER] = 1,
[MOVE_MIST] = 0,
[MOVE_WATER_GUN] = 1,
[MOVE_HYDRO_PUMP] = 1,
[MOVE_SURF] = 1,
@@ -108,58 +113,27 @@ static const s8 sMindRatings[] =
[MOVE_DRILL_PECK] = 1,
[MOVE_SUBMISSION] = 1,
[MOVE_LOW_KICK] = 1,
[MOVE_COUNTER] = 0,
[MOVE_SEISMIC_TOSS] = 1,
[MOVE_STRENGTH] = 1,
[MOVE_ABSORB] = 1,
[MOVE_MEGA_DRAIN] = 1,
[MOVE_LEECH_SEED] = 0,
[MOVE_GROWTH] = 0,
[MOVE_RAZOR_LEAF] = 1,
[MOVE_SOLAR_BEAM] = 1,
[MOVE_POISON_POWDER] = 0,
[MOVE_STUN_SPORE] = 0,
[MOVE_SLEEP_POWDER] = 0,
[MOVE_PETAL_DANCE] = 1,
[MOVE_STRING_SHOT] = 0,
[MOVE_DRAGON_RAGE] = 1,
[MOVE_FIRE_SPIN] = 1,
[MOVE_THUNDER_SHOCK] = 1,
[MOVE_THUNDERBOLT] = 1,
[MOVE_THUNDER_WAVE] = 0,
[MOVE_THUNDER] = 1,
[MOVE_ROCK_THROW] = 1,
[MOVE_EARTHQUAKE] = 1,
[MOVE_FISSURE] = 1,
[MOVE_DIG] = 1,
[MOVE_TOXIC] = 0,
[MOVE_CONFUSION] = 1,
[MOVE_PSYCHIC] = 1,
[MOVE_HYPNOSIS] = 0,
[MOVE_MEDITATE] = 0,
[MOVE_AGILITY] = 0,
[MOVE_QUICK_ATTACK] = 1,
[MOVE_RAGE] = 1,
[MOVE_TELEPORT] = 0,
[MOVE_NIGHT_SHADE] = 1,
[MOVE_MIMIC] = 0,
[MOVE_SCREECH] = 0,
[MOVE_DOUBLE_TEAM] = 0,
[MOVE_RECOVER] = 0,
[MOVE_HARDEN] = 0,
[MOVE_MINIMIZE] = 0,
[MOVE_SMOKESCREEN] = 0,
[MOVE_CONFUSE_RAY] = 0,
[MOVE_WITHDRAW] = 0,
[MOVE_DEFENSE_CURL] = 0,
[MOVE_BARRIER] = 0,
[MOVE_LIGHT_SCREEN] = 0,
[MOVE_HAZE] = 0,
[MOVE_REFLECT] = 0,
[MOVE_FOCUS_ENERGY] = 0,
[MOVE_BIDE] = 0,
[MOVE_METRONOME] = 0,
[MOVE_MIRROR_MOVE] = 0,
[MOVE_SELF_DESTRUCT] = 1,
[MOVE_EGG_BOMB] = 1,
[MOVE_LICK] = 1,
@@ -173,118 +147,67 @@ static const s8 sMindRatings[] =
[MOVE_SKULL_BASH] = 1,
[MOVE_SPIKE_CANNON] = 1,
[MOVE_CONSTRICT] = 1,
[MOVE_AMNESIA] = 0,
[MOVE_KINESIS] = 0,
[MOVE_SOFT_BOILED] = 0,
[MOVE_HI_JUMP_KICK] = 1,
[MOVE_GLARE] = 0,
[MOVE_DREAM_EATER] = 1,
[MOVE_POISON_GAS] = 0,
[MOVE_BARRAGE] = 1,
[MOVE_LEECH_LIFE] = 1,
[MOVE_LOVELY_KISS] = 0,
[MOVE_SKY_ATTACK] = 1,
[MOVE_TRANSFORM] = 0,
[MOVE_BUBBLE] = 1,
[MOVE_DIZZY_PUNCH] = 1,
[MOVE_SPORE] = 0,
[MOVE_FLASH] = 0,
[MOVE_PSYWAVE] = 1,
[MOVE_SPLASH] = 0,
[MOVE_ACID_ARMOR] = 0,
[MOVE_CRABHAMMER] = 1,
[MOVE_EXPLOSION] = 1,
[MOVE_FURY_SWIPES] = 1,
[MOVE_BONEMERANG] = 1,
[MOVE_REST] = 0,
[MOVE_ROCK_SLIDE] = 1,
[MOVE_HYPER_FANG] = 1,
[MOVE_SHARPEN] = 0,
[MOVE_CONVERSION] = 0,
[MOVE_TRI_ATTACK] = 1,
[MOVE_SUPER_FANG] = 1,
[MOVE_SLASH] = 1,
[MOVE_SUBSTITUTE] = 0,
[MOVE_STRUGGLE] = 1,
[MOVE_SKETCH] = 0,
[MOVE_TRIPLE_KICK] = 1,
[MOVE_THIEF] = 1,
[MOVE_SPIDER_WEB] = 0,
[MOVE_MIND_READER] = 0,
[MOVE_NIGHTMARE] = 0,
[MOVE_FLAME_WHEEL] = 1,
[MOVE_SNORE] = 1,
[MOVE_CURSE] = 0,
[MOVE_FLAIL] = 1,
[MOVE_CONVERSION_2] = 0,
[MOVE_AEROBLAST] = 1,
[MOVE_COTTON_SPORE] = 0,
[MOVE_REVERSAL] = 1,
[MOVE_SPITE] = 0,
[MOVE_POWDER_SNOW] = 1,
[MOVE_PROTECT] = -1,
[MOVE_MACH_PUNCH] = 1,
[MOVE_SCARY_FACE] = 0,
[MOVE_FAINT_ATTACK] = 1,
[MOVE_SWEET_KISS] = 0,
[MOVE_BELLY_DRUM] = 0,
[MOVE_SLUDGE_BOMB] = 1,
[MOVE_MUD_SLAP] = 1,
[MOVE_OCTAZOOKA] = 1,
[MOVE_SPIKES] = 0,
[MOVE_ZAP_CANNON] = 1,
[MOVE_FORESIGHT] = 0,
[MOVE_DESTINY_BOND] = 0,
[MOVE_PERISH_SONG] = 0,
[MOVE_ICY_WIND] = 1,
[MOVE_DETECT] = -1,
[MOVE_BONE_RUSH] = 1,
[MOVE_LOCK_ON] = 0,
[MOVE_OUTRAGE] = 1,
[MOVE_SANDSTORM] = 0,
[MOVE_GIGA_DRAIN] = 1,
[MOVE_ENDURE] = -1,
[MOVE_CHARM] = 0,
[MOVE_ROLLOUT] = 1,
[MOVE_FALSE_SWIPE] = 1,
[MOVE_SWAGGER] = 0,
[MOVE_MILK_DRINK] = 0,
[MOVE_SPARK] = 1,
[MOVE_FURY_CUTTER] = 1,
[MOVE_STEEL_WING] = 1,
[MOVE_MEAN_LOOK] = 0,
[MOVE_ATTRACT] = 0,
[MOVE_SLEEP_TALK] = 0,
[MOVE_HEAL_BELL] = 0,
[MOVE_RETURN] = 1,
[MOVE_PRESENT] = 1,
[MOVE_FRUSTRATION] = 1,
[MOVE_SAFEGUARD] = 0,
[MOVE_PAIN_SPLIT] = 0,
[MOVE_SACRED_FIRE] = 1,
[MOVE_MAGNITUDE] = 1,
[MOVE_DYNAMIC_PUNCH] = 1,
[MOVE_MEGAHORN] = 1,
[MOVE_DRAGON_BREATH] = 1,
[MOVE_BATON_PASS] = 0,
[MOVE_ENCORE] = 0,
[MOVE_PURSUIT] = 1,
[MOVE_RAPID_SPIN] = 1,
[MOVE_SWEET_SCENT] = 0,
[MOVE_IRON_TAIL] = 1,
[MOVE_METAL_CLAW] = 1,
[MOVE_VITAL_THROW] = 1,
[MOVE_MORNING_SUN] = 0,
[MOVE_SYNTHESIS] = 0,
[MOVE_MOONLIGHT] = 0,
[MOVE_HIDDEN_POWER] = 1,
[MOVE_CROSS_CHOP] = 1,
[MOVE_TWISTER] = 1,
[MOVE_RAIN_DANCE] = 0,
[MOVE_SUNNY_DAY] = 0,
[MOVE_CRUNCH] = 1,
[MOVE_MIRROR_COAT] = 0,
[MOVE_PSYCH_UP] = 0,
[MOVE_EXTREME_SPEED] = 1,
[MOVE_ANCIENT_POWER] = 1,
[MOVE_SHADOW_BALL] = 1,
@@ -294,56 +217,25 @@ static const s8 sMindRatings[] =
[MOVE_BEAT_UP] = 1,
[MOVE_FAKE_OUT] = -1,
[MOVE_UPROAR] = 1,
[MOVE_STOCKPILE] = 0,
[MOVE_SPIT_UP] = 1,
[MOVE_SWALLOW] = 0,
[MOVE_HEAT_WAVE] = 1,
[MOVE_HAIL] = 0,
[MOVE_TORMENT] = 0,
[MOVE_FLATTER] = 0,
[MOVE_WILL_O_WISP] = 0,
[MOVE_MEMENTO] = 0,
[MOVE_FACADE] = 1,
[MOVE_FOCUS_PUNCH] = 1,
[MOVE_SMELLING_SALT] = 1,
[MOVE_FOLLOW_ME] = 0,
[MOVE_NATURE_POWER] = 0,
[MOVE_CHARGE] = 0,
[MOVE_TAUNT] = 0,
[MOVE_HELPING_HAND] = 0,
[MOVE_TRICK] = 0,
[MOVE_ROLE_PLAY] = 0,
[MOVE_WISH] = 0,
[MOVE_ASSIST] = 0,
[MOVE_INGRAIN] = 0,
[MOVE_SUPERPOWER] = 1,
[MOVE_MAGIC_COAT] = 0,
[MOVE_RECYCLE] = 0,
[MOVE_REVENGE] = 1,
[MOVE_BRICK_BREAK] = 1,
[MOVE_YAWN] = 0,
[MOVE_KNOCK_OFF] = 1,
[MOVE_ENDEAVOR] = 1,
[MOVE_ERUPTION] = 1,
[MOVE_SKILL_SWAP] = 0,
[MOVE_IMPRISON] = 0,
[MOVE_REFRESH] = 0,
[MOVE_GRUDGE] = 0,
[MOVE_SNATCH] = 0,
[MOVE_SECRET_POWER] = 1,
[MOVE_DIVE] = 1,
[MOVE_ARM_THRUST] = 1,
[MOVE_CAMOUFLAGE] = 0,
[MOVE_TAIL_GLOW] = 0,
[MOVE_LUSTER_PURGE] = 1,
[MOVE_MIST_BALL] = 1,
[MOVE_FEATHER_DANCE] = 0,
[MOVE_TEETER_DANCE] = 0,
[MOVE_BLAZE_KICK] = 1,
[MOVE_MUD_SPORT] = 0,
[MOVE_ICE_BALL] = 1,
[MOVE_NEEDLE_ARM] = 1,
[MOVE_SLACK_OFF] = 0,
[MOVE_HYPER_VOICE] = 1,
[MOVE_POISON_FANG] = 1,
[MOVE_CRUSH_CLAW] = 1,
@@ -352,17 +244,10 @@ static const s8 sMindRatings[] =
[MOVE_METEOR_MASH] = 1,
[MOVE_ASTONISH] = 1,
[MOVE_WEATHER_BALL] = 1,
[MOVE_AROMATHERAPY] = 0,
[MOVE_FAKE_TEARS] = 0,
[MOVE_AIR_CUTTER] = 1,
[MOVE_OVERHEAT] = 1,
[MOVE_ODOR_SLEUTH] = 0,
[MOVE_ROCK_TOMB] = 1,
[MOVE_SILVER_WIND] = 1,
[MOVE_METAL_SOUND] = 0,
[MOVE_GRASS_WHISTLE] = 0,
[MOVE_TICKLE] = 0,
[MOVE_COSMIC_POWER] = 0,
[MOVE_WATER_SPOUT] = 1,
[MOVE_SIGNAL_BEAM] = 1,
[MOVE_SHADOW_PUNCH] = 1,
@@ -374,22 +259,15 @@ static const s8 sMindRatings[] =
[MOVE_BULLET_SEED] = 1,
[MOVE_AERIAL_ACE] = 1,
[MOVE_ICICLE_SPEAR] = 1,
[MOVE_IRON_DEFENSE] = 0,
[MOVE_BLOCK] = 0,
[MOVE_HOWL] = 0,
[MOVE_DRAGON_CLAW] = 1,
[MOVE_FRENZY_PLANT] = 1,
[MOVE_BULK_UP] = 0,
[MOVE_BOUNCE] = 1,
[MOVE_MUD_SHOT] = 1,
[MOVE_POISON_TAIL] = 1,
[MOVE_COVET] = 1,
[MOVE_VOLT_TACKLE] = 1,
[MOVE_MAGICAL_LEAF] = 1,
[MOVE_WATER_SPORT] = 0,
[MOVE_CALM_MIND] = 0,
[MOVE_LEAF_BLADE] = 1,
[MOVE_DRAGON_DANCE] = 0,
[MOVE_ROCK_BLAST] = 1,
[MOVE_SHOCK_WAVE] = 1,
[MOVE_WATER_PULSE] = 1,
@@ -397,9 +275,7 @@ static const s8 sMindRatings[] =
[MOVE_PSYCHO_BOOST] = 1,
};
#define TAG_JUDGEMENT_ICON 1000
static const struct OamData sJudgementIconOamData =
static const struct OamData sOam_JudgementIcon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -416,44 +292,44 @@ static const struct OamData sJudgementIconOamData =
.affineParam = 0
};
static const union AnimCmd sJudgementIconAnimCmd0[] =
static const union AnimCmd sAnim_JudgementIcon_X[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd1[] =
static const union AnimCmd sAnim_JudgementIcon_Triangle[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd2[] =
static const union AnimCmd sAnim_JudgementIcon_Circle[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END
};
static const union AnimCmd sJudgementIconAnimCmd3[] =
static const union AnimCmd sAnim_JudgementIcon_Line[] =
{
ANIMCMD_FRAME(12, 1),
ANIMCMD_END
};
static const union AnimCmd *const sJudgementIconAnimCmds[] =
static const union AnimCmd *const sAnims_JudgementIcon[] =
{
sJudgementIconAnimCmd0,
sJudgementIconAnimCmd1,
sJudgementIconAnimCmd2,
sJudgementIconAnimCmd3
[ANIM_ICON_X] = sAnim_JudgementIcon_X,
[ANIM_ICON_TRIANGLE] = sAnim_JudgementIcon_Triangle,
[ANIM_ICON_CIRCLE] = sAnim_JudgementIcon_Circle,
[ANIM_ICON_LINE] = sAnim_JudgementIcon_Line,
};
static const struct SpriteTemplate sSpriteTemplate_JudgmentIcon =
{
.tileTag = TAG_JUDGEMENT_ICON,
.paletteTag = TAG_NONE,
.oam = &sJudgementIconOamData,
.anims = sJudgementIconAnimCmds,
.oam = &sOam_JudgementIcon,
.anims = sAnims_JudgementIcon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_JudgmentIcon,
@@ -507,12 +383,12 @@ void CallBattleArenaFunction(void)
u8 BattleArena_ShowJudgmentWindow(u8 *state)
{
int i;
u8 ret = 0;
u8 result = ARENA_RESULT_RUNNING;
switch (*state)
{
case 0:
BeginNormalPaletteFade(0x7FFFFF1C, 4, 0, 8, RGB_BLACK);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL);
LoadCompressedSpriteSheet(sBattleArenaJudgementSymbolsSpriteSheet);
LoadCompressedPalette(gBattleArenaJudgementSymbolsPalette, 0x1F0, 0x20);
gBattle_WIN0H = 0xFF;
@@ -549,13 +425,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
// Create dividing line for the the score totals at the bottom
for (i = 0; i < 8; i++)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_JudgmentIcon, 64 + i * 16, 84, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
StartSpriteAnim(&gSprites[spriteId], ANIM_ICON_LINE);
}
ret = 1;
result = ARENA_RESULT_STEP_DONE;
(*state)++;
}
break;
@@ -566,7 +444,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 5:
PlaySE(SE_ARENA_TIMEUP1);
@@ -575,7 +453,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 6:
PlaySE(SE_ARENA_TIMEUP1);
@@ -584,49 +462,50 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
result = ARENA_RESULT_STEP_DONE;
break;
case 7:
PlaySE(SE_ARENA_TIMEUP2);
if (gBattleTextBuff1[0] > gBattleTextBuff2[0])
{
ret = 2;
result = ARENA_RESULT_PLAYER_WON;
gBattleScripting.battler = 0;
}
else if (gBattleTextBuff1[0] < gBattleTextBuff2[0])
{
ret = 3;
result = ARENA_RESULT_PLAYER_LOST;
gBattleScripting.battler = 1;
}
else
{
ret = 4;
result = ARENA_RESULT_TIE;
}
(*state)++;
break;
case 8:
case JUDGEMENT_STATE_FINISHED:
// Finishing this state is the indicator to SpriteCB_JudgmentIcon that its safe to destroy the judgement icon sprites
(*state)++;
break;
case 9:
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
case JUDGEMENT_STATE_FINISHED + 1:
SetGpuReg(REG_OFFSET_WININ, (WININ_WIN0_ALL & ~WININ_WIN0_BG0) | WININ_WIN1_ALL);
HandleBattleWindow(5, 0, 24, 13, WINDOW_CLEAR);
CopyBgTilemapBufferToVram(0);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256);
BeginNormalPaletteFade(0x7FFFFF1C, 4, 8, 0, RGB_BLACK);
(*state)++;
break;
case 10:
case JUDGEMENT_STATE_FINISHED + 2:
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
FreeSpriteTilesByTag(TAG_JUDGEMENT_ICON);
ret = 1;
result = ARENA_RESULT_STEP_DONE;
(*state)++;
}
break;
}
return ret;
return result;
}
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
@@ -656,7 +535,8 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
if (pointsPlayer > pointsOpponent)
{
animNum = 2;
animNum = ANIM_ICON_CIRCLE;
// +2 to score total for winning
if (battler != 0)
gBattleTextBuff2[0] += 2;
else
@@ -664,7 +544,8 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
}
else if (pointsPlayer == pointsOpponent)
{
animNum = 1;
animNum = ANIM_ICON_TRIANGLE;
// +1 to score total for a tie
if (battler != 0)
gBattleTextBuff2[0] += 1;
else
@@ -672,7 +553,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
}
else
{
animNum = 0;
animNum = ANIM_ICON_X;
}
pointsPlayer = CreateSprite(&sSpriteTemplate_JudgmentIcon, x, y, 0);
@@ -681,7 +562,7 @@ static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler)
static void SpriteCB_JudgmentIcon(struct Sprite *sprite)
{
if (gBattleCommunication[0] > 8)
if (gBattleCommunication[0] > JUDGEMENT_STATE_FINISHED)
DestroySprite(sprite);
}
@@ -701,8 +582,7 @@ void BattleArena_InitPoints(void)
void BattleArena_AddMindPoints(u8 battler)
{
s8 *mindPoints = gBattleStruct->arenaMindPoints;
mindPoints[battler] += sMindRatings[gCurrentMove];
gBattleStruct->arenaMindPoints[battler] += sMindRatings[gCurrentMove];
}
void BattleArena_AddSkillPoints(u8 battler)
+5 -2
View File
@@ -6368,7 +6368,10 @@ static void Cmd_various(void)
break;
case VARIOUS_ARENA_JUDGMENT_WINDOW:
i = BattleArena_ShowJudgmentWindow(&gBattleCommunication[0]);
if (i == 0)
// BattleArena_ShowJudgmentWindow's last state was an intermediate step.
// Return without advancing the current instruction so that it will be called again.
if (i == ARENA_RESULT_RUNNING)
return;
gBattleCommunication[1] = i;
@@ -8517,7 +8520,7 @@ static void Cmd_friendshiptodamagecalculation(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25;
else // EFFECT_FRUSTRATION
gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25;
gDynamicBasePower = 10 * (MAX_FRIENDSHIP - gBattleMons[gBattlerAttacker].friendship) / 25;
gBattlescriptCurrInstr++;
}
+251 -251
View File
@@ -1,253 +1,253 @@
const u16 gEasyChatGroup_Pokemon2[] = {
SPECIES_ABRA,
SPECIES_AERODACTYL,
SPECIES_AIPOM,
SPECIES_ALAKAZAM,
SPECIES_AMPHAROS,
SPECIES_ARBOK,
SPECIES_ARCANINE,
SPECIES_ARIADOS,
SPECIES_ARTICUNO,
SPECIES_AZUMARILL,
SPECIES_BAYLEEF,
SPECIES_BEEDRILL,
SPECIES_BELLOSSOM,
SPECIES_BELLSPROUT,
SPECIES_BLASTOISE,
SPECIES_BLISSEY,
SPECIES_BULBASAUR,
SPECIES_BUTTERFREE,
SPECIES_CATERPIE,
SPECIES_CELEBI,
SPECIES_CHANSEY,
SPECIES_CHARIZARD,
SPECIES_CHARMANDER,
SPECIES_CHARMELEON,
SPECIES_CHIKORITA,
SPECIES_CHINCHOU,
SPECIES_CLEFABLE,
SPECIES_CLEFAIRY,
SPECIES_CLEFFA,
SPECIES_CLOYSTER,
SPECIES_CORSOLA,
SPECIES_CROBAT,
SPECIES_CROCONAW,
SPECIES_CUBONE,
SPECIES_CYNDAQUIL,
SPECIES_DELIBIRD,
SPECIES_DEWGONG,
SPECIES_DIGLETT,
SPECIES_DITTO,
SPECIES_DODRIO,
SPECIES_DODUO,
SPECIES_DONPHAN,
SPECIES_DRAGONAIR,
SPECIES_DRAGONITE,
SPECIES_DRATINI,
SPECIES_DROWZEE,
SPECIES_DUGTRIO,
SPECIES_DUNSPARCE,
SPECIES_EEVEE,
SPECIES_EKANS,
SPECIES_ELECTABUZZ,
SPECIES_ELECTRODE,
SPECIES_ELEKID,
SPECIES_ENTEI,
SPECIES_ESPEON,
SPECIES_EXEGGCUTE,
SPECIES_EXEGGUTOR,
SPECIES_FARFETCHD,
SPECIES_FEAROW,
SPECIES_FERALIGATR,
SPECIES_FLAAFFY,
SPECIES_FLAREON,
SPECIES_FORRETRESS,
SPECIES_FURRET,
SPECIES_GASTLY,
SPECIES_GENGAR,
SPECIES_GEODUDE,
SPECIES_GIRAFARIG,
SPECIES_GLIGAR,
SPECIES_GLOOM,
SPECIES_GOLBAT,
SPECIES_GOLDEEN,
SPECIES_GOLDUCK,
SPECIES_GOLEM,
SPECIES_GRANBULL,
SPECIES_GRAVELER,
SPECIES_GRIMER,
SPECIES_GROWLITHE,
SPECIES_GYARADOS,
SPECIES_HAUNTER,
SPECIES_HERACROSS,
SPECIES_HITMONCHAN,
SPECIES_HITMONLEE,
SPECIES_HITMONTOP,
SPECIES_HO_OH,
SPECIES_HOOTHOOT,
SPECIES_HOPPIP,
SPECIES_HORSEA,
SPECIES_HOUNDOOM,
SPECIES_HOUNDOUR,
SPECIES_HYPNO,
SPECIES_IGGLYBUFF,
SPECIES_IVYSAUR,
SPECIES_JIGGLYPUFF,
SPECIES_JOLTEON,
SPECIES_JUMPLUFF,
SPECIES_JYNX,
SPECIES_KABUTO,
SPECIES_KABUTOPS,
SPECIES_KADABRA,
SPECIES_KAKUNA,
SPECIES_KANGASKHAN,
SPECIES_KINGDRA,
SPECIES_KINGLER,
SPECIES_KOFFING,
SPECIES_KRABBY,
SPECIES_LANTURN,
SPECIES_LAPRAS,
SPECIES_LARVITAR,
SPECIES_LEDIAN,
SPECIES_LEDYBA,
SPECIES_LICKITUNG,
SPECIES_LUGIA,
SPECIES_MACHAMP,
SPECIES_MACHOKE,
SPECIES_MACHOP,
SPECIES_MAGBY,
SPECIES_MAGCARGO,
SPECIES_MAGIKARP,
SPECIES_MAGMAR,
SPECIES_MAGNEMITE,
SPECIES_MAGNETON,
SPECIES_MANKEY,
SPECIES_MANTINE,
SPECIES_MAREEP,
SPECIES_MARILL,
SPECIES_MAROWAK,
SPECIES_MEGANIUM,
SPECIES_MEOWTH,
SPECIES_METAPOD,
SPECIES_MEW,
SPECIES_MEWTWO,
SPECIES_MILTANK,
SPECIES_MISDREAVUS,
SPECIES_MOLTRES,
SPECIES_MR_MIME,
SPECIES_MUK,
SPECIES_MURKROW,
SPECIES_NATU,
SPECIES_NIDOKING,
SPECIES_NIDOQUEEN,
SPECIES_NIDORAN_F,
SPECIES_NIDORAN_M,
SPECIES_NIDORINA,
SPECIES_NIDORINO,
SPECIES_NINETALES,
SPECIES_NOCTOWL,
SPECIES_OCTILLERY,
SPECIES_ODDISH,
SPECIES_OMANYTE,
SPECIES_OMASTAR,
SPECIES_ONIX,
SPECIES_PARAS,
SPECIES_PARASECT,
SPECIES_PERSIAN,
SPECIES_PHANPY,
SPECIES_PICHU,
SPECIES_PIDGEOT,
SPECIES_PIDGEOTTO,
SPECIES_PIDGEY,
SPECIES_PIKACHU,
SPECIES_PILOSWINE,
SPECIES_PINECO,
SPECIES_PINSIR,
SPECIES_POLITOED,
SPECIES_POLIWAG,
SPECIES_POLIWHIRL,
SPECIES_POLIWRATH,
SPECIES_PONYTA,
SPECIES_PORYGON,
SPECIES_PORYGON2,
SPECIES_PRIMEAPE,
SPECIES_PSYDUCK,
SPECIES_PUPITAR,
SPECIES_QUAGSIRE,
SPECIES_QUILAVA,
SPECIES_QWILFISH,
SPECIES_RAICHU,
SPECIES_RAIKOU,
SPECIES_RAPIDASH,
SPECIES_RATICATE,
SPECIES_RATTATA,
SPECIES_REMORAID,
SPECIES_RHYDON,
SPECIES_RHYHORN,
SPECIES_SANDSHREW,
SPECIES_SANDSLASH,
SPECIES_SCIZOR,
SPECIES_SCYTHER,
SPECIES_SEADRA,
SPECIES_SEAKING,
SPECIES_SEEL,
SPECIES_SENTRET,
SPECIES_SHELLDER,
SPECIES_SHUCKLE,
SPECIES_SKARMORY,
SPECIES_SKIPLOOM,
SPECIES_SLOWBRO,
SPECIES_SLOWKING,
SPECIES_SLOWPOKE,
SPECIES_SLUGMA,
SPECIES_SMEARGLE,
SPECIES_SMOOCHUM,
SPECIES_SNEASEL,
SPECIES_SNORLAX,
SPECIES_SNUBBULL,
SPECIES_SPEAROW,
SPECIES_SPINARAK,
SPECIES_SQUIRTLE,
SPECIES_STANTLER,
SPECIES_STARMIE,
SPECIES_STARYU,
SPECIES_STEELIX,
SPECIES_SUDOWOODO,
SPECIES_SUICUNE,
SPECIES_SUNFLORA,
SPECIES_SUNKERN,
SPECIES_SWINUB,
SPECIES_TANGELA,
SPECIES_TAUROS,
SPECIES_TEDDIURSA,
SPECIES_TENTACOOL,
SPECIES_TENTACRUEL,
SPECIES_TOGEPI,
SPECIES_TOGETIC,
SPECIES_TOTODILE,
SPECIES_TYPHLOSION,
SPECIES_TYRANITAR,
SPECIES_TYROGUE,
SPECIES_UMBREON,
SPECIES_UNOWN,
SPECIES_URSARING,
SPECIES_VAPOREON,
SPECIES_VENOMOTH,
SPECIES_VENONAT,
SPECIES_VENUSAUR,
SPECIES_VICTREEBEL,
SPECIES_VILEPLUME,
SPECIES_VOLTORB,
SPECIES_VULPIX,
SPECIES_WARTORTLE,
SPECIES_WEEDLE,
SPECIES_WEEPINBELL,
SPECIES_WEEZING,
SPECIES_WIGGLYTUFF,
SPECIES_WOBBUFFET,
SPECIES_WOOPER,
SPECIES_XATU,
SPECIES_YANMA,
SPECIES_ZAPDOS,
SPECIES_ZUBAT,
SPECIES_ABRA,
SPECIES_AERODACTYL,
SPECIES_AIPOM,
SPECIES_ALAKAZAM,
SPECIES_AMPHAROS,
SPECIES_ARBOK,
SPECIES_ARCANINE,
SPECIES_ARIADOS,
SPECIES_ARTICUNO,
SPECIES_AZUMARILL,
SPECIES_BAYLEEF,
SPECIES_BEEDRILL,
SPECIES_BELLOSSOM,
SPECIES_BELLSPROUT,
SPECIES_BLASTOISE,
SPECIES_BLISSEY,
SPECIES_BULBASAUR,
SPECIES_BUTTERFREE,
SPECIES_CATERPIE,
SPECIES_CELEBI,
SPECIES_CHANSEY,
SPECIES_CHARIZARD,
SPECIES_CHARMANDER,
SPECIES_CHARMELEON,
SPECIES_CHIKORITA,
SPECIES_CHINCHOU,
SPECIES_CLEFABLE,
SPECIES_CLEFAIRY,
SPECIES_CLEFFA,
SPECIES_CLOYSTER,
SPECIES_CORSOLA,
SPECIES_CROBAT,
SPECIES_CROCONAW,
SPECIES_CUBONE,
SPECIES_CYNDAQUIL,
SPECIES_DELIBIRD,
SPECIES_DEWGONG,
SPECIES_DIGLETT,
SPECIES_DITTO,
SPECIES_DODRIO,
SPECIES_DODUO,
SPECIES_DONPHAN,
SPECIES_DRAGONAIR,
SPECIES_DRAGONITE,
SPECIES_DRATINI,
SPECIES_DROWZEE,
SPECIES_DUGTRIO,
SPECIES_DUNSPARCE,
SPECIES_EEVEE,
SPECIES_EKANS,
SPECIES_ELECTABUZZ,
SPECIES_ELECTRODE,
SPECIES_ELEKID,
SPECIES_ENTEI,
SPECIES_ESPEON,
SPECIES_EXEGGCUTE,
SPECIES_EXEGGUTOR,
SPECIES_FARFETCHD,
SPECIES_FEAROW,
SPECIES_FERALIGATR,
SPECIES_FLAAFFY,
SPECIES_FLAREON,
SPECIES_FORRETRESS,
SPECIES_FURRET,
SPECIES_GASTLY,
SPECIES_GENGAR,
SPECIES_GEODUDE,
SPECIES_GIRAFARIG,
SPECIES_GLIGAR,
SPECIES_GLOOM,
SPECIES_GOLBAT,
SPECIES_GOLDEEN,
SPECIES_GOLDUCK,
SPECIES_GOLEM,
SPECIES_GRANBULL,
SPECIES_GRAVELER,
SPECIES_GRIMER,
SPECIES_GROWLITHE,
SPECIES_GYARADOS,
SPECIES_HAUNTER,
SPECIES_HERACROSS,
SPECIES_HITMONCHAN,
SPECIES_HITMONLEE,
SPECIES_HITMONTOP,
SPECIES_HO_OH,
SPECIES_HOOTHOOT,
SPECIES_HOPPIP,
SPECIES_HORSEA,
SPECIES_HOUNDOOM,
SPECIES_HOUNDOUR,
SPECIES_HYPNO,
SPECIES_IGGLYBUFF,
SPECIES_IVYSAUR,
SPECIES_JIGGLYPUFF,
SPECIES_JOLTEON,
SPECIES_JUMPLUFF,
SPECIES_JYNX,
SPECIES_KABUTO,
SPECIES_KABUTOPS,
SPECIES_KADABRA,
SPECIES_KAKUNA,
SPECIES_KANGASKHAN,
SPECIES_KINGDRA,
SPECIES_KINGLER,
SPECIES_KOFFING,
SPECIES_KRABBY,
SPECIES_LANTURN,
SPECIES_LAPRAS,
SPECIES_LARVITAR,
SPECIES_LEDIAN,
SPECIES_LEDYBA,
SPECIES_LICKITUNG,
SPECIES_LUGIA,
SPECIES_MACHAMP,
SPECIES_MACHOKE,
SPECIES_MACHOP,
SPECIES_MAGBY,
SPECIES_MAGCARGO,
SPECIES_MAGIKARP,
SPECIES_MAGMAR,
SPECIES_MAGNEMITE,
SPECIES_MAGNETON,
SPECIES_MANKEY,
SPECIES_MANTINE,
SPECIES_MAREEP,
SPECIES_MARILL,
SPECIES_MAROWAK,
SPECIES_MEGANIUM,
SPECIES_MEOWTH,
SPECIES_METAPOD,
SPECIES_MEW,
SPECIES_MEWTWO,
SPECIES_MILTANK,
SPECIES_MISDREAVUS,
SPECIES_MOLTRES,
SPECIES_MR_MIME,
SPECIES_MUK,
SPECIES_MURKROW,
SPECIES_NATU,
SPECIES_NIDOKING,
SPECIES_NIDOQUEEN,
SPECIES_NIDORAN_F,
SPECIES_NIDORAN_M,
SPECIES_NIDORINA,
SPECIES_NIDORINO,
SPECIES_NINETALES,
SPECIES_NOCTOWL,
SPECIES_OCTILLERY,
SPECIES_ODDISH,
SPECIES_OMANYTE,
SPECIES_OMASTAR,
SPECIES_ONIX,
SPECIES_PARAS,
SPECIES_PARASECT,
SPECIES_PERSIAN,
SPECIES_PHANPY,
SPECIES_PICHU,
SPECIES_PIDGEOT,
SPECIES_PIDGEOTTO,
SPECIES_PIDGEY,
SPECIES_PIKACHU,
SPECIES_PILOSWINE,
SPECIES_PINECO,
SPECIES_PINSIR,
SPECIES_POLITOED,
SPECIES_POLIWAG,
SPECIES_POLIWHIRL,
SPECIES_POLIWRATH,
SPECIES_PONYTA,
SPECIES_PORYGON,
SPECIES_PORYGON2,
SPECIES_PRIMEAPE,
SPECIES_PSYDUCK,
SPECIES_PUPITAR,
SPECIES_QUAGSIRE,
SPECIES_QUILAVA,
SPECIES_QWILFISH,
SPECIES_RAICHU,
SPECIES_RAIKOU,
SPECIES_RAPIDASH,
SPECIES_RATICATE,
SPECIES_RATTATA,
SPECIES_REMORAID,
SPECIES_RHYDON,
SPECIES_RHYHORN,
SPECIES_SANDSHREW,
SPECIES_SANDSLASH,
SPECIES_SCIZOR,
SPECIES_SCYTHER,
SPECIES_SEADRA,
SPECIES_SEAKING,
SPECIES_SEEL,
SPECIES_SENTRET,
SPECIES_SHELLDER,
SPECIES_SHUCKLE,
SPECIES_SKARMORY,
SPECIES_SKIPLOOM,
SPECIES_SLOWBRO,
SPECIES_SLOWKING,
SPECIES_SLOWPOKE,
SPECIES_SLUGMA,
SPECIES_SMEARGLE,
SPECIES_SMOOCHUM,
SPECIES_SNEASEL,
SPECIES_SNORLAX,
SPECIES_SNUBBULL,
SPECIES_SPEAROW,
SPECIES_SPINARAK,
SPECIES_SQUIRTLE,
SPECIES_STANTLER,
SPECIES_STARMIE,
SPECIES_STARYU,
SPECIES_STEELIX,
SPECIES_SUDOWOODO,
SPECIES_SUICUNE,
SPECIES_SUNFLORA,
SPECIES_SUNKERN,
SPECIES_SWINUB,
SPECIES_TANGELA,
SPECIES_TAUROS,
SPECIES_TEDDIURSA,
SPECIES_TENTACOOL,
SPECIES_TENTACRUEL,
SPECIES_TOGEPI,
SPECIES_TOGETIC,
SPECIES_TOTODILE,
SPECIES_TYPHLOSION,
SPECIES_TYRANITAR,
SPECIES_TYROGUE,
SPECIES_UMBREON,
SPECIES_UNOWN,
SPECIES_URSARING,
SPECIES_VAPOREON,
SPECIES_VENOMOTH,
SPECIES_VENONAT,
SPECIES_VENUSAUR,
SPECIES_VICTREEBEL,
SPECIES_VILEPLUME,
SPECIES_VOLTORB,
SPECIES_VULPIX,
SPECIES_WARTORTLE,
SPECIES_WEEDLE,
SPECIES_WEEPINBELL,
SPECIES_WEEZING,
SPECIES_WIGGLYTUFF,
SPECIES_WOBBUFFET,
SPECIES_WOOPER,
SPECIES_XATU,
SPECIES_YANMA,
SPECIES_ZAPDOS,
SPECIES_ZUBAT,
};
@@ -253,9 +253,9 @@ u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *, struct Spr
u8 MovementAction_Levitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_LockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Finish(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FlyUp_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FlyUp_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Fly_Finish(struct ObjectEvent *, struct Sprite *);
@@ -410,8 +410,8 @@ u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpLeft[])(struct ObjectEvent *,
u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkSlowDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_Levitate[])(struct ObjectEvent *, struct Sprite *);
@@ -570,8 +570,8 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_UP_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalUpRight,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkSlowDiagonalDownLeft,
[MOVEMENT_ACTION_WALK_SLOW_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkSlowDiagonalDownRight,
[MOVEMENT_ACTION_STORE_AND_LOCK_ANIM] = gMovementActionFuncs_StoreAndLockAnim,
[MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM] = gMovementActionFuncs_FreeAndUnlockAnim,
[MOVEMENT_ACTION_LOCK_ANIM] = gMovementActionFuncs_LockAnim,
[MOVEMENT_ACTION_UNLOCK_ANIM] = gMovementActionFuncs_UnlockAnim,
[MOVEMENT_ACTION_WALK_LEFT_AFFINE] = gMovementActionFuncs_WalkLeftAffine,
[MOVEMENT_ACTION_WALK_RIGHT_AFFINE] = gMovementActionFuncs_WalkRightAffine,
[MOVEMENT_ACTION_LEVITATE] = gMovementActionFuncs_Levitate,
+28 -89
View File
@@ -1,9 +1,3 @@
enum {
TAG_POKEBALL = 1200,
TAG_POKEBALL_SMALL,
TAG_STATUS_ICONS,
};
static const struct BgTemplate sPartyMenuBgTemplates[] =
{
{
@@ -35,12 +29,6 @@ static const struct BgTemplate sPartyMenuBgTemplates[] =
},
};
enum
{
PARTY_BOX_LEFT_COLUMN,
PARTY_BOX_RIGHT_COLUMN
};
static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] =
{
[PARTY_BOX_LEFT_COLUMN] =
@@ -663,51 +651,6 @@ static const u16 sUnusedData[] =
0x0121, 0x013b, 0x000f, 0x0013, 0x0039, 0x0046, 0x0094, 0x00f9, 0x007f, 0x0123,
};
enum
{
MENU_SUMMARY,
MENU_SWITCH,
MENU_CANCEL1,
MENU_ITEM,
MENU_GIVE,
MENU_TAKE_ITEM,
MENU_MAIL,
MENU_TAKE_MAIL,
MENU_READ,
MENU_CANCEL2,
MENU_SHIFT,
MENU_SEND_OUT,
MENU_ENTER,
MENU_NO_ENTRY,
MENU_STORE,
MENU_REGISTER,
MENU_TRADE1,
MENU_TRADE2,
MENU_TOSS,
MENU_FIELD_MOVES,
};
enum
{
FIELD_MOVE_CUT,
FIELD_MOVE_FLASH,
FIELD_MOVE_ROCK_SMASH,
FIELD_MOVE_STRENGTH,
FIELD_MOVE_SURF,
FIELD_MOVE_FLY,
FIELD_MOVE_DIVE,
FIELD_MOVE_WATERFALL,
FIELD_MOVE_TELEPORT,
FIELD_MOVE_DIG,
FIELD_MOVE_SECRET_POWER,
FIELD_MOVE_MILK_DRINK,
FIELD_MOVE_SOFT_BOILED,
FIELD_MOVE_SWEET_SCENT,
};
// What a weird choice of table termination;
#define FIELD_MOVE_TERMINATOR MOVE_SWORDS_DANCE
struct
{
const u8 *text;
@@ -763,25 +706,6 @@ static const u8 sPartyMenuAction_TradeSummaryCancel1[] = {MENU_TRADE1, MENU_SUMM
static const u8 sPartyMenuAction_TradeSummaryCancel2[] = {MENU_TRADE2, MENU_SUMMARY, MENU_CANCEL1};
static const u8 sPartyMenuAction_TakeItemTossCancel[] = {MENU_TAKE_ITEM, MENU_TOSS, MENU_CANCEL1};
// IDs for the action lists that appear when a party mon is selected
enum
{
ACTIONS_NONE,
ACTIONS_SWITCH,
ACTIONS_SHIFT,
ACTIONS_SEND_OUT,
ACTIONS_ENTER,
ACTIONS_NO_ENTRY,
ACTIONS_STORE,
ACTIONS_SUMMARY_ONLY,
ACTIONS_ITEM,
ACTIONS_MAIL,
ACTIONS_REGISTER,
ACTIONS_TRADE,
ACTIONS_SPIN_TRADE,
ACTIONS_TAKEITEM_TOSS
};
static const u8 *const sPartyMenuActions[] =
{
[ACTIONS_NONE] = NULL,
@@ -818,17 +742,32 @@ static const u8 sPartyMenuActionCounts[] =
[ACTIONS_TAKEITEM_TOSS] = ARRAY_COUNT(sPartyMenuAction_TakeItemTossCancel)
};
static const u16 sFieldMoves[] =
static const u16 sFieldMoves[FIELD_MOVES_COUNT + 1] =
{
MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH, MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL, MOVE_TELEPORT,
MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK, MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, FIELD_MOVE_TERMINATOR
[FIELD_MOVE_CUT] = MOVE_CUT,
[FIELD_MOVE_FLASH] = MOVE_FLASH,
[FIELD_MOVE_ROCK_SMASH] = MOVE_ROCK_SMASH,
[FIELD_MOVE_STRENGTH] = MOVE_STRENGTH,
[FIELD_MOVE_SURF] = MOVE_SURF,
[FIELD_MOVE_FLY] = MOVE_FLY,
[FIELD_MOVE_DIVE] = MOVE_DIVE,
[FIELD_MOVE_WATERFALL] = MOVE_WATERFALL,
[FIELD_MOVE_TELEPORT] = MOVE_TELEPORT,
[FIELD_MOVE_DIG] = MOVE_DIG,
[FIELD_MOVE_SECRET_POWER] = MOVE_SECRET_POWER,
[FIELD_MOVE_MILK_DRINK] = MOVE_MILK_DRINK,
[FIELD_MOVE_SOFT_BOILED] = MOVE_SOFT_BOILED,
[FIELD_MOVE_SWEET_SCENT] = MOVE_SWEET_SCENT,
// NOTE: This value is used as the terminal value for the table. There's no reason to do this, as the size of the table is known.
// Whichever move shares this value (MOVE_SWORDS_DANCE by default) if present will be treated as the end of the array rather than a field move.
[FIELD_MOVES_COUNT] = FIELD_MOVES_COUNT
};
struct
{
bool8 (*fieldMoveFunc)(void);
u8 msgId;
} static const sFieldMoveCursorCallbacks[] =
} static const sFieldMoveCursorCallbacks[FIELD_MOVES_COUNT] =
{
[FIELD_MOVE_CUT] = {SetUpFieldMove_Cut, PARTY_MSG_NOTHING_TO_CUT},
[FIELD_MOVE_FLASH] = {SetUpFieldMove_Flash, PARTY_MSG_CANT_USE_HERE},
@@ -899,23 +838,23 @@ static const union AnimCmd *const sSpriteAnimTable_HeldItem[] =
static const struct SpriteSheet sSpriteSheet_HeldItem =
{
sHeldItemGfx, sizeof(sHeldItemGfx), 0xd750
.data = sHeldItemGfx, .size = sizeof(sHeldItemGfx), .tag = TAG_HELD_ITEM
};
static const struct SpritePalette sSpritePalette_HeldItem =
{
sHeldItemPalette, 0xd750
.data = sHeldItemPalette, .tag = TAG_HELD_ITEM
};
static const struct SpriteTemplate sSpriteTemplate_HeldItem =
{
0xd750,
0xd750,
&sOamData_HeldItem,
sSpriteAnimTable_HeldItem,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
.tileTag = TAG_HELD_ITEM,
.paletteTag = TAG_HELD_ITEM,
.oam = &sOamData_HeldItem,
.anims = sSpriteAnimTable_HeldItem,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const struct OamData sOamData_MenuPokeball =
+17 -17
View File
@@ -8746,13 +8746,13 @@ static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *
FieldEffectStart(FLDEFF_RIPPLE);
}
u8 (*const gMovementActionFuncs_StoreAndLockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_StoreAndLockAnim_Step0,
u8 (*const gMovementActionFuncs_LockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_LockAnim_Step0,
MovementAction_Finish,
};
u8 (*const gMovementActionFuncs_FreeAndUnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_FreeAndUnlockAnim_Step0,
u8 (*const gMovementActionFuncs_UnlockAnim[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_UnlockAnim_Step0,
MovementAction_Finish,
};
@@ -8768,36 +8768,36 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
MovementAction_Fly_Finish,
};
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_LockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore = FALSE;
if (sLockedAnimObjectEvents == NULL)
{
sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[0] = objectEvent->localId;
sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE;
}
else
{
u8 i;
u8 firstFreeSlot;
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
u8 firstFreeSlot = OBJECT_EVENTS_COUNT;
bool32 found = FALSE;
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (firstFreeSlot == 16 && sLockedAnimObjectEvents->objectEventIds[i] == 0)
if (firstFreeSlot == OBJECT_EVENTS_COUNT && sLockedAnimObjectEvents->localIds[i] == 0)
firstFreeSlot = i;
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
{
found = TRUE;
break;
}
}
if (!found && firstFreeSlot != 16)
if (!found && firstFreeSlot != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->localIds[firstFreeSlot] = objectEvent->localId;
sLockedAnimObjectEvents->count++;
ableToStore = TRUE;
}
@@ -8813,7 +8813,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
return TRUE;
}
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 MovementAction_UnlockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore;
u8 index;
@@ -8823,9 +8823,9 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
{
ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent);
if (index != 16)
if (index != OBJECT_EVENTS_COUNT)
{
sLockedAnimObjectEvents->objectEventIds[index] = 0;
sLockedAnimObjectEvents->localIds[index] = 0;
sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
@@ -8848,7 +8848,7 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
if (sLockedAnimObjectEvents->localIds[i] == objectEvent->localId)
return i;
}
return OBJECT_EVENTS_COUNT;
+31 -31
View File
@@ -67,40 +67,40 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId)
s16 *data = gTasks[taskId].data;
switch (tState)
{
case 0:
for (; tPartyIdx < PARTY_SIZE; tPartyIdx++)
case 0:
for (; tPartyIdx < PARTY_SIZE; tPartyIdx++)
{
if (MonFaintedFromPoison(tPartyIdx))
{
if (MonFaintedFromPoison(tPartyIdx))
{
FaintFromFieldPoison(tPartyIdx);
ShowFieldMessage(gText_PkmnFainted_FldPsn);
tState++;
return;
}
}
tState = 2; // Finished checking party
break;
case 1:
// Wait for "{mon} fainted" message, then return to party loop
if (IsFieldMessageBoxHidden())
tState--;
break;
case 2:
if (AllMonsFainted())
{
// Battle facilities have their own white out script to handle the challenge loss
if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge())
gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT;
else
gSpecialVar_Result = FLDPSN_WHITEOUT;
FaintFromFieldPoison(tPartyIdx);
ShowFieldMessage(gText_PkmnFainted_FldPsn);
tState++;
return;
}
}
tState = 2; // Finished checking party
break;
case 1:
// Wait for "{mon} fainted" message, then return to party loop
if (IsFieldMessageBoxHidden())
tState--;
break;
case 2:
if (AllMonsFainted())
{
// Battle facilities have their own white out script to handle the challenge loss
if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge())
gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT;
else
{
gSpecialVar_Result = FLDPSN_NO_WHITEOUT;
}
ScriptContext_Enable();
DestroyTask(taskId);
break;
gSpecialVar_Result = FLDPSN_WHITEOUT;
}
else
{
gSpecialVar_Result = FLDPSN_NO_WHITEOUT;
}
ScriptContext_Enable();
DestroyTask(taskId);
break;
}
}
+8 -8
View File
@@ -868,7 +868,7 @@ static void PetalburgGymSetDoorMetatiles(u8 roomNumber, u16 metatileId)
for (i = 0; i < nDoors; i++)
{
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET, metatileId | MAPGRID_COLLISION_MASK);
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + 8) | MAPGRID_COLLISION_MASK);
MapGridSetMetatileIdAt(doorCoordsX[i] + MAP_OFFSET, doorCoordsY[i] + MAP_OFFSET + 1, (metatileId + METATILE_ROW_WIDTH) | MAPGRID_COLLISION_MASK);
}
DrawWholeMapView();
}
@@ -941,19 +941,19 @@ u8 GetLeadMonFriendshipScore(void)
{
struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()];
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == MAX_FRIENDSHIP)
return 6;
return FRIENDSHIP_MAX;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200)
return 5;
return FRIENDSHIP_200_TO_254;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150)
return 4;
return FRIENDSHIP_150_TO_199;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100)
return 3;
return FRIENDSHIP_100_TO_149;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50)
return 2;
return FRIENDSHIP_50_TO_99;
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1)
return 1;
return FRIENDSHIP_1_TO_49;
return 0;
return FRIENDSHIP_NONE;
}
static void CB2_FieldShowRegionMap(void)
+32 -32
View File
@@ -110,38 +110,38 @@ ALIGNED(4) const u8 gFontNarrowLatinGlyphWidths[] = {
ALIGNED(4) const u16 gFontShortLatinGlyphs[] = INCBIN_U16("graphics/fonts/short.latfont");
ALIGNED(4) const u8 gFontShortLatinGlyphWidths[] = {
3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6,
8, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, 3,
6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 9, 8, 8, 3,
3, 3, 3, 3, 10, 8, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
6, 6, 6, 8, 8, 8, 8, 8, 8, 4, 6, 8, 5, 5, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 6,
3, 3, 3, 3, 3, 3, 3, 6, 3, 12, 12, 12, 12, 1, 2, 3,
4, 5, 6, 7, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5,
6, 6, 6, 3, 3, 6, 6, 8, 5, 9, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 4, 6, 5,
5, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 6, 6, 8,
5, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3,
12, 12, 12, 12, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3,
3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6,
8, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, 3,
6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 9, 8, 8, 3,
3, 3, 3, 3, 10, 8, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
6, 6, 6, 8, 8, 8, 8, 8, 8, 4, 6, 8, 5, 5, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 6,
3, 3, 3, 3, 3, 3, 3, 6, 3, 12, 12, 12, 12, 1, 2, 3,
4, 5, 6, 7, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5,
6, 6, 6, 3, 3, 6, 6, 8, 5, 9, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 4, 6, 5,
5, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 6, 6, 8,
5, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3,
12, 12, 12, 12, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3,
};
ALIGNED(4) const u16 gFontNormalLatinGlyphs[] = INCBIN_U16("graphics/fonts/normal.latfont");
+1 -2
View File
@@ -2520,8 +2520,7 @@ static u16 KeyInterCB_Idle(u32 key)
return LINK_KEY_CODE_EMPTY;
}
// Ignore the player's inputs as long as there is an event script
// in ScriptContext2.
// Ignore the player's inputs as long as there is an event script being executed.
static u16 KeyInterCB_DeferToEventScript(u32 key)
{
u16 retVal;
+81 -7
View File
@@ -73,6 +73,80 @@
#include "constants/rgb.h"
#include "constants/songs.h"
enum {
MENU_SUMMARY,
MENU_SWITCH,
MENU_CANCEL1,
MENU_ITEM,
MENU_GIVE,
MENU_TAKE_ITEM,
MENU_MAIL,
MENU_TAKE_MAIL,
MENU_READ,
MENU_CANCEL2,
MENU_SHIFT,
MENU_SEND_OUT,
MENU_ENTER,
MENU_NO_ENTRY,
MENU_STORE,
MENU_REGISTER,
MENU_TRADE1,
MENU_TRADE2,
MENU_TOSS,
MENU_FIELD_MOVES
};
// IDs for the action lists that appear when a party mon is selected
enum {
ACTIONS_NONE,
ACTIONS_SWITCH,
ACTIONS_SHIFT,
ACTIONS_SEND_OUT,
ACTIONS_ENTER,
ACTIONS_NO_ENTRY,
ACTIONS_STORE,
ACTIONS_SUMMARY_ONLY,
ACTIONS_ITEM,
ACTIONS_MAIL,
ACTIONS_REGISTER,
ACTIONS_TRADE,
ACTIONS_SPIN_TRADE,
ACTIONS_TAKEITEM_TOSS,
};
// In CursorCb_FieldMove, field moves <= FIELD_MOVE_WATERFALL are assumed to line up with the badge flags.
// Badge flag names are commented here for people searching for references to remove the badge requirement.
enum {
FIELD_MOVE_CUT, // FLAG_BADGE01_GET
FIELD_MOVE_FLASH, // FLAG_BADGE02_GET
FIELD_MOVE_ROCK_SMASH, // FLAG_BADGE03_GET
FIELD_MOVE_STRENGTH, // FLAG_BADGE04_GET
FIELD_MOVE_SURF, // FLAG_BADGE05_GET
FIELD_MOVE_FLY, // FLAG_BADGE06_GET
FIELD_MOVE_DIVE, // FLAG_BADGE07_GET
FIELD_MOVE_WATERFALL, // FLAG_BADGE08_GET
FIELD_MOVE_TELEPORT,
FIELD_MOVE_DIG,
FIELD_MOVE_SECRET_POWER,
FIELD_MOVE_MILK_DRINK,
FIELD_MOVE_SOFT_BOILED,
FIELD_MOVE_SWEET_SCENT,
FIELD_MOVES_COUNT
};
enum {
PARTY_BOX_LEFT_COLUMN,
PARTY_BOX_RIGHT_COLUMN,
};
enum {
TAG_POKEBALL = 1200,
TAG_POKEBALL_SMALL,
TAG_STATUS_ICONS,
};
#define TAG_HELD_ITEM 55120
#define PARTY_PAL_SELECTED (1 << 0)
#define PARTY_PAL_FAINTED (1 << 1)
#define PARTY_PAL_TO_SWITCH (1 << 2)
@@ -1186,13 +1260,13 @@ void Task_HandleChooseMonInput(u8 taskId)
switch (PartyMenuButtonHandler(slotPtr))
{
case 1: // Selected mon
case A_BUTTON: // Selected mon
HandleChooseMonSelection(taskId, slotPtr);
break;
case 2: // Selected Cancel
case B_BUTTON: // Selected Cancel / pressed B
HandleChooseMonCancel(taskId, slotPtr);
break;
case 8: // Start button
case START_BUTTON:
if (sPartyMenuInternal->chooseHalf)
{
PlaySE(SE_SELECT);
@@ -1409,7 +1483,7 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
}
if (JOY_NEW(START_BUTTON))
return 8;
return START_BUTTON;
if (movementDir)
{
@@ -1418,8 +1492,8 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
}
// Pressed Cancel
if ((JOY_NEW(A_BUTTON)) && *slotPtr == PARTY_SIZE + 1)
return 2;
if (JOY_NEW(A_BUTTON) && *slotPtr == PARTY_SIZE + 1)
return B_BUTTON;
return JOY_NEW(A_BUTTON | B_BUTTON);
}
@@ -2536,7 +2610,7 @@ static void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId)
// Add field moves to action list
for (i = 0; i < MAX_MON_MOVES; i++)
{
for (j = 0; sFieldMoves[j] != FIELD_MOVE_TERMINATOR; j++)
for (j = 0; sFieldMoves[j] != FIELD_MOVES_COUNT; j++)
{
if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j])
{
+1 -1
View File
@@ -6675,7 +6675,7 @@ const u8 *GetTrainerPartnerName(void)
}
#define READ_PTR_FROM_TASK(taskId, dataId) \
(void *)( \
(void *)( \
((u16)(gTasks[taskId].data[dataId]) | \
((u16)(gTasks[taskId].data[dataId + 1]) << 16)))
+10 -10
View File
@@ -1,5 +1,5 @@
@ Note: ROM header data is empty space here.
@ It's populated by gbafix using data provided in the Makefile.
@ It's populated by gbafix using data provided in the Makefile.
.global Start
Start:
@@ -41,20 +41,20 @@ RomHeaderChecksum:
RomHeaderReserved2:
.space 2
.word 0
.word 0
.global GPIOPortData
.global GPIOPortData
GPIOPortData:
.2byte 0
.2byte 0
.global GPIOPortDirection
.global GPIOPortDirection
GPIOPortDirection:
.2byte 0
.2byte 0
.global GPIOPortReadEnable
.global GPIOPortReadEnable
GPIOPortReadEnable:
.2byte 0
.2byte 0
.2byte 0
.2byte 0
.space 0x34
.space 0x34
+8 -8
View File
@@ -27,33 +27,33 @@ struct RotatingTilePuzzle
static const u8 sMovement_ShiftRight[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_RIGHT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftDown[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_DOWN,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftLeft[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_LEFT,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
static const u8 sMovement_ShiftUp[] =
{
MOVEMENT_ACTION_STORE_AND_LOCK_ANIM,
MOVEMENT_ACTION_LOCK_ANIM,
MOVEMENT_ACTION_WALK_NORMAL_UP,
MOVEMENT_ACTION_FREE_AND_UNLOCK_ANIM,
MOVEMENT_ACTION_UNLOCK_ANIM,
MOVEMENT_ACTION_STEP_END
};
+6 -6
View File
@@ -1040,11 +1040,11 @@ static const struct YesNoFuncTable sYesNoTable_KeepPlaying =
static void CB2_Roulette(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
if (sRoulette->flashUtil.enabled)
RouletteFlash_Run(&sRoulette->flashUtil);
RunTasks();
AnimateSprites();
BuildOamBuffer();
if (sRoulette->flashUtil.enabled)
RouletteFlash_Run(&sRoulette->flashUtil);
}
static void VBlankCB_Roulette(void)
@@ -4516,7 +4516,7 @@ static void SpriteCB_ShroomishExit(struct Sprite *sprite)
// Delay for screen shaking, then exit left
if (sprite->data[1]++ >= sprite->data[3])
{
sprite->x -= 2;
sprite->x -= 2;
if (sprite->x < -16)
{
if (!sRoulette->ballUnstuck)
+20 -20
View File
@@ -165,30 +165,30 @@ static const u16 sPrizeListAttract[] = {ITEM_TM45_ATTRACT, ITEM_ETHER, I
static const u16 *const sPrizeLists1[NUM_TRAINER_HILL_PRIZE_LISTS] =
{
sPrizeListRareCandy1,
sPrizeListLuxuryBall1,
sPrizeListMaxRevive1,
sPrizeListMaxEther1,
sPrizeListElixir1,
sPrizeListRoar,
sPrizeListSludgeBomb,
sPrizeListToxic,
sPrizeListSunnyDay,
sPrizeListEarthQuake
sPrizeListRareCandy1,
sPrizeListLuxuryBall1,
sPrizeListMaxRevive1,
sPrizeListMaxEther1,
sPrizeListElixir1,
sPrizeListRoar,
sPrizeListSludgeBomb,
sPrizeListToxic,
sPrizeListSunnyDay,
sPrizeListEarthQuake
};
static const u16 *const sPrizeLists2[NUM_TRAINER_HILL_PRIZE_LISTS] =
{
sPrizeListRareCandy2,
sPrizeListLuxuryBall2,
sPrizeListMaxRevive2,
sPrizeListMaxEther2,
sPrizeListElixir2,
sPrizeListBrickBreak,
sPrizeListTorment,
sPrizeListSkillSwap,
sPrizeListGigaDrain,
sPrizeListAttract
sPrizeListRareCandy2,
sPrizeListLuxuryBall2,
sPrizeListMaxRevive2,
sPrizeListMaxEther2,
sPrizeListElixir2,
sPrizeListBrickBreak,
sPrizeListTorment,
sPrizeListSkillSwap,
sPrizeListGigaDrain,
sPrizeListAttract
};
static const u16 *const *const sPrizeListSets[] =
+18 -18
View File
@@ -3,35 +3,35 @@
@ ../gflib/bg.o
.align 2
gWindowTileAutoAllocEnabled:
.space 4
.space 4
@ ../gflib/window.o
.align 4
.align 4
gTransparentTileNumber:
.space 1
.align 4
.space 1
.align 4
gWindowBgTilemapBuffers:
.space 16
.space 16
@ ../gflib/text.o
.align 4
.align 4
gFonts:
.space 4
.align 2
.space 4
.align 2
gDisableTextPrinters:
.space 1
.align 4
.space 1
.align 4
gCurGlyph:
.space 132
.align 2
.space 132
.align 2
gTextFlags:
.space 4
.space 4
@ ../gflib/sprite.o
.align 2
.align 2
gOamMatrixAllocBitmap:
.space 4
.align 2
.space 4
.align 2
gReservedSpritePaletteCount:
.space 1
.align 4
.space 1
.align 4
.include "link.o"
.include "AgbRfu_LinkManager.o"
.include "link_rfu_2.o"