mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-24 23:17:08 -05:00
Evolution
This commit is contained in:
parent
9709af5850
commit
6aee6badb8
|
|
@ -1626,7 +1626,7 @@ _020382F6:
|
|||
mov r0, #0x0
|
||||
mov r2, #0x1
|
||||
lsr r3, r3, #0x10
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
str r0, [sp, #0x20]
|
||||
cmp r0, #0x0
|
||||
beq _02038380
|
||||
|
|
|
|||
|
|
@ -5439,7 +5439,7 @@ _02071E5A:
|
|||
str r0, [sp, #0x0]
|
||||
ldrh r3, [r3, #0x24]
|
||||
mov r0, #0x0
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
ldr r1, _02071F1C ; =0x000005A4
|
||||
ldr r2, [r5, r1]
|
||||
strh r0, [r2, #0x38]
|
||||
|
|
|
|||
|
|
@ -1219,7 +1219,7 @@ _02072E98:
|
|||
ldr r3, [r5, r3]
|
||||
mov r2, #0x3
|
||||
ldrh r3, [r3, #0x24]
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
cmp r0, #0x0
|
||||
bne _02072ED0
|
||||
add r0, r5, #0x0
|
||||
|
|
|
|||
|
|
@ -2260,7 +2260,7 @@ _02076814:
|
|||
ldr r0, [r1, #0x0]
|
||||
add r1, r5, #0x0
|
||||
lsr r3, r3, #0x10
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
ldr r1, _02076878 ; =0x000005A4
|
||||
ldr r2, [r4, r1]
|
||||
strh r0, [r2, #0x38]
|
||||
|
|
|
|||
|
|
@ -4786,7 +4786,7 @@
|
|||
.extern BoxPokemon_GetForm
|
||||
.extern Pokemon_GetBoxMon
|
||||
.extern Pokemon_TryLevelUp
|
||||
.extern GetMonEvolution
|
||||
.extern Pokemon_GetEvolutionTarget
|
||||
.extern ReadFromPersonalPmsNarc
|
||||
.extern GetEggSpecies
|
||||
.extern Pokemon_TryAppendMove
|
||||
|
|
|
|||
|
|
@ -1948,7 +1948,7 @@ _02230D9C:
|
|||
ldr r0, [r5, #4]
|
||||
mov r2, #0
|
||||
lsr r3, r3, #0x10
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
str r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
bne _02230DD0
|
||||
|
|
|
|||
|
|
@ -17443,7 +17443,7 @@ _02235FDE:
|
|||
add r1, r7, #0
|
||||
mov r2, #1
|
||||
lsr r3, r3, #0x10
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
str r0, [sp, #0x24]
|
||||
cmp r0, #0
|
||||
beq _02236052
|
||||
|
|
@ -17534,7 +17534,7 @@ _022360B6:
|
|||
add r1, r7, #0
|
||||
mov r2, #1
|
||||
lsr r3, r3, #0x10
|
||||
bl GetMonEvolution
|
||||
bl Pokemon_GetEvolutionTarget
|
||||
str r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _02236118
|
||||
|
|
|
|||
|
|
@ -45,39 +45,39 @@ static const u16 sPokemonCenterSecondFloorMaps[] = {
|
|||
|
||||
static const u16 sMapEvolutionMethods[] = {
|
||||
MAP_ROUTE_217,
|
||||
EVO_ROUTE217,
|
||||
EVO_LEVEL_ICE_ROCK,
|
||||
MAP_ETERNA_FOREST_INTERIOR,
|
||||
EVO_ETERNA,
|
||||
EVO_LEVEL_MOSS_ROCK,
|
||||
MAP_MOUNT_CORONET_SOUTH_1F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_SOUTH_2F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_SOUTH_3F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_NORTH_MOUNTAINSIDE,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_SOUTH_MOUNTAINSIDE,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_4F_ROOM_1,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_4F_ROOM_3,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_5F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_6F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_TUNNEL_ROOM,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_NORTH_1F_ROOM_2,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_NORTH_1F_ROOM_1,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_B1F,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_SPEAR_PILLAR,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
MAP_MOUNT_CORONET_UNUSED_2,
|
||||
EVO_CORONET,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
};
|
||||
|
||||
static const struct MapHeader sMapHeaders[] = {
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ BOOL Species_CanLearnTMHM(u16 species, int form, u8 tmHM);
|
|||
void BoxPokemon_UpdateAbility(BoxPokemon *boxMon);
|
||||
u32 MaskOfFlagNo(int flagno);
|
||||
void SpeciesData_LoadSpecies(int species, SpeciesData *speciesData);
|
||||
void LoadMonEvolutionTable(u16 species, struct Evolution *dest);
|
||||
void Species_LoadEvolutions(u16 species, struct Evolution *dest);
|
||||
|
||||
int ResolveMonForm(int species, int form);
|
||||
void MonEncryptSegment(u16 *datap, u32 size, u32 key);
|
||||
|
|
@ -2405,223 +2405,222 @@ BOOL Pokemon_TryLevelUp(Pokemon *mon) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
u16 GetMonEvolution(struct Party *party, Pokemon *mon, u32 context, u32 usedItem, u32 *method_ret) {
|
||||
u16 target = SPECIES_NONE;
|
||||
u32 sp40;
|
||||
u16 species;
|
||||
u16 heldItem;
|
||||
u32 personality;
|
||||
int i;
|
||||
u8 beauty;
|
||||
u8 level;
|
||||
u16 friendship;
|
||||
u16 pid_hi;
|
||||
struct Evolution *evoTable;
|
||||
u8 r1;
|
||||
u16 Pokemon_GetEvolutionTarget(Party *party, Pokemon *mon, u8 context, u32 evoParam, u32 *methodRet) {
|
||||
u16 targetSpecies = SPECIES_NONE;
|
||||
|
||||
species = (u16)Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
|
||||
heldItem = (u16)Pokemon_GetData(mon, MON_DATA_HELD_ITEM, NULL);
|
||||
personality = Pokemon_GetData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
beauty = (u8)Pokemon_GetData(mon, MON_DATA_BEAUTY, NULL);
|
||||
pid_hi = (u16)((personality & 0xFFFF0000) >> 16);
|
||||
r1 = (u8)GetItemAttr(heldItem, 1, HEAP_ID_DEFAULT);
|
||||
if (species != SPECIES_KADABRA && r1 == HOLD_EFFECT_NO_EVOLVE && context != 3) {
|
||||
u16 species = Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
|
||||
u16 heldItem = Pokemon_GetData(mon, MON_DATA_HELD_ITEM, NULL);
|
||||
u32 personality = Pokemon_GetData(mon, MON_DATA_PERSONALITY, NULL);
|
||||
u8 beauty = Pokemon_GetData(mon, MON_DATA_BEAUTY, NULL);
|
||||
|
||||
int i;
|
||||
u16 friendship;
|
||||
u16 personalityUpper = (personality & 0xFFFF0000) >> 16;
|
||||
u8 holdEffect = GetItemAttr(heldItem, ITEMATTR_HOLD_EFFECT, HEAP_ID_DEFAULT);
|
||||
|
||||
// Kadabra bypasses Everstone because he's just that broken.
|
||||
if (species != SPECIES_KADABRA
|
||||
&& holdEffect == HOLD_EFFECT_NO_EVOLVE
|
||||
&& context != EVO_CONTEXT_ITEM_USE) {
|
||||
return SPECIES_NONE;
|
||||
}
|
||||
if (method_ret == NULL) {
|
||||
method_ret = &sp40;
|
||||
|
||||
int stackVar;
|
||||
if (methodRet == NULL) {
|
||||
methodRet = &stackVar;
|
||||
}
|
||||
evoTable = Heap_Alloc(HEAP_ID_DEFAULT, 7 * sizeof(struct Evolution));
|
||||
LoadMonEvolutionTable(species, evoTable);
|
||||
Evolution *evolutions = Heap_Alloc(HEAP_ID_DEFAULT, MAX_MON_EVOLUTIONS * sizeof(Evolution));
|
||||
Species_LoadEvolutions(species, evolutions);
|
||||
switch (context) {
|
||||
case 0:
|
||||
level = (u8)Pokemon_GetData(mon, MON_DATA_LEVEL, NULL);
|
||||
friendship = (u16)Pokemon_GetData(mon, MON_DATA_FRIENDSHIP, NULL);
|
||||
for (i = 0; i < 7; i++) {
|
||||
switch (evoTable[i].method) {
|
||||
case EVO_CONTEXT_LEVEL_UP:
|
||||
u8 level = Pokemon_GetData(mon, MON_DATA_LEVEL, NULL);
|
||||
friendship = Pokemon_GetData(mon, MON_DATA_FRIENDSHIP, NULL);
|
||||
for (i = 0; i < MAX_MON_EVOLUTIONS; i++) {
|
||||
switch (evolutions[i].method) {
|
||||
case EVO_NONE:
|
||||
case EVO_TRADE:
|
||||
case EVO_TRADE_HELD_ITEM:
|
||||
case EVO_USE_ITEM:
|
||||
case EVO_USE_ITEM_MALE:
|
||||
case EVO_USE_ITEM_FEMALE:
|
||||
break;
|
||||
case EVO_FRIENDSHIP:
|
||||
if (friendship >= 220) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_FRIENDSHIP;
|
||||
case EVO_LEVEL_FRIENDSHIP:
|
||||
if (friendship >= FRIENDSHIP_EVO_THRESHOLD) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_FRIENDSHIP;
|
||||
}
|
||||
break;
|
||||
case EVO_FRIENDSHIP_DAY:
|
||||
if (IsNighttime() == 0 && friendship >= 220) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_FRIENDSHIP_DAY;
|
||||
case EVO_LEVEL_FRIENDSHIP_DAY:
|
||||
if (IsNighttime() == FALSE && friendship >= FRIENDSHIP_EVO_THRESHOLD) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_FRIENDSHIP_DAY;
|
||||
}
|
||||
break;
|
||||
case EVO_FRIENDSHIP_NIGHT:
|
||||
if (IsNighttime() == 1 && friendship >= 220) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_FRIENDSHIP_NIGHT;
|
||||
case EVO_LEVEL_FRIENDSHIP_NIGHT:
|
||||
if (IsNighttime() == TRUE && friendship >= FRIENDSHIP_EVO_THRESHOLD) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_FRIENDSHIP_NIGHT;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL:
|
||||
if (evoTable[i].param <= level) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL;
|
||||
if (evolutions[i].param <= level) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL;
|
||||
}
|
||||
break;
|
||||
case EVO_TRADE:
|
||||
break;
|
||||
case EVO_TRADE_ITEM:
|
||||
break;
|
||||
case EVO_STONE:
|
||||
break;
|
||||
case EVO_LEVEL_ATK_GT_DEF:
|
||||
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) > Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_ATK_GT_DEF;
|
||||
if (evolutions[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) > Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_ATK_GT_DEF;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_ATK_EQ_DEF:
|
||||
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) == Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_ATK_EQ_DEF;
|
||||
if (evolutions[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) == Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_ATK_EQ_DEF;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_ATK_LT_DEF:
|
||||
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) < Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_ATK_LT_DEF;
|
||||
if (evolutions[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) < Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_ATK_LT_DEF;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_PID_LO:
|
||||
if (evoTable[i].param <= level && pid_hi % 10 < 5) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_PID_LO;
|
||||
case EVO_LEVEL_PID_LOW:
|
||||
if (evolutions[i].param <= level && personalityUpper % 10 < 5) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_PID_LOW;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_PID_HI:
|
||||
if (evoTable[i].param <= level && pid_hi % 10 >= 5) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_PID_HI;
|
||||
case EVO_LEVEL_PID_HIGH:
|
||||
if (evolutions[i].param <= level && personalityUpper % 10 >= 5) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_PID_HIGH;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_NINJASK:
|
||||
if (evoTable[i].param <= level) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_NINJASK;
|
||||
if (evolutions[i].param <= level) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_NINJASK;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_SHEDINJA:
|
||||
*method_ret = EVO_LEVEL_SHEDINJA;
|
||||
*methodRet = EVO_LEVEL_SHEDINJA;
|
||||
break;
|
||||
case EVO_BEAUTY:
|
||||
if (evoTable[i].param <= beauty) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_BEAUTY;
|
||||
case EVO_LEVEL_BEAUTY:
|
||||
if (evolutions[i].param <= beauty) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_BEAUTY;
|
||||
}
|
||||
break;
|
||||
case EVO_STONE_MALE:
|
||||
break;
|
||||
case EVO_STONE_FEMALE:
|
||||
break;
|
||||
case EVO_ITEM_DAY:
|
||||
if (IsNighttime() == 0 && evoTable[i].param == heldItem) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_ITEM_DAY;
|
||||
case EVO_LEVEL_HELD_ITEM_DAY:
|
||||
if (IsNighttime() == FALSE && evolutions[i].param == heldItem) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_HELD_ITEM_DAY;
|
||||
}
|
||||
break;
|
||||
case EVO_ITEM_NIGHT:
|
||||
if (IsNighttime() == 1 && evoTable[i].param == heldItem) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_ITEM_NIGHT;
|
||||
case EVO_LEVEL_HELD_ITEM_NIGHT:
|
||||
if (IsNighttime() == TRUE && evolutions[i].param == heldItem) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_HELD_ITEM_NIGHT;
|
||||
}
|
||||
break;
|
||||
case EVO_HAS_MOVE:
|
||||
if (Pokemon_HasMove(mon, evoTable[i].param) == TRUE) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_HAS_MOVE;
|
||||
case EVO_LEVEL_KNOW_MOVE:
|
||||
if (Pokemon_HasMove(mon, evolutions[i].param) == TRUE) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_KNOW_MOVE;
|
||||
}
|
||||
break;
|
||||
case EVO_OTHER_PARTY_MON:
|
||||
if (party != NULL && Party_HasMon(party, evoTable[i].param) == 1) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_OTHER_PARTY_MON;
|
||||
case EVO_LEVEL_SPECIES_IN_PARTY:
|
||||
if (party != NULL && Party_HasMon(party, evolutions[i].param) == TRUE) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_SPECIES_IN_PARTY;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_MALE:
|
||||
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_MALE && evoTable[i].param <= level) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_MALE;
|
||||
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_MALE && evolutions[i].param <= level) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_MALE;
|
||||
}
|
||||
break;
|
||||
case EVO_LEVEL_FEMALE:
|
||||
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_FEMALE && evoTable[i].param <= level) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_LEVEL_FEMALE;
|
||||
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_FEMALE && evolutions[i].param <= level) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_FEMALE;
|
||||
}
|
||||
break;
|
||||
case EVO_CORONET:
|
||||
if (usedItem == evoTable[i].method) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_CORONET;
|
||||
case EVO_LEVEL_MAGNETIC_FIELD:
|
||||
if (evoParam == evolutions[i].method) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_MAGNETIC_FIELD;
|
||||
}
|
||||
break;
|
||||
case EVO_ETERNA:
|
||||
if (usedItem == evoTable[i].method) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_ETERNA;
|
||||
case EVO_LEVEL_MOSS_ROCK:
|
||||
if (evoParam == evolutions[i].method) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_MOSS_ROCK;
|
||||
}
|
||||
break;
|
||||
case EVO_ROUTE217:
|
||||
if (usedItem == evoTable[i].method) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_ROUTE217;
|
||||
case EVO_LEVEL_ICE_ROCK:
|
||||
if (evoParam == evolutions[i].method) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_LEVEL_ICE_ROCK;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (target != SPECIES_NONE) {
|
||||
|
||||
if (targetSpecies != SPECIES_NONE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < 7; i++) {
|
||||
switch (evoTable[i].method) {
|
||||
case EVO_CONTEXT_TRADE:
|
||||
for (i = 0; i < MAX_MON_EVOLUTIONS; i++) {
|
||||
switch (evolutions[i].method) {
|
||||
case EVO_TRADE:
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_TRADE;
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_TRADE;
|
||||
break;
|
||||
case EVO_TRADE_ITEM:
|
||||
if (heldItem == evoTable[i].param) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = EVO_TRADE_ITEM;
|
||||
case EVO_TRADE_HELD_ITEM:
|
||||
if (heldItem == evolutions[i].param) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_TRADE_HELD_ITEM;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (target != SPECIES_NONE) {
|
||||
|
||||
if (targetSpecies != SPECIES_NONE) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
for (i = 0; i < 7; i++) {
|
||||
if (evoTable[i].method == EVO_STONE && usedItem == evoTable[i].param) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = 0;
|
||||
case EVO_CONTEXT_ITEM_CHECK:
|
||||
case EVO_CONTEXT_ITEM_USE:
|
||||
for (i = 0; i < MAX_MON_EVOLUTIONS; i++) {
|
||||
if (evolutions[i].method == EVO_USE_ITEM && evoParam == evolutions[i].param) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_NONE;
|
||||
break;
|
||||
}
|
||||
if (evoTable[i].method == EVO_STONE_MALE && Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_MALE && usedItem == evoTable[i].param) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = 0;
|
||||
if (evolutions[i].method == EVO_USE_ITEM_MALE
|
||||
&& Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_MALE
|
||||
&& evoParam == evolutions[i].param) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_NONE;
|
||||
break;
|
||||
}
|
||||
if (evoTable[i].method == EVO_STONE_FEMALE && Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_FEMALE && usedItem == evoTable[i].param) {
|
||||
target = evoTable[i].target;
|
||||
*method_ret = 0;
|
||||
if (evolutions[i].method == EVO_USE_ITEM_FEMALE
|
||||
&& Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == GENDER_FEMALE
|
||||
&& evoParam == evolutions[i].param) {
|
||||
targetSpecies = evolutions[i].target;
|
||||
*methodRet = EVO_NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
Heap_Free(evoTable);
|
||||
return target;
|
||||
Heap_Free(evolutions);
|
||||
return targetSpecies;
|
||||
}
|
||||
|
||||
u16 ReadFromPersonalPmsNarc(u16 species) {
|
||||
|
|
@ -3265,7 +3264,7 @@ void SpeciesData_LoadForm(int species, int form, SpeciesData *speciesData) {
|
|||
ReadWholeNarcMemberByIdPair(speciesData, NARC_POKETOOL_PERSONAL_PERSONAL, ResolveMonForm(species, form));
|
||||
}
|
||||
|
||||
void LoadMonEvolutionTable(u16 species, struct Evolution *evo) {
|
||||
void Species_LoadEvolutions(u16 species, struct Evolution *evo) {
|
||||
ReadWholeNarcMemberByIdPair(evo, NARC_POKETOOL_PERSONAL_EVO, species);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ BOOL CanUseItemOnPokemon(struct Pokemon *pokemon, u16 itemId, s32 moveId, enum H
|
|||
Heap_Free(itemData);
|
||||
return TRUE;
|
||||
}
|
||||
if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_EVOLVE) && GetMonEvolution(NULL, pokemon, 3, itemId, NULL) != SPECIES_NONE) {
|
||||
if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_EVOLVE) && Pokemon_GetEvolutionTarget(NULL, pokemon, 3, itemId, NULL) != SPECIES_NONE) {
|
||||
Heap_Free(itemData);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@
|
|||
"species": "PIKACHU",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "RAICHU",
|
||||
"param": "ITEM_THUNDERSTONE"
|
||||
}
|
||||
|
|
@ -232,7 +232,7 @@
|
|||
"species": "NIDORINA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "NIDOQUEEN",
|
||||
"param": "ITEM_MOON_STONE"
|
||||
}
|
||||
|
|
@ -256,7 +256,7 @@
|
|||
"species": "NIDORINO",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "NIDOKING",
|
||||
"param": "ITEM_MOON_STONE"
|
||||
}
|
||||
|
|
@ -270,7 +270,7 @@
|
|||
"species": "CLEFAIRY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "CLEFABLE",
|
||||
"param": "ITEM_MOON_STONE"
|
||||
}
|
||||
|
|
@ -284,7 +284,7 @@
|
|||
"species": "VULPIX",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "NINETALES",
|
||||
"param": "ITEM_FIRE_STONE"
|
||||
}
|
||||
|
|
@ -298,7 +298,7 @@
|
|||
"species": "JIGGLYPUFF",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "WIGGLYTUFF",
|
||||
"param": "ITEM_MOON_STONE"
|
||||
}
|
||||
|
|
@ -322,7 +322,7 @@
|
|||
"species": "GOLBAT",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "CROBAT"
|
||||
}
|
||||
]
|
||||
|
|
@ -341,12 +341,12 @@
|
|||
"species": "GLOOM",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "VILEPLUME",
|
||||
"param": "ITEM_LEAF_STONE"
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "BELLOSSOM",
|
||||
"param": "ITEM_SUN_STONE"
|
||||
}
|
||||
|
|
@ -444,7 +444,7 @@
|
|||
"species": "GROWLITHE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "ARCANINE",
|
||||
"param": "ITEM_FIRE_STONE"
|
||||
}
|
||||
|
|
@ -468,12 +468,12 @@
|
|||
"species": "POLIWHIRL",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "POLIWRATH",
|
||||
"param": "ITEM_WATER_STONE"
|
||||
},
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "POLITOED",
|
||||
"param": "ITEM_KINGS_ROCK"
|
||||
}
|
||||
|
|
@ -543,7 +543,7 @@
|
|||
"species": "WEEPINBELL",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "VICTREEBEL",
|
||||
"param": "ITEM_LEAF_STONE"
|
||||
}
|
||||
|
|
@ -613,7 +613,7 @@
|
|||
"param": 37
|
||||
},
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "SLOWKING",
|
||||
"param": "ITEM_KINGS_ROCK"
|
||||
}
|
||||
|
|
@ -637,7 +637,7 @@
|
|||
"species": "MAGNETON",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_CORONET",
|
||||
"method": "EVO_LEVEL_MAGNETIC_FIELD",
|
||||
"target": "MAGNEZONE"
|
||||
}
|
||||
]
|
||||
|
|
@ -692,7 +692,7 @@
|
|||
"species": "SHELLDER",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "CLOYSTER",
|
||||
"param": "ITEM_WATER_STONE"
|
||||
}
|
||||
|
|
@ -729,7 +729,7 @@
|
|||
"species": "ONIX",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "STEELIX",
|
||||
"param": "ITEM_METAL_COAT"
|
||||
}
|
||||
|
|
@ -781,7 +781,7 @@
|
|||
"species": "EXEGGCUTE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "EXEGGUTOR",
|
||||
"param": "ITEM_LEAF_STONE"
|
||||
}
|
||||
|
|
@ -817,7 +817,7 @@
|
|||
"species": "LICKITUNG",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "LICKILICKY",
|
||||
"param": "MOVE_ROLLOUT"
|
||||
}
|
||||
|
|
@ -851,7 +851,7 @@
|
|||
"species": "RHYDON",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "RHYPERIOR",
|
||||
"param": "ITEM_PROTECTOR"
|
||||
}
|
||||
|
|
@ -861,7 +861,7 @@
|
|||
"species": "CHANSEY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "BLISSEY"
|
||||
}
|
||||
]
|
||||
|
|
@ -870,7 +870,7 @@
|
|||
"species": "TANGELA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "TANGROWTH",
|
||||
"param": "MOVE_ANCIENT_POWER"
|
||||
}
|
||||
|
|
@ -894,7 +894,7 @@
|
|||
"species": "SEADRA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "KINGDRA",
|
||||
"param": "ITEM_DRAGON_SCALE"
|
||||
}
|
||||
|
|
@ -918,7 +918,7 @@
|
|||
"species": "STARYU",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "STARMIE",
|
||||
"param": "ITEM_WATER_STONE"
|
||||
}
|
||||
|
|
@ -936,7 +936,7 @@
|
|||
"species": "SCYTHER",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "SCIZOR",
|
||||
"param": "ITEM_METAL_COAT"
|
||||
}
|
||||
|
|
@ -950,7 +950,7 @@
|
|||
"species": "ELECTABUZZ",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "ELECTIVIRE",
|
||||
"param": "ITEM_ELECTIRIZER"
|
||||
}
|
||||
|
|
@ -960,7 +960,7 @@
|
|||
"species": "MAGMAR",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "MAGMORTAR",
|
||||
"param": "ITEM_MAGMARIZER"
|
||||
}
|
||||
|
|
@ -1000,34 +1000,34 @@
|
|||
"species": "EEVEE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_ETERNA",
|
||||
"method": "EVO_LEVEL_MOSS_ROCK",
|
||||
"target": "LEAFEON"
|
||||
},
|
||||
{
|
||||
"method": "EVO_ROUTE217",
|
||||
"method": "EVO_LEVEL_ICE_ROCK",
|
||||
"target": "GLACEON"
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "JOLTEON",
|
||||
"param": "ITEM_THUNDERSTONE"
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "VAPOREON",
|
||||
"param": "ITEM_WATER_STONE"
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "FLAREON",
|
||||
"param": "ITEM_FIRE_STONE"
|
||||
},
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP_DAY",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP_DAY",
|
||||
"target": "ESPEON"
|
||||
},
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP_NIGHT",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP_NIGHT",
|
||||
"target": "UMBREON"
|
||||
}
|
||||
]
|
||||
|
|
@ -1048,7 +1048,7 @@
|
|||
"species": "PORYGON",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "PORYGON2",
|
||||
"param": "ITEM_UPGRADE"
|
||||
}
|
||||
|
|
@ -1284,7 +1284,7 @@
|
|||
"species": "PICHU",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "PIKACHU"
|
||||
}
|
||||
]
|
||||
|
|
@ -1293,7 +1293,7 @@
|
|||
"species": "CLEFFA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "CLEFAIRY"
|
||||
}
|
||||
]
|
||||
|
|
@ -1302,7 +1302,7 @@
|
|||
"species": "IGGLYBUFF",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "JIGGLYPUFF"
|
||||
}
|
||||
]
|
||||
|
|
@ -1311,7 +1311,7 @@
|
|||
"species": "TOGEPI",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "TOGETIC"
|
||||
}
|
||||
]
|
||||
|
|
@ -1320,7 +1320,7 @@
|
|||
"species": "TOGETIC",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "TOGEKISS",
|
||||
"param": "ITEM_SHINY_STONE"
|
||||
}
|
||||
|
|
@ -1418,7 +1418,7 @@
|
|||
"species": "AIPOM",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "AMBIPOM",
|
||||
"param": "MOVE_DOUBLE_HIT"
|
||||
}
|
||||
|
|
@ -1428,7 +1428,7 @@
|
|||
"species": "SUNKERN",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "SUNFLORA",
|
||||
"param": "ITEM_SUN_STONE"
|
||||
}
|
||||
|
|
@ -1442,7 +1442,7 @@
|
|||
"species": "YANMA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "YANMEGA",
|
||||
"param": "MOVE_ANCIENT_POWER"
|
||||
}
|
||||
|
|
@ -1474,7 +1474,7 @@
|
|||
"species": "MURKROW",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "HONCHKROW",
|
||||
"param": "ITEM_DUSK_STONE"
|
||||
}
|
||||
|
|
@ -1488,7 +1488,7 @@
|
|||
"species": "MISDREAVUS",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "MISMAGIUS",
|
||||
"param": "ITEM_DUSK_STONE"
|
||||
}
|
||||
|
|
@ -1528,7 +1528,7 @@
|
|||
"species": "GLIGAR",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_ITEM_NIGHT",
|
||||
"method": "EVO_LEVEL_HELD_ITEM_NIGHT",
|
||||
"target": "GLISCOR",
|
||||
"param": "ITEM_RAZOR_FANG"
|
||||
}
|
||||
|
|
@ -1572,7 +1572,7 @@
|
|||
"species": "SNEASEL",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_ITEM_NIGHT",
|
||||
"method": "EVO_LEVEL_HELD_ITEM_NIGHT",
|
||||
"target": "WEAVILE",
|
||||
"param": "ITEM_RAZOR_CLAW"
|
||||
}
|
||||
|
|
@ -1620,7 +1620,7 @@
|
|||
"species": "PILOSWINE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "MAMOSWINE",
|
||||
"param": "MOVE_ANCIENT_POWER"
|
||||
}
|
||||
|
|
@ -1692,7 +1692,7 @@
|
|||
"species": "PORYGON2",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "PORYGON_Z",
|
||||
"param": "ITEM_DUBIOUS_DISC"
|
||||
}
|
||||
|
|
@ -1920,12 +1920,12 @@
|
|||
"species": "WURMPLE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_LEVEL_PID_LO",
|
||||
"method": "EVO_LEVEL_PID_LOW",
|
||||
"target": "SILCOON",
|
||||
"param": 7
|
||||
},
|
||||
{
|
||||
"method": "EVO_LEVEL_PID_HI",
|
||||
"method": "EVO_LEVEL_PID_HIGH",
|
||||
"target": "CASCOON",
|
||||
"param": 7
|
||||
}
|
||||
|
|
@ -1973,7 +1973,7 @@
|
|||
"species": "LOMBRE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "LUDICOLO",
|
||||
"param": "ITEM_WATER_STONE"
|
||||
}
|
||||
|
|
@ -1997,7 +1997,7 @@
|
|||
"species": "NUZLEAF",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "SHIFTRY",
|
||||
"param": "ITEM_LEAF_STONE"
|
||||
}
|
||||
|
|
@ -2054,7 +2054,7 @@
|
|||
"param": 30
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE_MALE",
|
||||
"method": "EVO_USE_ITEM_MALE",
|
||||
"target": "GALLADE",
|
||||
"param": "ITEM_DAWN_STONE"
|
||||
}
|
||||
|
|
@ -2181,7 +2181,7 @@
|
|||
"species": "AZURILL",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "MARILL"
|
||||
}
|
||||
]
|
||||
|
|
@ -2190,7 +2190,7 @@
|
|||
"species": "NOSEPASS",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_CORONET",
|
||||
"method": "EVO_LEVEL_MAGNETIC_FIELD",
|
||||
"target": "PROBOPASS"
|
||||
}
|
||||
]
|
||||
|
|
@ -2199,7 +2199,7 @@
|
|||
"species": "SKITTY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "DELCATTY",
|
||||
"param": "ITEM_MOON_STONE"
|
||||
}
|
||||
|
|
@ -2289,7 +2289,7 @@
|
|||
"species": "ROSELIA",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_STONE",
|
||||
"method": "EVO_USE_ITEM",
|
||||
"target": "ROSERADE",
|
||||
"param": "ITEM_SHINY_STONE"
|
||||
}
|
||||
|
|
@ -2515,7 +2515,7 @@
|
|||
"species": "FEEBAS",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_BEAUTY",
|
||||
"method": "EVO_LEVEL_BEAUTY",
|
||||
"target": "MILOTIC",
|
||||
"param": 170
|
||||
}
|
||||
|
|
@ -2561,7 +2561,7 @@
|
|||
"species": "DUSCLOPS",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "DUSKNOIR",
|
||||
"param": "ITEM_REAPER_CLOTH"
|
||||
}
|
||||
|
|
@ -2598,7 +2598,7 @@
|
|||
"param": 42
|
||||
},
|
||||
{
|
||||
"method": "EVO_STONE_FEMALE",
|
||||
"method": "EVO_USE_ITEM_FEMALE",
|
||||
"target": "FROSLASS",
|
||||
"param": "ITEM_DAWN_STONE"
|
||||
}
|
||||
|
|
@ -2636,12 +2636,12 @@
|
|||
"species": "CLAMPERL",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "HUNTAIL",
|
||||
"param": "ITEM_DEEPSEATOOTH"
|
||||
},
|
||||
{
|
||||
"method": "EVO_TRADE_ITEM",
|
||||
"method": "EVO_TRADE_HELD_ITEM",
|
||||
"target": "GOREBYSS",
|
||||
"param": "ITEM_DEEPSEASCALE"
|
||||
}
|
||||
|
|
@ -2903,7 +2903,7 @@
|
|||
"species": "BUDEW",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP_DAY",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP_DAY",
|
||||
"target": "ROSELIA"
|
||||
}
|
||||
]
|
||||
|
|
@ -3045,7 +3045,7 @@
|
|||
"species": "BUNEARY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "LOPUNNY"
|
||||
}
|
||||
]
|
||||
|
|
@ -3080,7 +3080,7 @@
|
|||
"species": "CHINGLING",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP_NIGHT",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP_NIGHT",
|
||||
"target": "CHIMECHO"
|
||||
}
|
||||
]
|
||||
|
|
@ -3117,7 +3117,7 @@
|
|||
"species": "BONSLY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "SUDOWOODO",
|
||||
"param": "MOVE_MIMIC"
|
||||
}
|
||||
|
|
@ -3127,7 +3127,7 @@
|
|||
"species": "MIME_JR",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_HAS_MOVE",
|
||||
"method": "EVO_LEVEL_KNOW_MOVE",
|
||||
"target": "MR_MIME",
|
||||
"param": "MOVE_MIMIC"
|
||||
}
|
||||
|
|
@ -3137,7 +3137,7 @@
|
|||
"species": "HAPPINY",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_ITEM_DAY",
|
||||
"method": "EVO_LEVEL_HELD_ITEM_DAY",
|
||||
"target": "CHANSEY",
|
||||
"param": "ITEM_OVAL_STONE"
|
||||
}
|
||||
|
|
@ -3179,7 +3179,7 @@
|
|||
"species": "MUNCHLAX",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP",
|
||||
"target": "SNORLAX"
|
||||
}
|
||||
]
|
||||
|
|
@ -3188,7 +3188,7 @@
|
|||
"species": "RIOLU",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_FRIENDSHIP_DAY",
|
||||
"method": "EVO_LEVEL_FRIENDSHIP_DAY",
|
||||
"target": "LUCARIO"
|
||||
}
|
||||
]
|
||||
|
|
@ -3261,7 +3261,7 @@
|
|||
"species": "MANTYKE",
|
||||
"evos": [
|
||||
{
|
||||
"method": "EVO_OTHER_PARTY_MON",
|
||||
"method": "EVO_LEVEL_SPECIES_IN_PARTY",
|
||||
"target": "MANTINE",
|
||||
"param": "SPECIES_REMORAID"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
#define MAX_IVS_SINGLE_STAT 31
|
||||
#define MAX_FRIENDSHIP 255
|
||||
|
||||
#define FRIENDSHIP_EVO_THRESHOLD 220
|
||||
|
||||
// Pokemon types
|
||||
#define TYPE_NONE 255
|
||||
#define TYPE_NORMAL 0
|
||||
|
|
@ -522,34 +524,41 @@ typedef enum {
|
|||
|
||||
typedef enum EvoMethod {
|
||||
EVO_NONE = 0,
|
||||
EVO_FRIENDSHIP,
|
||||
EVO_FRIENDSHIP_DAY,
|
||||
EVO_FRIENDSHIP_NIGHT,
|
||||
EVO_LEVEL_FRIENDSHIP,
|
||||
EVO_LEVEL_FRIENDSHIP_DAY,
|
||||
EVO_LEVEL_FRIENDSHIP_NIGHT,
|
||||
EVO_LEVEL,
|
||||
EVO_TRADE,
|
||||
EVO_TRADE_ITEM,
|
||||
EVO_STONE,
|
||||
EVO_TRADE_HELD_ITEM,
|
||||
EVO_USE_ITEM,
|
||||
EVO_LEVEL_ATK_GT_DEF,
|
||||
EVO_LEVEL_ATK_EQ_DEF,
|
||||
EVO_LEVEL_ATK_LT_DEF,
|
||||
EVO_LEVEL_PID_LO,
|
||||
EVO_LEVEL_PID_HI,
|
||||
EVO_LEVEL_PID_LOW,
|
||||
EVO_LEVEL_PID_HIGH,
|
||||
EVO_LEVEL_NINJASK,
|
||||
EVO_LEVEL_SHEDINJA,
|
||||
EVO_BEAUTY,
|
||||
EVO_STONE_MALE,
|
||||
EVO_STONE_FEMALE,
|
||||
EVO_ITEM_DAY,
|
||||
EVO_ITEM_NIGHT,
|
||||
EVO_HAS_MOVE,
|
||||
EVO_OTHER_PARTY_MON,
|
||||
EVO_LEVEL_BEAUTY,
|
||||
EVO_USE_ITEM_MALE,
|
||||
EVO_USE_ITEM_FEMALE,
|
||||
EVO_LEVEL_HELD_ITEM_DAY,
|
||||
EVO_LEVEL_HELD_ITEM_NIGHT,
|
||||
EVO_LEVEL_KNOW_MOVE,
|
||||
EVO_LEVEL_SPECIES_IN_PARTY,
|
||||
EVO_LEVEL_MALE,
|
||||
EVO_LEVEL_FEMALE,
|
||||
EVO_CORONET,
|
||||
EVO_ETERNA,
|
||||
EVO_ROUTE217,
|
||||
EVO_LEVEL_MAGNETIC_FIELD,
|
||||
EVO_LEVEL_MOSS_ROCK,
|
||||
EVO_LEVEL_ICE_ROCK,
|
||||
} EvoMethod;
|
||||
|
||||
enum EvolutionContext {
|
||||
EVO_CONTEXT_LEVEL_UP,
|
||||
EVO_CONTEXT_TRADE,
|
||||
EVO_CONTEXT_ITEM_CHECK,
|
||||
EVO_CONTEXT_ITEM_USE,
|
||||
};
|
||||
|
||||
enum GrowthRate {
|
||||
GROWTH_MEDIUM_FAST = 0,
|
||||
GROWTH_ERRATIC,
|
||||
|
|
|
|||
|
|
@ -211,11 +211,12 @@ struct UnkStruct_02069038 {
|
|||
struct Pokeanm anim;
|
||||
};
|
||||
|
||||
struct Evolution {
|
||||
typedef struct Evolution {
|
||||
u16 method;
|
||||
u16 param;
|
||||
u16 target;
|
||||
};
|
||||
} Evolution;
|
||||
#define MAX_MON_EVOLUTIONS 7
|
||||
|
||||
#define PARTY_SIZE 6
|
||||
|
||||
|
|
@ -294,7 +295,7 @@ u8 Pokemon_GetForm(Pokemon *mon);
|
|||
void Species_LoadLevelUpLearnset(int species, int form, u16 *levelUpLearnset);
|
||||
BoxPokemon *Pokemon_GetBoxMon(Pokemon *mon);
|
||||
|
||||
u16 GetMonEvolution(struct Party *party, Pokemon *mon, u32 context, u32 usedItem, u32 *method_ret);
|
||||
u16 Pokemon_GetEvolutionTarget(struct Party *party, Pokemon *mon, u8 context, u32 evoParam, u32 *methodRet);
|
||||
u16 ReadFromPersonalPmsNarc(u16 species);
|
||||
u16 GetEggSpecies(u16 species);
|
||||
BOOL Pokemon_TryLevelUp(Pokemon *mon);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user