Merge branch 'upcoming' of https://github.com/rh-hideout/pokeemerald-expansion into dev_gen9_abilities

This commit is contained in:
LOuroboros 2022-12-12 19:55:48 -03:00
commit a56cfd1aa7
26 changed files with 2134 additions and 445 deletions

View File

@ -358,7 +358,7 @@ If this works, then proceed to [Installation](#installation). Otherwise, ask for
1. If pokeemerald is not already downloaded (some users may prefer to download pokeemerald via a git client like GitHub Desktop), run: 1. If pokeemerald is not already downloaded (some users may prefer to download pokeemerald via a git client like GitHub Desktop), run:
```bash ```bash
git clone https://github.com/pret/pokeemerald git clone https://github.com/rh-hideout/pokeemerald-expansion
``` ```
<details> <details>

View File

@ -1162,7 +1162,7 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro trygetintimidatetarget ptr:req .macro unused2 ptr:req
.byte 0xe1 .byte 0xe1
.4byte \ptr .4byte \ptr
.endm .endm
@ -1332,8 +1332,8 @@
various \battler, VARIOUS_GET_BATTLER_FAINTED various \battler, VARIOUS_GET_BATTLER_FAINTED
.endm .endm
.macro resetintimidatetracebits battler:req .macro resetswitchinabilitybits battler:req
various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS various \battler, VARIOUS_RESET_SWITCH_IN_ABILITY_BITS
.endm .endm
.macro updatechoicemoveonlvlup battler:req .macro updatechoicemoveonlvlup battler:req

View File

@ -805,6 +805,55 @@ gBattleAnims_Moves::
.4byte Move_SANDSEAR_STORM .4byte Move_SANDSEAR_STORM
.4byte Move_LUNAR_BLESSING .4byte Move_LUNAR_BLESSING
.4byte Move_TAKE_HEART .4byte Move_TAKE_HEART
@@@@@@@@@@@@ GEN 9 @@@@@@@@@@@@
.4byte Move_TERA_BLAST
.4byte Move_SILK_TRAP
.4byte Move_AXE_KICK
.4byte Move_LAST_RESPECTS
.4byte Move_LUMINA_CRASH
.4byte Move_ORDER_UP
.4byte Move_JET_PUNCH
.4byte Move_SPICY_EXTRACT
.4byte Move_SPIN_OUT
.4byte Move_POPULATION_BOMB
.4byte Move_ICE_SPINNER
.4byte Move_GLAIVE_RUSH
.4byte Move_REVIVAL_BLESSING
.4byte Move_SALT_CURE
.4byte Move_TRIPLE_DIVE
.4byte Move_MORTAL_SPIN
.4byte Move_DOODLE
.4byte Move_FILLET_AWAY
.4byte Move_KOWTOW_CLEAVE
.4byte Move_FLOWER_TRICK
.4byte Move_TORCH_SONG
.4byte Move_AQUA_STEP
.4byte Move_RAGING_BULL
.4byte Move_MAKE_IT_RAIN
.4byte Move_RUINATION
.4byte Move_COLLISION_COURSE
.4byte Move_ELECTRO_DRIFT
.4byte Move_SHED_TAIL
.4byte Move_CHILLY_RECEPTION
.4byte Move_TIDY_UP
.4byte Move_SNOWSCAPE
.4byte Move_POUNCE
.4byte Move_TRAILBLAZE
.4byte Move_CHILLING_WATER
.4byte Move_HYPER_DRILL
.4byte Move_TWIN_BEAM
.4byte Move_RAGE_FIST
.4byte Move_ARMOR_CANNON
.4byte Move_BITTER_BLADE
.4byte Move_DOUBLE_SHOCK
.4byte Move_GIGATON_HAMMER
.4byte Move_COMEUPPANCE
.4byte Move_AQUA_CUTTER
.4byte Move_BLAZING_TORQUE
.4byte Move_WICKED_TORQUE
.4byte Move_NOXIOUS_TORQUE
.4byte Move_COMBAT_TORQUE
.4byte Move_MAGICAL_TORQUE
@@@@ Z MOVES @@@@ Z MOVES
.4byte Move_BREAKNECK_BLITZ .4byte Move_BREAKNECK_BLITZ
.4byte Move_ALL_OUT_PUMMELING .4byte Move_ALL_OUT_PUMMELING
@ -14345,6 +14394,54 @@ Move_WILDBOLT_STORM::
Move_SANDSEAR_STORM:: Move_SANDSEAR_STORM::
Move_LUNAR_BLESSING:: Move_LUNAR_BLESSING::
Move_TAKE_HEART:: Move_TAKE_HEART::
Move_TERA_BLAST::
Move_SILK_TRAP::
Move_AXE_KICK::
Move_LAST_RESPECTS::
Move_LUMINA_CRASH::
Move_ORDER_UP::
Move_JET_PUNCH::
Move_SPICY_EXTRACT::
Move_SPIN_OUT::
Move_POPULATION_BOMB::
Move_ICE_SPINNER::
Move_GLAIVE_RUSH::
Move_REVIVAL_BLESSING::
Move_SALT_CURE::
Move_TRIPLE_DIVE::
Move_MORTAL_SPIN::
Move_DOODLE::
Move_FILLET_AWAY::
Move_KOWTOW_CLEAVE::
Move_FLOWER_TRICK::
Move_TORCH_SONG::
Move_AQUA_STEP::
Move_RAGING_BULL::
Move_MAKE_IT_RAIN::
Move_RUINATION::
Move_COLLISION_COURSE::
Move_ELECTRO_DRIFT::
Move_SHED_TAIL::
Move_CHILLY_RECEPTION::
Move_TIDY_UP::
Move_SNOWSCAPE::
Move_POUNCE::
Move_TRAILBLAZE::
Move_CHILLING_WATER::
Move_HYPER_DRILL::
Move_TWIN_BEAM::
Move_RAGE_FIST::
Move_ARMOR_CANNON::
Move_BITTER_BLADE::
Move_DOUBLE_SHOCK::
Move_GIGATON_HAMMER::
Move_COMEUPPANCE::
Move_AQUA_CUTTER::
Move_BLAZING_TORQUE::
Move_WICKED_TORQUE::
Move_NOXIOUS_TORQUE::
Move_COMBAT_TORQUE::
Move_MAGICAL_TORQUE::
end @to do end @to do
@@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@ GEN 1-3 @@@@@@@@@@@@@@@@@@@@@@@

View File

@ -412,6 +412,10 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST .4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST
.4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN .4byte BattleScript_EffectTerrainHit @ EFFECT_DAMAGE_SET_TERRAIN
.4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID .4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID
.4byte BattleScript_EffectSleepHit @ EFFECT_SLEEP_HIT
.4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK
.4byte BattleScript_EffectSpecialAttackUpHit @ EFFECT_SPECIAL_ATTACK_UP_HIT
.4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE
BattleScript_AffectionBasedEndurance:: BattleScript_AffectionBasedEndurance::
playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON
@ -1280,6 +1284,23 @@ BattleScript_BurnUpRemoveType::
printstring STRINGID_ATTACKERLOSTFIRETYPE printstring STRINGID_ATTACKERLOSTFIRETYPE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
return return
BattleScript_EffectDoubleShock:
attackcanceler
attackstring
ppreduce
jumpiftype BS_ATTACKER, TYPE_ELECTRIC, BattleScript_DoubleShockWorks
goto BattleScript_ButItFailed
BattleScript_DoubleShockWorks:
setmoveeffect MOVE_EFFECT_DOUBLE_SHOCK | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_DoubleShockRemoveType::
losetype BS_ATTACKER, TYPE_ELECTRIC
printstring STRINGID_ATTACKERLOSTELECTRICTYPE
waitmessage B_WAIT_TIME_LONG
return
BattleScript_EffectPurify: BattleScript_EffectPurify:
attackcanceler attackcanceler
@ -2326,6 +2347,38 @@ BattleScript_QuiverDanceTrySpeed::
BattleScript_QuiverDanceEnd:: BattleScript_QuiverDanceEnd::
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectVictoryDance:
attackcanceler
attackstring
ppreduce
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_VictoryDanceDoMoveAnim
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, MAX_STAT_STAGE, BattleScript_VictoryDanceDoMoveAnim
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, MAX_STAT_STAGE, BattleScript_CantRaiseMultipleStats
BattleScript_VictoryDanceDoMoveAnim::
attackanimation
waitanimation
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_SPEED, 0
setstatchanger STAT_ATK, 1, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceTryDef
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceTryDef
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_VictoryDanceTryDef::
setstatchanger STAT_DEF, 1, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceTrySpeed
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceTrySpeed
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_VictoryDanceTrySpeed::
setstatchanger STAT_SPEED, 1, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_VictoryDanceEnd
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_VictoryDanceEnd
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_VictoryDanceEnd::
goto BattleScript_MoveEnd
BattleScript_EffectSpeedUpHit: BattleScript_EffectSpeedUpHit:
setmoveeffect MOVE_EFFECT_SPD_PLUS_1 | MOVE_EFFECT_AFFECTS_USER setmoveeffect MOVE_EFFECT_SPD_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit goto BattleScript_EffectHit
@ -3202,6 +3255,10 @@ BattleScript_EffectBurnHit::
setmoveeffect MOVE_EFFECT_BURN setmoveeffect MOVE_EFFECT_BURN
goto BattleScript_EffectHit goto BattleScript_EffectHit
BattleScript_EffectSleepHit::
setmoveeffect MOVE_EFFECT_SLEEP
goto BattleScript_EffectHit
BattleScript_EffectFreezeHit:: BattleScript_EffectFreezeHit::
setmoveeffect MOVE_EFFECT_FREEZE setmoveeffect MOVE_EFFECT_FREEZE
goto BattleScript_EffectHit goto BattleScript_EffectHit
@ -4975,6 +5032,10 @@ BattleScript_EffectAttackUpHit::
setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit goto BattleScript_EffectHit
BattleScript_EffectSpecialAttackUpHit::
setmoveeffect MOVE_EFFECT_SP_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectAllStatsUpHit:: BattleScript_EffectAllStatsUpHit::
setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit goto BattleScript_EffectHit
@ -6135,7 +6196,7 @@ BattleScript_FaintedMonTryChoose:
jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonSendOutNew jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonSendOutNew
@ Switch Pokémon before opponent @ Switch Pokémon before opponent
atknameinbuff1 atknameinbuff1
resetintimidatetracebits BS_ATTACKER resetswitchinabilitybits BS_ATTACKER
hpthresholds2 BS_ATTACKER hpthresholds2 BS_ATTACKER
printstring STRINGID_RETURNMON printstring STRINGID_RETURNMON
switchoutabilities BS_ATTACKER switchoutabilities BS_ATTACKER
@ -8342,19 +8403,15 @@ BattleScript_TryAdrenalineOrb:
BattleScript_TryAdrenalineOrbRet: BattleScript_TryAdrenalineOrbRet:
return return
BattleScript_IntimidateActivatesEnd3::
call BattleScript_PauseIntimidateActivates
end3
BattleScript_PauseIntimidateActivates:
pause B_WAIT_TIME_SHORT
BattleScript_IntimidateActivates:: BattleScript_IntimidateActivates::
showabilitypopup BS_ATTACKER
pause B_WAIT_TIME_LONG
destroyabilitypopup
setbyte gBattlerTarget, 0 setbyte gBattlerTarget, 0
call BattleScript_AbilityPopUp BattleScript_IntimidateLoop:
BattleScript_IntimidateActivatesLoop: jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_IntimidateLoopIncrement
setstatchanger STAT_ATK, 1, TRUE jumpiftargetally BattleScript_IntimidateLoopIncrement
trygetintimidatetarget BattleScript_IntimidateActivatesReturn jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement
jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateActivatesLoopIncrement
jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidatePrevented
jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidatePrevented
jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidatePrevented
@ -8364,27 +8421,31 @@ BattleScript_IntimidateActivatesLoop:
jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented
jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented
.endif .endif
statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_IntimidateActivatesLoopIncrement BattleScript_IntimidateEffect:
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_IntimidateActivatesLoopIncrement copybyte sBATTLER, gBattlerTarget
statbuffchange STAT_CHANGE_NOT_PROTECT_AFFECTED | MOVE_EFFECT_CERTAIN, NULL
setgraphicalstatchangevalues setgraphicalstatchangevalues
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNCUTSATTACKWITH printstring STRINGID_PKMNCUTSATTACKWITH
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
call BattleScript_TryAdrenalineOrb call BattleScript_TryAdrenalineOrb
BattleScript_IntimidateActivatesLoopIncrement: BattleScript_IntimidateLoopIncrement:
addbyte gBattlerTarget, 1 addbyte gBattlerTarget, 1
goto BattleScript_IntimidateActivatesLoop jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_IntimidateLoop
BattleScript_IntimidateActivatesReturn: BattleScript_IntimidateEnd:
return destroyabilitypopup
pause B_WAIT_TIME_MED
end3
BattleScript_IntimidatePrevented: BattleScript_IntimidatePrevented:
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp call BattleScript_AbilityPopUp
pause B_WAIT_TIME_LONG
setbyte gBattleCommunication STAT_ATK setbyte gBattleCommunication STAT_ATK
stattextbuffer BS_ATTACKER stattextbuffer BS_TARGET
printstring STRINGID_STATWASNOTLOWERED printstring STRINGID_STATWASNOTLOWERED
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
call BattleScript_TryAdrenalineOrb call BattleScript_TryAdrenalineOrb
goto BattleScript_IntimidateActivatesLoopIncrement goto BattleScript_IntimidateLoopIncrement
BattleScript_DroughtActivates:: BattleScript_DroughtActivates::
pause B_WAIT_TIME_SHORT pause B_WAIT_TIME_SHORT

View File

@ -53,7 +53,7 @@ struct ResourceFlags
#define RESOURCE_FLAG_FLASH_FIRE 0x1 #define RESOURCE_FLAG_FLASH_FIRE 0x1
#define RESOURCE_FLAG_ROOST 0x2 #define RESOURCE_FLAG_ROOST 0x2
#define RESOURCE_FLAG_UNBURDEN 0x4 #define RESOURCE_FLAG_UNBURDEN 0x4
#define RESOURCE_FLAG_INTIMIDATED 0x8 #define RESOURCE_FLAG_UNUSED 0x8
#define RESOURCE_FLAG_TRACED 0x10 #define RESOURCE_FLAG_TRACED 0x10
#define RESOURCE_FLAG_EMERGENCY_EXIT 0x20 #define RESOURCE_FLAG_EMERGENCY_EXIT 0x20
#define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40 #define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40
@ -156,41 +156,42 @@ struct ProtectStruct
struct SpecialStatus struct SpecialStatus
{ {
u8 statLowered:1;
u8 lightningRodRedirected:1;
u8 restoredBattlerSprite: 1;
u8 intimidatedMon:1;
u8 traced:1;
u8 ppNotAffectedByPressure:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
// End of byte
u8 focusSashed:1;
u8 sturdied:1;
u8 stormDrainRedirected:1;
u8 switchInAbilityDone:1;
u8 switchInItemDone:1;
u8 instructedChosenTarget:3;
// End of byte
u8 berryReduced:1;
u8 gemBoost:1;
u8 rototillerAffected:1; // to be affected by rototiller
u8 parentalBondState:2;
u8 multiHitOn:1;
// End of byte, two bits unused
u8 gemParam;
u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute.
u8 dancerUsedMove:1;
u8 dancerOriginalTarget:3;
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
u8 affectionEndured:1;
s32 dmg; s32 dmg;
s32 physicalDmg; s32 physicalDmg;
s32 specialDmg; s32 specialDmg;
u8 physicalBattlerId; u8 physicalBattlerId;
u8 specialBattlerId; u8 specialBattlerId;
u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self.
u8 statLowered:1;
u8 lightningRodRedirected:1;
u8 restoredBattlerSprite: 1;
u8 traced:1;
u8 ppNotAffectedByPressure:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 focusSashed:1;
// End of byte
u8 sturdied:1;
u8 stormDrainRedirected:1;
u8 switchInAbilityDone:1;
u8 switchInItemDone:1;
u8 instructedChosenTarget:3;
u8 berryReduced:1;
// End of byte
u8 gemParam;
// End of byte
u8 gemBoost:1;
u8 rototillerAffected:1; // to be affected by rototiller
u8 parentalBondState:2;
u8 multiHitOn:1;
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
u8 affectionEndured:1;
// End of byte
u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute.
u8 dancerUsedMove:1;
u8 dancerOriginalTarget:3;
// End of byte
}; };
struct SideTimer struct SideTimer
@ -584,7 +585,6 @@ struct BattleStruct
u8 AI_itemFlags[2]; u8 AI_itemFlags[2];
u16 choicedMove[MAX_BATTLERS_COUNT]; u16 choicedMove[MAX_BATTLERS_COUNT];
u16 changedItems[MAX_BATTLERS_COUNT]; u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBattler;
u8 switchInItemsCounter; u8 switchInItemsCounter;
u8 arenaTurnCounter; u8 arenaTurnCounter;
u8 turnSideTracker; u8 turnSideTracker;

View File

@ -152,7 +152,6 @@ extern const u8 BattleScript_ShedSkinActivates[];
extern const u8 BattleScript_WeatherFormChanges[]; extern const u8 BattleScript_WeatherFormChanges[];
extern const u8 BattleScript_WeatherFormChangesLoop[]; extern const u8 BattleScript_WeatherFormChangesLoop[];
extern const u8 BattleScript_WeatherFormChange[]; extern const u8 BattleScript_WeatherFormChange[];
extern const u8 BattleScript_IntimidateActivatesEnd3[];
extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_IntimidateActivates[];
extern const u8 BattleScript_DroughtActivates[]; extern const u8 BattleScript_DroughtActivates[];
extern const u8 BattleScript_TookAttack[]; extern const u8 BattleScript_TookAttack[];
@ -433,6 +432,7 @@ extern const u8 BattleScript_SymbiosisActivates[];
extern const u8 BattleScript_MultiHitPrintStrings[]; extern const u8 BattleScript_MultiHitPrintStrings[];
extern const u8 BattleScript_BurnUpRemoveType[]; extern const u8 BattleScript_BurnUpRemoveType[];
extern const u8 BattleScript_TargetAbilityStatRaiseRet[]; extern const u8 BattleScript_TargetAbilityStatRaiseRet[];
extern const u8 BattleScript_DoubleShockRemoveType[];
extern const u8 BattleScript_SeedSowerActivates[]; extern const u8 BattleScript_SeedSowerActivates[];
extern const u8 BattleScript_AngerShellActivates[]; extern const u8 BattleScript_AngerShellActivates[];
extern const u8 BattleScript_WellBakedBodyActivates[]; extern const u8 BattleScript_WellBakedBodyActivates[];

View File

@ -29,13 +29,11 @@
#define ABILITYEFFECT_WEATHER_FORM 7 #define ABILITYEFFECT_WEATHER_FORM 7
#define ABILITYEFFECT_SYNCHRONIZE 8 #define ABILITYEFFECT_SYNCHRONIZE 8
#define ABILITYEFFECT_ATK_SYNCHRONIZE 9 #define ABILITYEFFECT_ATK_SYNCHRONIZE 9
#define ABILITYEFFECT_INTIMIDATE1 10 #define ABILITYEFFECT_TRACE1 10
#define ABILITYEFFECT_INTIMIDATE2 11 #define ABILITYEFFECT_TRACE2 11
#define ABILITYEFFECT_TRACE1 12 #define ABILITYEFFECT_MOVE_END_OTHER 12
#define ABILITYEFFECT_TRACE2 13 #define ABILITYEFFECT_NEUTRALIZINGGAS 13
#define ABILITYEFFECT_MOVE_END_OTHER 14 #define ABILITYEFFECT_FIELD_SPORT 14 // Only used if B_SPORT_TURNS < GEN_6
#define ABILITYEFFECT_NEUTRALIZINGGAS 15
#define ABILITYEFFECT_FIELD_SPORT 16 // Only used if B_SPORT_TURNS < GEN_6
// Special cases // Special cases
#define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS < GEN_6 #define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS < GEN_6
#define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS < GEN_6 #define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS < GEN_6

View File

@ -70,6 +70,7 @@
#define GEN_6 3 #define GEN_6 3
#define GEN_7 4 #define GEN_7 4
#define GEN_8 5 #define GEN_8 5
#define GEN_9 6
#define GEN_LATEST GEN_8 #define GEN_LATEST GEN_8
#endif // GUARD_CONFIG_H #endif // GUARD_CONFIG_H

View File

@ -370,8 +370,9 @@
#define MOVE_EFFECT_RECOIL_HP_25 0x44 #define MOVE_EFFECT_RECOIL_HP_25 0x44
#define MOVE_EFFECT_RELIC_SONG 0x45 #define MOVE_EFFECT_RELIC_SONG 0x45
#define MOVE_EFFECT_TRAP_BOTH 0x46 #define MOVE_EFFECT_TRAP_BOTH 0x46
#define MOVE_EFFECT_DOUBLE_SHOCK 0x47
#define NUM_MOVE_EFFECTS 0x47 #define NUM_MOVE_EFFECTS 0x48
#define MOVE_EFFECT_AFFECTS_USER 0x4000 #define MOVE_EFFECT_AFFECTS_USER 0x4000
#define MOVE_EFFECT_CERTAIN 0x8000 #define MOVE_EFFECT_CERTAIN 0x8000

View File

@ -393,7 +393,11 @@
#define EFFECT_EXTREME_EVOBOOST 387 #define EFFECT_EXTREME_EVOBOOST 387
#define EFFECT_DAMAGE_SET_TERRAIN 388 // genesis supernova #define EFFECT_DAMAGE_SET_TERRAIN 388 // genesis supernova
#define EFFECT_DARK_VOID 389 #define EFFECT_DARK_VOID 389
#define EFFECT_SLEEP_HIT 390
#define EFFECT_DOUBLE_SHOCK 391
#define EFFECT_SPECIAL_ATTACK_UP_HIT 392
#define EFFECT_VICTORY_DANCE 393
#define NUM_BATTLE_MOVE_EFFECTS 389 #define NUM_BATTLE_MOVE_EFFECTS 394
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -93,7 +93,7 @@
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_GET_BATTLER_FAINTED 4 #define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED 7 #define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_PALACE_FLAVOR_TEXT 8 #define VARIOUS_PALACE_FLAVOR_TEXT 8

View File

@ -630,14 +630,15 @@
#define STRINGID_ATTACKERHEALEDITSBURN 628 #define STRINGID_ATTACKERHEALEDITSBURN 628
#define STRINGID_ATTACKERMELTEDTHEICE 629 #define STRINGID_ATTACKERMELTEDTHEICE 629
#define STRINGID_TARGETTOUGHEDITOUT 630 #define STRINGID_TARGETTOUGHEDITOUT 630
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 631 #define STRINGID_ATTACKERLOSTELECTRICTYPE 631
#define STRINGID_SUNLIGHTACTIVATEDABILITY 632 #define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 632
#define STRINGID_STATWASHEIGHTENED 633 #define STRINGID_SUNLIGHTACTIVATEDABILITY 633
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 634 #define STRINGID_STATWASHEIGHTENED 634
#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 635 #define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 635
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 636 #define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 636
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 637
#define BATTLESTRINGS_COUNT 637 #define BATTLESTRINGS_COUNT 638
// This is the string id that gBattleStringsTable starts with. // This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table, // String ids before this (e.g. STRINGID_INTROMSG) are not in the table,

View File

@ -809,7 +809,59 @@
#define MOVES_COUNT_GEN8 779 #define MOVES_COUNT_GEN8 779
#define MOVES_COUNT MOVES_COUNT_GEN8 // Gen 9 moves.
#define MOVE_TERA_BLAST 779
#define MOVE_SILK_TRAP 780
#define MOVE_AXE_KICK 781
#define MOVE_LAST_RESPECTS 782
#define MOVE_LUMINA_CRASH 783
#define MOVE_ORDER_UP 784
#define MOVE_JET_PUNCH 785
#define MOVE_SPICY_EXTRACT 786
#define MOVE_SPIN_OUT 787
#define MOVE_POPULATION_BOMB 788
#define MOVE_ICE_SPINNER 789
#define MOVE_GLAIVE_RUSH 790
#define MOVE_REVIVAL_BLESSING 791
#define MOVE_SALT_CURE 792
#define MOVE_TRIPLE_DIVE 793
#define MOVE_MORTAL_SPIN 794
#define MOVE_DOODLE 795
#define MOVE_FILLET_AWAY 796
#define MOVE_KOWTOW_CLEAVE 797
#define MOVE_FLOWER_TRICK 798
#define MOVE_TORCH_SONG 799
#define MOVE_AQUA_STEP 800
#define MOVE_RAGING_BULL 801
#define MOVE_MAKE_IT_RAIN 802
#define MOVE_RUINATION 803
#define MOVE_COLLISION_COURSE 804
#define MOVE_ELECTRO_DRIFT 805
#define MOVE_SHED_TAIL 806
#define MOVE_CHILLY_RECEPTION 807
#define MOVE_TIDY_UP 808
#define MOVE_SNOWSCAPE 809
#define MOVE_POUNCE 810
#define MOVE_TRAILBLAZE 811
#define MOVE_CHILLING_WATER 812
#define MOVE_HYPER_DRILL 813
#define MOVE_TWIN_BEAM 814
#define MOVE_RAGE_FIST 815
#define MOVE_ARMOR_CANNON 816
#define MOVE_BITTER_BLADE 817
#define MOVE_DOUBLE_SHOCK 818
#define MOVE_GIGATON_HAMMER 819
#define MOVE_COMEUPPANCE 820
#define MOVE_AQUA_CUTTER 821
#define MOVE_BLAZING_TORQUE 822
#define MOVE_WICKED_TORQUE 823
#define MOVE_NOXIOUS_TORQUE 824
#define MOVE_COMBAT_TORQUE 825
#define MOVE_MAGICAL_TORQUE 826
#define MOVES_COUNT_GEN9 827
#define MOVES_COUNT MOVES_COUNT_GEN9
// Z Moves // Z Moves
#define MOVE_BREAKNECK_BLITZ (MOVES_COUNT + 0) #define MOVE_BREAKNECK_BLITZ (MOVES_COUNT + 0)

View File

@ -1082,6 +1082,14 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPDEF)) else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPDEF))
score -= 6; score -= 6;
break; break;
case EFFECT_VICTORY_DANCE:
if (gBattleMons[battlerAtk].statStages[STAT_ATK] >= MAX_STAT_STAGE || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL))
score -= 10;
else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_SPEED))
score -= 8;
else if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_DEF))
score -= 6;
break;
case EFFECT_SHIFT_GEAR: case EFFECT_SHIFT_GEAR:
if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL)) if (!BattlerStatCanRise(battlerAtk, AI_DATA->abilities[battlerAtk], STAT_ATK) || !HasMoveWithSplit(battlerAtk, SPLIT_PHYSICAL))
score -= 10; score -= 10;
@ -2007,6 +2015,10 @@ static s16 AI_CheckBadMove(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_FIRE)) if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_FIRE))
score -= 10; score -= 10;
break; break;
case EFFECT_DOUBLE_SHOCK:
if (!IS_BATTLER_OF_TYPE(battlerAtk, TYPE_ELECTRIC))
score -= 10;
break;
case EFFECT_DEFOG: case EFFECT_DEFOG:
if (gSideStatuses[GetBattlerSide(battlerDef)] if (gSideStatuses[GetBattlerSide(battlerDef)]
& (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL | SIDE_STATUS_SAFEGUARD | SIDE_STATUS_MIST) & (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL | SIDE_STATUS_SAFEGUARD | SIDE_STATUS_MIST)
@ -3938,6 +3950,10 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
if (sereneGraceBoost) if (sereneGraceBoost)
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score);
break; break;
case EFFECT_SPECIAL_ATTACK_UP_HIT:
if (sereneGraceBoost)
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score);
break;
case EFFECT_FELL_STINGER: case EFFECT_FELL_STINGER:
if (gBattleMons[battlerAtk].statStages[STAT_ATK] < MAX_STAT_STAGE if (gBattleMons[battlerAtk].statStages[STAT_ATK] < MAX_STAT_STAGE
&& AI_DATA->abilities[battlerAtk] != ABILITY_CONTRARY && AI_DATA->abilities[battlerAtk] != ABILITY_CONTRARY
@ -4393,6 +4409,11 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score);
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score); IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPDEF, &score);
break; break;
case EFFECT_VICTORY_DANCE:
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score);
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_ATK, &score);
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_DEF, &score);
break;
case EFFECT_SHELL_SMASH: case EFFECT_SHELL_SMASH:
if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS) if (AI_DATA->holdEffects[battlerAtk] == HOLD_EFFECT_RESTORE_STATS)
score += 1; score += 1;
@ -4878,6 +4899,7 @@ static s16 AI_SetupFirstTurn(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
case EFFECT_SANDSTORM: case EFFECT_SANDSTORM:
case EFFECT_HAIL: case EFFECT_HAIL:
case EFFECT_GEOMANCY: case EFFECT_GEOMANCY:
case EFFECT_VICTORY_DANCE:
score += 2; score += 2;
break; break;
default: default:

View File

@ -2091,6 +2091,7 @@ bool32 IsStatRaisingEffect(u16 effect)
case EFFECT_BULK_UP: case EFFECT_BULK_UP:
case EFFECT_GEOMANCY: case EFFECT_GEOMANCY:
case EFFECT_STOCKPILE: case EFFECT_STOCKPILE:
case EFFECT_VICTORY_DANCE:
return TRUE; return TRUE;
default: default:
return FALSE; return FALSE;

View File

@ -1767,7 +1767,7 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data)
break; break;
case LIST_ITEM_MOVES: case LIST_ITEM_MOVES:
data->modifyArrows.minValue = 0; data->modifyArrows.minValue = 0;
data->modifyArrows.maxValue = MOVES_COUNT_GEN8 - 1; data->modifyArrows.maxValue = MOVES_COUNT - 1;
data->modifyArrows.maxDigits = 3; data->modifyArrows.maxDigits = 3;
if (data->currentSecondaryListItemId == 4) if (data->currentSecondaryListItemId == 4)
{ {

View File

@ -3720,8 +3720,6 @@ static void TryDoEventsBeforeFirstTurn(void)
if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerAttacker, 0, 0, 0) != 0) if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerAttacker, 0, 0, 0) != 0)
return; return;
} }
if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0)
return;
if (AbilityBattleEffects(ABILITYEFFECT_TRACE1, 0, 0, 0, 0) != 0) if (AbilityBattleEffects(ABILITYEFFECT_TRACE1, 0, 0, 0, 0) != 0)
return; return;
// Check all switch in items having effect from the fastest mon to slowest. // Check all switch in items having effect from the fastest mon to slowest.

View File

@ -759,6 +759,7 @@ static const u8 sText_AttackerBrokeThroughParalysis[] = _("{B_ATK_NAME_WITH_PREF
static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!"); static const u8 sText_AttackerHealedItsBurn[] = _("{B_ATK_NAME_WITH_PREFIX} healed its burn with\nits sheer determination!");
static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!"); static const u8 sText_AttackerMeltedTheIce[] = _("{B_ATK_NAME_WITH_PREFIX} melted the ice with\nits fiery determination!");
static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!"); static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!");
static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!");
static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_ATK_NAME_WITH_PREFIX} with power!"); static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_ATK_NAME_WITH_PREFIX} with power!");
static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}!"); static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}!");
static const u8 sText_StatWasHeightened[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!"); static const u8 sText_StatWasHeightened[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!");
@ -1392,6 +1393,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE - BATTLESTRINGS_TABLE_START] = sText_CantEscapeBecauseOfCurrentMove, [STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE - BATTLESTRINGS_TABLE_START] = sText_CantEscapeBecauseOfCurrentMove,
[STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh, [STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh,
[STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy, [STRINGID_TARGETTOOHEAVY - BATTLESTRINGS_TABLE_START] = sText_TargetTooHeavy,
[STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType,
}; };
const u16 gZEffectStringIds[] = const u16 gZEffectStringIds[] =

View File

@ -544,7 +544,7 @@ static void Cmd_setuserstatus3(void);
static void Cmd_assistattackselect(void); static void Cmd_assistattackselect(void);
static void Cmd_trysetmagiccoat(void); static void Cmd_trysetmagiccoat(void);
static void Cmd_trysetsnatch(void); static void Cmd_trysetsnatch(void);
static void Cmd_trygetintimidatetarget(void); static void Cmd_unused2(void);
static void Cmd_switchoutabilities(void); static void Cmd_switchoutabilities(void);
static void Cmd_jumpifhasnohp(void); static void Cmd_jumpifhasnohp(void);
static void Cmd_getsecretpowereffect(void); static void Cmd_getsecretpowereffect(void);
@ -803,7 +803,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_assistattackselect, //0xDE Cmd_assistattackselect, //0xDE
Cmd_trysetmagiccoat, //0xDF Cmd_trysetmagiccoat, //0xDF
Cmd_trysetsnatch, //0xE0 Cmd_trysetsnatch, //0xE0
Cmd_trygetintimidatetarget, //0xE1 Cmd_unused2, //0xE1
Cmd_switchoutabilities, //0xE2 Cmd_switchoutabilities, //0xE2
Cmd_jumpifhasnohp, //0xE3 Cmd_jumpifhasnohp, //0xE3
Cmd_getsecretpowereffect, //0xE4 Cmd_getsecretpowereffect, //0xE4
@ -1130,6 +1130,7 @@ static const u16 sFinalStrikeOnlyEffects[] =
EFFECT_BUG_BITE, EFFECT_BUG_BITE,
EFFECT_THIEF, EFFECT_THIEF,
EFFECT_BURN_UP, EFFECT_BURN_UP,
EFFECT_DOUBLE_SHOCK,
EFFECT_SECRET_POWER, EFFECT_SECRET_POWER,
EFFECT_SMACK_DOWN, EFFECT_SMACK_DOWN,
EFFECT_SPARKLING_ARIA, EFFECT_SPARKLING_ARIA,
@ -3646,6 +3647,11 @@ void SetMoveEffect(bool32 primary, u32 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1); BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_BurnUpRemoveType; gBattlescriptCurrInstr = BattleScript_BurnUpRemoveType;
break; break;
case MOVE_EFFECT_DOUBLE_SHOCK:
// This seems unnecessary but is done to make it work properly with Parental Bond
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_DoubleShockRemoveType;
break;
} }
} }
} }
@ -6782,7 +6788,6 @@ static void Cmd_switchineffects(void)
if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0)
|| ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE) || ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gActiveBattler, FALSE)
|| AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE2, 0, 0, 0, 0)
|| AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE2, 0, 0, 0, 0)
|| AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0)) || AbilityBattleEffects(ABILITYEFFECT_WEATHER_FORM, 0, 0, 0, 0))
return; return;
@ -8468,8 +8473,7 @@ static void Cmd_various(void)
else else
gBattleCommunication[0] = FALSE; gBattleCommunication[0] = FALSE;
break; break;
case VARIOUS_RESET_INTIMIDATE_TRACE_BITS: case VARIOUS_RESET_SWITCH_IN_ABILITY_BITS:
gSpecialStatuses[gActiveBattler].intimidatedMon = FALSE;
gSpecialStatuses[gActiveBattler].traced = FALSE; gSpecialStatuses[gActiveBattler].traced = FALSE;
gSpecialStatuses[gActiveBattler].switchInAbilityDone = FALSE; gSpecialStatuses[gActiveBattler].switchInAbilityDone = FALSE;
break; break;
@ -8633,7 +8637,6 @@ static void Cmd_various(void)
gBattlescriptCurrInstr += 3; gBattlescriptCurrInstr += 3;
AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, gActiveBattler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, gActiveBattler, 0, 0, 0);
AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0);
AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE2, gActiveBattler, 0, 0, 0);
AbilityBattleEffects(ABILITYEFFECT_TRACE2, gActiveBattler, 0, 0, 0); AbilityBattleEffects(ABILITYEFFECT_TRACE2, gActiveBattler, 0, 0, 0);
return; return;
case VARIOUS_SAVE_TARGET: case VARIOUS_SAVE_TARGET:
@ -11758,7 +11761,9 @@ static void Cmd_mimicattackcopy(void)
static void Cmd_metronome(void) static void Cmd_metronome(void)
{ {
#if B_METRONOME_MOVES >= GEN_8 #if B_METRONOME_MOVES >= GEN_9
u16 moveCount = MOVES_COUNT_GEN9;
#elif B_METRONOME_MOVES >= GEN_8
u16 moveCount = MOVES_COUNT_GEN8; u16 moveCount = MOVES_COUNT_GEN8;
#elif B_METRONOME_MOVES >= GEN_7 #elif B_METRONOME_MOVES >= GEN_7
u16 moveCount = MOVES_COUNT_GEN7; u16 moveCount = MOVES_COUNT_GEN7;
@ -13534,27 +13539,8 @@ static void Cmd_trysetsnatch(void)
} }
} }
static void Cmd_trygetintimidatetarget(void) static void Cmd_unused2(void)
{ {
u8 side;
gBattleScripting.battler = gBattleStruct->intimidateBattler;
side = GetBattlerSide(gBattleScripting.battler);
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability)
for (;gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
if (GetBattlerSide(gBattlerTarget) == side)
continue;
if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget]))
break;
}
if (gBattlerTarget >= gBattlersCount)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
} }
static void Cmd_switchoutabilities(void) static void Cmd_switchoutabilities(void)

View File

@ -86,220 +86,402 @@ static const u16 sVariableDmgMoves[] =
static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] = static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
{ {
[EFFECT_HIT] = 1, [EFFECT_HIT] = 1,
[EFFECT_SLEEP] = 1, [EFFECT_SLEEP] = 1,
[EFFECT_POISON_HIT] = 1, [EFFECT_POISON_HIT] = 1,
[EFFECT_ABSORB] = 4, [EFFECT_ABSORB] = 4,
[EFFECT_BURN_HIT] = 1, [EFFECT_BURN_HIT] = 1,
[EFFECT_FREEZE_HIT] = 1, [EFFECT_FREEZE_HIT] = 1,
[EFFECT_PARALYZE_HIT] = 1, [EFFECT_PARALYZE_HIT] = 1,
[EFFECT_EXPLOSION] = 0, [EFFECT_EXPLOSION] = 0,
[EFFECT_DREAM_EATER] = 5, [EFFECT_DREAM_EATER] = 5,
[EFFECT_MIRROR_MOVE] = 1, [EFFECT_MIRROR_MOVE] = 1,
[EFFECT_ATTACK_UP] = 1, [EFFECT_ATTACK_UP] = 1,
[EFFECT_DEFENSE_UP] = 1, [EFFECT_DEFENSE_UP] = 1,
[EFFECT_SPEED_UP] = 1, [EFFECT_SPEED_UP] = 1,
[EFFECT_SPECIAL_ATTACK_UP] = 1, [EFFECT_SPECIAL_ATTACK_UP] = 1,
[EFFECT_SPECIAL_DEFENSE_UP] = 1, [EFFECT_SPECIAL_DEFENSE_UP] = 1,
[EFFECT_ACCURACY_UP] = 1, [EFFECT_ACCURACY_UP] = 1,
[EFFECT_EVASION_UP] = 1, [EFFECT_EVASION_UP] = 1,
// [EFFECT_ALWAYS_HIT] = 2, // [EFFECT_ALWAYS_HIT] = 2,
[EFFECT_ATTACK_DOWN] = 1, [EFFECT_ATTACK_DOWN] = 1,
[EFFECT_DEFENSE_DOWN] = 1, [EFFECT_DEFENSE_DOWN] = 1,
[EFFECT_SPEED_DOWN] = 1, [EFFECT_SPEED_DOWN] = 1,
[EFFECT_SPECIAL_ATTACK_DOWN] = 1, [EFFECT_SPECIAL_ATTACK_DOWN] = 1,
[EFFECT_SPECIAL_DEFENSE_DOWN] = 1, [EFFECT_SPECIAL_DEFENSE_DOWN] = 1,
[EFFECT_ACCURACY_DOWN] = 1, [EFFECT_ACCURACY_DOWN] = 1,
[EFFECT_EVASION_DOWN] = 1, [EFFECT_EVASION_DOWN] = 1,
[EFFECT_HAZE] = 5, [EFFECT_HAZE] = 5,
[EFFECT_BIDE] = 5, [EFFECT_BIDE] = 5,
[EFFECT_RAMPAGE] = 4, [EFFECT_RAMPAGE] = 4,
[EFFECT_ROAR] = 5, [EFFECT_ROAR] = 5,
[EFFECT_MULTI_HIT] = 1, [EFFECT_MULTI_HIT] = 1,
[EFFECT_CONVERSION] = 3, [EFFECT_CONVERSION] = 3,
[EFFECT_FLINCH_HIT] = 1, [EFFECT_FLINCH_HIT] = 1,
[EFFECT_RESTORE_HP] = 3, [EFFECT_RESTORE_HP] = 3,
[EFFECT_TOXIC] = 5, [EFFECT_TOXIC] = 5,
[EFFECT_PAY_DAY] = 1, [EFFECT_PAY_DAY] = 1,
[EFFECT_LIGHT_SCREEN] = 7, [EFFECT_LIGHT_SCREEN] = 7,
[EFFECT_TRI_ATTACK] = 1, [EFFECT_TRI_ATTACK] = 1,
[EFFECT_REST] = 7, [EFFECT_REST] = 7,
[EFFECT_OHKO] = 7, [EFFECT_OHKO] = 7,
// [EFFECT_RAZOR_WIND] = 1, // [EFFECT_RAZOR_WIND] = 1,
[EFFECT_SUPER_FANG] = 5, [EFFECT_SUPER_FANG] = 5,
[EFFECT_DRAGON_RAGE] = 2, [EFFECT_DRAGON_RAGE] = 2,
[EFFECT_TRAP] = 4, [EFFECT_TRAP] = 4,
// [EFFECT_HIGH_CRITICAL] = 1, // [EFFECT_HIGH_CRITICAL] = 1,
// [EFFECT_DOUBLE_HIT] = 1, // [EFFECT_DOUBLE_HIT] = 1,
[EFFECT_RECOIL_IF_MISS] = 1, [EFFECT_RECOIL_IF_MISS] = 1,
[EFFECT_MIST] = 5, [EFFECT_MIST] = 5,
[EFFECT_FOCUS_ENERGY] = 1, [EFFECT_FOCUS_ENERGY] = 1,
[EFFECT_RECOIL_25] = 2, [EFFECT_RECOIL_25] = 2,
[EFFECT_CONFUSE] = 4, [EFFECT_CONFUSE] = 4,
[EFFECT_ATTACK_UP_2] = 1, [EFFECT_ATTACK_UP_2] = 1,
[EFFECT_DEFENSE_UP_2] = 1, [EFFECT_DEFENSE_UP_2] = 1,
[EFFECT_SPEED_UP_2] = 1, [EFFECT_SPEED_UP_2] = 1,
[EFFECT_SPECIAL_ATTACK_UP_2] = 1, [EFFECT_SPECIAL_ATTACK_UP_2] = 1,
[EFFECT_SPECIAL_DEFENSE_UP_2] = 1, [EFFECT_SPECIAL_DEFENSE_UP_2] = 1,
[EFFECT_ACCURACY_UP_2] = 1, [EFFECT_ACCURACY_UP_2] = 1,
[EFFECT_EVASION_UP_2] = 1, [EFFECT_EVASION_UP_2] = 1,
[EFFECT_TRANSFORM] = 0, [EFFECT_TRANSFORM] = 0,
[EFFECT_ATTACK_DOWN_2] = 1, [EFFECT_ATTACK_DOWN_2] = 1,
[EFFECT_DEFENSE_DOWN_2] = 1, [EFFECT_DEFENSE_DOWN_2] = 1,
[EFFECT_SPEED_DOWN_2] = 1, [EFFECT_SPEED_DOWN_2] = 1,
[EFFECT_SPECIAL_ATTACK_DOWN_2] = 1, [EFFECT_SPECIAL_ATTACK_DOWN_2] = 1,
[EFFECT_SPECIAL_DEFENSE_DOWN_2] = 1, [EFFECT_SPECIAL_DEFENSE_DOWN_2] = 1,
[EFFECT_ACCURACY_DOWN_2] = 1, [EFFECT_ACCURACY_DOWN_2] = 1,
[EFFECT_EVASION_DOWN_2] = 1, [EFFECT_EVASION_DOWN_2] = 1,
[EFFECT_REFLECT] = 7, [EFFECT_REFLECT] = 7,
[EFFECT_POISON] = 4, [EFFECT_POISON] = 4,
[EFFECT_PARALYZE] = 4, [EFFECT_PARALYZE] = 4,
[EFFECT_ATTACK_DOWN_HIT] = 1, [EFFECT_ATTACK_DOWN_HIT] = 1,
[EFFECT_DEFENSE_DOWN_HIT] = 1, [EFFECT_DEFENSE_DOWN_HIT] = 1,
[EFFECT_SPEED_DOWN_HIT] = 1, [EFFECT_SPEED_DOWN_HIT] = 1,
[EFFECT_SPECIAL_ATTACK_DOWN_HIT] = 1, [EFFECT_SPECIAL_ATTACK_DOWN_HIT] = 1,
[EFFECT_SPECIAL_DEFENSE_DOWN_HIT] = 1, [EFFECT_SPECIAL_DEFENSE_DOWN_HIT] = 1,
[EFFECT_ACCURACY_DOWN_HIT] = 1, [EFFECT_ACCURACY_DOWN_HIT] = 1,
[EFFECT_EVASION_DOWN_HIT] = 1, [EFFECT_EVASION_DOWN_HIT] = 1,
// [EFFECT_SKY_ATTACK] = 4, // [EFFECT_SKY_ATTACK] = 4,
[EFFECT_CONFUSE_HIT] = 1, [EFFECT_CONFUSE_HIT] = 1,
// [EFFECT_TWINEEDLE] = 1, // [EFFECT_TWINEEDLE] = 1,
[EFFECT_VITAL_THROW] = 1, [EFFECT_VITAL_THROW] = 1,
[EFFECT_SUBSTITUTE] = 4, [EFFECT_SUBSTITUTE] = 4,
[EFFECT_RECHARGE] = 5, [EFFECT_RECHARGE] = 5,
[EFFECT_RAGE] = 2, [EFFECT_RAGE] = 2,
[EFFECT_MIMIC] = 4, [EFFECT_MIMIC] = 4,
[EFFECT_METRONOME] = 1, [EFFECT_METRONOME] = 1,
[EFFECT_LEECH_SEED] = 4, [EFFECT_LEECH_SEED] = 4,
[EFFECT_DO_NOTHING] = 1, [EFFECT_DO_NOTHING] = 1,
[EFFECT_DISABLE] = 7, [EFFECT_DISABLE] = 7,
[EFFECT_LEVEL_DAMAGE] = 2, [EFFECT_LEVEL_DAMAGE] = 2,
[EFFECT_PSYWAVE] = 1, [EFFECT_PSYWAVE] = 1,
[EFFECT_COUNTER] = 5, [EFFECT_COUNTER] = 5,
[EFFECT_ENCORE] = 7, [EFFECT_ENCORE] = 7,
[EFFECT_PAIN_SPLIT] = 3, [EFFECT_PAIN_SPLIT] = 3,
[EFFECT_SNORE] = 3, [EFFECT_SNORE] = 3,
[EFFECT_CONVERSION_2] = 4, [EFFECT_CONVERSION_2] = 4,
[EFFECT_LOCK_ON] = 3, [EFFECT_LOCK_ON] = 3,
[EFFECT_SKETCH] = 3, [EFFECT_SKETCH] = 3,
// [EFFECT_UNUSED_60] = 3, // [EFFECT_UNUSED_60] = 3,
[EFFECT_SLEEP_TALK] = 3, [EFFECT_SLEEP_TALK] = 3,
[EFFECT_DESTINY_BOND] = 3, [EFFECT_DESTINY_BOND] = 3,
[EFFECT_FLAIL] = 2, [EFFECT_FLAIL] = 2,
[EFFECT_SPITE] = 4, [EFFECT_SPITE] = 4,
[EFFECT_FALSE_SWIPE] = 1, [EFFECT_FALSE_SWIPE] = 1,
[EFFECT_HEAL_BELL] = 5, [EFFECT_HEAL_BELL] = 5,
// [EFFECT_QUICK_ATTACK] = 1, // [EFFECT_QUICK_ATTACK] = 1,
[EFFECT_TRIPLE_KICK] = 1, [EFFECT_TRIPLE_KICK] = 1,
[EFFECT_THIEF] = 4, [EFFECT_THIEF] = 4,
[EFFECT_MEAN_LOOK] = 5, [EFFECT_MEAN_LOOK] = 5,
[EFFECT_NIGHTMARE] = 3, [EFFECT_NIGHTMARE] = 3,
[EFFECT_MINIMIZE] = 1, [EFFECT_MINIMIZE] = 1,
[EFFECT_CURSE] = 2, [EFFECT_CURSE] = 2,
// [EFFECT_UNUSED_6E] = 1, // [EFFECT_UNUSED_6E] = 1,
[EFFECT_PROTECT] = 5, [EFFECT_PROTECT] = 5,
[EFFECT_SPIKES] = 4, [EFFECT_SPIKES] = 4,
[EFFECT_FORESIGHT] = 3, [EFFECT_FORESIGHT] = 3,
[EFFECT_PERISH_SONG] = 6, [EFFECT_PERISH_SONG] = 6,
[EFFECT_SANDSTORM] = 4, [EFFECT_SANDSTORM] = 4,
[EFFECT_ENDURE] = 3, [EFFECT_ENDURE] = 3,
[EFFECT_ROLLOUT] = 3, [EFFECT_ROLLOUT] = 3,
[EFFECT_SWAGGER] = 3, [EFFECT_SWAGGER] = 3,
[EFFECT_FURY_CUTTER] = 2, [EFFECT_FURY_CUTTER] = 2,
[EFFECT_ATTRACT] = 4, [EFFECT_ATTRACT] = 4,
[EFFECT_RETURN] = 1, [EFFECT_RETURN] = 1,
[EFFECT_PRESENT] = 1, [EFFECT_PRESENT] = 1,
[EFFECT_FRUSTRATION] = 1, [EFFECT_FRUSTRATION] = 1,
[EFFECT_SAFEGUARD] = 5, [EFFECT_SAFEGUARD] = 5,
// [EFFECT_THAW_HIT] = 1, Now unused // [EFFECT_THAW_HIT] = 1, Now unused
[EFFECT_MAGNITUDE] = 1, [EFFECT_MAGNITUDE] = 1,
[EFFECT_BATON_PASS] = 7, [EFFECT_BATON_PASS] = 7,
[EFFECT_PURSUIT] = 2, [EFFECT_PURSUIT] = 2,
[EFFECT_RAPID_SPIN] = 2, [EFFECT_RAPID_SPIN] = 2,
[EFFECT_SONICBOOM] = 1, [EFFECT_SONICBOOM] = 1,
// [EFFECT_UNUSED_83] = 1, // [EFFECT_UNUSED_83] = 1,
[EFFECT_MORNING_SUN] = 4, [EFFECT_MORNING_SUN] = 4,
[EFFECT_SYNTHESIS] = 4, [EFFECT_SYNTHESIS] = 4,
[EFFECT_MOONLIGHT] = 4, [EFFECT_MOONLIGHT] = 4,
[EFFECT_HIDDEN_POWER] = 1, [EFFECT_HIDDEN_POWER] = 1,
[EFFECT_RAIN_DANCE] = 4, [EFFECT_RAIN_DANCE] = 4,
[EFFECT_SUNNY_DAY] = 4, [EFFECT_SUNNY_DAY] = 4,
[EFFECT_DEFENSE_UP_HIT] = 1, [EFFECT_DEFENSE_UP_HIT] = 1,
[EFFECT_ATTACK_UP_HIT] = 1, [EFFECT_ATTACK_UP_HIT] = 1,
[EFFECT_ALL_STATS_UP_HIT] = 1, [EFFECT_ALL_STATS_UP_HIT] = 1,
// [EFFECT_UNUSED_8D] = 1, // [EFFECT_UNUSED_8D] = 1,
[EFFECT_BELLY_DRUM] = 7, [EFFECT_BELLY_DRUM] = 7,
[EFFECT_PSYCH_UP] = 7, [EFFECT_PSYCH_UP] = 7,
[EFFECT_MIRROR_COAT] = 6, [EFFECT_MIRROR_COAT] = 6,
[EFFECT_SKULL_BASH] = 3, [EFFECT_SKULL_BASH] = 3,
[EFFECT_TWISTER] = 1, [EFFECT_TWISTER] = 1,
[EFFECT_EARTHQUAKE] = 1, [EFFECT_EARTHQUAKE] = 1,
[EFFECT_FUTURE_SIGHT] = 1, [EFFECT_FUTURE_SIGHT] = 1,
[EFFECT_GUST] = 1, [EFFECT_GUST] = 1,
[EFFECT_FLINCH_MINIMIZE_HIT] = 1, [EFFECT_FLINCH_MINIMIZE_HIT] = 1,
[EFFECT_SOLAR_BEAM] = 1, [EFFECT_SOLAR_BEAM] = 1,
[EFFECT_THUNDER] = 1, [EFFECT_THUNDER] = 1,
[EFFECT_TELEPORT] = 1, [EFFECT_TELEPORT] = 1,
[EFFECT_BEAT_UP] = 2, [EFFECT_BEAT_UP] = 2,
[EFFECT_SEMI_INVULNERABLE] = 3, [EFFECT_SEMI_INVULNERABLE] = 3,
[EFFECT_DEFENSE_CURL] = 1, [EFFECT_DEFENSE_CURL] = 1,
[EFFECT_SOFTBOILED] = 1, [EFFECT_SOFTBOILED] = 1,
[EFFECT_FAKE_OUT] = 4, [EFFECT_FAKE_OUT] = 4,
[EFFECT_UPROAR] = 4, [EFFECT_UPROAR] = 4,
[EFFECT_STOCKPILE] = 3, [EFFECT_STOCKPILE] = 3,
[EFFECT_SPIT_UP] = 3, [EFFECT_SPIT_UP] = 3,
[EFFECT_SWALLOW] = 3, [EFFECT_SWALLOW] = 3,
// [EFFECT_UNUSED_A3] = 1, // [EFFECT_UNUSED_A3] = 1,
[EFFECT_HAIL] = 4, [EFFECT_HAIL] = 4,
[EFFECT_TORMENT] = 7, [EFFECT_TORMENT] = 7,
[EFFECT_FLATTER] = 7, [EFFECT_FLATTER] = 7,
[EFFECT_WILL_O_WISP] = 5, [EFFECT_WILL_O_WISP] = 5,
[EFFECT_MEMENTO] = 7, [EFFECT_MEMENTO] = 7,
[EFFECT_FACADE] = 1, [EFFECT_FACADE] = 1,
[EFFECT_FOCUS_PUNCH] = 7, [EFFECT_FOCUS_PUNCH] = 7,
[EFFECT_SMELLINGSALT] = 1, [EFFECT_SMELLINGSALT] = 1,
[EFFECT_FOLLOW_ME] = 5, [EFFECT_FOLLOW_ME] = 5,
[EFFECT_NATURE_POWER] = 0, [EFFECT_NATURE_POWER] = 0,
[EFFECT_CHARGE] = 4, [EFFECT_CHARGE] = 4,
[EFFECT_TAUNT] = 4, [EFFECT_TAUNT] = 4,
[EFFECT_HELPING_HAND] = 4, [EFFECT_HELPING_HAND] = 4,
[EFFECT_TRICK] = 4, [EFFECT_TRICK] = 4,
[EFFECT_ROLE_PLAY] = 4, [EFFECT_ROLE_PLAY] = 4,
[EFFECT_WISH] = 2, [EFFECT_WISH] = 2,
[EFFECT_ASSIST] = 2, [EFFECT_ASSIST] = 2,
[EFFECT_INGRAIN] = 6, [EFFECT_INGRAIN] = 6,
[EFFECT_SUPERPOWER] = 3, [EFFECT_SUPERPOWER] = 3,
[EFFECT_MAGIC_COAT] = 6, [EFFECT_MAGIC_COAT] = 6,
[EFFECT_RECYCLE] = 4, [EFFECT_RECYCLE] = 4,
[EFFECT_REVENGE] = 4, [EFFECT_REVENGE] = 4,
[EFFECT_BRICK_BREAK] = 2, [EFFECT_BRICK_BREAK] = 2,
[EFFECT_YAWN] = 5, [EFFECT_YAWN] = 5,
[EFFECT_KNOCK_OFF] = 2, [EFFECT_KNOCK_OFF] = 2,
[EFFECT_ENDEAVOR] = 1, [EFFECT_ENDEAVOR] = 1,
[EFFECT_ERUPTION] = 1, [EFFECT_ERUPTION] = 1,
[EFFECT_SKILL_SWAP] = 6, [EFFECT_SKILL_SWAP] = 6,
[EFFECT_IMPRISON] = 6, [EFFECT_IMPRISON] = 6,
[EFFECT_REFRESH] = 6, [EFFECT_REFRESH] = 6,
[EFFECT_GRUDGE] = 1, [EFFECT_GRUDGE] = 1,
[EFFECT_SNATCH] = 1, [EFFECT_SNATCH] = 1,
[EFFECT_LOW_KICK] = 1, [EFFECT_LOW_KICK] = 1,
[EFFECT_SECRET_POWER] = 1, [EFFECT_SECRET_POWER] = 1,
[EFFECT_RECOIL_33] = 2, [EFFECT_RECOIL_33] = 2,
[EFFECT_TEETER_DANCE] = 6, [EFFECT_TEETER_DANCE] = 6,
// [EFFECT_BLAZE_KICK] = 1, // [EFFECT_BLAZE_KICK] = 1,
[EFFECT_MUD_SPORT] = 4, [EFFECT_MUD_SPORT] = 4,
[EFFECT_POISON_FANG] = 1, [EFFECT_POISON_FANG] = 1,
[EFFECT_WEATHER_BALL] = 1, [EFFECT_WEATHER_BALL] = 1,
[EFFECT_OVERHEAT] = 3, [EFFECT_OVERHEAT] = 3,
[EFFECT_TICKLE] = 1, [EFFECT_TICKLE] = 1,
[EFFECT_COSMIC_POWER] = 1, [EFFECT_COSMIC_POWER] = 1,
[EFFECT_SKY_UPPERCUT] = 1, [EFFECT_SKY_UPPERCUT] = 1,
[EFFECT_BULK_UP] = 1, [EFFECT_BULK_UP] = 1,
// [EFFECT_POISON_TAIL] = 1, // [EFFECT_POISON_TAIL] = 1,
[EFFECT_WATER_SPORT] = 4, [EFFECT_WATER_SPORT] = 4,
[EFFECT_CALM_MIND] = 1, [EFFECT_CALM_MIND] = 1,
[EFFECT_DRAGON_DANCE] = 1, [EFFECT_DRAGON_DANCE] = 1,
[EFFECT_CAMOUFLAGE] = 3 [EFFECT_CAMOUFLAGE] = 3,
[EFFECT_PLEDGE] = 0, // TODO: Assign points
[EFFECT_FLING] = 0, // TODO: Assign points
[EFFECT_NATURAL_GIFT] = 0, // TODO: Assign points
[EFFECT_WAKE_UP_SLAP] = 0, // TODO: Assign points
[EFFECT_WRING_OUT] = 0, // TODO: Assign points
[EFFECT_HEX] = 0, // TODO: Assign points
[EFFECT_ASSURANCE] = 0, // TODO: Assign points
[EFFECT_TRUMP_CARD] = 0, // TODO: Assign points
[EFFECT_ACROBATICS] = 0, // TODO: Assign points
[EFFECT_HEAT_CRASH] = 0, // TODO: Assign points
[EFFECT_PUNISHMENT] = 0, // TODO: Assign points
[EFFECT_STORED_POWER] = 0, // TODO: Assign points
[EFFECT_ELECTRO_BALL] = 0, // TODO: Assign points
[EFFECT_GYRO_BALL] = 0, // TODO: Assign points
[EFFECT_ECHOED_VOICE] = 0, // TODO: Assign points
[EFFECT_PAYBACK] = 0, // TODO: Assign points
[EFFECT_ROUND] = 0, // TODO: Assign points
[EFFECT_BRINE] = 0, // TODO: Assign points
[EFFECT_VENOSHOCK] = 0, // TODO: Assign points
[EFFECT_RETALIATE] = 0, // TODO: Assign points
[EFFECT_BULLDOZE] = 0, // TODO: Assign points
[EFFECT_FOUL_PLAY] = 0, // TODO: Assign points
[EFFECT_PSYSHOCK] = 0, // TODO: Assign points
[EFFECT_ROOST] = 0, // TODO: Assign points
[EFFECT_GRAVITY] = 0, // TODO: Assign points
[EFFECT_MIRACLE_EYE] = 0, // TODO: Assign points
[EFFECT_TAILWIND] = 0, // TODO: Assign points
[EFFECT_EMBARGO] = 0, // TODO: Assign points
[EFFECT_AQUA_RING] = 0, // TODO: Assign points
[EFFECT_TRICK_ROOM] = 0, // TODO: Assign points
[EFFECT_WONDER_ROOM] = 0, // TODO: Assign points
[EFFECT_MAGIC_ROOM] = 0, // TODO: Assign points
[EFFECT_MAGNET_RISE] = 0, // TODO: Assign points
[EFFECT_TOXIC_SPIKES] = 0, // TODO: Assign points
[EFFECT_GASTRO_ACID] = 0, // TODO: Assign points
[EFFECT_STEALTH_ROCK] = 0, // TODO: Assign points
[EFFECT_TELEKINESIS] = 0, // TODO: Assign points
[EFFECT_POWER_SWAP] = 0, // TODO: Assign points
[EFFECT_GUARD_SWAP] = 0, // TODO: Assign points
[EFFECT_HEART_SWAP] = 0, // TODO: Assign points
[EFFECT_POWER_SPLIT] = 0, // TODO: Assign points
[EFFECT_GUARD_SPLIT] = 0, // TODO: Assign points
[EFFECT_STICKY_WEB] = 0, // TODO: Assign points
[EFFECT_METAL_BURST] = 0, // TODO: Assign points
[EFFECT_LUCKY_CHANT] = 0, // TODO: Assign points
[EFFECT_SUCKER_PUNCH] = 0, // TODO: Assign points
[EFFECT_SPECIAL_DEFENSE_DOWN_HIT_2] = 0, // TODO: Assign points
[EFFECT_SIMPLE_BEAM] = 0, // TODO: Assign points
[EFFECT_ENTRAINMENT] = 0, // TODO: Assign points
[EFFECT_HEAL_PULSE] = 0, // TODO: Assign points
[EFFECT_QUASH] = 0, // TODO: Assign points
[EFFECT_ION_DELUGE] = 0, // TODO: Assign points
[EFFECT_FREEZE_DRY] = 0, // TODO: Assign points
[EFFECT_TOPSY_TURVY] = 0, // TODO: Assign points
[EFFECT_MISTY_TERRAIN] = 0, // TODO: Assign points
[EFFECT_GRASSY_TERRAIN] = 0, // TODO: Assign points
[EFFECT_ELECTRIC_TERRAIN] = 0, // TODO: Assign points
[EFFECT_PSYCHIC_TERRAIN] = 0, // TODO: Assign points
[EFFECT_ATTACK_ACCURACY_UP] = 0, // TODO: Assign points
[EFFECT_ATTACK_SPATK_UP] = 0, // TODO: Assign points
[EFFECT_HURRICANE] = 0, // TODO: Assign points
[EFFECT_TWO_TYPED_MOVE] = 0, // TODO: Assign points
[EFFECT_ME_FIRST] = 0, // TODO: Assign points
[EFFECT_SPEED_UP_HIT] = 0, // TODO: Assign points
[EFFECT_QUIVER_DANCE] = 0, // TODO: Assign points
[EFFECT_COIL] = 0, // TODO: Assign points
[EFFECT_ELECTRIFY] = 0, // TODO: Assign points
[EFFECT_SCALD] = 0, // TODO: Assign points
[EFFECT_REFLECT_TYPE] = 0, // TODO: Assign points
[EFFECT_SOAK] = 0, // TODO: Assign points
[EFFECT_GROWTH] = 0, // TODO: Assign points
[EFFECT_CLOSE_COMBAT] = 0, // TODO: Assign points
[EFFECT_LAST_RESORT] = 0, // TODO: Assign points
[EFFECT_RECOIL_33_STATUS] = 0, // TODO: Assign points
[EFFECT_FLINCH_STATUS] = 0, // TODO: Assign points
[EFFECT_RECOIL_50] = 0, // TODO: Assign points
[EFFECT_SHELL_SMASH] = 0, // TODO: Assign points
[EFFECT_SHIFT_GEAR] = 0, // TODO: Assign points
[EFFECT_DEFENSE_UP_3] = 0, // TODO: Assign points
[EFFECT_NOBLE_ROAR] = 0, // TODO: Assign points
[EFFECT_VENOM_DRENCH] = 0, // TODO: Assign points
[EFFECT_TOXIC_THREAD] = 0, // TODO: Assign points
[EFFECT_CLEAR_SMOG] = 0, // TODO: Assign points
[EFFECT_HIT_SWITCH_TARGET] = 0, // TODO: Assign points
[EFFECT_FINAL_GAMBIT] = 0, // TODO: Assign points
[EFFECT_CHANGE_TYPE_ON_ITEM] = 0, // TODO: Assign points
[EFFECT_AUTOTOMIZE] = 0, // TODO: Assign points
[EFFECT_COPYCAT] = 0, // TODO: Assign points
[EFFECT_DEFOG] = 0, // TODO: Assign points
[EFFECT_HIT_ENEMY_HEAL_ALLY] = 0, // TODO: Assign points
[EFFECT_SMACK_DOWN] = 0, // TODO: Assign points
[EFFECT_SYNCHRONOISE] = 0, // TODO: Assign points
[EFFECT_PSYCHO_SHIFT] = 0, // TODO: Assign points
[EFFECT_POWER_TRICK] = 0, // TODO: Assign points
[EFFECT_FLAME_BURST] = 0, // TODO: Assign points
[EFFECT_AFTER_YOU] = 0, // TODO: Assign points
[EFFECT_BESTOW] = 0, // TODO: Assign points
[EFFECT_ROTOTILLER] = 0, // TODO: Assign points
[EFFECT_FLOWER_SHIELD] = 0, // TODO: Assign points
[EFFECT_HIT_PREVENT_ESCAPE] = 0, // TODO: Assign points
[EFFECT_SPEED_SWAP] = 0, // TODO: Assign points
[EFFECT_DEFENSE_UP2_HIT] = 0, // TODO: Assign points
[EFFECT_REVELATION_DANCE] = 0, // TODO: Assign points
[EFFECT_AURORA_VEIL] = 0, // TODO: Assign points
[EFFECT_THIRD_TYPE] = 0, // TODO: Assign points
[EFFECT_FEINT] = 0, // TODO: Assign points
[EFFECT_SPARKLING_ARIA] = 0, // TODO: Assign points
[EFFECT_ACUPRESSURE] = 0, // TODO: Assign points
[EFFECT_AROMATIC_MIST] = 0, // TODO: Assign points
[EFFECT_POWDER] = 0, // TODO: Assign points
[EFFECT_SP_ATTACK_UP_HIT] = 0, // TODO: Assign points
[EFFECT_BELCH] = 0, // TODO: Assign points
[EFFECT_PARTING_SHOT] = 0, // TODO: Assign points
[EFFECT_SPECTRAL_THIEF] = 0, // TODO: Assign points
[EFFECT_V_CREATE] = 0, // TODO: Assign points
[EFFECT_MAT_BLOCK] = 0, // TODO: Assign points
[EFFECT_STOMPING_TANTRUM] = 0, // TODO: Assign points
[EFFECT_CORE_ENFORCER] = 0, // TODO: Assign points
[EFFECT_INSTRUCT] = 0, // TODO: Assign points
[EFFECT_THROAT_CHOP] = 0, // TODO: Assign points
[EFFECT_LASER_FOCUS] = 0, // TODO: Assign points
[EFFECT_MAGNETIC_FLUX] = 0, // TODO: Assign points
[EFFECT_GEAR_UP] = 0, // TODO: Assign points
[EFFECT_INCINERATE] = 0, // TODO: Assign points
[EFFECT_BUG_BITE] = 0, // TODO: Assign points
[EFFECT_STRENGTH_SAP] = 0, // TODO: Assign points
[EFFECT_MIND_BLOWN] = 0, // TODO: Assign points
[EFFECT_PURIFY] = 0, // TODO: Assign points
[EFFECT_BURN_UP] = 0, // TODO: Assign points
[EFFECT_SHORE_UP] = 0, // TODO: Assign points
[EFFECT_GEOMANCY] = 0, // TODO: Assign points
[EFFECT_FAIRY_LOCK] = 0, // TODO: Assign points
[EFFECT_ALLY_SWITCH] = 0, // TODO: Assign points
[EFFECT_RELIC_SONG] = 0, // TODO: Assign points
[EFFECT_ATTACKER_DEFENSE_DOWN_HIT] = 0, // TODO: Assign points
[EFFECT_BODY_PRESS] = 0, // TODO: Assign points
[EFFECT_EERIE_SPELL] = 0, // TODO: Assign points
[EFFECT_JUNGLE_HEALING] = 0, // TODO: Assign points
[EFFECT_COACHING] = 0, // TODO: Assign points
[EFFECT_LASH_OUT] = 0, // TODO: Assign points
[EFFECT_GRASSY_GLIDE] = 0, // TODO: Assign points
[EFFECT_REMOVE_TERRAIN] = 0, // TODO: Assign points
[EFFECT_DYNAMAX_DOUBLE_DMG] = 0, // TODO: Assign points
[EFFECT_DECORATE] = 0, // TODO: Assign points
[EFFECT_SNIPE_SHOT] = 0, // TODO: Assign points
[EFFECT_RECOIL_HP_25] = 0, // TODO: Assign points
[EFFECT_STUFF_CHEEKS] = 0, // TODO: Assign points
[EFFECT_GRAV_APPLE] = 0, // TODO: Assign points
[EFFECT_EVASION_UP_HIT] = 0, // TODO: Assign points
[EFFECT_GLITZY_GLOW] = 0, // TODO: Assign points
[EFFECT_BADDY_BAD] = 0, // TODO: Assign points
[EFFECT_SAPPY_SEED] = 0, // TODO: Assign points
[EFFECT_FREEZY_FROST] = 0, // TODO: Assign points
[EFFECT_SPARKLY_SWIRL] = 0, // TODO: Assign points
[EFFECT_PLASMA_FISTS] = 0, // TODO: Assign points
[EFFECT_HYPERSPACE_FURY] = 0, // TODO: Assign points
[EFFECT_AURA_WHEEL] = 0, // TODO: Assign points
[EFFECT_PHOTON_GEYSER] = 0, // TODO: Assign points
[EFFECT_SHELL_SIDE_ARM] = 0, // TODO: Assign points
[EFFECT_TERRAIN_PULSE] = 0, // TODO: Assign points
[EFFECT_JAW_LOCK] = 0, // TODO: Assign points
[EFFECT_NO_RETREAT] = 0, // TODO: Assign points
[EFFECT_TAR_SHOT] = 0, // TODO: Assign points
[EFFECT_POLTERGEIST] = 0, // TODO: Assign points
[EFFECT_OCTOLOCK] = 0, // TODO: Assign points
[EFFECT_CLANGOROUS_SOUL] = 0, // TODO: Assign points
[EFFECT_BOLT_BEAK] = 0, // TODO: Assign points
[EFFECT_SKY_DROP] = 0, // TODO: Assign points
[EFFECT_EXPANDING_FORCE] = 0, // TODO: Assign points
[EFFECT_SCALE_SHOT] = 0, // TODO: Assign points
[EFFECT_METEOR_BEAM] = 0, // TODO: Assign points
[EFFECT_RISING_VOLTAGE] = 0, // TODO: Assign points
[EFFECT_BEAK_BLAST] = 0, // TODO: Assign points
[EFFECT_COURT_CHANGE] = 0, // TODO: Assign points
[EFFECT_STEEL_BEAM] = 0, // TODO: Assign points
[EFFECT_EXTREME_EVOBOOST] = 0, // TODO: Assign points
[EFFECT_DAMAGE_SET_TERRAIN] = 0, // TODO: Assign points
[EFFECT_DARK_VOID] = 0, // TODO: Assign points
[EFFECT_SLEEP_HIT] = 1,
[EFFECT_DOUBLE_SHOCK] = 0, // TODO: Assign points
[EFFECT_SPECIAL_ATTACK_UP_HIT] = 1,
[EFFECT_VICTORY_DANCE] = 0, // TODO: Assign points
}; };
static const u16 sPoints_Effectiveness[] = static const u16 sPoints_Effectiveness[] =

