UPDATE: Update readme and Next 16.07 (CVE-2025-66478)

This commit is contained in:
2025-12-04 23:27:41 +07:00
commit 6b079db470
280 changed files with 364214 additions and 0 deletions

6
src/types/affix.ts Normal file
View File

@@ -0,0 +1,6 @@
export type AffixDetail = {
property: string;
base: number;
step: number;
step_num: number;
}

70
src/types/asDetail.ts Normal file
View File

@@ -0,0 +1,70 @@
import { ChallengeDetail, EventStageDetail } from "./mocDetail"
import { BuffDetail, OptionDetail } from "./pfDetail"
export interface ASDetail {
Id: number
Name: string
Buff?: BuffDetail
BuffList1: OptionDetail[]
BuffList2: OptionDetail[]
BeginTime: string
EndTime: string
Level: ASLevel[]
}
export interface ASLevel {
Id: number
Name: string
Challenge: ChallengeDetail[]
DamageType1: string[]
DamageType2: string[]
MazeGroupID1: number
MazeGroupID2: number
BossMonsterID1: number
BossMonsterID2: number
BossMonsterID1SkillList: number[]
BossMonsterID2SkillList: number[]
BossMonsterConfig1: BossMonsterConfig
BossMonsterConfig2: BossMonsterConfig
EventIDList1: EventStageDetail[]
EventIDList2: EventStageDetail[]
}
export interface BossMonsterConfig {
Difficulty: number
DifficultyList: number[]
TagList: BossTag[]
DifficultyGuideList: BossDifficultyGuide[]
TextGuideList: string[]
PhaseList: BossPhase[]
}
export interface BossTag {
Name: string
Desc: string
Param: number[]
SkillID?: number | null
ParamFix: number[]
Child: BossChildTag[]
}
export interface BossChildTag {
Name: string
Desc: string
Param: number[]
}
export interface BossDifficultyGuide {
Desc: string
Param: number[]
SkillID?: number | null
ParamFix: number[]
}
export interface BossPhase {
Name: string
Desc: string
Answer: string
Difficulty: number
SkillList: number[]
}

25
src/types/card.ts Normal file
View File

@@ -0,0 +1,25 @@
import { LightconeStore, RelicStore } from "./mics";
export interface CharacterInfoCardType {
key: number;
avatar_id: number;
rank: number;
level: number;
lightcone: {
level: number;
rank: number;
item_id: number;
};
relics: {
level: number;
relic_id: number;
relic_set_id: number;
}[];
}
export interface AvatarProfileCardType {
key: number;
profile_name: string,
lightcone?: LightconeStore | null,
relics: Record<string, RelicStore>
}

View File

@@ -0,0 +1,23 @@
export interface CharacterBasicRaw {
release: number;
icon: string;
rank: string;
baseType: string;
damageType: string;
en: string;
desc: string;
kr: string;
cn: string;
jp: string;
}
export interface CharacterBasic {
id: string;
release?: number;
icon: string;
rank: string;
baseType: string;
damageType: string;
desc: string;
lang: Map<string, string>;
}

View File

