Adjusted AI calcs for Triple Kick Effect (#5127)
* Adjusted AI calcs for Triple Kick Effect * use strikeCount * fix compile
This commit is contained in:
parent
77afb01477
commit
527cc33e0d
@ -577,13 +577,13 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u
|
||||
if (critChanceIndex > 1) // Consider crit damage only if a move has at least +2 crit chance
|
||||
{
|
||||
s32 nonCritDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, FALSE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
effectivenessMultiplier, weather, FALSE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
s32 critDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, TRUE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
effectivenessMultiplier, weather, TRUE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
|
||||
u32 critOdds = GetCritHitOdds(critChanceIndex);
|
||||
// With critOdds getting closer to 1, dmg gets closer to critDmg.
|
||||
@ -596,20 +596,33 @@ struct SimulatedDamage AI_CalcDamage(u32 move, u32 battlerAtk, u32 battlerDef, u
|
||||
else if (critChanceIndex == -2) // Guaranteed critical
|
||||
{
|
||||
s32 critDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, TRUE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
effectivenessMultiplier, weather, TRUE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
|
||||
simDamage.expected = GetDamageByRollType(critDmg, rollType);
|
||||
simDamage.minimum = LowestRollDmg(critDmg);
|
||||
}
|
||||
else
|
||||
{
|
||||
s32 nonCritDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, FALSE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
|
||||
s32 nonCritDmg = 0;
|
||||
if (gMovesInfo[move].effect == EFFECT_TRIPLE_KICK)
|
||||
{
|
||||
for (gMultiHitCounter = gMovesInfo[move].strikeCount; gMultiHitCounter > 0; gMultiHitCounter--) // The global is used to simulate actual damage done
|
||||
{
|
||||
nonCritDmg += CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, FALSE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
nonCritDmg = CalculateMoveDamageVars(move, battlerAtk, battlerDef, moveType, fixedBasePower,
|
||||
effectivenessMultiplier, weather, FALSE,
|
||||
aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef],
|
||||
aiData->abilities[battlerAtk], aiData->abilities[battlerDef]);
|
||||
}
|
||||
simDamage.expected = GetDamageByRollType(nonCritDmg, rollType);
|
||||
simDamage.minimum = LowestRollDmg(nonCritDmg);
|
||||
}
|
||||
|
||||
@ -8898,10 +8898,7 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3
|
||||
basePower = gBattleStruct->presentBasePower;
|
||||
break;
|
||||
case EFFECT_TRIPLE_KICK:
|
||||
if (gMultiHitCounter == 0) // Calc damage with max BP for move consideration
|
||||
basePower *= 6;
|
||||
else
|
||||
basePower *= 1 + gMovesInfo[move].strikeCount - gMultiHitCounter;
|
||||
basePower *= 1 + gMovesInfo[move].strikeCount - gMultiHitCounter;
|
||||
break;
|
||||
case EFFECT_SPIT_UP:
|
||||
basePower = 100 * gDisableStructs[battlerAtk].stockpileCounter;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user