Spirit gems: use whenever available, no SP threshold
Spirit gems now fire whenever one is slotted regardless of SP level. This keeps SP constantly topped up for: - Spark of Life (costs 50% SP to trigger) - Manual Spirit Stance (costs 1 SP + 10% OC per round) Removed the old SP < 30% threshold check.
This commit is contained in:
parent
cdd0fe5984
commit
a90dd47ec0
3 changed files with 33 additions and 42 deletions
|
|
@ -863,16 +863,15 @@ function strategyNovice() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Mana/spirit items — AFTER buffs, so we don't waste a potion
|
// 4. Mana/spirit items — AFTER buffs
|
||||||
// before casting spells
|
|
||||||
if (STATE.mp < CFG.manaGemMP) {
|
if (STATE.mp < CFG.manaGemMP) {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever we have one, regardless of SP
|
||||||
const gem = hasUsableGem('spirit');
|
// Keeps SP topped for Spirit Stance and Spark of Life (50% cost)
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
const spiritItem = hasUsableGem('spirit');
|
||||||
}
|
if (spiritItem) return { type: 'item', id: spiritItem.id, selfTarget: true };
|
||||||
|
|
||||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
// 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)
|
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||||
|
|
@ -978,10 +977,9 @@ function strategyAdept() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available (tops SP for Spark + Stance)
|
||||||
const gem = hasUsableGem('spirit');
|
const aspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (aspiritItem) return { type: 'item', id: aspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
||||||
// In random mob fights, just attack through them
|
// In random mob fights, just attack through them
|
||||||
|
|
@ -1104,10 +1102,9 @@ function strategyVeteran() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available
|
||||||
const gem = hasUsableGem('spirit');
|
const vspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (vspiritItem) return { type: 'item', id: vspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss)
|
// 4. Debuffs — only on important fights (rare/boss)
|
||||||
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
||||||
|
|
|
||||||
|
|
@ -863,16 +863,15 @@ function strategyNovice() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Mana/spirit items — AFTER buffs, so we don't waste a potion
|
// 4. Mana/spirit items — AFTER buffs
|
||||||
// before casting spells
|
|
||||||
if (STATE.mp < CFG.manaGemMP) {
|
if (STATE.mp < CFG.manaGemMP) {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever we have one, regardless of SP
|
||||||
const gem = hasUsableGem('spirit');
|
// Keeps SP topped for Spirit Stance and Spark of Life (50% cost)
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
const spiritItem = hasUsableGem('spirit');
|
||||||
}
|
if (spiritItem) return { type: 'item', id: spiritItem.id, selfTarget: true };
|
||||||
|
|
||||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
// 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)
|
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||||
|
|
@ -978,10 +977,9 @@ function strategyAdept() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available (tops SP for Spark + Stance)
|
||||||
const gem = hasUsableGem('spirit');
|
const aspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (aspiritItem) return { type: 'item', id: aspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
||||||
// In random mob fights, just attack through them
|
// In random mob fights, just attack through them
|
||||||
|
|
@ -1104,10 +1102,9 @@ function strategyVeteran() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available
|
||||||
const gem = hasUsableGem('spirit');
|
const vspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (vspiritItem) return { type: 'item', id: vspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss)
|
// 4. Debuffs — only on important fights (rare/boss)
|
||||||
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
||||||
|
|
|
||||||
|
|
@ -218,16 +218,15 @@ function strategyNovice() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Mana/spirit items — AFTER buffs, so we don't waste a potion
|
// 4. Mana/spirit items — AFTER buffs
|
||||||
// before casting spells
|
|
||||||
if (STATE.mp < CFG.manaGemMP) {
|
if (STATE.mp < CFG.manaGemMP) {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever we have one, regardless of SP
|
||||||
const gem = hasUsableGem('spirit');
|
// Keeps SP topped for Spirit Stance and Spark of Life (50% cost)
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
const spiritItem = hasUsableGem('spirit');
|
||||||
}
|
if (spiritItem) return { type: 'item', id: spiritItem.id, selfTarget: true };
|
||||||
|
|
||||||
// 5. Spirit Stance at OC 60 — but only if we have SP to sustain it
|
// 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)
|
if (STATE.oc >= 60 && !STATE.spiritStance && STATE.sp > 0.10)
|
||||||
|
|
@ -333,10 +332,9 @@ function strategyAdept() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available (tops SP for Spark + Stance)
|
||||||
const gem = hasUsableGem('spirit');
|
const aspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (aspiritItem) return { type: 'item', id: aspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
// 4. Debuffs — only on important fights (rare/boss/ultimate monsters)
|
||||||
// In random mob fights, just attack through them
|
// In random mob fights, just attack through them
|
||||||
|
|
@ -459,10 +457,9 @@ function strategyVeteran() {
|
||||||
const gem = hasUsableGem('mana');
|
const gem = hasUsableGem('mana');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
||||||
}
|
}
|
||||||
if (STATE.sp < CFG.spiritPotionSP) {
|
// Spirit gem — use whenever available
|
||||||
const gem = hasUsableGem('spirit');
|
const vspiritItem = hasUsableGem('spirit');
|
||||||
if (gem) return { type: 'item', id: gem.id, selfTarget: true };
|
if (vspiritItem) return { type: 'item', id: vspiritItem.id, selfTarget: true };
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Debuffs — only on important fights (rare/boss)
|
// 4. Debuffs — only on important fights (rare/boss)
|
||||||
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
if (CFG.autoDebuff && STATE.mp > 0.2 && (anyRareMonster() || STATE.monsters.length <= 2)) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue