mirror of
https://github.com/pret/pokefirered.git
synced 2026-09-29 20:38:15 -05:00
more test fixes
This commit is contained in:
@@ -664,30 +664,6 @@ BattleScript_EffectShellTrap::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectMaxHp50Recoil::
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_SteelBeamMiss, ACC_CURR_MOVE
|
||||
call BattleScript_EffectHit_RetFromCritCalc
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_SteelBeamAfterSelfDamage
|
||||
call BattleScript_SteelBeamSelfDamage
|
||||
BattleScript_SteelBeamAfterSelfDamage::
|
||||
waitstate
|
||||
tryfaintmon BS_ATTACKER
|
||||
tryfaintmon BS_TARGET
|
||||
goto BattleScript_MoveEnd
|
||||
BattleScript_SteelBeamMiss::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
effectivenesssound
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_MoveEnd
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_MISSED
|
||||
call BattleScript_SteelBeamSelfDamage
|
||||
orhalfword gMoveResultFlags, MOVE_RESULT_MISSED
|
||||
goto BattleScript_SteelBeamAfterSelfDamage
|
||||
|
||||
BattleScript_SteelBeamSelfDamage::
|
||||
dmg_1_2_attackerhp
|
||||
healthbarupdate BS_ATTACKER
|
||||
@@ -3083,37 +3059,6 @@ BattleScript_AbsorbHealBlock::
|
||||
tryfaintmon BS_TARGET
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectExplosion_AnimDmgRet:
|
||||
jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionAnimRet
|
||||
call BattleScript_PreserveMissedBitDoMoveAnim
|
||||
goto BattleScript_ExplosionDmgRet
|
||||
BattleScript_ExplosionAnimRet:
|
||||
attackanimation
|
||||
waitanimation
|
||||
BattleScript_ExplosionDmgRet:
|
||||
movevaluescleanup
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
accuracycheck BattleScript_ExplosionMissedRet, ACC_CURR_MOVE
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
tryfaintmon BS_TARGET
|
||||
BattleScript_ExplosionAnimEndRet_Return:
|
||||
return
|
||||
BattleScript_ExplosionMissedRet:
|
||||
effectivenesssound
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_ExplosionAnimEndRet_Return
|
||||
|
||||
BattleScript_EffectExplosion::
|
||||
attackcanceler
|
||||
attackstring
|
||||
@@ -7495,6 +7440,7 @@ BattleScript_MoveEffectConfusion::
|
||||
BattleScript_MoveEffectRecoil::
|
||||
jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil
|
||||
jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_RecoilEnd
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_RecoilEnd
|
||||
BattleScript_DoRecoil::
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE | HITMARKER_IGNORE_DISGUISE
|
||||
healthbarupdate BS_ATTACKER
|
||||
@@ -7542,6 +7488,15 @@ BattleScript_AbilityPopUp:
|
||||
sethword sABILITY_OVERWRITE, 0
|
||||
return
|
||||
|
||||
BattleScript_AbilityPopUpScripting:
|
||||
.if B_ABILITY_POP_UP == TRUE
|
||||
showabilitypopup BS_SCRIPTING
|
||||
pause 40
|
||||
.endif
|
||||
recordability BS_SCRIPTING
|
||||
sethword sABILITY_OVERWRITE, 0
|
||||
return
|
||||
|
||||
BattleScript_SpeedBoostActivates::
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_SpeedBoostActivatesEnd
|
||||
call BattleScript_AbilityPopUp
|
||||
@@ -7744,6 +7699,12 @@ BattleScript_IntimidateLoop:
|
||||
jumpiftargetally BattleScript_IntimidateLoopIncrement
|
||||
jumpifabsent BS_TARGET, BattleScript_IntimidateLoopIncrement
|
||||
jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateLoopIncrement
|
||||
.if B_UPDATED_INTIMIDATE >= GEN_8 @These abilties specifically prevent just intimidate, without blocking stat decreases
|
||||
jumpifability BS_TARGET, ABILITY_INNER_FOCUS, BattleScript_IntimidatePrevented
|
||||
jumpifability BS_TARGET, ABILITY_SCRAPPY, BattleScript_IntimidatePrevented
|
||||
jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_IntimidatePrevented
|
||||
jumpifability BS_TARGET, ABILITY_OBLIVIOUS, BattleScript_IntimidatePrevented
|
||||
.endif
|
||||
jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_IntimidateInReverse
|
||||
BattleScript_IntimidateEffect:
|
||||
copybyte sBATTLER, gBattlerAttacker
|
||||
@@ -7768,6 +7729,12 @@ BattleScript_IntimidateEnd:
|
||||
pause B_WAIT_TIME_MED
|
||||
end3
|
||||
|
||||
BattleScript_IntimidatePrevented:
|
||||
copybyte sBATTLER, gBattlerTarget
|
||||
call BattleScript_AbilityPopUp
|
||||
printstring STRINGID_PKMNPREVENTSSTATLOSSWITH
|
||||
goto BattleScript_IntimidateEffect_WaitString
|
||||
|
||||
BattleScript_IntimidateWontDecrease:
|
||||
printstring STRINGID_STATSWONTDECREASE
|
||||
goto BattleScript_IntimidateEffect_WaitString
|
||||
@@ -8075,7 +8042,7 @@ BattleScript_SturdyPreventsOHKO::
|
||||
|
||||
BattleScript_DampStopsExplosion::
|
||||
pause B_WAIT_TIME_SHORT
|
||||
call BattleScript_AbilityPopUpTarget
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
printstring STRINGID_PKMNPREVENTSUSAGE
|
||||
pause B_WAIT_TIME_LONG
|
||||
moveendto MOVEEND_NEXT_TARGET
|
||||
@@ -8218,7 +8185,7 @@ BattleScript_DazzlingProtected::
|
||||
attackstring
|
||||
ppreduce
|
||||
pause B_WAIT_TIME_SHORT
|
||||
call BattleScript_AbilityPopUp
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
printstring STRINGID_POKEMONCANNOTUSEMOVE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
@@ -999,7 +999,7 @@ extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
|
||||
extern u32 gSideStatuses[NUM_BATTLE_SIDES];
|
||||
extern u32 gHitMarker;
|
||||
extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
|
||||
extern u8 gMoveResultFlags;
|
||||
extern u16 gMoveResultFlags;
|
||||
extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
|
||||
extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
|
||||
extern u8 gCurrentActionFuncId;
|
||||
|
||||
@@ -125,7 +125,6 @@ extern const u8 BattleScript_MoveEffectToxic[];
|
||||
extern const u8 BattleScript_MoveEffectPayDay[];
|
||||
extern const u8 BattleScript_MoveEffectWrap[];
|
||||
extern const u8 BattleScript_MoveEffectConfusion[];
|
||||
extern const u8 BattleScript_MoveEffectRecoil33[];
|
||||
extern const u8 BattleScript_DoRecoil33[];
|
||||
extern const u8 BattleScript_Recoil33End[];
|
||||
extern const u8 BattleScript_ItemSteal[];
|
||||
@@ -137,7 +136,6 @@ extern const u8 BattleScript_SandstreamActivates[];
|
||||
extern const u8 BattleScript_ShedSkinActivates[];
|
||||
extern const u8 BattleScript_DroughtActivates[];
|
||||
extern const u8 BattleScript_TookAttack[];
|
||||
extern const u8 BattleScript_SturdyPreventsOHKO[];
|
||||
extern const u8 BattleScript_DampStopsExplosion[];
|
||||
extern const u8 BattleScript_MoveHPDrain_PPLoss[];
|
||||
extern const u8 BattleScript_MoveHPDrain[];
|
||||
@@ -204,7 +202,6 @@ extern const u8 BattleScript_TooScaredToMove[];
|
||||
extern const u8 BattleScript_IntimidateActivates[];
|
||||
extern const u8 BattleScript_IgnoresWhileAsleep[];
|
||||
extern const u8 BattleScript_IgnoresAndHitsItself[];
|
||||
extern const u8 BattleScript_MoveEffectRecoil[];
|
||||
extern const u8 BattleScript_FlushMessageBox[];
|
||||
extern const u8 BattleScript_GhostBallDodge[];
|
||||
extern const u8 BattleScript_OldMan_Pokedude_CaughtMessage[];
|
||||
@@ -1238,7 +1235,6 @@ extern const u8 BattleScript_EffectClangorousSoul[];
|
||||
extern const u8 BattleScript_EffectSkyDrop[];
|
||||
extern const u8 BattleScript_EffectMeteorBeam[];
|
||||
extern const u8 BattleScript_EffectCourtChange[];
|
||||
extern const u8 BattleScript_EffectMaxHp50Recoil[];
|
||||
extern const u8 BattleScript_EffectExtremeEvoboost[];
|
||||
extern const u8 BattleScript_EffectHitSetRemoveTerrain[];
|
||||
extern const u8 BattleScript_EffectDarkVoid[];
|
||||
|
||||
@@ -663,6 +663,7 @@
|
||||
#define TIMER_64CLK 0x01
|
||||
#define TIMER_256CLK 0x02
|
||||
#define TIMER_1024CLK 0x03
|
||||
#define TIMER_COUNTUP 0x04
|
||||
#define TIMER_INTR_ENABLE 0x40
|
||||
#define TIMER_ENABLE 0x80
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ EWRAM_DATA u16 gLastResultingMoves[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u16 gLockedMoves[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gMoveResultFlags = 0;
|
||||
EWRAM_DATA u16 gMoveResultFlags = 0;
|
||||
EWRAM_DATA u32 gHitMarker = 0;
|
||||
static EWRAM_DATA u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
|
||||
@@ -2762,9 +2762,6 @@ void SwitchInClearSetData(u32 battler)
|
||||
// Reset G-Max Chi Strike boosts.
|
||||
gBattleStruct->bonusCritStages[battler] = 0;
|
||||
|
||||
// Reset G-Max Chi Strike boosts.
|
||||
gBattleStruct->bonusCritStages[battler] = 0;
|
||||
|
||||
// Reset Dynamax flags.
|
||||
UndoDynamax(battler);
|
||||
|
||||
@@ -3290,7 +3287,6 @@ static void DoBattleIntro(void)
|
||||
static void TryDoEventsBeforeFirstTurn(void)
|
||||
{
|
||||
s32 i, j;
|
||||
u8 effect = 0;
|
||||
|
||||
if (gBattleControllerExecFlags)
|
||||
return;
|
||||
@@ -4221,26 +4217,22 @@ s32 GetWhichBattlerFasterArgs(u32 battler1, u32 battler2, bool32 ignoreChosenMov
|
||||
// QUICK CLAW / CUSTAP - always first
|
||||
// LAGGING TAIL - always last
|
||||
// STALL - always last
|
||||
bool32 battler1HasQuickEffect = gProtectStructs[battler1].quickDraw || gProtectStructs[battler1].usedCustapBerry;
|
||||
bool32 battler2HasQuickEffect = gProtectStructs[battler2].quickDraw || gProtectStructs[battler2].usedCustapBerry;
|
||||
bool32 battler1HasStallingAbility = ability1 == ABILITY_STALL || (ability1 == ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler1]));
|
||||
bool32 battler2HasStallingAbility = ability2 == ABILITY_STALL || (ability2 == ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler2]));
|
||||
|
||||
if (gProtectStructs[battler1].quickDraw && !gProtectStructs[battler2].quickDraw)
|
||||
if (battler1HasQuickEffect && !battler2HasQuickEffect)
|
||||
strikesFirst = 1;
|
||||
else if (!gProtectStructs[battler1].quickDraw && gProtectStructs[battler2].quickDraw)
|
||||
strikesFirst = -1;
|
||||
else if (gProtectStructs[battler1].usedCustapBerry && !gProtectStructs[battler2].usedCustapBerry)
|
||||
strikesFirst = 1;
|
||||
else if (gProtectStructs[battler2].usedCustapBerry && !gProtectStructs[battler1].usedCustapBerry)
|
||||
else if (battler2HasQuickEffect && !battler1HasQuickEffect)
|
||||
strikesFirst = -1;
|
||||
else if (holdEffectBattler1 == HOLD_EFFECT_LAGGING_TAIL && holdEffectBattler2 != HOLD_EFFECT_LAGGING_TAIL)
|
||||
strikesFirst = -1;
|
||||
else if (holdEffectBattler2 == HOLD_EFFECT_LAGGING_TAIL && holdEffectBattler1 != HOLD_EFFECT_LAGGING_TAIL)
|
||||
strikesFirst = 1;
|
||||
else if (ability1 == ABILITY_STALL && ability2 != ABILITY_STALL)
|
||||
else if (battler1HasStallingAbility && !battler2HasStallingAbility)
|
||||
strikesFirst = -1;
|
||||
else if (ability2 == ABILITY_STALL && ability1 != ABILITY_STALL)
|
||||
strikesFirst = 1;
|
||||
else if (ability1 == ABILITY_MYCELIUM_MIGHT && ability2 != ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler1]))
|
||||
strikesFirst = -1;
|
||||
else if (ability2 == ABILITY_MYCELIUM_MIGHT && ability1 != ABILITY_MYCELIUM_MIGHT && IS_MOVE_STATUS(gChosenMoveByBattler[battler2]))
|
||||
else if (battler2HasStallingAbility && !battler1HasStallingAbility)
|
||||
strikesFirst = 1;
|
||||
else
|
||||
{
|
||||
|
||||
@@ -739,7 +739,7 @@ static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activat
|
||||
static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!");
|
||||
static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!");
|
||||
static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p");
|
||||
static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!");
|
||||
static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} gained strength\nfrom the fallen!");
|
||||
static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!");
|
||||
static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!");
|
||||
static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!");
|
||||
|
||||
@@ -342,7 +342,7 @@ static void ApplyExperienceMultipliers(s32 *expAmount, u8 expGetterMonId, u8 fai
|
||||
static bool8 CanBurnHitThaw(u16 move);
|
||||
static bool32 ChangeOrderTargetAfterAttacker(void);
|
||||
static void TryUpdateEvolutionTracker(u32 evolutionMethod, u32 upAmount, u16 usedMove);
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 isIntimidate);
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef);
|
||||
static bool32 CriticalCapture(u32 odds);
|
||||
|
||||
static void Cmd_attackcanceler(void);
|
||||
@@ -2086,6 +2086,9 @@ static void Cmd_adjustdamage(void)
|
||||
{
|
||||
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
|
||||
gLastUsedItem = gBattleMons[gBattlerTarget].item;
|
||||
gSpecialStatuses[gBattlerTarget].focusBanded = FALSE;
|
||||
gSpecialStatuses[gBattlerTarget].focusSashed = FALSE;
|
||||
|
||||
}
|
||||
else if (gSpecialStatuses[gBattlerTarget].sturdied)
|
||||
{
|
||||
@@ -2635,6 +2638,7 @@ static void Cmd_resultmessage(void)
|
||||
if (gSpecialStatuses[gBattlerTarget].berryReduced
|
||||
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
|
||||
{
|
||||
gBattleStruct->ateBerry[gBattlerTarget & BIT_SIDE] |= gBitTable[gBattlerPartyIndexes[gBattlerTarget]];
|
||||
gSpecialStatuses[gBattlerTarget].berryReduced = FALSE;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_PrintBerryReduceString;
|
||||
@@ -3938,7 +3942,7 @@ static void Cmd_tryfaintmon(void)
|
||||
const u8 *faintScript;
|
||||
|
||||
battler = GetBattlerForBattleScript(cmd->battler);
|
||||
if (cmd->isSpikes != FALSE)
|
||||
if (cmd->isSpikes != 0)
|
||||
{
|
||||
if (gHitMarker & HITMARKER_FAINTED(battler))
|
||||
{
|
||||
@@ -11534,8 +11538,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
|
||||
gBattlescriptCurrInstr = BattleScript_ButItFailed;
|
||||
return STAT_CHANGE_DIDNT_WORK;
|
||||
}
|
||||
else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET
|
||||
|| CanAbilityPreventStatLoss(battlerAbility, GetBattlerAbility(gBattlerAttacker) == ABILITY_INTIMIDATE))
|
||||
else if ((battlerHoldEffect == HOLD_EFFECT_CLEAR_AMULET || CanAbilityPreventStatLoss(battlerAbility))
|
||||
&& (!affectsUser || mirrorArmored) && !certain && gCurrentMove != MOVE_CURSE)
|
||||
{
|
||||
if (flags == STAT_CHANGE_ALLOW_PTR)
|
||||
@@ -15758,7 +15761,8 @@ bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler)
|
||||
if (move != MOVE_NONE && move != MOVE_UNAVAILABLE && move != MOVE_STRUGGLE
|
||||
&& !gMovesInfo[move].parentalBondBanned
|
||||
&& gMovesInfo[move].category != DAMAGE_CATEGORY_STATUS
|
||||
&& gMovesInfo[move].strikeCount < 2)
|
||||
&& gMovesInfo[move].strikeCount < 2
|
||||
&& gMovesInfo[move].effect != EFFECT_MULTI_HIT)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
@@ -15796,7 +15800,7 @@ static bool8 IsFinalStrikeEffect(u16 move)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate)
|
||||
static bool8 CanAbilityPreventStatLoss(u16 abilityDef)
|
||||
{
|
||||
switch (abilityDef)
|
||||
{
|
||||
@@ -15804,13 +15808,6 @@ static bool8 CanAbilityPreventStatLoss(u16 abilityDef, bool8 byIntimidate)
|
||||
case ABILITY_FULL_METAL_BODY:
|
||||
case ABILITY_WHITE_SMOKE:
|
||||
return TRUE;
|
||||
case ABILITY_INNER_FOCUS:
|
||||
case ABILITY_SCRAPPY:
|
||||
case ABILITY_OWN_TEMPO:
|
||||
case ABILITY_OBLIVIOUS:
|
||||
if (byIntimidate && (B_UPDATED_INTIMIDATE >= GEN_8))
|
||||
return TRUE;
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1714,7 +1714,7 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
||||
|
||||
[EFFECT_MAX_HP_50_RECOIL] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectMaxHp50Recoil,
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
},
|
||||
|
||||
[EFFECT_EXTREME_EVOBOOST] =
|
||||
|
||||
30
src/main.c
30
src/main.c
@@ -252,15 +252,35 @@ void SetMainCallback2(MainCallback callback)
|
||||
|
||||
void StartTimer1(void)
|
||||
{
|
||||
REG_TM1CNT_H = 0x80;
|
||||
if (HQ_RANDOM)
|
||||
{
|
||||
REG_TM2CNT_L = 0;
|
||||
REG_TM2CNT_H = TIMER_ENABLE | TIMER_COUNTUP;
|
||||
}
|
||||
|
||||
REG_TM1CNT_H = TIMER_ENABLE;
|
||||
}
|
||||
|
||||
void SeedRngAndSetTrainerId(void)
|
||||
{
|
||||
u16 val = REG_TM1CNT_L;
|
||||
SeedRng(val);
|
||||
REG_TM1CNT_H = 0;
|
||||
gTrainerId = val;
|
||||
u32 val;
|
||||
|
||||
if (HQ_RANDOM)
|
||||
{
|
||||
REG_TM1CNT_H = 0;
|
||||
REG_TM2CNT_H = 0;
|
||||
val = ((u32)REG_TM2CNT_L) << 16;
|
||||
val |= REG_TM1CNT_L;
|
||||
SeedRng(val);
|
||||
gTrainerId = Random();
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 val = REG_TM1CNT_L;
|
||||
SeedRng(val);
|
||||
REG_TM1CNT_H = 0;
|
||||
gTrainerId = val;
|
||||
}
|
||||
}
|
||||
|
||||
u16 GetGeneratedTrainerIdLower(void)
|
||||
|
||||
Reference in New Issue
Block a user