@@ -0,0 +1,179 @@
export interface CharacterDetail {
Name: string;
Desc: string;
CharaInfo: CharacterInfo;
Rarity: string;
AvatarVOTag: string;
SPNeed: number | null;
BaseType: string;
DamageType: string;
Ranks: Record<string, RankType>;
Skills: Record<string, SkillType>;
SkillTrees: Record<string, Record<string, SkillTreePoint>>;
Memosprite: Memosprite;
Unique: Record<string, UniqueAbility>;
Stats: Record<string, Stat>;
Relics: Relics;
Enhanced: Record<string, EnhancedType>;
RankIcon: string[];
}
export interface EnhancedType {
Descs: string[];
ChangeRankList: unknown;
ChangeSkillTreeList: unknown;
Ranks: Record<string, RankType>;
Skills: Record<string, SkillType>;
SkillTrees: Record<string, Record<string, SkillTreePoint>>;
}
export interface CharacterInfo {
Camp: string | null;
VA: VoiceActors;
Stories: Record<string, string | null>;
Voicelines: string[];
}
export interface VoiceActors {
Chinese: string | null;
Japanese: string | null;
Korean: string | null;
English: string | null;
}
export interface RankType {
Id: number;
Name: string;
Desc: string;
ParamList: number[];
}
export interface SkillType {
Id: number;
Name: string;
Desc: string | null;
SimpleDesc: string;
Type: string;
Tag: string;
SPBase: number | null;
BPNeed: number;
BPAdd: number;
ShowStanceList: number[];
SkillComboValueDelta: number | null;
Level: Record<string, LevelParams>;
}
export interface LevelParams {
Level: number;
ParamList: number[];
}
export type StatusAddType = {
$type: string;
PropertyType: string;
Value: number;
Name: string;
};
export interface SkillTreePoint {
Anchor: string;
AvatarPromotionLimit: number | null;
AvatarLevelLimit: number | null;
DefaultUnlock: boolean;
Icon: string;
LevelUpSkillID: number[];
MaterialList: ItemConfigRow[];
MaxLevel: number;
ParamList: number[];
PointID: number;
PointName: string | null;
PointDesc: string | null;
PointTriggerKey: number;
PointType: number;
PrePoint: string[];
StatusAddList: StatusAddType[];
}
export interface ItemConfigRow {
$type: string;
ItemID: number;
ItemNum: number;
Rarity: string;
}
export interface Memosprite {
Name: string;
Icon: string;
HPBase: string;
HPInherit: string;
HPSkill: number | null;
SpeedBase: string;
SpeedInherit: string;
SpeedSkill: number;
Aggro: number;
Skills: Record<string, SpriteSkill>;
Talent: Record<string, unknown>;
}
export interface SpriteSkill {
Name: string;
Desc: string | null;
SimpleDesc: string;
Type: string | null;
Tag: string;
SPBase: number | null;
BPNeed: number;
BPAdd: number | null;
ShowStanceList: number[];
SkillComboValueDelta: number | null;
Extra: Record<string, Extra>;
Level: Record<string, LevelParams>;
}
export interface UniqueAbility {
Tag: string;
Name: string;
Desc: string;
Param: number[];
Extra: Record<string, Extra>;
}
export interface Extra {
name: string;
desc: string;
param: number[];
}
export interface Stat {
AttackBase: number;
AttackAdd: number;
DefenceBase: number;
DefenceAdd: number;
HPBase: number;
HPAdd: number;
SpeedBase: number;
CriticalChance: number;
CriticalDamage: number;
BaseAggro: number;
Cost: ItemConfigRow[];
}
export interface Relics {
AvatarID: number;
Set4IDList: number[];
Set2IDList: number[];
PropertyList3: string[];
PropertyList4: string[];
PropertyList5: string[];
PropertyList6: string[];
PropertyList: RelicRecommendProperty[];
SubAffixPropertyList: string[];
ScoreRankList: number[];
}
export interface RelicRecommendProperty {
$type: string;
RelicType: string;
PropertyType: string;
}

34
src/types/config_maze.ts Normal file
View File

@@ -0,0 +1,34 @@
export type ASConfigMaze = {
buff_1: number[];
buff_2: number[];
maze_buff: number;
}
export type PFConfigMaze = {
buff: number[];
maze_buff: number;
}
export type MOCConfigMaze = {
maze_buff: number;
}
export type AvatarConfigMaze = {
maze_buff: number[];
}
export type StageConfigMaze = {
stage_id: number;
stage_type: string;
level: number;
monster_list: Array<Record<string, number>>;
};
export type ConfigMaze = {
Avatar: Record<string, AvatarConfigMaze>;
MOC: Record<string, MOCConfigMaze>;
AS: Record<string, ASConfigMaze>;
PF: Record<string, PFConfigMaze>;
Stage: Record<string, StageConfigMaze>;
};

96
src/types/enka.ts Normal file
View File

