Added contest config and cleaned up contest category variables (#8178)

This commit is contained in:
Frank DeBlasio 2025-11-13 05:29:38 -05:00 committed by GitHub
parent ea442bca6d
commit 6d09eb2402
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 1115 additions and 1500 deletions

View File

@ -1116,9 +1116,6 @@ EventScript_VsSeekerChargingDone::
.include "data/scripts/cable_club.inc"
.include "data/text/cable_club.inc"
.include "data/scripts/contest_hall.inc"
.include "data/text/contest_strings.inc"
.include "data/text/contest_link.inc"
.include "data/text/contest_painting.inc"
.include "data/scripts/tv.inc"
.include "data/text/tv.inc"
.include "data/scripts/interview.inc"

View File

@ -1,38 +0,0 @@
@ With the exception of Link standby, none of the below texts are used
gTest_MissedTurn::
.string "Missed turn$"
gText_LinkStandby4::
.string "Link standby!$"
gText_WinnerIsPlayersMonCongrats::
.string "The winner is {STR_VAR_1}'s {STR_VAR_2}!\n"
.string "Congratulations!$"
gText_WinnerIsPlayersMon::
.string "The winner is {STR_VAR_1}'s {STR_VAR_2}!{PAUSE_UNTIL_PRESS}$"
gText_PrimaryJudgingNumX::
.string "Primary judging: No. {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gText_SecondaryJudgingNumX::
.string "Secondary judging: No. {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gText_SetEventNumX::
.string "Set event: No. {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gText_MoveUsedMostOften::
.string "The move used most often:\n"
.string "{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gText_MostImpressiveMon::
.string "The most impressive POKéMON:\n"
.string "{STR_VAR_1}'s {STR_VAR_2}{PAUSE_UNTIL_PRESS}$"
gText_SetEventNumX2::
.string "Set event: No. {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gText_LinkTVProgramWillNotBeMadeTrainerLost::
.string "A link TV program will not be made\n"
.string "because the TRAINER lost.{PAUSE_UNTIL_PRESS}$"

View File

@ -1,96 +0,0 @@
gContestHallPaintingCaption::
.string "{STR_VAR_1}\n"
.string "{STR_VAR_2}'s {STR_VAR_3}$"
@ Unused
gContestPaintingContest::
.string "CONTEST$"
gContestRankNormal::
.string "NORMAL RANK$"
gContestRankSuper::
.string "SUPER RANK$"
gContestRankHyper::
.string "HYPER RANK$"
gContestRankMaster::
.string "MASTER RANK$"
gContestLink::
.string "LINK$"
gContestCoolness::
.string "COOLNESS$"
gContestBeauty::
.string "BEAUTY$"
gContestCuteness::
.string "CUTENESS$"
gContestSmartness::
.string "SMARTNESS$"
gContestToughness::
.string "TOUGHNESS$"
gContestPaintingCool1::
.string "Nonstop supercool--\n"
.string "the inestimable {STR_VAR_1}$"
gContestPaintingCool2::
.string "Hey, there!\n"
.string "The good-looking POKéMON {STR_VAR_1}$"
gContestPaintingCool3::
.string "The marvelous, wonderful, and\n"
.string "very great {STR_VAR_1}$"
gContestPaintingBeauty1::
.string "This century's last Venus--\n"
.string "the beautiful {STR_VAR_1}$"
gContestPaintingBeauty2::
.string "{STR_VAR_1}'s dazzling,\n"
.string "glittering smile$"
gContestPaintingBeauty3::
.string "POKéMON CENTER's super idol--\n"
.string "the incomparable {STR_VAR_1}$"
gContestPaintingCute1::
.string "The lovely and sweet {STR_VAR_1}$"
gContestPaintingCute2::
.string "The pretty {STR_VAR_1}'s\n"
.string "winning portrait$"
gContestPaintingCute3::
.string "Give us a wink!\n"
.string "The cutie POKéMON {STR_VAR_1}$"
gContestPaintingSmart1::
.string "The smartness maestro--\n"
.string "the wise POKéMON {STR_VAR_1}$"
gContestPaintingSmart2::
.string "{STR_VAR_1}--the one chosen\n"
.string "above all POKéMON$"
gContestPaintingSmart3::
.string "The excellent {STR_VAR_1}'s\n"
.string "moment of elegance$"
gContestPaintingTough1::
.string "The powerfully muscular\n"
.string "speedster {STR_VAR_1}$"
gContestPaintingTough2::
.string "The strong, stronger, and\n"
.string "strongest {STR_VAR_1}$"
gContestPaintingTough3::
.string "The mighty tough\n"
.string "hyper POKéMON {STR_VAR_1}$"

View File

@ -1,314 +0,0 @@
gText_AppealNumWhichMoveWillBePlayed::
.string "Appeal no. {STR_VAR_1}!\n"
.string "Which move will be played?$"
gText_AppealNumButItCantParticipate::
.string "Appeal no. {STR_VAR_1}!\n"
.string "But it can't participate!$"
gText_MonAppealedWithMove::
.string "{STR_VAR_1} appealed with\n"
.string "{STR_VAR_2}!$"
gText_MonWasWatchingOthers::
.string "{STR_VAR_1} was watching\n"
.string "the others.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_AllOutOfAppealTime::
.string "We're all out of\n"
.string "Appeal Time!{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
@ Appeal result texts
gText_BecameMoreConsciousOfOtherMons::
.string "It became more conscious\n"
.string "of the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonCantMakeAnAppealAfterThis::
.string "{STR_VAR_1} can't make an\n"
.string "appeal after this.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_SettledDownJustLittleBit::
.string "It settled down just a\n"
.string "little bit.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_BecameObliviousToOtherMons::
.string "It became oblivious to\n"
.string "the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_BecameLessAwareOfOtherMons::
.string "It became less aware of\n"
.string "the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_StoppedCaringAboutOtherMons::
.string "It stopped caring about\n"
.string "other POKéMON much.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_TriedToStartleOtherMons::
.string "It tried to startle the\n"
.string "other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_TriedToDazzleOthers::
.string "It tried to dazzle the\n"
.string "others.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_JudgeLookedAwayFromMon::
.string "The JUDGE looked away\n"
.string "from {STR_VAR_1}.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_TriedToUnnerveNextMon::
.string "It tried to unnerve the\n"
.string "next POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonBecameNervous::
.string "{STR_VAR_1} became\n"
.string "nervous.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_AppealTriedToUnnerveWaitingMons::
.string "The appeal tried to\n"
.string "unnerve waiting POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_TauntedMonsDoingWell::
.string "It taunted POKéMON\n"
.string "doing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonRegainedItsForm::
.string "{STR_VAR_1} regained its\n"
.string "form.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_TriedToJamMonDoingWell::
.string "It tried to jam POKéMON\n"
.string "doing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_StandoutMonHustledEvenMore::
.string "The standout {STR_VAR_1}\n"
.string "hustled even more.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_LargelyUnnoticedMonWorkedHard::
.string "The largely unnoticed\n"
.string "{STR_VAR_1} worked hard.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_WorkedAsMuchAsMonBefore::
.string "It worked as much as\n"
.string "POKéMON before it.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealDidNotGoWell::
.string "{STR_VAR_1}'s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_WorkedAsMuchAsPrecedingMon::
.string "It worked as much as the\n"
.string "preceding POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealDidNotGoWell2::
.string "{STR_VAR_1}'s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealDidNotGoWell3::
.string "{STR_VAR_1}'s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentSlightlyWell::
.string "{STR_VAR_1}'s appeal\n"
.string "went slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentPrettyWell::
.string "{STR_VAR_1}'s appeal\n"
.string "went pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentExcellently::
.string "{STR_VAR_1}'s appeal\n"
.string "went excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWasDud::
.string "{STR_VAR_1}'s appeal was\n"
.string "a dud.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealDidNotWorkVeryWell::
.string "{STR_VAR_1}'s appeal did\n"
.string "not work very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentSlightlyWell2::
.string "{STR_VAR_1}'s appeal\n"
.string "went slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentPrettyWell2::
.string "{STR_VAR_1}'s appeal\n"
.string "went pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentVeryWell::
.string "{STR_VAR_1}'s appeal\n"
.string "went very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsAppealWentExcellently2::
.string "{STR_VAR_1}'s appeal\n"
.string "went excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_SameTypeAsOneBeforeGood::
.string "It's the same type as the\n"
.string "POKéMON before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_NotSameTypeAsOneBeforeGood::
.string "It's not the same type as\n"
.string "the one before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_StoodOutMuchMoreThanMonBefore::
.string "It stood out much more\n"
.string "than the POKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_DidntDoAsWellAsMonBefore::
.string "It didn't do as well as the\n"
.string "POKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsConditionRoseAboveUsual::
.string "{STR_VAR_1}'s condition\n"
.string "rose above usual.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MonsHotStatusMadeGreatAppeal::
.string "{STR_VAR_1}'s hot status\n"
.string "made it a great appeal!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MovedUpInLineForNextAppeal::
.string "It moved up in line for\n"
.string "the next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_MovedBackInLineForNextAppeal::
.string "It moved back in line once\n"
.string "for the next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_ScrambledUpOrderForNextTurn::
.string "It scrambled up the\n"
.string "order for the next turn.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
gText_JudgeLookedAtMonExpectantly::
.string "The JUDGE looked at\n"
.string "{STR_VAR_1} expectantly.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_AppealComboWentOverWell::
.string "The appeal combo went\n"
.string "over well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_AppealComboWentOverVeryWell::
.string "The appeal combo went\n"
.string "over very well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_AppealComboWentOverExcellently::
.string "The appeal combo went\n"
.string "over excellently.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonManagedToAvertGaze::
.string "{STR_VAR_1} managed to\n"
.string "avert its gaze.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonManagedToAvoidSeeingIt::
.string "{STR_VAR_1} managed to\n"
.string "avoid seeing it.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonIsntFazedByThatSortOfThing::
.string "{STR_VAR_1} isn't fazed\n"
.string "by that sort of thing.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonBecameALittleDistracted::
.string "{STR_VAR_1} became a\n"
.string "little distracted.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_TriedToStartleOtherPokemon::
.string "It tried to startle the\n"
.string "other POKéMON.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonLookedDownOutOfDistraction::
.string "{STR_VAR_1} looked down\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonTurnedBackOutOfDistraction::
.string "{STR_VAR_1} turned back\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonCouldntHelpUtteringCry::
.string "{STR_VAR_1} couldn't help\n"
.string "uttering a cry.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonCouldntHelpLeapingUp::
.string "{STR_VAR_1} couldn't help\n"
.string "leaping up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonTrippedOutOfDistraction::
.string "{STR_VAR_1} tripped over\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonWasTooNervousToMove::
.string "{STR_VAR_1} was too\n"
.string "nervous to move.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_ButItMessedUp2::
.string "But it messed up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_ButItFailedToMakeTargetNervous::
.string "But it failed to make\n"
.string "the target nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_ButItFailedToMakeAnyoneNervous::
.string "But it failed to make\n"
.string "anyone nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_ButItWasIgnored::
.string "But it was ignored…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_CouldntImproveItsCondition::
.string "But it couldn't improve\n"
.string "its condition…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_BadConditionResultedInWeakAppeal::
.string "Its bad condition\n"
.string "resulted in a weak appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonWasUnaffected::
.string "{STR_VAR_1} was\n"
.string "unaffected.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_RepeatedAppeal::
.string "{STR_VAR_1} disappointed\n"
.string "by repeating an appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonsXWentOverGreat::
.string "{STR_VAR_1}'s {STR_VAR_3}\n"
.string "went over great.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonsXDidntGoOverWell::
.string "{STR_VAR_1}'s {STR_VAR_3}\n"
.string "didn't go over well here…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonsXGotTheCrowdGoing::
.string "{STR_VAR_1}'s {STR_VAR_3}\n"
.string "got the crowd going.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonCantAppealNextTurn::
.string "{STR_VAR_1} can't appeal\n"
.string "next turn…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_AttractedCrowdsAttention::
.string "It attracted the crowd's\n"
.string "attention.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_CrowdContinuesToWatchMon::
.string "The crowd continues to\n"
.string "watch {STR_VAR_3}.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_MonsMoveIsIgnored::
.string "{STR_VAR_1}'s\n"
.string "{STR_VAR_2} is ignored.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
gText_Contest_Shyness::
.string "shyness$"
gText_Contest_Anxiety::
.string "anxiety$"
gText_Contest_Laziness::
.string "laziness$"
gText_Contest_Hesitancy::
.string "hesitancy$"
gText_Contest_Fear::
.string "fear$"

8
include/config/contest.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef GUARD_CONFIG_CONTEST_H
#define GUARD_CONFIG_CONTEST_H
// Move data settings
#define C_UPDATED_MOVE_CATEGORIES GEN_LATEST // Updates contest category.
#define C_UPDATED_MOVE_EFFECTS GEN_LATEST // Updates contest effects.
#endif // GUARD_CONFIG_CONTEST_H

View File

@ -103,29 +103,29 @@
#define CONTEST_EFFECT_REPETITION_NOT_BORING 3
#define CONTEST_EFFECT_AVOID_STARTLE_ONCE 4
#define CONTEST_EFFECT_AVOID_STARTLE 5
#define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6
#define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7
#define CONTEST_EFFECT_STARTLE_FRONT_MON 8
#define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9
#define CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY 6 // Unused
#define CONTEST_EFFECT_USER_LESS_EASILY_STARTLED 7 // Unused
#define CONTEST_EFFECT_STARTLE_FRONT_MON 8 // Unused
#define CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS 9 // Unused
#define CONTEST_EFFECT_STARTLE_PREV_MON 10
#define CONTEST_EFFECT_STARTLE_PREV_MONS 11
#define CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON 12
#define CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS 13
#define CONTEST_EFFECT_STARTLE_PREV_MON_2 14
#define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15
#define CONTEST_EFFECT_STARTLE_PREV_MON_2 14 // Unused
#define CONTEST_EFFECT_STARTLE_PREV_MONS_2 15 // Unused
#define CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION 16
#define CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION 17
#define CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN 18
#define CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL 19
#define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20
#define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21
#define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22
#define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23
#define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24
#define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25
#define CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL 20 // Unused
#define CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL 21 // Unused
#define CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL 22 // Unused
#define CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL 23 // Unused
#define CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL 24 // Unused
#define CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS 25 // Unused
#define CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS 26
#define CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS 27
#define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28
#define CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION 28 // Unused
#define CONTEST_EFFECT_BETTER_IF_FIRST 29
#define CONTEST_EFFECT_BETTER_IF_LAST 30
#define CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES 31
@ -133,18 +133,21 @@
#define CONTEST_EFFECT_BETTER_WHEN_LATER 33
#define CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING 34
#define CONTEST_EFFECT_BETTER_IF_SAME_TYPE 35
#define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36
#define CONTEST_EFFECT_BETTER_IF_DIFF_TYPE 36 // Unused
#define CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL 37
#define CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS 38
#define CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION 39
#define CONTEST_EFFECT_NEXT_APPEAL_EARLIER 40
#define CONTEST_EFFECT_NEXT_APPEAL_LATER 41
#define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42
#define CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER 42 // Unused
#define CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER 43
#define CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST 44
#define CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS 45
#define CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED 46
#define CONTEST_EFFECT_DONT_EXCITE_AUDIENCE 47
//#define CONTEST_EFFECT_QUICKLY_GROW_BORED 48 // New in Gen 6
//#define CONTEST_EFFECT_EXCITES_AUDIENCE_MORE_IF_FIRST 49 // New in Gen 6
//#define CONTEST_EFFECT_EXCITES_AUDIENCE_MORE_IF_LAST 50 // New in Gen 6
// Each of the above effects is grouped into one of these effect type categories
// Only a few of these get checked by the AI, the rest go unused
@ -157,93 +160,93 @@
#define CONTEST_EFFECT_TYPE_TURN_ORDER 6
#define CONTEST_EFFECT_TYPE_UNKNOWN 8
#define COMBO_STARTER_POUND 1
#define COMBO_STARTER_FIRE_PUNCH 2
#define COMBO_STARTER_ICE_PUNCH 3
#define COMBO_STARTER_THUNDER_PUNCH 4
#define COMBO_STARTER_SCRATCH 5
#define COMBO_STARTER_VICE_GRIP 6
#define COMBO_STARTER_SWORDS_DANCE 7
#define COMBO_STARTER_SAND_ATTACK 8
#define COMBO_STARTER_HORN_ATTACK 9
#define COMBO_STARTER_LEER 10
#define COMBO_STARTER_SING 11
#define COMBO_STARTER_SURF 12
#define COMBO_STARTER_PECK 13
#define COMBO_STARTER_LEECH_SEED 14
#define COMBO_STARTER_GROWTH 15
#define COMBO_STARTER_STRING_SHOT 16
#define COMBO_STARTER_DRAGON_RAGE 17
#define COMBO_STARTER_ROCK_THROW 18
#define COMBO_STARTER_EARTHQUAKE 19
#define COMBO_STARTER_TOXIC 20
#define COMBO_STARTER_CONFUSION 21
#define COMBO_STARTER_PSYCHIC 22
#define COMBO_STARTER_HYPNOSIS 23
#define COMBO_STARTER_RAGE 24
#define COMBO_STARTER_DOUBLE_TEAM 25
#define COMBO_STARTER_HARDEN 26
#define COMBO_STARTER_DEFENSE_CURL 27
#define COMBO_STARTER_FOCUS_ENERGY 28
#define COMBO_STARTER_SMOG 29
#define COMBO_STARTER_SLUDGE 30
#define COMBO_STARTER_BONE_CLUB 31
#define COMBO_STARTER_KINESIS 32
#define COMBO_STARTER_SOFT_BOILED 33
#define COMBO_STARTER_BONEMERANG 34
#define COMBO_STARTER_REST 35
#define COMBO_STARTER_MIND_READER 36
#define COMBO_STARTER_CURSE 37
#define COMBO_STARTER_POWDER_SNOW 38
#define COMBO_STARTER_SCARY_FACE 39
#define COMBO_STARTER_BELLY_DRUM 40
#define COMBO_STARTER_SLUDGE_BOMB 41
#define COMBO_STARTER_MUD_SLAP 42
#define COMBO_STARTER_BONE_RUSH 43
#define COMBO_STARTER_LOCK_ON 44
#define COMBO_STARTER_SANDSTORM 45
#define COMBO_STARTER_ENDURE 46
#define COMBO_STARTER_CHARM 47
#define COMBO_STARTER_MEAN_LOOK 48
#define COMBO_STARTER_HEAL_BELL 49
#define COMBO_STARTER_DRAGON_BREATH 50
#define COMBO_STARTER_SWEET_SCENT 51
#define COMBO_STARTER_RAIN_DANCE 52
#define COMBO_STARTER_SUNNY_DAY 53
#define COMBO_STARTER_FAKE_OUT 54
#define COMBO_STARTER_STOCKPILE 55
#define COMBO_STARTER_HAIL 56
#define COMBO_STARTER_CHARGE 57
#define COMBO_STARTER_TAUNT 58
#define COMBO_STARTER_REVENGE 59
#define COMBO_STARTER_YAWN 60
#define COMBO_STARTER_DIVE 61
#define COMBO_STARTER_MUD_SPORT 62
#define COMBO_STARTER_METAL_SOUND 63
#define COMBO_STARTER_WATER_SPORT 64
#define COMBO_STARTER_CALM_MIND 65
#define COMBO_STARTER_DRAGON_DANCE 66
#define COMBO_STARTER_PAYBACK 67
#define COMBO_STARTER_LUCKY_CHANT 68
#define COMBO_STARTER_WORRY_SEED 69
#define COMBO_STARTER_DRAGON_RUSH 70
#define COMBO_STARTER_BRAVE_BIRD 71
#define COMBO_STARTER_THUNDER_FANG 72
#define COMBO_STARTER_ICE_FANG 73
#define COMBO_STARTER_FIRE_FANG 74
#define COMBO_STARTER_ATTACK_ORDER 75
#define COMBO_STARTER_DEFEND_ORDER 76
#define COMBO_STARTER_HEAL_ORDER 77
#define COMBO_STARTER_SCALD 78
#define COMBO_STARTER_DRAGON_TAIL 79
#define COMBO_STARTER_HYPERSPACE_HOLE 80
#define COMBO_STARTER_THOUSAND_ARROWS 81
#define COMBO_STARTER_THOUSAND_WAVES 82
#define COMBO_STARTER_HYPERSPACE_FURY 83
#define COMBO_STARTER_SHADOW_BONE 84
#define COMBO_STARTER_POUND 1
#define COMBO_STARTER_FIRE_PUNCH 2
#define COMBO_STARTER_ICE_PUNCH 3
#define COMBO_STARTER_THUNDER_PUNCH 4
#define COMBO_STARTER_SCRATCH 5
#define COMBO_STARTER_VICE_GRIP 6
#define COMBO_STARTER_SWORDS_DANCE 7
#define COMBO_STARTER_SAND_ATTACK 8
#define COMBO_STARTER_HORN_ATTACK 9
#define COMBO_STARTER_LEER 10
#define COMBO_STARTER_SING 11
#define COMBO_STARTER_SURF 12
#define COMBO_STARTER_PECK 13
#define COMBO_STARTER_LEECH_SEED 14
#define COMBO_STARTER_GROWTH 15
#define COMBO_STARTER_STRING_SHOT 16
#define COMBO_STARTER_DRAGON_RAGE 17
#define COMBO_STARTER_ROCK_THROW 18
#define COMBO_STARTER_EARTHQUAKE 19
#define COMBO_STARTER_TOXIC 20
#define COMBO_STARTER_CONFUSION 21
#define COMBO_STARTER_PSYCHIC 22
#define COMBO_STARTER_HYPNOSIS 23
#define COMBO_STARTER_RAGE 24
#define COMBO_STARTER_DOUBLE_TEAM 25
#define COMBO_STARTER_HARDEN 26
#define COMBO_STARTER_DEFENSE_CURL 27
#define COMBO_STARTER_FOCUS_ENERGY 28
#define COMBO_STARTER_SMOG 29
#define COMBO_STARTER_SLUDGE 30
#define COMBO_STARTER_BONE_CLUB 31
#define COMBO_STARTER_KINESIS 32
#define COMBO_STARTER_SOFT_BOILED 33
#define COMBO_STARTER_BONEMERANG 34
#define COMBO_STARTER_REST 35
#define COMBO_STARTER_MIND_READER 36
#define COMBO_STARTER_CURSE 37
#define COMBO_STARTER_POWDER_SNOW 38
#define COMBO_STARTER_SCARY_FACE 39
#define COMBO_STARTER_BELLY_DRUM 40
#define COMBO_STARTER_SLUDGE_BOMB 41
#define COMBO_STARTER_MUD_SLAP 42
#define COMBO_STARTER_BONE_RUSH 43
#define COMBO_STARTER_LOCK_ON 44
#define COMBO_STARTER_SANDSTORM 45
#define COMBO_STARTER_ENDURE 46
#define COMBO_STARTER_CHARM 47
#define COMBO_STARTER_MEAN_LOOK 48
#define COMBO_STARTER_HEAL_BELL 49
#define COMBO_STARTER_DRAGON_BREATH 50
#define COMBO_STARTER_SWEET_SCENT 51
#define COMBO_STARTER_RAIN_DANCE 52
#define COMBO_STARTER_SUNNY_DAY 53
#define COMBO_STARTER_FAKE_OUT 54
#define COMBO_STARTER_STOCKPILE 55
#define COMBO_STARTER_HAIL 56
#define COMBO_STARTER_CHARGE 57
#define COMBO_STARTER_TAUNT 58
#define COMBO_STARTER_REVENGE 59
#define COMBO_STARTER_YAWN 60
#define COMBO_STARTER_DIVE 61
#define COMBO_STARTER_MUD_SPORT 62
#define COMBO_STARTER_METAL_SOUND 63
#define COMBO_STARTER_WATER_SPORT 64
#define COMBO_STARTER_CALM_MIND 65
#define COMBO_STARTER_DRAGON_DANCE 66
#define COMBO_STARTER_PAYBACK 67
#define COMBO_STARTER_LUCKY_CHANT 68
#define COMBO_STARTER_WORRY_SEED 69
#define COMBO_STARTER_DRAGON_RUSH 70
#define COMBO_STARTER_BRAVE_BIRD 71
#define COMBO_STARTER_THUNDER_FANG 72
#define COMBO_STARTER_ICE_FANG 73
#define COMBO_STARTER_FIRE_FANG 74
#define COMBO_STARTER_ATTACK_ORDER 75
#define COMBO_STARTER_DEFEND_ORDER 76
#define COMBO_STARTER_HEAL_ORDER 77
#define COMBO_STARTER_SCALD 78
#define COMBO_STARTER_DRAGON_TAIL 79
#define COMBO_STARTER_HYPERSPACE_HOLE 80
#define COMBO_STARTER_THOUSAND_ARROWS 81
#define COMBO_STARTER_THOUSAND_WAVES 82
#define COMBO_STARTER_HYPERSPACE_FURY 83
#define COMBO_STARTER_SHADOW_BONE 84
#define COMBO_STARTER_ELECTRIC_TERRAIN 85
#define COMBO_STARTER_MISTY_TERRAIN 86
#define COMBO_STARTER_GRASSY_TERRAIN 87
#define COMBO_STARTER_PSYCHIC_TERRAIN 88
#define COMBO_STARTER_MISTY_TERRAIN 86
#define COMBO_STARTER_GRASSY_TERRAIN 87
#define COMBO_STARTER_PSYCHIC_TERRAIN 88
#endif // GUARD_CONSTANTS_CONTEST_H

View File

@ -19,6 +19,7 @@
#include "config/ai.h"
#include "config/battle.h"
#include "config/caps.h"
#include "config/contest.h"
#include "config/debug.h"
#include "config/dexnav.h"
#include "config/follower_npc.h"
@ -116,12 +117,14 @@
#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
#define CONTESTANT_COUNT 4
#define CONTEST_CATEGORY_COOL 0
#define CONTEST_CATEGORY_BEAUTY 1
#define CONTEST_CATEGORY_CUTE 2
#define CONTEST_CATEGORY_SMART 3
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
#define CONTEST_CATEGORY_COOL 0
#define CONTEST_CATEGORY_BEAUTIFUL 1
#define CONTEST_CATEGORY_BEAUTY CONTEST_CATEGORY_BEAUTIFUL
#define CONTEST_CATEGORY_CUTE 2
#define CONTEST_CATEGORY_CLEVER 3
#define CONTEST_CATEGORY_SMART CONTEST_CATEGORY_CLEVER
#define CONTEST_CATEGORY_TOUGH 4
#define CONTEST_CATEGORIES_COUNT 5
// string lengths
#define ITEM_NAME_LENGTH 20

View File

@ -302,6 +302,17 @@ struct ContestResources
void *animBgTileBuffer;
};
struct ContestCategory
{
const u8 *name;
const u8 *condition;
const u8 *generic;
const u8 *negativeTrait;
u8 palette;
};
extern const struct ContestCategory gContestCategoryInfo[CONTEST_CATEGORIES_COUNT + 1];
#define eContest (*gContestResources->contest)
#define eContestantStatus (gContestResources->status)
#define eContestAppealResults (*gContestResources->appealResults)