View File

@ -4259,7 +4259,7 @@ static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer)
{ {
if (!(gFieldStatuses & statusFlag)) if (!(gFieldStatuses & statusFlag))
{ {
gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | EFFECT_ELECTRIC_TERRAIN | EFFECT_PSYCHIC_TERRAIN); gFieldStatuses &= ~(STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN);
gFieldStatuses |= statusFlag; gFieldStatuses |= statusFlag;
if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER) if (GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_TERRAIN_EXTENDER)
@ -4801,10 +4801,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
} }
break; break;
case ABILITY_INTIMIDATE: case ABILITY_INTIMIDATE:
if (!(gSpecialStatuses[battler].intimidatedMon)) if (!gSpecialStatuses[battler].switchInAbilityDone)
{ {
gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_INTIMIDATED; gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gSpecialStatuses[battler].intimidatedMon = TRUE; SET_STATCHANGER(STAT_ATK, 1, TRUE);
BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivates);
effect++;
} }
break; break;
case ABILITY_FORECAST: case ABILITY_FORECAST:
@ -6178,30 +6180,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
} }
} }
break; break;
case ABILITYEFFECT_INTIMIDATE1:
case ABILITYEFFECT_INTIMIDATE2:
for (i = 0; i < gBattlersCount; i++)
{
if (GetBattlerAbility(i) == ABILITY_INTIMIDATE && gBattleResources->flags->flags[i] & RESOURCE_FLAG_INTIMIDATED
&& (IsBattlerAlive(BATTLE_OPPOSITE(i)) || IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(i))))) // At least one opposing mon has to be alive.
{
gBattleResources->flags->flags[i] &= ~RESOURCE_FLAG_INTIMIDATED;
gLastUsedAbility = ABILITY_INTIMIDATE;
if (caseID == ABILITYEFFECT_INTIMIDATE1)
{
BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3);
}
else
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IntimidateActivates;
}
battler = gBattlerAbility = gBattleStruct->intimidateBattler = i;
effect++;
break;
}
}
break;
case ABILITYEFFECT_TRACE1: case ABILITYEFFECT_TRACE1:
case ABILITYEFFECT_TRACE2: case ABILITYEFFECT_TRACE2:
for (i = 0; i < gBattlersCount; i++) for (i = 0; i < gBattlersCount; i++)