@@ -0,0 +1,96 @@
interface PrivacySettingInfo {
displayCollection: boolean
displayRecord: boolean
displayRecordTeam: boolean
displayOnlineStatus: boolean
displayDiary: boolean
}
interface RecordInfo {
achievementCount: number
bookCount: number
avatarCount: number
equipmentCount: number
musicCount: number
relicCount: number
challengeInfo: unknown;
maxRogueChallengeScore: number
}
interface SubAffix {
affixId: number
cnt: number
step?: number
}
interface FlatProp {
type: string
value: number
}
interface RelicFlat {
props: FlatProp[]
setName: string
setID: number
}
interface Relic {
mainAffixId: number
subAffixList: SubAffix[]
tid: number
type: number
level: number
_flat: RelicFlat
}
interface SkillTree {
pointId: number
level: number
}
interface EquipmentFlat {
props: FlatProp[]
name: string
}
interface Equipment {
rank: number
tid: number
promotion: number
level: number
_flat: EquipmentFlat
}
export interface AvatarEnkaDetail {
relicList: Relic[]
level: number
promotion: number
rank?: number
skillTreeList: SkillTree[]
equipment: Equipment
avatarId: number
_assist?: boolean
}
interface DetailInfo {
worldLevel: number
privacySettingInfo: PrivacySettingInfo
headIcon: number
signature: string
avatarDetailList: AvatarEnkaDetail[]
platform: string
recordInfo: RecordInfo
uid: number
level: number
nickname: string
isDisplayAvatar: boolean
friendCount: number
personalCardId: number
}
export interface EnkaResponse {
detailInfo: DetailInfo
ttl: number
uid: string
}

23
src/types/eventBasic.ts Normal file
View File

@@ -0,0 +1,23 @@
export interface EventBasicRaw {
param?: number[];
en: string;
id: string;
begin: string;
end: string;
live_begin: string;
live_end: string;
kr: string;
cn: string;
jp: string;
}
export interface EventBasic {
param?: number[];
id: string;
begin: string;
end: string;
live_begin: string;
live_end: string;
lang: Map<string, string>;
}

13
src/types/extraData.ts Normal file
View File

@@ -0,0 +1,13 @@
export interface ExtraData {
theory_craft: {
hp: Record<string, number[]>
cycle_count: number
mode: boolean
}
setting: {
censorship: boolean
cm: boolean
first_person: boolean
hide_ui: boolean
};
}

20
src/types/filter.ts Normal file
View File

@@ -0,0 +1,20 @@
export interface FilterAvatarType {
name: string;
path: string[];
element: string[];
rarity: string[];
locale: string;
}
export interface FilterLightconeType {
path: string[];
rarity: string[];
locale: string;
name: string;
}
export interface FilterRelicType {
locale: string;
name: string;
}

24
src/types/index.ts Normal file
View File

@@ -0,0 +1,24 @@
export * from "./characterBasic"
export * from "./characterDetail"
export * from "./srtools"
export * from "./filter"
export * from "./mics"
export * from "./config_maze"
export * from "./lightconeBasic"
export * from "./lightconeDetail"
export * from "./relicBasic"
export * from "./relicDetail"
export * from "./affix"
export * from "./enka"
export * from "./card"
export * from "./eventBasic"
export * from "./monsterBasic"
export * from "./pfDetail"
export * from "./asDetail"
export * from "./mocDetail"
export * from "./monsterValue"
export * from "./peakDetail"
export * from "./monsterDetail"
export * from "./extraData"
export * from "./showcase"
export * from "./srtools"

View File

@@ -0,0 +1,17 @@
export interface LightConeBasicRaw {
rank: string;
baseType: string;
en: string;
desc: string;
kr: string;
cn: string;
jp: string;
}
export interface LightConeBasic {
id: string;
rank: string;
baseType: string;
desc: string;
lang: Map<string, string>;
}

View File

@@ -0,0 +1,39 @@
export interface LightConeDetail {
Name: string;
Desc: string;
Rarity: string;
BaseType: string;
Refinements: RefinementDetail;
Stats: StatEntryDetail[];
Bonus: Record<string, { type: string, value: number }[]>
}
interface RefinementDetail {
Name: string;
Desc: string;
Level: Record<string, {
ParamList: number[];
}>;
}
interface StatEntryDetail {
EquipmentID: number;
Promotion?: number;
PromotionCostList: PromotionCost[];
PlayerLevelRequire?: number;
WorldLevelRequire?: number;
MaxLevel: number;
BaseHP: number;
BaseHPAdd: number;
BaseAttack: number;
BaseAttackAdd: number;
BaseDefence: number;
BaseDefenceAdd: number;
}
interface PromotionCost {
$type: string;
ItemID: number;
ItemNum: number;
Rarity: string;
}

