1676 lines
56 KiB
TypeScript
1676 lines
56 KiB
TypeScript
/**
|
||
* Diablo II v1.13c 7-Class Starter Profiles, Exclusive Signature Sets, and Stash Treasures.
|
||
*
|
||
* Implements Issue #379 specifications:
|
||
* - 7 Classes: Amazon (ama), Sorceress (sor), Necromancer (nec), Paladin (pal), Barbarian (bar), Druid (dru), Assassin (ass)
|
||
* - Exclusive Set on Body ONLY:
|
||
* - Amazon: M'avina's Battle Hymn (Diadem, Kraken Shell, Grand Matron Bow, Battle Gauntlets, Sharkskin Belt)
|
||
* - Sorceress: Tal Rasha's Wrappings (Death Mask, Lacquered Plate, Swirling Crystal, Mesh Belt, Amulet)
|
||
* - Necromancer: Trang-Oul's Avatar (Bone Visage, Chaos Armor, Cantor Trophy, Heavy Bracers, Troll Belt)
|
||
* - Paladin: Griswold's Legacy (Corona, Ornate Plate, Caduceus, Vortex Shield)
|
||
* - Barbarian: Immortal King (Avenger Guard, Sacred Armor, Ogre Maul, War Gauntlets, War Belt, War Boots)
|
||
* - Druid: Aldur's Watchtower (Hunter's Guise, Shadow Plate, Jagged Star, Battle Boots)
|
||
* - Assassin: Natalya's Odium (Grim Helm, Loricated Mail, Scissors Suwayyah, Mesh Boots)
|
||
* - Stash contains authentic Runes (Jah, Ber, Lo, etc.), Perfect & Flawless Gems/Skulls, and unique/magic/rare Jewels.
|
||
*/
|
||
|
||
import type { CharacterClassCode } from './classes.ts'
|
||
import type { EquipSlotId, GridPlacement, UiInventoryItem } from '../items/inventory-model.ts'
|
||
import type { CharacterAttributes } from './unit-types.ts'
|
||
import { getSocketableInfo } from '../items/gems-data.ts'
|
||
|
||
function buildSocketableStats(code: string): readonly { text: string; color: 'white' }[] {
|
||
const info = getSocketableInfo(code)
|
||
if (!info) return []
|
||
return [
|
||
{ text: '可镶嵌进有凹槽的装备', color: 'white' },
|
||
{ text: `武器: ${info.weaponsZh}`, color: 'white' },
|
||
{ text: `防具: ${info.armorZh}`, color: 'white' },
|
||
{ text: `头盔: ${info.helmsZh}`, color: 'white' },
|
||
{ text: `盾牌: ${info.shieldsZh}`, color: 'white' },
|
||
]
|
||
}
|
||
|
||
// -------------------------------------------------------------------------------------------------
|
||
// 1. CLASS EXCLUSIVE SET ITEMS (Body Only)
|
||
// -------------------------------------------------------------------------------------------------
|
||
|
||
const MAVINA_PIECES: readonly string[] = [
|
||
"马维娜的真实之眼 (M'avina's True Sight)",
|
||
"马维娜的拥抱 (M'avina's Embrace)",
|
||
"马维娜的施展 (M'avina's Caster)",
|
||
"马维娜的冰冷之握 (M'avina's Icy Clutch)",
|
||
"马维娜的原则 (M'avina's Tenet)",
|
||
]
|
||
const MAVINA_BONUSES = [
|
||
{ text: '+3 亚马逊技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+100 防御 (完整套装)', color: 'green' as const },
|
||
{ text: '+100 攻击准确率 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
{ text: '100% 更佳机会取得魔法装备 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const TAL_PIECES: readonly string[] = [
|
||
"塔·拉夏的守护 (Tal Rasha's Guardianship)",
|
||
"塔·拉夏的赫拉迪克纹章 (Tal Rasha's Horadric Crest)",
|
||
"塔·拉夏的判决 (Tal Rasha's Adjudication)",
|
||
"塔·拉夏的无睑之眼 (Tal Rasha's Lidless Eye)",
|
||
"塔·拉夏的织细衣服 (Tal Rasha's Fine-Spun Cloth)",
|
||
]
|
||
const TAL_BONUSES = [
|
||
{ text: '+3 法师技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 防御 (完整套装)', color: 'green' as const },
|
||
{ text: '+50 对远距离攻击的防御 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 生命 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const TRANG_PIECES: readonly string[] = [
|
||
"塔格奥之容 (Trang-Oul's Guise)",
|
||
"塔格奥之鳞 (Trang-Oul's Scales)",
|
||
"塔格奥之翼 (Trang-Oul's Wing)",
|
||
"塔格奥之爪 (Trang-Oul's Claws)",
|
||
"塔格奥之束带 (Trang-Oul's Girth)",
|
||
]
|
||
const TRANG_BONUSES = [
|
||
{ text: '+3 死灵法师技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+200 防御 (完整套装)', color: 'green' as const },
|
||
{ text: '+100 法力 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
{ text: '化身为吸血鬼巫妖形态 (完整套装)', color: 'green' as const },
|
||
{ text: '+18 火球 (完整套装)', color: 'green' as const },
|
||
{ text: '+13 火墙 (完整套装)', color: 'green' as const },
|
||
{ text: '+10 陨石 (完整套装)', color: 'green' as const },
|
||
{ text: '+3 支配火焰 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const GRIS_PIECES: readonly string[] = [
|
||
"格里斯瓦德的勇气 (Griswold's Valor)",
|
||
"格里斯瓦德之心 (Griswold's Heart)",
|
||
"格里斯瓦德的救赎 (Griswold's Redemption)",
|
||
"格里斯瓦德的荣耀 (Griswold's Honor)",
|
||
]
|
||
const GRIS_BONUSES = [
|
||
{ text: '+3 圣骑士技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+200 攻击准确率 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 生命 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
{ text: '+30% 快速再度攻击 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const IK_PIECES: readonly string[] = [
|
||
"不朽之王的意志 (Immortal King's Will)",
|
||
"不朽之王的灵魂牢笼 (Immortal King's Soul Cage)",
|
||
"不朽之王的点魂碎石者 (Immortal King's Stone Crusher)",
|
||
"不朽之王的熔炉 (Immortal King's Forge)",
|
||
"不朽之王的心腹 (Immortal King's Detail)",
|
||
"不朽之王之柱 (Immortal King's Pillar)",
|
||
]
|
||
const IK_BONUSES = [
|
||
{ text: '+3 野蛮人技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+450 攻击准确率 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 生命 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
{ text: '魔法伤害减少 10 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const ALDUR_PIECES: readonly string[] = [
|
||
"艾尔多的冷酷目光 (Aldur's Stony Gaze)",
|
||
"艾尔多的欺瞒 (Aldur's Deception)",
|
||
"艾尔多的律动 (Aldur's Rhythm)",
|
||
"艾尔多的成长 (Aldur's Advance)",
|
||
]
|
||
const ALDUR_BONUSES = [
|
||
{ text: '+3 德鲁伊技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+150% 额外攻击准确率 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 防御 (完整套装)', color: 'green' as const },
|
||
{ text: '+150 法力 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
const NAT_PIECES: readonly string[] = [
|
||
"娜塔亚的图腾 (Natalya's Totem)",
|
||
"娜塔亚的影子 (Natalya's Shadow)",
|
||
"娜塔亚的印记 (Natalya's Mark)",
|
||
"娜塔亚的灵魂 (Natalya's Soul)",
|
||
]
|
||
const NAT_BONUSES = [
|
||
{ text: '+3 刺客技能等级 (完整套装)', color: 'green' as const },
|
||
{ text: '+200 防御 (完整套装)', color: 'green' as const },
|
||
{ text: '所有抗性 +50 (完整套装)', color: 'green' as const },
|
||
{ text: '物理伤害减少 30% (完整套装)', color: 'green' as const },
|
||
{ text: '14% 每次命中偷取生命 (完整套装)', color: 'green' as const },
|
||
{ text: '14% 每次命中偷取法力 (完整套装)', color: 'green' as const },
|
||
]
|
||
|
||
export const CLASS_EXCLUSIVE_SETS: Record<CharacterClassCode, Readonly<Partial<Record<EquipSlotId, UiInventoryItem>>>> = {
|
||
ama: {
|
||
helm: {
|
||
id: 'set-mavina-helm',
|
||
code: 'ci3',
|
||
invFile: 'invci3',
|
||
invtransform: 'whit',
|
||
name: "M'avina's True Sight",
|
||
nameZh: "马维娜的真实之眼 (M'avina's True Sight)",
|
||
baseNameZh: '权冠 (Diadem)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 210,
|
||
durability: { current: 20, max: 20 },
|
||
reqLevel: 64,
|
||
stats: [
|
||
{ text: '+150 防御', color: 'blue' },
|
||
{ text: '+30% 快速再度攻击 (FHR)', color: 'blue' },
|
||
{ text: '法力回复速度提高 10%', color: 'blue' },
|
||
{ text: '+25 法力', color: 'blue' },
|
||
{ text: '+1 所有技能 (完整套装加成)', color: 'green' },
|
||
{ text: '+50% 额外攻击准确率 (完整套装加成)', color: 'green' },
|
||
{ text: '所有抗性 +25 (完整套装加成)', color: 'green' },
|
||
],
|
||
setPieces: MAVINA_PIECES,
|
||
setBonuses: MAVINA_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-mavina-armor',
|
||
code: 'uld',
|
||
invFile: 'invfld',
|
||
invtransform: 'whit',
|
||
name: "M'avina's Embrace",
|
||
nameZh: "马维娜的拥抱 (M'avina's Embrace)",
|
||
baseNameZh: '海妖壳甲 (Kraken Shell)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 1220,
|
||
durability: { current: 48, max: 48 },
|
||
reqLevel: 70,
|
||
reqStr: 122,
|
||
stats: [
|
||
{ text: '+350 防御', color: 'blue' },
|
||
{ text: '+2 亚马逊被动与魔法技能', color: 'blue' },
|
||
{ text: '需求 -30%', color: 'blue' },
|
||
{ text: '魔法伤害减少 12', color: 'blue' },
|
||
{ text: '+30% 快速再度攻击 (完整套装加成)', color: 'green' },
|
||
],
|
||
setPieces: MAVINA_PIECES,
|
||
setBonuses: MAVINA_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-mavina-bow',
|
||
code: 'amc',
|
||
invFile: 'invam2',
|
||
invtransform: 'whit',
|
||
name: "M'avina's Caster",
|
||
nameZh: "马维娜的施展 (M'avina's Caster)",
|
||
baseNameZh: '大院长的弓 (Grand Matron Bow)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 4,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '40 - 207',
|
||
speedText: '弓类 - 极快攻击速度 [40]',
|
||
reqLevel: 70,
|
||
reqStr: 108,
|
||
stats: [
|
||
{ text: '+188% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+40% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '发射魔法箭 (等级 1)', color: 'blue' },
|
||
{ text: '+50 攻击准确率', color: 'blue' },
|
||
{ text: '增加 114-377 魔法伤害 (完整套装加成)', color: 'green' },
|
||
{ text: '+2 亚马逊弓与十字弓技能 (完整套装加成)', color: 'green' },
|
||
],
|
||
setPieces: MAVINA_PIECES,
|
||
setBonuses: MAVINA_BONUSES,
|
||
},
|
||
gloves: {
|
||
id: 'set-mavina-gloves',
|
||
code: 'xtg',
|
||
invFile: 'invtgl',
|
||
invtransform: 'whit',
|
||
name: "M'avina's Icy Clutch",
|
||
nameZh: "马维娜的冰冷之握 (M'avina's Icy Clutch)",
|
||
baseNameZh: '战场手套 (Battle Gauntlets)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['gloves'],
|
||
defense: 98,
|
||
durability: { current: 18, max: 18 },
|
||
reqLevel: 32,
|
||
reqStr: 88,
|
||
stats: [
|
||
{ text: '+50 防御', color: 'blue' },
|
||
{ text: '+10 力量', color: 'blue' },
|
||
{ text: '+15 敏捷', color: 'blue' },
|
||
{ text: '增加 6-18 冰冷伤害 (持续 4 秒)', color: 'blue' },
|
||
{ text: '冻结目标时间减半', color: 'blue' },
|
||
{ text: '增加 131-252 冰冷伤害 (完整套装加成)', color: 'green' },
|
||
{ text: '+20% 冰冷技能伤害 (完整套装加成)', color: 'green' },
|
||
],
|
||
setPieces: MAVINA_PIECES,
|
||
setBonuses: MAVINA_BONUSES,
|
||
},
|
||
belt: {
|
||
id: 'set-mavina-belt',
|
||
code: 'zvb',
|
||
invFile: 'invvbl',
|
||
invtransform: 'whit',
|
||
name: "M'avina's Tenet",
|
||
nameZh: "马维娜的原则 (M'avina's Tenet)",
|
||
baseNameZh: '鲨皮腰带 (Sharkskin Belt)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 1,
|
||
allowedSlots: ['belt'],
|
||
defense: 86,
|
||
durability: { current: 14, max: 14 },
|
||
reqLevel: 45,
|
||
reqStr: 20,
|
||
stats: [
|
||
{ text: '+50 防御', color: 'blue' },
|
||
{ text: '+20% 高速跑步/行走 (FRW)', color: 'blue' },
|
||
{ text: '5% 每次命中偷取法力', color: 'blue' },
|
||
{ text: '+5 照亮范围', color: 'blue' },
|
||
{ text: '所有抗性 +25 (完整套装加成)', color: 'green' },
|
||
],
|
||
setPieces: MAVINA_PIECES,
|
||
setBonuses: MAVINA_BONUSES,
|
||
},
|
||
},
|
||
sor: {
|
||
helm: {
|
||
id: 'set-tal-helm',
|
||
code: 'xsk',
|
||
invFile: 'invmsk',
|
||
invtransform: 'dpur',
|
||
chrtransform: 'dpur',
|
||
name: "Tal Rasha's Horadric Crest",
|
||
nameZh: "塔·拉夏的赫拉迪克纹章 (Tal Rasha's Horadric Crest)",
|
||
baseNameZh: '死亡面具 (Death Mask)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 131,
|
||
durability: { current: 20, max: 20 },
|
||
reqLevel: 66,
|
||
reqStr: 55,
|
||
stats: [
|
||
{ text: '+45 防御', color: 'blue' },
|
||
{ text: '10% 每次命中偷取生命', color: 'blue' },
|
||
{ text: '10% 每次命中偷取法力', color: 'blue' },
|
||
{ text: '+60 生命', color: 'blue' },
|
||
{ text: '+30 法力', color: 'blue' },
|
||
{ text: '所有抗性 +15', color: 'blue' },
|
||
],
|
||
setPieces: TAL_PIECES,
|
||
setBonuses: TAL_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-tal-armor',
|
||
code: 'uth',
|
||
invFile: 'invgth',
|
||
invtransform: 'dpur',
|
||
chrtransform: 'dpur',
|
||
name: "Tal Rasha's Guardianship",
|
||
nameZh: "塔·拉夏的守护 (Tal Rasha's Guardianship)",
|
||
baseNameZh: '漆甲 (Lacquered Plate)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 941,
|
||
durability: { current: 55, max: 55 },
|
||
reqLevel: 71,
|
||
reqStr: 84,
|
||
stats: [
|
||
{ text: '+400 防御', color: 'blue' },
|
||
{ text: '抗寒 +40%', color: 'blue' },
|
||
{ text: '抗电 +40%', color: 'blue' },
|
||
{ text: '抗火 +40%', color: 'blue' },
|
||
{ text: '魔法伤害减少 15', color: 'blue' },
|
||
{ text: '88% 更佳机会取得魔法装备', color: 'blue' },
|
||
],
|
||
setPieces: TAL_PIECES,
|
||
setBonuses: TAL_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-tal-orb',
|
||
code: 'oba',
|
||
invFile: 'invob5',
|
||
invtransform: 'dpur',
|
||
chrtransform: 'dpur',
|
||
name: "Tal Rasha's Lidless Eye",
|
||
nameZh: "塔·拉夏的无睑之眼 (Tal Rasha's Lidless Eye)",
|
||
baseNameZh: '涡流水晶 (Swirling Crystal)',
|
||
quality: 'set',
|
||
invWidth: 1,
|
||
invHeight: 3,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '18 - 42',
|
||
durability: { current: 50, max: 50 },
|
||
speedText: '法球类 - 普通攻击速度',
|
||
reqLevel: 65,
|
||
stats: [
|
||
{ text: '+20% 快速施法速度 (FCR)', color: 'blue' },
|
||
{ text: '+2 支配火焰 (限法师)', color: 'blue' },
|
||
{ text: '+2 支配闪电 (限法师)', color: 'blue' },
|
||
{ text: '+2 支配冰冷 (限法师)', color: 'blue' },
|
||
{ text: '+57 生命', color: 'blue' },
|
||
{ text: '+77 法力', color: 'blue' },
|
||
{ text: '+10 精力', color: 'blue' },
|
||
],
|
||
setPieces: TAL_PIECES,
|
||
setBonuses: TAL_BONUSES,
|
||
},
|
||
belt: {
|
||
id: 'set-tal-belt',
|
||
code: 'zmb',
|
||
invFile: 'invmbl',
|
||
invtransform: 'dpur',
|
||
chrtransform: 'dpur',
|
||
name: "Tal Rasha's Fine-Spun Cloth",
|
||
nameZh: "塔·拉夏的织细衣服 (Tal Rasha's Fine-Spun Cloth)",
|
||
baseNameZh: '织网腰带 (Mesh Belt)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 1,
|
||
allowedSlots: ['belt'],
|
||
defense: 40,
|
||
durability: { current: 16, max: 16 },
|
||
reqLevel: 53,
|
||
reqStr: 47,
|
||
stats: [
|
||
{ text: '+20 敏捷', color: 'blue' },
|
||
{ text: '+30 法力', color: 'blue' },
|
||
{ text: '受损生命转化为法力 37%', color: 'blue' },
|
||
{ text: '15% 更佳机会取得魔法装备', color: 'blue' },
|
||
{ text: '需求 -20%', color: 'blue' },
|
||
],
|
||
setPieces: TAL_PIECES,
|
||
setBonuses: TAL_BONUSES,
|
||
},
|
||
amulet: {
|
||
id: 'set-tal-amulet',
|
||
code: 'amu',
|
||
invFile: 'invamu',
|
||
invtransform: 'dpur',
|
||
chrtransform: 'dpur',
|
||
name: "Tal Rasha's Adjudication",
|
||
nameZh: "塔·拉夏的判决 (Tal Rasha's Adjudication)",
|
||
baseNameZh: '项链 (Amulet)',
|
||
quality: 'set',
|
||
invWidth: 1,
|
||
invHeight: 1,
|
||
allowedSlots: ['amulet'],
|
||
reqLevel: 67,
|
||
stats: [
|
||
{ text: '+2 法师技能等级', color: 'blue' },
|
||
{ text: '增加 3-32 闪电伤害', color: 'blue' },
|
||
{ text: '+50 生命', color: 'blue' },
|
||
{ text: '+42 法力', color: 'blue' },
|
||
{ text: '抗电 +33%', color: 'blue' },
|
||
],
|
||
setPieces: TAL_PIECES,
|
||
setBonuses: TAL_BONUSES,
|
||
},
|
||
},
|
||
nec: {
|
||
helm: {
|
||
id: 'set-trang-helm',
|
||
code: 'uh9',
|
||
invFile: 'invbhmu',
|
||
invtransform: 'dgld',
|
||
name: "Trang-Oul's Guise",
|
||
nameZh: "塔格奥之容 (Trang-Oul's Guise)",
|
||
baseNameZh: '骸骨面罩 (Bone Visage)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 257,
|
||
durability: { current: 40, max: 40 },
|
||
reqLevel: 65,
|
||
reqStr: 106,
|
||
stats: [
|
||
{ text: '+100 防御', color: 'blue' },
|
||
{ text: '+25% 快速再度攻击 (FHR)', color: 'blue' },
|
||
{ text: '+150 法力', color: 'blue' },
|
||
{ text: '生命回复 +5', color: 'blue' },
|
||
{ text: '攻击者受到伤害 20', color: 'blue' },
|
||
],
|
||
setPieces: TRANG_PIECES,
|
||
setBonuses: TRANG_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-trang-armor',
|
||
code: 'xul',
|
||
invFile: 'invful',
|
||
invtransform: 'dyel',
|
||
name: "Trang-Oul's Scales",
|
||
nameZh: "塔格奥之鳞 (Trang-Oul's Scales)",
|
||
baseNameZh: '混沌战甲 (Chaos Armor)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 857,
|
||
durability: { current: 70, max: 70 },
|
||
reqLevel: 49,
|
||
reqStr: 84,
|
||
stats: [
|
||
{ text: '+150% 增强防御', color: 'blue' },
|
||
{ text: '+40% 高速跑步/行走 (FRW)', color: 'blue' },
|
||
{ text: '+2 召唤技能 (限死灵法师)', color: 'blue' },
|
||
{ text: '+100 对远距离攻击的防御', color: 'blue' },
|
||
{ text: '需求 -40%', color: 'blue' },
|
||
{ text: '抗毒 +40%', color: 'blue' },
|
||
],
|
||
setPieces: TRANG_PIECES,
|
||
setBonuses: TRANG_BONUSES,
|
||
},
|
||
weapon2: {
|
||
id: 'set-trang-shield',
|
||
code: 'ne9',
|
||
invFile: 'invne4',
|
||
invtransform: 'dyel',
|
||
name: "Trang-Oul's Wing",
|
||
nameZh: "塔格奥之翼 (Trang-Oul's Wing)",
|
||
baseNameZh: '领唱者印记 (Cantor Trophy)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['weapon2'],
|
||
defense: 189,
|
||
durability: { current: 20, max: 20 },
|
||
reqLevel: 54,
|
||
reqStr: 50,
|
||
stats: [
|
||
{ text: '+125 防御', color: 'blue' },
|
||
{ text: '+30% 增加格挡几率', color: 'blue' },
|
||
{ text: '+2 毒素与白骨技能 (限死灵法师)', color: 'blue' },
|
||
{ text: '+25 力量', color: 'blue' },
|
||
{ text: '+15 敏捷', color: 'blue' },
|
||
{ text: '抗火 +45%', color: 'blue' },
|
||
{ text: '抗毒 +40%', color: 'blue' },
|
||
],
|
||
setPieces: TRANG_PIECES,
|
||
setBonuses: TRANG_BONUSES,
|
||
},
|
||
gloves: {
|
||
id: 'set-trang-gloves',
|
||
code: 'xmg',
|
||
invFile: 'invmgl',
|
||
invtransform: 'dyel',
|
||
name: "Trang-Oul's Claws",
|
||
nameZh: "塔格奥之爪 (Trang-Oul's Claws)",
|
||
baseNameZh: '重型手镯 (Heavy Bracers)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['gloves'],
|
||
defense: 74,
|
||
durability: { current: 16, max: 16 },
|
||
reqLevel: 45,
|
||
reqStr: 58,
|
||
stats: [
|
||
{ text: '+20% 快速施法速度 (FCR)', color: 'blue' },
|
||
{ text: '+25% 毒素技能伤害', color: 'blue' },
|
||
{ text: '+30 防御', color: 'blue' },
|
||
{ text: '抗寒 +30%', color: 'blue' },
|
||
{ text: '+2 诅咒技能 (限死灵法师)', color: 'blue' },
|
||
],
|
||
setPieces: TRANG_PIECES,
|
||
setBonuses: TRANG_BONUSES,
|
||
},
|
||
belt: {
|
||
id: 'set-trang-belt',
|
||
code: 'utc',
|
||
invFile: 'invtbl',
|
||
invtransform: 'dyel',
|
||
name: "Trang-Oul's Girth",
|
||
nameZh: "塔格奥之束带 (Trang-Oul's Girth)",
|
||
baseNameZh: '巨魔腰带 (Troll Belt)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 1,
|
||
allowedSlots: ['belt'],
|
||
defense: 166,
|
||
durability: { current: 18, max: 18 },
|
||
reqLevel: 62,
|
||
reqStr: 91,
|
||
stats: [
|
||
{ text: '+100 防御', color: 'blue' },
|
||
{ text: '无法冰冻', color: 'blue' },
|
||
{ text: '需求 -40%', color: 'blue' },
|
||
{ text: '+66 生命', color: 'blue' },
|
||
{ text: '+50 法力', color: 'blue' },
|
||
{ text: '+30 最大耐力', color: 'blue' },
|
||
{ text: '生命回复 +5', color: 'blue' },
|
||
],
|
||
setPieces: TRANG_PIECES,
|
||
setBonuses: TRANG_BONUSES,
|
||
},
|
||
},
|
||
pal: {
|
||
helm: {
|
||
id: 'set-gris-helm',
|
||
code: 'urn',
|
||
invFile: 'invcrn',
|
||
invtransform: 'dgld',
|
||
name: "Griswold's Valor",
|
||
nameZh: "格里斯瓦德的勇气 (Griswold's Valor)",
|
||
baseNameZh: '头冠 (Corona)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 290,
|
||
durability: { current: 50, max: 50 },
|
||
reqLevel: 69,
|
||
reqStr: 105,
|
||
sockets: 2,
|
||
stats: [
|
||
{ text: '+75% 增强防御', color: 'blue' },
|
||
{ text: '所有抗性 +5', color: 'blue' },
|
||
{ text: '30% 更佳机会取得魔法装备', color: 'blue' },
|
||
{ text: '需求 -40%', color: 'blue' },
|
||
{ text: '带插槽 (2)', color: 'blue' },
|
||
],
|
||
setPieces: GRIS_PIECES,
|
||
setBonuses: GRIS_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-gris-armor',
|
||
code: 'xar',
|
||
invFile: 'invxaru',
|
||
invtransform: 'dgld',
|
||
name: "Griswold's Heart",
|
||
nameZh: "格里斯瓦德之心 (Griswold's Heart)",
|
||
baseNameZh: '华丽战甲 (Ornate Plate)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 950,
|
||
durability: { current: 60, max: 60 },
|
||
reqLevel: 45,
|
||
reqStr: 102,
|
||
sockets: 3,
|
||
stats: [
|
||
{ text: '+500 防御', color: 'blue' },
|
||
{ text: '+2 防御灵气 (限圣骑士)', color: 'blue' },
|
||
{ text: '+20 力量', color: 'blue' },
|
||
{ text: '需求 -40%', color: 'blue' },
|
||
{ text: '带插槽 (3)', color: 'blue' },
|
||
],
|
||
setPieces: GRIS_PIECES,
|
||
setBonuses: GRIS_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-gris-scepter',
|
||
code: '7ws',
|
||
invFile: 'invwsp',
|
||
invtransform: 'dgld',
|
||
name: "Griswold's Redemption",
|
||
nameZh: "格里斯瓦德的救赎 (Griswold's Redemption)",
|
||
baseNameZh: '神使之杖 (Caduceus)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '125 - 162',
|
||
durability: { current: 70, max: 70 },
|
||
speedText: '权杖类 - 极快攻击速度 [40]',
|
||
reqLevel: 66,
|
||
reqStr: 78,
|
||
stats: [
|
||
{ text: '+240% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+40% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '+200% 对不死生物的伤害', color: 'blue' },
|
||
{ text: '需求 -20%', color: 'blue' },
|
||
{ text: '带插槽 (4)', color: 'blue' },
|
||
],
|
||
setPieces: GRIS_PIECES,
|
||
setBonuses: GRIS_BONUSES,
|
||
},
|
||
weapon2: {
|
||
id: 'set-gris-shield',
|
||
code: 'paf',
|
||
invFile: 'invpa5',
|
||
invtransform: 'dgld',
|
||
name: "Griswold's Honor",
|
||
nameZh: "格里斯瓦德的荣耀 (Griswold's Honor)",
|
||
baseNameZh: '旋风盾 (Vortex Shield)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['weapon2'],
|
||
defense: 333,
|
||
durability: { current: 90, max: 90 },
|
||
reqLevel: 68,
|
||
reqStr: 148,
|
||
sockets: 3,
|
||
stats: [
|
||
{ text: '+108 防御', color: 'blue' },
|
||
{ text: '+65% 快速格挡率', color: 'blue' },
|
||
{ text: '+20% 增加格挡几率', color: 'blue' },
|
||
{ text: '所有抗性 +45', color: 'blue' },
|
||
{ text: '带插槽 (3)', color: 'blue' },
|
||
],
|
||
setPieces: GRIS_PIECES,
|
||
setBonuses: GRIS_BONUSES,
|
||
},
|
||
},
|
||
bar: {
|
||
helm: {
|
||
id: 'set-ik-helm',
|
||
code: 'ba5',
|
||
invFile: 'invba5',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Will",
|
||
nameZh: "不朽之王的意志 (Immortal King's Will)",
|
||
baseNameZh: '复仇者之盔 (Avenger Guard)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 175,
|
||
durability: { current: 55, max: 55 },
|
||
reqLevel: 47,
|
||
reqStr: 65,
|
||
sockets: 2,
|
||
stats: [
|
||
{ text: '+2 战吼技能 (限野蛮人)', color: 'blue' },
|
||
{ text: '+4 生命补给', color: 'blue' },
|
||
{ text: '40% 更佳机会取得魔法装备', color: 'blue' },
|
||
{ text: '带插槽 (2)', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-ik-armor',
|
||
code: 'uar',
|
||
invFile: 'invaaru',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Soul Cage",
|
||
nameZh: "不朽之王的灵魂牢笼 (Immortal King's Soul Cage)",
|
||
baseNameZh: '神圣盔甲 (Sacred Armor)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 1001,
|
||
durability: { current: 60, max: 60 },
|
||
reqLevel: 76,
|
||
reqStr: 232,
|
||
stats: [
|
||
{ text: '+400 防御', color: 'blue' },
|
||
{ text: '+2 战斗技能 (限野蛮人)', color: 'blue' },
|
||
{ text: '抗毒 +50%', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-ik-maul',
|
||
code: '7m7',
|
||
invFile: 'invmau',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Stone Crusher",
|
||
nameZh: "不朽之王的点魂碎石者 (Immortal King's Stone Crusher)",
|
||
baseNameZh: '食人魔之槌 (Ogre Maul)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 4,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '231 - 318',
|
||
durability: { current: 60, max: 60 },
|
||
speedText: '锤类 - 极快攻击速度 [40]',
|
||
reqLevel: 76,
|
||
reqStr: 225,
|
||
sockets: 2,
|
||
stats: [
|
||
{ text: '+200% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+40% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '40% 压碎性打击 (CB)', color: 'blue' },
|
||
{ text: '永不磨损 (Indestructible)', color: 'blue' },
|
||
{ text: '带插槽 (2)', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
gloves: {
|
||
id: 'set-ik-gloves',
|
||
code: 'xhg',
|
||
invFile: 'invhgl',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Forge",
|
||
nameZh: "不朽之王的熔炉 (Immortal King's Forge)",
|
||
baseNameZh: '战场手套 (War Gauntlets)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['gloves'],
|
||
defense: 118,
|
||
durability: { current: 24, max: 24 },
|
||
reqLevel: 30,
|
||
reqStr: 110,
|
||
stats: [
|
||
{ text: '+65 防御', color: 'blue' },
|
||
{ text: '+20 力量', color: 'blue' },
|
||
{ text: '+20 敏捷', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
belt: {
|
||
id: 'set-ik-belt',
|
||
code: 'zhb',
|
||
invFile: 'invhbl',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Detail",
|
||
nameZh: "不朽之王的心腹 (Immortal King's Detail)",
|
||
baseNameZh: '战场腰带 (War Belt)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 1,
|
||
allowedSlots: ['belt'],
|
||
defense: 89,
|
||
durability: { current: 24, max: 24 },
|
||
reqLevel: 29,
|
||
reqStr: 110,
|
||
stats: [
|
||
{ text: '+36 防御', color: 'blue' },
|
||
{ text: '+25 力量', color: 'blue' },
|
||
{ text: '抗火 +28%', color: 'blue' },
|
||
{ text: '抗电 +31%', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
boots: {
|
||
id: 'set-ik-boots',
|
||
code: 'xhb',
|
||
invFile: 'invhbt',
|
||
invtransform: 'lgry',
|
||
name: "Immortal King's Pillar",
|
||
nameZh: "不朽之王之柱 (Immortal King's Pillar)",
|
||
baseNameZh: '战场之靴 (War Boots)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['boots'],
|
||
defense: 128,
|
||
durability: { current: 24, max: 24 },
|
||
reqLevel: 31,
|
||
reqStr: 125,
|
||
stats: [
|
||
{ text: '+75 防御', color: 'blue' },
|
||
{ text: '+40% 高速跑步/行走 (FRW)', color: 'blue' },
|
||
{ text: '+110 攻击准确率', color: 'blue' },
|
||
{ text: '+44 生命', color: 'blue' },
|
||
],
|
||
setPieces: IK_PIECES,
|
||
setBonuses: IK_BONUSES,
|
||
},
|
||
},
|
||
dru: {
|
||
helm: {
|
||
id: 'set-aldur-helm',
|
||
code: 'dr8',
|
||
invFile: 'invdr3',
|
||
invtransform: 'oran',
|
||
name: "Aldur's Stony Gaze",
|
||
nameZh: "艾尔多的冷酷目光 (Aldur's Stony Gaze)",
|
||
baseNameZh: "猎人之容 (Hunter's Guise)",
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 171,
|
||
durability: { current: 20, max: 20 },
|
||
reqLevel: 36,
|
||
reqStr: 56,
|
||
sockets: 2,
|
||
stats: [
|
||
{ text: '+90 防御', color: 'blue' },
|
||
{ text: '+25% 快速再度攻击 (FHR)', color: 'blue' },
|
||
{ text: '抗寒 +50%', color: 'blue' },
|
||
{ text: '法力回复速度提高 17%', color: 'blue' },
|
||
{ text: '带插槽 (2)', color: 'blue' },
|
||
],
|
||
setPieces: ALDUR_PIECES,
|
||
setBonuses: ALDUR_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-aldur-armor',
|
||
code: 'uul',
|
||
invFile: 'invful',
|
||
invtransform: 'oran',
|
||
name: "Aldur's Deception",
|
||
nameZh: "艾尔多的欺瞒 (Aldur's Deception)",
|
||
baseNameZh: '阴影铠甲 (Shadow Plate)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 850,
|
||
durability: { current: 70, max: 70 },
|
||
reqLevel: 76,
|
||
reqStr: 115,
|
||
stats: [
|
||
{ text: '+300 防御', color: 'blue' },
|
||
{ text: '+1 元素技能 (限德鲁伊)', color: 'blue' },
|
||
{ text: '+1 变形技能 (限德鲁伊)', color: 'blue' },
|
||
{ text: '+20 力量', color: 'blue' },
|
||
{ text: '+15 敏捷', color: 'blue' },
|
||
{ text: '抗电 +50%', color: 'blue' },
|
||
{ text: '需求 -50%', color: 'blue' },
|
||
],
|
||
setPieces: ALDUR_PIECES,
|
||
setBonuses: ALDUR_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-aldur-mace',
|
||
code: '9mt',
|
||
invFile: 'invmstu',
|
||
invtransform: 'oran',
|
||
name: "Aldur's Rhythm",
|
||
nameZh: "艾尔多的律动 (Aldur's Rhythm)",
|
||
baseNameZh: '锯齿流星锤 (Jagged Star)',
|
||
quality: 'set',
|
||
invWidth: 1,
|
||
invHeight: 3,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '60 - 93',
|
||
durability: { current: 72, max: 72 },
|
||
speedText: '钉头槌类 - 极快攻击速度 [30]',
|
||
reqLevel: 42,
|
||
reqStr: 74,
|
||
sockets: 3,
|
||
stats: [
|
||
{ text: '+200% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+30% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '10% 每次命中偷取生命', color: 'blue' },
|
||
{ text: '5% 每次命中偷取法力', color: 'blue' },
|
||
{ text: '增加 40-62 闪电伤害', color: 'blue' },
|
||
{ text: '带插槽 (3)', color: 'blue' },
|
||
],
|
||
setPieces: ALDUR_PIECES,
|
||
setBonuses: ALDUR_BONUSES,
|
||
},
|
||
boots: {
|
||
id: 'set-aldur-boots',
|
||
code: 'xtb',
|
||
invFile: 'invtbt',
|
||
invtransform: 'oran',
|
||
name: "Aldur's Advance",
|
||
nameZh: "艾尔多的成长 (Aldur's Advance)",
|
||
baseNameZh: '战场之靴 (Battle Boots)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['boots'],
|
||
defense: 47,
|
||
durability: { current: 48, max: 48 },
|
||
reqLevel: 45,
|
||
reqStr: 95,
|
||
stats: [
|
||
{ text: '+40% 高速跑步/行走 (FRW)', color: 'blue' },
|
||
{ text: '+50 生命', color: 'blue' },
|
||
{ text: '+180 最大耐力', color: 'blue' },
|
||
{ text: '抗火 +50%', color: 'blue' },
|
||
{ text: '受损生命转化为法力 10%', color: 'blue' },
|
||
],
|
||
setPieces: ALDUR_PIECES,
|
||
setBonuses: ALDUR_BONUSES,
|
||
},
|
||
},
|
||
ass: {
|
||
helm: {
|
||
id: 'set-nat-helm',
|
||
code: 'xh9',
|
||
invFile: 'invbhmu',
|
||
invtransform: 'dgry',
|
||
name: "Natalya's Totem",
|
||
nameZh: "娜塔亚的图腾 (Natalya's Totem)",
|
||
baseNameZh: '残酷头盔 (Grim Helm)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['helm'],
|
||
defense: 300,
|
||
durability: { current: 40, max: 40 },
|
||
reqLevel: 59,
|
||
reqStr: 58,
|
||
stats: [
|
||
{ text: '+175 防御', color: 'blue' },
|
||
{ text: '所有抗性 +20', color: 'blue' },
|
||
{ text: '+20 力量', color: 'blue' },
|
||
{ text: '+30 敏捷', color: 'blue' },
|
||
{ text: '魔法伤害减少 3', color: 'blue' },
|
||
],
|
||
setPieces: NAT_PIECES,
|
||
setBonuses: NAT_BONUSES,
|
||
},
|
||
armor: {
|
||
id: 'set-nat-armor',
|
||
code: 'ucl',
|
||
invFile: 'invscl',
|
||
invtransform: 'dgry',
|
||
name: "Natalya's Shadow",
|
||
nameZh: "娜塔亚的影子 (Natalya's Shadow)",
|
||
baseNameZh: '罗格战甲 (Loricated Mail)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 3,
|
||
allowedSlots: ['armor'],
|
||
defense: 721,
|
||
durability: { current: 36, max: 36 },
|
||
reqLevel: 73,
|
||
reqStr: 149,
|
||
sockets: 3,
|
||
stats: [
|
||
{ text: '+225 防御', color: 'blue' },
|
||
{ text: '+2 影子训练技能 (限刺客)', color: 'blue' },
|
||
{ text: '抗毒 +25%', color: 'blue' },
|
||
{ text: '生命回复 +10', color: 'blue' },
|
||
{ text: '带插槽 (3)', color: 'blue' },
|
||
],
|
||
setPieces: NAT_PIECES,
|
||
setBonuses: NAT_BONUSES,
|
||
},
|
||
weapon1: {
|
||
id: 'set-nat-claw',
|
||
code: '7qr',
|
||
invFile: 'invskru',
|
||
invtransform: 'dgry',
|
||
name: "Natalya's Mark",
|
||
nameZh: "娜塔亚的印记 (Natalya's Mark)",
|
||
baseNameZh: '近身刃 (Scissors Suwayyah)',
|
||
quality: 'set',
|
||
invWidth: 1,
|
||
invHeight: 3,
|
||
allowedSlots: ['weapon1'],
|
||
damage: '153 - 170',
|
||
durability: { current: 68, max: 68 },
|
||
speedText: '爪类 - 极快攻击速度 [40]',
|
||
reqLevel: 79,
|
||
reqStr: 118,
|
||
stats: [
|
||
{ text: '+200% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+40% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '增加 12-17 伤害', color: 'blue' },
|
||
{ text: '忽略目标防御', color: 'blue' },
|
||
{ text: '+200% 对恶魔的伤害', color: 'blue' },
|
||
{ text: '+200% 对不死生物的伤害', color: 'blue' },
|
||
{ text: '增加 50 冰冷伤害 (持续 4 秒)', color: 'blue' },
|
||
],
|
||
setPieces: NAT_PIECES,
|
||
setBonuses: NAT_BONUSES,
|
||
},
|
||
boots: {
|
||
id: 'set-nat-boots',
|
||
code: 'xmb',
|
||
invFile: 'invmbt',
|
||
invtransform: 'dgry',
|
||
name: "Natalya's Soul",
|
||
nameZh: "娜塔亚的灵魂 (Natalya's Soul)",
|
||
baseNameZh: '织网之靴 (Mesh Boots)',
|
||
quality: 'set',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: ['boots'],
|
||
defense: 169,
|
||
durability: { current: 16, max: 16 },
|
||
reqLevel: 25,
|
||
reqStr: 65,
|
||
stats: [
|
||
{ text: '+125 防御', color: 'blue' },
|
||
{ text: '+40% 高速跑步/行走 (FRW)', color: 'blue' },
|
||
{ text: '抗寒 +25%', color: 'blue' },
|
||
{ text: '抗电 +25%', color: 'blue' },
|
||
{ text: '生命回复 +10', color: 'blue' },
|
||
{ text: '受损生命转化为法力 10%', color: 'blue' },
|
||
],
|
||
setPieces: NAT_PIECES,
|
||
setBonuses: NAT_BONUSES,
|
||
},
|
||
},
|
||
}
|
||
|
||
// -------------------------------------------------------------------------------------------------
|
||
// 2. STASH ITEMS: JEWELS, GEMS, AND RUNES (6x8 grid)
|
||
// -------------------------------------------------------------------------------------------------
|
||
|
||
export const STARTER_STASH_ITEMS: readonly GridPlacement[] = [
|
||
// Row 0: High Runes (Jah, Ber, Lo, Ohm, Vex, Cham)
|
||
{
|
||
col: 0, row: 0,
|
||
item: {
|
||
id: 'stash-r-jah', code: 'r31', invFile: 'invrjo', name: 'Jah Rune', nameZh: '乔 (Jah 符文)', baseNameZh: '符文 (#31)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 65,
|
||
stats: buildSocketableStats('r31'),
|
||
},
|
||
},
|
||
{
|
||
col: 1, row: 0,
|
||
item: {
|
||
id: 'stash-r-ber', code: 'r30', invFile: 'invrber', name: 'Ber Rune', nameZh: '贝 (Ber 符文)', baseNameZh: '符文 (#30)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 63,
|
||
stats: buildSocketableStats('r30'),
|
||
},
|
||
},
|
||
{
|
||
col: 2, row: 0,
|
||
item: {
|
||
id: 'stash-r-lo', code: 'r28', invFile: 'invrlo', name: 'Lo Rune', nameZh: '罗 (Lo 符文)', baseNameZh: '符文 (#28)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 59,
|
||
stats: buildSocketableStats('r28'),
|
||
},
|
||
},
|
||
{
|
||
col: 3, row: 0,
|
||
item: {
|
||
id: 'stash-r-ohm', code: 'r27', invFile: 'invrohm', name: 'Ohm Rune', nameZh: '欧姆 (Ohm 符文)', baseNameZh: '符文 (#27)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 57,
|
||
stats: buildSocketableStats('r27'),
|
||
},
|
||
},
|
||
{
|
||
col: 4, row: 0,
|
||
item: {
|
||
id: 'stash-r-vex', code: 'r26', invFile: 'invrvex', name: 'Vex Rune', nameZh: '伐克斯 (Vex 符文)', baseNameZh: '符文 (#26)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 55,
|
||
stats: buildSocketableStats('r26'),
|
||
},
|
||
},
|
||
{
|
||
col: 5, row: 0,
|
||
item: {
|
||
id: 'stash-r-cham', code: 'r32', invFile: 'invrcham', name: 'Cham Rune', nameZh: '查姆 (Cham 符文)', baseNameZh: '符文 (#32)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 67,
|
||
stats: buildSocketableStats('r32'),
|
||
},
|
||
},
|
||
|
||
// Row 1: High & Mid Runes (Zod, Sur, Gul, Ist, Mal, Um)
|
||
{
|
||
col: 0, row: 1,
|
||
item: {
|
||
id: 'stash-r-zod', code: 'r33', invFile: 'invrzod', name: 'Zod Rune', nameZh: '佐德 (Zod 符文)', baseNameZh: '符文 (#33)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 69,
|
||
stats: buildSocketableStats('r33'),
|
||
},
|
||
},
|
||
{
|
||
col: 1, row: 1,
|
||
item: {
|
||
id: 'stash-r-sur', code: 'r29', invFile: 'invrsur', name: 'Sur Rune', nameZh: '苏尔 (Sur 符文)', baseNameZh: '符文 (#29)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 61,
|
||
stats: buildSocketableStats('r29'),
|
||
},
|
||
},
|
||
{
|
||
col: 2, row: 1,
|
||
item: {
|
||
id: 'stash-r-gul', code: 'r25', invFile: 'invrgul', name: 'Gul Rune', nameZh: '古尔 (Gul 符文)', baseNameZh: '符文 (#25)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 53,
|
||
stats: buildSocketableStats('r25'),
|
||
},
|
||
},
|
||
{
|
||
col: 3, row: 1,
|
||
item: {
|
||
id: 'stash-r-ist', code: 'r24', invFile: 'invrist', name: 'Ist Rune', nameZh: '伊斯特 (Ist 符文)', baseNameZh: '符文 (#24)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 51,
|
||
stats: buildSocketableStats('r24'),
|
||
},
|
||
},
|
||
{
|
||
col: 4, row: 1,
|
||
item: {
|
||
id: 'stash-r-mal', code: 'r23', invFile: 'invrmal', name: 'Mal Rune', nameZh: '马尔 (Mal 符文)', baseNameZh: '符文 (#23)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 49,
|
||
stats: buildSocketableStats('r23'),
|
||
},
|
||
},
|
||
{
|
||
col: 5, row: 1,
|
||
item: {
|
||
id: 'stash-r-um', code: 'r22', invFile: 'invrum', name: 'Um Rune', nameZh: '乌姆 (Um 符文)', baseNameZh: '符文 (#22)', quality: 'rune', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 47,
|
||
stats: buildSocketableStats('r22'),
|
||
},
|
||
},
|
||
|
||
// Row 2: Perfect Gems (Amethyst, Ruby, Sapphire, Topaz, Emerald, Diamond)
|
||
{
|
||
col: 0, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-ame', code: 'gpv', invFile: 'invgsve', name: 'Perfect Amethyst', nameZh: '完美紫宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpv'),
|
||
},
|
||
},
|
||
{
|
||
col: 1, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-ruby', code: 'gpr', invFile: 'invgsre', name: 'Perfect Ruby', nameZh: '完美红宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpr'),
|
||
},
|
||
},
|
||
{
|
||
col: 2, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-sap', code: 'gpb', invFile: 'invgsbe', name: 'Perfect Sapphire', nameZh: '完美蓝宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpb'),
|
||
},
|
||
},
|
||
{
|
||
col: 3, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-top', code: 'gpy', invFile: 'invgsye', name: 'Perfect Topaz', nameZh: '完美黄宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpy'),
|
||
},
|
||
},
|
||
{
|
||
col: 4, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-eme', code: 'gpg', invFile: 'invgsge', name: 'Perfect Emerald', nameZh: '完美绿宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpg'),
|
||
},
|
||
},
|
||
{
|
||
col: 5, row: 2,
|
||
item: {
|
||
id: 'stash-gem-p-dia', code: 'gpw', invFile: 'invgswe', name: 'Perfect Diamond', nameZh: '完美白宝石', baseNameZh: '完美宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 18,
|
||
stats: buildSocketableStats('gpw'),
|
||
},
|
||
},
|
||
|
||
// Row 3: Flawless Gems & Skulls
|
||
{
|
||
col: 0, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-ame', code: 'gzv', invFile: 'invgsvd', name: 'Flawless Amethyst', nameZh: '无瑕紫宝石', baseNameZh: '宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('gzv'),
|
||
},
|
||
},
|
||
{
|
||
col: 1, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-ruby', code: 'glr', invFile: 'invgsrd', name: 'Flawless Ruby', nameZh: '无瑕红宝石', baseNameZh: '宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('glr'),
|
||
},
|
||
},
|
||
{
|
||
col: 2, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-sap', code: 'glb', invFile: 'invgsbd', name: 'Flawless Sapphire', nameZh: '无瑕蓝宝石', baseNameZh: '宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('glb'),
|
||
},
|
||
},
|
||
{
|
||
col: 3, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-top', code: 'gly', invFile: 'invgsyd', name: 'Flawless Topaz', nameZh: '无瑕黄宝石', baseNameZh: '宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('gly'),
|
||
},
|
||
},
|
||
{
|
||
col: 4, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-eme', code: 'glg', invFile: 'invgsgd', name: 'Flawless Emerald', nameZh: '无瑕绿宝石', baseNameZh: '宝石', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('glg'),
|
||
},
|
||
},
|
||
{
|
||
col: 5, row: 3,
|
||
item: {
|
||
id: 'stash-gem-fl-skull', code: 'skz', invFile: 'invskz', name: 'Flawless Skull', nameZh: '无瑕骷髅', baseNameZh: '骷髅', quality: 'normal', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 15,
|
||
stats: buildSocketableStats('skz'),
|
||
},
|
||
},
|
||
|
||
// Row 4: Jewels (Unique Rainbow Facets, Magic, Rare)
|
||
{
|
||
col: 0, row: 4,
|
||
item: {
|
||
id: 'stash-jew-facet-fire', code: 'jew', invFile: 'invjw1', name: 'Rainbow Facet', nameZh: '彩虹刻面 (Rainbow Facet - 火焰)', baseNameZh: '暗金珠宝 (Jewel)', quality: 'unique', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 49,
|
||
stats: [
|
||
{ text: '升级时有 100% 几率施放等级 29 炽烈之径', color: 'blue' },
|
||
{ text: '+5% 火焰技能伤害', color: 'blue' },
|
||
{ text: '-5% 敌人火焰抗性', color: 'blue' },
|
||
{ text: '增加 17-45 火焰伤害', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 1, row: 4,
|
||
item: {
|
||
id: 'stash-jew-ruby-fervor', code: 'jew', invFile: 'invjw2', name: 'Ruby Jewel of Fervor', nameZh: '红宝石之狂热珠宝 (40/15)', baseNameZh: '魔法珠宝 (Jewel)', quality: 'magic', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 58,
|
||
stats: [
|
||
{ text: '+40% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+15% 提升攻击速度 (IAS)', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 2, row: 4,
|
||
item: {
|
||
id: 'stash-jew-res-ias', code: 'jew', invFile: 'invjw3', name: 'Scintillating Jewel of Fervor', nameZh: '闪耀之狂热珠宝 (15/15)', baseNameZh: '魔法珠宝 (Jewel)', quality: 'magic', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 31,
|
||
stats: [
|
||
{ text: '+15% 提升攻击速度 (IAS)', color: 'blue' },
|
||
{ text: '所有抗性 +15 (All Resistances +15)', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 3, row: 4,
|
||
item: {
|
||
id: 'stash-jew-rare', code: 'jew', invFile: 'invjw4', name: 'Doom Gyre', nameZh: '末日环绕 (稀有珠宝)', baseNameZh: '稀有珠宝 (Rare Jewel)', quality: 'rare', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 42,
|
||
stats: [
|
||
{ text: '+30% 增强伤害 (ED)', color: 'blue' },
|
||
{ text: '+9 力量', color: 'blue' },
|
||
{ text: '+9 敏捷', color: 'blue' },
|
||
{ text: '所有抗性 +10', color: 'blue' },
|
||
{ text: '+7% 快速再度攻击 (FHR)', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 4, row: 4,
|
||
item: {
|
||
id: 'stash-jew-facet-cold', code: 'jew', invFile: 'invjw5', name: 'Rainbow Facet (Cold)', nameZh: '彩虹刻面 (Rainbow Facet - 冰冷)', baseNameZh: '暗金珠宝 (Jewel)', quality: 'unique', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 49,
|
||
stats: [
|
||
{ text: '阵亡时有 100% 几率施放等级 37 暴风雪', color: 'blue' },
|
||
{ text: '+5% 冰冷技能伤害', color: 'blue' },
|
||
{ text: '-5% 敌人冰冷抗性', color: 'blue' },
|
||
{ text: '增加 24-38 冰冷伤害 (持续 3 秒)', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 5, row: 4,
|
||
item: {
|
||
id: 'stash-jew-facet-ltng', code: 'jew', invFile: 'invjw6', name: 'Rainbow Facet (Lightning)', nameZh: '彩虹刻面 (Rainbow Facet - 闪电)', baseNameZh: '暗金珠宝 (Jewel)', quality: 'unique', invWidth: 1, invHeight: 1, allowedSlots: [], reqLevel: 49,
|
||
stats: [
|
||
{ text: '升级时有 100% 几率施放等级 41 新星', color: 'blue' },
|
||
{ text: '+5% 闪电技能伤害', color: 'blue' },
|
||
{ text: '-5% 敌人闪电抗性', color: 'blue' },
|
||
{ text: '增加 1-74 闪电伤害', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
]
|
||
|
||
// -------------------------------------------------------------------------------------------------
|
||
// 3. INVENTORY BAG GENERATION PER CLASS
|
||
// -------------------------------------------------------------------------------------------------
|
||
|
||
export function createStarterBagForClass(classCode: CharacterClassCode): GridPlacement[] {
|
||
const torchSkillText: Record<CharacterClassCode, string> = {
|
||
ama: '+3 亚马逊技能等级',
|
||
sor: '+3 法师技能等级',
|
||
nec: '+3 死灵法师技能等级',
|
||
pal: '+3 圣骑士技能等级',
|
||
bar: '+3 野蛮人技能等级',
|
||
dru: '+3 德鲁伊技能等级',
|
||
ass: '+3 刺客技能等级',
|
||
}
|
||
|
||
const skillerNameZh: Record<CharacterClassCode, string> = {
|
||
ama: '弓与十字弓超级护身符',
|
||
sor: '冰冷法术超级护身符',
|
||
nec: '毒素与白骨超级护身符',
|
||
pal: '圣骑士战斗技能超级护身符',
|
||
bar: '战斗专家超级护身符',
|
||
dru: '元素法术超级护身符',
|
||
ass: '陷阱技能超级护身符',
|
||
}
|
||
|
||
return [
|
||
{
|
||
col: 0,
|
||
row: 0,
|
||
item: {
|
||
id: `bag-cube-${classCode}`,
|
||
code: 'box',
|
||
invFile: 'invbox',
|
||
name: 'Horadric Cube',
|
||
nameZh: '赫拉迪克方块 (Horadric Cube)',
|
||
baseNameZh: '任务宝盒',
|
||
quality: 'unique',
|
||
invWidth: 2,
|
||
invHeight: 2,
|
||
allowedSlots: [],
|
||
stats: [{ text: '右键点击打开合成界面 (3×4 网格)', color: 'gold' }],
|
||
},
|
||
},
|
||
{
|
||
col: 2,
|
||
row: 0,
|
||
item: {
|
||
id: `bag-tbk-${classCode}`,
|
||
code: 'tbk',
|
||
invFile: 'invbbk',
|
||
name: 'Tome of Town Portal',
|
||
nameZh: '回城之书 (Tome of Town Portal)',
|
||
baseNameZh: '法术书 (数量: 20)',
|
||
quality: 'normal',
|
||
invWidth: 1,
|
||
invHeight: 2,
|
||
allowedSlots: [],
|
||
quantity: 20,
|
||
maxQuantity: 20,
|
||
stats: [{ text: '右键施放城镇传送门', color: 'white' }],
|
||
},
|
||
},
|
||
{
|
||
col: 2,
|
||
row: 2,
|
||
item: {
|
||
id: `bag-ibk-${classCode}`,
|
||
code: 'ibk',
|
||
invFile: 'invrbk',
|
||
name: 'Tome of Identify',
|
||
nameZh: '鉴定之书 (Tome of Identify)',
|
||
baseNameZh: '法术书 (数量: 20)',
|
||
quality: 'normal',
|
||
invWidth: 1,
|
||
invHeight: 2,
|
||
allowedSlots: [],
|
||
quantity: 20,
|
||
maxQuantity: 20,
|
||
stats: [{ text: '鉴定未辨识的魔法/暗金装备', color: 'white' }],
|
||
},
|
||
},
|
||
{
|
||
col: 3,
|
||
row: 0,
|
||
item: {
|
||
id: `bag-torch-${classCode}`,
|
||
code: 'cm2',
|
||
invFile: 'invtrch',
|
||
name: 'Hellfire Torch',
|
||
nameZh: '地狱火炬 (Hellfire Torch)',
|
||
baseNameZh: '大型护身符 (Large Charm)',
|
||
quality: 'unique',
|
||
invWidth: 1,
|
||
invHeight: 2,
|
||
allowedSlots: [],
|
||
reqLevel: 75,
|
||
stats: [
|
||
{ text: '击中时有 5% 几率施放等级 10 火风暴', color: 'blue' },
|
||
{ text: torchSkillText[classCode] ?? '+3 角色技能等级', color: 'blue' },
|
||
{ text: '+20 所有属性', color: 'blue' },
|
||
{ text: '所有抗性 +20', color: 'blue' },
|
||
{ text: '+8 照亮范围', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 3,
|
||
row: 2,
|
||
item: {
|
||
id: `bag-anni-${classCode}`,
|
||
code: 'cm1',
|
||
invFile: 'invmss',
|
||
name: 'Annihilus',
|
||
nameZh: '毁灭 (Annihilus)',
|
||
baseNameZh: '小型护身符 (Small Charm)',
|
||
quality: 'unique',
|
||
invWidth: 1,
|
||
invHeight: 1,
|
||
allowedSlots: [],
|
||
reqLevel: 70,
|
||
stats: [
|
||
{ text: '+1 所有技能 (+1 To All Skills)', color: 'blue' },
|
||
{ text: '+20 所有属性', color: 'blue' },
|
||
{ text: '所有抗性 +20', color: 'blue' },
|
||
{ text: '+10% 获得经验值', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 4,
|
||
row: 0,
|
||
item: {
|
||
id: `bag-gheeds-${classCode}`,
|
||
code: 'cm3',
|
||
invFile: 'invch3',
|
||
name: "Gheed's Fortune",
|
||
nameZh: "基德的运气 (Gheed's Fortune)",
|
||
baseNameZh: '超大型护身符 (Grand Charm)',
|
||
quality: 'unique',
|
||
invWidth: 1,
|
||
invHeight: 3,
|
||
allowedSlots: [],
|
||
reqLevel: 62,
|
||
stats: [
|
||
{ text: '160% 额外金币取得', color: 'blue' },
|
||
{ text: '40% 更佳机会取得魔法装备 (MF)', color: 'blue' },
|
||
{ text: '降低所有商人价格 15%', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
col: 5,
|
||
row: 0,
|
||
item: {
|
||
id: `bag-skiller-${classCode}`,
|
||
code: 'cm3',
|
||
invFile: 'invch3',
|
||
name: 'Grand Charm of Vita',
|
||
nameZh: `${skillerNameZh[classCode]} (Skiller)`,
|
||
baseNameZh: '超大型护身符 (Grand Charm)',
|
||
quality: 'magic',
|
||
invWidth: 1,
|
||
invHeight: 3,
|
||
allowedSlots: [],
|
||
reqLevel: 42,
|
||
stats: [
|
||
{ text: `${torchSkillText[classCode]?.replace('+3', '+1')}`, color: 'blue' },
|
||
{ text: '+45 最大生命', color: 'blue' },
|
||
],
|
||
},
|
||
},
|
||
]
|
||
}
|
||
|
||
// -------------------------------------------------------------------------------------------------
|
||
// 4. CHARACTER SHEET ATTRIBUTES PER CLASS
|
||
// -------------------------------------------------------------------------------------------------
|
||
|
||
export const CLASS_STARTER_ATTRS: Record<CharacterClassCode, CharacterAttributes> = {
|
||
ama: {
|
||
name: 'Cassia',
|
||
classNameZh: '亚马逊',
|
||
classNameEn: 'Amazon',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 135,
|
||
dex: 210,
|
||
vit: 250,
|
||
ene: 50,
|
||
statPoints: 15,
|
||
baseMaxHp: 1250,
|
||
baseMaxMana: 450,
|
||
baseMaxStamina: 480,
|
||
defense: 1680,
|
||
attackRating: 2450,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
sor: {
|
||
name: 'Isendra',
|
||
classNameZh: '女法师',
|
||
classNameEn: 'Sorceress',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 156,
|
||
dex: 75,
|
||
vit: 315,
|
||
ene: 95,
|
||
statPoints: 15,
|
||
baseMaxHp: 1180,
|
||
baseMaxMana: 940,
|
||
baseMaxStamina: 465,
|
||
defense: 1845,
|
||
attackRating: 1240,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
nec: {
|
||
name: 'Xul',
|
||
classNameZh: '死灵法师',
|
||
classNameEn: 'Necromancer',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 120,
|
||
dex: 80,
|
||
vit: 290,
|
||
ene: 120,
|
||
statPoints: 15,
|
||
baseMaxHp: 1080,
|
||
baseMaxMana: 820,
|
||
baseMaxStamina: 450,
|
||
defense: 1580,
|
||
attackRating: 1120,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
pal: {
|
||
name: 'Cartographus',
|
||
classNameZh: '圣骑士',
|
||
classNameEn: 'Paladin',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 175,
|
||
dex: 120,
|
||
vit: 340,
|
||
ene: 45,
|
||
statPoints: 15,
|
||
baseMaxHp: 1520,
|
||
baseMaxMana: 520,
|
||
baseMaxStamina: 520,
|
||
defense: 2680,
|
||
attackRating: 2150,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
bar: {
|
||
name: 'Sonya',
|
||
classNameZh: '野蛮人',
|
||
classNameEn: 'Barbarian',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 235,
|
||
dex: 110,
|
||
vit: 380,
|
||
ene: 30,
|
||
statPoints: 15,
|
||
baseMaxHp: 1950,
|
||
baseMaxMana: 350,
|
||
baseMaxStamina: 550,
|
||
defense: 2450,
|
||
attackRating: 2850,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
dru: {
|
||
name: 'Loreov',
|
||
classNameZh: '德鲁伊',
|
||
classNameEn: 'Druid',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 165,
|
||
dex: 90,
|
||
vit: 330,
|
||
ene: 70,
|
||
statPoints: 15,
|
||
baseMaxHp: 1420,
|
||
baseMaxMana: 580,
|
||
baseMaxStamina: 490,
|
||
defense: 1720,
|
||
attackRating: 1840,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
ass: {
|
||
name: 'Natalya',
|
||
classNameZh: '刺客',
|
||
classNameEn: 'Assassin',
|
||
level: 85,
|
||
xp: 1_068_078_030,
|
||
nextLevelXp: 1_163_635_493,
|
||
str: 150,
|
||
dex: 180,
|
||
vit: 280,
|
||
ene: 60,
|
||
statPoints: 15,
|
||
baseMaxHp: 1320,
|
||
baseMaxMana: 490,
|
||
baseMaxStamina: 510,
|
||
defense: 1920,
|
||
attackRating: 2320,
|
||
fireRes: 75,
|
||
coldRes: 75,
|
||
lightRes: 75,
|
||
poisRes: 75,
|
||
},
|
||
}
|
||
|
||
// -------------------------------------------------------------------------------------------------
|
||
// 5. STARTER HARD POINTS ALLOCATIONS PER CLASS (Level 85)
|
||
// -------------------------------------------------------------------------------------------------
|
||
|
||
export const CLASS_STARTER_HARD_POINTS: Record<CharacterClassCode, Readonly<Record<number, number>>> = {
|
||
ama: {
|
||
6: 1, 7: 1, 11: 1, 12: 10, 22: 20, 26: 10, 31: 10, // Bow
|
||
8: 1, 9: 10, 13: 5, 17: 1, 18: 5, 23: 10, 29: 5, 32: 10, 33: 5, // Passive
|
||
10: 1, 14: 1, 20: 1, 24: 5, 35: 10, // Javelin
|
||
},
|
||
sor: {
|
||
39: 1, 40: 1, 44: 1, 45: 5, 55: 10, 59: 20, 64: 20, 65: 10, // Cold
|
||
38: 1, 42: 1, 43: 1, 49: 5, 54: 1, // Lightning
|
||
36: 1, 37: 1, 47: 15, 56: 10, 61: 5, // Fire
|
||
},
|
||
nec: {
|
||
70: 20, 69: 20, 75: 1, 79: 1, 80: 5, 89: 5, 95: 5, // Summoning
|
||
67: 1, 68: 1, 74: 10, 78: 1, 84: 15, 92: 5, // Poison & Bone
|
||
66: 1, 71: 1, 72: 1, 76: 1, 77: 1, 82: 1, 87: 1, // Curses
|
||
},
|
||
pal: {
|
||
96: 1, 97: 1, 101: 1, 106: 5, 107: 1, 112: 20, 117: 15, // Combat
|
||
98: 1, 108: 20, 113: 20, 122: 10, // Offensive
|
||
99: 1, 100: 1, 104: 1, 105: 1, 109: 1, 110: 1, 115: 15, 120: 1, 124: 1, // Defensive
|
||
},
|
||
bar: {
|
||
126: 1, 132: 1, 133: 5, 140: 1, 143: 1, 144: 5, 147: 10, 151: 20, 152: 1, // Combat
|
||
129: 20, 145: 10, 148: 10, 153: 5, // Masteries
|
||
130: 1, 137: 1, 138: 15, 149: 20, 154: 1, 155: 1, // Warcries
|
||
},
|
||
dru: {
|
||
221: 1, 225: 1, 227: 15, 229: 1, 235: 15, 240: 20, 245: 20, // Elemental
|
||
223: 1, 224: 5, // Shape Shifting
|
||
226: 15, 231: 1, 237: 5, 247: 5, // Summoning
|
||
},
|
||
ass: {
|
||
251: 15, 256: 15, 261: 15, 271: 20, 276: 20, // Traps
|
||
252: 1, 253: 1, 258: 5, 263: 5, 264: 1, 267: 5, 268: 1, 273: 1, 279: 5, // Shadow
|
||
254: 1, 255: 5, 260: 1, 270: 1, // Martial Arts
|
||
},
|
||
}
|