Merge branch 'rh-hideout-master'
@ -122,21 +122,20 @@ Once all items on the merge checklist are true, the branch will be merged in.
|
|||||||
|
|
||||||
## Maintainers
|
## Maintainers
|
||||||
|
|
||||||
This list was last updated 2025 April 1.
|
This list was last updated 2025 Dec 23.
|
||||||
|
|
||||||
| Name | Discord | Currently Active | Areas of Expertise |
|
| Name | Discord | Currently Active | Areas of Expertise |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| [Alex](https://github.com/AlexOn1ine) | rainonline | ✅ | Battle Engine, Battle AI
|
| [Alex](https://github.com/AlexOn1ine) | rainonline | ✅ | Battle Engine, Battle AI
|
||||||
| [Egg](https://github.com/DizzyEggg) | egg9255 | ✅ | Battle Engine, Battle AI
|
| [Egg](https://github.com/DizzyEggg) | egg9255 | ✅ | Battle Engine, Battle AI
|
||||||
| [ghoulslash](https://github.com/ghoulslash) | ghoulslash | ✅ | Dexnav, Overworld, Battle Engine
|
|
||||||
| [Jasper](https://github.com/Bassoonian) | bassoonian | ✅ | Berries, Day / Night System, Followers, Feature Branches
|
| [Jasper](https://github.com/Bassoonian) | bassoonian | ✅ | Berries, Day / Night System, Followers, Feature Branches
|
||||||
| [MGriffin](https://github.com/mrgriffin) | mgriffin | ✅ | Tests, Trainer Control
|
| [MGriffin](https://github.com/mrgriffin) | mgriffin | ✅ | Tests, Trainer Control
|
||||||
| [psf](https://github.com/pkmnsnfrn) | pkmnsnfrn | ✅ | Rematches, Difficulty, Trainer Slides, Fake RTC, Fishing Minigames, Imperial / Metric, OW Item Balls, Sky Battles
|
| [psf](https://github.com/pkmnsnfrn) | pkmnsnfrn | ✅ | Rematches, Difficulty, Trainer Slides, Fake RTC, Fishing Minigames, Imperial / Metric, OW Item Balls, Sky Battles
|
||||||
| [Hedara](https://github.com/hedara90) | hedara | ✅ | Compression, Sprites
|
| [Hedara](https://github.com/hedara90) | hedara | ✅ | Compression, Sprites
|
||||||
| [Pawkkie](https://github.com/Pawkkie) | pawkkie | ✅ | Battle AI
|
| [Pawkkie](https://github.com/Pawkkie) | pawkkie | ✅ | Battle AI
|
||||||
| [SBird](https://github.com/SBird1337) | karathan | ✅ | Dynamic Multichoice, Damage Calculation, Animations, Trainer Control, Tests
|
| [SBird](https://github.com/SBird1337) | karathan | ✅ | Dynamic Multichoice, Damage Calculation, Animations, Trainer Control, Tests
|
||||||
| [Agustin](https://github.com/AgustinGDLV) | agustingdlv | Inactive | Gimmicks, Battle Engine, Tests, Items
|
| [Jamie](https://github.com/FosterProgramming) | foster_harmony | ✅ | Overworld, Tests, Day / Night System, Dexnav, Battle Frontier, HGSS Dex, Pokerus, Learnsets, Mon Generation, Vs Seeker
|
||||||
| [tertu](https://github.com/tertu-m) | tertu | Inactive | Randomizer
|
| [grintoul](https://github.com/grintoul1) | grintoul | ✅ | Tests, Battle AI, Battle Engine, Overworld, Trainer Slides, Follower NPCs, Multi Battles
|
||||||
|
|
||||||
## Attribution
|
## Attribution
|
||||||
This guide is based on the [contributing.md](https://contributing.md/generator)!
|
This guide is based on the [contributing.md](https://contributing.md/generator)!
|
||||||
|
|||||||
@ -2464,3 +2464,8 @@
|
|||||||
.byte \gen
|
.byte \gen
|
||||||
.4byte \jumpInstr
|
.4byte \jumpInstr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ Absorbs Toxic Spikes when a grounded Poison-type faints to entry hazards.
|
||||||
|
.macro tryabsorbtoxicspikesonfaint
|
||||||
|
callnative BS_TryAbsorbToxicSpikesOnFaint
|
||||||
|
.endm
|
||||||
|
|||||||
@ -5147,6 +5147,7 @@ BattleScript_DmgHazardsOnAttackerFainted::
|
|||||||
setbyte sGIVEEXP_STATE, 0
|
setbyte sGIVEEXP_STATE, 0
|
||||||
getexp BS_ATTACKER
|
getexp BS_ATTACKER
|
||||||
moveendall
|
moveendall
|
||||||
|
tryabsorbtoxicspikesonfaint
|
||||||
goto BattleScript_HandleFaintedMon
|
goto BattleScript_HandleFaintedMon
|
||||||
|
|
||||||
BattleScript_DmgHazardsOnTarget::
|
BattleScript_DmgHazardsOnTarget::
|
||||||
@ -5161,6 +5162,7 @@ BattleScript_DmgHazardsOnTargetFainted::
|
|||||||
setbyte sGIVEEXP_STATE, 0
|
setbyte sGIVEEXP_STATE, 0
|
||||||
getexp BS_TARGET
|
getexp BS_TARGET
|
||||||
moveendall
|
moveendall
|
||||||
|
tryabsorbtoxicspikesonfaint
|
||||||
goto BattleScript_HandleFaintedMon
|
goto BattleScript_HandleFaintedMon
|
||||||
|
|
||||||
BattleScript_DmgHazardsOnBattlerScripting::
|
BattleScript_DmgHazardsOnBattlerScripting::
|
||||||
@ -5175,6 +5177,7 @@ BattleScript_DmgHazardsOnBattlerScriptingFainted::
|
|||||||
setbyte sGIVEEXP_STATE, 0
|
setbyte sGIVEEXP_STATE, 0
|
||||||
getexp BS_SCRIPTING
|
getexp BS_SCRIPTING
|
||||||
moveendall
|
moveendall
|
||||||
|
tryabsorbtoxicspikesonfaint
|
||||||
goto BattleScript_HandleFaintedMon
|
goto BattleScript_HandleFaintedMon
|
||||||
|
|
||||||
BattleScript_DmgHazardsOnFaintedBattler::
|
BattleScript_DmgHazardsOnFaintedBattler::
|
||||||
@ -5189,6 +5192,7 @@ BattleScript_DmgHazardsOnFaintedBattlerFainted::
|
|||||||
setbyte sGIVEEXP_STATE, 0
|
setbyte sGIVEEXP_STATE, 0
|
||||||
getexp BS_FAINTED
|
getexp BS_FAINTED
|
||||||
moveendall
|
moveendall
|
||||||
|
tryabsorbtoxicspikesonfaint
|
||||||
goto BattleScript_HandleFaintedMon
|
goto BattleScript_HandleFaintedMon
|
||||||
|
|
||||||
BattleScript_PrintHurtByDmgHazards::
|
BattleScript_PrintHurtByDmgHazards::
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 989 B After Width: | Height: | Size: 998 B |
@ -12,7 +12,7 @@ JASC-PAL
|
|||||||
101 101 94
|
101 101 94
|
||||||
144 144 137
|
144 144 137
|
||||||
172 41 65
|
172 41 65
|
||||||
0 0 0
|
255 255 255
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
@ -12,7 +12,7 @@ JASC-PAL
|
|||||||
103 92 90
|
103 92 90
|
||||||
144 144 137
|
144 144 137
|
||||||
214 66 61
|
214 66 61
|
||||||
0 0 0
|
255 255 255
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 925 B After Width: | Height: | Size: 1.1 KiB |
@ -9,11 +9,11 @@ JASC-PAL
|
|||||||
146 129 121
|
146 129 121
|
||||||
47 47 40
|
47 47 40
|
||||||
147 63 121
|
147 63 121
|
||||||
104 40 71
|
88 56 64
|
||||||
200 95 172
|
200 95 172
|
||||||
229 229 247
|
229 229 247
|
||||||
0 0 0
|
84 21 43
|
||||||
0 0 0
|
131 41 57
|
||||||
0 0 0
|
222 82 90
|
||||||
0 0 0
|
161 48 74
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
@ -1,19 +1,19 @@
|
|||||||
JASC-PAL
|
JASC-PAL
|
||||||
0100
|
0100
|
||||||
16
|
16
|
||||||
153 210 164
|
152 208 160
|
||||||
82 32 47
|
93 41 57
|
||||||
136 40 51
|
238 98 16
|
||||||
180 68 48
|
|
||||||
7 7 7
|
7 7 7
|
||||||
208 192 128
|
216 201 140
|
||||||
174 151 96
|
175 152 96
|
||||||
47 47 40
|
47 47 40
|
||||||
224 80 69
|
173 74 69
|
||||||
104 40 71
|
96 88 62
|
||||||
|
224 107 96
|
||||||
229 229 247
|
229 229 247
|
||||||
0 0 0
|
84 21 43
|
||||||
0 0 0
|
131 41 57
|
||||||
0 0 0
|
222 82 90
|
||||||
0 0 0
|
178 81 60
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 949 B After Width: | Height: | Size: 1008 B |
@ -5,14 +5,14 @@ JASC-PAL
|
|||||||
55 55 55
|
55 55 55
|
||||||
87 87 87
|
87 87 87
|
||||||
0 0 0
|
0 0 0
|
||||||
24 56 64
|
31 72 64
|
||||||
232 128 56
|
232 128 56
|
||||||
11 55 112
|
11 55 112
|
||||||
24 112 104
|
24 112 104
|
||||||
32 160 136
|
32 160 136
|
||||||
176 104 32
|
176 104 32
|
||||||
236 79 47
|
236 204 110
|
||||||
172 47 25
|
153 115 64
|
||||||
33 33 33
|
33 33 33
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 547 B After Width: | Height: | Size: 727 B |
@ -1,11 +1,11 @@
|
|||||||
JASC-PAL
|
JASC-PAL
|
||||||
0100
|
0100
|
||||||
16
|
16
|
||||||
152 208 160
|
115 202 202
|
||||||
0 0 0
|
52 19 21
|
||||||
88 152 48
|
88 152 48
|
||||||
144 200 8
|
144 200 8
|
||||||
88 152 48
|
36 86 26
|
||||||
152 120 8
|
152 120 8
|
||||||
248 208 64
|
248 208 64
|
||||||
192 152 64
|
192 152 64
|
||||||
@ -14,6 +14,6 @@ JASC-PAL
|
|||||||
80 80 80
|
80 80 80
|
||||||
224 128 8
|
224 128 8
|
||||||
152 120 8
|
152 120 8
|
||||||
0 0 0
|
192 185 180
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
@ -2,18 +2,18 @@ JASC-PAL
|
|||||||
0100
|
0100
|
||||||
16
|
16
|
||||||
152 208 160
|
152 208 160
|
||||||
0 0 0
|
24 52 31
|
||||||
64 152 104
|
64 152 104
|
||||||
104 184 144
|
104 184 144
|
||||||
88 152 48
|
60 96 48
|
||||||
120 64 72
|
120 64 72
|
||||||
240 248 168
|
206 252 139
|
||||||
200 232 48
|
168 211 48
|
||||||
112 128 16
|
112 128 16
|
||||||
252 252 252
|
252 252 252
|
||||||
80 80 80
|
80 80 80
|
||||||
248 88 64
|
248 88 64
|
||||||
152 120 8
|
152 120 8
|
||||||
0 0 0
|
192 185 180
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 606 B After Width: | Height: | Size: 656 B |
@ -10,9 +10,9 @@ JASC-PAL
|
|||||||
121 40 55
|
121 40 55
|
||||||
191 79 104
|
191 79 104
|
||||||
236 112 129
|
236 112 129
|
||||||
95 47 40
|
55 47 40
|
||||||
229 229 247
|
229 229 247
|
||||||
138 87 79
|
105 96 91
|
||||||
79 47 5
|
79 47 5
|
||||||
164 104 5
|
164 104 5
|
||||||
112 71 5
|
112 71 5
|
||||||
|
|||||||
@ -2,18 +2,18 @@ JASC-PAL
|
|||||||
0100
|
0100
|
||||||
16
|
16
|
||||||
152 208 160
|
152 208 160
|
||||||
80 61 60
|
96 88 62
|
||||||
208 192 128
|
208 192 128
|
||||||
2 2 2
|
2 2 2
|
||||||
175 151 96
|
175 151 96
|
||||||
2 2 2
|
2 2 2
|
||||||
186 71 45
|
139 55 62
|
||||||
186 71 45
|
173 74 69
|
||||||
236 112 129
|
224 107 96
|
||||||
80 61 60
|
93 41 57
|
||||||
213 210 213
|
213 210 213
|
||||||
186 71 45
|
186 71 45
|
||||||
79 47 5
|
79 47 5
|
||||||
186 71 45
|
164 104 5
|
||||||
112 71 5
|
112 71 5
|
||||||
218 172 87
|
218 172 87
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 764 B |
@ -6,12 +6,12 @@ JASC-PAL
|
|||||||
64 56 72
|
64 56 72
|
||||||
100 85 143
|
100 85 143
|
||||||
128 104 160
|
128 104 160
|
||||||
88 152 136
|
88 163 136
|
||||||
0 0 0
|
0 0 0
|
||||||
64 64 80
|
64 64 80
|
||||||
40 40 40
|
40 40 40
|
||||||
168 128 64
|
209 128 175
|
||||||
208 176 96
|
208 176 185
|
||||||
96 80 128
|
96 80 128
|
||||||
0 0 0
|
0 0 0
|
||||||
0 0 0
|
0 0 0
|
||||||
|
|||||||
@ -148,7 +148,7 @@ enum MoveCanceler
|
|||||||
MOVE_STEP_SUCCESS,
|
MOVE_STEP_SUCCESS,
|
||||||
MOVE_STEP_BREAK, // Breaks out of the function to run a script
|
MOVE_STEP_BREAK, // Breaks out of the function to run a script
|
||||||
MOVE_STEP_FAILURE, // Same as break but breaks out of it due to move failure and jumps to script that handles the failure
|
MOVE_STEP_FAILURE, // Same as break but breaks out of it due to move failure and jumps to script that handles the failure
|
||||||
MOVE_STEP_REMOVES_STATUS,
|
MOVE_STEP_STATUS_CHANGE,
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct TypePower gNaturalGiftTable[];
|
extern const struct TypePower gNaturalGiftTable[];
|
||||||
|
|||||||
@ -750,7 +750,7 @@ struct BattleTestData
|
|||||||
u8 gender;
|
u8 gender;
|
||||||
u8 nature;
|
u8 nature;
|
||||||
bool8 isShiny;
|
bool8 isShiny;
|
||||||
enum Ability forcedAbilities[NUM_BATTLE_SIDES][PARTY_SIZE];
|
enum Ability forcedAbilities[MAX_BATTLERS_COUNT][PARTY_SIZE];
|
||||||
u8 chosenGimmick[NUM_BATTLE_SIDES][PARTY_SIZE];
|
u8 chosenGimmick[NUM_BATTLE_SIDES][PARTY_SIZE];
|
||||||
u8 forcedEnvironment;
|
u8 forcedEnvironment;
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ void TestRunner_CheckMemory(void);
|
|||||||
|
|
||||||
void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType);
|
void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType);
|
||||||
|
|
||||||
u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex);
|
u32 TestRunner_Battle_GetForcedAbility(u32 array, u32 partyIndex);
|
||||||
u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex);
|
u32 TestRunner_Battle_GetChosenGimmick(u32 side, u32 partyIndex);
|
||||||
u32 TestRunner_Battle_GetForcedEnvironment(void);
|
u32 TestRunner_Battle_GetForcedEnvironment(void);
|
||||||
|
|
||||||
|
|||||||
@ -1091,6 +1091,23 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool32 CanBattlerConsiderSwitch(u32 battler)
|
||||||
|
{
|
||||||
|
if (gBattleMons[battler].volatiles.wrapped)
|
||||||
|
return FALSE;
|
||||||
|
if (gBattleMons[battler].volatiles.escapePrevention)
|
||||||
|
return FALSE;
|
||||||
|
if (gBattleMons[battler].volatiles.root)
|
||||||
|
return FALSE;
|
||||||
|
if (IsAbilityPreventingEscape(battler))
|
||||||
|
return FALSE;
|
||||||
|
if (gBattleStruct->battlerState[battler].commanderSpecies)
|
||||||
|
return FALSE;
|
||||||
|
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool32 ShouldSwitch(u32 battler)
|
bool32 ShouldSwitch(u32 battler)
|
||||||
{
|
{
|
||||||
u32 battlerIn1, battlerIn2;
|
u32 battlerIn1, battlerIn2;
|
||||||
@ -1100,15 +1117,7 @@ bool32 ShouldSwitch(u32 battler)
|
|||||||
s32 i;
|
s32 i;
|
||||||
s32 availableToSwitch;
|
s32 availableToSwitch;
|
||||||
|
|
||||||
if (gBattleMons[battler].volatiles.wrapped)
|
if (!CanBattlerConsiderSwitch(battler))
|
||||||
return FALSE;
|
|
||||||
if (gBattleMons[battler].volatiles.escapePrevention)
|
|
||||||
return FALSE;
|
|
||||||
if (gBattleMons[battler].volatiles.root)
|
|
||||||
return FALSE;
|
|
||||||
if (IsAbilityPreventingEscape(battler))
|
|
||||||
return FALSE;
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
// Sequence Switching AI never switches mid-battle
|
// Sequence Switching AI never switches mid-battle
|
||||||
@ -1251,15 +1260,7 @@ void ModifySwitchAfterMoveScoring(u32 battler)
|
|||||||
s32 i;
|
s32 i;
|
||||||
s32 availableToSwitch;
|
s32 availableToSwitch;
|
||||||
|
|
||||||
if (gBattleMons[battler].volatiles.wrapped)
|
if (!CanBattlerConsiderSwitch(battler))
|
||||||
return;
|
|
||||||
if (gBattleMons[battler].volatiles.escapePrevention)
|
|
||||||
return;
|
|
||||||
if (gBattleMons[battler].volatiles.root)
|
|
||||||
return;
|
|
||||||
if (IsAbilityPreventingEscape(battler))
|
|
||||||
return;
|
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Sequence Switching AI never switches mid-battle
|
// Sequence Switching AI never switches mid-battle
|
||||||
|
|||||||
@ -901,6 +901,10 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u
|
|||||||
struct AiLogicData *aiData = gAiLogicData;
|
struct AiLogicData *aiData = gAiLogicData;
|
||||||
gAiLogicData->aiCalcInProgress = TRUE;
|
gAiLogicData->aiCalcInProgress = TRUE;
|
||||||
|
|
||||||
|
if (moveEffect == EFFECT_HIT_ENEMY_HEAL_ALLY
|
||||||
|
&& battlerDef == BATTLE_PARTNER(battlerAtk))
|
||||||
|
return simDamage;
|
||||||
|
|
||||||
if (moveEffect == EFFECT_NATURE_POWER)
|
if (moveEffect == EFFECT_NATURE_POWER)
|
||||||
move = GetNaturePowerMove(battlerAtk);
|
move = GetNaturePowerMove(battlerAtk);
|
||||||
|
|
||||||
|
|||||||
@ -43,6 +43,7 @@ static void RecordedPartnerHandleIntroTrainerBallThrow(u32 battler);
|
|||||||
static void RecordedPartnerHandleDrawPartyStatusSummary(u32 battler);
|
static void RecordedPartnerHandleDrawPartyStatusSummary(u32 battler);
|
||||||
static void RecordedPartnerHandleEndLinkBattle(u32 battler);
|
static void RecordedPartnerHandleEndLinkBattle(u32 battler);
|
||||||
static void RecordedPartnerBufferRunCommand(u32 battler);
|
static void RecordedPartnerBufferRunCommand(u32 battler);
|
||||||
|
static void RecordedPartnerHandleStatusIconUpdate(u32 battler);
|
||||||
|
|
||||||
static void (*const sRecordedPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
|
static void (*const sRecordedPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
|
||||||
{
|
{
|
||||||
@ -72,7 +73,7 @@ static void (*const sRecordedPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 b
|
|||||||
[CONTROLLER_23] = BtlController_Empty,
|
[CONTROLLER_23] = BtlController_Empty,
|
||||||
[CONTROLLER_HEALTHBARUPDATE] = BtlController_HandleHealthBarUpdate,
|
[CONTROLLER_HEALTHBARUPDATE] = BtlController_HandleHealthBarUpdate,
|
||||||
[CONTROLLER_EXPUPDATE] = PlayerHandleExpUpdate, // Partner's player gets experience the same way as the player.
|
[CONTROLLER_EXPUPDATE] = PlayerHandleExpUpdate, // Partner's player gets experience the same way as the player.
|
||||||
[CONTROLLER_STATUSICONUPDATE] = BtlController_HandleStatusIconUpdate,
|
[CONTROLLER_STATUSICONUPDATE] = RecordedPartnerHandleStatusIconUpdate,
|
||||||
[CONTROLLER_STATUSANIMATION] = BtlController_HandleStatusAnimation,
|
[CONTROLLER_STATUSANIMATION] = BtlController_HandleStatusAnimation,
|
||||||
[CONTROLLER_STATUSXOR] = BtlController_Empty,
|
[CONTROLLER_STATUSXOR] = BtlController_Empty,
|
||||||
[CONTROLLER_DATATRANSFER] = BtlController_Empty,
|
[CONTROLLER_DATATRANSFER] = BtlController_Empty,
|
||||||
@ -267,3 +268,13 @@ static void RecordedPartnerHandleEndLinkBattle(u32 battler)
|
|||||||
BtlController_Complete(battler);
|
BtlController_Complete(battler);
|
||||||
gBattlerControllerFuncs[battler] = SetBattleEndCallbacks;
|
gBattlerControllerFuncs[battler] = SetBattleEndCallbacks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void RecordedPartnerHandleStatusIconUpdate(u32 battler)
|
||||||
|
{
|
||||||
|
if (!IsBattleSEPlaying(battler))
|
||||||
|
{
|
||||||
|
DoStatusIconUpdate(battler);
|
||||||
|
if (gTestRunnerEnabled)
|
||||||
|
TestRunner_Battle_RecordStatus1(battler, GetMonData(GetBattlerMon(battler), MON_DATA_STATUS));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1438,10 +1438,10 @@ static u32 GetBattlerMonData(u32 battler, struct Pokemon *party, u32 monId, u8 *
|
|||||||
#if TESTING
|
#if TESTING
|
||||||
if (gTestRunnerEnabled)
|
if (gTestRunnerEnabled)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(battler);
|
u32 array = (!IsPartnerMonFromSameTrainer(battler)) ? battler : GetBattlerSide(battler);
|
||||||
u32 partyIndex = gBattlerPartyIndexes[battler];
|
u32 partyIndex = gBattlerPartyIndexes[battler];
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, partyIndex))
|
if (TestRunner_Battle_GetForcedAbility(array, partyIndex))
|
||||||
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(side, partyIndex);
|
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(array, partyIndex);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -956,8 +956,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 changeType)
|
|||||||
|
|
||||||
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||||
{
|
{
|
||||||
personalityValue = gDisableStructs[battlerAtk].transformedMonPersonality;
|
personalityValue = gTransformedPersonalities[battlerAtk];
|
||||||
isShiny = gDisableStructs[battlerAtk].transformedMonShininess;
|
isShiny = gTransformedShininess[battlerAtk];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3284,10 +3284,10 @@ void SwitchInClearSetData(u32 battler, struct Volatiles *volatilesCopy)
|
|||||||
#if TESTING
|
#if TESTING
|
||||||
if (gTestRunnerEnabled)
|
if (gTestRunnerEnabled)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(battler);
|
u32 array = (!IsPartnerMonFromSameTrainer(battler)) ? battler : GetBattlerSide(battler);
|
||||||
u32 partyIndex = gBattlerPartyIndexes[battler];
|
u32 partyIndex = gBattlerPartyIndexes[battler];
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, partyIndex))
|
if (TestRunner_Battle_GetForcedAbility(array, partyIndex))
|
||||||
gBattleMons[i].ability = TestRunner_Battle_GetForcedAbility(side, partyIndex);
|
gBattleMons[i].ability = TestRunner_Battle_GetForcedAbility(array, partyIndex);
|
||||||
}
|
}
|
||||||
#endif // TESTING
|
#endif // TESTING
|
||||||
|
|
||||||
@ -3495,10 +3495,10 @@ static void DoBattleIntro(void)
|
|||||||
#if TESTING
|
#if TESTING
|
||||||
if (gTestRunnerEnabled)
|
if (gTestRunnerEnabled)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(battler);
|
u32 array = (!IsPartnerMonFromSameTrainer(battler)) ? battler : GetBattlerSide(battler);
|
||||||
u32 partyIndex = gBattlerPartyIndexes[battler];
|
u32 partyIndex = gBattlerPartyIndexes[battler];
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, partyIndex))
|
if (TestRunner_Battle_GetForcedAbility(array, partyIndex))
|
||||||
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(side, partyIndex);
|
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(array, partyIndex);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -3794,10 +3794,10 @@ static void TryDoEventsBeforeFirstTurn(void)
|
|||||||
{
|
{
|
||||||
for (i = 0; i < gBattlersCount; ++i)
|
for (i = 0; i < gBattlersCount; ++i)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(i);
|
u32 array = (!IsPartnerMonFromSameTrainer(i)) ? i : GetBattlerSide(i);
|
||||||
u32 partyIndex = gBattlerPartyIndexes[i];
|
u32 partyIndex = gBattlerPartyIndexes[i];
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, partyIndex))
|
if (TestRunner_Battle_GetForcedAbility(array, partyIndex))
|
||||||
gBattleMons[i].ability = TestRunner_Battle_GetForcedAbility(side, partyIndex);
|
gBattleMons[i].ability = TestRunner_Battle_GetForcedAbility(array, partyIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // TESTING
|
#endif // TESTING
|
||||||
|
|||||||
@ -3036,6 +3036,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
|
|||||||
case MOVE_EFFECT_STEALTH_ROCK:
|
case MOVE_EFFECT_STEALTH_ROCK:
|
||||||
case MOVE_EFFECT_PAYDAY:
|
case MOVE_EFFECT_PAYDAY:
|
||||||
case MOVE_EFFECT_BUG_BITE:
|
case MOVE_EFFECT_BUG_BITE:
|
||||||
|
case MOVE_EFFECT_FLAME_BURST:
|
||||||
activateAfterFaint = TRUE;
|
activateAfterFaint = TRUE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -4281,7 +4282,7 @@ static void Cmd_tryfaintmon(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd->battler == BS_ATTACKER)
|
if (cmd->battler == BS_TARGET && gCurrentMove != MOVE_NONE)
|
||||||
TryUpdateEvolutionTracker(IF_DEFEAT_X_WITH_ITEMS, 1, MOVE_NONE);
|
TryUpdateEvolutionTracker(IF_DEFEAT_X_WITH_ITEMS, 1, MOVE_NONE);
|
||||||
|
|
||||||
gBattlerFainted = battler;
|
gBattlerFainted = battler;
|
||||||
@ -7308,10 +7309,10 @@ static void Cmd_switchindataupdate(void)
|
|||||||
#if TESTING
|
#if TESTING
|
||||||
if (gTestRunnerEnabled)
|
if (gTestRunnerEnabled)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(battler);
|
u32 array = (!IsPartnerMonFromSameTrainer(battler)) ? battler : GetBattlerSide(battler);
|
||||||
u32 partyIndex = gBattlerPartyIndexes[battler];
|
u32 partyIndex = gBattlerPartyIndexes[battler];
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, partyIndex))
|
if (TestRunner_Battle_GetForcedAbility(array, partyIndex))
|
||||||
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(side, partyIndex);
|
gBattleMons[battler].ability = TestRunner_Battle_GetForcedAbility(array, partyIndex);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -11303,10 +11304,10 @@ static void Cmd_mimicattackcopy(void)
|
|||||||
{
|
{
|
||||||
CMD_ARGS(const u8 *failInstr);
|
CMD_ARGS(const u8 *failInstr);
|
||||||
|
|
||||||
if ((IsMoveMimicBanned(gLastMoves[gBattlerTarget]))
|
if (gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE
|
||||||
|| (gBattleMons[gBattlerAttacker].volatiles.transformed)
|
|| gLastMoves[gBattlerTarget] == MOVE_NONE
|
||||||
|| gLastMoves[gBattlerTarget] == MOVE_NONE
|
|| gBattleMons[gBattlerAttacker].volatiles.transformed
|
||||||
|| gLastMoves[gBattlerTarget] == MOVE_UNAVAILABLE)
|
|| IsMoveMimicBanned(gLastMoves[gBattlerTarget]))
|
||||||
{
|
{
|
||||||
gBattlescriptCurrInstr = cmd->failInstr;
|
gBattlescriptCurrInstr = cmd->failInstr;
|
||||||
}
|
}
|
||||||
@ -11846,9 +11847,9 @@ static void Cmd_healpartystatus(void)
|
|||||||
#if TESTING
|
#if TESTING
|
||||||
if (gTestRunnerEnabled)
|
if (gTestRunnerEnabled)
|
||||||
{
|
{
|
||||||
u32 side = GetBattlerSide(gBattlerAttacker);
|
u32 array = (!IsPartnerMonFromSameTrainer(gBattlerAttacker)) ? gBattlerAttacker : GetBattlerSide(gBattlerAttacker);
|
||||||
if (TestRunner_Battle_GetForcedAbility(side, i))
|
if (TestRunner_Battle_GetForcedAbility(array, i))
|
||||||
ability = TestRunner_Battle_GetForcedAbility(side, i);
|
ability = TestRunner_Battle_GetForcedAbility(array, i);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -12733,7 +12734,7 @@ static void Cmd_tryswapitems(void)
|
|||||||
|
|
||||||
if (GetBattlerAbility(gBattlerTarget) != ABILITY_GORILLA_TACTICS)
|
if (GetBattlerAbility(gBattlerTarget) != ABILITY_GORILLA_TACTICS)
|
||||||
gBattleStruct->choicedMove[gBattlerTarget] = MOVE_NONE;
|
gBattleStruct->choicedMove[gBattlerTarget] = MOVE_NONE;
|
||||||
if (GetBattlerAbility(gBattlerTarget) != ABILITY_GORILLA_TACTICS)
|
if (GetBattlerAbility(gBattlerAttacker) != ABILITY_GORILLA_TACTICS)
|
||||||
gBattleStruct->choicedMove[gBattlerAttacker] = MOVE_NONE;
|
gBattleStruct->choicedMove[gBattlerAttacker] = MOVE_NONE;
|
||||||
|
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
@ -15474,11 +15475,12 @@ static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16
|
|||||||
u32 i, j;
|
u32 i, j;
|
||||||
|
|
||||||
if (IsOnPlayerSide(gBattlerAttacker)
|
if (IsOnPlayerSide(gBattlerAttacker)
|
||||||
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
&& ((TESTING && IsDoubleBattle()) // To be removed when Wild Double Battles are added to tests
|
||||||
|
|| !(gBattleTypeFlags & (BATTLE_TYPE_LINK
|
||||||
| BATTLE_TYPE_EREADER_TRAINER
|
| BATTLE_TYPE_EREADER_TRAINER
|
||||||
| BATTLE_TYPE_RECORDED_LINK
|
| BATTLE_TYPE_RECORDED_LINK
|
||||||
| BATTLE_TYPE_TRAINER_HILL
|
| BATTLE_TYPE_TRAINER_HILL
|
||||||
| BATTLE_TYPE_FRONTIER)))
|
| BATTLE_TYPE_FRONTIER))))
|
||||||
{
|
{
|
||||||
const struct Evolution *evolutions = GetSpeciesEvolutions(gBattleMons[gBattlerAttacker].species);
|
const struct Evolution *evolutions = GetSpeciesEvolutions(gBattleMons[gBattlerAttacker].species);
|
||||||
if (evolutions == NULL)
|
if (evolutions == NULL)
|
||||||
@ -16609,7 +16611,27 @@ void BS_GetStatValue(void)
|
|||||||
{
|
{
|
||||||
NATIVE_ARGS(u8 stat);
|
NATIVE_ARGS(u8 stat);
|
||||||
u32 stat = cmd->stat;
|
u32 stat = cmd->stat;
|
||||||
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = *(u16 *)(&gBattleMons[gBattlerTarget].attack) + (stat - 1);
|
switch (stat)
|
||||||
|
{
|
||||||
|
case STAT_ATK:
|
||||||
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = gBattleMons[gBattlerTarget].attack;
|
||||||
|
break;
|
||||||
|
case STAT_DEF:
|
||||||
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = gBattleMons[gBattlerTarget].defense;
|
||||||
|
break;
|
||||||
|
case STAT_SPATK:
|
||||||
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = gBattleMons[gBattlerTarget].spAttack;
|
||||||
|
break;
|
||||||
|
case STAT_SPDEF:
|
||||||
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = gBattleMons[gBattlerTarget].spDefense;
|
||||||
|
break;
|
||||||
|
case STAT_SPEED:
|
||||||
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] = gBattleMons[gBattlerTarget].speed;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Add errorf here on upcoming
|
||||||
|
return;
|
||||||
|
}
|
||||||
gBattleStruct->passiveHpUpdate[gBattlerAttacker] *= gStatStageRatios[gBattleMons[gBattlerTarget].statStages[stat]][0];
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] *= gStatStageRatios[gBattleMons[gBattlerTarget].statStages[stat]][0];
|
||||||
gBattleStruct->passiveHpUpdate[gBattlerAttacker] /= gStatStageRatios[gBattleMons[gBattlerTarget].statStages[stat]][1];
|
gBattleStruct->passiveHpUpdate[gBattlerAttacker] /= gStatStageRatios[gBattleMons[gBattlerTarget].statStages[stat]][1];
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
@ -18012,3 +18034,29 @@ void BS_JumpIfGenConfigLowerThan(void)
|
|||||||
else
|
else
|
||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used when the Pokemon faints before Toxic Spikes would normally be processed in the hazards queue.
|
||||||
|
void BS_TryAbsorbToxicSpikesOnFaint(void)
|
||||||
|
{
|
||||||
|
NATIVE_ARGS();
|
||||||
|
u32 battler = gBattlerFainted;
|
||||||
|
u32 side = GetBattlerSide(battler);
|
||||||
|
|
||||||
|
if (gSideTimers[side].toxicSpikesAmount == 0)
|
||||||
|
{
|
||||||
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsBattlerGrounded(battler, GetBattlerAbility(battler), GetBattlerHoldEffect(battler))
|
||||||
|
&& IS_BATTLER_OF_TYPE(battler, TYPE_POISON))
|
||||||
|
{
|
||||||
|
gSideTimers[side].toxicSpikesAmount = 0;
|
||||||
|
RemoveHazardFromField(side, HAZARDS_TOXIC_SPIKES);
|
||||||
|
gEffectBattler = battler;
|
||||||
|
BattleScriptCall(BattleScript_ToxicSpikesAbsorbed);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
|
}
|
||||||
|
|||||||
@ -2046,7 +2046,7 @@ static enum MoveCanceler CancelerAsleepOrFrozen(struct BattleContext *ctx)
|
|||||||
gEffectBattler = ctx->battlerAtk;
|
gEffectBattler = ctx->battlerAtk;
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR;
|
||||||
BattleScriptCall(BattleScript_MoveUsedWokeUp);
|
BattleScriptCall(BattleScript_MoveUsedWokeUp);
|
||||||
return MOVE_STEP_REMOVES_STATUS;
|
return MOVE_STEP_STATUS_CHANGE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2068,7 +2068,6 @@ static enum MoveCanceler CancelerAsleepOrFrozen(struct BattleContext *ctx)
|
|||||||
gProtectStructs[ctx->battlerAtk].nonVolatileStatusImmobility = TRUE;
|
gProtectStructs[ctx->battlerAtk].nonVolatileStatusImmobility = TRUE;
|
||||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
|
gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
|
||||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||||
return MOVE_STEP_FAILURE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2077,8 +2076,8 @@ static enum MoveCanceler CancelerAsleepOrFrozen(struct BattleContext *ctx)
|
|||||||
gBattleMons[ctx->battlerAtk].volatiles.nightmare = FALSE;
|
gBattleMons[ctx->battlerAtk].volatiles.nightmare = FALSE;
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP;
|
||||||
BattleScriptCall(BattleScript_MoveUsedWokeUp);
|
BattleScriptCall(BattleScript_MoveUsedWokeUp);
|
||||||
return MOVE_STEP_REMOVES_STATUS;
|
|
||||||
}
|
}
|
||||||
|
return MOVE_STEP_STATUS_CHANGE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_FREEZE && !MoveThawsUser(ctx->currentMove))
|
else if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_FREEZE && !MoveThawsUser(ctx->currentMove))
|
||||||
@ -2095,7 +2094,7 @@ static enum MoveCanceler CancelerAsleepOrFrozen(struct BattleContext *ctx)
|
|||||||
BattleScriptCall(BattleScript_MoveUsedUnfroze);
|
BattleScriptCall(BattleScript_MoveUsedUnfroze);
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED;
|
||||||
}
|
}
|
||||||
return MOVE_STEP_REMOVES_STATUS; // Move failure but also removes status
|
return MOVE_STEP_STATUS_CHANGE; // Move failure but also removes status
|
||||||
}
|
}
|
||||||
return MOVE_STEP_SUCCESS;
|
return MOVE_STEP_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -2500,7 +2499,7 @@ static enum MoveCanceler CancelerThaw(struct BattleContext *ctx)
|
|||||||
BattleScriptCall(BattleScript_MoveUsedUnfroze);
|
BattleScriptCall(BattleScript_MoveUsedUnfroze);
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE;
|
||||||
}
|
}
|
||||||
return MOVE_STEP_REMOVES_STATUS;
|
return MOVE_STEP_STATUS_CHANGE;
|
||||||
}
|
}
|
||||||
if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_FROSTBITE && MoveThawsUser(ctx->currentMove))
|
if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_FROSTBITE && MoveThawsUser(ctx->currentMove))
|
||||||
{
|
{
|
||||||
@ -2510,7 +2509,7 @@ static enum MoveCanceler CancelerThaw(struct BattleContext *ctx)
|
|||||||
BattleScriptCall(BattleScript_MoveUsedUnfrostbite);
|
BattleScriptCall(BattleScript_MoveUsedUnfrostbite);
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FROSTBITE_HEALED_BY_MOVE;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FROSTBITE_HEALED_BY_MOVE;
|
||||||
}
|
}
|
||||||
return MOVE_STEP_REMOVES_STATUS;
|
return MOVE_STEP_STATUS_CHANGE;
|
||||||
}
|
}
|
||||||
return MOVE_STEP_SUCCESS;
|
return MOVE_STEP_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -3047,7 +3046,7 @@ enum MoveCanceler AtkCanceler_MoveSuccessOrder(struct BattleContext *ctx)
|
|||||||
gBattleStruct->eventState.atkCanceler++;
|
gBattleStruct->eventState.atkCanceler++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (effect == MOVE_STEP_REMOVES_STATUS)
|
if (effect == MOVE_STEP_STATUS_CHANGE)
|
||||||
{
|
{
|
||||||
BtlController_EmitSetMonData(
|
BtlController_EmitSetMonData(
|
||||||
ctx->battlerAtk,
|
ctx->battlerAtk,
|
||||||
|
|||||||
@ -37,7 +37,7 @@ sp_irq: .word IWRAM_END - 0x60
|
|||||||
.pool
|
.pool
|
||||||
|
|
||||||
.arm
|
.arm
|
||||||
.section .iwram.code
|
.section .iwram.code, "ax", %progbits
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
IntrMain::
|
IntrMain::
|
||||||
mov r3, #REG_BASE
|
mov r3, #REG_BASE
|
||||||
|
|||||||
@ -12393,7 +12393,6 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||||
.additionalEffects = ADDITIONAL_EFFECTS({
|
.additionalEffects = ADDITIONAL_EFFECTS({
|
||||||
.moveEffect = MOVE_EFFECT_FLAME_BURST,
|
.moveEffect = MOVE_EFFECT_FLAME_BURST,
|
||||||
.self = TRUE,
|
|
||||||
}),
|
}),
|
||||||
.contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
|
.contestEffect = CONTEST_EFFECT_SHIFT_JUDGE_ATTENTION,
|
||||||
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
||||||
|
|||||||
@ -4988,42 +4988,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] =
|
|||||||
"利用月光的力量,\n"
|
"利用月光的力量,\n"
|
||||||
"自如地控制周围20米\n"
|
"自如地控制周围20米\n"
|
||||||
"的重力来四处飞行。"),
|
"的重力来四处飞行。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Clefable)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sClefableLevelUpLearnset,
|
.levelUpLearnset = sClefableLevelUpLearnset,
|
||||||
.teachableLearnset = sClefableTeachableLearnset,
|
.teachableLearnset = sClefableTeachableLearnset,
|
||||||
@ -9136,42 +9116,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] =
|
|||||||
"口中充满因超级进化\n"
|
"口中充满因超级进化\n"
|
||||||
"而增加的溶解液。一不留神\n"
|
"而增加的溶解液。一不留神\n"
|
||||||
"就会从嘴里溢出。"),
|
"就会从嘴里溢出。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Victreebel)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sVictreebelLevelUpLearnset,
|
.levelUpLearnset = sVictreebelLevelUpLearnset,
|
||||||
.teachableLearnset = sVictreebelTeachableLearnset,
|
.teachableLearnset = sVictreebelTeachableLearnset,
|
||||||
@ -15465,42 +15425,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] =
|
|||||||
"动作变得越来越像人。\n"
|
"动作变得越来越像人。\n"
|
||||||
"它是试图沟通,还是打算代替\n"
|
"它是试图沟通,还是打算代替\n"
|
||||||
"人类,仍是未解之谜。"),
|
"人类,仍是未解之谜。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Starmie)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sStarmieLevelUpLearnset,
|
.levelUpLearnset = sStarmieLevelUpLearnset,
|
||||||
.teachableLearnset = sStarmieTeachableLearnset,
|
.teachableLearnset = sStarmieTeachableLearnset,
|
||||||
@ -19937,42 +19877,22 @@ const struct SpeciesInfo gSpeciesInfoGen1[] =
|
|||||||
"超级进化的能量让它的\n"
|
"超级进化的能量让它的\n"
|
||||||
"情感变得过于温柔。\n"
|
"情感变得过于温柔。\n"
|
||||||
"会以慈悲之心终结敌人。"),
|
"会以慈悲之心终结敌人。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Dragonite)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sDragoniteLevelUpLearnset,
|
.levelUpLearnset = sDragoniteLevelUpLearnset,
|
||||||
.teachableLearnset = sDragoniteTeachableLearnset,
|
.teachableLearnset = sDragoniteTeachableLearnset,
|
||||||
|
|||||||
@ -261,42 +261,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] =
|
|||||||
.description = COMPOUND_STRING(
|
.description = COMPOUND_STRING(
|
||||||
"从4朵花中放出的日光束\n"
|
"从4朵花中放出的日光束\n"
|
||||||
"威力巨大。别名超级日光炮。"),
|
"威力巨大。别名超级日光炮。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Meganium)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sMeganiumLevelUpLearnset,
|
.levelUpLearnset = sMeganiumLevelUpLearnset,
|
||||||
.teachableLearnset = sMeganiumTeachableLearnset,
|
.teachableLearnset = sMeganiumTeachableLearnset,
|
||||||
@ -837,42 +817,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] =
|
|||||||
"用兜帽般的鳍和双臂\n"
|
"用兜帽般的鳍和双臂\n"
|
||||||
"构成一个巨大的颚,\n"
|
"构成一个巨大的颚,\n"
|
||||||
"咬合的威力提升为10倍。"),
|
"咬合的威力提升为10倍。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Feraligatr)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sFeraligatrLevelUpLearnset,
|
.levelUpLearnset = sFeraligatrLevelUpLearnset,
|
||||||
.teachableLearnset = sFeraligatrTeachableLearnset,
|
.teachableLearnset = sFeraligatrTeachableLearnset,
|
||||||
@ -7193,42 +7153,22 @@ const struct SpeciesInfo gSpeciesInfoGen2[] =
|
|||||||
"飞行速度超过音速。\n"
|
"飞行速度超过音速。\n"
|
||||||
"会掀起冲击波吹飞敌人,\n"
|
"会掀起冲击波吹飞敌人,\n"
|
||||||
"并用爪子给予致命一击。"),
|
"并用爪子给予致命一击。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Skarmory)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sSkarmoryLevelUpLearnset,
|
.levelUpLearnset = sSkarmoryLevelUpLearnset,
|
||||||
.teachableLearnset = sSkarmoryTeachableLearnset,
|
.teachableLearnset = sSkarmoryTeachableLearnset,
|
||||||
|
|||||||
@ -10570,42 +10570,22 @@ const struct SpeciesInfo gSpeciesInfoGen3[] =
|
|||||||
"散发出带有幽灵能量的\n"
|
"散发出带有幽灵能量的\n"
|
||||||
"诡异冷气,连火和风等没有\n"
|
"诡异冷气,连火和风等没有\n"
|
||||||
"形状的东西也能冻住。"),
|
"形状的东西也能冻住。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Froslass)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sFroslassLevelUpLearnset,
|
.levelUpLearnset = sFroslassLevelUpLearnset,
|
||||||
.teachableLearnset = sFroslassTeachableLearnset,
|
.teachableLearnset = sFroslassTeachableLearnset,
|
||||||
|
|||||||
@ -538,42 +538,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"会高举熊熊燃烧的蛇矛状\n"
|
"会高举熊熊燃烧的蛇矛状\n"
|
||||||
"火焰,火速赶去援救陷入\n"
|
"火焰,火速赶去援救陷入\n"
|
||||||
"困境的伙伴。"),
|
"困境的伙伴。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Emboar)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sEmboarLevelUpLearnset,
|
.levelUpLearnset = sEmboarLevelUpLearnset,
|
||||||
.teachableLearnset = sEmboarTeachableLearnset,
|
.teachableLearnset = sEmboarTeachableLearnset,
|
||||||
@ -2836,42 +2816,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"只要把头和双手合在一起\n"
|
"只要把头和双手合在一起\n"
|
||||||
"形成流线型,再高速旋转\n"
|
"形成流线型,再高速旋转\n"
|
||||||
"就能破坏一切。"),
|
"就能破坏一切。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Excadrill)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sExcadrillLevelUpLearnset,
|
.levelUpLearnset = sExcadrillLevelUpLearnset,
|
||||||
.teachableLearnset = sExcadrillTeachableLearnset,
|
.teachableLearnset = sExcadrillTeachableLearnset,
|
||||||
@ -4065,42 +4025,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"闪烁暗淡光芒的剧毒会\n"
|
"闪烁暗淡光芒的剧毒会\n"
|
||||||
"作用于蜈蚣王的精神,\n"
|
"作用于蜈蚣王的精神,\n"
|
||||||
"让它变得更加凶暴。"),
|
"让它变得更加凶暴。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Scolipede)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sScolipedeLevelUpLearnset,
|
.levelUpLearnset = sScolipedeLevelUpLearnset,
|
||||||
.teachableLearnset = sScolipedeTeachableLearnset,
|
.teachableLearnset = sScolipedeTeachableLearnset,
|
||||||
@ -5794,42 +5734,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"在超级进化的影响下,\n"
|
"在超级进化的影响下,\n"
|
||||||
"皮肤变得又白又硬且有弹性。\n"
|
"皮肤变得又白又硬且有弹性。\n"
|
||||||
"气势当然是十足的。"),
|
"气势当然是十足的。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Scrafty)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sScraftyLevelUpLearnset,
|
.levelUpLearnset = sScraftyLevelUpLearnset,
|
||||||
.teachableLearnset = sScraftyTeachableLearnset,
|
.teachableLearnset = sScraftyTeachableLearnset,
|
||||||
@ -9732,42 +9652,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"发电量是超级进化前的10倍。\n"
|
"发电量是超级进化前的10倍。\n"
|
||||||
"会从由粘液构成的假麻麻鳗\n"
|
"会从由粘液构成的假麻麻鳗\n"
|
||||||
"那里放电。"),
|
"那里放电。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Eelektross)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sEelektrossLevelUpLearnset,
|
.levelUpLearnset = sEelektrossLevelUpLearnset,
|
||||||
.teachableLearnset = sEelektrossTeachableLearnset,
|
.teachableLearnset = sEelektrossTeachableLearnset,
|
||||||
@ -10165,42 +10065,22 @@ const struct SpeciesInfo gSpeciesInfoGen5[] =
|
|||||||
"两只眼睛中的一只是连接这个世界\n"
|
"两只眼睛中的一只是连接这个世界\n"
|
||||||
"和另一个世界的窗口。\n"
|
"和另一个世界的窗口。\n"
|
||||||
"会吸取怨念并将其化为力量。"),
|
"会吸取怨念并将其化为力量。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Chandelure)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sChandelureLevelUpLearnset,
|
.levelUpLearnset = sChandelureLevelUpLearnset,
|
||||||
.teachableLearnset = sChandelureTeachableLearnset,
|
.teachableLearnset = sChandelureTeachableLearnset,
|
||||||
|
|||||||
@ -240,42 +240,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"拥有防守至上的意志以及\n"
|
"拥有防守至上的意志以及\n"
|
||||||
"经过强化的装甲。\n"
|
"经过强化的装甲。\n"
|
||||||
"两者都坚不可摧。"),
|
"两者都坚不可摧。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Chesnaught)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sChesnaughtLevelUpLearnset,
|
.levelUpLearnset = sChesnaughtLevelUpLearnset,
|
||||||
.teachableLearnset = sChesnaughtTeachableLearnset,
|
.teachableLearnset = sChesnaughtTeachableLearnset,
|
||||||
@ -527,42 +507,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"会操控燃起火焰的枝条让\n"
|
"会操控燃起火焰的枝条让\n"
|
||||||
"对手变得神魂颠倒,\n"
|
"对手变得神魂颠倒,\n"
|
||||||
"再用大火球将其燃烧殆尽。"),
|
"再用大火球将其燃烧殆尽。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Delphox)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sDelphoxLevelUpLearnset,
|
.levelUpLearnset = sDelphoxLevelUpLearnset,
|
||||||
.teachableLearnset = sDelphoxTeachableLearnset,
|
.teachableLearnset = sDelphoxTeachableLearnset,
|
||||||
@ -936,42 +896,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"会高速旋转巨大的手里剑\n"
|
"会高速旋转巨大的手里剑\n"
|
||||||
"使其浮空,倒贴在上面\n"
|
"使其浮空,倒贴在上面\n"
|
||||||
"打对手一个出其不意。"),
|
"打对手一个出其不意。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Greninja)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sGreninjaLevelUpLearnset,
|
.levelUpLearnset = sGreninjaLevelUpLearnset,
|
||||||
.teachableLearnset = sGreninjaTeachableLearnset,
|
.teachableLearnset = sGreninjaTeachableLearnset,
|
||||||
@ -1898,42 +1838,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"能吐出超过1万度的火焰。\n"
|
"能吐出超过1万度的火焰。\n"
|
||||||
"会一边乱摆熊熊燃烧的鬃毛,\n"
|
"会一边乱摆熊熊燃烧的鬃毛,\n"
|
||||||
"一边保护伙伴。"),
|
"一边保护伙伴。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Pyroar)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sPyroarLevelUpLearnset,
|
.levelUpLearnset = sPyroarLevelUpLearnset,
|
||||||
.teachableLearnset = sPyroarTeachableLearnset,
|
.teachableLearnset = sPyroarTeachableLearnset,
|
||||||
@ -2299,42 +2219,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
.description = COMPOUND_STRING(
|
.description = COMPOUND_STRING(
|
||||||
"永恒之花会将超级进化的能量吸尽。\n"
|
"永恒之花会将超级进化的能量吸尽。\n"
|
||||||
"花可以独自袭击敌人。"),
|
"花可以独自袭击敌人。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Floette)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sFloetteEternalLevelUpLearnset,
|
.levelUpLearnset = sFloetteEternalLevelUpLearnset,
|
||||||
.teachableLearnset = sFloetteEternalTeachableLearnset,
|
.teachableLearnset = sFloetteEternalTeachableLearnset,
|
||||||
@ -3633,42 +3533,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"会用颜色鲜艳的光覆盖\n"
|
"会用颜色鲜艳的光覆盖\n"
|
||||||
"对手的人格和记忆,\n"
|
"对手的人格和记忆,\n"
|
||||||
"将其按自己的意愿操纵。"),
|
"将其按自己的意愿操纵。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Malamar)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sMalamarLevelUpLearnset,
|
.levelUpLearnset = sMalamarLevelUpLearnset,
|
||||||
.teachableLearnset = sMalamarTeachableLearnset,
|
.teachableLearnset = sMalamarTeachableLearnset,
|
||||||
@ -3849,42 +3729,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"虽然能用很多胳膊将对手\n"
|
"虽然能用很多胳膊将对手\n"
|
||||||
"耍得团团转,但头部的\n"
|
"耍得团团转,但头部的\n"
|
||||||
"龟足巨铠会相当忙。"),
|
"龟足巨铠会相当忙。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Barbaracle)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sBarbaracleLevelUpLearnset,
|
.levelUpLearnset = sBarbaracleLevelUpLearnset,
|
||||||
.teachableLearnset = sBarbaracleTeachableLearnset,
|
.teachableLearnset = sBarbaracleTeachableLearnset,
|
||||||
@ -4067,42 +3927,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"会吐出能让细胞的再生力\n"
|
"会吐出能让细胞的再生力\n"
|
||||||
"失控的液体。除了自己,\n"
|
"失控的液体。除了自己,\n"
|
||||||
"对谁都是剧毒。"),
|
"对谁都是剧毒。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Dragalge)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sDragalgeLevelUpLearnset,
|
.levelUpLearnset = sDragalgeLevelUpLearnset,
|
||||||
.teachableLearnset = sDragalgeTeachableLearnset,
|
.teachableLearnset = sDragalgeTeachableLearnset,
|
||||||
@ -4773,42 +4613,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"会利用因超级进化而\n"
|
"会利用因超级进化而\n"
|
||||||
"激增的浑身肌肉\n"
|
"激增的浑身肌肉\n"
|
||||||
"炫耀自己强而有力。"),
|
"炫耀自己强而有力。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Hawlucha)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sHawluchaLevelUpLearnset,
|
.levelUpLearnset = sHawluchaLevelUpLearnset,
|
||||||
.teachableLearnset = sHawluchaTeachableLearnset,
|
.teachableLearnset = sHawluchaTeachableLearnset,
|
||||||
@ -6968,42 +6788,22 @@ const struct SpeciesInfo gSpeciesInfoGen6[] =
|
|||||||
"当空前的危机来临时,\n"
|
"当空前的危机来临时,\n"
|
||||||
"感受人类的思绪而超级进化。\n"
|
"感受人类的思绪而超级进化。\n"
|
||||||
"能用无双之力将事态平息。"),
|
"能用无双之力将事态平息。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Zygarde)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sZygardeLevelUpLearnset,
|
.levelUpLearnset = sZygardeLevelUpLearnset,
|
||||||
.teachableLearnset = sZygardeTeachableLearnset,
|
.teachableLearnset = sZygardeTeachableLearnset,
|
||||||
|
|||||||
@ -5176,42 +5176,22 @@ const struct SpeciesInfo gSpeciesInfoGen7[] =
|
|||||||
"激活全身细胞,\n"
|
"激活全身细胞,\n"
|
||||||
"恢复青春后的模样。\n"
|
"恢复青春后的模样。\n"
|
||||||
"能操控大气,呼风唤雨。"),
|
"能操控大气,呼风唤雨。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Drampa)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sDrampaLevelUpLearnset,
|
.levelUpLearnset = sDrampaLevelUpLearnset,
|
||||||
.teachableLearnset = sDrampaTeachableLearnset,
|
.teachableLearnset = sDrampaTeachableLearnset,
|
||||||
|
|||||||
@ -5214,42 +5214,22 @@ const struct SpeciesInfo gSpeciesInfoGen8[] =
|
|||||||
.description = COMPOUND_STRING(
|
.description = COMPOUND_STRING(
|
||||||
"仅限拥有牢固牵绊的头头和\n"
|
"仅限拥有牢固牵绊的头头和\n"
|
||||||
"跟班才能组成的究极阵形。"),
|
"跟班才能组成的究极阵形。"),
|
||||||
.frontPic = gMonFrontPic_CircledQuestionMark,
|
// .frontPic = gMonFrontPic_CircledQuestionMark,
|
||||||
.frontPicSize = MON_COORDS_SIZE(40, 40),
|
// .frontPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.frontPicYOffset = 12,
|
// .frontPicYOffset = 12,
|
||||||
.frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
// .frontAnimFrames = sAnims_TwoFramePlaceHolder,
|
||||||
.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
// .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE,
|
||||||
.backPic = gMonBackPic_CircledQuestionMark,
|
// .backPic = gMonBackPic_CircledQuestionMark,
|
||||||
.backPicSize = MON_COORDS_SIZE(40, 40),
|
// .backPicSize = MON_COORDS_SIZE(40, 40),
|
||||||
.backPicYOffset = 12,
|
// .backPicYOffset = 12,
|
||||||
.backAnimId = BACK_ANIM_NONE,
|
// .backAnimId = BACK_ANIM_NONE,
|
||||||
.palette = gMonPalette_CircledQuestionMark,
|
// .palette = gMonPalette_CircledQuestionMark,
|
||||||
.shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
// .shinyPalette = gMonShinyPalette_CircledQuestionMark,
|
||||||
.iconSprite = gMonIcon_QuestionMark,
|
// .iconSprite = gMonIcon_QuestionMark,
|
||||||
.iconPalIndex = 0,
|
// .iconPalIndex = 0,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
FOOTPRINT(QuestionMark)
|
FOOTPRINT(Falinks)
|
||||||
SHADOW(-1, 0, SHADOW_SIZE_M)
|
//SHADOW(-1, 0, SHADOW_SIZE_M)
|
||||||
#if OW_BATTLE_ONLY_FORMS
|
|
||||||
.overworldData = {
|
|
||||||
.tileTag = TAG_NONE,
|
|
||||||
.paletteTag = OBJ_EVENT_PAL_TAG_SUBSTITUTE,
|
|
||||||
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
|
|
||||||
.size = 512,
|
|
||||||
.width = 32,
|
|
||||||
.height = 32,
|
|
||||||
.paletteSlot = PALSLOT_NPC_1,
|
|
||||||
.shadowSize = SHADOW_SIZE_M,
|
|
||||||
.inanimate = FALSE,
|
|
||||||
.compressed = COMP,
|
|
||||||
.tracks = TRACKS_FOOT,
|
|
||||||
.oam = &gObjectEventBaseOam_32x32,
|
|
||||||
.subspriteTables = sOamTables_32x32,
|
|
||||||
.anims = sAnimTable_Following,
|
|
||||||
.images = sPicTable_Substitute,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
|
||||||
},
|
|
||||||
#endif //OW_BATTLE_ONLY_FORMS
|
|
||||||
.isMegaEvolution = TRUE,
|
.isMegaEvolution = TRUE,
|
||||||
.levelUpLearnset = sFalinksLevelUpLearnset,
|
.levelUpLearnset = sFalinksLevelUpLearnset,
|
||||||
.teachableLearnset = sFalinksTeachableLearnset,
|
.teachableLearnset = sFalinksTeachableLearnset,
|
||||||
|
|||||||
@ -2091,7 +2091,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
|
|||||||
.iconSprite = gMonIcon_Naclstack,
|
.iconSprite = gMonIcon_Naclstack,
|
||||||
.iconPalIndex = 2,
|
.iconPalIndex = 2,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_SLOW,
|
.pokemonJumpType = PKMN_JUMP_TYPE_SLOW,
|
||||||
SHADOW(0, 5, SHADOW_SIZE_L)
|
SHADOW(0, 2, SHADOW_SIZE_L)
|
||||||
FOOTPRINT(Naclstack)
|
FOOTPRINT(Naclstack)
|
||||||
OVERWORLD(
|
OVERWORLD(
|
||||||
sPicTable_Naclstack,
|
sPicTable_Naclstack,
|
||||||
@ -2154,7 +2154,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] =
|
|||||||
.iconSprite = gMonIcon_Garganacl,
|
.iconSprite = gMonIcon_Garganacl,
|
||||||
.iconPalIndex = 2,
|
.iconPalIndex = 2,
|
||||||
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
.pokemonJumpType = PKMN_JUMP_TYPE_NONE,
|
||||||
SHADOW(0, 13, SHADOW_SIZE_L)
|
SHADOW(0, 9, SHADOW_SIZE_L)
|
||||||
FOOTPRINT(Garganacl)
|
FOOTPRINT(Garganacl)
|
||||||
OVERWORLD(
|
OVERWORLD(
|
||||||
sPicTable_Garganacl,
|
sPicTable_Garganacl,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
.syntax unified
|
.syntax unified
|
||||||
|
|
||||||
.arm
|
.arm
|
||||||
.section .iwram.code
|
.section .iwram.code, "ax", %progbits
|
||||||
.align 2
|
.align 2
|
||||||
|
|
||||||
.global FastUnsafeCopy32
|
.global FastUnsafeCopy32
|
||||||
|
|||||||
@ -85,7 +85,7 @@ lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer
|
|||||||
lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE
|
lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE
|
||||||
thumb_func_end SoundMain
|
thumb_func_end SoundMain
|
||||||
|
|
||||||
.section .iwram.code
|
.section .iwram.code, "ax", %progbits
|
||||||
thumb_func_start SoundMainRAM
|
thumb_func_start SoundMainRAM
|
||||||
SoundMainRAM:
|
SoundMainRAM:
|
||||||
ldrb r3, [r0, o_SoundInfo_reverb]
|
ldrb r3, [r0, o_SoundInfo_reverb]
|
||||||
|
|||||||
@ -1716,11 +1716,12 @@ static void OverworldBasic(void)
|
|||||||
gTimeUpdateCounter = (SECONDS_PER_MINUTE * 60 / FakeRtc_GetSecondsRatio());
|
gTimeUpdateCounter = (SECONDS_PER_MINUTE * 60 / FakeRtc_GetSecondsRatio());
|
||||||
UpdateTimeOfDay();
|
UpdateTimeOfDay();
|
||||||
FormChangeTimeUpdate();
|
FormChangeTimeUpdate();
|
||||||
if (bld0[0] != bld1[0]
|
if (MapHasNaturalLight(gMapHeader.mapType) &&
|
||||||
|
(bld0[0] != bld1[0]
|
||||||
|| bld0[1] != bld1[1]
|
|| bld0[1] != bld1[1]
|
||||||
|| bld0[2] != bld1[2])
|
|| bld0[2] != bld1[2]))
|
||||||
{
|
{
|
||||||
ApplyWeatherColorMapIfIdle(gWeatherPtr->colorMapIndex);
|
ApplyWeatherColorMapIfIdle(gWeatherPtr->colorMapIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,37 +58,6 @@ static struct PokemonSpriteVisualizer *GetStructPtr(u8 taskId)
|
|||||||
return (struct PokemonSpriteVisualizer*)(T1_READ_PTR(taskDataPtr));
|
return (struct PokemonSpriteVisualizer*)(T1_READ_PTR(taskDataPtr));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const union AnimCmd sAnim_Follower_1[] =
|
|
||||||
{
|
|
||||||
ANIMCMD_FRAME(0, 30),
|
|
||||||
ANIMCMD_FRAME(1, 30),
|
|
||||||
ANIMCMD_FRAME(0, 30),
|
|
||||||
ANIMCMD_FRAME(1, 30),
|
|
||||||
ANIMCMD_FRAME(0, 10),
|
|
||||||
ANIMCMD_FRAME(2, 30),
|
|
||||||
ANIMCMD_FRAME(3, 30),
|
|
||||||
ANIMCMD_FRAME(2, 30),
|
|
||||||
ANIMCMD_FRAME(3, 30),
|
|
||||||
ANIMCMD_FRAME(2, 10),
|
|
||||||
ANIMCMD_FRAME(4, 30),
|
|
||||||
ANIMCMD_FRAME(5, 30),
|
|
||||||
ANIMCMD_FRAME(4, 30),
|
|
||||||
ANIMCMD_FRAME(5, 30),
|
|
||||||
ANIMCMD_FRAME(4, 10),
|
|
||||||
ANIMCMD_FRAME(4, 30, .hFlip = TRUE),
|
|
||||||
ANIMCMD_FRAME(5, 30, .hFlip = TRUE),
|
|
||||||
ANIMCMD_FRAME(4, 30, .hFlip = TRUE),
|
|
||||||
ANIMCMD_FRAME(5, 30, .hFlip = TRUE),
|
|
||||||
ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
|
|
||||||
ANIMCMD_END,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd *const sAnims_Follower[] =
|
|
||||||
{
|
|
||||||
sAnim_GeneralFrame0,
|
|
||||||
sAnim_Follower_1,
|
|
||||||
};
|
|
||||||
|
|
||||||
//BgTemplates
|
//BgTemplates
|
||||||
static const struct BgTemplate sBgTemplates[] =
|
static const struct BgTemplate sBgTemplates[] =
|
||||||
{
|
{
|
||||||
@ -842,32 +811,32 @@ static void SpriteCB_EnemyShadowCustom(struct Sprite *shadowSprite)
|
|||||||
|
|
||||||
static void SpriteCB_Follower(struct Sprite *sprite)
|
static void SpriteCB_Follower(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (sprite->animDelayCounter == 0)
|
if (sprite->data[3] == 0)
|
||||||
{
|
{
|
||||||
sprite->animDelayCounter = 60;
|
sprite->data[3] = 120;
|
||||||
switch (sprite->animNum)
|
switch (sprite->animNum)
|
||||||
{
|
{
|
||||||
default:
|
|
||||||
case 0:
|
|
||||||
case 1:
|
|
||||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST));
|
|
||||||
break;
|
|
||||||
case 4:
|
case 4:
|
||||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH));
|
StartSpriteAnim(sprite, GetMoveDirectionAnimNum(DIR_NORTH));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
StartSpriteAnim(sprite, GetMoveDirectionAnimNum(DIR_WEST));
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
StartSpriteAnim(sprite, GetMoveDirectionAnimNum(DIR_EAST));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case 7:
|
||||||
|
StartSpriteAnim(sprite, GetMoveDirectionAnimNum(DIR_SOUTH));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprite->animDelayCounter--;
|
sprite->data[3]--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonSpriteVisualizer *data, u16 species)
|
static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonSpriteVisualizer *data, u16 species)
|
||||||
{
|
{
|
||||||
bool8 invisible = FALSE;
|
bool8 invisible = FALSE;
|
||||||
@ -1315,9 +1284,26 @@ void CB2_Pokemon_Sprite_Visualizer(void)
|
|||||||
gSprites[data->iconspriteId].oam.priority = 0;
|
gSprites[data->iconspriteId].oam.priority = 0;
|
||||||
|
|
||||||
//Follower Sprite
|
//Follower Sprite
|
||||||
data->followerspriteId = CreateObjectGraphicsSprite(OBJ_EVENT_MON + species, SpriteCB_Follower, VISUALIZER_FOLLOWER_X, VISUALIZER_FOLLOWER_Y, 0);
|
u16 graphicsId = species + OBJ_EVENT_MON;
|
||||||
|
if (data->isShiny)
|
||||||
|
graphicsId += OBJ_EVENT_MON_SHINY;
|
||||||
|
if (data->isFemale)
|
||||||
|
graphicsId += OBJ_EVENT_MON_FEMALE;
|
||||||
|
data->followerspriteId = CreateObjectGraphicsSprite(graphicsId,
|
||||||
|
SpriteCB_Follower,
|
||||||
|
VISUALIZER_FOLLOWER_X,
|
||||||
|
VISUALIZER_FOLLOWER_Y,
|
||||||
|
0);
|
||||||
gSprites[data->followerspriteId].oam.priority = 0;
|
gSprites[data->followerspriteId].oam.priority = 0;
|
||||||
gSprites[data->followerspriteId].anims = sAnims_Follower;
|
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, data->isShiny, data->isFemale);
|
||||||
|
if (graphicsInfo != NULL)
|
||||||
|
{
|
||||||
|
gSprites[data->followerspriteId].oam.shape = graphicsInfo->oam->shape;
|
||||||
|
gSprites[data->followerspriteId].oam.size = graphicsInfo->oam->size;
|
||||||
|
gSprites[data->followerspriteId].images = graphicsInfo->images;
|
||||||
|
gSprites[data->followerspriteId].anims = graphicsInfo->anims;
|
||||||
|
gSprites[data->followerspriteId].subspriteTables = graphicsInfo->subspriteTables;
|
||||||
|
}
|
||||||
|
|
||||||
//Modify Arrows
|
//Modify Arrows
|
||||||
SetUpModifyArrows(data);
|
SetUpModifyArrows(data);
|
||||||
@ -2017,7 +2003,15 @@ static void ReloadPokemonSprites(struct PokemonSpriteVisualizer *data)
|
|||||||
VISUALIZER_FOLLOWER_Y,
|
VISUALIZER_FOLLOWER_Y,
|
||||||
0);
|
0);
|
||||||
gSprites[data->followerspriteId].oam.priority = 0;
|
gSprites[data->followerspriteId].oam.priority = 0;
|
||||||
gSprites[data->followerspriteId].anims = sAnims_Follower;
|
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, data->isShiny, data->isFemale);
|
||||||
|
if (graphicsInfo != NULL)
|
||||||
|
{
|
||||||
|
gSprites[data->followerspriteId].oam.shape = graphicsInfo->oam->shape;
|
||||||
|
gSprites[data->followerspriteId].oam.size = graphicsInfo->oam->size;
|
||||||
|
gSprites[data->followerspriteId].images = graphicsInfo->images;
|
||||||
|
gSprites[data->followerspriteId].anims = graphicsInfo->anims;
|
||||||
|
gSprites[data->followerspriteId].subspriteTables = graphicsInfo->subspriteTables;
|
||||||
|
}
|
||||||
|
|
||||||
//Modify Arrows
|
//Modify Arrows
|
||||||
LoadSpritePalette(&gSpritePalette_Arrow);
|
LoadSpritePalette(&gSpritePalette_Arrow);
|
||||||
|
|||||||
@ -112,3 +112,47 @@ SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield both can be Skill Swappe
|
|||||||
MESSAGE("Wobbuffet's Dauntless Shield raised its Defense!");
|
MESSAGE("Wobbuffet's Dauntless Shield raised its Defense!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield do not proc at max stage (Skill Swap)")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP);
|
||||||
|
ASSUME(GetMoveEffect(MOVE_IRON_DEFENSE) == EFFECT_DEFENSE_UP_2);
|
||||||
|
ASSUME(GetMoveEffect(MOVE_SWORDS_DANCE) == EFFECT_ATTACK_UP_2);
|
||||||
|
PLAYER(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||||
|
OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_SKILL_SWAP); }
|
||||||
|
} SCENE {
|
||||||
|
NONE_OF {
|
||||||
|
ABILITY_POPUP(player, ABILITY_DAUNTLESS_SHIELD);
|
||||||
|
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield do not proc at max stage (Baton Pass)")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
|
||||||
|
ASSUME(GetMoveEffect(MOVE_IRON_DEFENSE) == EFFECT_DEFENSE_UP_2);
|
||||||
|
ASSUME(GetMoveEffect(MOVE_SWORDS_DANCE) == EFFECT_ATTACK_UP_2);
|
||||||
|
PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
PLAYER(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||||
|
TURN { MOVE(player, MOVE_BATON_PASS); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(player, 1); SEND_OUT(opponent, 1);}
|
||||||
|
} SCENE {
|
||||||
|
NONE_OF {
|
||||||
|
ABILITY_POPUP(player, ABILITY_DAUNTLESS_SHIELD);
|
||||||
|
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -163,7 +163,7 @@ SINGLE_BATTLE_TEST("Liquid Ooze causes Dream Eater users to lose HP instead of h
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SINGLE_BATTLE_TEST("Liquid Ooze does not cause Dream Eater users to lose HP instead of heal (Gen 3-4")
|
SINGLE_BATTLE_TEST("Liquid Ooze does not cause Dream Eater users to lose HP instead of heal (Gen 3-4)")
|
||||||
{
|
{
|
||||||
s16 damage;
|
s16 damage;
|
||||||
GIVEN {
|
GIVEN {
|
||||||
|
|||||||
@ -222,3 +222,31 @@ AI_MULTI_BATTLE_TEST("AI opponents do not steal their partner pokemon in multi b
|
|||||||
EXPECT_EQ(SPECIES_VENUSAUR, opponentLeft->species);
|
EXPECT_EQ(SPECIES_VENUSAUR, opponentLeft->species);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AI_MULTI_BATTLE_TEST("Pollen Puff: AI correctly scores moves with EFFECT_HIT_ENEMY_HEAL_ALLY as damaging opponents but not allies")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
|
||||||
|
ASSUME(GetMoveEffect(MOVE_POLLEN_PUFF) == EFFECT_HIT_ENEMY_HEAL_ALLY);
|
||||||
|
// Speed tie so all think they are faster
|
||||||
|
MULTI_PLAYER(SPECIES_WOBBUFFET) { Speed(1); HP(50); Moves(MOVE_POLLEN_PUFF, MOVE_CELEBRATE); }
|
||||||
|
MULTI_PARTNER(SPECIES_WOBBUFFET) { Speed(1); HP(50); Moves(MOVE_POLLEN_PUFF); }
|
||||||
|
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Speed(1); HP(50); Moves(MOVE_POLLEN_PUFF); }
|
||||||
|
MULTI_OPPONENT_B(SPECIES_WOBBUFFET) { Speed(1); HP(50); Moves(MOVE_POLLEN_PUFF); }
|
||||||
|
} WHEN {
|
||||||
|
TURN {
|
||||||
|
// Targeting ally
|
||||||
|
SCORE_EQ_VAL(opponentLeft, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + WEAK_EFFECT, target:opponentRight);
|
||||||
|
SCORE_EQ_VAL(playerRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + WEAK_EFFECT, target:playerLeft);
|
||||||
|
SCORE_EQ_VAL(opponentRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + WEAK_EFFECT, target:opponentLeft);
|
||||||
|
|
||||||
|
// Targeting opponent
|
||||||
|
SCORE_EQ_VAL(opponentLeft, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:playerLeft);
|
||||||
|
SCORE_EQ_VAL(opponentLeft, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:playerRight);
|
||||||
|
SCORE_EQ_VAL(playerRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:opponentLeft);
|
||||||
|
SCORE_EQ_VAL(playerRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:opponentRight);
|
||||||
|
SCORE_EQ_VAL(opponentRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:playerLeft);
|
||||||
|
SCORE_EQ_VAL(opponentRight, MOVE_POLLEN_PUFF, AI_SCORE_DEFAULT + BEST_DAMAGE_MOVE + FAST_KILL, target:playerRight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1724,3 +1724,24 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI considers both meeting and
|
|||||||
TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_EXPLOSION); hp > 80 ? EXPECT_SEND_OUT(opponent, 2) : EXPECT_SEND_OUT(opponent, 1); }
|
TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_EXPLOSION); hp > 80 ? EXPECT_SEND_OUT(opponent, 2) : EXPECT_SEND_OUT(opponent, 1); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AI_DOUBLE_BATTLE_TEST("AI will not choose to switch out Dondozo with Commander Tatsugiri")
|
||||||
|
{
|
||||||
|
PASSES_RANDOMLY(100, 100);
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveEffect(MOVE_PERISH_SONG) == EFFECT_PERISH_SONG);
|
||||||
|
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES);
|
||||||
|
OPPONENT(SPECIES_DONDOZO) { Level(50); Moves(MOVE_WATER_GUN); }
|
||||||
|
OPPONENT(SPECIES_TATSUGIRI) { Moves(MOVE_WATER_GUN); Ability(ABILITY_COMMANDER); }
|
||||||
|
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_HEADBUTT); }
|
||||||
|
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH); }
|
||||||
|
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE, MOVE_PERISH_SONG); }
|
||||||
|
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE); }
|
||||||
|
PLAYER(SPECIES_ZIGZAGOON) { Moves (MOVE_CELEBRATE); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_PERISH_SONG); }
|
||||||
|
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); }
|
||||||
|
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
|
||||||
|
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); EXPECT_MOVE(opponentLeft, MOVE_WATER_GUN); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
137
test/battle/evolution_tracker.c
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "test/battle.h"
|
||||||
|
|
||||||
|
ASSUMPTIONS
|
||||||
|
{
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->condition == IF_DEFEAT_X_WITH_ITEMS);
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->arg1 == SPECIES_BISHARP);
|
||||||
|
ASSUME(gSpeciesInfo[SPECIES_BISHARP].evolutions[0].params->arg2 == ITEM_LEADERS_CREST);
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a Bisharp that holds Leader's Crest increases tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// To be replaced with WILD_DOUBLE_BATTLE_TEST when that is made possible (also see TryUpdateEvolutionTracker)
|
||||||
|
DOUBLE_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing multiple Bisharps holding Leader's Crest increases tracker multiple times")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveTarget(MOVE_LAVA_PLUME) == MOVE_TARGET_FOES_AND_ALLY);
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
PLAYER(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_LAVA_PLUME); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponentLeft, hp: 0);
|
||||||
|
HP_BAR(playerRight, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a Bisharp that doesn't hold Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing a non-Bisharp that holds Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
u32 species;
|
||||||
|
|
||||||
|
PARAMETRIZE { species = SPECIES_WOBBUFFET; }
|
||||||
|
PARAMETRIZE { species = SPECIES_PAWNIARD; }
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(species) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Pawniard KO-ing a Bisharp that holds Leader's Crest doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_PAWNIARD);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler from contact effects doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetItemHoldEffect(ITEM_ROCKY_HELMET) == HOLD_EFFECT_ROCKY_HELMET);
|
||||||
|
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||||
|
PLAYER(SPECIES_BISHARP) { Item(ITEM_ROCKY_HELMET); }
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WILD_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler with passive damage doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(GetMoveEffect(MOVE_LEECH_SEED) == EFFECT_LEECH_SEED);
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(player, MOVE_LEECH_SEED); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponent, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// To be replaced with WILD_DOUBLE_BATTLE_TEST when that is made possible (also see TryUpdateEvolutionTracker)
|
||||||
|
DOUBLE_BATTLE_TEST("Evolution Tracker: Bisharp KO-ing eligible battler with bursting flames doesn't increase tracker")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
ASSUME(MoveHasAdditionalEffect(MOVE_FLAME_BURST, MOVE_EFFECT_FLAME_BURST));
|
||||||
|
PLAYER(SPECIES_BISHARP);
|
||||||
|
PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
OPPONENT(SPECIES_BISHARP) { Item(ITEM_LEADERS_CREST); HP(1); }
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_FLAME_BURST, target: opponentRight); }
|
||||||
|
} SCENE {
|
||||||
|
HP_BAR(opponentLeft, hp: 0);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_EVOLUTION_TRACKER), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -64,8 +64,6 @@ SINGLE_BATTLE_TEST("Hazards are applied correctly after a battler faints")
|
|||||||
|
|
||||||
SINGLE_BATTLE_TEST("Toxic Spikes can be removed after fainting to other hazards")
|
SINGLE_BATTLE_TEST("Toxic Spikes can be removed after fainting to other hazards")
|
||||||
{
|
{
|
||||||
KNOWN_FAILING; // tryfaintmon changes something that doesn't allow other switch-in effects on the battler
|
|
||||||
|
|
||||||
GIVEN {
|
GIVEN {
|
||||||
PLAYER(SPECIES_WYNAUT);
|
PLAYER(SPECIES_WYNAUT);
|
||||||
PLAYER(SPECIES_GRIMER) { HP(1); }
|
PLAYER(SPECIES_GRIMER) { HP(1); }
|
||||||
|
|||||||
@ -151,7 +151,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if it is knocked off o
|
|||||||
}
|
}
|
||||||
NONE_OF {
|
NONE_OF {
|
||||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
||||||
MESSAGE("Wobbuffet returned its stats to normal using its White Herb!");
|
MESSAGE("Slugma returned its stats to normal using its White Herb!");
|
||||||
}
|
}
|
||||||
} THEN {
|
} THEN {
|
||||||
EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1);
|
EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1);
|
||||||
@ -176,7 +176,7 @@ SINGLE_BATTLE_TEST("White Herb wont have time to activate if Magician steals it"
|
|||||||
MESSAGE("The opposing Fennekin stole Slugma's White Herb!");
|
MESSAGE("The opposing Fennekin stole Slugma's White Herb!");
|
||||||
NONE_OF {
|
NONE_OF {
|
||||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
||||||
MESSAGE("Wobbuffet returned its stats to normal using its White Herb!");
|
MESSAGE("Slugma returned its stats to normal using its White Herb!");
|
||||||
}
|
}
|
||||||
} THEN {
|
} THEN {
|
||||||
EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1);
|
EXPECT(player->statStages[STAT_DEF] = DEFAULT_STAT_STAGE - 1);
|
||||||
|
|||||||
@ -1,4 +1,20 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "test/battle.h"
|
#include "test/battle.h"
|
||||||
|
|
||||||
|
SINGLE_BATTLE_TEST("Mimic doesn't error when the last move used by the target resolves to MOVE_UNAVAILABLE")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
OPPONENT(SPECIES_WYNAUT);
|
||||||
|
OPPONENT(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN {MOVE(opponent, MOVE_TRANSFORM); MOVE(player, MOVE_MIMIC); }
|
||||||
|
} SCENE {
|
||||||
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_TRANSFORM, opponent);
|
||||||
|
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_MIMIC, player);
|
||||||
|
} THEN {
|
||||||
|
EXPECT_EQ(gLastMoves[1], MOVE_UNAVAILABLE); // This test depends on the current implementation of Transform, if this changes, the test should be changed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TO_DO_BATTLE_TEST("TODO: Write Mimic (Move Effect) test titles")
|
TO_DO_BATTLE_TEST("TODO: Write Mimic (Move Effect) test titles")
|
||||||
|
|||||||
@ -80,3 +80,17 @@ SINGLE_BATTLE_TEST("Changing forms doesn't overwrite set stats (HP)")
|
|||||||
EXPECT_EQ(player->maxHP, 10);
|
EXPECT_EQ(player->maxHP, 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MULTI_BATTLE_TEST("Multi Battle Tests register partner's status1")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
MULTI_PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_PARTNER(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_OPPONENT_A(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_OPPONENT_B(SPECIES_WOBBUFFET);
|
||||||
|
} WHEN {
|
||||||
|
TURN { MOVE(playerLeft, MOVE_WILL_O_WISP, target: playerRight); }
|
||||||
|
} SCENE {
|
||||||
|
STATUS_ICON(playerRight, STATUS1_BURN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -3219,9 +3219,9 @@ void ValidateFinally(u32 sourceLine)
|
|||||||
INVALID_IF(STATE->parametersCount == 0, "FINALLY without PARAMETRIZE");
|
INVALID_IF(STATE->parametersCount == 0, "FINALLY without PARAMETRIZE");
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex)
|
u32 TestRunner_Battle_GetForcedAbility(u32 array, u32 partyIndex)
|
||||||
{
|
{
|
||||||
return DATA.forcedAbilities[side][partyIndex];
|
return DATA.forcedAbilities[array][partyIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 TestRunner_Battle_GetForcedEnvironment(void)
|
u32 TestRunner_Battle_GetForcedEnvironment(void)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "test/test.h"
|
#include "test/test.h"
|
||||||
|
#include "test/battle.h"
|
||||||
|
|
||||||
TEST("Tests resume after CRASH")
|
TEST("Tests resume after CRASH")
|
||||||
{
|
{
|
||||||
@ -7,3 +8,22 @@ TEST("Tests resume after CRASH")
|
|||||||
void (*f)(void) = NULL;
|
void (*f)(void) = NULL;
|
||||||
f();
|
f();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MULTI_BATTLE_TEST("Forced Abilities are set correctly in multi battle tests")
|
||||||
|
{
|
||||||
|
GIVEN {
|
||||||
|
MULTI_PLAYER(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_PARTNER(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_PARTNER(SPECIES_NINETALES_ALOLA) { Ability(ABILITY_DRIZZLE); }
|
||||||
|
MULTI_OPPONENT_A(SPECIES_WOBBUFFET);
|
||||||
|
MULTI_OPPONENT_A(SPECIES_NINETALES_ALOLA) { Ability(ABILITY_SAND_STREAM); }
|
||||||
|
MULTI_OPPONENT_B(SPECIES_WYNAUT);
|
||||||
|
MULTI_OPPONENT_B(SPECIES_NINETALES_ALOLA) { Ability(ABILITY_DROUGHT); }
|
||||||
|
} WHEN {
|
||||||
|
TURN { SWITCH(opponentLeft, 1); SWITCH(playerRight, 4); SWITCH(opponentRight, 4); }
|
||||||
|
} SCENE {
|
||||||
|
ABILITY_POPUP(opponentLeft, ABILITY_SAND_STREAM);
|
||||||
|
ABILITY_POPUP(playerRight, ABILITY_DRIZZLE);
|
||||||
|
ABILITY_POPUP(opponentRight, ABILITY_DROUGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||