122
src/types/mics.ts Normal file
View File

@@ -0,0 +1,122 @@
export type AvatarDataStore = {
rank: number,
skills: Record<string, number>
}
export type LightconeStore = {
level: number;
item_id: number;
rank: number;
promotion: number;
}
export type SubAffixStore = {
sub_affix_id: number;
count: number;
step: number;
}
export type RelicStore = {
level: number;
relic_id: number;
relic_set_id: number;
main_affix_id: number;
sub_affixes: SubAffixStore[];
}
export type AvatarProfileStore = {
profile_name: string,
lightcone: LightconeStore | null,
relics: Record<string, RelicStore>
}
export type AvatarStore = {
owner_uid?: number;
avatar_id: number;
data: AvatarDataStore;
level: number;
promotion: number;
techniques: number[];
sp_value: number;
sp_max: number;
can_change_sp: boolean;
enhanced: string;
profileSelect: number;
profileList: AvatarProfileStore[]
}
export type MonsterStore = {
monster_id: number;
level: number;
amount: number;
}
export type DynamicKeyStore = {
key: string;
value: number;
}
export type BattleBuffStore = {
level: number;
id: number;
dynamic_key?: DynamicKeyStore;
}
export type MOCConfigStore = {
event_id: number;
challenge_id: number;
floor_side: string;
use_turbulence_buff: boolean;
use_cycle_count: boolean;
blessings: BattleBuffStore[]
cycle_count: number;
stage_id: number;
monsters: MonsterStore[][];
}
export type PFConfigStore = {
event_id: number;
challenge_id: number;
buff_id: number;
floor_side: string;
blessings: BattleBuffStore[]
cycle_count: number;
stage_id: number;
monsters: MonsterStore[][];
}
export type ASConfigStore = {
event_id: number;
challenge_id: number;
buff_id: number;
floor_side: string;
blessings: BattleBuffStore[]
cycle_count: number;
stage_id: number;
monsters: MonsterStore[][];
}
export type PEAKConfigStore = {
event_id: number;
challenge_id: number;
buff_id: number;
boss_mode: string;
blessings: BattleBuffStore[]
cycle_count: number;
stage_id: number;
monsters: MonsterStore[][];
}
export type CEConfigStore = {
blessings: BattleBuffStore[]
cycle_count: number;
stage_id: number;
monsters: MonsterStore[][];
}
export interface Mics {
avatars: Record<string, AvatarStore>,
battle_type: string;
moc_config: MOCConfigStore;
pf_config: PFConfigStore;
as_config: ASConfigStore;
ce_config: CEConfigStore;
peak_config: PEAKConfigStore
}

50
src/types/mocDetail.ts Normal file
View File

@@ -0,0 +1,50 @@
export interface MocDetail {
Id: number
Name: string
GroupName: string
Desc: string
Param: number[]
Challenge: ChallengeDetail[]
Countdown: number
DamageType1: string[]
DamageType2: string[]
MazeGroupID1: number
MazeGroupID2: number
NpcMonsterIDList1: number[]
NpcMonsterIDList2: number[]
EventIDList1: EventStageDetail[]
EventIDList2: EventStageDetail[]
BeginTime: string
EndTime: string
}
export interface ChallengeDetail {
Name: string
Param?: number | null
}
export interface EventStageDetail {
StageID: number
StageType: string
StageName: number
HardLevelGroup: number
Level: number
EliteGroup?: number
LevelGraphPath: string
StageAbilityConfig: unknown[]
BattleScoringGroup?: number | null
SubLevelGraphs: unknown[]
StageConfigData: StageConfig[]
MonsterList: Record<string, number>[]
LevelLoseCondition: string[]
LevelWinCondition: string[]
Release: boolean
ForbidExitBattle: boolean
MonsterWarningRatio?: number | null
TrialAvatarList: unknown[]
}
export interface StageConfig {
$type: string
[key: string]: string
}