File diff suppressed because it is too large Load Diff

View File

@ -5966,6 +5966,102 @@ const struct ContestMove gContestMoves[MOVES_COUNT] =
[MOVE_LUNAR_BLESSING] = {0}, // TODO [MOVE_LUNAR_BLESSING] = {0}, // TODO
[MOVE_TAKE_HEART] = {0}, // TODO [MOVE_TAKE_HEART] = {0}, // TODO
[MOVE_TERA_BLAST] = {0}, // TODO
[MOVE_SILK_TRAP] = {0}, // TODO
[MOVE_AXE_KICK] = {0}, // TODO
[MOVE_LAST_RESPECTS] = {0}, // TODO
[MOVE_LUMINA_CRASH] = {0}, // TODO
[MOVE_ORDER_UP] = {0}, // TODO
[MOVE_JET_PUNCH] = {0}, // TODO
[MOVE_SPICY_EXTRACT] = {0}, // TODO
[MOVE_SPIN_OUT] = {0}, // TODO
[MOVE_POPULATION_BOMB] = {0}, // TODO
[MOVE_ICE_SPINNER] = {0}, // TODO
[MOVE_GLAIVE_RUSH] = {0}, // TODO
[MOVE_REVIVAL_BLESSING] = {0}, // TODO
[MOVE_SALT_CURE] = {0}, // TODO
[MOVE_TRIPLE_DIVE] = {0}, // TODO
[MOVE_MORTAL_SPIN] = {0}, // TODO
[MOVE_DOODLE] = {0}, // TODO
[MOVE_FILLET_AWAY] = {0}, // TODO
[MOVE_KOWTOW_CLEAVE] = {0}, // TODO
[MOVE_FLOWER_TRICK] = {0}, // TODO
[MOVE_TORCH_SONG] = {0}, // TODO
[MOVE_AQUA_STEP] = {0}, // TODO
[MOVE_RAGING_BULL] = {0}, // TODO
[MOVE_MAKE_IT_RAIN] = {0}, // TODO
[MOVE_RUINATION] = {0}, // TODO
[MOVE_COLLISION_COURSE] = {0}, // TODO
[MOVE_ELECTRO_DRIFT] = {0}, // TODO
[MOVE_SHED_TAIL] = {0}, // TODO
[MOVE_CHILLY_RECEPTION] = {0}, // TODO
[MOVE_TIDY_UP] = {0}, // TODO
[MOVE_SNOWSCAPE] = {0}, // TODO
[MOVE_POUNCE] = {0}, // TODO
[MOVE_TRAILBLAZE] = {0}, // TODO
[MOVE_CHILLING_WATER] = {0}, // TODO
[MOVE_HYPER_DRILL] = {0}, // TODO
[MOVE_TWIN_BEAM] = {0}, // TODO
[MOVE_RAGE_FIST] = {0}, // TODO
[MOVE_ARMOR_CANNON] = {0}, // TODO
[MOVE_BITTER_BLADE] = {0}, // TODO
[MOVE_DOUBLE_SHOCK] = {0}, // TODO
[MOVE_GIGATON_HAMMER] = {0}, // TODO
[MOVE_COMEUPPANCE] = {0}, // TODO
[MOVE_AQUA_CUTTER] = {0}, // TODO
[MOVE_BLAZING_TORQUE] = {0}, // TODO
[MOVE_WICKED_TORQUE] = {0}, // TODO
[MOVE_NOXIOUS_TORQUE] = {0}, // TODO
[MOVE_COMBAT_TORQUE] = {0}, // TODO
[MOVE_MAGICAL_TORQUE] = {0}, // TODO
}; };
const struct ContestEffect gContestEffects[] = const struct ContestEffect gContestEffects[] =

