diablo2-web/scripts/generate_gems_data.ts

1204 lines
32 KiB
TypeScript

import * as fs from 'fs'
// Data for 35 gems
const GEM_ENTRIES = [
// Amethyst
{
code: 'gcv',
nameEn: 'Chipped Amethyst',
nameZh: '碎裂的紫水晶',
gemType: 'amethyst',
tier: 1,
reqLevel: 1,
weaponsEn: '+40 to Attack Rating',
weaponsZh: '+40 准确率',
armorEn: '+3 to Strength',
armorZh: '+3 力量',
helmsEn: '+3 to Strength',
helmsZh: '+3 力量',
shieldsEn: '+8 Defense',
shieldsZh: '+8 防御',
},
{
code: 'gfv',
nameEn: 'Flawed Amethyst',
nameZh: '裂开的紫水晶',
gemType: 'amethyst',
tier: 2,
reqLevel: 5,
weaponsEn: '+60 to Attack Rating',
weaponsZh: '+60 准确率',
armorEn: '+4 to Strength',
armorZh: '+4 力量',
helmsEn: '+4 to Strength',
helmsZh: '+4 力量',
shieldsEn: '+12 Defense',
shieldsZh: '+12 防御',
},
{
code: 'gsv',
nameEn: 'Amethyst',
nameZh: '紫水晶',
gemType: 'amethyst',
tier: 3,
reqLevel: 12,
weaponsEn: '+80 to Attack Rating',
weaponsZh: '+80 准确率',
armorEn: '+6 to Strength',
armorZh: '+6 力量',
helmsEn: '+6 to Strength',
helmsZh: '+6 力量',
shieldsEn: '+18 Defense',
shieldsZh: '+18 防御',
},
{
code: 'gzv',
nameEn: 'Flawless Amethyst',
nameZh: '无瑕疵的紫水晶',
gemType: 'amethyst',
tier: 4,
reqLevel: 15,
weaponsEn: '+100 to Attack Rating',
weaponsZh: '+100 准确率',
armorEn: '+8 to Strength',
armorZh: '+8 力量',
helmsEn: '+8 to Strength',
helmsZh: '+8 力量',
shieldsEn: '+24 Defense',
shieldsZh: '+24 防御',
},
{
code: 'gpv',
nameEn: 'Perfect Amethyst',
nameZh: '完美的紫水晶',
gemType: 'amethyst',
tier: 5,
reqLevel: 18,
weaponsEn: '+150 to Attack Rating',
weaponsZh: '+150 准确率',
armorEn: '+10 to Strength',
armorZh: '+10 力量',
helmsEn: '+10 to Strength',
helmsZh: '+10 力量',
shieldsEn: '+30 Defense',
shieldsZh: '+30 防御',
},
// Topaz
{
code: 'gcy',
nameEn: 'Chipped Topaz',
nameZh: '碎裂的黄宝石',
gemType: 'topaz',
tier: 1,
reqLevel: 1,
weaponsEn: 'Adds 1-8 Lightning Damage',
weaponsZh: '增加 1-8 闪电伤害',
armorEn: '9% Better Chance of Getting Magic Items',
armorZh: '9% 获得魔法装备几率',
helmsEn: '9% Better Chance of Getting Magic Items',
helmsZh: '9% 获得魔法装备几率',
shieldsEn: 'Lightning Resist +12%',
shieldsZh: '抗电 +12%',
},
{
code: 'gfy',
nameEn: 'Flawed Topaz',
nameZh: '裂开的黄宝石',
gemType: 'topaz',
tier: 2,
reqLevel: 5,
weaponsEn: 'Adds 1-14 Lightning Damage',
weaponsZh: '增加 1-14 闪电伤害',
armorEn: '13% Better Chance of Getting Magic Items',
armorZh: '13% 获得魔法装备几率',
helmsEn: '13% Better Chance of Getting Magic Items',
helmsZh: '13% 获得魔法装备几率',
shieldsEn: 'Lightning Resist +16%',
shieldsZh: '抗电 +16%',
},
{
code: 'gsy',
nameEn: 'Topaz',
nameZh: '黄宝石',
gemType: 'topaz',
tier: 3,
reqLevel: 12,
weaponsEn: 'Adds 1-22 Lightning Damage',
weaponsZh: '增加 1-22 闪电伤害',
armorEn: '16% Better Chance of Getting Magic Items',
armorZh: '16% 获得魔法装备几率',
helmsEn: '16% Better Chance of Getting Magic Items',
helmsZh: '16% 获得魔法装备几率',
shieldsEn: 'Lightning Resist +22%',
shieldsZh: '抗电 +22%',
},
{
code: 'gly',
nameEn: 'Flawless Topaz',
nameZh: '无瑕疵的黄宝石',
gemType: 'topaz',
tier: 4,
reqLevel: 15,
weaponsEn: 'Adds 1-30 Lightning Damage',
weaponsZh: '增加 1-30 闪电伤害',
armorEn: '20% Better Chance of Getting Magic Items',
armorZh: '20% 获得魔法装备几率',
helmsEn: '20% Better Chance of Getting Magic Items',
helmsZh: '20% 获得魔法装备几率',
shieldsEn: 'Lightning Resist +28%',
shieldsZh: '抗电 +28%',
},
{
code: 'gpy',
nameEn: 'Perfect Topaz',
nameZh: '完美的黄宝石',
gemType: 'topaz',
tier: 5,
reqLevel: 18,
weaponsEn: 'Adds 1-40 Lightning Damage',
weaponsZh: '增加 1-40 闪电伤害',
armorEn: '24% Better Chance of Getting Magic Items',
armorZh: '24% 获得魔法装备几率',
helmsEn: '24% Better Chance of Getting Magic Items',
helmsZh: '24% 获得魔法装备几率',
shieldsEn: 'Lightning Resist +40%',
shieldsZh: '抗电 +40%',
},
// Sapphire
{
code: 'gcb',
nameEn: 'Chipped Sapphire',
nameZh: '碎裂的蓝宝石',
gemType: 'sapphire',
tier: 1,
reqLevel: 1,
weaponsEn: 'Adds 1-3 Cold Damage - 1 sec Duration',
weaponsZh: '增加 1-3 冰冻伤害 (持续 1 秒)',
armorEn: '+10 to Mana',
armorZh: '+10 法力',
helmsEn: '+10 to Mana',
helmsZh: '+10 法力',
shieldsEn: 'Cold Resist +12%',
shieldsZh: '抗寒 +12%',
},
{
code: 'gfb',
nameEn: 'Flawed Sapphire',
nameZh: '裂开的蓝宝石',
gemType: 'sapphire',
tier: 2,
reqLevel: 5,
weaponsEn: 'Adds 3-5 Cold Damage - 1.4 sec Duration',
weaponsZh: '增加 3-5 冰冻伤害 (持续 1.4 秒)',
armorEn: '+17 to Mana',
armorZh: '+17 法力',
helmsEn: '+17 to Mana',
helmsZh: '+17 法力',
shieldsEn: 'Cold Resist +16%',
shieldsZh: '抗寒 +16%',
},
{
code: 'gsb',
nameEn: 'Sapphire',
nameZh: '蓝宝石',
gemType: 'sapphire',
tier: 3,
reqLevel: 12,
weaponsEn: 'Adds 4-7 Cold Damage - 2 sec Duration',
weaponsZh: '增加 4-7 冰冻伤害 (持续 2 秒)',
armorEn: '+24 to Mana',
armorZh: '+24 法力',
helmsEn: '+24 to Mana',
helmsZh: '+24 法力',
shieldsEn: 'Cold Resist +22%',
shieldsZh: '抗寒 +22%',
},
{
code: 'glb',
nameEn: 'Flawless Sapphire',
nameZh: '无瑕疵的蓝宝石',
gemType: 'sapphire',
tier: 4,
reqLevel: 15,
weaponsEn: 'Adds 6-10 Cold Damage - 2.4 sec Duration',
weaponsZh: '增加 6-10 冰冻伤害 (持续 2.4 秒)',
armorEn: '+31 to Mana',
armorZh: '+31 法力',
helmsEn: '+31 to Mana',
helmsZh: '+31 法力',
shieldsEn: 'Cold Resist +28%',
shieldsZh: '抗寒 +28%',
},
{
code: 'gpb',
nameEn: 'Perfect Sapphire',
nameZh: '完美的蓝宝石',
gemType: 'sapphire',
tier: 5,
reqLevel: 18,
weaponsEn: 'Adds 10-14 Cold Damage - 3 sec Duration',
weaponsZh: '增加 10-14 冰冻伤害 (持续 3 秒)',
armorEn: '+38 to Mana',
armorZh: '+38 法力',
helmsEn: '+38 to Mana',
helmsZh: '+38 法力',
shieldsEn: 'Cold Resist +40%',
shieldsZh: '抗寒 +40%',
},
// Emerald
{
code: 'gcg',
nameEn: 'Chipped Emerald',
nameZh: '碎裂的绿宝石',
gemType: 'emerald',
tier: 1,
reqLevel: 1,
weaponsEn: '+10 Poison Damage Over 3 Seconds',
weaponsZh: '在 3 秒内造成 10 点毒素伤害',
armorEn: '+3 to Dexterity',
armorZh: '+3 敏捷',
helmsEn: '+3 to Dexterity',
helmsZh: '+3 敏捷',
shieldsEn: 'Poison Resist +12%',
shieldsZh: '抗毒 +12%',
},
{
code: 'gfg',
nameEn: 'Flawed Emerald',
nameZh: '裂开的绿宝石',
gemType: 'emerald',
tier: 2,
reqLevel: 5,
weaponsEn: '+20 Poison Damage Over 4 Seconds',
weaponsZh: '在 4 秒内造成 20 点毒素伤害',
armorEn: '+4 to Dexterity',
armorZh: '+4 敏捷',
helmsEn: '+4 to Dexterity',
helmsZh: '+4 敏捷',
shieldsEn: 'Poison Resist +16%',
shieldsZh: '抗毒 +16%',
},
{
code: 'gsg',
nameEn: 'Emerald',
nameZh: '绿宝石',
gemType: 'emerald',
tier: 3,
reqLevel: 12,
weaponsEn: '+40 Poison Damage Over 5 Seconds',
weaponsZh: '在 5 秒内造成 40 点毒素伤害',
armorEn: '+6 to Dexterity',
armorZh: '+6 敏捷',
helmsEn: '+6 to Dexterity',
helmsZh: '+6 敏捷',
shieldsEn: 'Poison Resist +22%',
shieldsZh: '抗毒 +22%',
},
{
code: 'glg',
nameEn: 'Flawless Emerald',
nameZh: '无瑕疵的绿宝石',
gemType: 'emerald',
tier: 4,
reqLevel: 15,
weaponsEn: '+60 Poison Damage Over 6 Seconds',
weaponsZh: '在 6 秒内造成 60 点毒素伤害',
armorEn: '+8 to Dexterity',
armorZh: '+8 敏捷',
helmsEn: '+8 to Dexterity',
helmsZh: '+8 敏捷',
shieldsEn: 'Poison Resist +28%',
shieldsZh: '抗毒 +28%',
},
{
code: 'gpg',
nameEn: 'Perfect Emerald',
nameZh: '完美的绿宝石',
gemType: 'emerald',
tier: 5,
reqLevel: 18,
weaponsEn: '+100 Poison Damage Over 7 Seconds',
weaponsZh: '在 7 秒内造成 100 点毒素伤害',
armorEn: '+10 to Dexterity',
armorZh: '+10 敏捷',
helmsEn: '+10 to Dexterity',
helmsZh: '+10 敏捷',
shieldsEn: 'Poison Resist +40%',
shieldsZh: '抗毒 +40%',
},
// Ruby
{
code: 'gcr',
nameEn: 'Chipped Ruby',
nameZh: '碎裂的红宝石',
gemType: 'ruby',
tier: 1,
reqLevel: 1,
weaponsEn: 'Adds 3-4 Fire Damage',
weaponsZh: '增加 3-4 火焰伤害',
armorEn: '+10 to Life',
armorZh: '+10 生命',
helmsEn: '+10 to Life',
helmsZh: '+10 生命',
shieldsEn: 'Fire Resist +12%',
shieldsZh: '抗火 +12%',
},
{
code: 'gfr',
nameEn: 'Flawed Ruby',
nameZh: '裂开的红宝石',
gemType: 'ruby',
tier: 2,
reqLevel: 5,
weaponsEn: 'Adds 5-8 Fire Damage',
weaponsZh: '增加 5-8 火焰伤害',
armorEn: '+17 to Life',
armorZh: '+17 生命',
helmsEn: '+17 to Life',
helmsZh: '+17 生命',
shieldsEn: 'Fire Resist +16%',
shieldsZh: '抗火 +16%',
},
{
code: 'gsr',
nameEn: 'Ruby',
nameZh: '红宝石',
gemType: 'ruby',
tier: 3,
reqLevel: 12,
weaponsEn: 'Adds 8-12 Fire Damage',
weaponsZh: '增加 8-12 火焰伤害',
armorEn: '+24 to Life',
armorZh: '+24 生命',
helmsEn: '+24 to Life',
helmsZh: '+24 生命',
shieldsEn: 'Fire Resist +22%',
shieldsZh: '抗火 +22%',
},
{
code: 'glr',
nameEn: 'Flawless Ruby',
nameZh: '无瑕疵的红宝石',
gemType: 'ruby',
tier: 4,
reqLevel: 15,
weaponsEn: 'Adds 10-16 Fire Damage',
weaponsZh: '增加 10-16 火焰伤害',
armorEn: '+31 to Life',
armorZh: '+31 生命',
helmsEn: '+31 to Life',
helmsZh: '+31 生命',
shieldsEn: 'Fire Resist +28%',
shieldsZh: '抗火 +28%',
},
{
code: 'gpr',
nameEn: 'Perfect Ruby',
nameZh: '完美的红宝石',
gemType: 'ruby',
tier: 5,
reqLevel: 18,
weaponsEn: 'Adds 15-20 Fire Damage',
weaponsZh: '增加 15-20 火焰伤害',
armorEn: '+38 to Life',
armorZh: '+38 生命',
helmsEn: '+38 to Life',
helmsZh: '+38 生命',
shieldsEn: 'Fire Resist +40%',
shieldsZh: '抗火 +40%',
},
// Diamond
{
code: 'gcw',
nameEn: 'Chipped Diamond',
nameZh: '碎裂的钻石',
gemType: 'diamond',
tier: 1,
reqLevel: 1,
weaponsEn: '+28% Damage to Undead',
weaponsZh: '+28% 对不死生物的伤害',
armorEn: '+20 to Attack Rating',
armorZh: '+20 准确率',
helmsEn: '+20 to Attack Rating',
helmsZh: '+20 准确率',
shieldsEn: 'All Resistances +6',
shieldsZh: '所有抗性 +6',
},
{
code: 'gfw',
nameEn: 'Flawed Diamond',
nameZh: '裂开的钻石',
gemType: 'diamond',
tier: 2,
reqLevel: 5,
weaponsEn: '+34% Damage to Undead',
weaponsZh: '+34% 对不死生物的伤害',
armorEn: '+40 to Attack Rating',
armorZh: '+40 准确率',
helmsEn: '+40 to Attack Rating',
helmsZh: '+40 准确率',
shieldsEn: 'All Resistances +8',
shieldsZh: '所有抗性 +8',
},
{
code: 'gsw',
nameEn: 'Diamond',
nameZh: '钻石',
gemType: 'diamond',
tier: 3,
reqLevel: 12,
weaponsEn: '+44% Damage to Undead',
weaponsZh: '+44% 对不死生物的伤害',
armorEn: '+60 to Attack Rating',
armorZh: '+60 准确率',
helmsEn: '+60 to Attack Rating',
helmsZh: '+60 准确率',
shieldsEn: 'All Resistances +11',
shieldsZh: '所有抗性 +11',
},
{
code: 'glw',
nameEn: 'Flawless Diamond',
nameZh: '无瑕疵的钻石',
gemType: 'diamond',
tier: 4,
reqLevel: 15,
weaponsEn: '+54% Damage to Undead',
weaponsZh: '+54% 对不死生物的伤害',
armorEn: '+80 to Attack Rating',
armorZh: '+80 准确率',
helmsEn: '+80 to Attack Rating',
helmsZh: '+80 准确率',
shieldsEn: 'All Resistances +14',
shieldsZh: '所有抗性 +14',
},
{
code: 'gpw',
nameEn: 'Perfect Diamond',
nameZh: '完美的钻石',
gemType: 'diamond',
tier: 5,
reqLevel: 18,
weaponsEn: '+68% Damage to Undead',
weaponsZh: '+68% 对不死生物的伤害',
armorEn: '+100 to Attack Rating',
armorZh: '+100 准确率',
helmsEn: '+100 to Attack Rating',
helmsZh: '+100 准确率',
shieldsEn: 'All Resistances +19',
shieldsZh: '所有抗性 +19',
},
// Skull
{
code: 'skc',
nameEn: 'Chipped Skull',
nameZh: '碎裂的骷髅',
gemType: 'skull',
tier: 1,
reqLevel: 1,
weaponsEn: '2% Life Stolen Per Hit, 1% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 2% 生命, 每次命中偷取 1% 法力',
armorEn: 'Regenerate Mana 8%, Replenish Life +2',
armorZh: '法力恢复速度 8%, 生命恢复 +2',
helmsEn: 'Regenerate Mana 8%, Replenish Life +2',
helmsZh: '法力恢复速度 8%, 生命恢复 +2',
shieldsEn: 'Attacker Takes Damage of 4',
shieldsZh: '攻击者受到伤害 4',
},
{
code: 'skf',
nameEn: 'Flawed Skull',
nameZh: '裂开的骷髅',
gemType: 'skull',
tier: 2,
reqLevel: 5,
weaponsEn: '2% Life Stolen Per Hit, 2% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 2% 生命, 每次命中偷取 2% 法力',
armorEn: 'Regenerate Mana 8%, Replenish Life +3',
armorZh: '法力恢复速度 8%, 生命恢复 +3',
helmsEn: 'Regenerate Mana 8%, Replenish Life +3',
helmsZh: '法力恢复速度 8%, 生命恢复 +3',
shieldsEn: 'Attacker Takes Damage of 8',
shieldsZh: '攻击者受到伤害 8',
},
{
code: 'sku',
nameEn: 'Skull',
nameZh: '骷髅',
gemType: 'skull',
tier: 3,
reqLevel: 12,
weaponsEn: '3% Life Stolen Per Hit, 2% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 3% 生命, 每次命中偷取 2% 法力',
armorEn: 'Regenerate Mana 12%, Replenish Life +3',
armorZh: '法力恢复速度 12%, 生命恢复 +3',
helmsEn: 'Regenerate Mana 12%, Replenish Life +3',
helmsZh: '法力恢复速度 12%, 生命恢复 +3',
shieldsEn: 'Attacker Takes Damage of 12',
shieldsZh: '攻击者受到伤害 12',
},
{
code: 'skl',
nameEn: 'Flawless Skull',
nameZh: '无瑕疵的骷髅',
gemType: 'skull',
tier: 4,
reqLevel: 15,
weaponsEn: '3% Life Stolen Per Hit, 3% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 3% 生命, 每次命中偷取 3% 法力',
armorEn: 'Regenerate Mana 12%, Replenish Life +4',
armorZh: '法力恢复速度 12%, 生命恢复 +4',
helmsEn: 'Regenerate Mana 12%, Replenish Life +4',
helmsZh: '法力恢复速度 12%, 生命恢复 +4',
shieldsEn: 'Attacker Takes Damage of 16',
shieldsZh: '攻击者受到伤害 16',
},
{
code: 'skz',
nameEn: 'Perfect Skull',
nameZh: '完美的骷髅',
gemType: 'skull',
tier: 5,
reqLevel: 18,
weaponsEn: '4% Life Stolen Per Hit, 3% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 4% 生命, 每次命中偷取 3% 法力',
armorEn: 'Regenerate Mana 19%, Replenish Life +5',
armorZh: '法力恢复速度 19%, 生命恢复 +5',
helmsEn: 'Regenerate Mana 19%, Replenish Life +5',
helmsZh: '法力恢复速度 19%, 生命恢复 +5',
shieldsEn: 'Attacker Takes Damage of 20',
shieldsZh: '攻击者受到伤害 20',
},
]
// Data for 33 Runes
const RUNE_ENTRIES = [
{
code: 'r01',
num: 1,
letter: 'El',
nameEn: 'El Rune',
nameZh: '艾尔',
reqLevel: 11,
weaponsEn: '+50 to Attack Rating, +1 to Light Radius',
weaponsZh: '+50 准确率, +1 光照范围',
armorEn: '+15 Defense, +1 to Light Radius',
armorZh: '+15 防御, +1 光照范围',
helmsEn: '+15 Defense, +1 to Light Radius',
helmsZh: '+15 防御, +1 光照范围',
shieldsEn: '+15 Defense, +1 to Light Radius',
shieldsZh: '+15 防御, +1 光照范围',
},
{
code: 'r02',
num: 2,
letter: 'Eld',
nameEn: 'Eld Rune',
nameZh: '艾德',
reqLevel: 11,
weaponsEn: '+75% Damage to Undead, +50 to Attack Rating against Undead',
weaponsZh: '+75% 对不死生物的伤害, +50 对不死生物的准确率',
armorEn: '15% Slower Stamina Drain',
armorZh: '减慢体力消耗 15%',
helmsEn: '15% Slower Stamina Drain',
helmsZh: '减慢体力消耗 15%',
shieldsEn: '7% Increased Chance of Blocking',
shieldsZh: '7% 增加格挡几率',
},
{
code: 'r03',
num: 3,
letter: 'Tir',
nameEn: 'Tir Rune',
nameZh: '特尔',
reqLevel: 13,
weaponsEn: '+2 to Mana after each Kill',
weaponsZh: '+2 每击杀一个怪物获得法力',
armorEn: '+2 to Mana after each Kill',
armorZh: '+2 每击杀一个怪物获得法力',
helmsEn: '+2 to Mana after each Kill',
helmsZh: '+2 每击杀一个怪物获得法力',
shieldsEn: '+2 to Mana after each Kill',
shieldsZh: '+2 每击杀一个怪物获得法力',
},
{
code: 'r04',
num: 4,
letter: 'Nef',
nameEn: 'Nef Rune',
nameZh: '那夫',
reqLevel: 13,
weaponsEn: 'Knockback',
weaponsZh: '击退',
armorEn: '+30 Defense vs. Missile',
armorZh: '+30 对远距离武器的防御',
helmsEn: '+30 Defense vs. Missile',
helmsZh: '+30 对远距离武器的防御',
shieldsEn: '+30 Defense vs. Missile',
shieldsZh: '+30 对远距离武器的防御',
},
{
code: 'r05',
num: 5,
letter: 'Eth',
nameEn: 'Eth Rune',
nameZh: '爱斯',
reqLevel: 15,
weaponsEn: '-25% Target Defense',
weaponsZh: '-25% 目标防御',
armorEn: 'Regenerate Mana 15%',
armorZh: '法力恢复速度 15%',
helmsEn: 'Regenerate Mana 15%',
helmsZh: '法力恢复速度 15%',
shieldsEn: 'Regenerate Mana 15%',
shieldsZh: '法力恢复速度 15%',
},
{
code: 'r06',
num: 6,
letter: 'Ith',
nameEn: 'Ith Rune',
nameZh: '伊司',
reqLevel: 15,
weaponsEn: '+9 to Maximum Damage',
weaponsZh: '+9 最大伤害',
armorEn: '15% Damage Taken Goes To Mana',
armorZh: '15% 伤害转化为法力',
helmsEn: '15% Damage Taken Goes To Mana',
helmsZh: '15% 伤害转化为法力',
shieldsEn: '15% Damage Taken Goes To Mana',
shieldsZh: '15% 伤害转化为法力',
},
{
code: 'r07',
num: 7,
letter: 'Tal',
nameEn: 'Tal Rune',
nameZh: '塔尔',
reqLevel: 17,
weaponsEn: '+75 Poison Damage Over 5 Seconds',
weaponsZh: '在 5 秒内造成 75 点毒素伤害',
armorEn: 'Poison Resist +30%',
armorZh: '抗毒 +30%',
helmsEn: 'Poison Resist +30%',
helmsZh: '抗毒 +30%',
shieldsEn: 'Poison Resist +35%',
shieldsZh: '抗毒 +35%',
},
{
code: 'r08',
num: 8,
letter: 'Ral',
nameEn: 'Ral Rune',
nameZh: '拉尔',
reqLevel: 19,
weaponsEn: 'Adds 5-30 Fire Damage',
weaponsZh: '增加 5-30 火焰伤害',
armorEn: 'Fire Resist +30%',
armorZh: '抗火 +30%',
helmsEn: 'Fire Resist +30%',
helmsZh: '抗火 +30%',
shieldsEn: 'Fire Resist +35%',
shieldsZh: '抗火 +35%',
},
{
code: 'r09',
num: 9,
letter: 'Ort',
nameEn: 'Ort Rune',
nameZh: '欧特',
reqLevel: 21,
weaponsEn: 'Adds 1-50 Lightning Damage',
weaponsZh: '增加 1-50 闪电伤害',
armorEn: 'Lightning Resist +30%',
armorZh: '抗电 +30%',
helmsEn: 'Lightning Resist +30%',
helmsZh: '抗电 +30%',
shieldsEn: 'Lightning Resist +35%',
shieldsZh: '抗电 +35%',
},
{
code: 'r10',
num: 10,
letter: 'Thul',
nameEn: 'Thul Rune',
nameZh: '书尔',
reqLevel: 23,
weaponsEn: 'Adds 3-14 Cold Damage (3 sec)',
weaponsZh: '增加 3-14 冰冻伤害 (持续 3 秒)',
armorEn: 'Cold Resist +30%',
armorZh: '抗寒 +30%',
helmsEn: 'Cold Resist +30%',
helmsZh: '抗寒 +30%',
shieldsEn: 'Cold Resist +35%',
shieldsZh: '抗寒 +35%',
},
{
code: 'r11',
num: 11,
letter: 'Amn',
nameEn: 'Amn Rune',
nameZh: '安姆',
reqLevel: 25,
weaponsEn: '7% Life Stolen Per Hit',
weaponsZh: '每次命中偷取 7% 生命',
armorEn: 'Attacker Takes Damage of 14',
armorZh: '攻击者受到伤害 14',
helmsEn: 'Attacker Takes Damage of 14',
helmsZh: '攻击者受到伤害 14',
shieldsEn: 'Attacker Takes Damage of 14',
shieldsZh: '攻击者受到伤害 14',
},
{
code: 'r12',
num: 12,
letter: 'Sol',
nameEn: 'Sol Rune',
nameZh: '索尔',
reqLevel: 27,
weaponsEn: '+9 to Minimum Damage',
weaponsZh: '+9 最小伤害',
armorEn: 'Damage Reduced by 7',
armorZh: '伤害减少 7',
helmsEn: 'Damage Reduced by 7',
helmsZh: '伤害减少 7',
shieldsEn: 'Damage Reduced by 7',
shieldsZh: '伤害减少 7',
},
{
code: 'r13',
num: 13,
letter: 'Shael',
nameEn: 'Shael Rune',
nameZh: '夏',
reqLevel: 29,
weaponsEn: '20% Increased Attack Speed',
weaponsZh: '+20% 增加攻击速度',
armorEn: '20% Faster Hit Recovery',
armorZh: '+20% 快速打击恢复',
helmsEn: '20% Faster Hit Recovery',
helmsZh: '+20% 快速打击恢复',
shieldsEn: '20% Faster Block Rate',
shieldsZh: '+20% 快速格挡率',
},
{
code: 'r14',
num: 14,
letter: 'Dol',
nameEn: 'Dol Rune',
nameZh: '多尔',
reqLevel: 31,
weaponsEn: 'Hit Causes Monster to Flee 25%',
weaponsZh: '击中时使怪物逃跑 25%',
armorEn: 'Replenish Life +7',
armorZh: '生命恢复 +7',
helmsEn: 'Replenish Life +7',
helmsZh: '生命恢复 +7',
shieldsEn: 'Replenish Life +7',
shieldsZh: '生命恢复 +7',
},
{
code: 'r15',
num: 15,
letter: 'Hel',
nameEn: 'Hel Rune',
nameZh: '海尔',
reqLevel: 0,
weaponsEn: 'Requirements -20%',
weaponsZh: '装备需求 -20%',
armorEn: 'Requirements -15%',
armorZh: '装备需求 -15%',
helmsEn: 'Requirements -15%',
helmsZh: '装备需求 -15%',
shieldsEn: 'Requirements -15%',
shieldsZh: '装备需求 -15%',
},
{
code: 'r16',
num: 16,
letter: 'Io',
nameEn: 'Io Rune',
nameZh: '艾欧',
reqLevel: 35,
weaponsEn: '+10 to Vitality',
weaponsZh: '+10 体力',
armorEn: '+10 to Vitality',
armorZh: '+10 体力',
helmsEn: '+10 to Vitality',
helmsZh: '+10 体力',
shieldsEn: '+10 to Vitality',
shieldsZh: '+10 体力',
},
{
code: 'r17',
num: 17,
letter: 'Lum',
nameEn: 'Lum Rune',
nameZh: '卢姆',
reqLevel: 37,
weaponsEn: '+10 to Energy',
weaponsZh: '+10 精力',
armorEn: '+10 to Energy',
armorZh: '+10 精力',
helmsEn: '+10 to Energy',
helmsZh: '+10 精力',
shieldsEn: '+10 to Energy',
shieldsZh: '+10 精力',
},
{
code: 'r18',
num: 18,
letter: 'Ko',
nameEn: 'Ko Rune',
nameZh: '科',
reqLevel: 39,
weaponsEn: '+10 to Dexterity',
weaponsZh: '+10 敏捷',
armorEn: '+10 to Dexterity',
armorZh: '+10 敏捷',
helmsEn: '+10 to Dexterity',
helmsZh: '+10 敏捷',
shieldsEn: '+10 to Dexterity',
shieldsZh: '+10 敏捷',
},
{
code: 'r19',
num: 19,
letter: 'Fal',
nameEn: 'Fal Rune',
nameZh: '法尔',
reqLevel: 41,
weaponsEn: '+10 to Strength',
weaponsZh: '+10 力量',
armorEn: '+10 to Strength',
armorZh: '+10 力量',
helmsEn: '+10 to Strength',
helmsZh: '+10 力量',
shieldsEn: '+10 to Strength',
shieldsZh: '+10 力量',
},
{
code: 'r20',
num: 20,
letter: 'Lem',
nameEn: 'Lem Rune',
nameZh: '蓝姆',
reqLevel: 43,
weaponsEn: '75% Extra Gold from Monsters',
weaponsZh: '+75% 从怪物获得额外金钱',
armorEn: '50% Extra Gold from Monsters',
armorZh: '+50% 从怪物获得额外金钱',
helmsEn: '50% Extra Gold from Monsters',
helmsZh: '+50% 从怪物获得额外金钱',
shieldsEn: '50% Extra Gold from Monsters',
shieldsZh: '+50% 从怪物获得额外金钱',
},
{
code: 'r21',
num: 21,
letter: 'Pul',
nameEn: 'Pul Rune',
nameZh: '普尔',
reqLevel: 45,
weaponsEn: '+75% Damage to Demons, +100 to Attack Rating against Demons',
weaponsZh: '+75% 对恶魔的伤害, +100 对恶魔的准确率',
armorEn: '+30% Enhanced Defense',
armorZh: '+30% 强化防御',
helmsEn: '+30% Enhanced Defense',
helmsZh: '+30% 强化防御',
shieldsEn: '+30% Enhanced Defense',
shieldsZh: '+30% 强化防御',
},
{
code: 'r22',
num: 22,
letter: 'Um',
nameEn: 'Um Rune',
nameZh: '乌姆',
reqLevel: 47,
weaponsEn: '25% Chance of Open Wounds',
weaponsZh: '25% 几率撕开伤口',
armorEn: 'All Resistances +15',
armorZh: '所有抗性 +15',
helmsEn: 'All Resistances +15',
helmsZh: '所有抗性 +15',
shieldsEn: 'All Resistances +22',
shieldsZh: '所有抗性 +22',
},
{
code: 'r23',
num: 23,
letter: 'Mal',
nameEn: 'Mal Rune',
nameZh: '马尔',
reqLevel: 49,
weaponsEn: 'Prevent Monster Heal',
weaponsZh: '防止怪物自愈',
armorEn: 'Magic Damage Reduced by 7',
armorZh: '魔法伤害减少 7',
helmsEn: 'Magic Damage Reduced by 7',
helmsZh: '魔法伤害减少 7',
shieldsEn: 'Magic Damage Reduced by 7',
shieldsZh: '魔法伤害减少 7',
},
{
code: 'r24',
num: 24,
letter: 'Ist',
nameEn: 'Ist Rune',
nameZh: '伊斯特',
reqLevel: 51,
weaponsEn: '30% Better Chance of Getting Magic Items',
weaponsZh: '+30% 获得魔法装备几率',
armorEn: '25% Better Chance of Getting Magic Items',
armorZh: '+25% 获得魔法装备几率',
helmsEn: '25% Better Chance of Getting Magic Items',
helmsZh: '+25% 获得魔法装备几率',
shieldsEn: '25% Better Chance of Getting Magic Items',
shieldsZh: '+25% 获得魔法装备几率',
},
{
code: 'r25',
num: 25,
letter: 'Gul',
nameEn: 'Gul Rune',
nameZh: '古尔',
reqLevel: 53,
weaponsEn: '20% Bonus to Attack Rating',
weaponsZh: '+20% 准确率加成',
armorEn: '+5% to Maximum Poison Resist',
armorZh: '+5% 最大抗毒',
helmsEn: '+5% to Maximum Poison Resist',
helmsZh: '+5% 最大抗毒',
shieldsEn: '+5% to Maximum Poison Resist',
shieldsZh: '+5% 最大抗毒',
},
{
code: 'r26',
num: 26,
letter: 'Vex',
nameEn: 'Vex Rune',
nameZh: '伐克斯',
reqLevel: 55,
weaponsEn: '7% Mana Stolen Per Hit',
weaponsZh: '每次命中偷取 7% 法力',
armorEn: '+5% to Maximum Fire Resist',
armorZh: '+5% 最大抗火',
helmsEn: '+5% to Maximum Fire Resist',
helmsZh: '+5% 最大抗火',
shieldsEn: '+5% to Maximum Fire Resist',
shieldsZh: '+5% 最大抗火',
},
{
code: 'r27',
num: 27,
letter: 'Ohm',
nameEn: 'Ohm Rune',
nameZh: '欧姆',
reqLevel: 57,
weaponsEn: '+50% Enhanced Damage',
weaponsZh: '+50% 增强伤害',
armorEn: '+5% to Maximum Cold Resist',
armorZh: '+5% 最大抗寒',
helmsEn: '+5% to Maximum Cold Resist',
helmsZh: '+5% 最大抗寒',
shieldsEn: '+5% to Maximum Cold Resist',
shieldsZh: '+5% 最大抗寒',
},
{
code: 'r28',
num: 28,
letter: 'Lo',
nameEn: 'Lo Rune',
nameZh: '罗',
reqLevel: 59,
weaponsEn: '20% Deadly Strike',
weaponsZh: '20% 致命打击',
armorEn: '+5% to Maximum Lightning Resist',
armorZh: '+5% 最大抗电',
helmsEn: '+5% to Maximum Lightning Resist',
helmsZh: '+5% 最大抗电',
shieldsEn: '+5% to Maximum Lightning Resist',
shieldsZh: '+5% 最大抗电',
},
{
code: 'r29',
num: 29,
letter: 'Sur',
nameEn: 'Sur Rune',
nameZh: '瑟',
reqLevel: 61,
weaponsEn: 'Hit Blinds Target',
weaponsZh: '致盲目标',
armorEn: 'Increase Maximum Mana 5%',
armorZh: '提升法力上限 5%',
helmsEn: 'Increase Maximum Mana 5%',
helmsZh: '提升法力上限 5%',
shieldsEn: '+50 to Mana',
shieldsZh: '+50 法力',
},
{
code: 'r30',
num: 30,
letter: 'Ber',
nameEn: 'Ber Rune',
nameZh: '贝',
reqLevel: 63,
weaponsEn: '20% Chance of Crushing Blow',
weaponsZh: '20% 几率造成压碎打击',
armorEn: 'Damage Reduced by 8%',
armorZh: '伤害减少 8%',
helmsEn: 'Damage Reduced by 8%',
helmsZh: '伤害减少 8%',
shieldsEn: 'Damage Reduced by 8%',
shieldsZh: '伤害减少 8%',
},
{
code: 'r31',
num: 31,
letter: 'Jah',
nameEn: 'Jah Rune',
nameZh: '乔',
reqLevel: 65,
weaponsEn: "Ignore Target's Defense",
weaponsZh: '无视目标防御',
armorEn: 'Increase Maximum Life 5%',
armorZh: '提升生命上限 5%',
helmsEn: 'Increase Maximum Life 5%',
helmsZh: '提升生命上限 5%',
shieldsEn: '+50 to Life',
shieldsZh: '+50 生命',
},
{
code: 'r32',
num: 32,
letter: 'Cham',
nameEn: 'Cham Rune',
nameZh: '查姆',
reqLevel: 67,
weaponsEn: 'Freeze Target +3',
weaponsZh: '冻结目标 +3',
armorEn: 'Cannot be Frozen',
armorZh: '无法冻结',
helmsEn: 'Cannot be Frozen',
helmsZh: '无法冻结',
shieldsEn: 'Cannot be Frozen',
shieldsZh: '无法冻结',
},
{
code: 'r33',
num: 33,
letter: 'Zod',
nameEn: 'Zod Rune',
nameZh: '萨德',
reqLevel: 69,
weaponsEn: 'Indestructible',
weaponsZh: '无法破坏',
armorEn: 'Indestructible',
armorZh: '无法破坏',
helmsEn: 'Indestructible',
helmsZh: '无法破坏',
shieldsEn: 'Indestructible',
shieldsZh: '无法破坏',
},
]
const content = `/**
* Canonical 1.13c Gems & Runes Data Table and Sockets Specification.
*
* Gold standard reference:
* - 1.13c MPQ data\\\\global\\\\excel\\\\Gems.txt
* - 1.13c MPQ data\\\\global\\\\excel\\\\Misc.txt (levelreq)
* - 1.13c MPQ data\\\\local\\\\lng\\\\eng\\\\patchstring.tbl
*
* Tooltip structure:
* - Title: Item Name (White for Gems, Orange for Runes)
* - Subtitle / Instruction: "Can be Inserted into Socketed Items" ("可镶嵌进有凹槽的装备")
* - Slot Lines (White):
* Weapons: <effects>
* Armor: <effects>
* Helms: <effects>
* Shields: <effects>
* - Bottom Line (Red): "Required Level: <lvl>" ("需要等级: <lvl>")
*/
export interface SocketableSlotInfo {
readonly weaponsEn: string
readonly weaponsZh: string
readonly armorEn: string
readonly armorZh: string
readonly helmsEn: string
readonly helmsZh: string
readonly shieldsEn: string
readonly shieldsZh: string
}
export interface GemInfo extends SocketableSlotInfo {
readonly code: string
readonly nameEn: string
readonly nameZh: string
readonly gemType: 'amethyst' | 'topaz' | 'sapphire' | 'emerald' | 'ruby' | 'diamond' | 'skull'
readonly tier: number
readonly reqLevel: number
}
export interface RuneInfo extends SocketableSlotInfo {
readonly code: string
readonly num: number
readonly letter: string
readonly nameEn: string
readonly nameZh: string
readonly reqLevel: number
/** Legacy compatibility alias for weaponsEn */
readonly weapon?: string
/** Legacy compatibility alias for armorEn */
readonly armor?: string
}
export const GEM_INFO: Record<string, GemInfo> = ${JSON.stringify(
Object.fromEntries(GEM_ENTRIES.map(g => [g.code, g])),
null,
2
)}
export const RUNE_INFO: Record<string, RuneInfo> = ${JSON.stringify(
Object.fromEntries(RUNE_ENTRIES.map(r => [r.code, { ...r, weapon: r.weaponsEn, armor: r.armorEn }])),
null,
2
)}
/**
* Checks whether an item code is a valid 1.13c Gem.
*/
export function isGemCode(code: string | undefined): boolean {
if (!code) return false
return Boolean(GEM_INFO[code.trim().toLowerCase()])
}
/**
* Checks whether an item code is a valid 1.13c Rune (r01..r33).
*/
export function isRuneCode(code: string | undefined): boolean {
if (!code) return false
return Boolean(RUNE_INFO[code.trim().toLowerCase()])
}
/**
* Returns canonical socketable information for any gem or rune code.
*/
export function getSocketableInfo(code: string | undefined): (GemInfo | RuneInfo) | undefined {
if (!code) return undefined
const c = code.trim().toLowerCase()
return GEM_INFO[c] || RUNE_INFO[c]
}
`
fs.writeFileSync('/usr/local/google/home/taodao/d2w-wg1-main/src/game/gems-data.ts', content, 'utf-8')
console.log('Successfully generated src/game/gems-data.ts!')