Fix: skills before spirit stance, Rending Blow priority reorder
Priority order now: 1. Items 2. Cure 3. Buffs 4. Debuffs 5. Weapon skills (BEFORE spirit stance - fixes Rending Blow never firing) - Rending Blow first (AoE clear) - Shatter Strike second (needs Penetrated Armor) - Great Cleave last (single target, bosses only) 6. Spirit Stance (only if OC didn't get spent on skills) 7. Damage spells 8. Channeling kickstart 9. Basic attack
This commit is contained in:
parent
39ad28007c
commit
eb5f99dbfb
3 changed files with 48 additions and 48 deletions
|
|
@ -982,35 +982,35 @@ function strategyAdept() {
|
|||
}
|
||||
}
|
||||
|
||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 6. Weapon skills only at OC thresholds with specific conditions
|
||||
// (checked regardless of spirit stance — if stance failed due to low SP,
|
||||
// still try to use the OC on skills)
|
||||
const askillOC2 = CFG.skillOC || 80;
|
||||
if (STATE.oc >= askillOC2) {
|
||||
// Great Cleave: boss/rare fights only
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies
|
||||
// 5. Weapon skills — before spirit stance, so we don't burn OC on spirit
|
||||
// and miss the skill window. This is the highest-value use of OC.
|
||||
const skillOC_N = CFG.skillOC || 80;
|
||||
if (STATE.oc >= skillOC_N) {
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies (highest priority in Grindfest)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Rending Blow')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Rending Blow', target: t };
|
||||
}
|
||||
// Shatter Strike: AoE stun vs 5+ enemies (needs Penetrated Armor from Rending Blow)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Shatter Strike')) {
|
||||
// Check if at least one monster has Penetrated Armor
|
||||
const hasArmorBreak = STATE.monsters.some((m, i) => checkMonsterDebuff(i, 'penetrated_armor'));
|
||||
if (hasArmorBreak) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Shatter Strike', target: t };
|
||||
}
|
||||
}
|
||||
// Great Cleave: boss/rare fights only (single target, lower priority than AoE)
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
if (STATE.sp < 0.03 && STATE.spiritStance)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 7. Damage spells
|
||||
const dmg = CFG.useAttackSpells ? getBestDamageSpell() : null;
|
||||
|
|
|
|||
|
|
@ -982,35 +982,35 @@ function strategyAdept() {
|
|||
}
|
||||
}
|
||||
|
||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 6. Weapon skills only at OC thresholds with specific conditions
|
||||
// (checked regardless of spirit stance — if stance failed due to low SP,
|
||||
// still try to use the OC on skills)
|
||||
const askillOC2 = CFG.skillOC || 80;
|
||||
if (STATE.oc >= askillOC2) {
|
||||
// Great Cleave: boss/rare fights only
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies
|
||||
// 5. Weapon skills — before spirit stance, so we don't burn OC on spirit
|
||||
// and miss the skill window. This is the highest-value use of OC.
|
||||
const skillOC_N = CFG.skillOC || 80;
|
||||
if (STATE.oc >= skillOC_N) {
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies (highest priority in Grindfest)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Rending Blow')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Rending Blow', target: t };
|
||||
}
|
||||
// Shatter Strike: AoE stun vs 5+ enemies (needs Penetrated Armor from Rending Blow)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Shatter Strike')) {
|
||||
// Check if at least one monster has Penetrated Armor
|
||||
const hasArmorBreak = STATE.monsters.some((m, i) => checkMonsterDebuff(i, 'penetrated_armor'));
|
||||
if (hasArmorBreak) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Shatter Strike', target: t };
|
||||
}
|
||||
}
|
||||
// Great Cleave: boss/rare fights only (single target, lower priority than AoE)
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
if (STATE.sp < 0.03 && STATE.spiritStance)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 7. Damage spells
|
||||
const dmg = CFG.useAttackSpells ? getBestDamageSpell() : null;
|
||||
|
|
|
|||
|
|
@ -339,35 +339,35 @@ function strategyAdept() {
|
|||
}
|
||||
}
|
||||
|
||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 6. Weapon skills only at OC thresholds with specific conditions
|
||||
// (checked regardless of spirit stance — if stance failed due to low SP,
|
||||
// still try to use the OC on skills)
|
||||
const askillOC2 = CFG.skillOC || 80;
|
||||
if (STATE.oc >= askillOC2) {
|
||||
// Great Cleave: boss/rare fights only
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies
|
||||
// 5. Weapon skills — before spirit stance, so we don't burn OC on spirit
|
||||
// and miss the skill window. This is the highest-value use of OC.
|
||||
const skillOC_N = CFG.skillOC || 80;
|
||||
if (STATE.oc >= skillOC_N) {
|
||||
// Rending Blow: AoE armor pen vs 5+ enemies (highest priority in Grindfest)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Rending Blow')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Rending Blow', target: t };
|
||||
}
|
||||
// Shatter Strike: AoE stun vs 5+ enemies (needs Penetrated Armor from Rending Blow)
|
||||
if (STATE.monsters.length >= 5 && STATE.skillsKnown.includes('Shatter Strike')) {
|
||||
// Check if at least one monster has Penetrated Armor
|
||||
const hasArmorBreak = STATE.monsters.some((m, i) => checkMonsterDebuff(i, 'penetrated_armor'));
|
||||
if (hasArmorBreak) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Shatter Strike', target: t };
|
||||
}
|
||||
}
|
||||
// Great Cleave: boss/rare fights only (single target, lower priority than AoE)
|
||||
if (anyRareMonster() && STATE.skillsKnown.includes('Great Cleave')) {
|
||||
const t = findStrongestMonster();
|
||||
if (t >= 0) return { type: 'skill', name: 'Great Cleave', target: t };
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
||||
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||
return { type: 'toggle_spirit' };
|
||||
if (STATE.sp < 0.03 && STATE.spiritStance)
|
||||
return { type: 'toggle_spirit' };
|
||||
|
||||
// 7. Damage spells
|
||||
const dmg = CFG.useAttackSpells ? getBestDamageSpell() : null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue