mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-25 11:14:15 +01:00
Further removed trailing whitespaces
This commit is contained in:
parent
1d7e8bd730
commit
de32940fdf
@ -283,7 +283,7 @@
|
|||||||
.macro jumpretfalse ptr:req
|
.macro jumpretfalse ptr:req
|
||||||
jumpreteq FALSE, \ptr
|
jumpreteq FALSE, \ptr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro jumpifdoublebattle ptr:req
|
.macro jumpifdoublebattle ptr:req
|
||||||
createvisualtask AnimTask_IsDoubleBattle, 0
|
createvisualtask AnimTask_IsDoubleBattle, 0
|
||||||
jumprettrue \ptr
|
jumprettrue \ptr
|
||||||
@ -305,7 +305,7 @@
|
|||||||
.hword \launchtemplatearg7
|
.hword \launchtemplatearg7
|
||||||
.hword \launchtemplatearg8
|
.hword \launchtemplatearg8
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
|
.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
|
||||||
.byte 0x3
|
.byte 0x3
|
||||||
.word \launchtaskPtr
|
.word \launchtaskPtr
|
||||||
@ -321,7 +321,7 @@
|
|||||||
.hword \launchtaskarg7
|
.hword \launchtaskarg7
|
||||||
.hword \launchtaskarg8
|
.hword \launchtaskarg8
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro setblends setblends_value
|
.macro setblends setblends_value
|
||||||
.byte 0xC
|
.byte 0xC
|
||||||
.hword \setblends_value
|
.hword \setblends_value
|
||||||
|
@ -89,15 +89,15 @@
|
|||||||
setvar VAR_0x8004, BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA
|
setvar VAR_0x8004, BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA
|
||||||
special CallBattleTowerFunc
|
special CallBattleTowerFunc
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@Custom multi-battle commands
|
@Custom multi-battle commands
|
||||||
|
|
||||||
.macro choose_mons
|
.macro choose_mons
|
||||||
fadescreen 1
|
fadescreen 1
|
||||||
special ChooseHalfPartyForBattle @ choose 3 mons for battle
|
special ChooseHalfPartyForBattle @ choose 3 mons for battle
|
||||||
waitstate
|
waitstate
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_do type:req, partnerId:req, partnerPicId:req
|
.macro multi_do type:req, partnerId:req, partnerPicId:req
|
||||||
special ReducePlayerPartyToSelectedMons
|
special ReducePlayerPartyToSelectedMons
|
||||||
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA
|
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA
|
||||||
@ -113,26 +113,26 @@
|
|||||||
special CallFrontierUtilFunc
|
special CallFrontierUtilFunc
|
||||||
special LoadPlayerParty
|
special LoadPlayerParty
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
.macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
||||||
multi_do MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
multi_do MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
.macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||||
multi_do MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
multi_do MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
||||||
.macro multi_wild partnerId:req, partnerPicId:req
|
.macro multi_wild partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
multi_do MULTI_BATTLE_2_VS_WILD, \partnerId, \partnerPicId
|
multi_do MULTI_BATTLE_2_VS_WILD, \partnerId, \partnerPicId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_do_fixed type:req, partnerId:req, partnerPicId:req
|
.macro multi_do_fixed type:req, partnerId:req, partnerPicId:req
|
||||||
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
|
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
|
||||||
setvar VAR_0x8005, \type
|
setvar VAR_0x8005, \type
|
||||||
@ -144,20 +144,20 @@
|
|||||||
special CallFrontierUtilFunc
|
special CallFrontierUtilFunc
|
||||||
special LoadPlayerParty
|
special LoadPlayerParty
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
.macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_B, \trainer2Id, 0, NULL, \trainer2LoseText @ set second trainer mons
|
||||||
multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId, \partnerPicId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
.macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
trainerbattle TRAINER_BATTLE_SET_TRAINER_A, \trainer1Id, 0, NULL, \trainer1LoseText @ set first trainer mons
|
||||||
multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId, \partnerPicId
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
|
||||||
.macro multi_fixed_wild partnerId:req, partnerPicId:req
|
.macro multi_fixed_wild partnerId:req, partnerPicId:req
|
||||||
special SavePlayerParty
|
special SavePlayerParty
|
||||||
|
@ -150,13 +150,13 @@
|
|||||||
.4byte \sample
|
.4byte \sample
|
||||||
.byte 0xff, 0, 0xff, 0
|
.byte 0xff, 0, 0xff, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro cry_uncomp sample @ not compressed
|
.macro cry_uncomp sample @ not compressed
|
||||||
.byte 0x0, 60, 0, 0
|
.byte 0x0, 60, 0, 0
|
||||||
.4byte \sample
|
.4byte \sample
|
||||||
.byte 0xff, 0, 0xff, 0
|
.byte 0xff, 0, 0xff, 0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro cry_reverse_uncomp sample @ not compressed
|
.macro cry_reverse_uncomp sample @ not compressed
|
||||||
.byte 0x10, 60, 0, 0
|
.byte 0x10, 60, 0, 0
|
||||||
.4byte \sample
|
.4byte \sample
|
||||||
|
@ -14196,7 +14196,7 @@ TerrainPulseElectric:
|
|||||||
createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET
|
createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET
|
||||||
createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(27, 27, 0)
|
createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(27, 27, 0)
|
||||||
goto TerrainPulseEnd
|
goto TerrainPulseEnd
|
||||||
|
|
||||||
TerrainPulseGrass:
|
TerrainPulseGrass:
|
||||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(11, 26, 11)
|
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(11, 26, 11)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
@ -14218,7 +14218,7 @@ TerrainPulseFairy:
|
|||||||
createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET
|
createvisualtask AnimTask_SwayMon, 5, 0, 4, 51200, 24, ANIM_TARGET
|
||||||
createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 24, 31)
|
createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, RGB(31, 24, 31)
|
||||||
goto TerrainPulseEnd
|
goto TerrainPulseEnd
|
||||||
|
|
||||||
TerrainPulsePsychic:
|
TerrainPulsePsychic:
|
||||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(27, 0, 13)
|
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_DRAGON_PULSE, 0, 12, 12, RGB(27, 0, 13)
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
@ -24740,7 +24740,7 @@ General_RestoreBg:
|
|||||||
restorebg
|
restorebg
|
||||||
waitbgfadein
|
waitbgfadein
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
General_ZMoveActivate:
|
General_ZMoveActivate:
|
||||||
@ -25263,8 +25263,8 @@ FinishSupersonicSkystrike:
|
|||||||
call UnsetPsychicBg
|
call UnsetPsychicBg
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
Move_ACID_DOWNPOUR:
|
Move_ACID_DOWNPOUR:
|
||||||
loadspritegfx ANIM_TAG_BLUE_ORB @ reversal
|
loadspritegfx ANIM_TAG_BLUE_ORB @ reversal
|
||||||
loadspritegfx ANIM_TAG_POISON_JAB @ poison jab
|
loadspritegfx ANIM_TAG_POISON_JAB @ poison jab
|
||||||
@ -25951,7 +25951,7 @@ NeverendingNightmareGeyser:
|
|||||||
createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
|
createsprite gNeverEndingNightmareGeyserHexSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0xfff0, 0x10
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Move_CORKSCREW_CRASH::
|
Move_CORKSCREW_CRASH::
|
||||||
loadspritegfx ANIM_TAG_SPIKES @metal bits
|
loadspritegfx ANIM_TAG_SPIKES @metal bits
|
||||||
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge
|
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @charge
|
||||||
@ -26669,7 +26669,7 @@ HavocSpearSparkTarget:
|
|||||||
@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000
|
@ launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x20 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000
|
||||||
launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000
|
launchtemplate gSparkElectricityFlashingSpriteTemplate 0x4 0x8 0x0 0x0 0x10 0xc SOUND_PAN_ATTACKER 0x14 0x2 0x8000
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Move_SHATTERED_PSYCHE::
|
Move_SHATTERED_PSYCHE::
|
||||||
loadspritegfx ANIM_TAG_IMPACT @hit
|
loadspritegfx ANIM_TAG_IMPACT @hit
|
||||||
@ -29127,7 +29127,7 @@ OceanicOperettaExplosion:
|
|||||||
launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x10 0x10 ANIM_TARGET 0x1
|
launchtemplate gOceanOperaExplosionSpriteTemplate 0x33 0x4 0x10 0x10 ANIM_TARGET 0x1
|
||||||
delay 0x6
|
delay 0x6
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Move_SPLINTERED_STORMSHARDS::
|
Move_SPLINTERED_STORMSHARDS::
|
||||||
loadspritegfx ANIM_TAG_ROCKS @rock
|
loadspritegfx ANIM_TAG_ROCKS @rock
|
||||||
@ -29388,7 +29388,7 @@ SplinteredStormshardsFinishFadeReturn:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
Move_LETS_SNUGGLE_FOREVER::
|
Move_LETS_SNUGGLE_FOREVER::
|
||||||
loadspritegfx ANIM_TAG_MAGENTA_HEART @sharm
|
loadspritegfx ANIM_TAG_MAGENTA_HEART @sharm
|
||||||
loadspritegfx ANIM_TAG_MUSIC_NOTES @music note
|
loadspritegfx ANIM_TAG_MUSIC_NOTES @music note
|
||||||
loadspritegfx ANIM_TAG_SMALL_BUBBLES @fake tears
|
loadspritegfx ANIM_TAG_SMALL_BUBBLES @fake tears
|
||||||
|
@ -511,7 +511,7 @@ BattleScript_BeakBlastSetUp::
|
|||||||
setbeakblast BS_ATTACKER
|
setbeakblast BS_ATTACKER
|
||||||
printstring STRINGID_EMPTYSTRING3
|
printstring STRINGID_EMPTYSTRING3
|
||||||
waitmessage 1
|
waitmessage 1
|
||||||
playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL
|
playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL
|
||||||
printstring STRINGID_HEATUPBEAK
|
printstring STRINGID_HEATUPBEAK
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
end2
|
end2
|
||||||
@ -601,7 +601,7 @@ BattleScript_ScaleShotEnd::
|
|||||||
moveendcase MOVEEND_SYNCHRONIZE_TARGET
|
moveendcase MOVEEND_SYNCHRONIZE_TARGET
|
||||||
moveendfrom MOVEEND_STATUS_IMMUNITY_ABILITIES
|
moveendfrom MOVEEND_STATUS_IMMUNITY_ABILITIES
|
||||||
end
|
end
|
||||||
|
|
||||||
BattleScript_EffectSkyDrop:
|
BattleScript_EffectSkyDrop:
|
||||||
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2
|
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SkyDropTurn2
|
||||||
attackcanceler
|
attackcanceler
|
||||||
@ -5648,7 +5648,7 @@ BattleScript_EffectRolePlay::
|
|||||||
pause 20
|
pause 20
|
||||||
destroyabilitypopup
|
destroyabilitypopup
|
||||||
pause 40
|
pause 40
|
||||||
.endif
|
.endif
|
||||||
printstring STRINGID_PKMNCOPIEDFOE
|
printstring STRINGID_PKMNCOPIEDFOE
|
||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
switchinabilities BS_ATTACKER
|
switchinabilities BS_ATTACKER
|
||||||
@ -9625,7 +9625,7 @@ BattleScript_StatUpZMove::
|
|||||||
waitmessage B_WAIT_TIME_LONG
|
waitmessage B_WAIT_TIME_LONG
|
||||||
BattleScript_StatUpZMoveEnd:
|
BattleScript_StatUpZMoveEnd:
|
||||||
return
|
return
|
||||||
|
|
||||||
BattleScript_HealReplacementZMove::
|
BattleScript_HealReplacementZMove::
|
||||||
playanimation BS_SCRIPTING B_ANIM_WISH_HEAL 0x0
|
playanimation BS_SCRIPTING B_ANIM_WISH_HEAL 0x0
|
||||||
printfromtable gZEffectStringIds
|
printfromtable gZEffectStringIds
|
||||||
@ -9836,7 +9836,7 @@ BattleScript_NeutralizingGasExitsLoop:
|
|||||||
jumpifbytenotequal gBattlerTarget, sByteFour, BattleScript_NeutralizingGasExitsLoop @ SOMEHOW, comparing to gBattlersCount is problematic.
|
jumpifbytenotequal gBattlerTarget, sByteFour, BattleScript_NeutralizingGasExitsLoop @ SOMEHOW, comparing to gBattlersCount is problematic.
|
||||||
restoretarget
|
restoretarget
|
||||||
return
|
return
|
||||||
|
|
||||||
BattleScript_MagicianActivates::
|
BattleScript_MagicianActivates::
|
||||||
call BattleScript_AbilityPopUp
|
call BattleScript_AbilityPopUp
|
||||||
call BattleScript_ItemSteal
|
call BattleScript_ItemSteal
|
||||||
|
@ -461,7 +461,7 @@
|
|||||||
#define BG_WATER_2 41
|
#define BG_WATER_2 41
|
||||||
#define BG_POISON 42
|
#define BG_POISON 42
|
||||||
#define BG_AEROBLAST 43
|
#define BG_AEROBLAST 43
|
||||||
#define BG_HURRICANE 44
|
#define BG_HURRICANE 44
|
||||||
#define BG_ELECTRIC_TERRAIN 45
|
#define BG_ELECTRIC_TERRAIN 45
|
||||||
#define BG_GRASSY_TERRAIN 46
|
#define BG_GRASSY_TERRAIN 46
|
||||||
#define BG_MISTY_TERRAIN 47
|
#define BG_MISTY_TERRAIN 47
|
||||||
|
@ -379,7 +379,7 @@
|
|||||||
#define STRINGID_PKMNBOXLANETTESPCFULL 378
|
#define STRINGID_PKMNBOXLANETTESPCFULL 378
|
||||||
#define STRINGID_TRAINER1WINTEXT 379
|
#define STRINGID_TRAINER1WINTEXT 379
|
||||||
#define STRINGID_TRAINER2WINTEXT 380
|
#define STRINGID_TRAINER2WINTEXT 380
|
||||||
|
|
||||||
#define STRINGID_ENDUREDSTURDY 381
|
#define STRINGID_ENDUREDSTURDY 381
|
||||||
#define STRINGID_POWERHERB 382
|
#define STRINGID_POWERHERB 382
|
||||||
#define STRINGID_HURTBYITEM 383
|
#define STRINGID_HURTBYITEM 383
|
||||||
|
@ -3978,7 +3978,7 @@ Cry_Spectrier::
|
|||||||
.align 2
|
.align 2
|
||||||
Cry_Calyrex::
|
Cry_Calyrex::
|
||||||
.incbin "sound/direct_sound_samples/cries/calyrex.bin"
|
.incbin "sound/direct_sound_samples/cries/calyrex.bin"
|
||||||
/*
|
/*
|
||||||
.align 2
|
.align 2
|
||||||
Cry_Wyrdeer::
|
Cry_Wyrdeer::
|
||||||
.incbin "sound/direct_sound_samples/cries/wyrdeer.bin"
|
.incbin "sound/direct_sound_samples/cries/wyrdeer.bin"
|
||||||
|
@ -793,17 +793,17 @@ static bool32 AiExpectsToFaintPlayer(void)
|
|||||||
bool32 canFaintPlayer;
|
bool32 canFaintPlayer;
|
||||||
u32 i;
|
u32 i;
|
||||||
u8 target = gBattleStruct->aiChosenTarget[gActiveBattler];
|
u8 target = gBattleStruct->aiChosenTarget[gActiveBattler];
|
||||||
|
|
||||||
if (gBattleStruct->aiMoveOrAction[gActiveBattler] > 3)
|
if (gBattleStruct->aiMoveOrAction[gActiveBattler] > 3)
|
||||||
return FALSE; // AI not planning to use move
|
return FALSE; // AI not planning to use move
|
||||||
|
|
||||||
if (GetBattlerSide(target) != GetBattlerSide(gActiveBattler)
|
if (GetBattlerSide(target) != GetBattlerSide(gActiveBattler)
|
||||||
&& CanIndexMoveFaintTarget(gActiveBattler, target, gBattleStruct->aiMoveOrAction[gActiveBattler], 0)
|
&& CanIndexMoveFaintTarget(gActiveBattler, target, gBattleStruct->aiMoveOrAction[gActiveBattler], 0)
|
||||||
&& AI_WhoStrikesFirst(gActiveBattler, target, GetAIChosenMove(gActiveBattler)) == AI_IS_FASTER) {
|
&& AI_WhoStrikesFirst(gActiveBattler, target, GetAIChosenMove(gActiveBattler)) == AI_IS_FASTER) {
|
||||||
// We expect to faint the target and move first -> dont use an item
|
// We expect to faint the target and move first -> dont use an item
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -818,10 +818,10 @@ static bool8 ShouldUseItem(void)
|
|||||||
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT)
|
if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT)
|
||||||
|| gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED)
|
|| gStatuses3[gActiveBattler] & STATUS3_SKY_DROPPED)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (gStatuses3[gActiveBattler] & STATUS3_EMBARGO)
|
if (gStatuses3[gActiveBattler] & STATUS3_EMBARGO)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (AiExpectsToFaintPlayer())
|
if (AiExpectsToFaintPlayer())
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -948,14 +948,14 @@ static bool8 ShouldUseItem(void)
|
|||||||
static bool32 AI_ShouldHeal(u32 healAmount)
|
static bool32 AI_ShouldHeal(u32 healAmount)
|
||||||
{
|
{
|
||||||
bool32 shouldHeal = FALSE;
|
bool32 shouldHeal = FALSE;
|
||||||
|
|
||||||
if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4
|
if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4
|
||||||
|| gBattleMons[gActiveBattler].hp == 0
|
|| gBattleMons[gActiveBattler].hp == 0
|
||||||
|| (healAmount != 0 && gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > healAmount)) {
|
|| (healAmount != 0 && gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > healAmount)) {
|
||||||
// We have low enough HP to consider healing
|
// We have low enough HP to consider healing
|
||||||
shouldHeal = !AI_OpponentCanFaintAiWithMod(healAmount); // if target can kill us even after we heal, why bother
|
shouldHeal = !AI_OpponentCanFaintAiWithMod(healAmount); // if target can kill us even after we heal, why bother
|
||||||
}
|
}
|
||||||
|
|
||||||
return shouldHeal;
|
return shouldHeal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,7 +793,7 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness,
|
|||||||
dmg *= 2;
|
dmg *= 2;
|
||||||
else if (move == MOVE_SURGING_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH))
|
else if (move == MOVE_SURGING_STRIKES || (move == MOVE_WATER_SHURIKEN && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_ASH))
|
||||||
dmg *= 3;
|
dmg *= 3;
|
||||||
|
|
||||||
if (dmg == 0)
|
if (dmg == 0)
|
||||||
dmg = 1;
|
dmg = 1;
|
||||||
}
|
}
|
||||||
@ -804,7 +804,7 @@ s32 AI_CalcDamage(u16 move, u8 battlerAtk, u8 battlerDef, u8 *typeEffectiveness,
|
|||||||
|
|
||||||
RestoreBattlerData(battlerAtk);
|
RestoreBattlerData(battlerAtk);
|
||||||
RestoreBattlerData(battlerDef);
|
RestoreBattlerData(battlerDef);
|
||||||
|
|
||||||
// convert multiper to AI_EFFECTIVENESS_xX
|
// convert multiper to AI_EFFECTIVENESS_xX
|
||||||
*typeEffectiveness = AI_GetEffectiveness(effectivenessMultiplier);
|
*typeEffectiveness = AI_GetEffectiveness(effectivenessMultiplier);
|
||||||
|
|
||||||
@ -1159,11 +1159,11 @@ bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability)
|
|||||||
s32 AI_GetAbility(u32 battlerId)
|
s32 AI_GetAbility(u32 battlerId)
|
||||||
{
|
{
|
||||||
u32 knownAbility = GetBattlerAbility(battlerId);
|
u32 knownAbility = GetBattlerAbility(battlerId);
|
||||||
|
|
||||||
// The AI knows its own ability.
|
// The AI knows its own ability.
|
||||||
if (IsBattlerAIControlled(battlerId))
|
if (IsBattlerAIControlled(battlerId))
|
||||||
return knownAbility;
|
return knownAbility;
|
||||||
|
|
||||||
// Check neutralizing gas, gastro acid
|
// Check neutralizing gas, gastro acid
|
||||||
if (knownAbility == ABILITY_NONE)
|
if (knownAbility == ABILITY_NONE)
|
||||||
return knownAbility;
|
return knownAbility;
|
||||||
@ -1183,10 +1183,10 @@ s32 AI_GetAbility(u32 battlerId)
|
|||||||
{
|
{
|
||||||
abilityGuess = gBaseStats[gBattleMons[battlerId].species].abilities[Random() % NUM_ABILITY_SLOTS];
|
abilityGuess = gBaseStats[gBattleMons[battlerId].species].abilities[Random() % NUM_ABILITY_SLOTS];
|
||||||
}
|
}
|
||||||
|
|
||||||
return abilityGuess;
|
return abilityGuess;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ABILITY_NONE; // Unknown.
|
return ABILITY_NONE; // Unknown.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2691,7 +2691,7 @@ static bool32 AI_CanPoisonType(u8 battlerAttacker, u8 battlerTarget)
|
|||||||
static bool32 AI_CanBePoisoned(u8 battlerAtk, u8 battlerDef)
|
static bool32 AI_CanBePoisoned(u8 battlerAtk, u8 battlerDef)
|
||||||
{
|
{
|
||||||
u16 ability = AI_DATA->abilities[battlerDef];
|
u16 ability = AI_DATA->abilities[battlerDef];
|
||||||
|
|
||||||
if (!(AI_CanPoisonType(battlerAtk, battlerDef))
|
if (!(AI_CanPoisonType(battlerAtk, battlerDef))
|
||||||
|| gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD
|
|| gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_SAFEGUARD
|
||||||
|| gBattleMons[battlerDef].status1 & STATUS1_ANY
|
|| gBattleMons[battlerDef].status1 & STATUS1_ANY
|
||||||
@ -3042,7 +3042,7 @@ bool32 IsValidDoubleBattle(u8 battlerAtk)
|
|||||||
u16 GetAllyChosenMove(u8 battlerId)
|
u16 GetAllyChosenMove(u8 battlerId)
|
||||||
{
|
{
|
||||||
u8 partnerBattler = BATTLE_PARTNER(battlerId);
|
u8 partnerBattler = BATTLE_PARTNER(battlerId);
|
||||||
|
|
||||||
if (!IsBattlerAlive(partnerBattler) || !IsBattlerAIControlled(partnerBattler))
|
if (!IsBattlerAlive(partnerBattler) || !IsBattlerAIControlled(partnerBattler))
|
||||||
return MOVE_NONE;
|
return MOVE_NONE;
|
||||||
else if (partnerBattler > battlerId) // Battler with the lower id chooses the move first.
|
else if (partnerBattler > battlerId) // Battler with the lower id chooses the move first.
|
||||||
@ -3444,7 +3444,7 @@ void IncreaseStatUpScore(u8 battlerAtk, u8 battlerDef, u8 statId, s16 *score)
|
|||||||
|
|
||||||
if (AI_DATA->hpPercents[battlerAtk] < 80 && AI_RandLessThan(128))
|
if (AI_DATA->hpPercents[battlerAtk] < 80 && AI_RandLessThan(128))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
||||||
return; // Damaging moves would get a score boost from AI_TryToFaint or PreferStrongestMove so we don't consider them here
|
return; // Damaging moves would get a score boost from AI_TryToFaint or PreferStrongestMove so we don't consider them here
|
||||||
|
|
||||||
@ -3563,7 +3563,7 @@ void IncreaseParalyzeScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score)
|
|||||||
{
|
{
|
||||||
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove))
|
if (AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove))
|
||||||
{
|
{
|
||||||
u8 atkSpeed = GetBattlerTotalSpeedStat(battlerAtk);
|
u8 atkSpeed = GetBattlerTotalSpeedStat(battlerAtk);
|
||||||
@ -3584,7 +3584,7 @@ void IncreaseSleepScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score)
|
|||||||
{
|
{
|
||||||
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove))
|
if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove))
|
||||||
*score += 2;
|
*score += 2;
|
||||||
else
|
else
|
||||||
@ -3602,7 +3602,7 @@ void IncreaseConfusionScore(u8 battlerAtk, u8 battlerDef, u16 move, s16 *score)
|
|||||||
{
|
{
|
||||||
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (AI_CanConfuse(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)
|
if (AI_CanConfuse(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)
|
||||||
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_CONFUSION
|
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_CONFUSION
|
||||||
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_STATUS)
|
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CURE_STATUS)
|
||||||
@ -3633,26 +3633,26 @@ bool32 ShouldUseZMove(u8 battlerAtk, u8 battlerDef, u16 chosenMove)
|
|||||||
return FALSE; //don't use z move on partner
|
return FALSE; //don't use z move on partner
|
||||||
if (gBattleStruct->zmove.used[battlerAtk])
|
if (gBattleStruct->zmove.used[battlerAtk])
|
||||||
return FALSE; //cant use z move twice
|
return FALSE; //cant use z move twice
|
||||||
|
|
||||||
if (IsViableZMove(battlerAtk, chosenMove))
|
if (IsViableZMove(battlerAtk, chosenMove))
|
||||||
{
|
{
|
||||||
u8 effectiveness;
|
u8 effectiveness;
|
||||||
|
|
||||||
if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU)
|
if (gBattleMons[battlerDef].ability == ABILITY_DISGUISE && gBattleMons[battlerDef].species == SPECIES_MIMIKYU)
|
||||||
return FALSE; // Don't waste a Z-Move busting disguise
|
return FALSE; // Don't waste a Z-Move busting disguise
|
||||||
if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove))
|
if (gBattleMons[battlerDef].ability == ABILITY_ICE_FACE && gBattleMons[battlerDef].species == SPECIES_EISCUE && IS_MOVE_PHYSICAL(chosenMove))
|
||||||
return FALSE; // Don't waste a Z-Move busting Ice Face
|
return FALSE; // Don't waste a Z-Move busting Ice Face
|
||||||
|
|
||||||
if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove))
|
if (IS_MOVE_STATUS(chosenMove) && !IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else if (!IS_MOVE_STATUS(chosenMove) && IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove))
|
else if (!IS_MOVE_STATUS(chosenMove) && IS_MOVE_STATUS(gBattleStruct->zmove.chosenZMove))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!IS_MOVE_STATUS(chosenMove) && AI_CalcDamage(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE) >= gBattleMons[battlerDef].hp)
|
if (!IS_MOVE_STATUS(chosenMove) && AI_CalcDamage(chosenMove, battlerAtk, battlerDef, &effectiveness, FALSE) >= gBattleMons[battlerDef].hp)
|
||||||
return FALSE; // don't waste damaging z move if can otherwise faint target
|
return FALSE; // don't waste damaging z move if can otherwise faint target
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
|
|||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
bool32 hideHpBoxes = (tableId == MOVE_TRANSFORM) ? FALSE : TRUE;
|
bool32 hideHpBoxes = (tableId == MOVE_TRANSFORM) ? FALSE : TRUE;
|
||||||
|
|
||||||
if (!isMoveAnim)
|
if (!isMoveAnim)
|
||||||
{
|
{
|
||||||
switch (tableId)
|
switch (tableId)
|
||||||
|
@ -6798,7 +6798,7 @@ static const union AffineAnimCmd sCompressTargetHorizontallyAffineAnimCmds[] =
|
|||||||
static void AnimTask_CompressTargetStep(u8 taskId)
|
static void AnimTask_CompressTargetStep(u8 taskId)
|
||||||
{
|
{
|
||||||
struct Task* task = &gTasks[taskId];
|
struct Task* task = &gTasks[taskId];
|
||||||
|
|
||||||
if (!RunAffineAnimFromTaskData(task))
|
if (!RunAffineAnimFromTaskData(task))
|
||||||
DestroyAnimVisualTask(taskId);
|
DestroyAnimVisualTask(taskId);
|
||||||
}
|
}
|
||||||
|
@ -888,7 +888,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
|||||||
spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void
|
spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void
|
||||||
else
|
else
|
||||||
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond
|
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond
|
||||||
|
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
|
||||||
@ -914,7 +914,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId)
|
|||||||
spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void
|
spriteId = CreateSprite(&gDarkVoidBlackHoleTemplate, baseX, baseY, 55); //dark void
|
||||||
else
|
else
|
||||||
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond
|
spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); //destiny bond
|
||||||
|
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
x = 48;
|
x = 48;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -817,7 +817,7 @@ static void SwitchToAiPointsView(u8 taskId)
|
|||||||
GetStructPtr(taskId)->aiViewState = 0;
|
GetStructPtr(taskId)->aiViewState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u8 *const sAiInfoItemNames[] =
|
static const u8 *const sAiInfoItemNames[] =
|
||||||
{
|
{
|
||||||
sText_Ability,
|
sText_Ability,
|
||||||
sText_HeldItem,
|
sText_HeldItem,
|
||||||
@ -829,13 +829,13 @@ static void PutAiInfoText(struct BattleDebugMenu *data)
|
|||||||
u8 *text = malloc(0x50);
|
u8 *text = malloc(0x50);
|
||||||
|
|
||||||
FillWindowPixelBuffer(data->aiMovesWindowId, 0x11);
|
FillWindowPixelBuffer(data->aiMovesWindowId, 0x11);
|
||||||
|
|
||||||
// item names
|
// item names
|
||||||
for (i = 0; i < ARRAY_COUNT(sAiInfoItemNames); i++)
|
for (i = 0; i < ARRAY_COUNT(sAiInfoItemNames); i++)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(data->aiMovesWindowId, 1, sAiInfoItemNames[i], 3, i * 15, 0, NULL);
|
AddTextPrinterParameterized(data->aiMovesWindowId, 1, sAiInfoItemNames[i], 3, i * 15, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// items info
|
// items info
|
||||||
for (i = 0; i < gBattlersCount; i++)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
{
|
{
|
||||||
@ -2004,7 +2004,7 @@ static const u8 sText_HoldEffectRoomService[] = _("Room Service");
|
|||||||
static const u8 sText_HoldEffectBlunderPolicy[] = _("Blunder Policy");
|
static const u8 sText_HoldEffectBlunderPolicy[] = _("Blunder Policy");
|
||||||
static const u8 sText_HoldEffectHeavyDutyBoots[] = _("Heavy Duty Boots");
|
static const u8 sText_HoldEffectHeavyDutyBoots[] = _("Heavy Duty Boots");
|
||||||
static const u8 sText_HoldEffectThroatSpray[] = _("Throat Spray");
|
static const u8 sText_HoldEffectThroatSpray[] = _("Throat Spray");
|
||||||
static const u8 *const sHoldEffectNames[] =
|
static const u8 *const sHoldEffectNames[] =
|
||||||
{
|
{
|
||||||
[HOLD_EFFECT_NONE] = sText_HoldEffectNone,
|
[HOLD_EFFECT_NONE] = sText_HoldEffectNone,
|
||||||
[HOLD_EFFECT_RESTORE_HP] = sText_HoldEffectRestoreHp,
|
[HOLD_EFFECT_RESTORE_HP] = sText_HoldEffectRestoreHp,
|
||||||
|
@ -3123,7 +3123,7 @@ void CreateAbilityPopUp(u8 battlerId, u32 ability, bool32 isDoubleBattle)
|
|||||||
const s16 (*coords)[2];
|
const s16 (*coords)[2];
|
||||||
u8 spriteId1, spriteId2, battlerPosition, taskId;
|
u8 spriteId1, spriteId2, battlerPosition, taskId;
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (gBattleScripting.abilityPopupOverwrite != 0)
|
if (gBattleScripting.abilityPopupOverwrite != 0)
|
||||||
|
@ -1383,7 +1383,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
|||||||
[STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy,
|
[STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gZEffectStringIds[] =
|
const u16 gZEffectStringIds[] =
|
||||||
{
|
{
|
||||||
[B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS,
|
[B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS,
|
||||||
[B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP,
|
[B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP,
|
||||||
@ -1394,7 +1394,7 @@ const u16 gZEffectStringIds[] =
|
|||||||
[B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP,
|
[B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gMentalHerbCureStringIds[] =
|
const u16 gMentalHerbCureStringIds[] =
|
||||||
{
|
{
|
||||||
[B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION,
|
[B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION,
|
||||||
[B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS,
|
[B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS,
|
||||||
@ -1409,7 +1409,7 @@ const u16 gTerrainStringIds[] =
|
|||||||
STRINGID_TERRAINBECOMESMISTY, STRINGID_TERRAINBECOMESGRASSY, STRINGID_TERRAINBECOMESELECTRIC, STRINGID_TERRAINBECOMESPSYCHIC, STRINGID_TERRAINREMOVED,
|
STRINGID_TERRAINBECOMESMISTY, STRINGID_TERRAINBECOMESGRASSY, STRINGID_TERRAINBECOMESELECTRIC, STRINGID_TERRAINBECOMESPSYCHIC, STRINGID_TERRAINREMOVED,
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 gTerrainEndingStringIds[] =
|
const u16 gTerrainEndingStringIds[] =
|
||||||
{
|
{
|
||||||
STRINGID_MISTYTERRAINENDS, STRINGID_GRASSYTERRAINENDS, STRINGID_ELECTRICTERRAINENDS, STRINGID_PSYCHICTERRAINENDS
|
STRINGID_MISTYTERRAINENDS, STRINGID_GRASSYTERRAINENDS, STRINGID_ELECTRICTERRAINENDS, STRINGID_PSYCHICTERRAINENDS
|
||||||
};
|
};
|
||||||
|
@ -165,23 +165,23 @@ bool32 IsViableZMove(u8 battlerId, u16 move)
|
|||||||
u32 item;
|
u32 item;
|
||||||
u16 holdEffect;
|
u16 holdEffect;
|
||||||
u16 species;
|
u16 species;
|
||||||
|
|
||||||
if (gBattleStruct->zmove.used[battlerId])
|
if (gBattleStruct->zmove.used[battlerId])
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
species = gBattleMons[battlerId].species;
|
species = gBattleMons[battlerId].species;
|
||||||
item = gBattleMons[battlerId].item;
|
item = gBattleMons[battlerId].item;
|
||||||
if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FRONTIER))
|
if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FRONTIER))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
#ifdef ITEM_Z_RING
|
#ifdef ITEM_Z_RING
|
||||||
if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_RING, 1))
|
if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_RING, 1))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mega->alreadyEvolved[battlerPosition])
|
if (mega->alreadyEvolved[battlerPosition])
|
||||||
return FALSE; // Trainer has mega evolved
|
return FALSE; // Trainer has mega evolved
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
{
|
{
|
||||||
if (IsPartnerMonFromSameTrainer(battlerId) && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battlerId)])))
|
if (IsPartnerMonFromSameTrainer(battlerId) && (mega->alreadyEvolved[partnerPosition] || (mega->toEvolve & gBitTable[BATTLE_PARTNER(battlerId)])))
|
||||||
@ -194,10 +194,10 @@ bool32 IsViableZMove(u8 battlerId, u16 move)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (item == ITEM_ENIGMA_BERRY)
|
if (item == ITEM_ENIGMA_BERRY)
|
||||||
return FALSE; // HoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
return FALSE; // HoldEffect = gEnigmaBerries[battlerId].holdEffect;
|
||||||
else
|
else
|
||||||
holdEffect = ItemId_GetHoldEffect(item);
|
holdEffect = ItemId_GetHoldEffect(item);
|
||||||
|
|
||||||
#ifdef ITEM_ULTRANECROZIUM_Z
|
#ifdef ITEM_ULTRANECROZIUM_Z
|
||||||
if (holdEffect == HOLD_EFFECT_Z_CRYSTAL || item == ITEM_ULTRANECROZIUM_Z)
|
if (holdEffect == HOLD_EFFECT_Z_CRYSTAL || item == ITEM_ULTRANECROZIUM_Z)
|
||||||
#else
|
#else
|
||||||
@ -210,18 +210,18 @@ bool32 IsViableZMove(u8 battlerId, u16 move)
|
|||||||
gBattleStruct->zmove.chosenZMove = zMove; // Signature z move exists
|
gBattleStruct->zmove.chosenZMove = zMove; // Signature z move exists
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gBattleMoves[move].type == ItemId_GetSecondaryId(item))
|
if (move != MOVE_NONE && zMove != MOVE_Z_STATUS && gBattleMoves[move].type == ItemId_GetSecondaryId(item))
|
||||||
{
|
{
|
||||||
if (IS_MOVE_STATUS(move))
|
if (IS_MOVE_STATUS(move))
|
||||||
gBattleStruct->zmove.chosenZMove = move;
|
gBattleStruct->zmove.chosenZMove = move;
|
||||||
else
|
else
|
||||||
gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battlerId);
|
gBattleStruct->zmove.chosenZMove = GetTypeBasedZMove(move, battlerId);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,7 +248,7 @@ bool32 IsZMoveUsable(u8 battlerId, u16 moveIndex)
|
|||||||
bool32 TryChangeZIndicator(u8 battlerId, u8 moveIndex)
|
bool32 TryChangeZIndicator(u8 battlerId, u8 moveIndex)
|
||||||
{
|
{
|
||||||
bool32 viableZMove = IsZMoveUsable(battlerId, moveIndex);
|
bool32 viableZMove = IsZMoveUsable(battlerId, moveIndex);
|
||||||
|
|
||||||
if (gBattleStruct->zmove.viable && !viableZMove)
|
if (gBattleStruct->zmove.viable && !viableZMove)
|
||||||
HideZMoveTriggerSprite(); // Was a viable z move, now is not -> slide out
|
HideZMoveTriggerSprite(); // Was a viable z move, now is not -> slide out
|
||||||
else if (!gBattleStruct->zmove.viable && viableZMove)
|
else if (!gBattleStruct->zmove.viable && viableZMove)
|
||||||
@ -271,11 +271,11 @@ bool32 TryChangeZIndicator(u8 battlerId, u8 moveIndex)
|
|||||||
void CreateZMoveTriggerSprite(u8 battlerId, bool8 viable)
|
void CreateZMoveTriggerSprite(u8 battlerId, bool8 viable)
|
||||||
{
|
{
|
||||||
s16 x, y;
|
s16 x, y;
|
||||||
|
|
||||||
LoadSpritePalette(&sSpritePalette_ZMoveTrigger);
|
LoadSpritePalette(&sSpritePalette_ZMoveTrigger);
|
||||||
if (GetSpriteTileStartByTag(TAG_ZMOVE_TRIGGER_TILE) == 0xFFFF)
|
if (GetSpriteTileStartByTag(TAG_ZMOVE_TRIGGER_TILE) == 0xFFFF)
|
||||||
LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_ZMoveTrigger);
|
LoadCompressedSpriteSheetUsingHeap(&sSpriteSheet_ZMoveTrigger);
|
||||||
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||||
{
|
{
|
||||||
x = gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_Z_TRIGGER_POS_X_SLIDE;
|
x = gSprites[gHealthboxSpriteIds[battlerId]].x - DOUBLES_Z_TRIGGER_POS_X_SLIDE;
|
||||||
@ -286,10 +286,10 @@ void CreateZMoveTriggerSprite(u8 battlerId, bool8 viable)
|
|||||||
x = gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_Z_TRIGGER_POS_X_SLIDE;
|
x = gSprites[gHealthboxSpriteIds[battlerId]].x - SINGLES_Z_TRIGGER_POS_X_SLIDE;
|
||||||
y = gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF, 0;
|
y = gSprites[gHealthboxSpriteIds[battlerId]].y - SINGLES_Z_TRIGGER_POS_Y_DIFF, 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBattleStruct->zmove.triggerSpriteId == 0xFF)
|
if (gBattleStruct->zmove.triggerSpriteId == 0xFF)
|
||||||
gBattleStruct->zmove.triggerSpriteId = CreateSprite(&sSpriteTemplate_ZMoveTrigger, x, y, 0);
|
gBattleStruct->zmove.triggerSpriteId = CreateSprite(&sSpriteTemplate_ZMoveTrigger, x, y, 0);
|
||||||
|
|
||||||
gSprites[gBattleStruct->zmove.triggerSpriteId].tBattler = battlerId;
|
gSprites[gBattleStruct->zmove.triggerSpriteId].tBattler = battlerId;
|
||||||
gSprites[gBattleStruct->zmove.triggerSpriteId].tHide = (viable == TRUE) ? FALSE : TRUE;
|
gSprites[gBattleStruct->zmove.triggerSpriteId].tHide = (viable == TRUE) ? FALSE : TRUE;
|
||||||
}
|
}
|
||||||
@ -375,14 +375,14 @@ void DestroyZMoveTriggerSprite(void)
|
|||||||
FreeSpriteTilesByTag(TAG_ZMOVE_TRIGGER_TILE);
|
FreeSpriteTilesByTag(TAG_ZMOVE_TRIGGER_TILE);
|
||||||
if (gBattleStruct->zmove.triggerSpriteId != 0xFF)
|
if (gBattleStruct->zmove.triggerSpriteId != 0xFF)
|
||||||
DestroySprite(&gSprites[gBattleStruct->zmove.triggerSpriteId]);
|
DestroySprite(&gSprites[gBattleStruct->zmove.triggerSpriteId]);
|
||||||
|
|
||||||
gBattleStruct->zmove.triggerSpriteId = 0xFF;
|
gBattleStruct->zmove.triggerSpriteId = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u16 GetSignatureZMove(u16 move, u16 species, u16 item)
|
static u16 GetSignatureZMove(u16 move, u16 species, u16 item)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
// Check signature z move
|
// Check signature z move
|
||||||
for (i = 0; i < ARRAY_COUNT(sSignatureZMoves); ++i)
|
for (i = 0; i < ARRAY_COUNT(sSignatureZMoves); ++i)
|
||||||
{
|
{
|
||||||
@ -396,7 +396,7 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item)
|
|||||||
static u16 GetTypeBasedZMove(u16 move, u8 battler)
|
static u16 GetTypeBasedZMove(u16 move, u8 battler)
|
||||||
{
|
{
|
||||||
u8 moveType = gBattleMoves[move].type;
|
u8 moveType = gBattleMoves[move].type;
|
||||||
|
|
||||||
// Get z move from type
|
// Get z move from type
|
||||||
if (moveType < TYPE_FIRE)
|
if (moveType < TYPE_FIRE)
|
||||||
return MOVE_BREAKNECK_BLITZ + moveType;
|
return MOVE_BREAKNECK_BLITZ + moveType;
|
||||||
@ -411,7 +411,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove)
|
|||||||
u32 i;
|
u32 i;
|
||||||
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]);
|
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]);
|
||||||
u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]];
|
u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]];
|
||||||
|
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
gBattleStruct->zmove.viewing = TRUE;
|
gBattleStruct->zmove.viewing = TRUE;
|
||||||
if (zmove != MOVE_NONE)
|
if (zmove != MOVE_NONE)
|
||||||
@ -421,15 +421,15 @@ bool32 MoveSelectionDisplayZMove(u16 zmove)
|
|||||||
{
|
{
|
||||||
MoveSelectionDestroyCursorAt(i);
|
MoveSelectionDestroyCursorAt(i);
|
||||||
StringCopy(gDisplayedStringBattle, gText_EmptyString2);
|
StringCopy(gDisplayedStringBattle, gText_EmptyString2);
|
||||||
BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
|
BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_MOVE_STATUS(move))
|
if (IS_MOVE_STATUS(move))
|
||||||
{
|
{
|
||||||
u8 zEffect = gBattleMoves[move].zMoveEffect;
|
u8 zEffect = gBattleMoves[move].zMoveEffect;
|
||||||
|
|
||||||
gDisplayedStringBattle[0] = EOS;
|
gDisplayedStringBattle[0] = EOS;
|
||||||
|
|
||||||
if (zEffect == Z_EFFECT_CURSE)
|
if (zEffect == Z_EFFECT_CURSE)
|
||||||
{
|
{
|
||||||
if (moveInfo->monType1 == TYPE_GHOST || moveInfo->monType2 == TYPE_GHOST || moveInfo->monType3 == TYPE_GHOST)
|
if (moveInfo->monType1 == TYPE_GHOST || moveInfo->monType2 == TYPE_GHOST || moveInfo->monType3 == TYPE_GHOST)
|
||||||
@ -437,7 +437,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove)
|
|||||||
else
|
else
|
||||||
zEffect = Z_EFFECT_ATK_UP_1;
|
zEffect = Z_EFFECT_ATK_UP_1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (zEffect)
|
switch (zEffect)
|
||||||
{
|
{
|
||||||
case Z_EFFECT_RESET_STATS:
|
case Z_EFFECT_RESET_STATS:
|
||||||
@ -501,7 +501,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove)
|
|||||||
ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gDisplayedStringBattle + 4);
|
ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gDisplayedStringBattle + 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_3);
|
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_3);
|
||||||
gDisplayedStringBattle[0] = CHAR_Z;
|
gDisplayedStringBattle[0] = CHAR_Z;
|
||||||
gDisplayedStringBattle[1] = CHAR_HYPHEN;
|
gDisplayedStringBattle[1] = CHAR_HYPHEN;
|
||||||
@ -584,11 +584,11 @@ void SetZEffect(void)
|
|||||||
else
|
else
|
||||||
gBattleStruct->zmove.effect = Z_EFFECT_ATK_UP_1;
|
gBattleStruct->zmove.effect = Z_EFFECT_ATK_UP_1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattleScripting.savedStatChanger = gBattleScripting.statChanger; // Save used move's stat changer (e.g. for Z-Growl)
|
gBattleScripting.savedStatChanger = gBattleScripting.statChanger; // Save used move's stat changer (e.g. for Z-Growl)
|
||||||
gBattleScripting.battler = gBattlerAttacker;
|
gBattleScripting.battler = gBattlerAttacker;
|
||||||
|
|
||||||
switch (gBattleStruct->zmove.effect)
|
switch (gBattleStruct->zmove.effect)
|
||||||
{
|
{
|
||||||
case Z_EFFECT_RESET_STATS:
|
case Z_EFFECT_RESET_STATS:
|
||||||
for (i = 0; i < NUM_BATTLE_STATS - 1; i++)
|
for (i = 0; i < NUM_BATTLE_STATS - 1; i++)
|
||||||
@ -645,7 +645,7 @@ void SetZEffect(void)
|
|||||||
gBattlescriptCurrInstr = BattleScript_ZEffectPrintString;
|
gBattlescriptCurrInstr = BattleScript_ZEffectPrintString;
|
||||||
break;
|
break;
|
||||||
case Z_EFFECT_ATK_UP_1 ... Z_EFFECT_EVSN_UP_1:
|
case Z_EFFECT_ATK_UP_1 ... Z_EFFECT_EVSN_UP_1:
|
||||||
SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE);
|
SET_STATCHANGER(gBattleStruct->zmove.effect - Z_EFFECT_ATK_UP_1 + 1, 1, FALSE);
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH);
|
BattleScriptPush(gBattlescriptCurrInstr + Z_EFFECT_BS_LENGTH);
|
||||||
gBattlescriptCurrInstr = BattleScript_StatUpZMove;
|
gBattlescriptCurrInstr = BattleScript_StatUpZMove;
|
||||||
break;
|
break;
|
||||||
@ -663,7 +663,7 @@ void SetZEffect(void)
|
|||||||
gBattlescriptCurrInstr += 3;
|
gBattlescriptCurrInstr += 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattleStruct->zmove.zStatusActive = FALSE;
|
gBattleStruct->zmove.zStatusActive = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11881,7 +11881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
.zMovePower = 180,
|
.zMovePower = 180,
|
||||||
.zMoveEffect = Z_EFFECT_NONE,
|
.zMoveEffect = Z_EFFECT_NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
[MOVE_ZIPPY_ZAP] =
|
[MOVE_ZIPPY_ZAP] =
|
||||||
{
|
{
|
||||||
#if B_UPDATED_MOVE_DATA >= GEN_8
|
#if B_UPDATED_MOVE_DATA >= GEN_8
|
||||||
@ -12193,7 +12193,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
.zMovePower = 120,
|
.zMovePower = 120,
|
||||||
.zMoveEffect = Z_EFFECT_NONE,
|
.zMoveEffect = Z_EFFECT_NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
[MOVE_DYNAMAX_CANNON] =
|
[MOVE_DYNAMAX_CANNON] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_DYNAMAX_DOUBLE_DMG,
|
.effect = EFFECT_DYNAMAX_DOUBLE_DMG,
|
||||||
@ -13105,7 +13105,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
|||||||
.zMovePower = 100,
|
.zMovePower = 100,
|
||||||
.zMoveEffect = Z_EFFECT_NONE,
|
.zMoveEffect = Z_EFFECT_NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
[MOVE_THUNDER_CAGE] =
|
[MOVE_THUNDER_CAGE] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_TRAP,
|
.effect = EFFECT_TRAP,
|
||||||
|
@ -859,7 +859,7 @@
|
|||||||
.bodyColor = color, \
|
.bodyColor = color, \
|
||||||
.noFlip = FALSE, \
|
.noFlip = FALSE, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MORPEKO_BASE_STATS \
|
#define MORPEKO_BASE_STATS \
|
||||||
{ \
|
{ \
|
||||||
.baseHP = 58, \
|
.baseHP = 58, \
|
||||||
@ -883,7 +883,7 @@
|
|||||||
.bodyColor = BODY_COLOR_YELLOW, \
|
.bodyColor = BODY_COLOR_YELLOW, \
|
||||||
.noFlip = FALSE, \
|
.noFlip = FALSE, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ZARUDE_BASE_STATS \
|
#define ZARUDE_BASE_STATS \
|
||||||
{ \
|
{ \
|
||||||
.baseHP = 105, \
|
.baseHP = 105, \
|
||||||
@ -22755,7 +22755,7 @@ const struct BaseStats gBaseStats[] =
|
|||||||
.bodyColor = BODY_COLOR_BROWN,
|
.bodyColor = BODY_COLOR_BROWN,
|
||||||
.noFlip = FALSE,
|
.noFlip = FALSE,
|
||||||
},
|
},
|
||||||
|
|
||||||
[SPECIES_BASCULEGION] =
|
[SPECIES_BASCULEGION] =
|
||||||
{
|
{
|
||||||
.baseHP = 120,
|
.baseHP = 120,
|
||||||
@ -26464,7 +26464,7 @@ const struct BaseStats gBaseStats[] =
|
|||||||
[SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE),
|
[SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE),
|
||||||
[SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE),
|
[SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE),
|
||||||
[SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_BASE_STATS(BODY_COLOR_PURPLE),
|
[SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_BASE_STATS(BODY_COLOR_PURPLE),
|
||||||
|
|
||||||
[SPECIES_MIMIKYU_BUSTED] = MIMIKYU_BASE_STATS,
|
[SPECIES_MIMIKYU_BUSTED] = MIMIKYU_BASE_STATS,
|
||||||
|
|
||||||
[SPECIES_NECROZMA_DUSK_MANE] =
|
[SPECIES_NECROZMA_DUSK_MANE] =
|
||||||
@ -26563,7 +26563,7 @@ const struct BaseStats gBaseStats[] =
|
|||||||
[SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW),
|
[SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW),
|
||||||
[SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_BROWN),
|
[SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_BROWN),
|
||||||
[SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW),
|
[SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW),
|
||||||
|
|
||||||
[SPECIES_EISCUE_NOICE_FACE] =
|
[SPECIES_EISCUE_NOICE_FACE] =
|
||||||
{
|
{
|
||||||
.baseHP = 75,
|
.baseHP = 75,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] =
|
const struct FormChange *const gFormChangeTablePointers[NUM_SPECIES] =
|
||||||
{
|
{
|
||||||
#if P_NEW_POKEMON == TRUE
|
#if P_NEW_POKEMON == TRUE
|
||||||
[SPECIES_GIRATINA] = sGiratinaFormChangeTable,
|
[SPECIES_GIRATINA] = sGiratinaFormChangeTable,
|
||||||
|
@ -19,8 +19,8 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] =
|
|||||||
[SPECIES_MEOWTH] = sMeowthFormSpeciesIdTable,
|
[SPECIES_MEOWTH] = sMeowthFormSpeciesIdTable,
|
||||||
[SPECIES_PERSIAN] = sPersianFormSpeciesIdTable,
|
[SPECIES_PERSIAN] = sPersianFormSpeciesIdTable,
|
||||||
[SPECIES_ALAKAZAM] = sAlakazamFormSpeciesIdTable,
|
[SPECIES_ALAKAZAM] = sAlakazamFormSpeciesIdTable,
|
||||||
[SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable,
|
[SPECIES_GROWLITHE] = sGrowlitheFormSpeciesIdTable,
|
||||||
[SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable,
|
[SPECIES_ARCANINE] = sArcanineFormSpeciesIdTable,
|
||||||
[SPECIES_GEODUDE] = sGeodudeFormSpeciesIdTable,
|
[SPECIES_GEODUDE] = sGeodudeFormSpeciesIdTable,
|
||||||
[SPECIES_GRAVELER] = sGravelerFormSpeciesIdTable,
|
[SPECIES_GRAVELER] = sGravelerFormSpeciesIdTable,
|
||||||
[SPECIES_GOLEM] = sGolemFormSpeciesIdTable,
|
[SPECIES_GOLEM] = sGolemFormSpeciesIdTable,
|
||||||
@ -113,7 +113,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] =
|
|||||||
[SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable,
|
[SPECIES_LILLIGANT] = sLilligantFormSpeciesIdTable,
|
||||||
[SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable,
|
[SPECIES_DARUMAKA] = sDarumakaFormSpeciesIdTable,
|
||||||
[SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable,
|
[SPECIES_DARMANITAN] = sDarmanitanFormSpeciesIdTable,
|
||||||
[SPECIES_YAMASK] = sYamaskFormSpeciesIdTable,
|
[SPECIES_YAMASK] = sYamaskFormSpeciesIdTable,
|
||||||
[SPECIES_ZORUA] = sZoruaFormSpeciesIdTable,
|
[SPECIES_ZORUA] = sZoruaFormSpeciesIdTable,
|
||||||
[SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable,
|
[SPECIES_ZOROARK] = sZoroarkFormSpeciesIdTable,
|
||||||
[SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable,
|
[SPECIES_DEERLING] = sDeerlingFormSpeciesIdTable,
|
||||||
@ -139,7 +139,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] =
|
|||||||
[SPECIES_GOODRA] = sGoodraFormSpeciesIdTable,
|
[SPECIES_GOODRA] = sGoodraFormSpeciesIdTable,
|
||||||
[SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable,
|
[SPECIES_PUMPKABOO] = sPumpkabooFormSpeciesIdTable,
|
||||||
[SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable,
|
[SPECIES_GOURGEIST] = sGourgeistFormSpeciesIdTable,
|
||||||
[SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable,
|
[SPECIES_AVALUGG] = sAvaluggFormSpeciesIdTable,
|
||||||
[SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable,
|
[SPECIES_XERNEAS] = sXerneasFormSpeciesIdTable,
|
||||||
[SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable,
|
[SPECIES_ZYGARDE] = sZygardeFormSpeciesIdTable,
|
||||||
[SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable,
|
[SPECIES_DIANCIE] = sDiancieFormSpeciesIdTable,
|
||||||
@ -394,7 +394,7 @@ const u16 *const gFormSpeciesIdTables[NUM_SPECIES] =
|
|||||||
[SPECIES_TORNADUS_THERIAN] = sTornadusFormSpeciesIdTable,
|
[SPECIES_TORNADUS_THERIAN] = sTornadusFormSpeciesIdTable,
|
||||||
[SPECIES_THUNDURUS_THERIAN] = sThundurusFormSpeciesIdTable,
|
[SPECIES_THUNDURUS_THERIAN] = sThundurusFormSpeciesIdTable,
|
||||||
[SPECIES_LANDORUS_THERIAN] = sLandorusFormSpeciesIdTable,
|
[SPECIES_LANDORUS_THERIAN] = sLandorusFormSpeciesIdTable,
|
||||||
[SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable,
|
[SPECIES_ENAMORUS_THERIAN] = sEnamorusFormSpeciesIdTable,
|
||||||
// Kyurem
|
// Kyurem
|
||||||
[SPECIES_KYUREM_WHITE] = sKyuremFormSpeciesIdTable,
|
[SPECIES_KYUREM_WHITE] = sKyuremFormSpeciesIdTable,
|
||||||
[SPECIES_KYUREM_BLACK] = sKyuremFormSpeciesIdTable,
|
[SPECIES_KYUREM_BLACK] = sKyuremFormSpeciesIdTable,
|
||||||
|
@ -18095,8 +18095,8 @@ static const struct LevelUpMove sWyrdeerLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE(15, MOVE_CALM_MIND),
|
LEVEL_UP_MOVE(15, MOVE_CALM_MIND),
|
||||||
//LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH),
|
//LEVEL_UP_MOVE(21, MOVE_PSYSHIELD_BASH),
|
||||||
LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY),
|
LEVEL_UP_MOVE(29, MOVE_EXTRASENSORY),
|
||||||
//LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT),
|
//LEVEL_UP_MOVE(37, MOVE_ZEN_HEADBUTT),
|
||||||
LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE),
|
LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18105,7 +18105,7 @@ static const struct LevelUpMove sKleavorLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND),
|
LEVEL_UP_MOVE( 6, MOVE_SILVER_WIND),
|
||||||
LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE),
|
LEVEL_UP_MOVE(11, MOVE_AERIAL_ACE),
|
||||||
LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT),
|
LEVEL_UP_MOVE(14, MOVE_DOUBLE_HIT),
|
||||||
//LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK),
|
//LEVEL_UP_MOVE(14, MOVE_STEALTH_ROCK),
|
||||||
//LEVEL_UP_MOVE(18, MOVE_AIR_SLASH),
|
//LEVEL_UP_MOVE(18, MOVE_AIR_SLASH),
|
||||||
LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE),
|
LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE),
|
||||||
//LEVEL_UP_MOVE(29, MOVE_STONE_AXE),
|
//LEVEL_UP_MOVE(29, MOVE_STONE_AXE),
|
||||||
@ -18121,8 +18121,8 @@ static const struct LevelUpMove sUrsalunaLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
||||||
//LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH),
|
//LEVEL_UP_MOVE(25, MOVE_PLAY_ROUGH),
|
||||||
//LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER),
|
//LEVEL_UP_MOVE(34, MOVE_HIGH_HORSEPOWER),
|
||||||
LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE),
|
LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE),
|
||||||
//LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH),
|
//LEVEL_UP_MOVE(47, MOVE_HEADLONG_RUSH),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18135,7 +18135,7 @@ static const struct LevelUpMove sBasculegionLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE(25, MOVE_CRUNCH),
|
LEVEL_UP_MOVE(25, MOVE_CRUNCH),
|
||||||
LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL),
|
LEVEL_UP_MOVE(25, MOVE_SHADOW_BALL),
|
||||||
//LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH),
|
//LEVEL_UP_MOVE(34, MOVE_WAVE_CRASH),
|
||||||
LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE),
|
LEVEL_UP_MOVE(43, MOVE_DOUBLE_EDGE),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18145,9 +18145,9 @@ static const struct LevelUpMove sSneaslerLevelUpLearnset[] = {
|
|||||||
//LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW),
|
//LEVEL_UP_MOVE(11, MOVE_DIRE_CLAW),
|
||||||
LEVEL_UP_MOVE(11, MOVE_SWIFT),
|
LEVEL_UP_MOVE(11, MOVE_SWIFT),
|
||||||
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
||||||
//LEVEL_UP_MOVE(25, MOVE_POISON_JAB),
|
//LEVEL_UP_MOVE(25, MOVE_POISON_JAB),
|
||||||
LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE),
|
LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE),
|
||||||
//LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT),
|
//LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18938,7 +18938,7 @@ static const struct LevelUpMove sGrowlitheHisuianLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE( 9, MOVE_BITE),
|
LEVEL_UP_MOVE( 9, MOVE_BITE),
|
||||||
//LEVEL_UP_MOVE(15, MOVE_FIRE_FANG),
|
//LEVEL_UP_MOVE(15, MOVE_FIRE_FANG),
|
||||||
LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE),
|
LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE),
|
||||||
LEVEL_UP_MOVE(29, MOVE_CRUNCH),
|
LEVEL_UP_MOVE(29, MOVE_CRUNCH),
|
||||||
LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
|
LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
|
||||||
//LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ),
|
//LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
@ -18951,7 +18951,7 @@ static const struct LevelUpMove sArcanineHisuianLevelUpLearnset[] = {
|
|||||||
//LEVEL_UP_MOVE(15, MOVE_FIRE_FANG),
|
//LEVEL_UP_MOVE(15, MOVE_FIRE_FANG),
|
||||||
LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE),
|
LEVEL_UP_MOVE(21, MOVE_ROCK_SLIDE),
|
||||||
LEVEL_UP_MOVE(29, MOVE_CRUNCH),
|
LEVEL_UP_MOVE(29, MOVE_CRUNCH),
|
||||||
//LEVEL_UP_MOVE(29, MOVE_RAGING_FURY),
|
//LEVEL_UP_MOVE(29, MOVE_RAGING_FURY),
|
||||||
LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
|
LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE),
|
||||||
//LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ),
|
//LEVEL_UP_MOVE(47, MOVE_FLARE_BLITZ),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
@ -19015,9 +19015,9 @@ static const struct LevelUpMove sSneaselHisuianLevelUpLearnset[] = {
|
|||||||
LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH),
|
LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH),
|
||||||
LEVEL_UP_MOVE(11, MOVE_SWIFT),
|
LEVEL_UP_MOVE(11, MOVE_SWIFT),
|
||||||
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
LEVEL_UP_MOVE(18, MOVE_SLASH),
|
||||||
//LEVEL_UP_MOVE(25, MOVE_POISON_JAB),
|
//LEVEL_UP_MOVE(25, MOVE_POISON_JAB),
|
||||||
LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE),
|
LEVEL_UP_MOVE(34, MOVE_SWORDS_DANCE),
|
||||||
//LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT),
|
//LEVEL_UP_MOVE(43, MOVE_CLOSE_COMBAT),
|
||||||
LEVEL_UP_END
|
LEVEL_UP_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -19116,7 +19116,7 @@ static const struct LevelUpMove sGoodraHisuianLevelUpLearnset[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = {
|
static const struct LevelUpMove sAvaluggHisuianLevelUpLearnset[] = {
|
||||||
//LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE),
|
//LEVEL_UP_MOVE( 0, MOVE_ROCK_SLIDE),
|
||||||
LEVEL_UP_MOVE( 1, MOVE_TACKLE),
|
LEVEL_UP_MOVE( 1, MOVE_TACKLE),
|
||||||
LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW),
|
LEVEL_UP_MOVE( 5, MOVE_POWDER_SNOW),
|
||||||
//LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD),
|
//LEVEL_UP_MOVE( 9, MOVE_ICE_SHARD),
|
||||||
|
@ -1423,7 +1423,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
NATIONAL_DEX_ESPEON,
|
NATIONAL_DEX_ESPEON,
|
||||||
NATIONAL_DEX_FROSLASS,
|
NATIONAL_DEX_FROSLASS,
|
||||||
NATIONAL_DEX_UMBREON,
|
NATIONAL_DEX_UMBREON,
|
||||||
//NATIONAL_DEX_SNEASEL, //Hisuian Form
|
//NATIONAL_DEX_SNEASEL, //Hisuian Form
|
||||||
NATIONAL_DEX_HUNTAIL,
|
NATIONAL_DEX_HUNTAIL,
|
||||||
NATIONAL_DEX_CARNIVINE,
|
NATIONAL_DEX_CARNIVINE,
|
||||||
NATIONAL_DEX_WATCHOG,
|
NATIONAL_DEX_WATCHOG,
|
||||||
@ -1577,7 +1577,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
NATIONAL_DEX_GLISCOR,
|
NATIONAL_DEX_GLISCOR,
|
||||||
NATIONAL_DEX_DUBWOOL,
|
NATIONAL_DEX_DUBWOOL,
|
||||||
NATIONAL_DEX_SNEASLER,
|
NATIONAL_DEX_SNEASLER,
|
||||||
//NATIONAL_DEX_BRAVIARY, //Hisuian Form
|
//NATIONAL_DEX_BRAVIARY, //Hisuian Form
|
||||||
NATIONAL_DEX_PURUGLY,
|
NATIONAL_DEX_PURUGLY,
|
||||||
//NATIONAL_DEX_MANECTRIC, // Mega
|
//NATIONAL_DEX_MANECTRIC, // Mega
|
||||||
NATIONAL_DEX_GOTHITELLE,
|
NATIONAL_DEX_GOTHITELLE,
|
||||||
@ -1600,7 +1600,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
NATIONAL_DEX_HAKAMO_O,
|
NATIONAL_DEX_HAKAMO_O,
|
||||||
NATIONAL_DEX_ALAKAZAM,
|
NATIONAL_DEX_ALAKAZAM,
|
||||||
NATIONAL_DEX_HITMONTOP,
|
NATIONAL_DEX_HITMONTOP,
|
||||||
NATIONAL_DEX_ENAMORUS,
|
NATIONAL_DEX_ENAMORUS,
|
||||||
NATIONAL_DEX_GARDEVOIR,
|
NATIONAL_DEX_GARDEVOIR,
|
||||||
NATIONAL_DEX_KELDEO,
|
NATIONAL_DEX_KELDEO,
|
||||||
NATIONAL_DEX_GRANBULL,
|
NATIONAL_DEX_GRANBULL,
|
||||||
@ -1660,7 +1660,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
NATIONAL_DEX_HEATMOR,
|
NATIONAL_DEX_HEATMOR,
|
||||||
//NATIONAL_DEX_LURANTIS, // Totem-sized
|
//NATIONAL_DEX_LURANTIS, // Totem-sized
|
||||||
//NATIONAL_DEX_ZAPDOS, // Galarian Form
|
//NATIONAL_DEX_ZAPDOS, // Galarian Form
|
||||||
//NATIONAL_DEX_SAMUROTT, // Hisuian Form
|
//NATIONAL_DEX_SAMUROTT, // Hisuian Form
|
||||||
NATIONAL_DEX_MR_RIME,
|
NATIONAL_DEX_MR_RIME,
|
||||||
NATIONAL_DEX_WHIRLIPEDE,
|
NATIONAL_DEX_WHIRLIPEDE,
|
||||||
//NATIONAL_DEX_PINSIR, // Mega
|
//NATIONAL_DEX_PINSIR, // Mega
|
||||||
@ -1823,7 +1823,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
NATIONAL_DEX_FERROTHORN,
|
NATIONAL_DEX_FERROTHORN,
|
||||||
NATIONAL_DEX_MUDBRAY,
|
NATIONAL_DEX_MUDBRAY,
|
||||||
NATIONAL_DEX_ZACIAN, // Hero of Many Battles
|
NATIONAL_DEX_ZACIAN, // Hero of Many Battles
|
||||||
NATIONAL_DEX_BASCULEGION,
|
NATIONAL_DEX_BASCULEGION,
|
||||||
//NATIONAL_DEX_CHARIZARD, // Mega X
|
//NATIONAL_DEX_CHARIZARD, // Mega X
|
||||||
NATIONAL_DEX_SHELGON,
|
NATIONAL_DEX_SHELGON,
|
||||||
//NATIONAL_DEX_SALAMENCE, // Mega
|
//NATIONAL_DEX_SALAMENCE, // Mega
|
||||||
@ -1933,7 +1933,7 @@ const u16 gPokedexOrder_Weight[] =
|
|||||||
//NATIONAL_DEX_AVALUGG, //Hisuian Form
|
//NATIONAL_DEX_AVALUGG, //Hisuian Form
|
||||||
NATIONAL_DEX_TYRANTRUM,
|
NATIONAL_DEX_TYRANTRUM,
|
||||||
NATIONAL_DEX_RHYPERIOR,
|
NATIONAL_DEX_RHYPERIOR,
|
||||||
NATIONAL_DEX_URSALUNA,
|
NATIONAL_DEX_URSALUNA,
|
||||||
NATIONAL_DEX_MAMOSWINE,
|
NATIONAL_DEX_MAMOSWINE,
|
||||||
// 661.4 - 667.0 lbs / 300.0 - 307.1 kg
|
// 661.4 - 667.0 lbs / 300.0 - 307.1 kg
|
||||||
NATIONAL_DEX_GOLEM,
|
NATIONAL_DEX_GOLEM,
|
||||||
@ -2642,7 +2642,7 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_GURDURR,
|
NATIONAL_DEX_GURDURR,
|
||||||
NATIONAL_DEX_LEAVANNY,
|
NATIONAL_DEX_LEAVANNY,
|
||||||
NATIONAL_DEX_WHIRLIPEDE,
|
NATIONAL_DEX_WHIRLIPEDE,
|
||||||
//NATIONAL_DEX_LILLIGANT, //Hisuian Form
|
//NATIONAL_DEX_LILLIGANT, //Hisuian Form
|
||||||
NATIONAL_DEX_CARRACOSTA,
|
NATIONAL_DEX_CARRACOSTA,
|
||||||
NATIONAL_DEX_FRILLISH,
|
NATIONAL_DEX_FRILLISH,
|
||||||
NATIONAL_DEX_ALOMOMOLA,
|
NATIONAL_DEX_ALOMOMOLA,
|
||||||
@ -2697,7 +2697,7 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_DUBWOOL,
|
NATIONAL_DEX_DUBWOOL,
|
||||||
NATIONAL_DEX_BARRASKEWDA,
|
NATIONAL_DEX_BARRASKEWDA,
|
||||||
NATIONAL_DEX_FROSMOTH,
|
NATIONAL_DEX_FROSMOTH,
|
||||||
NATIONAL_DEX_SNEASLER,
|
NATIONAL_DEX_SNEASLER,
|
||||||
// 4'07" / 1.4m
|
// 4'07" / 1.4m
|
||||||
//NATIONAL_DEX_BEEDRILL, // Mega
|
//NATIONAL_DEX_BEEDRILL, // Mega
|
||||||
//NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized
|
//NATIONAL_DEX_RATICATE, // Alolan Form, Totem-sized
|
||||||
@ -2734,7 +2734,7 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_ZWEILOUS,
|
NATIONAL_DEX_ZWEILOUS,
|
||||||
//NATIONAL_DEX_TORNADUS, // Therian Forme
|
//NATIONAL_DEX_TORNADUS, // Therian Forme
|
||||||
NATIONAL_DEX_KELDEO,
|
NATIONAL_DEX_KELDEO,
|
||||||
//NATIONAL_DEX_AVALUGG, // Hisuian Form
|
//NATIONAL_DEX_AVALUGG, // Hisuian Form
|
||||||
//NATIONAL_DEX_GUMSHOOS, // Totem-sized
|
//NATIONAL_DEX_GUMSHOOS, // Totem-sized
|
||||||
NATIONAL_DEX_CINDERACE,
|
NATIONAL_DEX_CINDERACE,
|
||||||
NATIONAL_DEX_EISCUE,
|
NATIONAL_DEX_EISCUE,
|
||||||
@ -2805,7 +2805,7 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_HYPNO,
|
NATIONAL_DEX_HYPNO,
|
||||||
NATIONAL_DEX_ZAPDOS,
|
NATIONAL_DEX_ZAPDOS,
|
||||||
//NATIONAL_DEX_ZAPDOS, // Galarian Form
|
//NATIONAL_DEX_ZAPDOS, // Galarian Form
|
||||||
//NATIONAL_DEX_TYPHLOSION, // Hisuian Form
|
//NATIONAL_DEX_TYPHLOSION, // Hisuian Form
|
||||||
NATIONAL_DEX_NOCTOWL,
|
NATIONAL_DEX_NOCTOWL,
|
||||||
NATIONAL_DEX_GARDEVOIR,
|
NATIONAL_DEX_GARDEVOIR,
|
||||||
//NATIONAL_DEX_GARDEVOIR, // Mega
|
//NATIONAL_DEX_GARDEVOIR, // Mega
|
||||||
@ -2818,15 +2818,15 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_EMBOAR,
|
NATIONAL_DEX_EMBOAR,
|
||||||
NATIONAL_DEX_ZEBSTRIKA,
|
NATIONAL_DEX_ZEBSTRIKA,
|
||||||
NATIONAL_DEX_ZOROARK,
|
NATIONAL_DEX_ZOROARK,
|
||||||
//NATIONAL_DEX_ZOROARK, // Hisuian Form
|
//NATIONAL_DEX_ZOROARK, // Hisuian Form
|
||||||
NATIONAL_DEX_DRUDDIGON,
|
NATIONAL_DEX_DRUDDIGON,
|
||||||
NATIONAL_DEX_BISHARP,
|
NATIONAL_DEX_BISHARP,
|
||||||
NATIONAL_DEX_BOUFFALANT,
|
NATIONAL_DEX_BOUFFALANT,
|
||||||
//NATIONAL_DEX_BRAVIARY, // Hisuian Form
|
//NATIONAL_DEX_BRAVIARY, // Hisuian Form
|
||||||
NATIONAL_DEX_VOLCARONA,
|
NATIONAL_DEX_VOLCARONA,
|
||||||
NATIONAL_DEX_CHESNAUGHT,
|
NATIONAL_DEX_CHESNAUGHT,
|
||||||
NATIONAL_DEX_DECIDUEYE,
|
NATIONAL_DEX_DECIDUEYE,
|
||||||
//NATIONAL_DEX_DECIDUEYE, // Hisuian Form
|
//NATIONAL_DEX_DECIDUEYE, // Hisuian Form
|
||||||
NATIONAL_DEX_KOMMO_O,
|
NATIONAL_DEX_KOMMO_O,
|
||||||
NATIONAL_DEX_TOXTRICITY,
|
NATIONAL_DEX_TOXTRICITY,
|
||||||
NATIONAL_DEX_GRAPPLOCT,
|
NATIONAL_DEX_GRAPPLOCT,
|
||||||
@ -3010,7 +3010,7 @@ const u16 gPokedexOrder_Height[] =
|
|||||||
NATIONAL_DEX_MUDSDALE,
|
NATIONAL_DEX_MUDSDALE,
|
||||||
NATIONAL_DEX_MELMETAL,
|
NATIONAL_DEX_MELMETAL,
|
||||||
NATIONAL_DEX_STONJOURNER,
|
NATIONAL_DEX_STONJOURNER,
|
||||||
NATIONAL_DEX_OVERQWIL,
|
NATIONAL_DEX_OVERQWIL,
|
||||||
// 8'06" / 2.6m
|
// 8'06" / 2.6m
|
||||||
NATIONAL_DEX_BEARTIC,
|
NATIONAL_DEX_BEARTIC,
|
||||||
//NATIONAL_DEX_VIKAVOLT, // Totem-sized
|
//NATIONAL_DEX_VIKAVOLT, // Totem-sized
|
||||||
|
@ -2691,144 +2691,144 @@ static const u8 sVeeveeVolleyDescription[] = _(
|
|||||||
static const u8 sDoubleIronBashDescription[] = _(
|
static const u8 sDoubleIronBashDescription[] = _(
|
||||||
"The user spins and hits with\n"
|
"The user spins and hits with\n"
|
||||||
"its arms. May cause flinch.");
|
"its arms. May cause flinch.");
|
||||||
|
|
||||||
// GEN 8
|
// GEN 8
|
||||||
static const u8 sDynamaxCannonDescription[] = _(
|
static const u8 sDynamaxCannonDescription[] = _(
|
||||||
"Fires a strong beam. Deals\n"
|
"Fires a strong beam. Deals\n"
|
||||||
"2x damage to Dynamaxed foes.");
|
"2x damage to Dynamaxed foes.");
|
||||||
|
|
||||||
static const u8 sSnipeShotDescription[] = _(
|
static const u8 sSnipeShotDescription[] = _(
|
||||||
"The user ignores effects\n"
|
"The user ignores effects\n"
|
||||||
"that draw in moves.");
|
"that draw in moves.");
|
||||||
|
|
||||||
static const u8 sJawLockDescription[] = _(
|
static const u8 sJawLockDescription[] = _(
|
||||||
"Prevents the user and\n"
|
"Prevents the user and\n"
|
||||||
"the target from escaping.");
|
"the target from escaping.");
|
||||||
|
|
||||||
static const u8 sStuffCheeksDescription[] = _(
|
static const u8 sStuffCheeksDescription[] = _(
|
||||||
"Consumes the user's Berry,\n"
|
"Consumes the user's Berry,\n"
|
||||||
"then sharply raises Def.");
|
"then sharply raises Def.");
|
||||||
|
|
||||||
static const u8 sNoRetreatDescription[] = _(
|
static const u8 sNoRetreatDescription[] = _(
|
||||||
"Raises all of the user's\n"
|
"Raises all of the user's\n"
|
||||||
"stats but prevents escape.");
|
"stats but prevents escape.");
|
||||||
|
|
||||||
static const u8 sTarShotDescription[] = _(
|
static const u8 sTarShotDescription[] = _(
|
||||||
"Lowers the foe's Speed and\n"
|
"Lowers the foe's Speed and\n"
|
||||||
"makes it weak to Fire.");
|
"makes it weak to Fire.");
|
||||||
|
|
||||||
static const u8 sMagicPowderDescription[] = _(
|
static const u8 sMagicPowderDescription[] = _(
|
||||||
"Magic powder changes the\n"
|
"Magic powder changes the\n"
|
||||||
"target into a Psychic-type.");
|
"target into a Psychic-type.");
|
||||||
|
|
||||||
static const u8 sDragonDartsDescription[] = _(
|
static const u8 sDragonDartsDescription[] = _(
|
||||||
"The user attacks twice. Two\n"
|
"The user attacks twice. Two\n"
|
||||||
"targets are hit once each.");
|
"targets are hit once each.");
|
||||||
|
|
||||||
static const u8 sTeatimeDescription[] = _(
|
static const u8 sTeatimeDescription[] = _(
|
||||||
"All Pokémon have teatime\n"
|
"All Pokémon have teatime\n"
|
||||||
"and eat their Berries.");
|
"and eat their Berries.");
|
||||||
|
|
||||||
static const u8 sOctolockDescription[] = _(
|
static const u8 sOctolockDescription[] = _(
|
||||||
"Traps the foe to lower Def\n"
|
"Traps the foe to lower Def\n"
|
||||||
"and Sp. Def fall each turn.");
|
"and Sp. Def fall each turn.");
|
||||||
|
|
||||||
static const u8 sBoltBeakDescription[] = _(
|
static const u8 sBoltBeakDescription[] = _(
|
||||||
"Double power if the user\n"
|
"Double power if the user\n"
|
||||||
"moves before the target.");
|
"moves before the target.");
|
||||||
|
|
||||||
static const u8 sFishiousRendDescription[] = _(
|
static const u8 sFishiousRendDescription[] = _(
|
||||||
"Double power if the user\n"
|
"Double power if the user\n"
|
||||||
"moves before the target.");
|
"moves before the target.");
|
||||||
|
|
||||||
static const u8 sCourtChangeDescription[] = _(
|
static const u8 sCourtChangeDescription[] = _(
|
||||||
"The user swaps effects on\n"
|
"The user swaps effects on\n"
|
||||||
"either side of the field.");
|
"either side of the field.");
|
||||||
|
|
||||||
static const u8 sClangorousSoulDescription[] = _(
|
static const u8 sClangorousSoulDescription[] = _(
|
||||||
"The user uses some of its\n"
|
"The user uses some of its\n"
|
||||||
"HP to raise all its stats.");
|
"HP to raise all its stats.");
|
||||||
|
|
||||||
static const u8 sBodyPressDescription[] = _(
|
static const u8 sBodyPressDescription[] = _(
|
||||||
"Does more damage the\n"
|
"Does more damage the\n"
|
||||||
"higher the user's Def.");
|
"higher the user's Def.");
|
||||||
|
|
||||||
static const u8 sDecorateDescription[] = _(
|
static const u8 sDecorateDescription[] = _(
|
||||||
"The user sharply raises\n"
|
"The user sharply raises\n"
|
||||||
"the target's Atk and Sp.Atk");
|
"the target's Atk and Sp.Atk");
|
||||||
|
|
||||||
static const u8 sDrumBeatingDescription[] = _(
|
static const u8 sDrumBeatingDescription[] = _(
|
||||||
"Plays a drum to attack.\n"
|
"Plays a drum to attack.\n"
|
||||||
"The foe's Speed is lowered.");
|
"The foe's Speed is lowered.");
|
||||||
|
|
||||||
static const u8 sSnapTrapDescription[] = _(
|
static const u8 sSnapTrapDescription[] = _(
|
||||||
"Snares the target in a snap\n"
|
"Snares the target in a snap\n"
|
||||||
"trap for four to five turns.");
|
"trap for four to five turns.");
|
||||||
|
|
||||||
static const u8 sPyroBallDescription[] = _(
|
static const u8 sPyroBallDescription[] = _(
|
||||||
"Launches a fiery ball at the\n"
|
"Launches a fiery ball at the\n"
|
||||||
"target. It may cause a burn.");
|
"target. It may cause a burn.");
|
||||||
|
|
||||||
static const u8 sBehemothBladeDescription[] = _(
|
static const u8 sBehemothBladeDescription[] = _(
|
||||||
"Strikes as a sword. Deals 2x\n"
|
"Strikes as a sword. Deals 2x\n"
|
||||||
"damage to Dynamaxed foes.");
|
"damage to Dynamaxed foes.");
|
||||||
|
|
||||||
static const u8 sBehemothBashDescription[] = _(
|
static const u8 sBehemothBashDescription[] = _(
|
||||||
"Attacks as a shield. Deals 2x\n"
|
"Attacks as a shield. Deals 2x\n"
|
||||||
"damage to Dynamaxed foes.");
|
"damage to Dynamaxed foes.");
|
||||||
|
|
||||||
static const u8 sAuraWheelDescription[] = _(
|
static const u8 sAuraWheelDescription[] = _(
|
||||||
"Raises Speed to attack. The\n"
|
"Raises Speed to attack. The\n"
|
||||||
"Type is based on its form.");
|
"Type is based on its form.");
|
||||||
|
|
||||||
static const u8 sBreakingSwipeDescription[] = _(
|
static const u8 sBreakingSwipeDescription[] = _(
|
||||||
"Swings its tail to attack.\n"
|
"Swings its tail to attack.\n"
|
||||||
"Lowers the Atk of those hit.");
|
"Lowers the Atk of those hit.");
|
||||||
|
|
||||||
static const u8 sBranchPokeDescription[] = _(
|
static const u8 sBranchPokeDescription[] = _(
|
||||||
"The user pokes the target\n"
|
"The user pokes the target\n"
|
||||||
"with a pointed branch.");
|
"with a pointed branch.");
|
||||||
|
|
||||||
static const u8 sOverdriveDescription[] = _(
|
static const u8 sOverdriveDescription[] = _(
|
||||||
"The user twangs its guitar,\n"
|
"The user twangs its guitar,\n"
|
||||||
"causing strong vibrations.");
|
"causing strong vibrations.");
|
||||||
|
|
||||||
static const u8 sAppleAcidDescription[] = _(
|
static const u8 sAppleAcidDescription[] = _(
|
||||||
"Attacks with tart apple acid\n"
|
"Attacks with tart apple acid\n"
|
||||||
"to lower the foe's Sp. Def.");
|
"to lower the foe's Sp. Def.");
|
||||||
|
|
||||||
static const u8 sGravAppleDescription[] = _(
|
static const u8 sGravAppleDescription[] = _(
|
||||||
"Drops an apple from above.\n"
|
"Drops an apple from above.\n"
|
||||||
"Lowers the foe's Defense.");
|
"Lowers the foe's Defense.");
|
||||||
|
|
||||||
static const u8 sSpiritBreakDescription[] = _(
|
static const u8 sSpiritBreakDescription[] = _(
|
||||||
"Attacks with spirit-breaking\n"
|
"Attacks with spirit-breaking\n"
|
||||||
"force. Lowers Sp. Atk.");
|
"force. Lowers Sp. Atk.");
|
||||||
|
|
||||||
static const u8 sStrangeSteamDescription[] = _(
|
static const u8 sStrangeSteamDescription[] = _(
|
||||||
"Emits a strange steam to\n"
|
"Emits a strange steam to\n"
|
||||||
"potentially confuse the foe.");
|
"potentially confuse the foe.");
|
||||||
|
|
||||||
static const u8 sLifeDewDescription[] = _(
|
static const u8 sLifeDewDescription[] = _(
|
||||||
"Scatters water to restore\n"
|
"Scatters water to restore\n"
|
||||||
"the HP of itself and allies.");
|
"the HP of itself and allies.");
|
||||||
|
|
||||||
static const u8 sObstructDescription[] = _(
|
static const u8 sObstructDescription[] = _(
|
||||||
"Protects itself, harshly\n"
|
"Protects itself, harshly\n"
|
||||||
"lowering Def on contact.");
|
"lowering Def on contact.");
|
||||||
|
|
||||||
static const u8 sFalseSurrenderDescription[] = _(
|
static const u8 sFalseSurrenderDescription[] = _(
|
||||||
"Bows to stab the foe\n"
|
"Bows to stab the foe\n"
|
||||||
"with hair. It never misses.");
|
"with hair. It never misses.");
|
||||||
|
|
||||||
static const u8 sMeteorAssaultDescription[] = _(
|
static const u8 sMeteorAssaultDescription[] = _(
|
||||||
"Attacks with a thick leek.\n"
|
"Attacks with a thick leek.\n"
|
||||||
"The user must then rest.");
|
"The user must then rest.");
|
||||||
|
|
||||||
static const u8 sEternabeamDescription[] = _(
|
static const u8 sEternabeamDescription[] = _(
|
||||||
"Eternatus' strongest move.\n"
|
"Eternatus' strongest move.\n"
|
||||||
"The user rests next turn.");
|
"The user rests next turn.");
|
||||||
|
|
||||||
static const u8 sSteelBeamDescription[] = _(
|
static const u8 sSteelBeamDescription[] = _(
|
||||||
"Fires a beam of steel from\n"
|
"Fires a beam of steel from\n"
|
||||||
"its body. It hurts the user.");
|
"its body. It hurts the user.");
|
||||||
|
@ -1604,7 +1604,7 @@ static const u8 sText_Menacing_Moonraze_Maelstrom[] = _("Menacing Moonraze Maels
|
|||||||
static const u8 sText_Light_That_Burns_The_Sky[] = _("Light That Burns The Sky");
|
static const u8 sText_Light_That_Burns_The_Sky[] = _("Light That Burns The Sky");
|
||||||
static const u8 sText_Soul_Stealing_7_Star_Strike[] = _("Soul Stealing 7 Star Strike");
|
static const u8 sText_Soul_Stealing_7_Star_Strike[] = _("Soul Stealing 7 Star Strike");
|
||||||
|
|
||||||
const u8 *const gZMoveNames[] =
|
const u8 *const gZMoveNames[] =
|
||||||
{
|
{
|
||||||
[MOVE_BREAKNECK_BLITZ - FIRST_Z_MOVE] = sText_Breakneck_Blitz,
|
[MOVE_BREAKNECK_BLITZ - FIRST_Z_MOVE] = sText_Breakneck_Blitz,
|
||||||
[MOVE_ALL_OUT_PUMMELING - FIRST_Z_MOVE] = sText_All_Out_Pummeling,
|
[MOVE_ALL_OUT_PUMMELING - FIRST_Z_MOVE] = sText_All_Out_Pummeling,
|
||||||
|
@ -261,7 +261,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
|
|||||||
CalculateMonStats(&pokemon);
|
CalculateMonStats(&pokemon);
|
||||||
species = newSpecies;
|
species = newSpecies;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
|
if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
|
||||||
{
|
{
|
||||||
experience = GetMonData(&pokemon, MON_DATA_EXP) + daycareMon->steps;
|
experience = GetMonData(&pokemon, MON_DATA_EXP) + daycareMon->steps;
|
||||||
@ -1359,7 +1359,7 @@ static u8 ModifyBreedingScoreForOvalCharm(u8 score)
|
|||||||
return 88;
|
return 88;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1493,7 +1493,7 @@ static void DebugAction_Flags_CatchingOnOff(u8 taskId)
|
|||||||
FlagToggle(B_FLAG_NO_CATCHING);
|
FlagToggle(B_FLAG_NO_CATCHING);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// *******************************
|
// *******************************
|
||||||
// Actions Variables
|
// Actions Variables
|
||||||
static void DebugAction_Vars_Vars(u8 taskId)
|
static void DebugAction_Vars_Vars(u8 taskId)
|
||||||
@ -2589,7 +2589,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Pokedex entry
|
//Pokedex entry
|
||||||
nationalDexNum = SpeciesToNationalPokedexNum(species);
|
nationalDexNum = SpeciesToNationalPokedexNum(species);
|
||||||
switch(sentToPc)
|
switch(sentToPc)
|
||||||
{
|
{
|
||||||
case MON_GIVEN_TO_PARTY:
|
case MON_GIVEN_TO_PARTY:
|
||||||
|
@ -565,7 +565,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon)
|
|||||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data);
|
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data);
|
||||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data);
|
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data);
|
||||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data);
|
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data);
|
||||||
|
|
||||||
#if P_SHEDINJA_BALL >= GEN_4
|
#if P_SHEDINJA_BALL >= GEN_4
|
||||||
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball);
|
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball);
|
||||||
RemoveBagItem(ball, 1);
|
RemoveBagItem(ball, 1);
|
||||||
|
@ -1188,7 +1188,7 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemUseOutOfBattle_FormChange(u8 taskId)
|
void ItemUseOutOfBattle_FormChange(u8 taskId)
|
||||||
{
|
{
|
||||||
gItemUseCB = ItemUseCB_FormChange;
|
gItemUseCB = ItemUseCB_FormChange;
|
||||||
gTasks[taskId].data[0] = FALSE;
|
gTasks[taskId].data[0] = FALSE;
|
||||||
|
@ -3307,7 +3307,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
|||||||
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
||||||
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
||||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||||
|
|
||||||
if (CheckBagHasItem(ITEM_SHINY_CHARM, 1))
|
if (CheckBagHasItem(ITEM_SHINY_CHARM, 1))
|
||||||
{
|
{
|
||||||
u32 shinyValue;
|
u32 shinyValue;
|
||||||
@ -3415,7 +3415,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBaseStats[species].abilities[1])
|
if (gBaseStats[species].abilities[1])
|
||||||
@ -5292,7 +5292,7 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum)
|
|||||||
gLastUsedAbility = gBaseStats[species].abilities[abilityNum];
|
gLastUsedAbility = gBaseStats[species].abilities[abilityNum];
|
||||||
else
|
else
|
||||||
gLastUsedAbility = ABILITY_NONE;
|
gLastUsedAbility = ABILITY_NONE;
|
||||||
|
|
||||||
if (abilityNum >= NUM_NORMAL_ABILITY_SLOTS) // if abilityNum is empty hidden ability, look for other hidden abilities
|
if (abilityNum >= NUM_NORMAL_ABILITY_SLOTS) // if abilityNum is empty hidden ability, look for other hidden abilities
|
||||||
{
|
{
|
||||||
for (i = NUM_NORMAL_ABILITY_SLOTS; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++)
|
for (i = NUM_NORMAL_ABILITY_SLOTS; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++)
|
||||||
@ -5300,12 +5300,12 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum)
|
|||||||
gLastUsedAbility = gBaseStats[species].abilities[i];
|
gLastUsedAbility = gBaseStats[species].abilities[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) // look for any non-empty ability
|
for (i = 0; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) // look for any non-empty ability
|
||||||
{
|
{
|
||||||
gLastUsedAbility = gBaseStats[species].abilities[i];
|
gLastUsedAbility = gBaseStats[species].abilities[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return gLastUsedAbility;
|
return gLastUsedAbility;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6346,7 +6346,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s
|
|||||||
{
|
{
|
||||||
partnerSpecies = GetMonData(tradePartner, MON_DATA_SPECIES, 0);
|
partnerSpecies = GetMonData(tradePartner, MON_DATA_SPECIES, 0);
|
||||||
partnerHeldItem = GetMonData(tradePartner, MON_DATA_HELD_ITEM, 0);
|
partnerHeldItem = GetMonData(tradePartner, MON_DATA_HELD_ITEM, 0);
|
||||||
|
|
||||||
if (partnerHeldItem == ITEM_ENIGMA_BERRY)
|
if (partnerHeldItem == ITEM_ENIGMA_BERRY)
|
||||||
partnerHoldEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
|
partnerHoldEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
|
||||||
else
|
else
|
||||||
@ -7717,7 +7717,7 @@ void SetWildMonHeldItem(void)
|
|||||||
{
|
{
|
||||||
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE)
|
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != ITEM_NONE)
|
||||||
continue; // prevent ovewriting previously set item
|
continue; // prevent ovewriting previously set item
|
||||||
|
|
||||||
rnd = Random() % 100;
|
rnd = Random() % 100;
|
||||||
species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0);
|
species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, 0);
|
||||||
if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE)
|
if (gMapHeader.mapLayoutId == LAYOUT_ALTERING_CAVE)
|
||||||
|
@ -337,7 +337,7 @@ const u8 gFrontAnimNames[][34] =
|
|||||||
[ANIM_SHAKE_GLOW_WHITE_SLOW] = _("SHAKE GLOW WHITE SLOW"),
|
[ANIM_SHAKE_GLOW_WHITE_SLOW] = _("SHAKE GLOW WHITE SLOW"),
|
||||||
[ANIM_SHAKE_GLOW_PURPLE_SLOW] = _("SHAKE GLOW PURPLE SLOW"),
|
[ANIM_SHAKE_GLOW_PURPLE_SLOW] = _("SHAKE GLOW PURPLE SLOW"),
|
||||||
};
|
};
|
||||||
const u8 gBattleBackgroundNames[][30] =
|
const u8 gBattleBackgroundNames[][30] =
|
||||||
{
|
{
|
||||||
[MAP_BATTLE_SCENE_NORMAL] = _("NORMAL "),
|
[MAP_BATTLE_SCENE_NORMAL] = _("NORMAL "),
|
||||||
[MAP_BATTLE_SCENE_GYM] = _("GYM "),
|
[MAP_BATTLE_SCENE_GYM] = _("GYM "),
|
||||||
@ -354,7 +354,7 @@ const u8 gBattleBackgroundNames[][30] =
|
|||||||
[MAP_BATTLE_SCENE_KYOGRE] = _("KYOGRE "),
|
[MAP_BATTLE_SCENE_KYOGRE] = _("KYOGRE "),
|
||||||
[MAP_BATTLE_SCENE_RAYQUAZA] = _("RAYQUAZA "),
|
[MAP_BATTLE_SCENE_RAYQUAZA] = _("RAYQUAZA "),
|
||||||
};
|
};
|
||||||
const u8 gBattleBackgroundTerrainNames[][26] =
|
const u8 gBattleBackgroundTerrainNames[][26] =
|
||||||
{
|
{
|
||||||
[BATTLE_TERRAIN_GRASS] = _("NORMAL - GRASS "),
|
[BATTLE_TERRAIN_GRASS] = _("NORMAL - GRASS "),
|
||||||
[BATTLE_TERRAIN_LONG_GRASS] = _("NORMAL - LONG GRASS "),
|
[BATTLE_TERRAIN_LONG_GRASS] = _("NORMAL - LONG GRASS "),
|
||||||
@ -403,13 +403,13 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data)
|
|||||||
u8 textInstructionsSubmenuOneGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back {A_BUTTON} Submenu 2$");
|
u8 textInstructionsSubmenuOneGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back {A_BUTTON} Submenu 2$");
|
||||||
u8 textInstructionsSubmenuTwo[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back$");
|
u8 textInstructionsSubmenuTwo[] = _("{START_BUTTON} Shiny\n{B_BUTTON} Back$");
|
||||||
u8 textInstructionsSubmenuTwoGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back$");
|
u8 textInstructionsSubmenuTwoGender[] = _("{START_BUTTON} Shiny {SELECT_BUTTON} Gender\n{B_BUTTON} Back$");
|
||||||
|
|
||||||
|
|
||||||
u8 textBottom[] = _("BACK:\nFRONT:\nBG:$");
|
u8 textBottom[] = _("BACK:\nFRONT:\nBG:$");
|
||||||
u8 textBottomForms[] = _("BACK:\nFRONT:\nBG:\nFORMS:$");
|
u8 textBottomForms[] = _("BACK:\nFRONT:\nBG:\nFORMS:$");
|
||||||
u8 textBottomSubmenuTwo[] = _("B coords:\nF coords:\nF elev:");
|
u8 textBottomSubmenuTwo[] = _("B coords:\nF coords:\nF elev:");
|
||||||
u16 species = data->modifyArrows.currValue;
|
u16 species = data->modifyArrows.currValue;
|
||||||
|
|
||||||
u8 textL[] = _("{L_BUTTON}");
|
u8 textL[] = _("{L_BUTTON}");
|
||||||
u8 textR[] = _("{R_BUTTON}");
|
u8 textR[] = _("{R_BUTTON}");
|
||||||
|
|
||||||
@ -481,7 +481,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data)
|
|||||||
|
|
||||||
for (i = 0; i < data->modifyArrows.maxDigits; i++)
|
for (i = 0; i < data->modifyArrows.maxDigits; i++)
|
||||||
text[i] = data->modifyArrows.charDigits[i];
|
text[i] = data->modifyArrows.charDigits[i];
|
||||||
|
|
||||||
text[i++] = CHAR_SPACE;
|
text[i++] = CHAR_SPACE;
|
||||||
text[i++] = CHAR_HYPHEN;
|
text[i++] = CHAR_HYPHEN;
|
||||||
|
|
||||||
@ -490,7 +490,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data)
|
|||||||
if (data->isFemale)
|
if (data->isFemale)
|
||||||
text[i++] = CHAR_FEMALE;
|
text[i++] = CHAR_FEMALE;
|
||||||
else
|
else
|
||||||
text[i++] = CHAR_MALE;
|
text[i++] = CHAR_MALE;
|
||||||
text[i++] = CHAR_HYPHEN;
|
text[i++] = CHAR_HYPHEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -641,7 +641,7 @@ static bool32 TryMoveDigit(struct PokemonDebugModifyArrows *modArrows, bool32 mo
|
|||||||
if (charDigits[modArrows->currentDigit] == CHAR_0)
|
if (charDigits[modArrows->currentDigit] == CHAR_0)
|
||||||
{
|
{
|
||||||
charDigits[modArrows->currentDigit] = CHAR_9;
|
charDigits[modArrows->currentDigit] = CHAR_9;
|
||||||
|
|
||||||
for (i = modArrows->currentDigit - 1; i >= 0; i--)
|
for (i = modArrows->currentDigit - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
if (charDigits[i] == CHAR_0)
|
if (charDigits[i] == CHAR_0)
|
||||||
@ -796,7 +796,7 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off
|
|||||||
|
|
||||||
//FrontPicCoords
|
//FrontPicCoords
|
||||||
offset = gMonFrontPicCoords[species].y_offset + offset_picCoords;
|
offset = gMonFrontPicCoords[species].y_offset + offset_picCoords;
|
||||||
|
|
||||||
//Elevation
|
//Elevation
|
||||||
offset -= GetElevationValue(species) + offset_elevation;
|
offset -= GetElevationValue(species) + offset_elevation;
|
||||||
|
|
||||||
@ -805,7 +805,7 @@ static u8 GetBattlerSpriteFinal_YCustom(u16 species, s8 offset_picCoords, s8 off
|
|||||||
|
|
||||||
if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8)
|
if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8)
|
||||||
y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8;
|
y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8;
|
||||||
|
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -839,7 +839,7 @@ static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data,
|
|||||||
|
|
||||||
data->frontShadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, x, y + 29, 0xC8);
|
data->frontShadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, x, y + 29, 0xC8);
|
||||||
gSprites[data->frontShadowSpriteId].data[0] = data->frontspriteId;
|
gSprites[data->frontShadowSpriteId].data[0] = data->frontspriteId;
|
||||||
|
|
||||||
gSprites[data->frontShadowSpriteId].callback = SpriteCB_EnemyShadowCustom;
|
gSprites[data->frontShadowSpriteId].callback = SpriteCB_EnemyShadowCustom;
|
||||||
gSprites[data->frontShadowSpriteId].oam.priority = 0;
|
gSprites[data->frontShadowSpriteId].oam.priority = 0;
|
||||||
gSprites[data->frontShadowSpriteId].invisible = invisible;
|
gSprites[data->frontShadowSpriteId].invisible = invisible;
|
||||||
@ -945,7 +945,7 @@ static void LoadBattleBg(u8 battleBgType, u8 battleTerrain)
|
|||||||
LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
|
LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
|
||||||
LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
|
LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
|
||||||
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
|
LoadCompressedPalette(gBattleTerrainPalette_Rayquaza, 0x20, 0x60);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static void PrintBattleBgName(u8 taskId)
|
static void PrintBattleBgName(u8 taskId)
|
||||||
@ -1005,7 +1005,7 @@ static void UpdateBattleBg(u8 taskId, bool8 increment)
|
|||||||
{
|
{
|
||||||
if (increment)
|
if (increment)
|
||||||
data->battleBgType += 1;
|
data->battleBgType += 1;
|
||||||
else
|
else
|
||||||
data->battleBgType -= 1;
|
data->battleBgType -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1148,7 +1148,7 @@ void CB2_Debug_Pokemon(void)
|
|||||||
data->battleBgType = 0;
|
data->battleBgType = 0;
|
||||||
data->battleTerrain = 0;
|
data->battleTerrain = 0;
|
||||||
LoadBattleBg(data->battleBgType , data->battleTerrain);
|
LoadBattleBg(data->battleBgType , data->battleTerrain);
|
||||||
|
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@ -1377,7 +1377,7 @@ static void UpdateSubmenuOneOptionValue(u8 taskId, bool8 increment)
|
|||||||
data->animIdFront = sMonFrontAnimIdsTable[modArrows->currValue - 1];
|
data->animIdFront = sMonFrontAnimIdsTable[modArrows->currValue - 1];
|
||||||
UpdateMonAnimNames(taskId);
|
UpdateMonAnimNames(taskId);
|
||||||
ResetOffsetSpriteValues(data);
|
ResetOffsetSpriteValues(data);
|
||||||
|
|
||||||
UpdateBattlerValue(data);
|
UpdateBattlerValue(data);
|
||||||
ReloadPokemonSprites(data);
|
ReloadPokemonSprites(data);
|
||||||
while (!(gMain.intrCheck & INTR_FLAG_VBLANK));
|
while (!(gMain.intrCheck & INTR_FLAG_VBLANK));
|
||||||
@ -1486,7 +1486,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId)
|
|||||||
if (JOY_NEW(START_BUTTON))
|
if (JOY_NEW(START_BUTTON))
|
||||||
{
|
{
|
||||||
data->isShiny = !data->isShiny;
|
data->isShiny = !data->isShiny;
|
||||||
|
|
||||||
if(data->isShiny)
|
if(data->isShiny)
|
||||||
PlaySE(SE_SHINY);
|
PlaySE(SE_SHINY);
|
||||||
|
|
||||||
@ -1641,7 +1641,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId)
|
|||||||
data->submenuYpos[2] += 1;
|
data->submenuYpos[2] += 1;
|
||||||
if (data->submenuYpos[2] >= 3)
|
if (data->submenuYpos[2] >= 3)
|
||||||
data->submenuYpos[2] = 0;
|
data->submenuYpos[2] = 0;
|
||||||
|
|
||||||
data->yPosModifyArrows.currentDigit = data->submenuYpos[2];
|
data->yPosModifyArrows.currentDigit = data->submenuYpos[2];
|
||||||
gSprites[data->yPosModifyArrows.arrowSpriteId[0]].y = OPTIONS_ARROW_Y + data->yPosModifyArrows.currentDigit * 12;
|
gSprites[data->yPosModifyArrows.arrowSpriteId[0]].y = OPTIONS_ARROW_Y + data->yPosModifyArrows.currentDigit * 12;
|
||||||
}
|
}
|
||||||
@ -1672,7 +1672,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data)
|
|||||||
u16 species = data->currentmonId;
|
u16 species = data->currentmonId;
|
||||||
s16 offset_y;
|
s16 offset_y;
|
||||||
u8 front_x = sBattlerCoords[0][1].x;
|
u8 front_x = sBattlerCoords[0][1].x;
|
||||||
u8 front_y;
|
u8 front_y;
|
||||||
|
|
||||||
DestroySprite(&gSprites[data->frontspriteId]);
|
DestroySprite(&gSprites[data->frontspriteId]);
|
||||||
DestroySprite(&gSprites[data->backspriteId]);
|
DestroySprite(&gSprites[data->backspriteId]);
|
||||||
@ -1706,7 +1706,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data)
|
|||||||
gSprites[data->frontspriteId].oam.priority = 0;
|
gSprites[data->frontspriteId].oam.priority = 0;
|
||||||
//Front Shadow
|
//Front Shadow
|
||||||
LoadAndCreateEnemyShadowSpriteCustom(data, species);
|
LoadAndCreateEnemyShadowSpriteCustom(data, species);
|
||||||
|
|
||||||
//Back
|
//Back
|
||||||
HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY));
|
HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[2], species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY));
|
||||||
BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5);
|
BattleLoadOpponentMonSpriteGfxCustom(species, data->isFemale, data->isShiny, 5);
|
||||||
@ -1720,7 +1720,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data)
|
|||||||
//Icon Sprite
|
//Icon Sprite
|
||||||
data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY));
|
data->iconspriteId = CreateMonIcon(species, SpriteCB_MonIcon, DEBUG_ICON_X, DEBUG_ICON_Y, 4, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY));
|
||||||
gSprites[data->iconspriteId].oam.priority = 0;
|
gSprites[data->iconspriteId].oam.priority = 0;
|
||||||
|
|
||||||
//Modify Arrows
|
//Modify Arrows
|
||||||
LoadSpritePalette(&gSpritePalette_Arrow);
|
LoadSpritePalette(&gSpritePalette_Arrow);
|
||||||
data->modifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, MODIFY_DIGITS_ARROW_X + (data->modifyArrows.currentDigit * 6), MODIFY_DIGITS_ARROW1_Y, 0);
|
data->modifyArrows.arrowSpriteId[0] = CreateSprite(&gSpriteTemplate_Arrow, MODIFY_DIGITS_ARROW_X + (data->modifyArrows.currentDigit * 6), MODIFY_DIGITS_ARROW1_Y, 0);
|
||||||
|
@ -3742,7 +3742,7 @@ static void PrintMoveDetails(u16 move)
|
|||||||
ShowSplitIcon(GetBattleMoveSplit(move));
|
ShowSplitIcon(GetBattleMoveSplit(move));
|
||||||
#endif
|
#endif
|
||||||
PrintMovePowerAndAccuracy(move);
|
PrintMovePowerAndAccuracy(move);
|
||||||
|
|
||||||
if (moveEffect != EFFECT_PLACEHOLDER)
|
if (moveEffect != EFFECT_PLACEHOLDER)
|
||||||
PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
|
PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
|
||||||
else
|
else
|
||||||
|
@ -1885,7 +1885,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
|
|||||||
gIsScriptedWildDouble = FALSE;
|
gIsScriptedWildDouble = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CreateScriptedDoubleWildMon(species, level, item, species2, level2, item2);
|
CreateScriptedDoubleWildMon(species, level, item, species2, level2, item2);
|
||||||
gIsScriptedWildDouble = TRUE;
|
gIsScriptedWildDouble = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ static void BuildNormalStartMenu(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void BuildDebugStartMenu(void)
|
static void BuildDebugStartMenu(void)
|
||||||
{
|
{
|
||||||
AddStartMenuAction(MENU_ACTION_DEBUG);
|
AddStartMenuAction(MENU_ACTION_DEBUG);
|
||||||
if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE)
|
if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE)
|
||||||
AddStartMenuAction(MENU_ACTION_POKEDEX);
|
AddStartMenuAction(MENU_ACTION_POKEDEX);
|
||||||
|
@ -1006,7 +1006,7 @@ bool8 TryDoDoubleWildBattle(void)
|
|||||||
{
|
{
|
||||||
if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS)
|
if (GetSafariZoneFlag() || GetMonsStateToDoubles() != PLAYER_HAS_TWO_USABLE_MONS)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#if B_FLAG_FORCE_DOUBLE_WILD != 0
|
#if B_FLAG_FORCE_DOUBLE_WILD != 0
|
||||||
else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD))
|
else if (FlagGet(B_FLAG_FORCE_DOUBLE_WILD))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -238,7 +238,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data)
|
|||||||
{
|
{
|
||||||
FATAL_ERROR("More than one MARK Chunk in file!\n");
|
FATAL_ERROR("More than one MARK Chunk in file!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
markers = calloc(num_markers, sizeof(struct Marker));
|
markers = calloc(num_markers, sizeof(struct Marker));
|
||||||
|
|
||||||
// Read each marker.
|
// Read each marker.
|
||||||
@ -289,7 +289,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data)
|
|||||||
// Skip NoLooping sustain loop.
|
// Skip NoLooping sustain loop.
|
||||||
pos += 4;
|
pos += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip release loop, we don't need it.
|
// Skip release loop, we don't need it.
|
||||||
pos += 6;
|
pos += 6;
|
||||||
}
|
}
|
||||||
@ -303,7 +303,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data)
|
|||||||
{
|
{
|
||||||
uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t));
|
uint8_t *sample_data = (uint8_t *)malloc(num_samples * sizeof(uint8_t));
|
||||||
memcpy(sample_data, &aif->data[pos], num_samples);
|
memcpy(sample_data, &aif->data[pos], num_samples);
|
||||||
|
|
||||||
aif_data->samples8 = sample_data;
|
aif_data->samples8 = sample_data;
|
||||||
aif_data->real_num_samples = num_samples;
|
aif_data->real_num_samples = num_samples;
|
||||||
}
|
}
|
||||||
@ -316,7 +316,7 @@ void read_aif(struct Bytes *aif, AifData *aif_data)
|
|||||||
{
|
{
|
||||||
sample_data_swapped[i] = __builtin_bswap16(sample_data[i]);
|
sample_data_swapped[i] = __builtin_bswap16(sample_data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
aif_data->samples16 = sample_data_swapped;
|
aif_data->samples16 = sample_data_swapped;
|
||||||
aif_data->real_num_samples = num_samples;
|
aif_data->real_num_samples = num_samples;
|
||||||
free(sample_data);
|
free(sample_data);
|
||||||
@ -329,12 +329,12 @@ void read_aif(struct Bytes *aif, AifData *aif_data)
|
|||||||
pos += chunk_size;
|
pos += chunk_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (markers)
|
if (markers)
|
||||||
{
|
{
|
||||||
// Resolve loop points.
|
// Resolve loop points.
|
||||||
struct Marker *cur_marker = markers;
|
struct Marker *cur_marker = markers;
|
||||||
|
|
||||||
// Grab loop start point.
|
// Grab loop start point.
|
||||||
for (int i = 0; i < num_markers; i++, cur_marker++)
|
for (int i = 0; i < num_markers; i++, cur_marker++)
|
||||||
{
|
{
|
||||||
@ -573,7 +573,7 @@ void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress)
|
|||||||
struct Bytes *aif = read_bytearray(aif_filename);
|
struct Bytes *aif = read_bytearray(aif_filename);
|
||||||
AifData aif_data = {0};
|
AifData aif_data = {0};
|
||||||
read_aif(aif, &aif_data);
|
read_aif(aif, &aif_data);
|
||||||
|
|
||||||
// Convert 16-bit to 8-bit if necessary
|
// Convert 16-bit to 8-bit if necessary
|
||||||
if (aif_data.sample_size == 16)
|
if (aif_data.sample_size == 16)
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ static void ConvertFromLatinFont(unsigned char *src, unsigned char *dest, unsign
|
|||||||
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
|
unsigned int pixelsX = (column * 16) + ((glyphTile & 1) * 8);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < 8; i++) {
|
for (unsigned int i = 0; i < 8; i++) {
|
||||||
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
|
unsigned int pixelsY = (row * 16) + ((glyphTile >> 1) * 8) + i;
|
||||||
unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
|
unsigned int destPixelsOffset = (pixelsY * 64) + (pixelsX / 4);
|
||||||
|
|
||||||
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
|
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
|
||||||
@ -75,7 +75,7 @@ static void ConvertFromHalfwidthJapaneseFont(unsigned char *src, unsigned char *
|
|||||||
for (unsigned int i = 0; i < 8; i++) {
|
for (unsigned int i = 0; i < 8; i++) {
|
||||||
unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
|
unsigned int pixelsY = (row * 16) + (glyphTile * 8) + i;
|
||||||
unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
|
unsigned int destPixelsOffset = (pixelsY * 32) + (pixelsX / 4);
|
||||||
|
|
||||||
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
|
dest[destPixelsOffset] = src[srcPixelsOffset + 1];
|
||||||
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
|
dest[destPixelsOffset + 1] = src[srcPixelsOffset];
|
||||||
|
|
||||||
@ -233,7 +233,7 @@ void ReadHalfwidthJapaneseFont(char *path, struct Image *image)
|
|||||||
FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize);
|
FATAL_ERROR("The file size (%d) is not a multiple of %d.\n", fileSize, glyphSize);
|
||||||
|
|
||||||
int numGlyphs = fileSize / glyphSize;
|
int numGlyphs = fileSize / glyphSize;
|
||||||
|
|
||||||
if (numGlyphs % 16 != 0)
|
if (numGlyphs % 16 != 0)
|
||||||
FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
|
FATAL_ERROR("The number of glyphs (%d) is not a multiple of 16.\n", numGlyphs);
|
||||||
|
|
||||||
|
@ -1675,7 +1675,7 @@ class FunctionStorage {
|
|||||||
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
// #include "bytecode.hpp"
|
// #include "bytecode.hpp"
|
||||||
|
@ -77,8 +77,8 @@ string generate_map_header_text(Json map_data, Json layouts_data, string version
|
|||||||
|
|
||||||
ostringstream text;
|
ostringstream text;
|
||||||
|
|
||||||
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
||||||
<< map_data["name"].string_value()
|
<< map_data["name"].string_value()
|
||||||
<< "/map.json\n@\n\n";
|
<< "/map.json\n@\n\n";
|
||||||
|
|
||||||
text << map_data["name"].string_value() << ":\n"
|
text << map_data["name"].string_value() << ":\n"
|
||||||
@ -128,8 +128,8 @@ string generate_map_connections_text(Json map_data) {
|
|||||||
|
|
||||||
ostringstream text;
|
ostringstream text;
|
||||||
|
|
||||||
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
||||||
<< map_data["name"].string_value()
|
<< map_data["name"].string_value()
|
||||||
<< "/map.json\n@\n\n";
|
<< "/map.json\n@\n\n";
|
||||||
|
|
||||||
text << map_data["name"].string_value() << "_MapConnectionsList:\n";
|
text << map_data["name"].string_value() << "_MapConnectionsList:\n";
|
||||||
@ -154,8 +154,8 @@ string generate_map_events_text(Json map_data) {
|
|||||||
|
|
||||||
ostringstream text;
|
ostringstream text;
|
||||||
|
|
||||||
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
|
||||||
<< map_data["name"].string_value()
|
<< map_data["name"].string_value()
|
||||||
<< "/map.json\n@\n\n";
|
<< "/map.json\n@\n\n";
|
||||||
|
|
||||||
string objects_label, warps_label, coords_label, bgs_label;
|
string objects_label, warps_label, coords_label, bgs_label;
|
||||||
@ -399,7 +399,7 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) {
|
|||||||
text << "// " << group.string_value() << "\n";
|
text << "// " << group.string_value() << "\n";
|
||||||
vector<Json> map_ids;
|
vector<Json> map_ids;
|
||||||
size_t max_length = 0;
|
size_t max_length = 0;
|
||||||
|
|
||||||
int map_count = 0; //DEBUG
|
int map_count = 0; //DEBUG
|
||||||
|
|
||||||
for (auto &map_name : groups_data[group.string_value()].array_items()) {
|
for (auto &map_name : groups_data[group.string_value()].array_items()) {
|
||||||
|
@ -383,7 +383,7 @@ void CFile::TryConvertIncbin()
|
|||||||
|
|
||||||
if (m_buffer[m_pos] == '\\')
|
if (m_buffer[m_pos] == '\\')
|
||||||
RaiseError("unexpected escape in path string");
|
RaiseError("unexpected escape in path string");
|
||||||
|
|
||||||
m_pos++;
|
m_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -418,7 +418,7 @@ void CFile::TryConvertIncbin()
|
|||||||
|
|
||||||
m_pos++;
|
m_pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_buffer[m_pos] != ')')
|
if (m_buffer[m_pos] != ')')
|
||||||
RaiseError("expected ')'");
|
RaiseError("expected ')'");
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ Lhs CharmapReader::ReadLhs()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_buffer[m_pos] == '\'')
|
if (m_buffer[m_pos] == '\'')
|
||||||
{
|
{
|
||||||
m_pos++;
|
m_pos++;
|
||||||
|
@ -41,7 +41,7 @@ SourceFileType GetFileType(std::string& path)
|
|||||||
return SourceFileType::Inc;
|
return SourceFileType::Inc;
|
||||||
else
|
else
|
||||||
FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str());
|
FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str());
|
||||||
|
|
||||||
// Unreachable
|
// Unreachable
|
||||||
return SourceFileType::Cpp;
|
return SourceFileType::Cpp;
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ SourceFile::SourceFile(std::string path)
|
|||||||
else
|
else
|
||||||
incbins.insert(outputPath);
|
incbins.insert(outputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes};
|
new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user