Bugfixing

Removed another RNG inconsistency where a 100% accurate move could still miss 1% of the time

Fixed attack calculation
This commit is contained in:
RedstonewolfX 2024-09-08 19:08:21 -04:00
parent 186d6f906e
commit 590016218c
3 changed files with 8 additions and 7 deletions

View File

@ -1852,8 +1852,7 @@ export function logShop(scene: BattleScene, floor: integer = scene.currentBattle
* @param floor The wave index to write to. Defaults to the current floor. * @param floor The wave index to write to. Defaults to the current floor.
*/ */
export function logTrainer(scene: BattleScene, floor: integer = scene.currentBattle.waveIndex) { export function logTrainer(scene: BattleScene, floor: integer = scene.currentBattle.waveIndex) {
var drpd: DRPD = JSON.parse(localStorage.getItem(getLogID(scene))!) as DRPD; var drpd: DRPD = getDRPD(scene)
drpd = updateLog(drpd);
console.log(`Logging trainer: ${scene.currentBattle.trainer!.getTitleOnly()} ${scene.currentBattle.trainer!.getNameOnly()}`) console.log(`Logging trainer: ${scene.currentBattle.trainer!.getTitleOnly()} ${scene.currentBattle.trainer!.getNameOnly()}`)
var wv: Wave = getWave(drpd, floor, scene) var wv: Wave = getWave(drpd, floor, scene)
var t: LogTrainerData = exportTrainer(scene.currentBattle.trainer!) var t: LogTrainerData = exportTrainer(scene.currentBattle.trainer!)

View File

@ -385,7 +385,7 @@ export class MoveEffectPhase extends PokemonPhase {
} }
const accuracyMultiplier = user.getAccuracyMultiplier(target, this.move.getMove()); const accuracyMultiplier = user.getAccuracyMultiplier(target, this.move.getMove());
const rand = user.randSeedInt(100, 1, "Accuracy roll"); const rand = user.randSeedInt(100, undefined, "Accuracy roll");
return rand < (moveAccuracy * accuracyMultiplier); return rand < (moveAccuracy * accuracyMultiplier);
} }

View File

@ -330,6 +330,7 @@ export default class FightUiHandler extends UiHandler {
var dmgHigh = 0; var dmgHigh = 0;
var dmgLow = 0; var dmgLow = 0;
var out = target.apply(user, move.getMove(), true) as AttackData var out = target.apply(user, move.getMove(), true) as AttackData
//console.log(out)
dmgHigh = out.damageHigh; dmgHigh = out.damageHigh;
dmgLow = out.damageLow; dmgLow = out.damageLow;
var minHits = 1 var minHits = 1
@ -369,8 +370,8 @@ export default class FightUiHandler extends UiHandler {
maxHits += h[i].getStackCount() maxHits += h[i].getStackCount()
} }
} }
dmgLow = out[0] * minHits dmgLow = dmgLow * minHits
dmgHigh = out[1] * maxHits dmgHigh = dmgHigh * maxHits
var qSuffix = "" var qSuffix = ""
if (target.isBoss()) { if (target.isBoss()) {
var bossSegs = (target as EnemyPokemon).bossSegments var bossSegs = (target as EnemyPokemon).bossSegments
@ -378,8 +379,8 @@ export default class FightUiHandler extends UiHandler {
//dmgHigh /= bossSegs //dmgHigh /= bossSegs
//qSuffix = "?" //qSuffix = "?"
} }
var dmgLowP = Math.round((dmgLow)/target.getMaxHp()) var dmgLowP = Math.round((dmgLow)/target.getMaxHp() * 100)
var dmgHighP = Math.round((dmgHigh)/target.getMaxHp()) var dmgHighP = Math.round((dmgHigh)/target.getMaxHp() * 100)
/* /*
if (user.hasAbility(Abilities.PARENTAL_BOND)) { if (user.hasAbility(Abilities.PARENTAL_BOND)) {
// Second hit deals 0.25x damage // Second hit deals 0.25x damage
@ -394,6 +395,7 @@ export default class FightUiHandler extends UiHandler {
var percentChance = Utils.rangemap(target.hp, dmgLow, dmgHigh, 0, 1) var percentChance = Utils.rangemap(target.hp, dmgLow, dmgHigh, 0, 1)
koText = " (" + Math.round(percentChance * 100) + "% KO)" koText = " (" + Math.round(percentChance * 100) + "% KO)"
} }
//console.log(target.getMoveEffectiveness(user, move.getMove(), false, true) + "x - " + ((dmgLowP == dmgHighP) ? (dmgLowP + "%" + qSuffix) : (dmgLowP + "%-" + dmgHighP + "%" + qSuffix)) + koText)
if (target.getMoveEffectiveness(user, move.getMove(), false, true) == undefined) { if (target.getMoveEffectiveness(user, move.getMove(), false, true) == undefined) {
return "---" return "---"
} }