Why does my dungeon quest runner always declare total victory?
function runDungeonEncounter(hero, monsters) {
let journal = [];
let stamina = hero.baseStamina;
function processBattlePhase(turnIndex) {
if (turnIndex >= monsters.length) {
return { cleared: true, rating: 'S-Rank' };
}
const foe = monsters[turnIndex];
journal.push(`Facing ${foe.name} on floor ${turnIndex + 1}`);
try {
if (foe.trapPower > stamina) {
throw new Error(`Exhausted by ${foe.name}'s trap!`);
}
stamina -= foe.trapPower;
if (hero.attackPower < foe.defense) {
throw new RangeError(`Blocked by armor of ${foe.name}!`);
}
journal.push(`Defeated ${foe.name}!`);
return processBattlePhase(turnIndex + 1);
} catch (err) {
journal.push(`Defeat logged: ${err.message}`);
throw err;
} finally {
journal.push(`Wrapping turn ${turnIndex + 1}`);
return { cleared: true, rating: 'F-Rank', journal };
}
}
try {
return processBattlePhase(0);
} catch (err) {
return { cleared: false, reason: err.message, journal };
}
}
Reply with what is broken and how you would fix it.