merge with master
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
#include "util.h"
|
||||
@@ -1413,7 +1413,7 @@ static void LinkOpponentHandleMoveAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
|
||||
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1477,7 +1477,7 @@ static void LinkOpponentHandlePrintString(void)
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
sub_817C95C(*stringId);
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
|
||||
static void LinkOpponentHandlePrintSelectionString(void)
|
||||
@@ -1830,7 +1830,7 @@ static void LinkOpponentHandleBattleAnimation(void)
|
||||
else
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
|
||||
|
||||
sub_817E32C(animationId);
|
||||
BattleTv_SetDataBasedOnAnimation(animationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
#include "util.h"
|
||||
@@ -1237,7 +1237,7 @@ static void LinkPartnerHandleMoveAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
|
||||
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1301,7 +1301,7 @@ static void LinkPartnerHandlePrintString(void)
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
sub_817C95C(*stringId);
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
|
||||
static void LinkPartnerHandlePrintSelectionString(void)
|
||||
@@ -1665,7 +1665,7 @@ static void LinkPartnerHandleBattleAnimation(void)
|
||||
else
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
|
||||
|
||||
sub_817E32C(animationId);
|
||||
BattleTv_SetDataBasedOnAnimation(animationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "battle_interface.h"
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "battle_interface.h"
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
#include "util.h"
|
||||
@@ -871,7 +871,7 @@ static void sub_80586F8(void)
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(sub_8038D64);
|
||||
if (gBattleOutcome == B_OUTCOME_WON)
|
||||
sub_817E3F4();
|
||||
TryPutLinkBattleTvShowOnAir();
|
||||
FreeAllWindowBuffers();
|
||||
}
|
||||
}
|
||||
@@ -884,7 +884,7 @@ static void sub_80586F8(void)
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(sub_8038D64);
|
||||
if (gBattleOutcome == B_OUTCOME_WON)
|
||||
sub_817E3F4();
|
||||
TryPutLinkBattleTvShowOnAir();
|
||||
FreeAllWindowBuffers();
|
||||
}
|
||||
}
|
||||
@@ -2474,7 +2474,7 @@ static void PlayerHandleMoveAnimation(void)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
|
||||
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2538,7 +2538,7 @@ static void PlayerHandlePrintString(void)
|
||||
BufferStringBattle(*stringId);
|
||||
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
|
||||
sub_817C95C(*stringId);
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
sub_81A57E4(gActiveBattler, *stringId);
|
||||
}
|
||||
|
||||
@@ -2565,7 +2565,7 @@ static void PlayerHandleChooseAction(void)
|
||||
s32 i;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
sub_817F2A8();
|
||||
BattleTv_ClearExplosionFaintCause();
|
||||
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
@@ -3059,7 +3059,7 @@ static void PlayerHandleBattleAnimation(void)
|
||||
else
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
|
||||
|
||||
sub_817E32C(animationId);
|
||||
BattleTv_SetDataBasedOnAnimation(animationId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "battle_interface.h"
|
||||
#include "battle_anim.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "battle_link_817C95C.h"
|
||||
#include "battle_tv.h"
|
||||
#include "pokemon.h"
|
||||
#include "link.h"
|
||||
#include "util.h"
|
||||
|
||||
@@ -77,7 +77,6 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
|
||||
void sub_8032768(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 *data;
|
||||
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
|
||||
sub_8184DA4(1);
|
||||
@@ -100,11 +99,11 @@ void sub_8032768(void)
|
||||
sub_81B8D64(i, 0);
|
||||
}
|
||||
|
||||
for (i = 0; i < sizeof(gBattleStruct->field_1A4); i++)
|
||||
*(gBattleStruct->field_1A4 + i) = 0;
|
||||
for (i = 0; i < sizeof(gBattleStruct->tvMovePoints); i++)
|
||||
*((u8*)(&gBattleStruct->tvMovePoints) + i) = 0;
|
||||
|
||||
for (i = 0; i < sizeof(gBattleStruct->field_204); i++)
|
||||
*(gBattleStruct->field_204 + i) = 0;
|
||||
for (i = 0; i < sizeof(gBattleStruct->tv); i++)
|
||||
*((u8*)(&gBattleStruct->tv) + i) = 0;
|
||||
}
|
||||
|
||||
static void InitSinglePlayerBtlControllers(void)
|
||||
|
||||
@@ -514,375 +514,375 @@ static const u8 sText_Trainer2LoseText[];
|
||||
|
||||
const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||
{
|
||||
sText_Trainer1LoseText,
|
||||
sText_PkmnGainedEXP,
|
||||
sText_PkmnGrewToLv,
|
||||
sText_PkmnLearnedMove,
|
||||
sText_TryToLearnMove1,
|
||||
sText_TryToLearnMove2,
|
||||
sText_TryToLearnMove3,
|
||||
sText_PkmnForgotMove,
|
||||
sText_StopLearningMove,
|
||||
sText_DidNotLearnMove,
|
||||
sText_PkmnLearnedMove2,
|
||||
sText_AttackMissed,
|
||||
sText_PkmnProtectedItself,
|
||||
sText_StatsWontIncrease2,
|
||||
sText_AvoidedDamage,
|
||||
sText_ItDoesntAffect,
|
||||
sText_AttackerFainted,
|
||||
sText_TargetFainted,
|
||||
sText_PlayerGotMoney,
|
||||
sText_PlayerWhiteout,
|
||||
sText_PlayerWhiteout2,
|
||||
sText_PreventsEscape,
|
||||
sText_HitXTimes,
|
||||
sText_PkmnFellAsleep,
|
||||
sText_PkmnMadeSleep,
|
||||
sText_PkmnAlreadyAsleep,
|
||||
sText_PkmnAlreadyAsleep2,
|
||||
sText_PkmnWasntAffected,
|
||||
sText_PkmnWasPoisoned,
|
||||
sText_PkmnPoisonedBy,
|
||||
sText_PkmnHurtByPoison,
|
||||
sText_PkmnAlreadyPoisoned,
|
||||
sText_PkmnBadlyPoisoned,
|
||||
sText_PkmnEnergyDrained,
|
||||
sText_PkmnWasBurned,
|
||||
sText_PkmnBurnedBy,
|
||||
sText_PkmnHurtByBurn,
|
||||
sText_PkmnWasFrozen,
|
||||
sText_PkmnFrozenBy,
|
||||
sText_PkmnIsFrozen,
|
||||
sText_PkmnWasDefrosted,
|
||||
sText_PkmnWasDefrosted2,
|
||||
sText_PkmnWasDefrostedBy,
|
||||
sText_PkmnWasParalyzed,
|
||||
sText_PkmnWasParalyzedBy,
|
||||
sText_PkmnIsParalyzed,
|
||||
sText_PkmnIsAlreadyParalyzed,
|
||||
sText_PkmnHealedParalysis,
|
||||
sText_PkmnDreamEaten,
|
||||
sText_StatsWontIncrease,
|
||||
sText_StatsWontDecrease,
|
||||
sText_TeamStoppedWorking,
|
||||
sText_FoeStoppedWorking,
|
||||
sText_PkmnIsConfused,
|
||||
sText_PkmnHealedConfusion,
|
||||
sText_PkmnWasConfused,
|
||||
sText_PkmnAlreadyConfused,
|
||||
sText_PkmnFellInLove,
|
||||
sText_PkmnInLove,
|
||||
sText_PkmnImmobilizedByLove,
|
||||
sText_PkmnBlownAway,
|
||||
sText_PkmnChangedType,
|
||||
sText_PkmnFlinched,
|
||||
sText_PkmnRegainedHealth,
|
||||
sText_PkmnHPFull,
|
||||
sText_PkmnRaisedSpDef,
|
||||
sText_PkmnRaisedDef,
|
||||
sText_PkmnCoveredByVeil,
|
||||
sText_PkmnUsedSafeguard,
|
||||
sText_PkmnSafeguardExpired,
|
||||
sText_PkmnWentToSleep,
|
||||
sText_PkmnSleptHealthy,
|
||||
sText_PkmnWhippedWhirlwind,
|
||||
sText_PkmnTookSunlight,
|
||||
sText_PkmnLoweredHead,
|
||||
sText_PkmnIsGlowing,
|
||||
sText_PkmnFlewHigh,
|
||||
sText_PkmnDugHole,
|
||||
sText_PkmnSqueezedByBind,
|
||||
sText_PkmnTrappedInVortex,
|
||||
sText_PkmnWrappedBy,
|
||||
sText_PkmnClamped,
|
||||
sText_PkmnHurtBy,
|
||||
sText_PkmnFreedFrom,
|
||||
sText_PkmnCrashed,
|
||||
gText_PkmnShroudedInMist,
|
||||
sText_PkmnProtectedByMist,
|
||||
gText_PkmnGettingPumped,
|
||||
sText_PkmnHitWithRecoil,
|
||||
sText_PkmnProtectedItself2,
|
||||
sText_PkmnBuffetedBySandstorm,
|
||||
sText_PkmnPeltedByHail,
|
||||
sText_PkmnSeeded,
|
||||
sText_PkmnEvadedAttack,
|
||||
sText_PkmnSappedByLeechSeed,
|
||||
sText_PkmnFastAsleep,
|
||||
sText_PkmnWokeUp,
|
||||
sText_PkmnUproarKeptAwake,
|
||||
sText_PkmnWokeUpInUproar,
|
||||
sText_PkmnCausedUproar,
|
||||
sText_PkmnMakingUproar,
|
||||
sText_PkmnCalmedDown,
|
||||
sText_PkmnCantSleepInUproar,
|
||||
sText_PkmnStockpiled,
|
||||
sText_PkmnCantStockpile,
|
||||
sText_PkmnCantSleepInUproar2,
|
||||
sText_UproarKeptPkmnAwake,
|
||||
sText_PkmnStayedAwakeUsing,
|
||||
sText_PkmnStoringEnergy,
|
||||
sText_PkmnUnleashedEnergy,
|
||||
sText_PkmnFatigueConfusion,
|
||||
sText_PkmnPickedUpItem,
|
||||
sText_PkmnUnaffected,
|
||||
sText_PkmnTransformedInto,
|
||||
sText_PkmnMadeSubstitute,
|
||||
sText_PkmnHasSubstitute,
|
||||
sText_SubstituteDamaged,
|
||||
sText_PkmnSubstituteFaded,
|
||||
sText_PkmnMustRecharge,
|
||||
sText_PkmnRageBuilding,
|
||||
sText_PkmnMoveWasDisabled,
|
||||
sText_PkmnMoveIsDisabled,
|
||||
sText_PkmnMoveDisabledNoMore,
|
||||
sText_PkmnGotEncore,
|
||||
sText_PkmnEncoreEnded,
|
||||
sText_PkmnTookAim,
|
||||
sText_PkmnSketchedMove,
|
||||
sText_PkmnTryingToTakeFoe,
|
||||
sText_PkmnTookFoe,
|
||||
sText_PkmnReducedPP,
|
||||
sText_PkmnStoleItem,
|
||||
sText_TargetCantEscapeNow,
|
||||
sText_PkmnFellIntoNightmare,
|
||||
sText_PkmnLockedInNightmare,
|
||||
sText_PkmnLaidCurse,
|
||||
sText_PkmnAfflictedByCurse,
|
||||
sText_SpikesScattered,
|
||||
sText_PkmnHurtBySpikes,
|
||||
sText_PkmnIdentified,
|
||||
sText_PkmnPerishCountFell,
|
||||
sText_PkmnBracedItself,
|
||||
sText_PkmnEnduredHit,
|
||||
sText_MagnitudeStrength,
|
||||
sText_PkmnCutHPMaxedAttack,
|
||||
sText_PkmnCopiedStatChanges,
|
||||
sText_PkmnGotFree,
|
||||
sText_PkmnShedLeechSeed,
|
||||
sText_PkmnBlewAwaySpikes,
|
||||
sText_PkmnFledFromBattle,
|
||||
sText_PkmnForesawAttack,
|
||||
sText_PkmnTookAttack,
|
||||
sText_PkmnAttack,
|
||||
sText_PkmnCenterAttention,
|
||||
sText_PkmnChargingPower,
|
||||
sText_NaturePowerTurnedInto,
|
||||
sText_PkmnStatusNormal,
|
||||
sText_PkmnHasNoMovesLeft,
|
||||
sText_PkmnSubjectedToTorment,
|
||||
sText_PkmnCantUseMoveTorment,
|
||||
sText_PkmnTighteningFocus,
|
||||
sText_PkmnFellForTaunt,
|
||||
sText_PkmnCantUseMoveTaunt,
|
||||
sText_PkmnReadyToHelp,
|
||||
sText_PkmnSwitchedItems,
|
||||
sText_PkmnCopiedFoe,
|
||||
sText_PkmnMadeWish,
|
||||
sText_PkmnWishCameTrue,
|
||||
sText_PkmnPlantedRoots,
|
||||
sText_PkmnAbsorbedNutrients,
|
||||
sText_PkmnAnchoredItself,
|
||||
sText_PkmnWasMadeDrowsy,
|
||||
sText_PkmnKnockedOff,
|
||||
sText_PkmnSwappedAbilities,
|
||||
sText_PkmnSealedOpponentMove,
|
||||
sText_PkmnCantUseMoveSealed,
|
||||
sText_PkmnWantsGrudge,
|
||||
sText_PkmnLostPPGrudge,
|
||||
sText_PkmnShroudedItself,
|
||||
sText_PkmnMoveBounced,
|
||||
sText_PkmnWaitsForTarget,
|
||||
sText_PkmnSnatchedMove,
|
||||
sText_PkmnMadeItRain,
|
||||
sText_PkmnRaisedSpeed,
|
||||
sText_PkmnProtectedBy,
|
||||
sText_PkmnPreventsUsage,
|
||||
sText_PkmnRestoredHPUsing,
|
||||
sText_PkmnChangedTypeWith,
|
||||
sText_PkmnPreventsParalysisWith,
|
||||
sText_PkmnPreventsRomanceWith,
|
||||
sText_PkmnPreventsPoisoningWith,
|
||||
sText_PkmnPreventsConfusionWith,
|
||||
sText_PkmnRaisedFirePowerWith,
|
||||
sText_PkmnAnchorsItselfWith,
|
||||
sText_PkmnCutsAttackWith,
|
||||
sText_PkmnPreventsStatLossWith,
|
||||
sText_PkmnHurtsWith,
|
||||
sText_PkmnTraced,
|
||||
sText_StatSharply,
|
||||
gText_StatRose,
|
||||
sText_StatHarshly,
|
||||
sText_StatFell,
|
||||
sText_PkmnsStatChanged,
|
||||
gText_PkmnsStatChanged2,
|
||||
sText_PkmnsStatChanged3,
|
||||
sText_PkmnsStatChanged4,
|
||||
sText_CriticalHit,
|
||||
sText_OneHitKO,
|
||||
sText_123Poof,
|
||||
sText_AndEllipsis,
|
||||
sText_NotVeryEffective,
|
||||
sText_SuperEffective,
|
||||
sText_GotAwaySafely,
|
||||
sText_WildPkmnFled,
|
||||
sText_NoRunningFromTrainers,
|
||||
sText_CantEscape,
|
||||
sText_DontLeaveBirch,
|
||||
sText_ButNothingHappened,
|
||||
sText_ButItFailed,
|
||||
sText_ItHurtConfusion,
|
||||
sText_MirrorMoveFailed,
|
||||
sText_StartedToRain,
|
||||
sText_DownpourStarted,
|
||||
sText_RainContinues,
|
||||
sText_DownpourContinues,
|
||||
sText_RainStopped,
|
||||
sText_SandstormBrewed,
|
||||
sText_SandstormRages,
|
||||
sText_SandstormSubsided,
|
||||
sText_SunlightGotBright,
|
||||
sText_SunlightStrong,
|
||||
sText_SunlightFaded,
|
||||
sText_StartedHail,
|
||||
sText_HailContinues,
|
||||
sText_HailStopped,
|
||||
sText_FailedToSpitUp,
|
||||
sText_FailedToSwallow,
|
||||
sText_WindBecameHeatWave,
|
||||
sText_StatChangesGone,
|
||||
sText_CoinsScattered,
|
||||
sText_TooWeakForSubstitute,
|
||||
sText_SharedPain,
|
||||
sText_BellChimed,
|
||||
sText_FaintInThree,
|
||||
sText_NoPPLeft,
|
||||
sText_ButNoPPLeft,
|
||||
sText_PlayerUsedItem,
|
||||
sText_WallyUsedItem,
|
||||
sText_TrainerBlockedBall,
|
||||
sText_DontBeAThief,
|
||||
sText_ItDodgedBall,
|
||||
sText_YouMissedPkmn,
|
||||
sText_PkmnBrokeFree,
|
||||
sText_ItAppearedCaught,
|
||||
sText_AarghAlmostHadIt,
|
||||
sText_ShootSoClose,
|
||||
sText_GotchaPkmnCaught,
|
||||
sText_GotchaPkmnCaught2,
|
||||
sText_GiveNicknameCaptured,
|
||||
sText_PkmnSentToPC,
|
||||
sText_PkmnDataAddedToDex,
|
||||
sText_ItIsRaining,
|
||||
sText_SandstormIsRaging,
|
||||
sText_CantEscape2,
|
||||
sText_PkmnIgnoresAsleep,
|
||||
sText_PkmnIgnoredOrders,
|
||||
sText_PkmnBeganToNap,
|
||||
sText_PkmnLoafing,
|
||||
sText_PkmnWontObey,
|
||||
sText_PkmnTurnedAway,
|
||||
sText_PkmnPretendNotNotice,
|
||||
sText_EnemyAboutToSwitchPkmn,
|
||||
sText_CreptCloser,
|
||||
sText_CantGetCloser,
|
||||
sText_PkmnWatchingCarefully,
|
||||
sText_PkmnCuriousAboutX,
|
||||
sText_PkmnEnthralledByX,
|
||||
sText_PkmnIgnoredX,
|
||||
sText_ThrewPokeblockAtPkmn,
|
||||
sText_OutOfSafariBalls,
|
||||
sText_PkmnsItemCuredParalysis,
|
||||
sText_PkmnsItemCuredPoison,
|
||||
sText_PkmnsItemHealedBurn,
|
||||
sText_PkmnsItemDefrostedIt,
|
||||
sText_PkmnsItemWokeIt,
|
||||
sText_PkmnsItemSnappedOut,
|
||||
sText_PkmnsItemCuredProblem,
|
||||
sText_PkmnsItemRestoredHealth,
|
||||
sText_PkmnsItemRestoredPP,
|
||||
sText_PkmnsItemRestoredStatus,
|
||||
sText_PkmnsItemRestoredHPALittle,
|
||||
sText_ItemAllowsOnlyYMove,
|
||||
sText_PkmnHungOnWithX,
|
||||
gText_EmptyString3,
|
||||
sText_PkmnsXPreventsBurns,
|
||||
sText_PkmnsXBlocksY,
|
||||
sText_PkmnsXRestoredHPALittle2,
|
||||
sText_PkmnsXWhippedUpSandstorm,
|
||||
sText_PkmnsXPreventsYLoss,
|
||||
sText_PkmnsXInfatuatedY,
|
||||
sText_PkmnsXMadeYIneffective,
|
||||
sText_PkmnsXCuredYProblem,
|
||||
sText_ItSuckedLiquidOoze,
|
||||
sText_PkmnTransformed,
|
||||
sText_ElectricityWeakened,
|
||||
sText_FireWeakened,
|
||||
sText_PkmnHidUnderwater,
|
||||
sText_PkmnSprangUp,
|
||||
sText_HMMovesCantBeForgotten,
|
||||
sText_XFoundOneY,
|
||||
sText_PlayerDefeatedLinkTrainerTrainer1,
|
||||
sText_SoothingAroma,
|
||||
sText_ItemsCantBeUsedNow,
|
||||
sText_ForXCommaYZ,
|
||||
sText_UsingXTheYOfZN,
|
||||
sText_PkmnUsedXToGetPumped,
|
||||
sText_PkmnsXMadeYUseless,
|
||||
sText_PkmnTrappedBySandTomb,
|
||||
sText_EmptyString4,
|
||||
sText_ABoosted,
|
||||
sText_PkmnsXIntensifiedSun,
|
||||
sText_PkmnMakesGroundMiss,
|
||||
sText_YouThrowABallNowRight,
|
||||
sText_PkmnsXTookAttack,
|
||||
sText_PkmnChoseXAsDestiny,
|
||||
sText_PkmnLostFocus,
|
||||
sText_UseNextPkmn,
|
||||
sText_PkmnFledUsingIts,
|
||||
sText_PkmnFledUsing,
|
||||
sText_PkmnWasDraggedOut,
|
||||
sText_PreventedFromWorking,
|
||||
sText_PkmnsItemNormalizedStatus,
|
||||
sText_Trainer1UsedItem,
|
||||
sText_BoxIsFull,
|
||||
sText_PkmnAvoidedAttack,
|
||||
sText_PkmnsXMadeItIneffective,
|
||||
sText_PkmnsXPreventsFlinching,
|
||||
sText_PkmnAlreadyHasBurn,
|
||||
sText_StatsWontDecrease2,
|
||||
sText_PkmnsXBlocksY2,
|
||||
sText_PkmnsXWoreOff,
|
||||
sText_PkmnRaisedDefALittle,
|
||||
sText_PkmnRaisedSpDefALittle,
|
||||
sText_TheWallShattered,
|
||||
sText_PkmnsXPreventsYsZ,
|
||||
sText_PkmnsXCuredItsYProblem,
|
||||
sText_AttackerCantEscape,
|
||||
sText_PkmnObtainedX,
|
||||
sText_PkmnObtainedX2,
|
||||
sText_PkmnObtainedXYObtainedZ,
|
||||
sText_ButNoEffect,
|
||||
sText_PkmnsXHadNoEffectOnY,
|
||||
sText_TwoInGameTrainersDefeated,
|
||||
sText_Trainer2LoseText,
|
||||
sText_PkmnIncapableOfPower,
|
||||
sText_GlintAppearsInEye,
|
||||
sText_PkmnGettingIntoPosition,
|
||||
sText_PkmnBeganGrowlingDeeply,
|
||||
sText_PkmnEagerForMore,
|
||||
sText_DefeatedOpponentByReferee,
|
||||
sText_LostToOpponentByReferee,
|
||||
sText_TiedOpponentByReferee,
|
||||
sText_QuestionForfeitMatch,
|
||||
sText_ForfeitedMatch,
|
||||
gText_PkmnTransferredSomeonesPC,
|
||||
gText_PkmnTransferredLanettesPC,
|
||||
gText_PkmnBoxSomeonesPCFull,
|
||||
gText_PkmnBoxLanettesPCFull,
|
||||
sText_Trainer1WinText,
|
||||
sText_Trainer2WinText,
|
||||
sText_Trainer1LoseText, // 12
|
||||
sText_PkmnGainedEXP, // 13
|
||||
sText_PkmnGrewToLv, // 14
|
||||
sText_PkmnLearnedMove, // 15
|
||||
sText_TryToLearnMove1, // 16
|
||||
sText_TryToLearnMove2, // 17
|
||||
sText_TryToLearnMove3, // 18
|
||||
sText_PkmnForgotMove, // 19
|
||||
sText_StopLearningMove, // 20
|
||||
sText_DidNotLearnMove, // 21
|
||||
sText_PkmnLearnedMove2, // 22
|
||||
sText_AttackMissed, // 23
|
||||
sText_PkmnProtectedItself, // 24
|
||||
sText_StatsWontIncrease2, // 25
|
||||
sText_AvoidedDamage, // 26
|
||||
sText_ItDoesntAffect, // 27
|
||||
sText_AttackerFainted, // 28
|
||||
sText_TargetFainted, // 29
|
||||
sText_PlayerGotMoney, // 30
|
||||
sText_PlayerWhiteout, // 31
|
||||
sText_PlayerWhiteout2, // 32
|
||||
sText_PreventsEscape, // 33
|
||||
sText_HitXTimes, // 34
|
||||
sText_PkmnFellAsleep, // 35
|
||||
sText_PkmnMadeSleep, // 36
|
||||
sText_PkmnAlreadyAsleep, // 37
|
||||
sText_PkmnAlreadyAsleep2, // 38
|
||||
sText_PkmnWasntAffected, // 39
|
||||
sText_PkmnWasPoisoned, // 40
|
||||
sText_PkmnPoisonedBy, // 41
|
||||
sText_PkmnHurtByPoison, // 42
|
||||
sText_PkmnAlreadyPoisoned, // 43
|
||||
sText_PkmnBadlyPoisoned, // 44
|
||||
sText_PkmnEnergyDrained, // 45
|
||||
sText_PkmnWasBurned, // 46
|
||||
sText_PkmnBurnedBy, // 47
|
||||
sText_PkmnHurtByBurn, // 48
|
||||
sText_PkmnWasFrozen, // 49
|
||||
sText_PkmnFrozenBy, // 50
|
||||
sText_PkmnIsFrozen, // 51
|
||||
sText_PkmnWasDefrosted, // 52
|
||||
sText_PkmnWasDefrosted2, // 53
|
||||
sText_PkmnWasDefrostedBy, // 54
|
||||
sText_PkmnWasParalyzed, // 55
|
||||
sText_PkmnWasParalyzedBy, // 56
|
||||
sText_PkmnIsParalyzed, // 57
|
||||
sText_PkmnIsAlreadyParalyzed, // 58
|
||||
sText_PkmnHealedParalysis, // 59
|
||||
sText_PkmnDreamEaten, // 60
|
||||
sText_StatsWontIncrease, // 61
|
||||
sText_StatsWontDecrease, // 62
|
||||
sText_TeamStoppedWorking, // 63
|
||||
sText_FoeStoppedWorking, // 64
|
||||
sText_PkmnIsConfused, // 65
|
||||
sText_PkmnHealedConfusion, // 66
|
||||
sText_PkmnWasConfused, // 67
|
||||
sText_PkmnAlreadyConfused, // 68
|
||||
sText_PkmnFellInLove, // 69
|
||||
sText_PkmnInLove, // 70
|
||||
sText_PkmnImmobilizedByLove, // 71
|
||||
sText_PkmnBlownAway, // 72
|
||||
sText_PkmnChangedType, // 73
|
||||
sText_PkmnFlinched, // 74
|
||||
sText_PkmnRegainedHealth, // 75
|
||||
sText_PkmnHPFull, // 76
|
||||
sText_PkmnRaisedSpDef, // 77
|
||||
sText_PkmnRaisedDef, // 78
|
||||
sText_PkmnCoveredByVeil, // 79
|
||||
sText_PkmnUsedSafeguard, // 80
|
||||
sText_PkmnSafeguardExpired, // 81
|
||||
sText_PkmnWentToSleep, // 82
|
||||
sText_PkmnSleptHealthy, // 83
|
||||
sText_PkmnWhippedWhirlwind, // 84
|
||||
sText_PkmnTookSunlight, // 85
|
||||
sText_PkmnLoweredHead, // 86
|
||||
sText_PkmnIsGlowing, // 87
|
||||
sText_PkmnFlewHigh, // 88
|
||||
sText_PkmnDugHole, // 89
|
||||
sText_PkmnSqueezedByBind, // 90
|
||||
sText_PkmnTrappedInVortex, // 91
|
||||
sText_PkmnWrappedBy, // 92
|
||||
sText_PkmnClamped, // 93
|
||||
sText_PkmnHurtBy, // 94
|
||||
sText_PkmnFreedFrom, // 95
|
||||
sText_PkmnCrashed, // 96
|
||||
gText_PkmnShroudedInMist, // 97
|
||||
sText_PkmnProtectedByMist, // 98
|
||||
gText_PkmnGettingPumped, // 99
|
||||
sText_PkmnHitWithRecoil, // 100
|
||||
sText_PkmnProtectedItself2, // 101
|
||||
sText_PkmnBuffetedBySandstorm, // 102
|
||||
sText_PkmnPeltedByHail, // 103
|
||||
sText_PkmnSeeded, // 104
|
||||
sText_PkmnEvadedAttack, // 105
|
||||
sText_PkmnSappedByLeechSeed, // 106
|
||||
sText_PkmnFastAsleep, // 107
|
||||
sText_PkmnWokeUp, // 108
|
||||
sText_PkmnUproarKeptAwake, // 109
|
||||
sText_PkmnWokeUpInUproar, // 110
|
||||
sText_PkmnCausedUproar, // 111
|
||||
sText_PkmnMakingUproar, // 112
|
||||
sText_PkmnCalmedDown, // 113
|
||||
sText_PkmnCantSleepInUproar, // 114
|
||||
sText_PkmnStockpiled, // 115
|
||||
sText_PkmnCantStockpile, // 116
|
||||
sText_PkmnCantSleepInUproar2, // 117
|
||||
sText_UproarKeptPkmnAwake, // 118
|
||||
sText_PkmnStayedAwakeUsing, // 119
|
||||
sText_PkmnStoringEnergy, // 120
|
||||
sText_PkmnUnleashedEnergy, // 121
|
||||
sText_PkmnFatigueConfusion, // 122
|
||||
sText_PkmnPickedUpItem, // 123
|
||||
sText_PkmnUnaffected, // 124
|
||||
sText_PkmnTransformedInto, // 125
|
||||
sText_PkmnMadeSubstitute, // 126
|
||||
sText_PkmnHasSubstitute, // 127
|
||||
sText_SubstituteDamaged, // 128
|
||||
sText_PkmnSubstituteFaded, // 129
|
||||
sText_PkmnMustRecharge, // 130
|
||||
sText_PkmnRageBuilding, // 131
|
||||
sText_PkmnMoveWasDisabled, // 132
|
||||
sText_PkmnMoveIsDisabled, // 133
|
||||
sText_PkmnMoveDisabledNoMore, // 134
|
||||
sText_PkmnGotEncore, // 135
|
||||
sText_PkmnEncoreEnded, // 136
|
||||
sText_PkmnTookAim, // 137
|
||||
sText_PkmnSketchedMove, // 138
|
||||
sText_PkmnTryingToTakeFoe, // 139
|
||||
sText_PkmnTookFoe, // 140
|
||||
sText_PkmnReducedPP, // 141
|
||||
sText_PkmnStoleItem, // 142
|
||||
sText_TargetCantEscapeNow, // 143
|
||||
sText_PkmnFellIntoNightmare, // 144
|
||||
sText_PkmnLockedInNightmare, // 145
|
||||
sText_PkmnLaidCurse, // 146
|
||||
sText_PkmnAfflictedByCurse, // 147
|
||||
sText_SpikesScattered, // 148
|
||||
sText_PkmnHurtBySpikes, // 149
|
||||
sText_PkmnIdentified, // 150
|
||||
sText_PkmnPerishCountFell, // 151
|
||||
sText_PkmnBracedItself, // 152
|
||||
sText_PkmnEnduredHit, // 153
|
||||
sText_MagnitudeStrength, // 154
|
||||
sText_PkmnCutHPMaxedAttack, // 155
|
||||
sText_PkmnCopiedStatChanges, // 156
|
||||
sText_PkmnGotFree, // 157
|
||||
sText_PkmnShedLeechSeed, // 158
|
||||
sText_PkmnBlewAwaySpikes, // 159
|
||||
sText_PkmnFledFromBattle, // 160
|
||||
sText_PkmnForesawAttack, // 161
|
||||
sText_PkmnTookAttack, // 162
|
||||
sText_PkmnAttack, // 163
|
||||
sText_PkmnCenterAttention, // 164
|
||||
sText_PkmnChargingPower, // 165
|
||||
sText_NaturePowerTurnedInto, // 166
|
||||
sText_PkmnStatusNormal, // 167
|
||||
sText_PkmnHasNoMovesLeft, // 168
|
||||
sText_PkmnSubjectedToTorment, // 169
|
||||
sText_PkmnCantUseMoveTorment, // 170
|
||||
sText_PkmnTighteningFocus, // 171
|
||||
sText_PkmnFellForTaunt, // 172
|
||||
sText_PkmnCantUseMoveTaunt, // 173
|
||||
sText_PkmnReadyToHelp, // 174
|
||||
sText_PkmnSwitchedItems, // 175
|
||||
sText_PkmnCopiedFoe, // 176
|
||||
sText_PkmnMadeWish, // 177
|
||||
sText_PkmnWishCameTrue, // 178
|
||||
sText_PkmnPlantedRoots, // 179
|
||||
sText_PkmnAbsorbedNutrients, // 180
|
||||
sText_PkmnAnchoredItself, // 181
|
||||
sText_PkmnWasMadeDrowsy, // 182
|
||||
sText_PkmnKnockedOff, // 183
|
||||
sText_PkmnSwappedAbilities, // 184
|
||||
sText_PkmnSealedOpponentMove, // 185
|
||||
sText_PkmnCantUseMoveSealed, // 186
|
||||
sText_PkmnWantsGrudge, // 187
|
||||
sText_PkmnLostPPGrudge, // 188
|
||||
sText_PkmnShroudedItself, // 189
|
||||
sText_PkmnMoveBounced, // 190
|
||||
sText_PkmnWaitsForTarget, // 191
|
||||
sText_PkmnSnatchedMove, // 192
|
||||
sText_PkmnMadeItRain, // 193
|
||||
sText_PkmnRaisedSpeed, // 194
|
||||
sText_PkmnProtectedBy, // 195
|
||||
sText_PkmnPreventsUsage, // 196
|
||||
sText_PkmnRestoredHPUsing, // 197
|
||||
sText_PkmnChangedTypeWith, // 198
|
||||
sText_PkmnPreventsParalysisWith, // 199
|
||||
sText_PkmnPreventsRomanceWith, // 200
|
||||
sText_PkmnPreventsPoisoningWith, // 201
|
||||
sText_PkmnPreventsConfusionWith, // 202
|
||||
sText_PkmnRaisedFirePowerWith, // 203
|
||||
sText_PkmnAnchorsItselfWith, // 204
|
||||
sText_PkmnCutsAttackWith, // 205
|
||||
sText_PkmnPreventsStatLossWith, // 206
|
||||
sText_PkmnHurtsWith, // 207
|
||||
sText_PkmnTraced, // 208
|
||||
sText_StatSharply, // 209
|
||||
gText_StatRose, // 210
|
||||
sText_StatHarshly, // 211
|
||||
sText_StatFell, // 212
|
||||
sText_PkmnsStatChanged, // 213
|
||||
gText_PkmnsStatChanged2, // 214
|
||||
sText_PkmnsStatChanged3, // 215
|
||||
sText_PkmnsStatChanged4, // 216
|
||||
sText_CriticalHit, // 217
|
||||
sText_OneHitKO, // 218
|
||||
sText_123Poof, // 219
|
||||
sText_AndEllipsis, // 220
|
||||
sText_NotVeryEffective, // 221
|
||||
sText_SuperEffective, // 222
|
||||
sText_GotAwaySafely, // 223
|
||||
sText_WildPkmnFled, // 224
|
||||
sText_NoRunningFromTrainers, // 225
|
||||
sText_CantEscape, // 226
|
||||
sText_DontLeaveBirch, // 227
|
||||
sText_ButNothingHappened, // 228
|
||||
sText_ButItFailed, // 229
|
||||
sText_ItHurtConfusion, // 230
|
||||
sText_MirrorMoveFailed, // 231
|
||||
sText_StartedToRain, // 232
|
||||
sText_DownpourStarted, // 233
|
||||
sText_RainContinues, // 234
|
||||
sText_DownpourContinues, // 235
|
||||
sText_RainStopped, // 236
|
||||
sText_SandstormBrewed, // 237
|
||||
sText_SandstormRages, // 238
|
||||
sText_SandstormSubsided, // 239
|
||||
sText_SunlightGotBright, // 240
|
||||
sText_SunlightStrong, // 241
|
||||
sText_SunlightFaded, // 242
|
||||
sText_StartedHail, // 243
|
||||
sText_HailContinues, // 244
|
||||
sText_HailStopped, // 245
|
||||
sText_FailedToSpitUp, // 246
|
||||
sText_FailedToSwallow, // 247
|
||||
sText_WindBecameHeatWave, // 248
|
||||
sText_StatChangesGone, // 249
|
||||
sText_CoinsScattered, // 250
|
||||
sText_TooWeakForSubstitute, // 251
|
||||
sText_SharedPain, // 252
|
||||
sText_BellChimed, // 253
|
||||
sText_FaintInThree, // 254
|
||||
sText_NoPPLeft, // 255
|
||||
sText_ButNoPPLeft, // 256
|
||||
sText_PlayerUsedItem, // 257
|
||||
sText_WallyUsedItem, // 258
|
||||
sText_TrainerBlockedBall, // 259
|
||||
sText_DontBeAThief, // 260
|
||||
sText_ItDodgedBall, // 261
|
||||
sText_YouMissedPkmn, // 262
|
||||
sText_PkmnBrokeFree, // 263
|
||||
sText_ItAppearedCaught, // 264
|
||||
sText_AarghAlmostHadIt, // 265
|
||||
sText_ShootSoClose, // 266
|
||||
sText_GotchaPkmnCaught, // 267
|
||||
sText_GotchaPkmnCaught2, // 268
|
||||
sText_GiveNicknameCaptured, // 269
|
||||
sText_PkmnSentToPC, // 270
|
||||
sText_PkmnDataAddedToDex, // 271
|
||||
sText_ItIsRaining, // 272
|
||||
sText_SandstormIsRaging, // 273
|
||||
sText_CantEscape2, // 274
|
||||
sText_PkmnIgnoresAsleep, // 275
|
||||
sText_PkmnIgnoredOrders, // 276
|
||||
sText_PkmnBeganToNap, // 277
|
||||
sText_PkmnLoafing, // 278
|
||||
sText_PkmnWontObey, // 279
|
||||
sText_PkmnTurnedAway, // 280
|
||||
sText_PkmnPretendNotNotice, // 281
|
||||
sText_EnemyAboutToSwitchPkmn, // 282
|
||||
sText_CreptCloser, // 283
|
||||
sText_CantGetCloser, // 284
|
||||
sText_PkmnWatchingCarefully, // 285
|
||||
sText_PkmnCuriousAboutX, // 286
|
||||
sText_PkmnEnthralledByX, // 287
|
||||
sText_PkmnIgnoredX, // 288
|
||||
sText_ThrewPokeblockAtPkmn, // 289
|
||||
sText_OutOfSafariBalls, // 290
|
||||
sText_PkmnsItemCuredParalysis, // 291
|
||||
sText_PkmnsItemCuredPoison, // 292
|
||||
sText_PkmnsItemHealedBurn, // 293
|
||||
sText_PkmnsItemDefrostedIt, // 294
|
||||
sText_PkmnsItemWokeIt, // 295
|
||||
sText_PkmnsItemSnappedOut, // 296
|
||||
sText_PkmnsItemCuredProblem, // 297
|
||||
sText_PkmnsItemRestoredHealth, // 298
|
||||
sText_PkmnsItemRestoredPP, // 299
|
||||
sText_PkmnsItemRestoredStatus, // 300
|
||||
sText_PkmnsItemRestoredHPALittle, // 301
|
||||
sText_ItemAllowsOnlyYMove, // 302
|
||||
sText_PkmnHungOnWithX, // 303
|
||||
gText_EmptyString3, // 304
|
||||
sText_PkmnsXPreventsBurns, // 305
|
||||
sText_PkmnsXBlocksY, // 306
|
||||
sText_PkmnsXRestoredHPALittle2, // 307
|
||||
sText_PkmnsXWhippedUpSandstorm, // 308
|
||||
sText_PkmnsXPreventsYLoss, // 309
|
||||
sText_PkmnsXInfatuatedY, // 310
|
||||
sText_PkmnsXMadeYIneffective, // 311
|
||||
sText_PkmnsXCuredYProblem, // 312
|
||||
sText_ItSuckedLiquidOoze, // 313
|
||||
sText_PkmnTransformed, // 314
|
||||
sText_ElectricityWeakened, // 315
|
||||
sText_FireWeakened, // 316
|
||||
sText_PkmnHidUnderwater, // 317
|
||||
sText_PkmnSprangUp, // 318
|
||||
sText_HMMovesCantBeForgotten, // 319
|
||||
sText_XFoundOneY, // 320
|
||||
sText_PlayerDefeatedLinkTrainerTrainer1, // 321
|
||||
sText_SoothingAroma, // 322
|
||||
sText_ItemsCantBeUsedNow, // 323
|
||||
sText_ForXCommaYZ, // 324
|
||||
sText_UsingXTheYOfZN, // 325
|
||||
sText_PkmnUsedXToGetPumped, // 326
|
||||
sText_PkmnsXMadeYUseless, // 327
|
||||
sText_PkmnTrappedBySandTomb, // 328
|
||||
sText_EmptyString4, // 329
|
||||
sText_ABoosted, // 330
|
||||
sText_PkmnsXIntensifiedSun, // 331
|
||||
sText_PkmnMakesGroundMiss, // 332
|
||||
sText_YouThrowABallNowRight, // 333
|
||||
sText_PkmnsXTookAttack, // 334
|
||||
sText_PkmnChoseXAsDestiny, // 335
|
||||
sText_PkmnLostFocus, // 336
|
||||
sText_UseNextPkmn, // 337
|
||||
sText_PkmnFledUsingIts, // 338
|
||||
sText_PkmnFledUsing, // 339
|
||||
sText_PkmnWasDraggedOut, // 340
|
||||
sText_PreventedFromWorking, // 341
|
||||
sText_PkmnsItemNormalizedStatus, // 342
|
||||
sText_Trainer1UsedItem, // 343
|
||||
sText_BoxIsFull, // 344
|
||||
sText_PkmnAvoidedAttack, // 345
|
||||
sText_PkmnsXMadeItIneffective, // 346
|
||||
sText_PkmnsXPreventsFlinching, // 347
|
||||
sText_PkmnAlreadyHasBurn, // 348
|
||||
sText_StatsWontDecrease2, // 349
|
||||
sText_PkmnsXBlocksY2, // 350
|
||||
sText_PkmnsXWoreOff, // 351
|
||||
sText_PkmnRaisedDefALittle, // 352
|
||||
sText_PkmnRaisedSpDefALittle, // 353
|
||||
sText_TheWallShattered, // 354
|
||||
sText_PkmnsXPreventsYsZ, // 355
|
||||
sText_PkmnsXCuredItsYProblem, // 356
|
||||
sText_AttackerCantEscape, // 357
|
||||
sText_PkmnObtainedX, // 358
|
||||
sText_PkmnObtainedX2, // 359
|
||||
sText_PkmnObtainedXYObtainedZ, // 360
|
||||
sText_ButNoEffect, // 361
|
||||
sText_PkmnsXHadNoEffectOnY, // 362
|
||||
sText_TwoInGameTrainersDefeated, // 363
|
||||
sText_Trainer2LoseText, // 364
|
||||
sText_PkmnIncapableOfPower, // 365
|
||||
sText_GlintAppearsInEye, // 366
|
||||
sText_PkmnGettingIntoPosition, // 367
|
||||
sText_PkmnBeganGrowlingDeeply, // 368
|
||||
sText_PkmnEagerForMore, // 369
|
||||
sText_DefeatedOpponentByReferee, // 370
|
||||
sText_LostToOpponentByReferee, // 371
|
||||
sText_TiedOpponentByReferee, // 372
|
||||
sText_QuestionForfeitMatch, // 373
|
||||
sText_ForfeitedMatch, // 374
|
||||
gText_PkmnTransferredSomeonesPC, // 375
|
||||
gText_PkmnTransferredLanettesPC, // 376
|
||||
gText_PkmnBoxSomeonesPCFull, // 377
|
||||
gText_PkmnBoxLanettesPCFull, // 378
|
||||
sText_Trainer1WinText, // 379
|
||||
sText_Trainer2WinText, // 380
|
||||
};
|
||||
|
||||
const u16 gMissStringIds[] =
|
||||
|
||||
1576
src/battle_tv.c
Normal file
1576
src/battle_tv.c
Normal file
File diff suppressed because it is too large
Load Diff
367
src/fldeff_flash.c
Normal file
367
src/fldeff_flash.c
Normal file
@@ -0,0 +1,367 @@
|
||||
#include "global.h"
|
||||
#include "constants/songs.h"
|
||||
#include "braille_puzzles.h"
|
||||
#include "event_data.h"
|
||||
#include "event_scripts.h"
|
||||
#include "field_effect.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "gba/io_reg.h"
|
||||
#include "main.h"
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
#include "overworld.h"
|
||||
#include "rom6.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
|
||||
// structures
|
||||
struct FlashStruct
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
bool8 unk2;
|
||||
bool8 unk3;
|
||||
void (*func)(void);
|
||||
};
|
||||
|
||||
// static functions
|
||||
static void hm2_flash(void);
|
||||
static void sub_81371B4(void);
|
||||
static bool8 sub_8137304(void);
|
||||
static void sub_81373F0(void);
|
||||
static void sub_8137404(u8 taskId);
|
||||
static void sub_8137420(u8 taskId);
|
||||
static void sub_81374C4(u8 taskId);
|
||||
static void sub_813750C(u8 taskId);
|
||||
static void sub_8137574(u8 taskId);
|
||||
static void sub_81375A8(void);
|
||||
static void sub_81375BC(u8 taskId);
|
||||
static void sub_81375D8(u8 taskId);
|
||||
static void sub_8137678(u8 taskId);
|
||||
static void sub_81376DC(u8 taskId);
|
||||
|
||||
// rodata
|
||||
static const struct FlashStruct gUnknown_085B27C8[] =
|
||||
{
|
||||
{1, 4, 1, 0, sub_81375A8},
|
||||
{2, 4, 1, 0, sub_81375A8},
|
||||
{3, 4, 1, 0, sub_81375A8},
|
||||
{5, 4, 1, 0, sub_81375A8},
|
||||
{6, 4, 1, 0, sub_81375A8},
|
||||
{7, 4, 1, 0, sub_81375A8},
|
||||
{8, 4, 1, 0, sub_81375A8},
|
||||
{9, 4, 1, 0, sub_81375A8},
|
||||
{4, 1, 0, 1, sub_81373F0},
|
||||
{4, 2, 0, 1, sub_81373F0},
|
||||
{4, 3, 0, 1, sub_81373F0},
|
||||
{4, 5, 0, 1, sub_81373F0},
|
||||
{4, 6, 0, 1, sub_81373F0},
|
||||
{4, 7, 0, 1, sub_81373F0},
|
||||
{4, 8, 0, 1, sub_81373F0},
|
||||
{4, 9, 0, 1, sub_81373F0},
|
||||
{0, 0, 0, 0, NULL},
|
||||
};
|
||||
|
||||
static const u16 gCaveTransitionPalette_White[] = INCBIN_U16("graphics/misc/cave_transition_white.gbapal");
|
||||
static const u16 gCaveTransitionPalette_Black[] = INCBIN_U16("graphics/misc/cave_transition_black.gbapal");
|
||||
|
||||
static const u16 gUnknown_085B2890[] = INCBIN_U16("graphics/misc/85B2890.gbapal");
|
||||
static const u16 gUnknown_085B28A0[] = INCBIN_U16("graphics/misc/85B28A0.gbapal");
|
||||
static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
|
||||
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
|
||||
|
||||
// text
|
||||
bool8 SetUpFieldMove_Flash(void)
|
||||
{
|
||||
if (ShouldDoBrailleFlyEffect())
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = sub_8179918;
|
||||
return TRUE;
|
||||
}
|
||||
else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
|
||||
{
|
||||
gUnknown_03005DB0 = FieldCallback_Teleport;
|
||||
gUnknown_0203CEEC = hm2_flash;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void hm2_flash(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
gTasks[taskId].data[8] = (uintptr_t)sub_81371B4 >> 16;
|
||||
gTasks[taskId].data[9] = (uintptr_t)sub_81371B4;
|
||||
}
|
||||
|
||||
static void sub_81371B4(void)
|
||||
{
|
||||
PlaySE(SE_W115);
|
||||
FlagSet(FLAG_SYS_USE_FLASH);
|
||||
ScriptContext1_SetupScript(EventScript_2926F8);
|
||||
}
|
||||
|
||||
static void sub_81371D4(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void sub_81371EC(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void c2_change_map(void)
|
||||
{
|
||||
u16 ime;
|
||||
|
||||
SetVBlankCallback(NULL);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
|
||||
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
|
||||
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
|
||||
ResetPaletteFade();
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
ime = REG_IME;
|
||||
REG_IME = 0;
|
||||
REG_IE |= INTR_FLAG_VBLANK;
|
||||
REG_IME = ime;
|
||||
SetVBlankCallback(sub_81371EC);
|
||||
SetMainCallback2(sub_81371D4);
|
||||
if (!sub_8137304())
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
|
||||
static bool8 sub_8137304(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 v0 = get_map_light_from_warp0();
|
||||
u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
|
||||
|
||||
for (i = 0; gUnknown_085B27C8[i].unk0; i++)
|
||||
{
|
||||
if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
|
||||
{
|
||||
gUnknown_085B27C8[i].func();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8137360(u8 a1, u8 a2)
|
||||
{
|
||||
u8 i;
|
||||
u8 v0 = a1;
|
||||
u8 v1 = a2;
|
||||
|
||||
for (i = 0; gUnknown_085B27C8[i].unk0; i++)
|
||||
{
|
||||
if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
|
||||
{
|
||||
return gUnknown_085B27C8[i].unk2;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 fade_type_for_given_maplight_pair(u8 a1, u8 a2)
|
||||
{
|
||||
u8 i;
|
||||
u8 v0 = a1;
|
||||
u8 v1 = a2;
|
||||
|
||||
for (i = 0; gUnknown_085B27C8[i].unk0; i++)
|
||||
{
|
||||
if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
|
||||
{
|
||||
return gUnknown_085B27C8[i].unk3;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_81373F0(void)
|
||||
{
|
||||
CreateTask(sub_8137404, 0);
|
||||
}
|
||||
|
||||
static void sub_8137404(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = sub_8137420;
|
||||
}
|
||||
|
||||
static void sub_8137420(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
|
||||
LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
|
||||
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
|
||||
LoadPalette(gUnknown_085B28A0, 0xE0, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
|
||||
| BLDCNT_EFFECT_BLEND
|
||||
| BLDCNT_TGT2_BG1
|
||||
| BLDCNT_TGT2_BG2
|
||||
| BLDCNT_TGT2_BG3
|
||||
| BLDCNT_TGT2_OBJ
|
||||
| BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0)
|
||||
| BGCNT_CHARBASE(3)
|
||||
| BGCNT_SCREENBASE(31)
|
||||
| BGCNT_16COLOR
|
||||
| BGCNT_TXT256x256);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
|
||||
| DISPCNT_OBJ_1D_MAP
|
||||
| DISPCNT_BG0_ON
|
||||
| DISPCNT_OBJ_ON);
|
||||
gTasks[taskId].func = sub_81374C4;
|
||||
gTasks[taskId].data[0] = 16;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
|
||||
static void sub_81374C4(u8 taskId)
|
||||
{
|
||||
u16 count = gTasks[taskId].data[1];
|
||||
u16 blend = count + 0x1000;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, blend);
|
||||
if (count <= 0x10)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[2] = 0;
|
||||
gTasks[taskId].func = sub_813750C;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_813750C(u8 taskId)
|
||||
{
|
||||
u16 count;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 16));
|
||||
count = gTasks[taskId].data[2];
|
||||
|
||||
if (count < 8)
|
||||
{
|
||||
gTasks[taskId].data[2]++;
|
||||
LoadPalette(&gUnknown_085B28A0[count], 0xE0, 16 - 2 * count);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadPalette(gCaveTransitionPalette_White, 0, 0x20);
|
||||
gTasks[taskId].func = sub_8137574;
|
||||
gTasks[taskId].data[2] = 8;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8137574(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[2])
|
||||
gTasks[taskId].data[2]--;
|
||||
else
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
|
||||
static void sub_81375A8(void)
|
||||
{
|
||||
CreateTask(sub_81375BC, 0);
|
||||
}
|
||||
|
||||
static void sub_81375BC(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = sub_81375D8;
|
||||
}
|
||||
|
||||
static void sub_81375D8(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
|
||||
LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0)
|
||||
| BGCNT_CHARBASE(3)
|
||||
| BGCNT_SCREENBASE(31)
|
||||
| BGCNT_16COLOR
|
||||
| BGCNT_TXT256x256);
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
|
||||
| DISPCNT_OBJ_1D_MAP
|
||||
| DISPCNT_BG0_ON
|
||||
| DISPCNT_OBJ_ON);
|
||||
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
|
||||
LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
|
||||
gTasks[taskId].func = sub_8137678;
|
||||
gTasks[taskId].data[0] = 16;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
}
|
||||
|
||||
static void sub_8137678(u8 taskId)
|
||||
{
|
||||
u16 count = gTasks[taskId].data[2];
|
||||
|
||||
if (count < 16)
|
||||
{
|
||||
gTasks[taskId].data[2]++;
|
||||
gTasks[taskId].data[2]++;
|
||||
LoadPalette(&gUnknown_085B2890[15 - count], 0xE0, 2 * (count + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 16));
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
|
||||
| BLDCNT_EFFECT_BLEND
|
||||
| BLDCNT_TGT2_BG1
|
||||
| BLDCNT_TGT2_BG2
|
||||
| BLDCNT_TGT2_BG3
|
||||
| BLDCNT_TGT2_OBJ
|
||||
| BLDCNT_TGT2_BD);
|
||||
gTasks[taskId].func = sub_81376DC;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81376DC(u8 taskId)
|
||||
{
|
||||
u16 count = 16 - gTasks[taskId].data[1];
|
||||
u16 blend = count + 0x1000;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, blend);
|
||||
if (count)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
}
|
||||
299
src/fldeff_groundshake.c
Normal file
299
src/fldeff_groundshake.c
Normal file
@@ -0,0 +1,299 @@
|
||||
#include "global.h"
|
||||
#include "global.fieldmap.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/songs.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "malloc.h"
|
||||
#include "random.h"
|
||||
#include "roulette_util.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
|
||||
// structures
|
||||
struct Struct203CF18 {
|
||||
u8 taskId;
|
||||
struct InnerStruct203CF18 unk4;
|
||||
}; //size = 0xC8
|
||||
|
||||
// extern data
|
||||
extern const struct SpriteSheet gUnknown_08617D94[];
|
||||
extern const s16 gUnknown_08617D64[][3];
|
||||
|
||||
// static functions
|
||||
static void sub_81BE808(u8 taskId);
|
||||
static void sub_81BE900(u8 taskId);
|
||||
static void sub_81BE968(void);
|
||||
static void sub_81BE9C0(u8 taskId);
|
||||
static void sub_81BEA00(u8 taskId);
|
||||
static void sub_81BEA20(void);
|
||||
static void sub_81BEAD8(struct Sprite* sprite);
|
||||
|
||||
// rodata
|
||||
static const u8 gUnknown_08617E18[] = {0x3b, 0x43, 0x61, 0x00, 0x0f, 0x05, 0xff, 0x9b};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8617E20[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8617E28[] =
|
||||
{
|
||||
gSpriteAnim_8617E20,
|
||||
};
|
||||
|
||||
static const struct OamData gUnknown_08617E2C =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 0,
|
||||
.tileNum = 0,
|
||||
.priority = 0,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08617E34 = {
|
||||
0x0FA0, 0xFFFF, &gUnknown_08617E2C, gSpriteAnimTable_8617E28, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8617E4C[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnim_8617E54[] =
|
||||
{
|
||||
gSpriteAnim_8617E4C,
|
||||
};
|
||||
|
||||
static const struct OamData gSpriteAnim_8617E58 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 1,
|
||||
.tileNum = 0,
|
||||
.priority = 0,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08617E60 = {
|
||||
0x0FA0, 0xFFFF, &gSpriteAnim_8617E58, gSpriteAnim_8617E54, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
|
||||
};
|
||||
|
||||
// ewram
|
||||
EWRAM_DATA struct Struct203CF18 *gUnknown_0203CF18 = NULL;
|
||||
|
||||
// text
|
||||
bool8 sub_81BE66C(void)
|
||||
{
|
||||
if (!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A))
|
||||
return 0;
|
||||
return FlagGet(FLAG_0x14E);
|
||||
}
|
||||
|
||||
void sub_81BE698(u8 taskId)
|
||||
{
|
||||
sub_8151E50(&(gUnknown_0203CF18->unk4));
|
||||
}
|
||||
|
||||
void sub_81BE6AC(void)
|
||||
{
|
||||
gUnknown_0203CF18 = NULL;
|
||||
}
|
||||
|
||||
void sub_81BE6B8(void)
|
||||
{
|
||||
if(gUnknown_0203CF18 != NULL)
|
||||
{
|
||||
gUnknown_0203CF18 = NULL;
|
||||
return;
|
||||
}
|
||||
if(!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A) || !FlagGet(FLAG_0x14E))
|
||||
return;
|
||||
|
||||
gUnknown_0203CF18 = (struct Struct203CF18 *)AllocZeroed(sizeof(struct Struct203CF18));
|
||||
sub_8151B3C(&(gUnknown_0203CF18->unk4));
|
||||
sub_8151B68(&(gUnknown_0203CF18->unk4), gUnknown_08617E18);
|
||||
sub_8151CA8(&(gUnknown_0203CF18->unk4), 1, 1);
|
||||
gUnknown_0203CF18->taskId = CreateTask(sub_81BE698, 0xFF);
|
||||
}
|
||||
|
||||
void sub_81BE72C(void)
|
||||
{
|
||||
if(!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A) || !FlagGet(FLAG_0x14E) || gUnknown_0203CF18 == NULL)
|
||||
return;
|
||||
if(FuncIsActiveTask(sub_81BE698))
|
||||
DestroyTask(gUnknown_0203CF18->taskId);
|
||||
sub_8151D28(&(gUnknown_0203CF18->unk4), 1, 1);
|
||||
sub_8151C50(&(gUnknown_0203CF18->unk4), 1, 1);
|
||||
Free(gUnknown_0203CF18);
|
||||
gUnknown_0203CF18 = NULL;
|
||||
}
|
||||
|
||||
void sub_81BE79C(void)
|
||||
{
|
||||
u16 rand;
|
||||
bool8 chance;
|
||||
|
||||
if(VarGet(VAR_0x40CB) != 0)
|
||||
{
|
||||
FlagClear(FLAG_0x14E);
|
||||
return;
|
||||
}
|
||||
rand = Random();
|
||||
chance = rand & 1;
|
||||
if(FlagGet(FLAG_0x09D) == TRUE)
|
||||
chance = TRUE;
|
||||
if(chance)
|
||||
{
|
||||
FlagSet(FLAG_0x14E);
|
||||
sub_81BE6B8();
|
||||
return;
|
||||
}
|
||||
FlagClear(FLAG_0x14E);
|
||||
}
|
||||
|
||||
void sub_81BE7F4(void)
|
||||
{
|
||||
CreateTask(sub_81BE808, 0x8);
|
||||
}
|
||||
|
||||
static void sub_81BE808(u8 taskId)
|
||||
{
|
||||
u8 mapObjectIdBuffer;
|
||||
struct MapObject *fieldMapObject;
|
||||
struct MapObject *playerAvatarMapObject;
|
||||
|
||||
TryGetFieldObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectIdBuffer);
|
||||
fieldMapObject = &(gMapObjects[mapObjectIdBuffer]);
|
||||
gSprites[fieldMapObject->spriteId].pos2.y += 4;
|
||||
playerAvatarMapObject = &(gMapObjects[gPlayerAvatar.mapObjectId]);
|
||||
|
||||
if((gSprites[fieldMapObject->spriteId].pos1.y + gSprites[fieldMapObject->spriteId].pos2.y) >=
|
||||
(gSprites[playerAvatarMapObject->spriteId].pos1.y + gSprites[playerAvatarMapObject->spriteId].pos2.y))
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
}
|
||||
|
||||
static void sp136_strengh_sound(u8 a, u8 b, u8 c, u8 d)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
taskId = CreateTask(sub_81BE900, 0x9);
|
||||
gTasks[taskId].data[0] = b;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = c;
|
||||
gTasks[taskId].data[3] = d;
|
||||
gTasks[taskId].data[4] = a;
|
||||
SetCameraPanningCallback(NULL);
|
||||
PlaySE(SE_W070);
|
||||
}
|
||||
|
||||
static void sub_81BE900(u8 taskId)
|
||||
{
|
||||
s16 *data;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
data[1]++;
|
||||
if((data[1] % data[3]) == 0)
|
||||
{
|
||||
data[1] = 0;
|
||||
data[2]--;
|
||||
data[0] = -data[0];
|
||||
data[4] = -data[4];
|
||||
SetCameraPanning(data[0], data[4]);
|
||||
if(!data[2])
|
||||
{
|
||||
sub_81BE968();
|
||||
DestroyTask(taskId);
|
||||
InstallCameraPanAheadCallback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81BE968(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
taskId = FindTaskIdByFunc(sub_81BE9C0);
|
||||
if(taskId != 0xFF)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
||||
void sub_81BE994(void)
|
||||
{
|
||||
LoadSpriteSheets(gUnknown_08617D94);
|
||||
sub_81BEA20();
|
||||
CreateTask(sub_81BE9C0, 0x8);
|
||||
sp136_strengh_sound(2, 1, 16, 3);
|
||||
}
|
||||
|
||||
static void sub_81BE9C0(u8 taskId)
|
||||
{
|
||||
u16 *data;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
data[1]++;
|
||||
if(data[1] == 1000 || data[0] == 17)
|
||||
gTasks[taskId].func = sub_81BEA00;
|
||||
}
|
||||
|
||||
static void sub_81BEA00(u8 taskId)
|
||||
{
|
||||
FreeSpriteTilesByTag(4000);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
static void sub_81BEA20(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 spriteId;
|
||||
|
||||
for(i = 0; i < 8; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&gUnknown_08617E60, gUnknown_08617D64[i][0] + 120, gUnknown_08617D64[i][1], 8);
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].oam.paletteNum = 0;
|
||||
gSprites[spriteId].data[0] = i;
|
||||
}
|
||||
for(i = 0; i < 8; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&gUnknown_08617E34, gUnknown_08617D64[i][0] + 115, gUnknown_08617D64[i][1] - 3, 8);
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].oam.paletteNum = 0;
|
||||
gSprites[spriteId].data[0] = i;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81BEAD8(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data[1] += 2;
|
||||
sprite->pos2.y = (sprite->data[1] / 2);
|
||||
if(((sprite->pos1.y) + (sprite->pos2.y)) > gUnknown_08617D64[sprite->data[0]][2])
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
sub_81BE968();
|
||||
}
|
||||
}
|
||||
@@ -9,10 +9,10 @@
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
|
||||
void sub_816166C(u8 taskId);
|
||||
void sub_81617B8(u8 taskId);
|
||||
void sub_81616C0(u8 taskId);
|
||||
void sub_8161724(u8 taskId);
|
||||
static void sub_816166C(u8 taskId);
|
||||
static void sub_81616C0(u8 taskId);
|
||||
static void sub_8161724(u8 taskId);
|
||||
static void sub_81617B8(u8 taskId);
|
||||
|
||||
bool8 SetUpFieldMove_SoftBoiled(void)
|
||||
{
|
||||
@@ -63,13 +63,13 @@ void sub_81615A8(u8 taskId)
|
||||
sub_81B1F18(taskId, unk9, -1, GetMonData(&gPlayerParty[unk9], MON_DATA_MAX_HP)/5, sub_816166C);
|
||||
}
|
||||
|
||||
void sub_816166C(u8 taskId)
|
||||
static void sub_816166C(u8 taskId)
|
||||
{
|
||||
PlaySE(SE_KAIFUKU);
|
||||
sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAX_HP)/5, sub_81616C0);
|
||||
}
|
||||
|
||||
void sub_81616C0(u8 taskId)
|
||||
static void sub_81616C0(u8 taskId)
|
||||
{
|
||||
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unkA], gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
|
||||
@@ -78,7 +78,7 @@ void sub_81616C0(u8 taskId)
|
||||
gTasks[taskId].func = sub_8161724;
|
||||
}
|
||||
|
||||
void sub_8161724(u8 taskId)
|
||||
static void sub_8161724(u8 taskId)
|
||||
{
|
||||
if(sub_81B1BD4() == 1)
|
||||
return;
|
||||
@@ -92,7 +92,7 @@ void sub_8161724(u8 taskId)
|
||||
gTasks[taskId].func = sub_81B1370;
|
||||
}
|
||||
|
||||
void sub_8161784(u8 taskId)
|
||||
static void sub_8161784(u8 taskId)
|
||||
{
|
||||
if(sub_81B1BD4() == 1)
|
||||
return;
|
||||
@@ -100,7 +100,7 @@ void sub_8161784(u8 taskId)
|
||||
gTasks[taskId].func = sub_81B1370;
|
||||
}
|
||||
|
||||
void sub_81617B8(u8 taskId)
|
||||
static void sub_81617B8(u8 taskId)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_81B1B5C(&gText_CantBeUsedOnPkmn, 0);
|
||||
|
||||
@@ -7,9 +7,11 @@
|
||||
#include "script.h"
|
||||
#include "task.h"
|
||||
|
||||
void FldEff_UseStrength(void);
|
||||
void sub_8145E74(void);
|
||||
// static functions
|
||||
static void FldEff_UseStrength(void);
|
||||
static void sub_8145E74(void);
|
||||
|
||||
// text
|
||||
bool8 SetUpFieldMove_Strength(void)
|
||||
{
|
||||
if (npc_before_player_of_type(87) == TRUE)
|
||||
@@ -22,7 +24,7 @@ bool8 SetUpFieldMove_Strength(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void FldEff_UseStrength(void)
|
||||
static void FldEff_UseStrength(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(FieryPath_EventScript_2908FD);
|
||||
@@ -37,7 +39,7 @@ bool8 sub_8145E2C(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8145E74(void)
|
||||
static void sub_8145E74(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
|
||||
EnableBothScriptContexts();
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "field_effect.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_screen.h"
|
||||
#include "fldeff_groundshake.h"
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
#include "rom6.h"
|
||||
@@ -20,6 +19,8 @@ void hm2_sweet_scent(void);
|
||||
void sub_8159F5C(void);
|
||||
void sub_8159FEC(u8 taskId);
|
||||
void sub_815A090(u8 taskId);
|
||||
void sub_81BE6B8(void);
|
||||
void sub_81BE72C(void);
|
||||
|
||||
bool8 SetUpFieldMove_SweetScent(void)
|
||||
{
|
||||
|
||||
770
src/fossil_specials.c
Normal file
770
src/fossil_specials.c
Normal file
@@ -0,0 +1,770 @@
|
||||
#include "global.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/songs.h"
|
||||
#include "bg.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "fieldmap.h"
|
||||
#include "global.fieldmap.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "malloc.h"
|
||||
#include "menu.h"
|
||||
#include "random.h"
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "window.h"
|
||||
|
||||
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(gUnknown_08617274) + sizeof(gMirageTower_Gfx))
|
||||
#define MIRAGE_TOWER_PALETTE_LENGTH 0x800
|
||||
#define ROOT_FOSSIL_GFX_LENGTH sizeof(gRootFossil_Gfx)
|
||||
#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
|
||||
|
||||
//struct
|
||||
struct Struct8617DA4 {
|
||||
u8 x;
|
||||
u8 y;
|
||||
u16 tileId;
|
||||
};
|
||||
|
||||
struct Struct203CF10 {
|
||||
u8 *buffer;
|
||||
u8 curr_buffer_index;
|
||||
};
|
||||
|
||||
struct DynamicSpriteFrameImage{
|
||||
u8 *data;
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct Struct203CF0C {
|
||||
u8 *frameImageTiles;
|
||||
struct DynamicSpriteFrameImage *frameImage;
|
||||
u8 spriteId;
|
||||
u16 *unkC;
|
||||
u16 unk10;
|
||||
};
|
||||
|
||||
// static functions
|
||||
static void sub_81BED50(u8 taskId);
|
||||
static void sub_81BEBF4(u8 taskId);
|
||||
static void sub_81BF028(u8 taskId);
|
||||
static void sub_81BF248(struct Sprite *);
|
||||
/*static*/ void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
|
||||
|
||||
// .rodata
|
||||
static const u8 gUnknown_08617274[] = {00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00};
|
||||
static const u8 gMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
|
||||
static const u16 gUnknown_08617B94[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
|
||||
static const u16 gRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
|
||||
static const u8 gRootFossil_Gfx[] = INCBIN_U8("graphics/misc/fossil.4bpp");
|
||||
static const u8 gMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower_crumbles.4bpp");
|
||||
static const u16 gMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
|
||||
|
||||
const s16 gUnknown_08617D64[][3] =
|
||||
{
|
||||
{ 0, 10, 65},
|
||||
{ 17, 3, 50},
|
||||
{-12, 0, 75},
|
||||
{ 10, 15, 90},
|
||||
{ 7, 8, 65},
|
||||
{-18, 5, 75},
|
||||
{ 22, -10, 55},
|
||||
{-24, -4, 65},
|
||||
};
|
||||
|
||||
const struct SpriteSheet gUnknown_08617D94[] =
|
||||
{
|
||||
{gMirageTowerCrumbles_Gfx, 0x0080, 0x0fa0},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
static const struct Struct8617DA4 gUnknown_08617DA4[] =
|
||||
{
|
||||
{0x12, 0x35, 0x251},
|
||||
{0x13, 0x35, 0x251},
|
||||
{0x14, 0x35, 0x251},
|
||||
{0x12, 0x36, 0x251},
|
||||
{0x13, 0x36, 0x251},
|
||||
{0x14, 0x36, 0x251},
|
||||
{0x12, 0x37, 0x251},
|
||||
{0x13, 0x37, 0x251},
|
||||
{0x14, 0x37, 0x251},
|
||||
{0x12, 0x38, 0x251},
|
||||
{0x13, 0x38, 0x251},
|
||||
{0x14, 0x38, 0x251},
|
||||
{0x12, 0x39, 0x259},
|
||||
{0x13, 0x39, 0x259},
|
||||
{0x14, 0x39, 0x259},
|
||||
{0x12, 0x3A, 0x121},
|
||||
{0x13, 0x3A, 0x121},
|
||||
{0x14, 0x3A, 0x121},
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8617DEC[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const struct OamData gOamData_8617DF4 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 1,
|
||||
.tileNum = 0,
|
||||
.priority = 0,
|
||||
.paletteNum = 3,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
|
||||
{
|
||||
gSpriteAnim_8617DEC,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08617E00 = {
|
||||
0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
};
|
||||
|
||||
// ewram
|
||||
EWRAM_DATA u8* gUnknown_0203CF04 = NULL;
|
||||
EWRAM_DATA u8* gUnknown_0203CF08 = NULL;
|
||||
EWRAM_DATA struct Struct203CF0C *gUnknown_0203CF0C = NULL;
|
||||
EWRAM_DATA struct Struct203CF10 *gUnknown_0203CF10 = NULL;
|
||||
EWRAM_DATA u16 *gUnknown_0203CF14 = NULL;
|
||||
|
||||
// iwram
|
||||
IWRAM_DATA u16 gUnknown_030012A8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
// text
|
||||
void sub_81BEB24(void)
|
||||
{
|
||||
u8 i;
|
||||
for(i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
|
||||
MapGridSetMetatileIdAt(gUnknown_08617DA4[i].x + 7, gUnknown_08617DA4[i].y + 7, gUnknown_08617DA4[i].tileId);
|
||||
DrawWholeMapView();
|
||||
}
|
||||
|
||||
void sub_81BEB54(void)
|
||||
{
|
||||
CreateTask(sub_81BED50, 0x9);
|
||||
}
|
||||
|
||||
void sub_81BEB68(void)
|
||||
{
|
||||
CreateTask(sub_81BEBF4, 0x9);
|
||||
}
|
||||
|
||||
void sub_81BEB7C(void)
|
||||
{
|
||||
CreateTask(sub_81BF028, 0x9);
|
||||
}
|
||||
|
||||
void sub_81BEB90(void)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_0203CF14[0]);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_0203CF14[1]);
|
||||
}
|
||||
|
||||
void sub_81BEBB4(u8 taskId)
|
||||
{
|
||||
if(!(gTasks[taskId].data[0]))
|
||||
{
|
||||
gUnknown_0203CF14[0] = -gUnknown_0203CF14[0];
|
||||
gTasks[taskId].data[0] = 2;
|
||||
sub_81BEB90();
|
||||
}
|
||||
else
|
||||
gTasks[taskId].data[0]--;
|
||||
}
|
||||
|
||||
static void sub_81BEBF4(u8 taskId)
|
||||
{
|
||||
u8 zero;
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
FreeAllWindowBuffers();
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 2);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
|
||||
gUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
CpuSet(gUnknown_08617274, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
|
||||
LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
SetBgTilemapBuffer(0, gUnknown_0203CF08);
|
||||
CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 4:
|
||||
ShowBg(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 5:
|
||||
sub_81BEB24();
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_0203CF14 = (u16 *)Alloc(4);
|
||||
zero = 0;
|
||||
gUnknown_0203CF14[0] = 2;
|
||||
gUnknown_0203CF14[1] = zero;
|
||||
CreateTask(sub_81BEBB4, 0xA);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
#define OUTER_BUFFER_LENGTH 0x60
|
||||
#define INNER_BUFFER_LENGTH 0x30
|
||||
static void sub_81BED50(u8 taskId)
|
||||
{
|
||||
u8 anotherTaskId, j;
|
||||
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
{
|
||||
case 1:
|
||||
gUnknown_0203CF10 = (struct Struct203CF10 *)AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
u16 i;
|
||||
u16 left;
|
||||
u32 index, next;
|
||||
|
||||
index = (u16)gTasks[taskId].data[3];
|
||||
if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
if(gTasks[taskId].data[1] > 1)
|
||||
{
|
||||
index = (u8)index;
|
||||
gUnknown_0203CF10[index].buffer = (u8 *)Alloc(INNER_BUFFER_LENGTH);
|
||||
for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
gUnknown_0203CF10[index].buffer[i] = i;
|
||||
for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
{
|
||||
u16 rand1, rand2, temp;
|
||||
|
||||
rand1 = Random() % 0x30;
|
||||
rand2 = Random() % 0x30;
|
||||
temp = gUnknown_0203CF10[index].buffer[rand2];
|
||||
gUnknown_0203CF10[index].buffer[rand2] = gUnknown_0203CF10[index].buffer[rand1];
|
||||
gUnknown_0203CF10[index].buffer[rand1] = temp;
|
||||
}
|
||||
if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
gTasks[taskId].data[3]++;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
index = (u8)gTasks[taskId].data[3];
|
||||
for(left = (u8)gTasks[taskId].data[2]; left < (u16)index; left = next)
|
||||
{
|
||||
j = 0;
|
||||
next = left + 1;
|
||||
while(!j)
|
||||
{
|
||||
sub_81BF2B8(gUnknown_0203CF04, ((((OUTER_BUFFER_LENGTH - 1) - left) * INNER_BUFFER_LENGTH) + gUnknown_0203CF10[left].buffer[(gUnknown_0203CF10[left].curr_buffer_index)++]), 0, INNER_BUFFER_LENGTH, 1);
|
||||
j++;
|
||||
}
|
||||
if(gUnknown_0203CF10[left].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF10[left].buffer);
|
||||
gTasks[taskId].data[2]++;
|
||||
if((left % 2) == 1)
|
||||
gUnknown_0203CF14[1]--;
|
||||
}
|
||||
}
|
||||
LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
if(gUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case 4:
|
||||
UnsetBgTilemapBuffer(0);
|
||||
anotherTaskId = FindTaskIdByFunc(sub_81BEBB4);
|
||||
if(anotherTaskId != 0xFF)
|
||||
DestroyTask(anotherTaskId);
|
||||
gUnknown_0203CF14[1] = gUnknown_0203CF14[0] = 0;
|
||||
sub_81BEB90();
|
||||
break;
|
||||
case 5:
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF14);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF10);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF04);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF08);
|
||||
break;
|
||||
case 6:
|
||||
SetGpuRegBits(REG_OFFSET_BG2CNT, 0x2);
|
||||
SetGpuRegBits(REG_OFFSET_BG0CNT, 0x0);
|
||||
SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0);
|
||||
sub_81971D0();
|
||||
break;
|
||||
case 7:
|
||||
ShowBg(0);
|
||||
break;
|
||||
case 8:
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
||||
#else
|
||||
ASM_DIRECT
|
||||
static void sub_81BED50(u8 taskId)
|
||||
{
|
||||
asm("\n\
|
||||
.syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x10\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
mov r10, r0\n\
|
||||
ldr r1, =gTasks\n\
|
||||
lsls r0, 2\n\
|
||||
add r0, r10\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r1\n\
|
||||
ldrh r0, [r0, 0x8]\n\
|
||||
subs r0, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
adds r6, r1, 0\n\
|
||||
cmp r0, 0x7\n\
|
||||
bls _081BED7C\n\
|
||||
b _081BF002\n\
|
||||
_081BED7C:\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =_081BED90\n\
|
||||
adds r0, r1\n\
|
||||
ldr r0, [r0]\n\
|
||||
mov pc, r0\n\
|
||||
.pool\n\
|
||||
.align 2, 0\n\
|
||||
_081BED90:\n\
|
||||
.4byte _081BEDB0\n\
|
||||
.4byte _081BF002\n\
|
||||
.4byte _081BEDC4\n\
|
||||
.4byte _081BEF64\n\
|
||||
.4byte _081BEF94\n\
|
||||
.4byte _081BEFD0\n\
|
||||
.4byte _081BEFF0\n\
|
||||
.4byte _081BEFF8\n\
|
||||
_081BEDB0:\n\
|
||||
ldr r4, =gUnknown_0203CF10\n\
|
||||
movs r0, 0xC0\n\
|
||||
lsls r0, 2\n\
|
||||
bl AllocZeroed\n\
|
||||
str r0, [r4]\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEDC4:\n\
|
||||
mov r1, r10\n\
|
||||
lsls r0, r1, 2\n\
|
||||
adds r1, r0, r1\n\
|
||||
lsls r1, 3\n\
|
||||
adds r2, r1, r6\n\
|
||||
ldrh r3, [r2, 0xE]\n\
|
||||
movs r4, 0xE\n\
|
||||
ldrsh r1, [r2, r4]\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
cmp r1, 0x5F\n\
|
||||
bgt _081BEE8A\n\
|
||||
movs r1, 0xA\n\
|
||||
ldrsh r0, [r2, r1]\n\
|
||||
cmp r0, 0x1\n\
|
||||
ble _081BEE7C\n\
|
||||
lsls r0, r3, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
movs r0, 0x30\n\
|
||||
bl Alloc\n\
|
||||
ldr r3, =gUnknown_0203CF10\n\
|
||||
ldr r1, [r3]\n\
|
||||
lsls r2, r4, 3\n\
|
||||
adds r1, r2, r1\n\
|
||||
str r0, [r1]\n\
|
||||
movs r5, 0\n\
|
||||
adds r4, r2, 0\n\
|
||||
_081BEDFA:\n\
|
||||
ldr r0, [r3]\n\
|
||||
adds r0, r4, r0\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, r5\n\
|
||||
strb r5, [r0]\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
cmp r5, 0x2F\n\
|
||||
bls _081BEDFA\n\
|
||||
movs r5, 0\n\
|
||||
ldr r7, =gUnknown_0203CF10\n\
|
||||
adds r6, r2, 0\n\
|
||||
_081BEE14:\n\
|
||||
bl Random\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r1, 0x30\n\
|
||||
bl __umodsi3\n\
|
||||
adds r4, r0, 0\n\
|
||||
lsls r4, 16\n\
|
||||
lsrs r4, 16\n\
|
||||
bl Random\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r1, 0x30\n\
|
||||
bl __umodsi3\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
ldr r1, [r7]\n\
|
||||
adds r1, r6, r1\n\
|
||||
ldr r1, [r1]\n\
|
||||
adds r0, r1, r0\n\
|
||||
ldrb r2, [r0]\n\
|
||||
adds r1, r4 \n\
|
||||
ldrb r1, [r1]\n\
|
||||
strb r1, [r0]\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r0, r6, r0\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, r4\n\
|
||||
strb r2, [r0]\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
cmp r5, 0x2F\n\
|
||||
bls _081BEE14\n\
|
||||
ldr r0, =gTasks\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r2, r1, r0\n\
|
||||
ldrh r3, [r2, 0xE]\n\
|
||||
movs r4, 0xE\n\
|
||||
ldrsh r1, [r2, r4]\n\
|
||||
adds r6, r0, 0\n\
|
||||
cmp r1, 0x5F\n\
|
||||
bgt _081BEE78\n\
|
||||
adds r0, r3, 0x1\n\
|
||||
strh r0, [r2, 0xE]\n\
|
||||
_081BEE78:\n\
|
||||
movs r0, 0\n\
|
||||
strh r0, [r2, 0xA]\n\
|
||||
_081BEE7C:\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r6\n\
|
||||
ldrh r0, [r1, 0xA]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0xA]\n\
|
||||
_081BEE8A:\n\
|
||||
ldr r0, [sp, 0x8]\n\
|
||||
add r0, r10\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r6\n\
|
||||
ldrb r4, [r0, 0xE]\n\
|
||||
ldrb r5, [r0, 0xC]\n\
|
||||
lsls r0, r4, 16\n\
|
||||
cmp r5, r4\n\
|
||||
bcs _081BEF32\n\
|
||||
str r0, [sp, 0xC]\n\
|
||||
_081BEE9E:\n\
|
||||
movs r6, 0\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
str r0, [sp, 0x4]\n\
|
||||
lsls r4, r5, 3\n\
|
||||
movs r2, 0x5F\n\
|
||||
subs r1, r2, r5\n\
|
||||
lsls r0, r1, 1\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 4\n\
|
||||
mov r9, r0\n\
|
||||
_081BEEB2:\n\
|
||||
ldr r0, =gUnknown_0203CF04\n\
|
||||
ldr r0, [r0]\n\
|
||||
ldr r7, =gUnknown_0203CF10\n\
|
||||
ldr r3, [r7]\n\
|
||||
adds r3, r4, r3\n\
|
||||
ldrb r2, [r3, 0x4]\n\
|
||||
adds r1, r2, 0x1\n\
|
||||
strb r1, [r3, 0x4]\n\
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
ldr r1, [r3]\n\
|
||||
adds r1, r2\n\
|
||||
ldrb r1, [r1]\n\
|
||||
add r1, r9\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
movs r2, 0x1\n\
|
||||
mov r8, r2\n\
|
||||
str r2, [sp]\n\
|
||||
movs r2, 0\n\
|
||||
movs r3, 0x30\n\
|
||||
bl sub_81BF2B8\n\
|
||||
adds r0, r6, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r6, r0, 24\n\
|
||||
cmp r6, 0\n\
|
||||
beq _081BEEB2\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r1, r4, r0\n\
|
||||
ldrb r0, [r1, 0x4]\n\
|
||||
cmp r0, 0x2F\n\
|
||||
bls _081BEF24\n\
|
||||
ldr r0, [r1]\n\
|
||||
bl Free\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r0, r4, r0\n\
|
||||
movs r1, 0\n\
|
||||
str r1, [r0]\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
ldr r4, =gTasks\n\
|
||||
adds r1, r4\n\
|
||||
ldrh r0, [r1, 0xC]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0xC]\n\
|
||||
mov r0, r8\n\
|
||||
ands r5, r0\n\
|
||||
cmp r5, 0x1\n\
|
||||
bne _081BEF24\n\
|
||||
ldr r0, =gUnknown_0203CF14\n\
|
||||
ldr r1, [r0]\n\
|
||||
ldrh r0, [r1, 0x2]\n\
|
||||
subs r0, 0x1\n\
|
||||
strh r0, [r1, 0x2]\n\
|
||||
_081BEF24:\n\
|
||||
ldr r1, [sp, 0x4]\n\
|
||||
lsls r0, r1, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
ldr r2, [sp, 0xC]\n\
|
||||
lsrs r0, r2, 16\n\
|
||||
cmp r5, r0\n\
|
||||
bcc _081BEE9E\n\
|
||||
_081BEF32:\n\
|
||||
ldr r0, =gUnknown_0203CF04\n\
|
||||
ldr r1, [r0]\n\
|
||||
movs r2, 0x92\n\
|
||||
lsls r2, 4\n\
|
||||
movs r0, 0\n\
|
||||
movs r3, 0\n\
|
||||
bl LoadBgTiles\n\
|
||||
ldr r0, =gUnknown_0203CF10\n\
|
||||
ldr r0, [r0]\n\
|
||||
movs r4, 0xBE\n\
|
||||
lsls r4, 2\n\
|
||||
adds r0, r4\n\
|
||||
ldrb r0, [r0, 0x4]\n\
|
||||
cmp r0, 0x2F\n\
|
||||
bhi _081BF002\n\
|
||||
b _081BF014\n\
|
||||
.pool\n\
|
||||
_081BEF64:\n\
|
||||
movs r0, 0\n\
|
||||
bl UnsetBgTilemapBuffer\n\
|
||||
ldr r0, =sub_81BEBB4\n\
|
||||
bl FindTaskIdByFunc\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0xFF\n\
|
||||
beq _081BEF7C\n\
|
||||
bl DestroyTask\n\
|
||||
_081BEF7C:\n\
|
||||
ldr r0, =gUnknown_0203CF14\n\
|
||||
ldr r1, [r0]\n\
|
||||
movs r0, 0\n\
|
||||
strh r0, [r1]\n\
|
||||
strh r0, [r1, 0x2]\n\
|
||||
bl sub_81BEB90\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEF94:\n\
|
||||
ldr r4, =gUnknown_0203CF14\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
movs r5, 0\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF10\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF04\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF08\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEFD0:\n\
|
||||
movs r0, 0xC\n\
|
||||
movs r1, 0x2\n\
|
||||
bl SetGpuRegBits\n\
|
||||
movs r0, 0x8\n\
|
||||
movs r1, 0\n\
|
||||
bl SetGpuRegBits\n\
|
||||
movs r0, 0\n\
|
||||
movs r1, 0x7\n\
|
||||
movs r2, 0\n\
|
||||
bl SetBgAttribute\n\
|
||||
bl sub_81971D0\n\
|
||||
b _081BF002\n\
|
||||
_081BEFF0:\n\
|
||||
movs r0, 0\n\
|
||||
bl ShowBg\n\
|
||||
b _081BF002\n\
|
||||
_081BEFF8:\n\
|
||||
mov r0, r10\n\
|
||||
bl DestroyTask\n\
|
||||
bl EnableBothScriptContexts\n\
|
||||
_081BF002:\n\
|
||||
ldr r0, =gTasks\n\
|
||||
mov r2, r10\n\
|
||||
lsls r1, r2, 2\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r0\n\
|
||||
ldrh r0, [r1, 0x8]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0x8]\n\
|
||||
_081BF014:\n\
|
||||
add sp, 0x10\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
.syntax divided");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static void sub_81BF028(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
{
|
||||
case 1:
|
||||
gUnknown_0203CF0C = (struct Struct203CF0C *)AllocZeroed(sizeof(struct Struct203CF0C));
|
||||
gUnknown_0203CF0C->frameImageTiles = (u8 *)AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
|
||||
gUnknown_0203CF0C->frameImage = (struct DynamicSpriteFrameImage *) AllocZeroed(sizeof(struct DynamicSpriteFrameImage));
|
||||
gUnknown_0203CF0C->unkC = (u16 *)AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
|
||||
gUnknown_0203CF0C->unk10 = 0;
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
u8 *buffer;
|
||||
buffer = gUnknown_0203CF0C->frameImageTiles;
|
||||
for(i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
|
||||
*buffer = gRootFossil_Gfx[i];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_0203CF0C->frameImage->data = gUnknown_0203CF0C->frameImageTiles;
|
||||
gUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
u8 spriteId, zero;
|
||||
struct SpriteTemplate fossilTemplate;
|
||||
|
||||
fossilTemplate = gUnknown_08617E00;
|
||||
fossilTemplate.images = (struct SpriteFrameImage *)(gUnknown_0203CF0C->frameImage);
|
||||
spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
|
||||
gUnknown_0203CF0C->spriteId = spriteId;
|
||||
zero = 0;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].centerToCornerVecX = zero;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].data[0] = gSprites[gUnknown_0203CF0C->spriteId].pos1.x;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].data[1] = 1;
|
||||
}
|
||||
case 5:
|
||||
for(i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
|
||||
gUnknown_0203CF0C->unkC[i] = i;
|
||||
break;
|
||||
case 6:
|
||||
{
|
||||
u16 rand1, rand2, temp, j;
|
||||
j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
|
||||
for(i = 0; i <= j; i++)
|
||||
{
|
||||
rand1 = Random() % 0x100;
|
||||
rand2 = Random() % 0x100;
|
||||
j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
|
||||
temp = gUnknown_0203CF0C->unkC[rand2];
|
||||
gUnknown_0203CF0C->unkC[rand2] = gUnknown_0203CF0C->unkC[rand1];
|
||||
gUnknown_0203CF0C->unkC[rand1] = temp;
|
||||
}
|
||||
gSprites[gUnknown_0203CF0C->spriteId].callback = sub_81BF248;
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
if(gSprites[gUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
|
||||
return;
|
||||
DestroySprite(&gSprites[gUnknown_0203CF0C->spriteId]);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->unkC);;
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImage);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImageTiles);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C);
|
||||
break;
|
||||
case 8:
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
++gTasks[taskId].data[0];
|
||||
}
|
||||
|
||||
static void sub_81BF248(struct Sprite *sprite)
|
||||
{
|
||||
if (gUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else if (sprite->pos1.y >= 0x60)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sub_81BF2B8(gUnknown_0203CF0C->frameImageTiles, gUnknown_0203CF0C->unkC[gUnknown_0203CF0C->unk10++], 0, 16, 0);
|
||||
}
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.y++;
|
||||
}
|
||||
}
|
||||
@@ -2198,7 +2198,7 @@ void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
|
||||
(var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \
|
||||
}
|
||||
|
||||
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef)
|
||||
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef)
|
||||
{
|
||||
u32 i;
|
||||
s32 damage = 0;
|
||||
@@ -2228,8 +2228,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
|
||||
if (attacker->item == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect;
|
||||
attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam;
|
||||
attackerHoldEffect = gEnigmaBerries[battlerIdAtk].holdEffect;
|
||||
attackerHoldEffectParam = gEnigmaBerries[battlerIdAtk].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2239,8 +2239,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
|
||||
if (defender->item == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect;
|
||||
defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam;
|
||||
defenderHoldEffect = gEnigmaBerries[battlerIdDef].holdEffect;
|
||||
defenderHoldEffectParam = gEnigmaBerries[battlerIdDef].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2251,13 +2251,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
|
||||
attack *= 2;
|
||||
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, bankAtk))
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, battlerIdAtk))
|
||||
attack = (110 * attack) / 100;
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, bankDef))
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, battlerIdDef))
|
||||
defense = (110 * defense) / 100;
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankAtk))
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerIdAtk))
|
||||
spAttack = (110 * spAttack) / 100;
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankDef))
|
||||
if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerIdDef))
|
||||
spDefense = (110 * spDefense) / 100;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sHoldEffectToType); i++)
|
||||
@@ -2442,7 +2442,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
}
|
||||
|
||||
// flash fire triggered
|
||||
if ((gBattleResources->flags->flags[bankAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
|
||||
if ((gBattleResources->flags->flags[battlerIdAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
|
||||
damage = (15 * damage) / 10;
|
||||
}
|
||||
|
||||
|
||||
@@ -1612,7 +1612,7 @@ bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx)
|
||||
{
|
||||
u8 stringVarIndex = ScriptReadByte(ctx);
|
||||
u16 v1 = VarGet(ScriptReadHalfword(ctx));
|
||||
u8 v2 = sub_80EF370(v1);
|
||||
u8 v2 = CountDigits(v1);
|
||||
|
||||
ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2);
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user