Implement Stigmata Set pages
This commit is contained in:
@@ -227,6 +227,7 @@ export interface Stigma {
|
||||
description: string
|
||||
shortName: string
|
||||
mainId: string
|
||||
setId: string
|
||||
skills: EquipmentSkill[]
|
||||
rankUpMaterials: {
|
||||
id: string
|
||||
@@ -246,3 +247,17 @@ export interface StigmataCatalogItem {
|
||||
type: StigmaType
|
||||
maxRarity: 1 | 2 | 3 | 4 | 5
|
||||
}
|
||||
|
||||
export interface StigmataSet {
|
||||
id: string
|
||||
name: string
|
||||
desc: string
|
||||
skills: EquipmentSkill[]
|
||||
stigmaIdList: string[]
|
||||
}
|
||||
|
||||
export interface StigmataSetCatalogItem {
|
||||
id: string
|
||||
name: string
|
||||
stigmataList: { id: string; icon: string; maxRarity: number }[]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { RootStigma, StigmaType } from '../../data/types'
|
||||
import { EquipmentSkill, RootStigma, StigmataSet, StigmaType } from '../../data/types'
|
||||
import { getRawEquipmentSetDataMap } from '../raw/equipmentSetData'
|
||||
import { getRawEquipmentSkillDataMap } from '../raw/equipmentSkillData'
|
||||
import { getRawStigmataDataMap } from '../raw/stigmataData'
|
||||
import { convertEquipmentSkill, getText } from './utils'
|
||||
@@ -7,8 +8,18 @@ export function compileStigmataData() {
|
||||
const rawStigmataDataMap = getRawStigmataDataMap()
|
||||
const rawStigmataDataMapEntries = Object.entries(rawStigmataDataMap)
|
||||
const rawEquipmentSkillDataMap = getRawEquipmentSkillDataMap()
|
||||
const rawEquipmentSetDataMap = getRawEquipmentSetDataMap()
|
||||
const stigmaSetIdMainIdListMap = new Map<string, string[]>()
|
||||
|
||||
const stigmataMainIdStigmataMap = rawStigmataDataMapEntries.reduce((map, [id, rawData]) => {
|
||||
// Bronya calorie has a dummy data
|
||||
if (id === '32274') {
|
||||
return map
|
||||
}
|
||||
// Mei Chrismas does not exist in the game
|
||||
if (rawData.StigmataMainID === 120443) {
|
||||
return map
|
||||
}
|
||||
const mainId = rawData.StigmataMainID.toString()
|
||||
let rootStigma = map.get(mainId)
|
||||
if (rootStigma == null) {
|
||||
@@ -17,6 +28,14 @@ export function compileStigmataData() {
|
||||
stigmata: []
|
||||
}
|
||||
map.set(mainId, rootStigma)
|
||||
|
||||
const setId = rawData.SetID.toString()
|
||||
let mainIdList = stigmaSetIdMainIdListMap.get(setId)
|
||||
if (mainIdList == null) {
|
||||
mainIdList = []
|
||||
stigmaSetIdMainIdListMap.set(setId, mainIdList)
|
||||
}
|
||||
mainIdList.push(mainId)
|
||||
}
|
||||
const [, , icon] = rawData.IconPath.split('/')
|
||||
const [, , smallIcon] = rawData.SmallIcon.split('/')
|
||||
@@ -92,13 +111,72 @@ export function compileStigmataData() {
|
||||
amount: Num
|
||||
}
|
||||
}),
|
||||
setId: rawData.SetID.toString(),
|
||||
mainId
|
||||
})
|
||||
|
||||
return map
|
||||
}, new Map<string, RootStigma>())
|
||||
|
||||
return [...stigmataMainIdStigmataMap.values()]
|
||||
const stigmataSetList = Object.entries(rawEquipmentSetDataMap).map<StigmataSet>(([id, rawData]) => {
|
||||
const skills: EquipmentSkill[] = []
|
||||
|
||||
if (rawData.Prop1ID !== 0) {
|
||||
const skillId = rawData.Prop1ID.toString()
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop1Param1,
|
||||
param1Add: rawData.Prop1Param1Add,
|
||||
param2: rawData.Prop1Param2,
|
||||
param2Add: rawData.Prop1Param2Add,
|
||||
param3: rawData.Prop1Param3,
|
||||
param3Add: rawData.Prop1Param3Add
|
||||
})
|
||||
}
|
||||
if (rawData.Prop2ID !== 0) {
|
||||
const skillId = rawData.Prop2ID.toString()
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop2Param1,
|
||||
param1Add: rawData.Prop2Param1Add,
|
||||
param2: rawData.Prop2Param2,
|
||||
param2Add: rawData.Prop2Param2Add,
|
||||
param3: rawData.Prop2Param3,
|
||||
param3Add: rawData.Prop2Param3Add
|
||||
})
|
||||
}
|
||||
if (rawData.Prop3ID !== 0) {
|
||||
const skillId = rawData.Prop3ID.toString()
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop3Param1,
|
||||
param1Add: rawData.Prop3Param1Add,
|
||||
param2: rawData.Prop3Param2,
|
||||
param2Add: rawData.Prop3Param2Add,
|
||||
param3: rawData.Prop3Param3,
|
||||
param3Add: rawData.Prop3Param3Add
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
id,
|
||||
name: getText(rawData.SetName),
|
||||
desc: getText(rawData.SetDesc),
|
||||
skills,
|
||||
stigmaIdList: stigmaSetIdMainIdListMap.get(id) || []
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
stigmataSetList,
|
||||
stigmataMainIdStigmataMap
|
||||
}
|
||||
}
|
||||
|
||||
function convertStigmataType(rawType: number): StigmaType {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import YAML from 'yaml'
|
||||
import { BattlesuitCatalogItem, WeaponCatalogItem } from '../data/types'
|
||||
import { BattlesuitCatalogItem, Stigma, StigmataSet, WeaponCatalogItem } from '../data/types'
|
||||
|
||||
export const dataDir = path.join(process.cwd(), 'data/v2-pre')
|
||||
|
||||
@@ -14,6 +14,9 @@ export const weaopnCatalogPath = path.join(dataDir, 'weapon-catalog.yaml')
|
||||
export const stigmataDir = path.join(dataDir, 'stigmata')
|
||||
export const stigmataCatalogPath = path.join(dataDir, 'stigmata-catalog.yaml')
|
||||
|
||||
export const stigmataSetsDir = path.join(dataDir, 'stigmata-sets')
|
||||
export const stigmataSetCatalogPath = path.join(dataDir, 'stigmata-set-catalog.yaml')
|
||||
|
||||
export function loadBattlesuitCatalog(): BattlesuitCatalogItem[] {
|
||||
return readYamlFile(battlesuitCatalogPath)
|
||||
}
|
||||
@@ -36,11 +39,20 @@ export function loadStigmataCatalog(): WeaponCatalogItem[] {
|
||||
return readYamlFile(stigmataCatalogPath)
|
||||
}
|
||||
|
||||
export function loadStigmaData(id: string) {
|
||||
export function loadStigmaData(id: string): Stigma {
|
||||
const stigmaDataPath = path.join(stigmataDir, `${id}.yaml`)
|
||||
return readYamlFile(stigmaDataPath)
|
||||
}
|
||||
|
||||
export function loadStigmataSetCatalog(): WeaponCatalogItem[] {
|
||||
return readYamlFile(stigmataSetCatalogPath)
|
||||
}
|
||||
|
||||
export function loadStigmataSetData(id: string): StigmataSet {
|
||||
const stigmataSetPath = path.join(stigmataSetsDir, `${id}.yaml`)
|
||||
return readYamlFile(stigmataSetPath)
|
||||
}
|
||||
|
||||
function readYamlFile(pathname: string) {
|
||||
return YAML.parse(fs.readFileSync(pathname).toString())
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { loadRawData } from './loadRawData'
|
||||
|
||||
export function getRawEquipmentSetDataMap(): RawEquipmentSetDataMap {
|
||||
return loadRawData('EquipmentSetData.json')
|
||||
}
|
||||
|
||||
export type RawEquipmentSetDataMap = {
|
||||
[key: string]: RawEquipmentSetData
|
||||
}
|
||||
|
||||
export interface RawEquipmentSetData {
|
||||
SetName: number
|
||||
SetDesc: number
|
||||
Prop1ID: number
|
||||
SpellEffectNum1: number
|
||||
Prop1Param1: number
|
||||
Prop1Param2: number
|
||||
Prop1Param3: number
|
||||
Prop1Param1Add: number
|
||||
Prop1Param2Add: number
|
||||
Prop1Param3Add: number
|
||||
Prop2ID: number
|
||||
SpellEffectNum2: number
|
||||
Prop2Param1: number
|
||||
Prop2Param2: number
|
||||
Prop2Param3: number
|
||||
Prop2Param1Add: number
|
||||
Prop2Param2Add: number
|
||||
Prop2Param3Add: number
|
||||
Prop3ID: number
|
||||
SpellEffectNum3: number
|
||||
Prop3Param1: number
|
||||
Prop3Param2: number
|
||||
Prop3Param3: number
|
||||
Prop3Param1Add: number
|
||||
Prop3Param2Add: number
|
||||
Prop3Param3Add: number
|
||||
}
|
||||
Reference in New Issue
Block a user