Refactor weapon data

This commit is contained in:
Sakura Knoll
2022-07-04 08:59:01 +09:00 Unverified
parent 3388151c42
commit f91d61dd93
13 changed files with 100 additions and 319 deletions
-141
View File
@@ -1,141 +0,0 @@
import { BattlesuitSkillGroup } from '../lib/honkai3rd/battlesuits'
import { existsSync, writeFileSync } from '../server/data/fs'
import { listBattlesuits } from '../server/data/honkai3rd/battlesuits'
import { listElfs } from '../server/data/honkai3rd/elfs'
import {
listStigmata,
listStigmataSet,
} from '../server/data/honkai3rd/stigmata'
import { listWeapons } from '../server/data/honkai3rd/weapons'
const locale = 'ko-KR'
export function generateStigmataData() {
const stigmataList = listStigmata()
stigmataList.forEach((stigmata) => {
const krStigmataDataPath = `honkai3rd/${locale}/stigmata/${stigmata.id}.md`
if (existsSync(krStigmataDataPath)) {
return
}
writeFileSync(
krStigmataDataPath,
[
`# ${stigmata.name}`,
`## ${stigmata.skill.name}`,
`${stigmata.skill.description}`,
].join('\n\n')
)
})
}
export function generateStigmataSetData() {
const stigmataSetList = listStigmataSet()
stigmataSetList.forEach((stigmataSet) => {
const krStigmataSetDataPath = `honkai3rd/${locale}/stigmata-sets/${stigmataSet.id}.md`
if (existsSync(krStigmataSetDataPath)) {
return
}
writeFileSync(
krStigmataSetDataPath,
[
`# ${stigmataSet.name}`,
stigmataSet.altName,
`## ${stigmataSet.twoSetSkill.name}`,
`${stigmataSet.twoSetSkill.description}`,
`## ${stigmataSet.threeSetSkill.name}`,
`${stigmataSet.threeSetSkill.description}`,
].join('\n\n')
)
})
}
export function generateWeaponData() {
const weaponList = listWeapons()
weaponList.forEach((weapon) => {
const krWeaponDataPath = `honkai3rd/${locale}/weapons/${weapon.id}.md`
if (existsSync(krWeaponDataPath)) {
return
}
writeFileSync(
krWeaponDataPath,
[
`# ${weapon.name}`,
...weapon.skills.map((skill) => {
return [`## ${skill.name}`, skill.description].join('\n\n')
}),
].join('\n\n')
)
})
}
export function generateElfData() {
const elfList = listElfs()
elfList.forEach((elf) => {
const krElfDataPath = `honkai3rd/${locale}/elfs/${elf.id}.md`
if (existsSync(krElfDataPath)) {
return
}
writeFileSync(
krElfDataPath,
[
`# ${elf.name}`,
...elf.skillRows.map((skillRow) => {
return skillRow
.map((skill, index) => {
return [
`${index === 0 ? '##' : '###'} ${skill.name}`,
skill.description,
].join('\n\n')
})
.join('\n\n')
}),
].join('\n\n')
)
})
}
export function generateBattlesuitData() {
const battlesuitList = listBattlesuits()
battlesuitList.forEach((battlesuit) => {
const krBattlesuitDataPath = `honkai3rd/${locale}/battlesuits/${battlesuit.id}.md`
if (existsSync(krBattlesuitDataPath)) {
return
}
writeFileSync(
krBattlesuitDataPath,
[
`# ${battlesuit.name}`,
stringifySkillGroup(battlesuit.leader),
stringifySkillGroup(battlesuit.passive),
stringifySkillGroup(battlesuit.evasion),
stringifySkillGroup(battlesuit.special),
stringifySkillGroup(battlesuit.ultimate),
stringifySkillGroup(battlesuit.basic),
battlesuit.sp != null ? stringifySkillGroup(battlesuit.sp) : '',
]
.join('\n\n')
.trim()
)
})
}
function stringifySkillGroup(skillGroup: BattlesuitSkillGroup) {
return [
`## ${skillGroup.core.name}`,
skillGroup.core.description,
...skillGroup.subskills.map((subskill) => {
return [`### ${subskill.name}`, subskill.description].join('\n\n')
}),
]
.join('\n\n')
.trim()
}
-41
View File
@@ -1,41 +0,0 @@
import { runScript } from '../lib/utils'
import fs from 'fs'
import path from 'path'
import yaml from 'yaml'
import sortKeys from 'sort-keys'
import { listWeapons } from '../../server/data/honkai3rd/weapons'
const order = [
'id',
'version',
'name',
'krName',
'category',
'rarity',
'atk',
'crt',
'battlesuits',
'originalWeapons',
'sources',
'skills',
'description',
'krDescription',
]
async function migrateWeapons() {
const weapons = listWeapons()
const newDataDir = path.join(__dirname, '../../../data/honkai3rd')
const sortedData = sortKeys(weapons, {
deep: true,
compare: (a, b) => {
return order.indexOf(a) - order.indexOf(b)
},
})
fs.writeFileSync(
path.join(newDataDir, 'weapons.yaml'),
yaml.stringify(sortedData)
)
}
runScript(migrateWeapons)