View File

@ -2962,8 +2962,8 @@ static const u8 sPsyshieldBashDescription[] = _(
"energy. May raise Defense."); "energy. May raise Defense.");
static const u8 sPowerShiftDescription[] = _( static const u8 sPowerShiftDescription[] = _(
"The user swaps its offensive\n" "The user swaps its Attack\n"
"and defensive stats."); "and Defense stats.");
static const u8 sStoneAxeDescription[] = _( static const u8 sStoneAxeDescription[] = _(
"High critical hit ratio. Sets\n" "High critical hit ratio. Sets\n"
@ -2974,52 +2974,52 @@ static const u8 sSpringtideStormDescription[] = _(
"Varies with the user's form."); "Varies with the user's form.");
static const u8 sMysticalPowerDescription[] = _( static const u8 sMysticalPowerDescription[] = _(
"Increases the user's better\n" "A mysterious power strikes,\n"
"of Atk. and Def. stats."); "raising the user's Sp. Atk.");
static const u8 sRagingFuryDescription[] = _( static const u8 sRagingFuryDescription[] = _(
"Viciously spews flames at\n" "A rampage of 2 to 3 turns\n"
"a foe, becoming fixated."); "that confuses the user.");
static const u8 sWaveCrashDescription[] = _( static const u8 sWaveCrashDescription[] = _(
"A water slam. Hurts the user\n" "A slam shrouded in water.\n"
"and raises its Action Speed."); "It also hurts the user.");
static const u8 sChloroblastDescription[] = _( static const u8 sChloroblastDescription[] = _(
"An blast that hurts the user\n" "A user-hurting blast of\n"
"and lowers its Action Speed."); "amassed chlorophyll.");
static const u8 sMountainGaleDescription[] = _( static const u8 sMountainGaleDescription[] = _(
"The user hurls giant chunks\n" "Giant chunks of ice damage\n"
"of ice to damage the foe."); "the foe. It may flinch.");
static const u8 sVictoryDanceDescription[] = _( static const u8 sVictoryDanceDescription[] = _(
"Dances to raise damage 50%,\n" "Dances to raise Attack,\n"
"plus offenses and defenses."); "Defense and Speed.");
static const u8 sHeadlongRushDescription[] = _( static const u8 sHeadlongRushDescription[] = _(
"Hits with a full-body tackle,\n" "Hits with a full-body tackle.\n"
"lowering the foe's Defense."); "Lowers the users's defenses.");
static const u8 sBarbBarrageDescription[] = _( static const u8 sBarbBarrageDescription[] = _(
"Can poison on impact. Powers\n" "Can poison on impact. Powers\n"
"up if the foe has an ailment."); "up against poisoned foes.");
static const u8 sEsperWingDescription[] = _( static const u8 sEsperWingDescription[] = _(
"High critical hit ratio.\n" "High critical hit ratio.\n"
"Ups the user's Action Speed."); "Ups the user's Speed.");
static const u8 sBitterMaliceDescription[] = _( static const u8 sBitterMaliceDescription[] = _(
"Hurts a foe harder if it has\n" "A spine-chilling resentment.\n"
"an ailment. Can give FrstBte."); "May lower the foe's Attack.");
static const u8 sShelterDescription[] = _( static const u8 sShelterDescription[] = _(
"The user hardens their skin\n" "The user hardens their skin,\n"
"and obscures itself."); "sharply raising its Defense.");
static const u8 sTripleArrowsDescription[] = _( static const u8 sTripleArrowsDescription[] = _(
"Ups critical-hit ratio for 3\n" "High critical hit ratio.\n"
"turns. Lowers foe Defenses."); "May lower Defense or flinch.");
static const u8 sInfernalParadeDescription[] = _( static const u8 sInfernalParadeDescription[] = _(
"Hurts a foe harder if it has\n" "Hurts a foe harder if it has\n"
@ -3031,7 +3031,7 @@ static const u8 sCeaselessEdgeDescription[] = _(
static const u8 sBleakwindStormDescription[] = _( static const u8 sBleakwindStormDescription[] = _(
"Hits with brutal, cold winds.\n" "Hits with brutal, cold winds.\n"
"May inflict frostbite."); "May lower the foe's Speed.");
static const u8 sWildboltStormDescription[] = _( static const u8 sWildboltStormDescription[] = _(
"Hits with a brutal tempest.\n" "Hits with a brutal tempest.\n"
@ -3042,13 +3042,200 @@ static const u8 sSandsearStormDescription[] = _(
"May inflict a burn."); "May inflict a burn.");
static const u8 sLunarBlessingDescription[] = _( static const u8 sLunarBlessingDescription[] = _(
"The user heals themself and\n" "The user heals and cures\n"
"conceals their presence."); "itself and its ally.");
static const u8 sTakeHeartDescription[] = _( static const u8 sTakeHeartDescription[] = _(
"The user lifts its spirits to\n" "The user lifts its spirits to\n"
"heal and strengthen itself."); "heal and strengthen itself.");
static const u8 sTeraBlastDescription[] = _(
"If the user's Terastallized,\n"
"it hits with its Tera-type.");
static const u8 sSilkTrapDescription[] =_(
"Protects itself, lowering\n"
"Speed on contact.");
static const u8 sAxeKickDescription[] = _(
"May miss and hurt the kicker.\n"
"May cause confusion.");
static const u8 sLastRespectsDescription[] = _(
"This move deals more damage\n"
"for each defeated ally.");
static const u8 sLuminaCrashDescription[] = _(
"A mind-affecting light\n"
"harshly lowers Sp. Def.");
static const u8 sOrderUpDescription[] = _(
"Boosts a user's stats\n"
"depending on Tatsugiri.");
static const u8 sJetPunchDescription[] = _(
"A punch is thrown at blinding\n"
"speed to strike first.");
static const u8 sSpicyExtractDescription[] = _(
"Sharply ups target's Attack,\n"
"harshly lowers its Defense.");
static const u8 sSpinOutDescription[] = _(
"Furiously strains its legs.\n"
"Harshly lowers user's Speed.");
static const u8 sPopulationBombDescription[] = _(
"The user's fellows hit one\n"
"to ten times in a row.");
static const u8 sIceSpinnerDescription[] = _(
"Ice-covered feet hit a foe\n"
"and destroy the terrain.");
static const u8 sGlaiveRushDescription[] = _(
"Foe attacks next turn can't\n"
"miss and do double damage.");
static const u8 sRevivalBlessingDescription[] = _(
"Revives a fainted party {PKMN}\n"
"and restores half of its HP.");
static const u8 sSaltCureDescription[] = _(
"Hurts foe every turn. Double\n"
"damage to Steel and Water.");
static const u8 sTripleDiveDescription[] = _(
"Hits target with splashes\n"
"of water 3 times in a row.");
static const u8 sMortalSpinDescription[] = _(
"Erases trap moves and Leech\n"
"Seed. Poisons adjecent foes.");
static const u8 sDoodleDescription[] = _(
"Changes user's and ally's\n"
"Ability into the target's.");
static const u8 sFilletAwayDescription[] = _(
"Sharply boosts offenses and\n"
"Speed by using its own HP.");
static const u8 sKowtowCleaveDescription[] = _(
"User slashes the foe after\n"
"kowtowing. It never misses.");
static const u8 sFlowerTrickDescription[] = _(
"Rigged bouquet. Always gets\n"
"a critical hit, never missing.");
static const u8 sTorchSongDescription[] = _(
"Flames scorch the target.\n"
"Boosts the user's Sp. Atk.");
static const u8 sAquaStepDescription[] = _(
"Hits with light, fluid dance\n"
"steps. Ups the user's Speed.");
static const u8 sRagingBullDescription[] = _(
"Tackle that breaks barriers.\n"
"User's form determines type.");
static const u8 sMakeItRainDescription[] = _(
"Lowers the user's Sp. Atk.\n"
"Money is recovered after.");
static const u8 sRuinationDescription[] = _(
"Summons a ruinous disaster\n"
"and cuts half the foe's HP.");
static const u8 sCollisionCourseDescription[] = _(
"Prehistoric explosion that's\n"
"stronger if supereffective.");
static const u8 sElectroDriftDescription[] = _(
"Futuristic electricity. It's\n"
"stronger if supereffective.");
static const u8 sShedTailDescription[] = _(
"Creates a Substitute for\n"
"itself before switching out.");
static const u8 sChillyReceptionDescription[] =_(
"Bad joke summons snowstorm.\n"
"The user also switches out.");
static const u8 sTidyUpDescription[] = _(
"User tidies up hazards and\n"
"raises its Attack and Speed.");
static const u8 sSnowscapeDescription[] = _(
"Summons a snowstorm that\n"
"lasts for five turns.");
static const u8 sPounceDescription[] = _(
"The user pounces on the foe,\n"
"lowering its Speed.");
static const u8 sTrailblazeDescription[] = _(
"The user attacks suddenly,\n"
"raising its Speed.");
static const u8 sChillingWaterDescription[] = _(
"A shower with ice-cold water\n"
"lowers the target's Attack.");
static const u8 sHyperDrillDescription[] = _(
"A spinning pointed part\n"
"bypasses a foe's Protect.");
static const u8 sTwinBeamDescription[] = _(
"Mystical eye-beams that hit\n"
"the target twice in a row.");
static const u8 sRageFistDescription[] = _(
"The more the user has been\n"
"hit, the stronger the move.");
static const u8 sArmorCannonDescription[] = _(
"A strong attack but lowers\n"
"the defensive stats.");
static const u8 sBitterBladeDescription[] = _(
"An attack that absorbs\n"
"half the damage inflicted.");
static const u8 sDoubleShockDescription[] = _(
"Discharges all electricity,\n"
"losing the Electric type.");
static const u8 sGigatonHammerDescription[] = _(
"Swings a huge hammer. Can't\n"
"be used twice in a row.");
static const u8 sComeuppanceDescription[] = _(
"Retaliates strongly against\n"
"who last hurt the user.");
static const u8 sAquaCutterDescription[] = _(
"Pressurized water cut with a\n"
"high critical-hit ratio.");
static const u8 sBlazingTorqueDescription[] = _(
"---");
static const u8 sWickedTorqueDescription[] = _(
"---");
static const u8 sNoxiousTorqueDescription[] = _(
"---");
static const u8 sCombatTorqueDescription[] = _(
"---");
static const u8 sMagicalTorqueDescription[] = _(
"---");
const u8 gNotDoneYetDescription[] = _( const u8 gNotDoneYetDescription[] = _(
"This move can't be used. Its\n" "This move can't be used. Its\n"
"effect is in development."); "effect is in development.");
@ -3838,4 +4025,52 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] =
[MOVE_SANDSEAR_STORM - 1] = sSandsearStormDescription, [MOVE_SANDSEAR_STORM - 1] = sSandsearStormDescription,
[MOVE_LUNAR_BLESSING - 1] = sLunarBlessingDescription, [MOVE_LUNAR_BLESSING - 1] = sLunarBlessingDescription,
[MOVE_TAKE_HEART - 1] = sTakeHeartDescription, [MOVE_TAKE_HEART - 1] = sTakeHeartDescription,
[MOVE_TERA_BLAST - 1] = sTeraBlastDescription,
[MOVE_SILK_TRAP - 1] = sSilkTrapDescription,
[MOVE_AXE_KICK - 1] = sAxeKickDescription,
[MOVE_LAST_RESPECTS - 1] = sLastRespectsDescription,
[MOVE_LUMINA_CRASH - 1] = sLuminaCrashDescription,
[MOVE_ORDER_UP - 1] = sOrderUpDescription,
[MOVE_JET_PUNCH - 1] = sJetPunchDescription,
[MOVE_SPICY_EXTRACT - 1] = sSpicyExtractDescription,
[MOVE_SPIN_OUT - 1] = sSpinOutDescription,
[MOVE_POPULATION_BOMB - 1] = sPopulationBombDescription,
[MOVE_ICE_SPINNER - 1] = sIceSpinnerDescription,
[MOVE_GLAIVE_RUSH - 1] = sGlaiveRushDescription,
[MOVE_REVIVAL_BLESSING - 1] = sRevivalBlessingDescription,
[MOVE_SALT_CURE - 1] = sSaltCureDescription,
[MOVE_TRIPLE_DIVE - 1] = sTripleDiveDescription,
[MOVE_MORTAL_SPIN - 1] = sMortalSpinDescription,
[MOVE_DOODLE - 1] = sDoodleDescription,
[MOVE_FILLET_AWAY - 1] = sFilletAwayDescription,
[MOVE_KOWTOW_CLEAVE - 1] = sKowtowCleaveDescription,
[MOVE_FLOWER_TRICK - 1] = sFlowerTrickDescription,
[MOVE_TORCH_SONG - 1] = sTorchSongDescription,
[MOVE_AQUA_STEP - 1] = sAquaStepDescription,
[MOVE_RAGING_BULL - 1] = sRagingBullDescription,
[MOVE_MAKE_IT_RAIN - 1] = sMakeItRainDescription,
[MOVE_RUINATION - 1] = sRuinationDescription,
[MOVE_COLLISION_COURSE - 1] = sCollisionCourseDescription,
[MOVE_ELECTRO_DRIFT - 1] = sElectroDriftDescription,
[MOVE_SHED_TAIL - 1] = sShedTailDescription,
[MOVE_CHILLY_RECEPTION - 1] = sChillyReceptionDescription,
[MOVE_TIDY_UP - 1] = sTidyUpDescription,
[MOVE_SNOWSCAPE - 1] = sSnowscapeDescription,
[MOVE_POUNCE - 1] = sPounceDescription,
[MOVE_TRAILBLAZE - 1] = sTrailblazeDescription,
[MOVE_CHILLING_WATER - 1] = sChillingWaterDescription,
[MOVE_HYPER_DRILL - 1] = sHyperDrillDescription,
[MOVE_TWIN_BEAM - 1] = sTwinBeamDescription,
[MOVE_RAGE_FIST - 1] = sRageFistDescription,
[MOVE_ARMOR_CANNON - 1] = sArmorCannonDescription,
[MOVE_BITTER_BLADE - 1] = sBitterBladeDescription,
[MOVE_DOUBLE_SHOCK - 1] = sDoubleShockDescription,
[MOVE_GIGATON_HAMMER - 1] = sGigatonHammerDescription,
[MOVE_COMEUPPANCE - 1] = sComeuppanceDescription,
[MOVE_AQUA_CUTTER - 1] = sAquaCutterDescription,
[MOVE_BLAZING_TORQUE - 1] = sBlazingTorqueDescription,
[MOVE_WICKED_TORQUE - 1] = sWickedTorqueDescription,
[MOVE_NOXIOUS_TORQUE - 1] = sNoxiousTorqueDescription,
[MOVE_COMBAT_TORQUE - 1] = sCombatTorqueDescription,
[MOVE_MAGICAL_TORQUE - 1] = sMagicalTorqueDescription,
}; };

View File

@ -781,6 +781,54 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] =
[MOVE_SANDSEAR_STORM] = _("Sandsear Storm"), [MOVE_SANDSEAR_STORM] = _("Sandsear Storm"),
[MOVE_LUNAR_BLESSING] = _("Lunar Blessing"), [MOVE_LUNAR_BLESSING] = _("Lunar Blessing"),
[MOVE_TAKE_HEART] = _("Take Heart"), [MOVE_TAKE_HEART] = _("Take Heart"),
[MOVE_TERA_BLAST] = _("Tera Blast"),
[MOVE_SILK_TRAP] = _("Silk Trap"),
[MOVE_AXE_KICK] = _("Axe Kick"),
[MOVE_LAST_RESPECTS] = _("Last Respects"),
[MOVE_LUMINA_CRASH] = _("Lumina Crash"),
[MOVE_ORDER_UP] = _("Order Up"),
[MOVE_JET_PUNCH] = _("Jet Punch"),
[MOVE_SPICY_EXTRACT] = _("Spicy Extract"),
[MOVE_SPIN_OUT] = _("Spin Out"),
[MOVE_POPULATION_BOMB] = _("Population Bomb"),
[MOVE_ICE_SPINNER] = _("Ice Spinner"),
[MOVE_GLAIVE_RUSH] = _("Glaive Rush"),
[MOVE_REVIVAL_BLESSING] = _("Revival Blessing"),
[MOVE_SALT_CURE] = _("Salt Cure"),
[MOVE_TRIPLE_DIVE] = _("Triple Dive"),
[MOVE_MORTAL_SPIN] = _("Mortal Spin"),
[MOVE_DOODLE] = _("Doodle"),
[MOVE_FILLET_AWAY] = _("Fillet Away"),
[MOVE_KOWTOW_CLEAVE] = _("Kowtow Cleave"),
[MOVE_FLOWER_TRICK] = _("Flower Trick"),
[MOVE_TORCH_SONG] = _("Torch Song"),
[MOVE_AQUA_STEP] = _("Aqua Step"),
[MOVE_RAGING_BULL] = _("Raging Bull"),
[MOVE_MAKE_IT_RAIN] = _("Make It Rain"),
[MOVE_RUINATION] = _("Ruination"),
[MOVE_COLLISION_COURSE] = _("Collision Course"),
[MOVE_ELECTRO_DRIFT] = _("Electro Drift"),
[MOVE_SHED_TAIL] = _("Shed Tail"),
[MOVE_CHILLY_RECEPTION] = _("Chilly Reception"),
[MOVE_TIDY_UP] = _("Tidy Up"),
[MOVE_SNOWSCAPE] = _("Snowscape"),
[MOVE_POUNCE] = _("Pounce"),
[MOVE_TRAILBLAZE] = _("Trailblaze"),
[MOVE_CHILLING_WATER] = _("Chilling Water"),
[MOVE_HYPER_DRILL] = _("Hyper Drill"),
[MOVE_TWIN_BEAM] = _("Twin Beam"),
[MOVE_RAGE_FIST] = _("Rage Fist"),
[MOVE_ARMOR_CANNON] = _("Armor Cannon"),
[MOVE_BITTER_BLADE] = _("Bitter Blade"),
[MOVE_DOUBLE_SHOCK] = _("Double Shock"),
[MOVE_GIGATON_HAMMER] = _("Gigaton Hammer"),
[MOVE_COMEUPPANCE] = _("Comeuppance"),
[MOVE_AQUA_CUTTER] = _("Aqua Cutter"),
[MOVE_BLAZING_TORQUE] = _("Blazing Torque"),
[MOVE_WICKED_TORQUE] = _("Wicked Torque"),
[MOVE_NOXIOUS_TORQUE] = _("Noxious Torque"),
[MOVE_COMBAT_TORQUE] = _("Combat Torque"),
[MOVE_MAGICAL_TORQUE] = _("Magical Torque"),
}; };
#else #else
// 12 letters // 12 letters
@ -1565,6 +1613,54 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] =
[MOVE_SANDSEAR_STORM] = _("SndsearStorm"), [MOVE_SANDSEAR_STORM] = _("SndsearStorm"),
[MOVE_LUNAR_BLESSING] = _("LunarBlessng"), [MOVE_LUNAR_BLESSING] = _("LunarBlessng"),
[MOVE_TAKE_HEART] = _("Take Heart"), [MOVE_TAKE_HEART] = _("Take Heart"),
[MOVE_TERA_BLAST] = _("Tera Blast"),
[MOVE_SILK_TRAP] = _("Silk Trap"),
[MOVE_AXE_KICK] = _("Axe Kick"),
[MOVE_LAST_RESPECTS] = _("LastRespects"),
[MOVE_LUMINA_CRASH] = _("Lumina Crash"),
[MOVE_ORDER_UP] = _("Order Up"),
[MOVE_JET_PUNCH] = _("Jet Punch"),
[MOVE_SPICY_EXTRACT] = _("SpicyExtract"),
[MOVE_SPIN_OUT] = _("Spin Out"),
[MOVE_POPULATION_BOMB] = _("PoplatinBomb"),
[MOVE_ICE_SPINNER] = _("Ice Spinner"),
[MOVE_GLAIVE_RUSH] = _("Glaive Rush"),
[MOVE_REVIVAL_BLESSING] = _("RevivlBlesng"),
[MOVE_SALT_CURE] = _("Salt Cure"),
[MOVE_TRIPLE_DIVE] = _("Triple Dive"),
[MOVE_MORTAL_SPIN] = _("Mortal Spin"),
[MOVE_DOODLE] = _("Doodle"),
[MOVE_FILLET_AWAY] = _("Fillet Away"),
[MOVE_KOWTOW_CLEAVE] = _("KowtowCleave"),
[MOVE_FLOWER_TRICK] = _("Flower Trick"),
[MOVE_TORCH_SONG] = _("Torch Song"),
[MOVE_AQUA_STEP] = _("Aqua Step"),
[MOVE_RAGING_BULL] = _("Raging Bull"),
[MOVE_MAKE_IT_RAIN] = _("Make It Rain"),
[MOVE_RUINATION] = _("Ruination"),
[MOVE_COLLISION_COURSE] = _("ColisinCours"),
[MOVE_ELECTRO_DRIFT] = _("ElectroDrift"),
[MOVE_SHED_TAIL] = _("Shed Tail"),
[MOVE_CHILLY_RECEPTION] = _("ChilReceptin"),
[MOVE_TIDY_UP] = _("Tidy Up"),
[MOVE_SNOWSCAPE] = _("Snowscape"),
[MOVE_POUNCE] = _("Pounce"),
[MOVE_TRAILBLAZE] = _("Trailblaze"),
[MOVE_CHILLING_WATER] = _("ChillingWatr"),
[MOVE_HYPER_DRILL] = _("Hyper Drill"),
[MOVE_TWIN_BEAM] = _("Twin Beam"),
[MOVE_RAGE_FIST] = _("Rage Fist"),
[MOVE_ARMOR_CANNON] = _("Armor Cannon"),
[MOVE_BITTER_BLADE] = _("Bitter Blade"),
[MOVE_DOUBLE_SHOCK] = _("Double Shock"),
[MOVE_GIGATON_HAMMER] = _("GigatonHammr"),
[MOVE_COMEUPPANCE] = _("Comeuppance"),
[MOVE_AQUA_CUTTER] = _("Aqua Cutter"),
[MOVE_BLAZING_TORQUE] = _("BlazngTorque"),
[MOVE_WICKED_TORQUE] = _("WickedTorque"),
[MOVE_NOXIOUS_TORQUE] = _("NoxiusTorque"),
[MOVE_COMBAT_TORQUE] = _("CombatTorque"),
[MOVE_MAGICAL_TORQUE] = _("MagiclTorque"),
}; };
#endif #endif

View File

@ -2178,6 +2178,8 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId)
{ {
PlaySE(MUS_LEVEL_UP); PlaySE(MUS_LEVEL_UP);
ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0); ScriptGiveMon(sDebugMonData->mon_speciesId, gTasks[taskId].data[3], ITEM_NONE, 0,0,0);
//Set flag for user convenience
FlagSet(FLAG_SYS_POKEMON_GET);
Free(sDebugMonData); //Frees EWRAM of MonData Struct Free(sDebugMonData); //Frees EWRAM of MonData Struct
DebugAction_DestroyExtraWindow(taskId); DebugAction_DestroyExtraWindow(taskId);
} }
@ -2732,6 +2734,9 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu
break; break;
} }
//Set flag for user convenience
FlagSet(FLAG_SYS_POKEMON_GET);
Free(sDebugMonData); //Frees EWRAM of MonData Struct Free(sDebugMonData); //Frees EWRAM of MonData Struct
DebugAction_DestroyExtraWindow(taskId); //return sentToPc; DebugAction_DestroyExtraWindow(taskId); //return sentToPc;
} }