View File

@ -7,11 +7,11 @@ struct ContestEffect
u8 effectType;
u8 appeal;
u8 jam;
const u8 *description;
void (*function)(void);
};
extern const struct ContestEffect gContestEffects[];
extern const u8 *const gContestEffectDescriptionPointers[];
extern const u8 *const gContestMoveTypeTextPointers[];
bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove);

View File

@ -30,7 +30,6 @@ def add_filter_data(match):
if trainer_name in source_data:
contest_filter = source_data[trainer_name]
print(f"Updating {trainer_name}: adding {contest_filter}")
#return f'{trainer_name} = {{\n .filter = {contest_filter}'
return f'{match.group(0)}\n .filter = {contest_filter}'
else:
return match.group(0)

View File

@ -0,0 +1,44 @@
import glob
import re
import os
if not os.path.exists("Makefile"):
print("Please run this script from your root folder.")
quit()
# Read contest.c and extract the party information
for file in glob.glob('./src/contest.c'):
with open(file, 'r') as f:
source_content = f.read()
# Extract party info from contest.c
source_pattern = re.compile(r'(\[CONTEST_EFFECT_.*\])\s*=\s(COMPOUND_STRING.*),')
source_data = {}
for match in source_pattern.findall(source_content):
if len(match) == 2:
contest_effect, effect_description = match
source_data[contest_effect] = (effect_description)
# Read contest_moves.h content
for file in glob.glob('./src/data/contest_moves.h'):
with open(file, 'r') as f:
destination_content = f.read()
# Modify contest_moves.h content
def add_description(match):
contest_effect = match.group(1)
if contest_effect in source_data:
effect_description = source_data[contest_effect]
print(f"Updating {contest_effect}: adding {effect_description}")
return f"{match.group(0)}\n .description = {effect_description},"
else:
return match.group(0)
destination_pattern = re.compile(r'(\[CONTEST_EFFECT_.*\]) =\s*\n\s*{')
modified_content = destination_pattern.sub(add_description, destination_content)
# Write the modified content back to contest_moves.h
for file in glob.glob('./src/data/contest_moves.h'):
with open(file, 'w') as f:
f.write(modified_content)
print("contest_moves.h has been updated")

