mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Merge branch 'upcoming' of https://github.com/rh-hideout/pokeemerald-expansion into castform_fix
This commit is contained in:
commit
5a8715e608
@ -6984,8 +6984,6 @@ BattleScript_TerrainEnds_Ret::
|
||||
playanimation BS_ATTACKER, B_ANIM_RESTORE_BG
|
||||
return
|
||||
|
||||
BattleScript_GrassyTerrainEnds:
|
||||
setbyte cMULTISTRING_CHOOSER, B_MSG_TERRAINENDS_GRASS
|
||||
BattleScript_TerrainEnds::
|
||||
call BattleScript_TerrainEnds_Ret
|
||||
end2
|
||||
@ -7182,8 +7180,10 @@ BattleScript_MistProtected::
|
||||
return
|
||||
|
||||
BattleScript_RageIsBuilding::
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_RageIsBuildingEnd
|
||||
printstring STRINGID_PKMNRAGEBUILDING
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_RageIsBuildingEnd:
|
||||
return
|
||||
|
||||
BattleScript_MoveUsedIsDisabled::
|
||||
@ -8520,10 +8520,12 @@ BattleScript_AbilityPopUp:
|
||||
return
|
||||
|
||||
BattleScript_SpeedBoostActivates::
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_SpeedBoostActivatesEnd
|
||||
call BattleScript_AbilityPopUp
|
||||
playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
printstring STRINGID_PKMNRAISEDSPEED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_SpeedBoostActivatesEnd:
|
||||
end3
|
||||
|
||||
@ Can't compare directly to a value, have to compare to value at pointer
|
||||
@ -9036,8 +9038,8 @@ BattleScript_MoveStatDrain::
|
||||
setgraphicalstatchangevalues
|
||||
playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
|
||||
waitanimation
|
||||
.if B_ABSORBING_ABILITY_STRING >= GEN_5
|
||||
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_MoveStatDrain_Cont
|
||||
.if B_ABSORBING_ABILITY_STRING >= GEN_5
|
||||
printfromtable gStatUpStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
.else
|
||||
@ -9176,7 +9178,6 @@ BattleScript_GrassyTerrainLoopIncrement::
|
||||
BattleScript_GrassyTerrainLoopEnd::
|
||||
bicword gHitMarker, HITMARKER_SKIP_DMG_TRACK | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_PERMANENT, BattleScript_GrassyTerrainHealEnd
|
||||
jumpifbyte CMP_EQUAL, gFieldTimers + 5, 0, BattleScript_GrassyTerrainEnds
|
||||
BattleScript_GrassyTerrainHealEnd:
|
||||
end2
|
||||
|
||||
@ -9317,6 +9318,7 @@ BattleScript_WeakArmorActivatesEnd:
|
||||
return
|
||||
|
||||
BattleScript_RaiseStatOnFaintingTarget::
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_RaiseStatOnFaintingTarget_End
|
||||
copybyte gBattlerAbility, gBattlerAttacker
|
||||
call BattleScript_AbilityPopUp
|
||||
setgraphicalstatchangevalues
|
||||
@ -9324,9 +9326,11 @@ BattleScript_RaiseStatOnFaintingTarget::
|
||||
waitanimation
|
||||
printstring STRINGID_LASTABILITYRAISEDSTAT
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_RaiseStatOnFaintingTarget_End:
|
||||
return
|
||||
|
||||
BattleScript_AttackerAbilityStatRaise::
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_AttackerAbilityStatRaise_End
|
||||
copybyte gBattlerAbility, gBattlerAttacker
|
||||
call BattleScript_AbilityPopUp
|
||||
setgraphicalstatchangevalues
|
||||
@ -9334,6 +9338,7 @@ BattleScript_AttackerAbilityStatRaise::
|
||||
waitanimation
|
||||
printstring STRINGID_ATTACKERABILITYSTATRAISE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
BattleScript_AttackerAbilityStatRaise_End:
|
||||
return
|
||||
|
||||
BattleScript_FellStingerRaisesStat::
|
||||
|
@ -90,3 +90,22 @@ Debug_Script_7::
|
||||
|
||||
Debug_Script_8::
|
||||
end
|
||||
|
||||
Debug_CheckSaveBlock::
|
||||
callnative CheckSaveBlock1Size
|
||||
msgbox Debug_SaveBlock1Size, MSGBOX_DEFAULT
|
||||
callnative CheckSaveBlock2Size
|
||||
msgbox Debug_SaveBlock2Size, MSGBOX_DEFAULT
|
||||
callnative CheckPokemonStorageSize
|
||||
msgbox Debug_PokemonStorageSize, MSGBOX_DEFAULT
|
||||
release
|
||||
end
|
||||
|
||||
Debug_SaveBlock1Size::
|
||||
.string "SaveBlock1 size: {STR_VAR_1}/{STR_VAR_2}.$"
|
||||
|
||||
Debug_SaveBlock2Size::
|
||||
.string "SaveBlock2 size: {STR_VAR_1}/{STR_VAR_2}.$"
|
||||
|
||||
Debug_PokemonStorageSize::
|
||||
.string "{PKMN}Storage size: {STR_VAR_1}/{STR_VAR_2}.$"
|
||||
|
@ -197,7 +197,7 @@
|
||||
#define B_WILD_NATURAL_ENEMIES TRUE // If set to TRUE, certain wild mon species will attack other species when partnered in double wild battles (eg. Zangoose vs Seviper)
|
||||
#define B_AFFECTION_MECHANICS FALSE // In Gen6+, there's a stat called affection that can trigger different effects in battle. From LGPE onwards, those effects use friendship instead.
|
||||
#define B_TRAINER_CLASS_POKE_BALLS GEN_LATEST // In Gen7+, trainers will use certain types of Poké Balls depending on their trainer class.
|
||||
#define B_OBEDIENCE_MECHANICS GEN_LATEST // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level
|
||||
#define B_OBEDIENCE_MECHANICS GEN_7 // In PLA+ (here Gen8+), obedience restrictions also apply to non-outsider Pokémon, albeit based on their level met rather than actual level
|
||||
#define B_USE_FROSTBITE FALSE // In PLA, Frostbite replaces Freeze. Enabling this flag does the same here. Moves can still be cherry-picked to either Freeze or Frostbite. Freeze-Dry, Secret Power & Tri Attack depend on this config.
|
||||
|
||||
// Animation Settings
|
||||
|
@ -10,6 +10,7 @@
|
||||
#define I_VITAMIN_EV_CAP GEN_LATEST // In Gen8+, the Vitamins no longer have a cap of 100 EV per stat.
|
||||
#define I_BERRY_EV_JUMP GEN_LATEST // In Gen4 only, EV-lowering Berries lower a stat's EV to 100 if it is above 100.
|
||||
#define I_GRISEOUS_ORB_FORM_CHANGE GEN_LATEST // In Gen9+, the Griseous Orb no longer changes Giratina's form when held.
|
||||
#define I_USE_EVO_HELD_ITEMS_FROM_BAG FALSE // If TRUE, items such as Razor Claw or Electirizer will be usable from the bag to evolve a Pokémon just like in LA.
|
||||
|
||||
// TM config
|
||||
#define I_REUSABLE_TMS FALSE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1.
|
||||
|
@ -312,7 +312,9 @@
|
||||
#define EVO_SCRIPT_TRIGGER_DMG 36 // Pokémon has specified HP below max, then player interacts trigger
|
||||
#define EVO_DARK_SCROLL 37 // interacts with Scroll of Darkness
|
||||
#define EVO_WATER_SCROLL 38 // interacts with Scroll of Waters
|
||||
#define EVO_ITEM_NIGHT 39 // specified item is used on Pokémon at night
|
||||
#define EVO_ITEM_NIGHT 39 // specified item is used on Pokémon, is night
|
||||
#define EVO_ITEM_DAY 40 // specified item is used on Pokémon, is day
|
||||
#define EVO_ITEM_HOLD 41 // Pokémon levels up, holds specified item
|
||||
|
||||
#define EVOS_PER_MON 10
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_MONEY_H
|
||||
#define GUARD_MONEY_H
|
||||
|
||||
#define MAX_MONEY 999999
|
||||
|
||||
u32 GetMoney(u32 *moneyPtr);
|
||||
void SetMoney(u32 *moneyPtr, u32 newValue);
|
||||
bool8 IsEnoughMoney(u32 *moneyPtr, u32 cost);
|
||||
|
@ -591,7 +591,8 @@ void SetBattlerData(u8 battlerId)
|
||||
{
|
||||
if (!BattlerHasAi(battlerId))
|
||||
{
|
||||
u32 i, species, illusionSpecies;
|
||||
u32 i, species, illusionSpecies, side;
|
||||
side = GetBattlerSide(battlerId);
|
||||
|
||||
// Simulate Illusion
|
||||
species = gBattleMons[battlerId].species;
|
||||
@ -609,22 +610,22 @@ void SetBattlerData(u8 battlerId)
|
||||
}
|
||||
|
||||
// Use the known battler's ability.
|
||||
if (BATTLE_HISTORY->abilities[battlerId] != ABILITY_NONE)
|
||||
gBattleMons[battlerId].ability = BATTLE_HISTORY->abilities[battlerId];
|
||||
if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability != ABILITY_NONE)
|
||||
gBattleMons[battlerId].ability = AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].ability;
|
||||
// Check if mon can only have one ability.
|
||||
else if (gSpeciesInfo[species].abilities[1] == ABILITY_NONE
|
||||
|| gSpeciesInfo[species].abilities[1] == gSpeciesInfo[species].abilities[0])
|
||||
|| gSpeciesInfo[species].abilities[1] == gSpeciesInfo[species].abilities[0])
|
||||
gBattleMons[battlerId].ability = gSpeciesInfo[species].abilities[0];
|
||||
// The ability is unknown.
|
||||
else
|
||||
gBattleMons[battlerId].ability = ABILITY_NONE;
|
||||
|
||||
if (BATTLE_HISTORY->itemEffects[battlerId] == 0)
|
||||
if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].heldEffect == 0)
|
||||
gBattleMons[battlerId].item = 0;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (BATTLE_HISTORY->usedMoves[battlerId][i] == 0)
|
||||
if (AI_PARTY->mons[side][gBattlerPartyIndexes[battlerId]].moves[i] == 0)
|
||||
gBattleMons[battlerId].moves[i] = 0;
|
||||
}
|
||||
}
|
||||
|
@ -5582,7 +5582,7 @@ static void Cmd_moveend(void)
|
||||
&& gBattleMoves[gCurrentMove].power != 0
|
||||
&& CompareStat(gBattlerTarget, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[gBattlerTarget].statStages[STAT_ATK]++;
|
||||
SET_STATCHANGER(STAT_ATK, 1, FALSE);
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_RageIsBuilding;
|
||||
effect = TRUE;
|
||||
@ -9494,7 +9494,6 @@ static void Cmd_various(void)
|
||||
&& !NoAliveMonsForEitherParty()
|
||||
&& CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].statStages[STAT_ATK]++;
|
||||
SET_STATCHANGER(STAT_ATK, 1, FALSE);
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
@ -9518,7 +9517,6 @@ static void Cmd_various(void)
|
||||
&& !NoAliveMonsForEitherParty()
|
||||
&& CompareStat(gBattlerAttacker, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].statStages[STAT_SPATK]++;
|
||||
SET_STATCHANGER(STAT_SPATK, 1, FALSE);
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
@ -9570,7 +9568,6 @@ static void Cmd_various(void)
|
||||
&& !NoAliveMonsForEitherParty()
|
||||
&& CompareStat(gBattlerAttacker, i, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[gBattlerAttacker].statStages[i]++;
|
||||
SET_STATCHANGER(i, 1, FALSE);
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, i);
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
@ -9590,7 +9587,6 @@ static void Cmd_various(void)
|
||||
&& !NoAliveMonsForEitherParty()
|
||||
&& CompareStat(gBattleScripting.battler, STAT_SPATK, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[gBattleScripting.battler].statStages[STAT_SPATK]++;
|
||||
SET_STATCHANGER(STAT_SPATK, 1, FALSE);
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
|
||||
BattleScriptPushCursor();
|
||||
|
@ -2056,19 +2056,16 @@ static bool32 EndTurnTerrain(u32 terrainFlag, u32 stringTableId)
|
||||
{
|
||||
if (gFieldStatuses & terrainFlag)
|
||||
{
|
||||
if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN)
|
||||
BattleScriptExecute(BattleScript_GrassyTerrainHeals);
|
||||
if (!(gFieldStatuses & STATUS_FIELD_TERRAIN_PERMANENT) && --gFieldTimers.terrainTimer == 0)
|
||||
{
|
||||
gFieldStatuses &= ~terrainFlag;
|
||||
TryToRevertMimicry();
|
||||
if (!(terrainFlag & STATUS_FIELD_GRASSY_TERRAIN))
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId;
|
||||
BattleScriptExecute(BattleScript_TerrainEnds);
|
||||
}
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = stringTableId;
|
||||
BattleScriptExecute(BattleScript_TerrainEnds);
|
||||
return TRUE;
|
||||
}
|
||||
if (terrainFlag & STATUS_FIELD_GRASSY_TERRAIN)
|
||||
BattleScriptExecute(BattleScript_GrassyTerrainHeals);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@ -4462,7 +4459,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
|
||||
if (CompareStat(battler, statId, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
{
|
||||
gBattleMons[battler].statStages[statId]++;
|
||||
SET_STATCHANGER(statId, 1, FALSE);
|
||||
gBattlerAttacker = battler;
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, statId);
|
||||
@ -4829,9 +4825,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
case ABILITY_SPEED_BOOST:
|
||||
if (CompareStat(battler, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN) && gDisableStructs[battler].isFirstTurn != 2)
|
||||
{
|
||||
gBattleMons[battler].statStages[STAT_SPEED]++;
|
||||
gBattleScripting.animArg1 = 14 + STAT_SPEED;
|
||||
gBattleScripting.animArg2 = 0;
|
||||
SET_STATCHANGER(STAT_SPEED, 1, FALSE);
|
||||
BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
|
||||
gBattleScripting.battler = battler;
|
||||
effect++;
|
||||
@ -5126,7 +5120,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move
|
||||
|
||||
SET_STATCHANGER(statId, statAmount, FALSE);
|
||||
#if B_ABSORBING_ABILITY_STRING < GEN_5
|
||||
gBattleMons[battler].statStages[statId]++;
|
||||
PREPARE_STAT_BUFFER(gBattleTextBuff1, statId);
|
||||
#endif
|
||||
}
|
||||
@ -6713,7 +6706,7 @@ static bool32 GetMentalHerbEffect(u8 battlerId)
|
||||
static u8 TryConsumeMirrorHerb(u8 battlerId, bool32 execute)
|
||||
{
|
||||
u8 effect = 0;
|
||||
|
||||
|
||||
if (gProtectStructs[battlerId].eatMirrorHerb) {
|
||||
gLastUsedItem = gBattleMons[battlerId].item;
|
||||
gBattleScripting.savedBattler = gBattlerAttacker;
|
||||
|
@ -1,3 +1,11 @@
|
||||
#if I_USE_EVO_HELD_ITEMS_FROM_BAG == TRUE
|
||||
#define EVO_HELD_ITEM_TYPE ITEM_USE_PARTY_MENU
|
||||
#define EVO_HELD_ITEM_FIELD_FUNC ItemUseOutOfBattle_EvolutionStone
|
||||
#else
|
||||
#define EVO_HELD_ITEM_TYPE ITEM_USE_BAG_MENU
|
||||
#define EVO_HELD_ITEM_FIELD_FUNC ItemUseOutOfBattle_CannotUse
|
||||
#endif
|
||||
|
||||
const struct Item gItems[] =
|
||||
{
|
||||
[ITEM_NONE] =
|
||||
@ -2890,8 +2898,8 @@ const struct Item gItems[] =
|
||||
.holdEffectParam = 10,
|
||||
.description = sDragonScaleDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -2903,8 +2911,8 @@ const struct Item gItems[] =
|
||||
.holdEffect = HOLD_EFFECT_UPGRADE,
|
||||
.description = sUpgradeDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -2915,8 +2923,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sProtectorDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -2927,8 +2935,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sElectirizerDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -2939,8 +2947,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sMagmarizerDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -2951,8 +2959,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sDubiousDiscDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 50,
|
||||
},
|
||||
|
||||
@ -2963,8 +2971,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sReaperClothDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 10,
|
||||
},
|
||||
|
||||
@ -2975,8 +2983,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sPrismScaleDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -2987,8 +2995,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sWhippedDreamDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -2999,8 +3007,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sSachetDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -3011,8 +3019,8 @@ const struct Item gItems[] =
|
||||
.price = 2000,
|
||||
.description = sOvalStoneDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
@ -5199,8 +5207,8 @@ const struct Item gItems[] =
|
||||
.holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE,
|
||||
.description = sDeepSeaScaleDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -5212,8 +5220,8 @@ const struct Item gItems[] =
|
||||
.holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH,
|
||||
.description = sDeepSeaToothDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 90,
|
||||
},
|
||||
|
||||
@ -5806,8 +5814,8 @@ const struct Item gItems[] =
|
||||
.holdEffectParam = 20,
|
||||
.description = sMetalCoatDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -6141,8 +6149,8 @@ const struct Item gItems[] =
|
||||
.holdEffectParam = 10,
|
||||
.description = sKingsRockDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 30,
|
||||
},
|
||||
|
||||
@ -6503,8 +6511,8 @@ const struct Item gItems[] =
|
||||
.holdEffect = HOLD_EFFECT_SCOPE_LENS,
|
||||
.description = sRazorClawDesc,
|
||||
.pocket = POCKET_ITEMS,
|
||||
.type = ITEM_USE_BAG_MENU,
|
||||
.fieldUseFunc = ItemUseOutOfBattle_CannotUse,
|
||||
.type = EVO_HELD_ITEM_TYPE,
|
||||
.fieldUseFunc = EVO_HELD_ITEM_FIELD_FUNC,
|
||||
.flingPower = 80,
|
||||
},
|
||||
|
||||
|
@ -39,7 +39,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}},
|
||||
[SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}},
|
||||
[SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED},
|
||||
{EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}},
|
||||
[SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}},
|
||||
[SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM},
|
||||
{EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}},
|
||||
@ -54,7 +55,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
{EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GOLEM}},
|
||||
[SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}},
|
||||
[SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
|
||||
{EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING},
|
||||
{EVO_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}},
|
||||
[SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_MAGNETON] = {{EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE},
|
||||
@ -67,7 +69,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}},
|
||||
[SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR},
|
||||
{EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}},
|
||||
[SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
|
||||
[SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX},
|
||||
{EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}},
|
||||
[SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}},
|
||||
[SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}},
|
||||
[SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}},
|
||||
@ -81,21 +84,26 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}},
|
||||
[SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_RHYDON] = {{EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}},
|
||||
[SPECIES_RHYDON] = {{EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR},
|
||||
{EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}},
|
||||
#endif
|
||||
[SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_TANGELA] = {{EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}},
|
||||
#endif
|
||||
[SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}},
|
||||
[SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
|
||||
[SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA},
|
||||
{EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}},
|
||||
[SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}},
|
||||
[SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}},
|
||||
[SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR},
|
||||
{EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}},
|
||||
{EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR},
|
||||
{EVO_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_ELECTABUZZ] = {{EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}},
|
||||
[SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}},
|
||||
[SPECIES_ELECTABUZZ] = {{EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE},
|
||||
{EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}},
|
||||
[SPECIES_MAGMAR] = {{EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR},
|
||||
{EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}},
|
||||
#endif
|
||||
[SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}},
|
||||
[SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON},
|
||||
@ -113,7 +121,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
{EVO_MOVE_TYPE, TYPE_FAIRY, SPECIES_SYLVEON}
|
||||
#endif
|
||||
},
|
||||
[SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}},
|
||||
[SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2},
|
||||
{EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}},
|
||||
[SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}},
|
||||
[SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}},
|
||||
[SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}},
|
||||
@ -154,11 +163,13 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
#endif
|
||||
[SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}},
|
||||
[SPECIES_GLIGAR] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR},
|
||||
{EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}},
|
||||
#endif
|
||||
[SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_SNEASEL] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}},
|
||||
[SPECIES_SNEASEL] = {{EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE},
|
||||
{EVO_ITEM_NIGHT, ITEM_RAZOR_CLAW, SPECIES_WEAVILE}},
|
||||
#endif
|
||||
[SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}},
|
||||
[SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}},
|
||||
@ -170,7 +181,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}},
|
||||
[SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}},
|
||||
[SPECIES_PORYGON2] = {{EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z},
|
||||
{EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}},
|
||||
#endif
|
||||
[SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN},
|
||||
{EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE},
|
||||
@ -211,7 +223,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}},
|
||||
[SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}},
|
||||
[SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC},
|
||||
{EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}},
|
||||
{EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC},
|
||||
{EVO_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}},
|
||||
[SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}},
|
||||
[SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}},
|
||||
[SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}},
|
||||
@ -233,7 +246,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}},
|
||||
[SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}},
|
||||
#if P_GEN_4_POKEMON == TRUE
|
||||
[SPECIES_DUSCLOPS] = {{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}},
|
||||
[SPECIES_DUSCLOPS] = {{EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR},
|
||||
{EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}},
|
||||
[SPECIES_ROSELIA] = {{EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}},
|
||||
#endif
|
||||
[SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}},
|
||||
@ -242,7 +256,9 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}},
|
||||
[SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}},
|
||||
[SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
|
||||
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
|
||||
{EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS},
|
||||
{EVO_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL},
|
||||
{EVO_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}},
|
||||
[SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}},
|
||||
[SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}},
|
||||
[SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}},
|
||||
@ -289,7 +305,8 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
[SPECIES_BRONZOR] = {{EVO_LEVEL, 33, SPECIES_BRONZONG}},
|
||||
[SPECIES_BONSLY] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}},
|
||||
[SPECIES_MIME_JR] = {{EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}},
|
||||
[SPECIES_HAPPINY] = {{EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}},
|
||||
[SPECIES_HAPPINY] = {{EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY},
|
||||
{EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}},
|
||||
[SPECIES_GIBLE] = {{EVO_LEVEL, 24, SPECIES_GABITE}},
|
||||
[SPECIES_GABITE] = {{EVO_LEVEL, 48, SPECIES_GARCHOMP}},
|
||||
[SPECIES_MUNCHLAX] = {{EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}},
|
||||
@ -400,8 +417,10 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
{EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}},
|
||||
[SPECIES_HONEDGE] = {{EVO_LEVEL, 35, SPECIES_DOUBLADE}},
|
||||
[SPECIES_DOUBLADE] = {{EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH}},
|
||||
[SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}},
|
||||
[SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}},
|
||||
[SPECIES_SPRITZEE] = {{EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE},
|
||||
{EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}},
|
||||
[SPECIES_SWIRLIX] = {{EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF},
|
||||
{EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}},
|
||||
[SPECIES_INKAY] = {{EVO_LEVEL, 30, SPECIES_MALAMAR}},
|
||||
[SPECIES_BINACLE] = {{EVO_LEVEL, 39, SPECIES_BARBARACLE}},
|
||||
[SPECIES_SKRELP] = {{EVO_LEVEL, 48, SPECIES_DRAGALGE}},
|
||||
@ -565,5 +584,7 @@ const struct Evolution gEvolutionTable[NUM_SPECIES][EVOS_PER_MON] =
|
||||
#if P_GEN_8_POKEMON == TRUE
|
||||
[SPECIES_SINISTEA_ANTIQUE] = {{EVO_ITEM, ITEM_CHIPPED_POT, SPECIES_POLTEAGEIST_ANTIQUE}},
|
||||
[SPECIES_URSARING] = {{EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}},
|
||||
[SPECIES_SNEASEL_HISUIAN] = {{EVO_ITEM_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER},
|
||||
{EVO_ITEM_HOLD_DAY, ITEM_RAZOR_CLAW, SPECIES_SNEASLER}},
|
||||
#endif
|
||||
};
|
||||
|
@ -550,6 +550,22 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] =
|
||||
[ITEM_CHIPPED_POT] = gItemEffect_EvoItem,
|
||||
[ITEM_GALARICA_CUFF] = gItemEffect_EvoItem,
|
||||
[ITEM_GALARICA_WREATH] = gItemEffect_EvoItem,
|
||||
[ITEM_DRAGON_SCALE] = gItemEffect_EvoItem,
|
||||
[ITEM_UPGRADE] = gItemEffect_EvoItem,
|
||||
[ITEM_PROTECTOR] = gItemEffect_EvoItem,
|
||||
[ITEM_ELECTIRIZER] = gItemEffect_EvoItem,
|
||||
[ITEM_MAGMARIZER] = gItemEffect_EvoItem,
|
||||
[ITEM_DUBIOUS_DISC] = gItemEffect_EvoItem,
|
||||
[ITEM_REAPER_CLOTH] = gItemEffect_EvoItem,
|
||||
[ITEM_PRISM_SCALE] = gItemEffect_EvoItem,
|
||||
[ITEM_WHIPPED_DREAM] = gItemEffect_EvoItem,
|
||||
[ITEM_SACHET] = gItemEffect_EvoItem,
|
||||
[ITEM_OVAL_STONE] = gItemEffect_EvoItem,
|
||||
[ITEM_DEEP_SEA_SCALE] = gItemEffect_EvoItem,
|
||||
[ITEM_DEEP_SEA_TOOTH] = gItemEffect_EvoItem,
|
||||
[ITEM_METAL_COAT] = gItemEffect_EvoItem,
|
||||
[ITEM_KINGS_ROCK] = gItemEffect_EvoItem,
|
||||
[ITEM_RAZOR_CLAW] = gItemEffect_EvoItem,
|
||||
[ITEM_AUSPICIOUS_ARMOR] = gItemEffect_EvoItem,
|
||||
[ITEM_MALICIOUS_ARMOR] = gItemEffect_EvoItem,
|
||||
[ITEM_SCROLL_OF_DARKNESS] = gItemEffect_EvoItem,
|
||||
|
37
src/debug.c
37
src/debug.c
@ -57,6 +57,7 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/weather.h"
|
||||
#include "save.h"
|
||||
|
||||
#if DEBUG_OVERWORLD_MENU == TRUE
|
||||
// *******************************
|
||||
@ -292,6 +293,7 @@ extern u8 Debug_ShowFieldMessageStringVar4[];
|
||||
extern u8 Debug_CheatStart[];
|
||||
extern u8 PlayersHouse_2F_EventScript_SetWallClock[];
|
||||
extern u8 PlayersHouse_2F_EventScript_CheckWallClock[];
|
||||
extern u8 Debug_CheckSaveBlock[];
|
||||
|
||||
#include "data/map_group_count.h"
|
||||
|
||||
@ -1165,18 +1167,35 @@ static void DebugAction_Util_PoisonMons(u8 taskId)
|
||||
PlaySE(SE_FIELD_POISON);
|
||||
}
|
||||
|
||||
void CheckSaveBlock1Size(void)
|
||||
{
|
||||
u32 currSb1Size = sizeof(struct SaveBlock1);
|
||||
u32 maxSb1Size = SECTOR_DATA_SIZE * (SECTOR_ID_SAVEBLOCK1_END - SECTOR_ID_SAVEBLOCK1_START + 1);
|
||||
ConvertIntToDecimalStringN(gStringVar1, currSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
ConvertIntToDecimalStringN(gStringVar2, maxSb1Size, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
}
|
||||
|
||||
void CheckSaveBlock2Size(void)
|
||||
{
|
||||
u32 currSb2Size = (sizeof(struct SaveBlock2));
|
||||
u32 maxSb2Size = SECTOR_DATA_SIZE;
|
||||
ConvertIntToDecimalStringN(gStringVar1, currSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
ConvertIntToDecimalStringN(gStringVar2, maxSb2Size, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
}
|
||||
|
||||
void CheckPokemonStorageSize(void)
|
||||
{
|
||||
u32 currPkmnStorageSize = sizeof(struct PokemonStorage);
|
||||
u32 maxPkmnStorageSize = SECTOR_DATA_SIZE * (SECTOR_ID_PKMN_STORAGE_END - SECTOR_ID_PKMN_STORAGE_START + 1);
|
||||
ConvertIntToDecimalStringN(gStringVar1, currPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
ConvertIntToDecimalStringN(gStringVar2, maxPkmnStorageSize, STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
}
|
||||
|
||||
static void DebugAction_Util_CheckSaveBlock(u8 taskId)
|
||||
{
|
||||
static const u8 sDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes.");
|
||||
|
||||
ConvertIntToDecimalStringN(gStringVar1, sizeof(struct SaveBlock1), STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
ConvertIntToDecimalStringN(gStringVar2, sizeof(struct SaveBlock2), STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6);
|
||||
StringExpandPlaceholders(gStringVar4, sDebugText_SaveBlockSize);
|
||||
|
||||
Debug_DestroyMenu_Full(taskId);
|
||||
LockPlayerFieldControls();
|
||||
ScriptContext_SetupScript(Debug_ShowFieldMessageStringVar4);
|
||||
ScriptContext_SetupScript(Debug_CheckSaveBlock);
|
||||
}
|
||||
|
||||
static const u8 sWeatherNames[22][24] = {
|
||||
@ -2758,7 +2777,7 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu
|
||||
|
||||
static void DebugAction_Give_MaxMoney(u8 taskId)
|
||||
{
|
||||
SetMoney(&gSaveBlock1Ptr->money, 999999);
|
||||
SetMoney(&gSaveBlock1Ptr->money, MAX_MONEY);
|
||||
}
|
||||
|
||||
static void DebugAction_Give_MaxCoins(u8 taskId)
|
||||
|
@ -10,8 +10,6 @@
|
||||
#include "strings.h"
|
||||
#include "decompress.h"
|
||||
|
||||
#define MAX_MONEY 999999
|
||||
|
||||
EWRAM_DATA static u8 sMoneyBoxWindowId = 0;
|
||||
EWRAM_DATA static u8 sMoneyLabelSpriteId = 0;
|
||||
|
||||
|
@ -6598,6 +6598,14 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EVO_ITEM_HOLD:
|
||||
if (heldItem == gEvolutionTable[species][i].param)
|
||||
{
|
||||
heldItem = 0;
|
||||
SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem);
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -6647,6 +6655,11 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s
|
||||
if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && gEvolutionTable[species][i].param == evolutionItem)
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
break;
|
||||
case EVO_ITEM_DAY:
|
||||
RtcCalcLocalTime();
|
||||
if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && gEvolutionTable[species][i].param == evolutionItem)
|
||||
targetSpecies = gEvolutionTable[species][i].targetSpecies;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -402,7 +402,7 @@ const void *RandomElementArray(enum RandomTag tag, const void *array, size_t siz
|
||||
|
||||
if (turn && turn->rng.tag == tag)
|
||||
{
|
||||
u32 element;
|
||||
u32 element = 0;
|
||||
for (index = 0; index < count; index++)
|
||||
{
|
||||
memcpy(&element, (const u8 *)array + size * index, size);
|
||||
|
Loading…
Reference in New Issue
Block a user