25
src/types/monsterBasic.ts Normal file
View File

@@ -0,0 +1,25 @@
export interface MonsterBasicRaw {
rank: string;
camp: string | null;
icon: string;
child: number[];
weak: string[];
en: string;
desc: string;
kr: string;
cn: string;
jp: string;
}
export interface MonsterBasic {
id: string;
rank: string;
camp: string | null;
icon: string;
child: number[];
weak: string[];
desc: string;
lang: Map<string, string>;
}

View File

@@ -0,0 +1,61 @@
export interface MonsterDetail {
Id: number
Name: string
Desc: string
MonsterCampID: number | null
AttackBase: number
CriticalDamageBase: number
DefenceBase: number
HPBase: number
InitialDelayRatio: number
ImagePath: string
MinimumFatigueRatio: number
Rank: string
SpeedBase: number
StanceBase: number
StanceCount: number
StatusResistanceBase: number
Child: MonsterDetailChild[]
Drop: MonsterDetailDrop[]
}
export interface MonsterDetailChild {
Id: number
AttackModifyRatio: number
DefenceModifyRatio: number
EliteGroup: number
HPModifyRatio: number
SpeedModifyRatio: number
SpeedModifyValue: number | null
StanceModifyRatio: number
StanceWeakList: string[]
HardLevelGroup: number
DamageTypeResistance: MonsterDetailElementResistance[]
SkillList: MonsterDetailSkill[]
}
export interface MonsterDetailElementResistance {
$type: string
DamageType: string
Value: number
}
export interface MonsterDetailSkill {
Id: number
SkillName: string | null
SkillDesc: string | null
DamageType: string
SPHitBase: number | string
}
export interface MonsterDetailDrop {
MonsterTemplateID: number
WorldLevel?: number
AvatarExpReward: number
DisplayItemList: MonsterDetailDropItem[]
}
export interface MonsterDetailDropItem {
$type: string
ID: number
}

23
src/types/monsterValue.ts Normal file
View File

@@ -0,0 +1,23 @@
export interface MonsterChild {
Id: number
AttackModifyRatio: number
DefenceModifyRatio: number
EliteGroup: number
HPModifyRatio: number
SpeedModifyRatio: number
SpeedModifyValue: number | null
StanceModifyRatio: number
HardLevelGroup: number
StanceWeakList: string[]
}
export interface MonsterValue {
Rank: string
AttackBase: number
DefenceBase: number
HPBase: number
SpeedBase: number
StanceBase: number
StatusResistanceBase: number
child: MonsterChild[]
}

37
src/types/peakDetail.ts Normal file
View File

@@ -0,0 +1,37 @@
import { EventStageDetail } from "./mocDetail";
import { InfiniteWave } from "./pfDetail";
export interface PeakDetail {
Id: number;
Name: string;
PreLevel: PeakLevel[];
BossLevel: PeakLevel;
BossConfig: BossConfig;
}
export interface PeakLevel {
Id: number;
Name: string;
DamageType: string[];
MazeGroupID: number;
NpcMonsterIDList: number[];
EventIDList: EventStageDetail[];
TagList: ChallengeTag[];
InfiniteList: Record<string, InfiniteWave>;
}
export interface BossConfig {
HardName: string;
BuffList: ChallengeTag[];
EventIDList: EventStageDetail[];
TagList: ChallengeTag[];
InfiniteList: Record<string, InfiniteWave>;
}
export interface ChallengeTag {
Id: number;
Name: string;
Desc: string;
Param: number[];
}

51
src/types/pfDetail.ts Normal file
View File

