mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-17 12:07:38 +01:00
Sort out ohko moves
This commit is contained in:
parent
90442ffbc2
commit
41f0c0acb5
@ -8854,66 +8854,54 @@ static void Cmd_setlightscreen(void)
|
||||
|
||||
static void Cmd_tryKO(void)
|
||||
{
|
||||
u8 holdEffect, param;
|
||||
|
||||
if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
|
||||
param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
|
||||
param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
|
||||
}
|
||||
bool32 lands = FALSE;
|
||||
u32 holdEffect = GetBattlerHoldEffect(gBattlerTarget, TRUE);
|
||||
|
||||
gPotentialItemEffectBattler = gBattlerTarget;
|
||||
|
||||
if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
|
||||
if (holdEffect == HOLD_EFFECT_FOCUS_BAND
|
||||
&& (Random() % 100) < GetBattlerHoldEffectParam(gBattlerTarget))
|
||||
{
|
||||
RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_FOCUS_BAND);
|
||||
gSpecialStatuses[gBattlerTarget].focusBanded = 1;
|
||||
RecordItemEffectBattle(gBattlerTarget, holdEffect);
|
||||
}
|
||||
else if (holdEffect == HOLD_EFFECT_FOCUS_SASH && BATTLER_MAX_HP(gBattlerTarget))
|
||||
{
|
||||
gSpecialStatuses[gBattlerTarget].focusSashed = 1;
|
||||
RecordItemEffectBattle(gBattlerTarget, holdEffect);
|
||||
}
|
||||
|
||||
if (gBattleMons[gBattlerTarget].ability == ABILITY_STURDY)
|
||||
if (GetBattlerAbility(gBattlerTarget) == ABILITY_STURDY)
|
||||
{
|
||||
gMoveResultFlags |= MOVE_RESULT_MISSED;
|
||||
gLastUsedAbility = ABILITY_STURDY;
|
||||
gBattlescriptCurrInstr = BattleScript_SturdyPreventsOHKO;
|
||||
RecordAbilityBattle(gBattlerTarget, ABILITY_STURDY);
|
||||
gBattlerAbility = gBattlerTarget;
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 chance;
|
||||
if (!(gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS))
|
||||
{
|
||||
chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
|
||||
if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
|
||||
chance = TRUE;
|
||||
else
|
||||
chance = FALSE;
|
||||
}
|
||||
else if (gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker
|
||||
if ((((gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS)
|
||||
&& gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker)
|
||||
|| GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD
|
||||
|| GetBattlerAbility(gBattlerTarget) == ABILITY_NO_GUARD)
|
||||
&& gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
|
||||
{
|
||||
chance = TRUE;
|
||||
lands = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
|
||||
if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
|
||||
chance = TRUE;
|
||||
else
|
||||
chance = FALSE;
|
||||
u16 odds = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
|
||||
if (Random() % 100 + 1 < odds && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
|
||||
lands = TRUE;
|
||||
}
|
||||
if (chance)
|
||||
|
||||
if (lands)
|
||||
{
|
||||
if (gProtectStructs[gBattlerTarget].endured)
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
|
||||
gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
|
||||
}
|
||||
else if (gSpecialStatuses[gBattlerTarget].focusBanded)
|
||||
else if (gSpecialStatuses[gBattlerTarget].focusBanded || gSpecialStatuses[gBattlerTarget].focusSashed)
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
|
||||
gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
|
||||
|
Loading…
Reference in New Issue
Block a user