View File

@ -360,10 +360,32 @@ EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
// IWRAM common vars.
COMMON_DATA rng_value_t gContestRngValue = {0};
extern const u8 gText_LinkStandby4[];
const u8 gText_LinkStandby4[] = COMPOUND_STRING("Link standby!");
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern void (*const gContestEffectFuncs[])(void);
//Text
const u8 gText_AppealNumWhichMoveWillBePlayed[] = COMPOUND_STRING("Appeal no. {STR_VAR_1}!\nWhich move will be played?");
const u8 gText_AppealNumButItCantParticipate[] = COMPOUND_STRING("Appeal no. {STR_VAR_1}!\nBut it can't participate!");
const u8 gText_MonAppealedWithMove[] = COMPOUND_STRING("{STR_VAR_1} appealed with\n{STR_VAR_2}!");
const u8 gText_MonWasWatchingOthers[] = COMPOUND_STRING("{STR_VAR_1} was watching\nthe others.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_AllOutOfAppealTime[] = COMPOUND_STRING("We're all out of\nAppeal Time!{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_JudgeLookedAtMonExpectantly[] = COMPOUND_STRING("The JUDGE looked at\n{STR_VAR_1} expectantly.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_AppealComboWentOverWell[] = COMPOUND_STRING("The appeal combo went\nover well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_AppealComboWentOverVeryWell[] = COMPOUND_STRING("The appeal combo went\nover very well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_AppealComboWentOverExcellently[] = COMPOUND_STRING("The appeal combo went\nover excellently.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonWasTooNervousToMove[] = COMPOUND_STRING("{STR_VAR_1} was too\nnervous to move.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_CouldntImproveItsCondition[] = COMPOUND_STRING("But it couldn't improve\nits condition…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_BadConditionResultedInWeakAppeal[] = COMPOUND_STRING("Its bad condition\nresulted in a weak appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonWasUnaffected[] = COMPOUND_STRING("{STR_VAR_1} was\nunaffected.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_RepeatedAppeal[] = COMPOUND_STRING("{STR_VAR_1} disappointed\nby repeating an appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonsXWentOverGreat[] = COMPOUND_STRING("{STR_VAR_1}'s {STR_VAR_3}\nwent over great.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonsXDidntGoOverWell[] = COMPOUND_STRING("{STR_VAR_1}'s {STR_VAR_3}\ndidn't go over well here…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonsXGotTheCrowdGoing[] = COMPOUND_STRING("{STR_VAR_1}'s {STR_VAR_3}\ngot the crowd going.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonCantAppealNextTurn[] = COMPOUND_STRING("{STR_VAR_1} can't appeal\nnext turn…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_AttractedCrowdsAttention[] = COMPOUND_STRING("It attracted the crowd's\nattention.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_CrowdContinuesToWatchMon[] = COMPOUND_STRING("The crowd continues to\nwatch {STR_VAR_3}.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
const u8 gText_MonsMoveIsIgnored[] = COMPOUND_STRING("{STR_VAR_1}'s\n{STR_VAR_2} is ignored.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}");
static const u8 sSliderHeartYPositions[CONTESTANT_COUNT] =
{
@ -688,84 +710,57 @@ static const u16 sText_Pal[] = INCBIN_U16("graphics/contest/text.gbapal");
#include "data/contest_text_tables.h"
const u8 *const gContestEffectDescriptionPointers[] =
const struct ContestCategory gContestCategoryInfo[CONTEST_CATEGORIES_COUNT + 1] =
{
[CONTEST_EFFECT_HIGHLY_APPEALING] = COMPOUND_STRING("A highly appealing move."),
[CONTEST_EFFECT_USER_MORE_EASILY_STARTLED] = COMPOUND_STRING("After this move, the user is\nmore easily startled."),
[CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES] = COMPOUND_STRING("Makes a great appeal, but\nallows no more to the end."),
[CONTEST_EFFECT_REPETITION_NOT_BORING] = COMPOUND_STRING("Can be repeatedly used\nwithout boring the JUDGE."),
[CONTEST_EFFECT_AVOID_STARTLE_ONCE] = COMPOUND_STRING("Can avoid being startled\nby others once."),
[CONTEST_EFFECT_AVOID_STARTLE] = COMPOUND_STRING("Can avoid being startled\nby others."),
[CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY] = COMPOUND_STRING("Can avoid being startled\nby others a little."),
[CONTEST_EFFECT_USER_LESS_EASILY_STARTLED] = COMPOUND_STRING("After this move, the user is\nless likely to be startled."),
[CONTEST_EFFECT_STARTLE_FRONT_MON] = COMPOUND_STRING("Slightly startles the\nPOKéMON in front."),
[CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS] = COMPOUND_STRING("Slightly startles those\nthat have made appeals."),
[CONTEST_EFFECT_STARTLE_PREV_MON] = COMPOUND_STRING("Startles the POKéMON that\nappealed before the user."),
[CONTEST_EFFECT_STARTLE_PREV_MONS] = COMPOUND_STRING("Startles all POKéMON that\nhave done their appeals."),
[CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON] = COMPOUND_STRING("Badly startles the\nPOKéMON in front."),
[CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS] = COMPOUND_STRING("Badly startles those that\nhave made appeals."),
[CONTEST_EFFECT_STARTLE_PREV_MON_2] = COMPOUND_STRING("Startles the POKéMON that\nappealed before the user."),
[CONTEST_EFFECT_STARTLE_PREV_MONS_2] = COMPOUND_STRING("Startles all POKéMON that\nhave done their appeals."),
[CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION] = COMPOUND_STRING("Shifts the JUDGE's\nattention from others."),
[CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION] = COMPOUND_STRING("Startles the POKéMON that\nhas the JUDGE's attention."),
[CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN] = COMPOUND_STRING("Jams the others, and misses\none turn of appeals."),
[CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL] = COMPOUND_STRING("Startles POKéMON that\nmade a same-type appeal."),
[CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL] = COMPOUND_STRING("Badly startles POKéMON\nthat made COOL appeals."),
[CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL] = COMPOUND_STRING("Badly startles POKéMON\nthat made BEAUTY appeals."),
[CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL] = COMPOUND_STRING("Badly startles POKéMON\nthat made CUTE appeals."),
[CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL] = COMPOUND_STRING("Badly startles POKéMON\nthat made SMART appeals."),
[CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL] = COMPOUND_STRING("Badly startles POKéMON\nthat made TOUGH appeals."),
[CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS] = COMPOUND_STRING("Makes one POKéMON after\nthe user nervous."),
[CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS] = COMPOUND_STRING("Makes all POKéMON after\nthe user nervous."),
[CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS] = COMPOUND_STRING("Worsens the condition of\nthose that made appeals."),
[CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION] = COMPOUND_STRING("Badly startles POKéMON in\ngood condition."),
[CONTEST_EFFECT_BETTER_IF_FIRST] = COMPOUND_STRING("The appeal works great if\nperformed first."),
[CONTEST_EFFECT_BETTER_IF_LAST] = COMPOUND_STRING("The appeal works great if\nperformed last."),
[CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES] = COMPOUND_STRING("Makes the appeal as good\nas those before it."),
[CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE] = COMPOUND_STRING("Makes the appeal as good\nas the one before it."),
[CONTEST_EFFECT_BETTER_WHEN_LATER] = COMPOUND_STRING("The appeal works better\nthe later it is performed."),
[CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING] = COMPOUND_STRING("The appeal's quality varies\ndepending on its timing."),
[CONTEST_EFFECT_BETTER_IF_SAME_TYPE] = COMPOUND_STRING("Works well if it's the same\ntype as the one before."),
[CONTEST_EFFECT_BETTER_IF_DIFF_TYPE] = COMPOUND_STRING("Works well if different in\ntype than the one before."),
[CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL] = COMPOUND_STRING("Affected by how well the\nappeal in front goes."),
[CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS] = COMPOUND_STRING("Ups the user's condition.\nHelps prevent nervousness."),
[CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION] = COMPOUND_STRING("The appeal works well if the\nuser's condition is good."),
[CONTEST_EFFECT_NEXT_APPEAL_EARLIER] = COMPOUND_STRING("The next appeal can be\nmade earlier next turn."),
[CONTEST_EFFECT_NEXT_APPEAL_LATER] = COMPOUND_STRING("The next appeal can be\nmade later next turn."),
[CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER] = COMPOUND_STRING("Makes the next turn's order\nmore easily scrambled."),
[CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER] = COMPOUND_STRING("Scrambles the order of\nappeals on the next turn."),
[CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST] = COMPOUND_STRING("An appeal that excites the\naudience in any CONTEST."),
[CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS] = COMPOUND_STRING("Badly startles all POKéMON\nthat made good appeals."),
[CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED] = COMPOUND_STRING("The appeal works best the\nmore the crowd is excited."),
[CONTEST_EFFECT_DONT_EXCITE_AUDIENCE] = COMPOUND_STRING("Temporarily stops the\ncrowd from growing excited."),
};
[CONTEST_CATEGORY_COOL] =
{
.name = COMPOUND_STRING("COOL"),
.condition = COMPOUND_STRING(""),
.generic = COMPOUND_STRING("COOL Move"),
.negativeTrait = COMPOUND_STRING("shyness"),
.palette = 13,
},
const u8 *const gContestMoveTypeTextPointers[] =
{
[CONTEST_CATEGORY_COOL] = COMPOUND_STRING("COOL"),
[CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("BEAUTY"),
[CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("CUTE"),
[CONTEST_CATEGORY_SMART] = COMPOUND_STRING("SMART"),
[CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("TOUGH"),
};
[CONTEST_CATEGORY_BEAUTY] =
{
.name = COMPOUND_STRING("BEAUTY"),
.condition = COMPOUND_STRING("beauty"),
.generic = COMPOUND_STRING("BEAUTY Move"),
.negativeTrait = COMPOUND_STRING("anxiety"),
.palette = 14,
},
static const u8 *const sContestConditions[] =
{
[CONTEST_CATEGORY_COOL] = COMPOUND_STRING("coolness"),
[CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("beauty"),
[CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("cuteness"),
[CONTEST_CATEGORY_SMART] = COMPOUND_STRING("smartness"),
[CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("toughness"),
};
[CONTEST_CATEGORY_CUTE] =
{
.name = COMPOUND_STRING("CUTE"),
.condition = COMPOUND_STRING("cuteness"),
.generic = COMPOUND_STRING("CUTE Move"),
.negativeTrait = COMPOUND_STRING("laziness"),
.palette = 14,
},
static const u8 *const sInvalidContestMoveNames[] =
{
[CONTEST_CATEGORY_COOL] = COMPOUND_STRING("COOL Move"),
[CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("BEAUTY Move"),
[CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("CUTE Move"),
[CONTEST_CATEGORY_SMART] = COMPOUND_STRING("SMART Move"),
[CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("TOUGH Move"),
[CONTEST_CATEGORIES_COUNT] = COMPOUND_STRING("???"),
[CONTEST_CATEGORY_SMART] =
{
.name = COMPOUND_STRING("SMART"),
.condition = COMPOUND_STRING("smartness"),
.generic = COMPOUND_STRING("SMART Move"),
.negativeTrait = COMPOUND_STRING("hesitancy"),
.palette = 15,
},
[CONTEST_CATEGORY_TOUGH] =
{
.name = COMPOUND_STRING("TOUGH"),
.condition = COMPOUND_STRING("toughness"),
.generic = COMPOUND_STRING("TOUGH Move"),
.negativeTrait = COMPOUND_STRING("fear"),
.palette = 13,
},
[CONTEST_CATEGORIES_COUNT] =
{
.generic = COMPOUND_STRING("???"),
},
};
// Takes the .attentionLevel of a contestant as an index.
@ -1914,7 +1909,7 @@ static void Task_DoAppeals(u8 taskId)
if (eContestantStatus[contestant].currMove < MOVES_COUNT)
StringCopy(gStringVar2, GetMoveName(eContestantStatus[contestant].currMove));
else
StringCopy(gStringVar2, sInvalidContestMoveNames[eContestantStatus[contestant].moveCategory]);
StringCopy(gStringVar2, gContestCategoryInfo[eContestantStatus[contestant].moveCategory].generic);
StringExpandPlaceholders(gStringVar4, gText_MonAppealedWithMove);
Contest_StartTextPrinter(gStringVar4, TRUE);
gTasks[taskId].tState = APPEALSTATE_WAIT_USED_MOVE_MSG;
@ -2310,7 +2305,7 @@ static void Task_DoAppeals(u8 taskId)
}
else
{
StringCopy(gStringVar3, sContestConditions[GetMoveContestCategory(eContestantStatus[contestant].currMove)]);
StringCopy(gStringVar3, gContestCategoryInfo[GetMoveContestCategory(eContestantStatus[contestant].currMove)].condition);
}
if (r3 > 0 && eContestantStatus[contestant].repeatedMove)
@ -3330,7 +3325,7 @@ static void PrintContestMoveDescription(u16 move)
ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11);
FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[GetMoveContestEffect(move)]);
Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffects[GetMoveContestEffect(move)].description);
Contest_PrintTextToBg0WindowStd(WIN_SLASH, gText_Slash);
}
@ -4559,7 +4554,7 @@ static void CalculateAppealMoveImpact(u8 contestant)
&& !AreMovesContestCombo(eContestantStatus[contestant].prevMove, eContestantStatus[contestant].currMove))
eContestantStatus[contestant].hasJudgesAttention = FALSE;
gContestEffectFuncs[effect]();
gContestEffects[effect].function();
if (eContestantStatus[contestant].conditionMod == CONDITION_GAIN)
eContestantStatus[contestant].appeal += eContestantStatus[contestant].condition - 10;
@ -4664,16 +4659,7 @@ static void PrintAppealMoveResultText(u8 contestant, u8 stringId)
{
StringCopy(gStringVar1, gContestMons[contestant].nickname);
StringCopy(gStringVar2, GetMoveName(eContestantStatus[contestant].currMove));
if (GetMoveContestCategory(eContestantStatus[eContestAppealResults.contestant].currMove) == CONTEST_CATEGORY_COOL)
StringCopy(gStringVar3, gText_Contest_Shyness);
else if (GetMoveContestCategory(eContestantStatus[eContestAppealResults.contestant].currMove) == CONTEST_CATEGORY_BEAUTY)
StringCopy(gStringVar3, gText_Contest_Anxiety);
else if (GetMoveContestCategory(eContestantStatus[eContestAppealResults.contestant].currMove) == CONTEST_CATEGORY_CUTE)
StringCopy(gStringVar3, gText_Contest_Laziness);
else if (GetMoveContestCategory(eContestantStatus[eContestAppealResults.contestant].currMove) == CONTEST_CATEGORY_SMART)
StringCopy(gStringVar3, gText_Contest_Hesitancy);
else
StringCopy(gStringVar3, gText_Contest_Fear);
StringCopy(gStringVar3, gContestCategoryInfo[GetMoveContestCategory(eContestantStatus[eContestAppealResults.contestant].currMove)].negativeTrait);
StringExpandPlaceholders(gStringVar4, sAppealResultTexts[stringId]);
ContestClearGeneralTextWindow();
Contest_StartTextPrinter(gStringVar4, TRUE);

View File

@ -133,7 +133,7 @@ static void ContestEffect_UserLessEasilyStartled(void)
SetContestantEffectStringID(eContestAppealResults.contestant,CONTEST_STRING_STOPPED_CARING);
}
// Slightly startles the POK<4F>MON in front.
// Badly startles the Pokémon in front.
static void ContestEffect_StartleFrontMon(void)
{
u8 idx = 0;
@ -611,6 +611,7 @@ static void ContestEffect_BetterWhenLater(void)
}
// The appeal's quality varies depending on its timing.
// Despite the name, it seems to be random and not based on timing
static void ContestEffect_QualityDependsOnTiming(void)
{
u8 rval = Random() % 10;

View File

@ -42,32 +42,7 @@ static void PrintContestPaintingCaption(u8, u8);
static void VBlankCB_ContestPainting(void);
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]);
extern const u8 gContestHallPaintingCaption[];
extern const u8 gContestCoolness[];
extern const u8 gContestBeauty[];
extern const u8 gContestCuteness[];
extern const u8 gContestSmartness[];
extern const u8 gContestToughness[];
extern const u8 gContestRankNormal[];
extern const u8 gContestRankSuper[];
extern const u8 gContestRankHyper[];
extern const u8 gContestRankMaster[];
extern const u8 gContestLink[];
extern const u8 gContestPaintingCool1[];
extern const u8 gContestPaintingCool2[];
extern const u8 gContestPaintingCool3[];
extern const u8 gContestPaintingBeauty1[];
extern const u8 gContestPaintingBeauty2[];
extern const u8 gContestPaintingBeauty3[];
extern const u8 gContestPaintingCute1[];
extern const u8 gContestPaintingCute2[];
extern const u8 gContestPaintingCute3[];
extern const u8 gContestPaintingSmart1[];
extern const u8 gContestPaintingSmart2[];
extern const u8 gContestPaintingSmart3[];
extern const u8 gContestPaintingTough1[];
extern const u8 gContestPaintingTough2[];
extern const u8 gContestPaintingTough3[];
const u8 gContestHallPaintingCaption[] = COMPOUND_STRING("{STR_VAR_1}\n{STR_VAR_2}'s {STR_VAR_3}");
static const u16 sPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
static const u32 sPictureFrameTiles_Cool[] = INCBIN_U32("graphics/picture_frame/cool.4bpp.smol");
@ -85,20 +60,20 @@ static const u32 sPictureFrameTilemap_HallLobby[] = INCBIN_U32("graphics/picture
static const u8 *const sContestCategoryNames_Unused[] =
{
[CONTEST_CATEGORY_COOL] = gContestCoolness,
[CONTEST_CATEGORY_BEAUTY] = gContestBeauty,
[CONTEST_CATEGORY_CUTE] = gContestCuteness,
[CONTEST_CATEGORY_SMART] = gContestSmartness,
[CONTEST_CATEGORY_TOUGH] = gContestToughness,
[CONTEST_CATEGORY_COOL] = COMPOUND_STRING("COOLNESS"),
[CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("BEAUTY"),
[CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("CUTENESS"),
[CONTEST_CATEGORY_SMART] = COMPOUND_STRING("SMARTNESS"),
[CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("TOUGHNESS"),
};
static const u8 *const sContestRankNames[] =
{
[CONTEST_RANK_NORMAL] = gContestRankNormal,
[CONTEST_RANK_SUPER] = gContestRankSuper,
[CONTEST_RANK_HYPER] = gContestRankHyper,
[CONTEST_RANK_MASTER] = gContestRankMaster,
[CONTEST_RANK_LINK] = gContestLink,
[CONTEST_RANK_NORMAL] = COMPOUND_STRING("NORMAL RANK"),
[CONTEST_RANK_SUPER] = COMPOUND_STRING("SUPER RANK"),
[CONTEST_RANK_HYPER] = COMPOUND_STRING("HYPER RANK"),
[CONTEST_RANK_MASTER] = COMPOUND_STRING("MASTER RANK"),
[CONTEST_RANK_LINK] = COMPOUND_STRING("LINK"),
};
static const struct BgTemplate sBgTemplates[] =
@ -127,21 +102,21 @@ static const struct WindowTemplate sWindowTemplate =
static const u8 *const sMuseumCaptions[NUM_PAINTING_CAPTIONS * CONTEST_CATEGORIES_COUNT] =
{
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool1,
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool2,
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool3,
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty1,
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty2,
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty3,
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute1,
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute2,
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute3,
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart1,
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart2,
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart3,
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough1,
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough2,
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough3,
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = COMPOUND_STRING("Nonstop supercool--\nthe inestimable {STR_VAR_1}"),
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = COMPOUND_STRING("Hey, there!\nThe good-looking POKéMON {STR_VAR_1}"),
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = COMPOUND_STRING("The marvelous, wonderful, and\nvery great {STR_VAR_1}"),
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("This century's last Venus--\nthe beautiful {STR_VAR_1}"),
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("{STR_VAR_1}'s dazzling,\nglittering smile"),
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = COMPOUND_STRING("POKéMON CENTER's super idol--\nthe incomparable {STR_VAR_1}"),
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("The lovely and sweet {STR_VAR_1}"),
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("The pretty {STR_VAR_1}'s\nwinning portrait"),
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = COMPOUND_STRING("Give us a wink!\nThe cutie POKéMON {STR_VAR_1}"),
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = COMPOUND_STRING("The smartness maestro--\nthe wise POKéMON {STR_VAR_1}"),
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = COMPOUND_STRING("{STR_VAR_1}--the one chosen\nabove all POKéMON"),
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = COMPOUND_STRING("The excellent {STR_VAR_1}'s\nmoment of elegance"),
[0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("The powerfully muscular\nspeedster {STR_VAR_1}"),
[1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("The strong, stronger, and\nstrongest {STR_VAR_1}"),
[2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = COMPOUND_STRING("The mighty tough\nhyper POKéMON {STR_VAR_1}"),
};
static const struct OamData sContestPaintingMonOamData =

View File

@ -2,342 +2,422 @@ const struct ContestEffect gContestEffects[] =
{
[CONTEST_EFFECT_HIGHLY_APPEALING] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Quite the appealing move."),
#else
.description = COMPOUND_STRING("A highly appealing move."),
#endif
.effectType = CONTEST_EFFECT_TYPE_APPEAL,
.appeal = 40,
.jam = 0,
.function = ContestEffect_HighlyAppealing,
},
[CONTEST_EFFECT_USER_MORE_EASILY_STARTLED] =
{
.description = COMPOUND_STRING("After this move, the user is\nmore easily startled."),
.effectType = CONTEST_EFFECT_TYPE_APPEAL,
.appeal = 60,
.jam = 0,
.function = ContestEffect_UserMoreEasilyStartled,
},
[CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES] =
{
.description = COMPOUND_STRING("Makes a great appeal, but\nallows no more to the end."),
.effectType = CONTEST_EFFECT_TYPE_APPEAL,
.appeal = 80,
.jam = 0,
.function = ContestEffect_GreatAppealButNoMoreMoves,
},
[CONTEST_EFFECT_REPETITION_NOT_BORING] =
{
.description = COMPOUND_STRING("Can be repeatedly used\nwithout boring the JUDGE."),
.effectType = CONTEST_EFFECT_TYPE_APPEAL,
.appeal = 30,
.jam = 0,
.function = ContestEffect_RepetitionNotBoring,
},
[CONTEST_EFFECT_AVOID_STARTLE_ONCE] =
{
.description = COMPOUND_STRING("Can avoid being startled\nby others once."),
.effectType = CONTEST_EFFECT_TYPE_AVOID_STARTLE,
.appeal = 20,
.jam = 0,
.function = ContestEffect_AvoidStartleOnce,
},
[CONTEST_EFFECT_AVOID_STARTLE] =
{
.description = COMPOUND_STRING("Can avoid being startled\nby others."),
.effectType = CONTEST_EFFECT_TYPE_AVOID_STARTLE,
.appeal = 10,
.jam = 0,
.function = ContestEffect_AvoidStartle,
},
[CONTEST_EFFECT_AVOID_STARTLE_SLIGHTLY] =
{
.description = COMPOUND_STRING("Can avoid being startled\nby others a little."),
.effectType = CONTEST_EFFECT_TYPE_AVOID_STARTLE,
.appeal = 30,
.jam = 0,
.function = ContestEffect_AvoidStartleSlightly,
},
[CONTEST_EFFECT_USER_LESS_EASILY_STARTLED] =
{
.description = COMPOUND_STRING("After this move, the user is\nless likely to be startled."),
.effectType = CONTEST_EFFECT_TYPE_AVOID_STARTLE,
.appeal = 30,
.jam = 0,
.function = ContestEffect_UserLessEasilyStartled,
},
[CONTEST_EFFECT_STARTLE_FRONT_MON] =
{
.description = COMPOUND_STRING("Slightly startles the\nPOKéMON in front."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MON,
.appeal = 30,
.jam = 20,
.function = ContestEffect_StartleFrontMon,
},
[CONTEST_EFFECT_SLIGHTLY_STARTLE_PREV_MONS] =
{
.description = COMPOUND_STRING("Slightly startles those\nthat have made appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 30,
.jam = 10,
.function = ContestEffect_StartlePrevMons,
},
[CONTEST_EFFECT_STARTLE_PREV_MON] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Startles the last Pokémon\nto act before the user."),
#else
.description = COMPOUND_STRING("Startles the POKéMON that\nappealed before the user."),
#endif
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MON,
.appeal = 20,
.jam = 30,
.function = ContestEffect_StartleFrontMon,
},
[CONTEST_EFFECT_STARTLE_PREV_MONS] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Startles all of the Pokémon\nto act before the user."),
#else
.description = COMPOUND_STRING("Startles all POKéMON that\nhave done their appeals."),
#endif
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 20,
.function = ContestEffect_StartlePrevMons,
},
[CONTEST_EFFECT_BADLY_STARTLE_FRONT_MON] =
{
.description = COMPOUND_STRING("Badly startles the\nPOKéMON in front."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MON,
.appeal = 10,
.jam = 40,
.function = ContestEffect_StartleFrontMon,
},
[CONTEST_EFFECT_BADLY_STARTLE_PREV_MONS] =
{
.description = COMPOUND_STRING("Badly startles those that\nhave made appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 10,
.jam = 30,
.function = ContestEffect_StartlePrevMons,
},
[CONTEST_EFFECT_STARTLE_PREV_MON_2] =
{
.description = COMPOUND_STRING("Startles the POKéMON that\nappealed before the user."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MON,
.appeal = 30,
.jam = 20,
.function = ContestEffect_StartlePrevMon2,
},
[CONTEST_EFFECT_STARTLE_PREV_MONS_2] =
{
.description = COMPOUND_STRING("Startles all POKéMON that\nhave done their appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 30,
.jam = 10,
.function = ContestEffect_StartlePrevMons2,
},
[CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Makes audience expect\nlittle of other contestants."),
#else
.description = COMPOUND_STRING("Shifts the JUDGE's\nattention from others."),
#endif
.effectType = CONTEST_EFFECT_TYPE_WORSEN,
.appeal = 30,
.jam = 0,
.function = ContestEffect_ShiftJudgeAttention,
},
[CONTEST_EFFECT_STARTLE_MON_WITH_JUDGES_ATTENTION] =
{
.description = COMPOUND_STRING("Startles the POKéMON that\nhas the JUDGE's attention."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonWithJudgesAttention,
},
[CONTEST_EFFECT_JAMS_OTHERS_BUT_MISS_ONE_TURN] =
{
.description = COMPOUND_STRING("Jams the others, and misses\none turn of appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 40,
.jam = 40,
.function = ContestEffect_JamsOthersButMissOneTurn,
},
[CONTEST_EFFECT_STARTLE_MONS_SAME_TYPE_APPEAL] =
{
.description = COMPOUND_STRING("Startles POKéMON that\nmade a same-type appeal."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsSameTypeAppeal,
},
[CONTEST_EFFECT_STARTLE_MONS_COOL_APPEAL] =
{
.description = COMPOUND_STRING("Badly startles POKéMON\nthat made COOL appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsCoolAppeal,
},
[CONTEST_EFFECT_STARTLE_MONS_BEAUTY_APPEAL] =
{
.description = COMPOUND_STRING("Badly startles POKéMON\nthat made BEAUTY appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsBeautyAppeal,
},
[CONTEST_EFFECT_STARTLE_MONS_CUTE_APPEAL] =
{
.description = COMPOUND_STRING("Badly startles POKéMON\nthat made CUTE appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsCuteAppeal,
},
[CONTEST_EFFECT_STARTLE_MONS_SMART_APPEAL] =
{
.description = COMPOUND_STRING("Badly startles POKéMON\nthat made SMART appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsSmartAppeal,
},
[CONTEST_EFFECT_STARTLE_MONS_TOUGH_APPEAL] =
{
.description = COMPOUND_STRING("Badly startles POKéMON\nthat made TOUGH appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_StartleMonsToughAppeal,
},
[CONTEST_EFFECT_MAKE_FOLLOWING_MON_NERVOUS] =
{
.description = COMPOUND_STRING("Makes one POKéMON after\nthe user nervous."),
.effectType = CONTEST_EFFECT_TYPE_WORSEN,
.appeal = 20,
.jam = 0,
.function = ContestEffect_MakeFollowingMonNervous,
},
[CONTEST_EFFECT_MAKE_FOLLOWING_MONS_NERVOUS] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Makes the remaining\nPokémon nervous."),
#else
.description = COMPOUND_STRING("Makes all POKéMON after\nthe user nervous."),
#endif
.effectType = CONTEST_EFFECT_TYPE_WORSEN,
.appeal = 20,
.jam = 0,
.function = ContestEffect_MakeFollowingMonsNervous,
},
[CONTEST_EFFECT_WORSEN_CONDITION_OF_PREV_MONS] =
{
.description = COMPOUND_STRING("Worsens the condition of\nthose that made appeals."),
.effectType = CONTEST_EFFECT_TYPE_WORSEN,
.appeal = 30,
.jam = 0,
.function = ContestEffect_WorsenConditionOfPrevMons,
},
[CONTEST_EFFECT_BADLY_STARTLES_MONS_IN_GOOD_CONDITION] =
{
.description = COMPOUND_STRING("Badly startles POKéMON in\ngood condition."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 30,
.jam = 10,
.function = ContestEffect_BadlyStartlesMonsInGoodCondition,
},
[CONTEST_EFFECT_BETTER_IF_FIRST] =
{
.description = COMPOUND_STRING("The appeal works great if\nperformed first."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 20,
.jam = 0,
.function = ContestEffect_BetterIfFirst,
},
[CONTEST_EFFECT_BETTER_IF_LAST] =
{
.description = COMPOUND_STRING("The appeal works great if\nperformed last."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 20,
.jam = 0,
.function = ContestEffect_BetterIfLast,
},
[CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONES] =
{
.description = COMPOUND_STRING("Makes the appeal as good\nas those before it."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_AppealAsGoodAsPrevOnes,
},
[CONTEST_EFFECT_APPEAL_AS_GOOD_AS_PREV_ONE] =
{
.description = COMPOUND_STRING("Makes the appeal as good\nas the one before it."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_AppealAsGoodAsPrevOne,
},
[CONTEST_EFFECT_BETTER_WHEN_LATER] =
{
.description = COMPOUND_STRING("The appeal works better\nthe later it is performed."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_BetterWhenLater,
},
[CONTEST_EFFECT_QUALITY_DEPENDS_ON_TIMING] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Effectiveness varies\ndepending on when it is used."),
#else
.description = COMPOUND_STRING("The appeal's quality varies\ndepending on its timing."),
#endif
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_QualityDependsOnTiming,
},
[CONTEST_EFFECT_BETTER_IF_SAME_TYPE] =
{
.description = COMPOUND_STRING("Works well if it's the same\ntype as the one before."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 20,
.jam = 0,
.function = ContestEffect_BetterIfSameType,
},
[CONTEST_EFFECT_BETTER_IF_DIFF_TYPE] =
{
.description = COMPOUND_STRING("Works well if different in\ntype than the one before."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 20,
.jam = 0,
.function = ContestEffect_BetterIfDiffType,
},
[CONTEST_EFFECT_AFFECTED_BY_PREV_APPEAL] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Affected by how well the\nprevious Pokémon's move went."),
#else
.description = COMPOUND_STRING("Affected by how well the\nappeal in front goes."),
#endif
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 30,
.jam = 0,
.function = ContestEffect_AffectedByPrevAppeal,
},
[CONTEST_EFFECT_IMPROVE_CONDITION_PREVENT_NERVOUSNESS] =
{
.description = COMPOUND_STRING("Ups the user's condition.\nHelps prevent nervousness."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_ImproveConditionPreventNervousness,
},
[CONTEST_EFFECT_BETTER_WITH_GOOD_CONDITION] =
{
.description = COMPOUND_STRING("The appeal works well if the\nuser's condition is good."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_BetterWithGoodCondition,
},
[CONTEST_EFFECT_NEXT_APPEAL_EARLIER] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Causes the user to move\nearlier on the next turn."),
#else
.description = COMPOUND_STRING("The next appeal can be\nmade earlier next turn."),
#endif
.effectType = CONTEST_EFFECT_TYPE_TURN_ORDER,
.appeal = 30,
.jam = 0,
.function = ContestEffect_NextAppealEarlier,
},
[CONTEST_EFFECT_NEXT_APPEAL_LATER] =
{
#if C_UPDATED_MOVE_EFFECTS >= GEN_6
.description = COMPOUND_STRING("Causes the user to move\nlater on the next turn."),
#else
.description = COMPOUND_STRING("The next appeal can be\nmade later next turn."),
#endif
.effectType = CONTEST_EFFECT_TYPE_TURN_ORDER,
.appeal = 30,
.jam = 0,
.function = ContestEffect_NextAppealLater,
},
[CONTEST_EFFECT_MAKE_SCRAMBLING_TURN_ORDER_EASIER] =
{
.description = COMPOUND_STRING("Makes the next turn's order\nmore easily scrambled."),
.effectType = CONTEST_EFFECT_TYPE_TURN_ORDER,
.appeal = 30,
.jam = 0,
.function = ContestEffect_MakeScramblingTurnOrderEasier,
},
[CONTEST_EFFECT_SCRAMBLE_NEXT_TURN_ORDER] =
{
.description = COMPOUND_STRING("Scrambles the order of\nappeals on the next turn."),
.effectType = CONTEST_EFFECT_TYPE_TURN_ORDER,
.appeal = 30,
.jam = 0,
.function = ContestEffect_ScrambleNextTurnOrder,
},
[CONTEST_EFFECT_EXCITE_AUDIENCE_IN_ANY_CONTEST] =
{
.description = COMPOUND_STRING("An appeal that excites the\naudience in any CONTEST."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.appeal = C_UPDATED_MOVE_EFFECTS >= GEN_6 ? 20 : 10,
.jam = 0,
.function = ContestEffect_ExciteAudienceInAnyContest,
},
[CONTEST_EFFECT_BADLY_STARTLE_MONS_WITH_GOOD_APPEALS] =
{
.description = COMPOUND_STRING("Badly startles all POKéMON\nthat made good appeals."),
.effectType = CONTEST_EFFECT_TYPE_STARTLE_MONS,
.appeal = 20,
.jam = 10,
.function = ContestEffect_BadlyStartleMonsWithGoodAppeals,
},
[CONTEST_EFFECT_BETTER_WHEN_AUDIENCE_EXCITED] =
{
.description = COMPOUND_STRING("The appeal works best the\nmore the crowd is excited."),
.effectType = CONTEST_EFFECT_TYPE_SPECIAL_APPEAL,
.appeal = 10,
.jam = 0,
.function = ContestEffect_BetterWhenAudienceExcited,
},
[CONTEST_EFFECT_DONT_EXCITE_AUDIENCE] =
{
.description = COMPOUND_STRING("Temporarily stops the\ncrowd from growing excited."),
.effectType = CONTEST_EFFECT_TYPE_WORSEN,
.appeal = 30,
.jam = 0,
.function = ContestEffect_DontExciteAudience,
},
};
void (*const gContestEffectFuncs[])(void) =
{
ContestEffect_HighlyAppealing,
ContestEffect_UserMoreEasilyStartled,
ContestEffect_GreatAppealButNoMoreMoves,
ContestEffect_RepetitionNotBoring,
ContestEffect_AvoidStartleOnce,
ContestEffect_AvoidStartle,
ContestEffect_AvoidStartleSlightly,
ContestEffect_UserLessEasilyStartled,
ContestEffect_StartleFrontMon,
ContestEffect_StartlePrevMons,
ContestEffect_StartleFrontMon,
ContestEffect_StartlePrevMons,
ContestEffect_StartleFrontMon,
ContestEffect_StartlePrevMons,
ContestEffect_StartlePrevMon2,
ContestEffect_StartlePrevMons2,
ContestEffect_ShiftJudgeAttention,
ContestEffect_StartleMonWithJudgesAttention,
ContestEffect_JamsOthersButMissOneTurn,
ContestEffect_StartleMonsSameTypeAppeal,
ContestEffect_StartleMonsCoolAppeal,
ContestEffect_StartleMonsBeautyAppeal,
ContestEffect_StartleMonsCuteAppeal,
ContestEffect_StartleMonsSmartAppeal,
ContestEffect_StartleMonsToughAppeal,
ContestEffect_MakeFollowingMonNervous,
ContestEffect_MakeFollowingMonsNervous,
ContestEffect_WorsenConditionOfPrevMons,
ContestEffect_BadlyStartlesMonsInGoodCondition,
ContestEffect_BetterIfFirst,
ContestEffect_BetterIfLast,
ContestEffect_AppealAsGoodAsPrevOnes,
ContestEffect_AppealAsGoodAsPrevOne,
ContestEffect_BetterWhenLater,
ContestEffect_QualityDependsOnTiming,
ContestEffect_BetterIfSameType,
ContestEffect_BetterIfDiffType,
ContestEffect_AffectedByPrevAppeal,
ContestEffect_ImproveConditionPreventNervousness,
ContestEffect_BetterWithGoodCondition,
ContestEffect_NextAppealEarlier,
ContestEffect_NextAppealLater,
ContestEffect_MakeScramblingTurnOrderEasier,
ContestEffect_ScrambleNextTurnOrder,
ContestEffect_ExciteAudienceInAnyContest,
ContestEffect_BadlyStartleMonsWithGoodAppeals,
ContestEffect_BetterWhenAudienceExcited,
ContestEffect_DontExciteAudience,
};

View File

@ -1,151 +1,73 @@
#include "global.h"
// sAppealResultTexts
extern const u8 gText_BecameMoreConsciousOfOtherMons[];
extern const u8 gText_MonCantMakeAnAppealAfterThis[];
extern const u8 gText_SettledDownJustLittleBit[];
extern const u8 gText_BecameObliviousToOtherMons[];
extern const u8 gText_BecameLessAwareOfOtherMons[];
extern const u8 gText_StoppedCaringAboutOtherMons[];
extern const u8 gText_TriedToStartleOtherMons[];
extern const u8 gText_TriedToDazzleOthers[];
extern const u8 gText_JudgeLookedAwayFromMon[];
extern const u8 gText_TriedToUnnerveNextMon[];
extern const u8 gText_MonBecameNervous[];
extern const u8 gText_AppealTriedToUnnerveWaitingMons[];
extern const u8 gText_TauntedMonsDoingWell[];
extern const u8 gText_MonRegainedItsForm[];
extern const u8 gText_TriedToJamMonDoingWell[];
extern const u8 gText_StandoutMonHustledEvenMore[];
extern const u8 gText_LargelyUnnoticedMonWorkedHard[];
extern const u8 gText_WorkedAsMuchAsMonBefore[];
extern const u8 gText_WorkedAsMuchAsPrecedingMon[];
extern const u8 gText_MonsAppealWasDud[];
extern const u8 gText_MonsAppealDidNotGoWell[];
extern const u8 gText_MonsAppealDidNotGoWell2[];
extern const u8 gText_MonsAppealDidNotGoWell3[];
extern const u8 gText_MonsAppealDidNotWorkVeryWell[];
extern const u8 gText_MonsAppealWentSlightlyWell[];
extern const u8 gText_MonsAppealWentSlightlyWell2[];
extern const u8 gText_MonsAppealWentPrettyWell[];
extern const u8 gText_MonsAppealWentPrettyWell2[];
extern const u8 gText_MonsAppealWentVeryWell[];
extern const u8 gText_MonsAppealWentExcellently[];
extern const u8 gText_MonsAppealWentExcellently2[];
extern const u8 gText_SameTypeAsOneBeforeGood[];
extern const u8 gText_NotSameTypeAsOneBeforeGood[];
extern const u8 gText_StoodOutMuchMoreThanMonBefore[];
extern const u8 gText_DidntDoAsWellAsMonBefore[];
extern const u8 gText_MonsConditionRoseAboveUsual[];
extern const u8 gText_MonsHotStatusMadeGreatAppeal[];
extern const u8 gText_MovedUpInLineForNextAppeal[];
extern const u8 gText_MovedBackInLineForNextAppeal[];
extern const u8 gText_ScrambledUpOrderForNextTurn[];
extern const u8 gText_JudgeLookedAtMonExpectantly[];
extern const u8 gText_AppealComboWentOverWell[];
extern const u8 gText_AppealComboWentOverVeryWell[];
extern const u8 gText_AppealComboWentOverExcellently[];
extern const u8 gText_MonManagedToAvertGaze[];
extern const u8 gText_MonManagedToAvoidSeeingIt[];
extern const u8 gText_MonIsntFazedByThatSortOfThing[];
extern const u8 gText_MonBecameALittleDistracted[];
extern const u8 gText_TriedToStartleOtherPokemon[];
extern const u8 gText_MonLookedDownOutOfDistraction[];
extern const u8 gText_MonTurnedBackOutOfDistraction[];
extern const u8 gText_MonCouldntHelpUtteringCry[];
extern const u8 gText_MonCouldntHelpLeapingUp[];
extern const u8 gText_MonTrippedOutOfDistraction[];
extern const u8 gText_ButItMessedUp2[];
extern const u8 gText_ButItFailedToMakeTargetNervous[];
extern const u8 gText_ButItFailedToMakeAnyoneNervous[];
extern const u8 gText_ButItWasIgnored[];
extern const u8 gText_CouldntImproveItsCondition[];
extern const u8 gText_BadConditionResultedInWeakAppeal[];
extern const u8 gText_MonWasUnaffected[];
extern const u8 gText_AttractedCrowdsAttention[];
// Misc, used directly
extern const u8 gText_MonAppealedWithMove[];
extern const u8 gText_MonCantAppealNextTurn[];
extern const u8 gText_RepeatedAppeal[];
extern const u8 gText_MonsXDidntGoOverWell[];
extern const u8 gText_MonsXWentOverGreat[];
extern const u8 gText_MonsXGotTheCrowdGoing[];
extern const u8 gText_CrowdContinuesToWatchMon[];
extern const u8 gText_MonsMoveIsIgnored[];
extern const u8 gText_MonWasTooNervousToMove[];
extern const u8 gText_MonWasWatchingOthers[];
extern const u8 gText_AllOutOfAppealTime[];
extern const u8 gText_Contest_Shyness[];
extern const u8 gText_Contest_Anxiety[];
extern const u8 gText_Contest_Laziness[];
extern const u8 gText_Contest_Hesitancy[];
extern const u8 gText_Contest_Fear[];
extern const u8 gText_AppealNumWhichMoveWillBePlayed[];
extern const u8 gText_AppealNumButItCantParticipate[];
static const u8 *const sAppealResultTexts[] =
{
[CONTEST_STRING_MORE_CONSCIOUS] = gText_BecameMoreConsciousOfOtherMons,
[CONTEST_STRING_NO_APPEAL] = gText_MonCantMakeAnAppealAfterThis,
[CONTEST_STRING_SETTLE_DOWN] = gText_SettledDownJustLittleBit,
[CONTEST_STRING_OBLIVIOUS_TO_OTHERS] = gText_BecameObliviousToOtherMons,
[CONTEST_STRING_LESS_AWARE] = gText_BecameLessAwareOfOtherMons,
[CONTEST_STRING_STOPPED_CARING] = gText_StoppedCaringAboutOtherMons,
[CONTEST_STRING_STARTLE_ATTEMPT] = gText_TriedToStartleOtherMons,
[CONTEST_STRING_DAZZLE_ATTEMPT] = gText_TriedToDazzleOthers,
[CONTEST_STRING_JUDGE_LOOK_AWAY2] = gText_JudgeLookedAwayFromMon,
[CONTEST_STRING_UNNERVE_ATTEMPT] = gText_TriedToUnnerveNextMon,
[CONTEST_STRING_NERVOUS] = gText_MonBecameNervous,
[CONTEST_STRING_UNNERVE_WAITING] = gText_AppealTriedToUnnerveWaitingMons,
[CONTEST_STRING_TAUNT_WELL] = gText_TauntedMonsDoingWell,
[CONTEST_STRING_REGAINED_FORM] = gText_MonRegainedItsForm,
[CONTEST_STRING_JAM_WELL] = gText_TriedToJamMonDoingWell,
[CONTEST_STRING_HUSTLE_STANDOUT] = gText_StandoutMonHustledEvenMore,
[CONTEST_STRING_WORK_HARD_UNNOTICED] = gText_LargelyUnnoticedMonWorkedHard,
[CONTEST_STRING_WORK_BEFORE] = gText_WorkedAsMuchAsMonBefore,
[CONTEST_STRING_APPEAL_NOT_WELL] = gText_MonsAppealDidNotGoWell,
[CONTEST_STRING_WORK_PRECEDING] = gText_WorkedAsMuchAsPrecedingMon,
[CONTEST_STRING_APPEAL_NOT_WELL2] = gText_MonsAppealDidNotGoWell2,
[CONTEST_STRING_APPEAL_NOT_SHOWN_WELL] = gText_MonsAppealDidNotGoWell3,
[CONTEST_STRING_APPEAL_SLIGHTLY_WELL] = gText_MonsAppealWentSlightlyWell,
[CONTEST_STRING_APPEAL_PRETTY_WELL] = gText_MonsAppealWentPrettyWell,
[CONTEST_STRING_APPEAL_EXCELLENTLY] = gText_MonsAppealWentExcellently,
[CONTEST_STRING_APPEAL_DUD] = gText_MonsAppealWasDud,
[CONTEST_STRING_APPEAL_NOT_VERY_WELL] = gText_MonsAppealDidNotWorkVeryWell,
[CONTEST_STRING_APPEAL_SLIGHTLY_WELL2] = gText_MonsAppealWentSlightlyWell2,
[CONTEST_STRING_APPEAL_PRETTY_WELL2] = gText_MonsAppealWentPrettyWell2,
[CONTEST_STRING_APPEAL_VERY_WELL] = gText_MonsAppealWentVeryWell,
[CONTEST_STRING_APPEAL_EXCELLENTLY2] = gText_MonsAppealWentExcellently2,
[CONTEST_STRING_SAME_TYPE_GOOD] = gText_SameTypeAsOneBeforeGood,
[CONTEST_STRING_DIFF_TYPE_GOOD] = gText_NotSameTypeAsOneBeforeGood,
[CONTEST_STRING_STOOD_OUT_AS_MUCH] = gText_StoodOutMuchMoreThanMonBefore,
[CONTEST_STRING_NOT_AS_WELL] = gText_DidntDoAsWellAsMonBefore,
[CONTEST_STRING_CONDITION_ROSE] = gText_MonsConditionRoseAboveUsual,
[CONTEST_STRING_HOT_STATUS] = gText_MonsHotStatusMadeGreatAppeal,
[CONTEST_STRING_MOVE_UP_LINE] = gText_MovedUpInLineForNextAppeal,
[CONTEST_STRING_MOVE_BACK_LINE] = gText_MovedBackInLineForNextAppeal,
[CONTEST_STRING_SCRAMBLE_ORDER] = gText_ScrambledUpOrderForNextTurn,
[CONTEST_STRING_MORE_CONSCIOUS] = COMPOUND_STRING("It became more conscious\nof the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_NO_APPEAL] = COMPOUND_STRING("{STR_VAR_1} can't make an\nappeal after this.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_SETTLE_DOWN] = COMPOUND_STRING("It settled down just a\nlittle bit.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_OBLIVIOUS_TO_OTHERS] = COMPOUND_STRING("It became oblivious to\nthe other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_LESS_AWARE] = COMPOUND_STRING("It became less aware of\nthe other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_STOPPED_CARING] = COMPOUND_STRING("It stopped caring about\nother POKéMON much.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_STARTLE_ATTEMPT] = COMPOUND_STRING("It tried to startle the\nother POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_DAZZLE_ATTEMPT] = COMPOUND_STRING("It tried to dazzle the\nothers.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_JUDGE_LOOK_AWAY2] = COMPOUND_STRING("The JUDGE looked away\nfrom {STR_VAR_1}.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_UNNERVE_ATTEMPT] = COMPOUND_STRING("It tried to unnerve the\nnext POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_NERVOUS] = COMPOUND_STRING("{STR_VAR_1} became\nnervous.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_UNNERVE_WAITING] = COMPOUND_STRING("The appeal tried to\nunnerve waiting POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_TAUNT_WELL] = COMPOUND_STRING("It taunted POKéMON\ndoing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_REGAINED_FORM] = COMPOUND_STRING("{STR_VAR_1} regained its\nform.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_JAM_WELL] = COMPOUND_STRING("It tried to jam POKéMON\ndoing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_HUSTLE_STANDOUT] = COMPOUND_STRING("The standout {STR_VAR_1}\nhustled even more.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_WORK_HARD_UNNOTICED] = COMPOUND_STRING("The largely unnoticed\n{STR_VAR_1} worked hard.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_WORK_BEFORE] = COMPOUND_STRING("It worked as much as\nPOKéMON before it.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_NOT_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_WORK_PRECEDING] = COMPOUND_STRING("It worked as much as the\npreceding POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_NOT_WELL2] = COMPOUND_STRING("{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_NOT_SHOWN_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_SLIGHTLY_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_PRETTY_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_EXCELLENTLY] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_DUD] = COMPOUND_STRING("{STR_VAR_1}'s appeal was\na dud.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_NOT_VERY_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal did\nnot work very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_SLIGHTLY_WELL2] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_PRETTY_WELL2] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_VERY_WELL] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_APPEAL_EXCELLENTLY2] = COMPOUND_STRING("{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_SAME_TYPE_GOOD] = COMPOUND_STRING("It's the same type as the\nPOKéMON before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_DIFF_TYPE_GOOD] = COMPOUND_STRING("It's not the same type as\nthe one before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_STOOD_OUT_AS_MUCH] = COMPOUND_STRING("It stood out much more\nthan the POKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_NOT_AS_WELL] = COMPOUND_STRING("It didn't do as well as the\nPOKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_CONDITION_ROSE] = COMPOUND_STRING("{STR_VAR_1}'s condition\nrose above usual.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_HOT_STATUS] = COMPOUND_STRING("{STR_VAR_1}'s hot status\nmade it a great appeal!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_MOVE_UP_LINE] = COMPOUND_STRING("It moved up in line for\nthe next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_MOVE_BACK_LINE] = COMPOUND_STRING("It moved back in line once\nfor the next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_SCRAMBLE_ORDER] = COMPOUND_STRING("It scrambled up the\norder for the next turn.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}"),
[CONTEST_STRING_JUDGE_EXPECTANTLY2] = gText_JudgeLookedAtMonExpectantly,
[CONTEST_STRING_WENT_OVER_WELL] = gText_AppealComboWentOverWell,
[CONTEST_STRING_WENT_OVER_VERY_WELL] = gText_AppealComboWentOverVeryWell,
[CONTEST_STRING_APPEAL_COMBO_EXCELLENTLY] = gText_AppealComboWentOverExcellently,
[CONTEST_STRING_AVERT_GAZE] = gText_MonManagedToAvertGaze,
[CONTEST_STRING_AVOID_SEEING] = gText_MonManagedToAvoidSeeingIt,
[CONTEST_STRING_NOT_FAZED] = gText_MonIsntFazedByThatSortOfThing,
[CONTEST_STRING_LITTLE_DISTRACTED] = gText_MonBecameALittleDistracted,
[CONTEST_STRING_ATTEMPT_STARTLE] = gText_TriedToStartleOtherPokemon,
[CONTEST_STRING_LOOKED_DOWN] = gText_MonLookedDownOutOfDistraction,
[CONTEST_STRING_TURNED_BACK] = gText_MonTurnedBackOutOfDistraction,
[CONTEST_STRING_UTTER_CRY] = gText_MonCouldntHelpUtteringCry,
[CONTEST_STRING_LEAPT_UP] = gText_MonCouldntHelpLeapingUp,
[CONTEST_STRING_TRIPPED_OVER] = gText_MonTrippedOutOfDistraction,
[CONTEST_STRING_MESSED_UP2] = gText_ButItMessedUp2,
[CONTEST_STRING_FAILED_TARGET_NERVOUS] = gText_ButItFailedToMakeTargetNervous,
[CONTEST_STRING_FAILED_ANYONE_NERVOUS] = gText_ButItFailedToMakeAnyoneNervous,
[CONTEST_STRING_IGNORED] = gText_ButItWasIgnored,
[CONTEST_STRING_NO_CONDITION_IMPROVE] = gText_CouldntImproveItsCondition,
[CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL] = gText_BadConditionResultedInWeakAppeal,
[CONTEST_STRING_UNAFFECTED] = gText_MonWasUnaffected,
[CONTEST_STRING_ATTRACTED_ATTENTION] = gText_AttractedCrowdsAttention
[CONTEST_STRING_AVERT_GAZE] = COMPOUND_STRING("{STR_VAR_1} managed to\navert its gaze.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_AVOID_SEEING] = COMPOUND_STRING("{STR_VAR_1} managed to\navoid seeing it.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_NOT_FAZED] = COMPOUND_STRING("{STR_VAR_1} isn't fazed\nby that sort of thing.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_LITTLE_DISTRACTED] = COMPOUND_STRING("{STR_VAR_1} became a\nlittle distracted.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_ATTEMPT_STARTLE] = COMPOUND_STRING("It tried to startle the\nother POKéMON.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_LOOKED_DOWN] = COMPOUND_STRING("{STR_VAR_1} looked down\nout of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_TURNED_BACK] = COMPOUND_STRING("{STR_VAR_1} turned back\nout of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_UTTER_CRY] = COMPOUND_STRING("{STR_VAR_1} couldn't help\nuttering a cry.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_LEAPT_UP] = COMPOUND_STRING("{STR_VAR_1} couldn't help\nleaping up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_TRIPPED_OVER] = COMPOUND_STRING("{STR_VAR_1} tripped over\nout of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_MESSED_UP2] = COMPOUND_STRING("But it messed up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_FAILED_TARGET_NERVOUS] = COMPOUND_STRING("But it failed to make\nthe target nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_FAILED_ANYONE_NERVOUS] = COMPOUND_STRING("But it failed to make\nanyone nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_IGNORED] = COMPOUND_STRING("But it was ignored…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_NO_CONDITION_IMPROVE] = COMPOUND_STRING("But it couldn't improve\nits condition…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL] = COMPOUND_STRING("Its bad condition\nresulted in a weak appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_UNAFFECTED] = COMPOUND_STRING("{STR_VAR_1} was\nunaffected.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}"),
[CONTEST_STRING_ATTRACTED_ATTENTION] = COMPOUND_STRING("It attracted the crowd's\nattention.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}")
};

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "malloc.h"
#include "battle_main.h"
#include "contest.h"
#include "contest_effect.h"
#include "data.h"
#include "decompress.h"
@ -837,10 +838,10 @@ static void MoveRelearnerMenuLoadContestMoveDescription(u32 chosenMove)
return;
}
str = gContestMoveTypeTextPointers[GetMoveContestCategory(chosenMove)];
str = gContestCategoryInfo[GetMoveContestCategory(chosenMove)].name;
AddTextPrinterParameterized(RELEARNERWIN_DESC_CONTEST, FONT_NORMAL, str, 4, 25, TEXT_SKIP_DRAW, NULL);
str = gContestEffectDescriptionPointers[GetMoveContestEffect(chosenMove)];
str = gContestEffects[GetMoveContestEffect(chosenMove)].description;
AddTextPrinterParameterized(RELEARNERWIN_DESC_CONTEST, FONT_NARROW, str, 0, 65, TEXT_SKIP_DRAW, NULL);
CopyWindowToVram(RELEARNERWIN_DESC_CONTEST, COPYWIN_GFX);

View File

@ -2,6 +2,7 @@
#include "battle_main.h"
#include "battle_util.h"
#include "bg.h"
#include "contest.h"
#include "contest_effect.h"
#include "data.h"
#include "daycare.h"
@ -4334,14 +4335,7 @@ static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
{
gSprites[sPokedexView->typeIconSpriteIds[spriteArrayId]].invisible = invisible;
}
static const u8 sContestCategoryToOamPaletteNum[CONTEST_CATEGORIES_COUNT] =
{
[CONTEST_CATEGORY_COOL] = 13,
[CONTEST_CATEGORY_BEAUTY] = 14,
[CONTEST_CATEGORY_CUTE] = 14,
[CONTEST_CATEGORY_SMART] = 15,
[CONTEST_CATEGORY_TOUGH] = 13,
};
static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
{
struct Sprite *sprite;
@ -4351,7 +4345,7 @@ static void SetTypeIconPosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
if (typeId < NUMBER_OF_MON_TYPES)
sprite->oam.paletteNum = gTypesInfo[typeId].palette;
else
sprite->oam.paletteNum = sContestCategoryToOamPaletteNum[typeId - NUMBER_OF_MON_TYPES];
sprite->oam.paletteNum = gContestCategoryInfo[typeId - NUMBER_OF_MON_TYPES].palette;
sprite->x = x + 16;
sprite->y = y + 8;
SetSpriteInvisibility(spriteArrayId, FALSE);
@ -5286,7 +5280,7 @@ static void PrintStatsScreen_Moves_Description(u8 taskId)
}
else
{
StringCopy(gStringVar4, gContestEffectDescriptionPointers[GetMoveContestEffect(move)]);
StringCopy(gStringVar4, gContestEffects[GetMoveContestEffect(move)].description);
PrintStatsScreenTextSmall(WIN_STATS_MOVES_DESCRIPTION, gStringVar4, moves_x, moves_y);
}
}

View File

@ -976,14 +976,7 @@ const struct SpriteTemplate gSpriteTemplate_MoveTypes =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
static const u8 sContestCategoryToOamPaletteNum[CONTEST_CATEGORIES_COUNT] =
{
[CONTEST_CATEGORY_COOL] = 13,
[CONTEST_CATEGORY_BEAUTY] = 14,
[CONTEST_CATEGORY_CUTE] = 14,
[CONTEST_CATEGORY_SMART] = 15,
[CONTEST_CATEGORY_TOUGH] = 13,
};
static const struct OamData sOamData_MoveSelector =
{
.y = 0,
@ -4265,7 +4258,7 @@ static void PrintContestMoveDescription(u8 moveSlot)
if (move != MOVE_NONE)
{
u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION);
PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[GetMoveContestEffect(move)], 6, 1, 0, 0);
PrintTextOnWindow(windowId, gContestEffects[GetMoveContestEffect(move)].description, 6, 1, 0, 0);
}
}
@ -4284,7 +4277,7 @@ static void PrintMoveDetails(u16 move)
}
else
{
PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[GetMoveContestEffect(move)], 6, 1, 0, 0);
PrintTextOnWindow(windowId, gContestEffects[GetMoveContestEffect(move)].description, 6, 1, 0, 0);
}
PutWindowTilemap(windowId);
}
@ -4424,7 +4417,7 @@ void SetTypeSpritePosAndPal(enum Type typeId, u8 x, u8 y, u8 spriteArrayId)
if (typeId < NUMBER_OF_MON_TYPES)
sprite->oam.paletteNum = gTypesInfo[typeId].palette;
else
sprite->oam.paletteNum = sContestCategoryToOamPaletteNum[typeId - NUMBER_OF_MON_TYPES];
sprite->oam.paletteNum = gContestCategoryInfo[typeId - NUMBER_OF_MON_TYPES].palette;
sprite->x = x + 16;
sprite->y = y + 8;
SetSpriteInvisibility(spriteArrayId, FALSE);