hv-unified/src/knowledge-base.js
GaboGG 2107527c72 v0.13.0 - Heartseeker buff, channeling efficiency, 100% buff uptime
- Added Heartseeker to BUFF_PRIORITY (+25% phys dmg, +10% crit self-buff)
- Channeling consumption: mp_cost/(dur+1) scoring, no arbitrary cutoff
- KickstartChanneling: prefers highest-MP-cost buffs for better proc chance
- Raised minTurns on all buffs for 100% uptime (Haste/Protect/Regen/Absorb/Shadow 2->4, Spark 1->3)
- Updated knowledge-base spellUnlocks and milestones
- Removed <10 turn hard cutoff from channeling target selection
2026-07-26 11:25:40 -04:00

86 lines
3.8 KiB
JavaScript

// ═══════════════════════════════════════════════════════════════════════
// KNOWLEDGE BASE — game data, spell unlocks, milestones, stat advice
// ═══════════════════════════════════════════════════════════════════════
const KB = {
qualities: ['Crude', 'Fair', 'Average', 'Superior', 'Exquisite', 'Magnificent', 'Legendary', 'Peerless'],
// Stat priority per weapon type (order = importance)
statPriority: {
'1H': ['STR', 'END', 'DEX', 'AGI', 'WIS', 'INT'],
'2H': ['STR', 'DEX', 'END', 'AGI', 'WIS', 'INT'],
'DW': ['STR', 'DEX', 'AGI', 'END', 'WIS', 'INT'],
'Niten': ['STR', 'DEX', 'AGI', 'END', 'WIS', 'INT'],
'Staff': ['INT', 'WIS', 'END', 'AGI', 'DEX', 'STR'],
},
// Forum note: stats "barely even matter". These are rough guidelines, not precise.
statAllocation: {
novice: {
'1H': { STR: 30, END: 25, DEX: 20, AGI: 10, WIS: 10, INT: 5 },
'Staff': { INT: 30, WIS: 25, END: 25, AGI: 10, DEX: 5, STR: 5 },
},
adept: {
'1H': { STR: 35, END: 20, DEX: 20, AGI: 10, WIS: 10, INT: 5 },
'Staff': { INT: 35, WIS: 25, END: 20, AGI: 10, DEX: 5, STR: 5 },
},
veteran: {
'1H': { STR: 40, DEX: 25, END: 15, AGI: 10, WIS: 5, INT: 5 },
'Staff': { INT: 40, WIS: 30, END: 15, AGI: 10, DEX: 3, STR: 2 },
},
master: {
'1H': { STR: 45, DEX: 30, END: 10, AGI: 10, WIS: 3, INT: 2 },
'Staff': { INT: 45, WIS: 35, END: 10, AGI: 5, DEX: 3, STR: 2 },
},
},
// Spell unlock levels (forum-corrected: no MagNet)
spellUnlocks: [
{ lvl: 5, name: 'Cure' },
{ lvl: 10, name: 'Protection' },
{ lvl: 15, name: 'Fiery Blast' },
{ lvl: 25, name: 'Freeze' },
{ lvl: 50, name: 'Regen' },
{ lvl: 60, name: 'Haste' },
{ lvl: 70, name: 'Weaken' },
{ lvl: 130, name: 'Imperil' },
{ lvl: 140, name: 'Heartseeker' },
{ lvl: 175, name: 'Arcane Focus' },
{ lvl: 220, name: 'Full-Cure' },
],
// IW Potency rankings (forum research data)
iwPotency: {
'1H': ['Butcher', 'Fatality', 'Overpower'],
'2H': ['Overpower', 'Butcher', 'Fatality'],
'DW': ['Overpower', 'Fatality', 'Butcher'],
'Niten': ['Overpower', 'Fatality', 'Butcher'],
'Staff': ['Economizer', 'Aether', 'Juggernaut'],
},
// Difficulty EXP multipliers
difficultyMult: {
'Normal': 1,
'Hard': 2,
'Nightmare': 4,
'Hell': 7,
'Nintendo': 10,
'IWBTH': 15,
'PFUDOR': 20,
},
// Milestone tips
milestones: [
{ lvl: 1, tip: 'Do Arena "First Blood". Use items before spells.' },
{ lvl: 5, tip: 'Cure unlocked! Keep Health Draughts.' },
{ lvl: 10, tip: 'Protection unlocked — set as autocast.' },
{ lvl: 15, tip: 'First damage spell: Fiery Blast.' },
{ lvl: 50, tip: 'Regen + Adept tier. Train Adept Learner.' },
{ lvl: 60, tip: 'Haste unlocked — +50% action speed.' },
{ lvl: 70, tip: 'Weaken: -50% enemy damage. Use items, then Cure.' },
{ lvl: 100, tip: 'Level 100! T2 spells available. Accuracy target: 150%.' },
{ lvl: 130, tip: 'Imperil — THE most important debuff. Always cast first.' },
{ lvl: 140, tip: 'Heartseeker — +25% physical damage, +10% crit. Self-buff, priority over Arcane Focus for 2H.' },
{ lvl: 300, tip: 'Master tier. Optimize for speed. Run PFUDOR.' },
],
};