@@ -0,0 +1,51 @@
import { ChallengeDetail, EventStageDetail } from "./mocDetail"
export interface PFDetail {
Id: number
Name: string
Buff: BuffDetail
Option: OptionDetail[]
SubOption: OptionDetail[]
BeginTime: string
EndTime: string
Level: PFLevel[]
}
export interface BuffDetail {
Name?: string | null
Desc?: string | null
Param: number[]
}
export interface OptionDetail {
Name: string
Desc: string
Param: number[]
}
export interface PFLevel {
Id: number
Name: string
Challenge: ChallengeDetail[]
DamageType1: string[]
DamageType2: string[]
MazeGroupID1: number
MazeGroupID2: number
NpcMonsterIDList1: number[]
NpcMonsterIDList2: number[]
EventIDList1: EventStageDetail[]
EventIDList2: EventStageDetail[]
InfiniteList1: Record<string, InfiniteWave>
InfiniteList2: Record<string, InfiniteWave>
}
export interface InfiniteWave {
InfiniteWaveID: number
MonsterGroupIDList: number[]
MaxMonsterCount: number
MaxTeammateCount: number
Ability: string
ParamList: number[]
ClearPreviousAbility: boolean
EliteGroup: number
}

28
src/types/relicBasic.ts Normal file
View File

@@ -0,0 +1,28 @@
export interface RelicBasicRawEffect {
en: string;
ParamList: number[];
kr: string;
cn: string;
jp: string;
}
export interface RelicBasicRaw {
icon: string;
en: string;
kr: string;
cn: string;
jp: string;
set: Map<string, RelicBasicRawEffect>;
}
export interface RelicBasicEffect {
ParamList: number[];
lang: Map<string, string>;
}
export interface RelicBasic {
id: string;
icon: string;
lang: Map<string, string>;
set: Map<string, RelicBasicEffect>;
}

19
src/types/relicDetail.ts Normal file
View File

@@ -0,0 +1,19 @@
export interface PartData {
Name: string;
Desc: string;
Story: string;
}
export interface RequireBonus {
Desc: string;
ParamList: number[];
}
export interface RelicDetail {
Name: string;
Icon: string;
Parts: Record<string, PartData>;
RequireNum: Record<string, RequireBonus>;
Bonus: Record<string, { type: string, value: number }[]>
}

26
src/types/showcase.ts Normal file
View File

@@ -0,0 +1,26 @@
export type RelicShowcaseType = {
img: string;
mainAffix: {
property: string;
level: number;
valueAffix: string;
detail: {
name: string;
icon: string;
unit: string;
baseStat: string;
};
};
subAffix: {
property: string;
valueAffix: string;
detail: {
name: string;
icon: string;
unit: string;
baseStat: string;
};
step: number;
count: number;
}[]
}

88
src/types/srtools.ts Normal file
View File

@@ -0,0 +1,88 @@
import { ExtraData } from "./extraData";
export interface SubAffix {
sub_affix_id: number;
count: number;
step: number;
}
export interface RelicJson {
level: number;
relic_id: number;
relic_set_id: number;
main_affix_id: number;
sub_affixes: SubAffix[];
internal_uid: number;
equip_avatar: number;
}
export interface LightconeJson {
level: number;
item_id: number;
equip_avatar: number;
rank: number;
promotion: number;
internal_uid: number;
}
export interface AvatarData {
rank: number,
skills: Record<string, number>
}
export interface AvatarJson {
owner_uid?: number;
avatar_id: number;
data: AvatarData;
level: number;
promotion: number;
techniques: number[];
sp_value: number;
sp_max: number;
}
export interface MonsterJson {
monster_id: number;
level: number;
amount: number;
}
export interface DynamicKeyJson {
key: string;
value: number;
}
//BattleBuff
export interface BattleBuffJson {
level: number;
id: number;
dynamic_key?: DynamicKeyJson;
}
export interface BattleConfigJson {
battle_type: string;
blessings: BattleBuffJson[]
custom_stats: SubAffix[];
cycle_count: number;
stage_id: number;
path_resonance_id: number;
monsters: MonsterJson[][];
}
type LoadoutJson = {
name: string
avatar_id: number
relic_list: string[]
}
export interface FreeSRJson {
key?: string;
lightcones: LightconeJson[];
relics: RelicJson[];
avatars: Record<string, AvatarJson>;
battle_config: BattleConfigJson;
loadout?: LoadoutJson[];
}
export interface PSResponse {
status: number;
message: string;
extra_data?: ExtraData
}