Don't copy opponent personality when swapping mon sprite during Mega Evolution (#2852)
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
parent
2d6282fece
commit
32e63d8cc7
16 changed files with 53 additions and 14 deletions
|
@ -22317,7 +22317,7 @@ Move_TRANSFORM:
|
||||||
monbg ANIM_ATTACKER
|
monbg ANIM_ATTACKER
|
||||||
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
||||||
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 0
|
createvisualtask AnimTask_TransformMon, 2, 0, 0, 1
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
|
@ -24406,7 +24406,7 @@ WeatherFormChangeContinue:
|
||||||
monbg ANIM_ATTACKER
|
monbg ANIM_ATTACKER
|
||||||
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
||||||
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
||||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
createvisualtask AnimTask_TransformMon, 2, 1, 0, 0
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
|
@ -24829,14 +24829,14 @@ General_WishHeal:
|
||||||
|
|
||||||
General_IllusionOff:
|
General_IllusionOff:
|
||||||
monbg ANIM_TARGET
|
monbg ANIM_TARGET
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, 0, 1, 0
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_TARGET
|
clearmonbg ANIM_TARGET
|
||||||
end
|
end
|
||||||
|
|
||||||
General_FormChange:
|
General_FormChange:
|
||||||
monbg ANIM_ATTACKER
|
monbg ANIM_ATTACKER
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, 0, 1, 0
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
|
@ -24865,7 +24865,7 @@ General_MegaEvolution:
|
||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, 0, 1, 0
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
|
@ -25011,7 +25011,7 @@ General_PrimalReversion_Alpha:
|
||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, 0, 1, 0
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
|
@ -25038,7 +25038,7 @@ General_PrimalReversion_Omega:
|
||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, 0, 1, 0
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
|
|
|
@ -62,6 +62,7 @@ struct ResourceFlags
|
||||||
struct DisableStruct
|
struct DisableStruct
|
||||||
{
|
{
|
||||||
u32 transformedMonPersonality;
|
u32 transformedMonPersonality;
|
||||||
|
u32 transformedMonOtId;
|
||||||
u16 disabledMove;
|
u16 disabledMove;
|
||||||
u16 encoredMove;
|
u16 encoredMove;
|
||||||
u8 protectUses;
|
u8 protectUses;
|
||||||
|
@ -976,6 +977,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
|
||||||
extern u8 gBattlerInMenuId;
|
extern u8 gBattlerInMenuId;
|
||||||
extern bool8 gDoingBattleAnim;
|
extern bool8 gDoingBattleAnim;
|
||||||
extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
|
extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
|
||||||
|
extern u32 gTransformedOtIds[MAX_BATTLERS_COUNT];
|
||||||
extern u8 gPlayerDpadHoldFrames;
|
extern u8 gPlayerDpadHoldFrames;
|
||||||
extern struct BattleSpriteData *gBattleSpritesDataPtr;
|
extern struct BattleSpriteData *gBattleSpritesDataPtr;
|
||||||
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
|
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
|
||||||
|
|
|
@ -23,7 +23,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
|
||||||
void ClearSpritesHealthboxAnimData(void);
|
void ClearSpritesHealthboxAnimData(void);
|
||||||
void CopyAllBattleSpritesInvisibilities(void);
|
void CopyAllBattleSpritesInvisibilities(void);
|
||||||
void CopyBattleSpriteInvisibility(u8 battlerId);
|
void CopyBattleSpriteInvisibility(u8 battlerId);
|
||||||
void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform, bool32 megaEvo, bool8 trackEnemyPersonality);
|
void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 castform, bool32 megaEvo, bool8 trackEnemyPersonality);
|
||||||
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
|
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
|
||||||
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
|
void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
|
||||||
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
|
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
|
||||||
|
|
|
@ -99,6 +99,7 @@
|
||||||
// Additionally, in gen8+ the Healing Wish's effect will be stored until the user switches into a statused or hurt mon.
|
// Additionally, in gen8+ the Healing Wish's effect will be stored until the user switches into a statused or hurt mon.
|
||||||
#define B_DEFOG_CLEARS_TERRAIN GEN_LATEST // In Gen8+, Defog also clears active Terrain.
|
#define B_DEFOG_CLEARS_TERRAIN GEN_LATEST // In Gen8+, Defog also clears active Terrain.
|
||||||
#define B_STOCKPILE_RAISES_DEFS GEN_LATEST // In Gen4+, Stockpile also raises Defense and Sp. Defense stats. Once Spit Up / Swallow is used, these stat changes are lost.
|
#define B_STOCKPILE_RAISES_DEFS GEN_LATEST // In Gen4+, Stockpile also raises Defense and Sp. Defense stats. Once Spit Up / Swallow is used, these stat changes are lost.
|
||||||
|
#define B_TRANSFORM_SHINY GEN_LATEST // In Gen4+, Transform will copy the shiny state of the opponent instead of maintaining its own shiny state.
|
||||||
#define B_TRANSFORM_FORM_CHANGES GEN_LATEST // In Gen5+, Transformed Pokemon cannot change forms.
|
#define B_TRANSFORM_FORM_CHANGES GEN_LATEST // In Gen5+, Transformed Pokemon cannot change forms.
|
||||||
|
|
||||||
// Ability settings
|
// Ability settings
|
||||||
|
|
|
@ -2350,6 +2350,8 @@ void AnimTask_TransformMon(u8 taskId)
|
||||||
SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
|
SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
|
||||||
|
|
||||||
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
||||||
|
gTasks[taskId].data[11] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[12] = gBattleAnimArgs[2];
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -2364,7 +2366,7 @@ void AnimTask_TransformMon(u8 taskId)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1], TRUE);
|
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gTasks[taskId].data[11], gTasks[taskId].data[12]);
|
||||||
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
||||||
|
|
||||||
if (IsContest())
|
if (IsContest())
|
||||||
|
|
|
@ -1395,6 +1395,7 @@ static void LinkOpponentHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||||
|
|
|
@ -1232,6 +1232,7 @@ static void LinkPartnerHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||||
|
|
|
@ -1470,6 +1470,7 @@ static void OpponentHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2709,6 +2709,7 @@ static void PlayerHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
|
||||||
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
|
||||||
|
|
|
@ -1433,6 +1433,7 @@ static void PlayerPartnerHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDoMoveAnimation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1327,6 +1327,7 @@ static void RecordedOpponentHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentDoMoveAnimation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1335,6 +1335,7 @@ static void RecordedPlayerHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerDoMoveAnimation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1115,6 +1115,7 @@ static void WallyHandleMoveAnimation(void)
|
||||||
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
gWeatherMoveAnim = gBattleResources->bufferA[gActiveBattler][12] | (gBattleResources->bufferA[gActiveBattler][13] << 8);
|
||||||
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[gActiveBattler][16];
|
||||||
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
|
||||||
|
gTransformedOtIds[gActiveBattler] = gAnimDisableStructPtr->transformedMonOtId;
|
||||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||||
gBattlerControllerFuncs[gActiveBattler] = WallyDoMoveAnimation;
|
gBattlerControllerFuncs[gActiveBattler] = WallyDoMoveAnimation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -551,7 +551,7 @@ bool8 IsBattleSEPlaying(u8 battlerId)
|
||||||
|
|
||||||
static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 opponent)
|
static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 opponent)
|
||||||
{
|
{
|
||||||
u32 monsPersonality, currentPersonality, otId, species, paletteOffset, position;
|
u32 monsPersonality, currentPersonality, otId, currentOtId, species, paletteOffset, position;
|
||||||
const void *lzPaletteData;
|
const void *lzPaletteData;
|
||||||
struct Pokemon *illusionMon = GetIllusionMonPtr(battlerId);
|
struct Pokemon *illusionMon = GetIllusionMonPtr(battlerId);
|
||||||
if (illusionMon != NULL)
|
if (illusionMon != NULL)
|
||||||
|
@ -561,18 +561,26 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op
|
||||||
return;
|
return;
|
||||||
|
|
||||||
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
|
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||||
|
otId = GetMonData(mon, MON_DATA_OT_ID);
|
||||||
|
|
||||||
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
|
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
|
||||||
{
|
{
|
||||||
species = GetMonData(mon, MON_DATA_SPECIES);
|
species = GetMonData(mon, MON_DATA_SPECIES);
|
||||||
currentPersonality = monsPersonality;
|
currentPersonality = monsPersonality;
|
||||||
|
currentOtId = otId;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
|
species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
|
||||||
|
#if B_TRANSFORM_SHINY >= GEN_4
|
||||||
currentPersonality = gTransformedPersonalities[battlerId];
|
currentPersonality = gTransformedPersonalities[battlerId];
|
||||||
|
currentOtId = gTransformedOtIds[battlerId];
|
||||||
|
#else
|
||||||
|
currentPersonality = monsPersonality;
|
||||||
|
currentOtId = otId;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
otId = GetMonData(mon, MON_DATA_OT_ID);
|
|
||||||
position = GetBattlerPosition(battlerId);
|
position = GetBattlerPosition(battlerId);
|
||||||
if (opponent)
|
if (opponent)
|
||||||
{
|
{
|
||||||
|
@ -592,7 +600,7 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op
|
||||||
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
|
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
|
||||||
lzPaletteData = GetMonFrontSpritePal(mon);
|
lzPaletteData = GetMonFrontSpritePal(mon);
|
||||||
else
|
else
|
||||||
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
|
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, currentOtId, currentPersonality);
|
||||||
|
|
||||||
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
|
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
|
||||||
LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP);
|
LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP);
|
||||||
|
@ -880,11 +888,19 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo
|
||||||
|
|
||||||
if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
|
if (GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
|
||||||
{
|
{
|
||||||
|
#if B_TRANSFORM_SHINY >= GEN_4
|
||||||
if (trackEnemyPersonality)
|
if (trackEnemyPersonality)
|
||||||
|
{
|
||||||
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||||
|
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||||
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||||
|
}
|
||||||
|
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||||
|
|
||||||
HandleLoadSpecialPokePic(FALSE,
|
HandleLoadSpecialPokePic(FALSE,
|
||||||
gMonSpritesGfxPtr->sprites.ptr[position],
|
gMonSpritesGfxPtr->sprites.ptr[position],
|
||||||
|
@ -893,11 +909,19 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform, bo
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if B_TRANSFORM_SHINY >= GEN_4
|
||||||
if (trackEnemyPersonality)
|
if (trackEnemyPersonality)
|
||||||
|
{
|
||||||
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||||
|
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||||
|
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY);
|
||||||
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
|
||||||
|
}
|
||||||
|
|
||||||
HandleLoadSpecialPokePic(TRUE,
|
HandleLoadSpecialPokePic(TRUE,
|
||||||
gMonSpritesGfxPtr->sprites.ptr[position],
|
gMonSpritesGfxPtr->sprites.ptr[position],
|
||||||
|
|
|
@ -226,6 +226,7 @@ EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gBattlerInMenuId = 0;
|
EWRAM_DATA u8 gBattlerInMenuId = 0;
|
||||||
EWRAM_DATA bool8 gDoingBattleAnim = FALSE;
|
EWRAM_DATA bool8 gDoingBattleAnim = FALSE;
|
||||||
EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0};
|
EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0};
|
||||||
|
EWRAM_DATA u32 gTransformedOtIds[MAX_BATTLERS_COUNT] = {0};
|
||||||
EWRAM_DATA u8 gPlayerDpadHoldFrames = 0;
|
EWRAM_DATA u8 gPlayerDpadHoldFrames = 0;
|
||||||
EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL;
|
EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL;
|
||||||
EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL;
|
EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL;
|
||||||
|
|
|
@ -12881,6 +12881,7 @@ static void Cmd_transformdataexecution(void)
|
||||||
gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE;
|
gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE;
|
||||||
gDisableStructs[gBattlerAttacker].disableTimer = 0;
|
gDisableStructs[gBattlerAttacker].disableTimer = 0;
|
||||||
gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality;
|
gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality;
|
||||||
|
gDisableStructs[gBattlerAttacker].transformedMonOtId = gBattleMons[gBattlerTarget].otId;
|
||||||
gDisableStructs[gBattlerAttacker].mimickedMoves = 0;
|
gDisableStructs[gBattlerAttacker].mimickedMoves = 0;
|
||||||
gDisableStructs[gBattlerAttacker].usedMoves = 0;
|
gDisableStructs[gBattlerAttacker].usedMoves = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue