Add stigmata pages
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { AttributeType, CharacterType, SkillType, TagType, WeaponType } from './types'
|
||||
import { AttributeType, CharacterType, SkillType, StigmaType, TagType, WeaponType } from './types'
|
||||
|
||||
export function getAttributeLabel(type: AttributeType) {
|
||||
switch (type) {
|
||||
@@ -48,6 +48,19 @@ export function getWeaponTypeLabel(type: WeaponType) {
|
||||
}
|
||||
}
|
||||
|
||||
export function getStigmaTypeLabel(type: StigmaType) {
|
||||
switch (type) {
|
||||
case 'top':
|
||||
return '상단'
|
||||
case 'mid':
|
||||
return '중단'
|
||||
case 'bot':
|
||||
return '하단'
|
||||
default:
|
||||
return `Unknown Stigma Type (${type})`
|
||||
}
|
||||
}
|
||||
|
||||
export function getSkillTypeLabel(type: SkillType) {
|
||||
switch (type) {
|
||||
case 'leader':
|
||||
|
||||
@@ -176,7 +176,7 @@ export interface WeaponData {
|
||||
criticalAdd: number
|
||||
resistanceBase: number
|
||||
resistanceAdd: number
|
||||
skills: WeaponSkill[]
|
||||
skills: EquipmentSkill[]
|
||||
rankUpMaterials: {
|
||||
id: string
|
||||
amount: number
|
||||
@@ -184,7 +184,7 @@ export interface WeaponData {
|
||||
powerType: number
|
||||
}
|
||||
|
||||
export interface WeaponSkill {
|
||||
export interface EquipmentSkill {
|
||||
id: string
|
||||
name: string
|
||||
info: string
|
||||
@@ -203,3 +203,46 @@ export interface WeaponSkill {
|
||||
param3: number
|
||||
param3Add: number
|
||||
}
|
||||
|
||||
export type StigmaType = 'top' | 'mid' | 'bot'
|
||||
|
||||
export interface Stigma {
|
||||
id: string
|
||||
rarity: 1 | 2 | 3 | 4 | 5
|
||||
maxRarity: 1 | 2 | 3 | 4 | 5
|
||||
maxLv: number
|
||||
type: StigmaType
|
||||
hpBase: number
|
||||
hpAdd: number
|
||||
attackBase: number
|
||||
attackAdd: number
|
||||
defenceBase: number
|
||||
defenceAdd: number
|
||||
criticalBase: number
|
||||
criticalAdd: number
|
||||
icon: string
|
||||
image: string
|
||||
smallIcon: string
|
||||
name: string
|
||||
description: string
|
||||
shortName: string
|
||||
mainId: string
|
||||
skills: EquipmentSkill[]
|
||||
rankUpMaterials: {
|
||||
id: string
|
||||
amount: number
|
||||
}[]
|
||||
}
|
||||
|
||||
export interface RootStigma {
|
||||
id: string
|
||||
stigmata: Stigma[]
|
||||
}
|
||||
|
||||
export interface StigmataCatalogItem {
|
||||
id: string
|
||||
name: string
|
||||
icon: string
|
||||
type: StigmaType
|
||||
maxRarity: 1 | 2 | 3 | 4 | 5
|
||||
}
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
import { RootStigma, StigmaType } from '../../data/types'
|
||||
import { getRawEquipmentSkillDataMap } from '../raw/equipmentSkillData'
|
||||
import { getRawStigmataDataMap } from '../raw/stigmataData'
|
||||
import { convertEquipmentSkill, getText } from './utils'
|
||||
|
||||
export function compileStigmataData() {
|
||||
const rawStigmataDataMap = getRawStigmataDataMap()
|
||||
const rawStigmataDataMapEntries = Object.entries(rawStigmataDataMap)
|
||||
const rawEquipmentSkillDataMap = getRawEquipmentSkillDataMap()
|
||||
|
||||
const stigmataMainIdStigmataMap = rawStigmataDataMapEntries.reduce((map, [id, rawData]) => {
|
||||
const mainId = rawData.StigmataMainID.toString()
|
||||
let rootStigma = map.get(mainId)
|
||||
if (rootStigma == null) {
|
||||
rootStigma = {
|
||||
id: mainId,
|
||||
stigmata: []
|
||||
}
|
||||
map.set(mainId, rootStigma)
|
||||
}
|
||||
const [, , icon] = rawData.IconPath.split('/')
|
||||
const [, , smallIcon] = rawData.SmallIcon.split('/')
|
||||
|
||||
const skills = []
|
||||
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
|
||||
})
|
||||
}
|
||||
|
||||
rootStigma.stigmata.push({
|
||||
id,
|
||||
rarity: rawData.Rarity,
|
||||
maxRarity: rawData.MaxRarity,
|
||||
maxLv: rawData.MaxLv,
|
||||
type: convertStigmataType(rawData.BaseType),
|
||||
hpBase: rawData.HPBase,
|
||||
hpAdd: rawData.HPAdd,
|
||||
attackBase: rawData.AttackBase,
|
||||
attackAdd: rawData.AttackAdd,
|
||||
defenceBase: rawData.DefenceBase,
|
||||
defenceAdd: rawData.DefenceAdd,
|
||||
criticalBase: rawData.CriticalBase,
|
||||
criticalAdd: rawData.CriticalAdd,
|
||||
icon,
|
||||
image: rawData.ImagePath,
|
||||
smallIcon,
|
||||
name: getText(rawData.DisplayTitle),
|
||||
description: getText(rawData.DisplayDescription),
|
||||
shortName: getText(rawData.ShortName),
|
||||
skills,
|
||||
rankUpMaterials: rawData.EvoMaterial.map(({ ID, Num }) => {
|
||||
return {
|
||||
id: ID.toString(),
|
||||
amount: Num
|
||||
}
|
||||
}),
|
||||
mainId
|
||||
})
|
||||
|
||||
return map
|
||||
}, new Map<string, RootStigma>())
|
||||
|
||||
return [...stigmataMainIdStigmataMap.values()]
|
||||
}
|
||||
|
||||
function convertStigmataType(rawType: number): StigmaType {
|
||||
switch (rawType) {
|
||||
case 1:
|
||||
return 'top'
|
||||
case 2:
|
||||
return 'mid'
|
||||
case 3:
|
||||
return 'bot'
|
||||
default:
|
||||
throw new Error(`Unknown Raw Stigmata Base Type (${rawType})`)
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { RootWeaponData, WeaponData } from '../../data/types'
|
||||
import { getRawEquipmentSkillDataMap, RawEquipmentSkillData } from '../raw/equipmentSkillData'
|
||||
import { getRawEquipmentSkillDataMap } from '../raw/equipmentSkillData'
|
||||
import { getRawWeaponDataMap } from '../raw/weaponData'
|
||||
import { convertTagType, convertWeaponType, getText } from './utils'
|
||||
import { convertEquipmentSkill, convertWeaponType, getText } from './utils'
|
||||
|
||||
export function compileWeaponData(): RootWeaponData[] {
|
||||
const rawWeaponDataMap = getRawWeaponDataMap()
|
||||
@@ -21,7 +21,7 @@ export function compileWeaponData(): RootWeaponData[] {
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertWeaponSkill(rawSkill),
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop1Param1,
|
||||
param1Add: rawData.Prop1Param1Add,
|
||||
param2: rawData.Prop1Param2,
|
||||
@@ -35,7 +35,7 @@ export function compileWeaponData(): RootWeaponData[] {
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertWeaponSkill(rawSkill),
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop2Param1,
|
||||
param1Add: rawData.Prop2Param1Add,
|
||||
param2: rawData.Prop2Param2,
|
||||
@@ -49,7 +49,7 @@ export function compileWeaponData(): RootWeaponData[] {
|
||||
const rawSkill = rawEquipmentSkillDataMap[skillId]
|
||||
skills.push({
|
||||
id: skillId,
|
||||
...convertWeaponSkill(rawSkill),
|
||||
...convertEquipmentSkill(rawSkill),
|
||||
param1: rawData.Prop3Param1,
|
||||
param1Add: rawData.Prop3Param1Add,
|
||||
param2: rawData.Prop3Param2,
|
||||
@@ -100,22 +100,4 @@ export function compileWeaponData(): RootWeaponData[] {
|
||||
weapons: rawWeaponMainIdWeaponDataMap.get(weaponId) || []
|
||||
}
|
||||
})
|
||||
|
||||
function convertWeaponSkill(rawSkill: RawEquipmentSkillData) {
|
||||
const iconName = rawSkill.SkillIconPath.split('/').pop()
|
||||
return {
|
||||
name: getText(rawSkill.SkillName),
|
||||
info: getText(rawSkill.SkillDisplay),
|
||||
icon: iconName != null && iconName.length > 0 ? iconName : undefined,
|
||||
skillCd: rawSkill.SkillCD,
|
||||
skillSpCost: rawSkill.SPCost,
|
||||
skillSpNeed: rawSkill.SPNeed,
|
||||
tags: rawSkill.TagList.map(rawEquipmentSkillTag => {
|
||||
return {
|
||||
type: convertTagType(rawEquipmentSkillTag.TagID),
|
||||
comment: getText(rawEquipmentSkillTag.TagComment)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { TagType, WeaponType } from '../../data/types'
|
||||
import { RawEquipmentSkillData } from '../raw/equipmentSkillData'
|
||||
import { getRawTextMap } from '../raw/textMap'
|
||||
|
||||
export function getText(id: string | number) {
|
||||
@@ -91,3 +92,21 @@ export function convertTagType(rawTagId: number): TagType {
|
||||
|
||||
throw new Error(`Unsupported raw show order(Skill) (${rawTagId})`)
|
||||
}
|
||||
|
||||
export function convertEquipmentSkill(rawSkill: RawEquipmentSkillData) {
|
||||
const iconName = rawSkill.SkillIconPath.split('/').pop()
|
||||
return {
|
||||
name: getText(rawSkill.SkillName),
|
||||
info: getText(rawSkill.SkillDisplay),
|
||||
icon: iconName != null && iconName.length > 0 ? iconName : undefined,
|
||||
skillCd: rawSkill.SkillCD,
|
||||
skillSpCost: rawSkill.SPCost,
|
||||
skillSpNeed: rawSkill.SPNeed,
|
||||
tags: rawSkill.TagList.map(rawEquipmentSkillTag => {
|
||||
return {
|
||||
type: convertTagType(rawEquipmentSkillTag.TagID),
|
||||
comment: getText(rawEquipmentSkillTag.TagComment)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,9 @@ export const battlesuitCatalogPath = path.join(dataDir, 'battlesuit-catalog.yaml
|
||||
export const weaponsDir = path.join(dataDir, 'weapons')
|
||||
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 function loadBattlesuitCatalog(): BattlesuitCatalogItem[] {
|
||||
return readYamlFile(battlesuitCatalogPath)
|
||||
}
|
||||
@@ -29,6 +32,15 @@ export function loadWeaponData(id: string) {
|
||||
return readYamlFile(weaponDataPath)
|
||||
}
|
||||
|
||||
export function loadStigmataCatalog(): WeaponCatalogItem[] {
|
||||
return readYamlFile(stigmataCatalogPath)
|
||||
}
|
||||
|
||||
export function loadStigmaData(id: string) {
|
||||
const stigmaDataPath = path.join(stigmataDir, `${id}.yaml`)
|
||||
return readYamlFile(stigmaDataPath)
|
||||
}
|
||||
|
||||
function readYamlFile(pathname: string) {
|
||||
return YAML.parse(fs.readFileSync(pathname).toString())
|
||||
}
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
import { loadRawData } from './loadRawData'
|
||||
|
||||
export function getRawStigmataDataMap(): RawStigmataDataMap {
|
||||
return loadRawData('StigmataData.json')
|
||||
}
|
||||
|
||||
export type RawStigmataDataMap = {
|
||||
[key: string]: RawStigmaData
|
||||
}
|
||||
|
||||
export interface RawStigmaData {
|
||||
Rarity: 1 | 2 | 3 | 4 | 5
|
||||
MaxRarity: 1 | 2 | 3 | 4 | 5
|
||||
SubRarity: number
|
||||
SubMaxRarity: number
|
||||
Cost: number
|
||||
PowerType: number
|
||||
MaxLv: number
|
||||
ExpType: number
|
||||
SellPriceBase: number
|
||||
SellPriceAdd: number
|
||||
GearExpProvideBase: number
|
||||
GearExpPorvideAdd: number
|
||||
BaseType: number
|
||||
LabelPath: string
|
||||
DisplayTitle: number
|
||||
DisplayDescription: number
|
||||
DisplayNumber: number
|
||||
IconPath: string // 'SpriteOutput/StigmataIcons/S1A_1'
|
||||
ImagePath: string // 'S1A_1'
|
||||
HPBase: number
|
||||
HPAdd: number
|
||||
SPBase: number
|
||||
SPAdd: number
|
||||
AttackBase: number
|
||||
AttackAdd: number
|
||||
DefenceBase: number
|
||||
DefenceAdd: number
|
||||
CriticalBase: number
|
||||
CriticalAdd: number
|
||||
DurabilityMax: number
|
||||
EvoMaterial: [
|
||||
{
|
||||
ID: number
|
||||
Num: number
|
||||
}
|
||||
]
|
||||
EvoID: number
|
||||
Prop1ID: number
|
||||
Prop1Param1: number
|
||||
Prop1Param2: number
|
||||
Prop1Param3: number
|
||||
Prop1Param1Add: number
|
||||
Prop1Param2Add: number
|
||||
Prop1Param3Add: number
|
||||
Prop2ID: number
|
||||
Prop2Param1: number
|
||||
Prop2Param2: number
|
||||
Prop2Param3: number
|
||||
Prop2Param1Add: number
|
||||
Prop2Param2Add: number
|
||||
Prop2Param3Add: number
|
||||
Prop3ID: number
|
||||
Prop3Param1: number
|
||||
Prop3Param2: number
|
||||
Prop3Param3: number
|
||||
Prop3Param1Add: number
|
||||
Prop3Param2Add: number
|
||||
Prop3Param3Add: number
|
||||
Protect: boolean
|
||||
SetID: number
|
||||
SmallIcon: string
|
||||
TattooPath: string
|
||||
OffsetX: number
|
||||
OffsetY: number
|
||||
Scale: number
|
||||
AffixTreeId: number
|
||||
CanRefine: boolean
|
||||
RecycleID: number
|
||||
DisjoinScoinCost: number
|
||||
DisjoinAddMaterial: [
|
||||
{
|
||||
ID: number
|
||||
Num: number
|
||||
}
|
||||
]
|
||||
LinkIDList: number[]
|
||||
Quality: number
|
||||
StigmataMainID: number
|
||||
ShortName: number
|
||||
SellPriceID: number
|
||||
Transcendent: boolean
|
||||
Target: number
|
||||
IsSecurityProtect: boolean
|
||||
GachaMainDropDisplayConfig: number[]
|
||||
GachaGiftDropDisplayConfig: number[]
|
||||
StigmataFilterList: number[]
|
||||
CollaborationSetID: number
|
||||
}
|
||||
Reference in New Issue
Block a user