🍱 增加千星奇域元数据

This commit is contained in:
BTMuli
2025-10-27 17:26:33 +08:00
parent 68594a2a76
commit 6eab6c81f1
7 changed files with 3605 additions and 206 deletions

3327
src/data/app/gachaB.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,6 @@
/**
* @file src/data/index.ts
* @description 数据文件入口
* @since Beta v0.8.0
* 数据文件入口
* @since Beta v0.8.4
*/
import type { Schema } from "ajv";
@@ -11,6 +10,7 @@ import achievementSeries from "./app/achievementSeries.json" with { type: "json"
import calendar from "./app/calendar.json" with { type: "json" };
import character from "./app/character.json" with { type: "json" };
import gacha from "./app/gacha.json" with { type: "json" };
import gachaB from "./app/gachaB.json" with { type: "json" };
import nameCards from "./app/namecard.json" with { type: "json" };
import weapon from "./app/weapon.json" with { type: "json" };
import arcBirCalendar from "./archive/birth_calendar.json" with { type: "json" };
@@ -28,6 +28,7 @@ export const AppAchievementSeriesData: Array<TGApp.App.Achievement.Series> = ach
export const AppCalendarData: Array<TGApp.App.Calendar.Item> = calendar;
export const AppCharacterData: Array<TGApp.App.Character.WikiBriefInfo> = character;
export const AppGachaData: Array<TGApp.App.Gacha.PoolItem> = gacha;
export const AppGachaBData: Array<TGApp.App.Gacha.GachaBMeta> = gachaB;
export const AppNameCardsData: Array<TGApp.App.NameCard.Item> = nameCards;
export const AppWeaponData: Array<TGApp.App.Weapon.WikiBriefInfo> = weapon;
// Schema

View File

@@ -1,25 +1,29 @@
/**
* @file enum/game.ts
* @description 游戏相关枚举
* 游戏相关枚举
* @since Beta v0.8.0
*/
/**
* @description 服务器类型
* 服务器类型
* @since Beta v0.8.0
* @const GameServerEnum
*/
export const GameServerEnum: typeof TGApp.Game.Base.ServerType = {
/** 国服-官方服 */
CN_GF01: "cn_gf01",
/** 国服-渠道服 */
CN_QD01: "cn_qd01",
/** 国际服-美服 */
OS_USA: "os_usa",
/** 国际服-欧服 */
OS_EURO: "os_euro",
/** 国际服-亚服 */
OS_ASIA: "os_asia",
/** 国际服-港澳台服 */
OS_CHT: "os_cht",
};
/**
* @description 获取公告服务器描述
* 获取公告服务器描述
* @since Beta v0.8.0
* @param {TGApp.Game.Base.ServerTypeEnum} server 公告服务器
* @return {string} 公告服务器描述
@@ -42,15 +46,20 @@ export function getGameServerDesc(server: TGApp.Game.Base.ServerTypeEnum): strin
}
/**
* @description 近期活动活动类型枚举
* 近期活动活动类型枚举
* @since Beta v0.8.0
* @enum ActCalendarTypeEnum
*/
export const ActCalendarTypeEnum: typeof TGApp.Game.ActCalendar.ActType = {
/** 幽境危战 */
HardChallenge: "ActTypeHardChallenge",
/** 真境剧诗 */
RoleCombat: "ActTypeRoleCombat",
/** 深渊螺旋 */
Tower: "ActTypeTower",
/** 双倍活动 */
Double: "ActTypeDouble",
/** 探索活动 */
Explore: "ActTypeExplore",
/** 其他活动 */
Other: "ActTypeOther",
};

View File

@@ -1,36 +1,59 @@
/**
* @file types/App/Gacha.d.ts
* @description 本应用的祈愿相关类型定义
* @since Beta v0.4.4
* 本应用的祈愿相关类型定义
* @since Beta v0.8.4
*/
/**
* @description 祈愿记录命名空间
* @namespace Gacha
* @since Beta v0.4.4
* @memberof TGApp.App
*/
declare namespace TGApp.App.Gacha {
/**
* @description 祈愿类型枚举
* 祈愿类型枚举
* @since Beta v0.4.4
* @enum {number}
* @property {number} Newbie 新手祈愿 = 100
* @property {number} Normal 常驻祈愿 = 200
* @property {number} CharacterUp 角色活动祈愿 = 301
* @property {number} CharacterUp2 角色活动祈愿2 = 400
* @property {number} WeaponUp 武器活动祈愿 = 302
* @property {number} MixUp 集录祈愿 = 500
* @return WishType
*/
const enum WishType {
const WishType = <const>{
/** 新手祈愿 */
Newbie = 100,
/** 常驻祈愿 */
Normal = 200,
/** 角色活动祈愿 */
CharacterUp = 301,
/** 角色活动祈愿2 */
CharacterUp2 = 400,
/** 武器活动祈愿 */
WeaponUp = 302,
/** 集录祈愿 */
MixUp = 500,
}
};
/**
* 祈愿类型枚举
* @since Beta v0.8.4
*/
type WishTypeEnum = (typeof WishType)[keyof typeof WishType];
/**
* 千星奇域祈愿类型
* @since Beta v0.8.4
*/
const WishTypeB = <const>{
/** 常驻祈愿 */
Normal: "1000",
/** 活动祈愿 */
Event: "2000",
/** 男性活动祈愿1 */
EventBoy1: "20011",
/** 男性活动祈愿2 */
EventBoy2: "20012",
/** 女性活动祈愿1 */
EventGirl1: "20021",
/** 女性活动祈愿2 */
EventGirl2: "20022",
};
/**
* 千星奇域祈愿类型
* @since Beta v0.8.4
*/
type WishTypeBEnum = (typeof WishTypeB)[keyof typeof WishTypeB];
/**
* @description 祈愿记录项
* @interface PoolItem
@@ -47,16 +70,49 @@ declare namespace TGApp.App.Gacha {
* @property {number[]} up4List up四星
* @return PoolItem
*/
interface PoolItem {
type PoolItem = {
/** 卡池名称 */
name: string;
/** 卡池版本 */
version: string;
/** 卡池排序 */
order: number;
/** 卡池横幅 */
banner: string;
/** 卡池开始时间 yyyy-MM-ddTHH:mm:ss+08:00 */
from: string;
/** 卡池结束时间 yyyy-MM-ddTHH:mm:ss+08:00 */
to: string;
type: WishType;
/** 卡池类型 */
type: number;
/** 卡池帖子ID */
postId: string;
up5List: number[];
up4List: number[];
}
/** up五星 */
up5List: Array<number>;
/** up四星 */
up4List: Array<number>;
};
/**
* 千星奇域套装类型
* @since Beta v0.8.4
*/
type GachaBSetType = "装扮部件" | "装扮套装";
/**
* 千星奇域祈愿元数据
* @since Beta v0.8.4
*/
type GachaBMeta = {
/** ID */
id: string;
/** 名称 */
name: string;
/** 图标 */
icon: string;
/** 稀有度 */
rank: number;
/** 类型 */
type: GachaBSetType;
};
}

View File

@@ -1,147 +1,136 @@
/**
* @file src/types/Game/ActCalendar.d.ts
* @description 游戏-活动日历相关类型定义文件
* 游戏-活动日历相关类型定义文件
* @since Beta v0.8.3
*/
declare namespace TGApp.Game.ActCalendar {
/**
* @description 获取活动日历返回响应
* 获取活动日历返回响应
* @since Beta v0.8.0
* @interface Response
* @extends TGApp.BBS.Response.BaseWithData
* @property {ActRes} data - 返回数据
*/
type Response = TGApp.BBS.Response.BaseWithData<ActRes>;
/**
* @description 活动日历返回数据
* 活动日历返回数据
* @since Beta v0.8.0
* @interface ActRes
* @property {Array<ActPool>} avatar_card_pool_list 角色卡池列表
* @property {Array<ActPool>} weapon_card_pool_list 武器卡池列表
* @property {Array<ActPool>} mixed_card_pool_list 混合卡池列表
* @property {Array<ActPool>} selected_avatar_card_pool_list 选中角色卡池列表 // TODO:未知用途
* @property {Array<ActPool>} selected_mixed_card_pool_list 选中混合卡池列表 // TODO:未知用途
* @property {Array<ActItem>} act_list 活动列表
* @property {Array<ActItem>} fixed_act_list 固定活动列表
* @property {Array<ActItem>} selected_act_list 选中活动列表 // TODO:未知用途
*/
type ActRes = {
/** 角色卡池列表 */
avatar_card_pool_list: Array<ActPool>;
/** 武器卡池列表 */
weapon_card_pool_list: Array<ActPool>;
/** 混合卡池列表 */
mixed_card_pool_list: Array<ActPool>;
/** 选中角色卡池列表 */
selected_avatar_card_pool_list: Array<ActPool>;
/** 选中混合卡池列表 */
selected_mixed_card_pool_list: Array<ActPool>;
/** 活动列表 */
act_list: Array<ActItem>;
/** 固定活动列表 */
fixed_act_list: Array<ActItem>;
/** 选中活动列表 */
selected_act_list: Array<ActItem>;
};
/**
* @description 活动卡池信息
* 活动卡池信息
* @since Beta v0.8.0
* @interface ActPool
* @property {number} pool_id 卡池id
* @property {string} version_name 游戏版本 - 5.8
* @property {string} pool_name 卡池名称 - 角色活动祈愿
* @property {number} pool_type 卡池类型 - 1:角色活动祈愿, 2:武器活动祈愿, 3:
* @property {Array<ActPoolAvatar>} avatars 角色列表
* @property {Array<ActPoolWeapon>} weapons 武器列表
* @property {string} start_timestamp 开始时间戳(秒)
* @property {TGApp.Game.Base.DateTime} start_time 开始时间
* @property {string} end_timestamp 结束时间戳(秒)
* @property {TGApp.Game.Base.DateTime} end_time 结束时间
* @property {string} jump_url 跳转链接
* @property {number} pool_status 卡池状态 // 1:未开始 2:进行中 3:已结束
* @property {number} countdown_seconds 距离结束倒计时(秒)
*/
type ActPool = {
/** 卡池id */
pool_id: number;
/** 游戏版本 - 5.8 */
version_name: string;
/** 卡池名称 - 角色活动祈愿 */
pool_name: string;
/** 卡池类型 - 1:角色活动祈愿, 2:武器活动祈愿, 3:混合活动祈愿 */
pool_type: number;
/** 角色列表 */
avatars: Array<ActPoolAvatar>;
/** 武器列表 */
weapons: Array<ActPoolWeapon>;
/** 开始时间戳(秒) */
start_timestamp: string;
/** 开始时间 */
start_time: TGApp.Game.Base.DateTime;
/** 结束时间戳(秒) */
end_timestamp: string;
/** 结束时间 */
end_time: TGApp.Game.Base.DateTime;
/** 跳转链接 */
jump_url: string;
/** 卡池状态 // 1:未开始 2:进行中 3:已结束 */
pool_status: number;
/** 距离结束倒计时(秒) */
countdown_seconds: number;
};
/**
* @description 角色卡池数据
* 角色卡池数据
* @since Beta v0.8.0
* @interface ActPoolAvatar
* @property {number} id 角色id
* @property {string} icon 角色图标
* @property {string} name 角色名称
* @property {string} element 角色元素(英文)
* @property {number} rarity 角色星级
* @property {boolean} is_invisible 是否隐藏
*/
type ActPoolAvatar = {
/** 角色id */
id: number;
/** 角色图标 */
icon: string;
/** 角色名称 */
name: string;
/** 角色元素(英文) */
element: string;
/** 角色星级 */
rarity: number;
/** 是否隐藏 */
is_invisible: boolean;
};
/**
* @description 武器卡池数据
* 武器卡池数据
* @since Beta v0.8.0
* @interface ActPoolWeapon
* @property {number} id 武器id
* @property {string} icon 武器图标
* @property {number} rarity 武器星级
* @property {string} name 武器名称
* @property {string} wiki_url 百科链接
*/
type ActPoolWeapon = {
/** 武器id */
id: number;
/** 武器图标 */
icon: string;
/** 武器星级 */
rarity: number;
/** 武器名称 */
name: string;
/** 百科链接 */
wiki_url: string;
};
/**
* @description 活动类型枚举
* 活动类型枚举
* @since Beta v0.8.0
* @const ActType
* @todo 可能不完整,等待补充
* @property {string} "ActTypeHardChallenge" 幽境危战
* @property {string} "ActTypeRoleCombat" 真境剧诗
* @property {string} "ActTypeTower" 深渊螺旋
* @property {string} "ActTypeDouble" 双倍活动
* @property {string} "ActTypeExplore" 探索活动
* @property {string} "ActTypeOther" 其他活动
* @remarks TODO:可能不完整,等待补充
*/
const ActType = <const>{
/** 幽境危战 */
HardChallenge: "ActTypeHardChallenge",
/** 真境剧诗 */
RoleCombat: "ActTypeRoleCombat",
/** 深渊螺旋 */
Tower: "ActTypeTower",
/** 双倍活动 */
Double: "ActTypeDouble",
/** 探索活动 */
Explore: "ActTypeExplore",
/** 其他活动 */
Other: "ActTypeOther",
};
/**
* @description 活动类型枚举
* 活动类型枚举
* @since Beta v0.8.0
* @enum ActTypeEnum
*/
type ActTypeEnum = (typeof ActType)[keyof typeof ActType] | string;
/**
* @description 活动信息
* 活动信息
* @since Beta v0.8.0
* @interface ActItem
*/
type ActItem =
| ActItemHardChallenge
@@ -152,190 +141,200 @@ declare namespace TGApp.Game.ActCalendar {
| ActItemOther;
/**
* @description 活动信息-通用
* 活动信息-通用
* @since Beta v0.8.0
* @interface ActItemBase
* @template T
* @property {number} id 活动id
* @property {string} name 活动名称
* @property {T} type 活动类型
* @property {string} start_timestamp 开始时间戳(秒)
* @property {TGApp.Game.Base.DateTime} start_time 开始时间
* @property {string} end_timestamp 结束时间戳(秒)
* @property {TGApp.Game.Base.DateTime} end_time 结束时间
* @property {string} desc 活动描述
* @property {string} strategy 活动攻略
* @property {number} countdown_seconds 距离结束倒计时(秒)
* @property {number} status 活动状态 // 1:未开始 2:进行中 3:已结束
* @property {Array<ActReward>} reward_list 活动奖励列表
* @property {boolean} is_finished 是否完成
*/
type ActItemBase<T extends ActTypeEnum> = {
/** 活动id */
id: number;
/** 活动名称 */
name: string;
/** 活动类型 */
type: T;
/** 开始时间戳(秒) */
start_timestamp: string;
/** 开始时间 */
start_time: TGApp.Game.Base.DateTime;
/** 结束时间戳(秒) */
end_timestamp: string;
/** 结束时间 */
end_time: TGApp.Game.Base.DateTime;
/** 活动描述 */
desc: string;
/** 活动攻略 */
strategy: string;
/** 距离结束倒计时(秒) */
countdown_seconds: number;
/**
* 活动状态
* @remarks
* 1:未开始
* 2:进行中
* 3:已结束
*/
status: number;
/** 活动奖励列表 */
reward_list: Array<ActReward>;
/** 是否完成 */
is_finished: boolean;
};
/**
* @description 活动奖励信息
* 活动奖励信息
* @since Beta v0.8.0
* @interface ActReward
* @property {number} item_id 物品id
* @property {string} name 物品名称
* @property {string} icon 物品图标
* @property {string} wiki_url 物品百科链接
* @property {number} num 物品数量
* @property {string} rarity 物品稀有度
* @property {boolean} homepage_show 是否首页展示
*/
type ActReward = {
/** 物品id */
item_id: number;
/** 物品名称 */
name: string;
/** 物品图标 */
icon: string;
/** 物品百科链接 */
wiki_url: string;
/** 物品数量 */
num: number;
/** 物品稀有度 */
rarity: string;
/** 是否首页展示 */
homepage_show: boolean;
};
/**
* @description 活动信息-幽境危战
* 活动信息-幽境危战
* @since Beta v0.8.0
* @interface ActItemHardChallenge
* @extends ActItemBase<"ActTypeHardChallenge">
* @property {ActHardChallenge} hard_challenge_detail 幽境危战活动详情
*/
type ActItemHardChallenge = ActItemBase<"ActTypeHardChallenge"> & {
/** 幽境危战活动详情 */
hard_challenge_detail: ActHardChallenge;
};
/**
* @description 幽境危战活动详情
* 幽境危战活动详情
* @since Beta v0.8.0
* @interface ActHardChallenge
* @property {boolean} is_unlock 是否解锁
* @property {number} difficulty 当前难度
* @property {number} second 挑战耗时(秒)
* @property {string} icon 活动图标
* @property {ActHardChallengeSub} sub 子信息
*/
type ActHardChallenge = {
/** 是否解锁 */
is_unlock: boolean;
/** 当前难度 */
difficulty: number;
/** 挑战耗时(秒) */
second: number;
/** 活动图标 */
icon: string;
/** 子信息 */
sub: ActHardChallengeSub;
};
/**
* @description 幽境危战子信息
* 幽境危战子信息
* @since Beta v0.8.0
* @interface ActHardChallengeSub
* @property {number} seconds 挑战耗时(秒)
* @property {number} x 未知参数
* @property {number} y 未知参数
*/
type ActHardChallengeSub = { seconds: number; x: number; y: number };
type ActHardChallengeSub = {
/** 挑战耗时(秒) */
seconds: number;
/** 未知参数 */
x: number;
/** 未知参数 */
y: number;
};
/**
* @description 活动信息-真境剧诗
* @since Beta v0.8.0
* @interface ActItemRoleCombat
* @extends ActItemBase<"ActTypeRoleCombat">
* @property {ActRoleCombat} role_combat_detail 真境剧诗活动详情
* 活动信息-真境剧诗
* @since Beta v0.8.0剧诗活动详情
*/
type ActItemRoleCombat = ActItemBase<"ActTypeRoleCombat"> & { role_combat_detail: ActRoleCombat };
type ActItemRoleCombat = ActItemBase<"ActTypeRoleCombat"> & {
/** 真境剧诗活动详情 */
role_combat_detail: ActRoleCombat;
};
/**
* @description 真境剧诗活动详情
* 真境剧诗活动详情
* @since Beta v0.8.3
* @interface ActRoleCombat
* @property {number} difficulty_id 难度id
* @property {boolean} has_data 是否有数据
* @property {boolean} is_unlock 是否解锁
* @property {number} max_round_id 最大回合数
* @property {number} tarot_finished_cnt 塔罗牌完成数
*/
type ActRoleCombat = {
/** 难度id */
difficulty_id: number;
/** 是否有数据 */
has_data: boolean;
/** 是否解锁 */
is_unlock: boolean;
/** 最大回合数 */
max_round_id: number;
/** 塔罗牌完成数 */
tarot_finished_cnt: number;
};
/**
* @description 活动信息-深渊螺旋
* 活动信息-深渊螺旋
* @since Beta v0.8.0
* @interface ActItemTower
* @extends ActItemBase<"ActTypeTower">
* @property {ActTower} tower_detail 深渊螺旋活动详情
*/
type ActItemTower = ActItemBase<"ActTypeTower"> & { tower_detail: ActTower };
type ActItemTower = ActItemBase<"ActTypeTower"> & {
/** 深渊螺旋活动详情 */
tower_detail: ActTower;
};
/**
* @description 深渊螺旋活动详情
* 深渊螺旋活动详情
* @since Beta v0.8.0
* @interface ActTower
* @property {boolean} is_unlock 是否解锁
* @property {number} max_star 最大星数
* @property {number} total_star 总星数
* @property {boolean} has_data 是否有数据
*/
type ActTower = { is_unlock: boolean; max_star: number; total_star: number; has_data: boolean };
type ActTower = {
/** 是否解锁 */
is_unlock: boolean;
/** 最大星数 */
max_star: number;
/** 总星数 */
total_star: number;
/** 是否有数据 */
has_data: boolean;
};
/**
* @description 活动信息-双倍活动
* 活动信息-双倍活动
* @since Beta v0.8.0
* @interface ActItemDouble
* @extends ActItemBase<"ActTypeDouble">
* @property {ActDouble} double_detail 双倍活动详情
*/
type ActItemDouble = ActItemBase<"ActTypeDouble"> & { double_detail: ActDouble };
type ActItemDouble = ActItemBase<"ActTypeDouble"> & {
/** 双倍活动详情 */
double_detail: ActDouble;
};
/**
* @description 双倍活动详情
* 双倍活动详情
* @since Beta v0.8.0
* @interface ActDouble
* @property {number} total 总次数
* @property {number} left 剩余次数
*/
type ActDouble = { total: number; left: number };
type ActDouble = {
/** 总次数 */
total: number;
/** 剩余次数 */
left: number;
};
/**
* @description 活动信息-探索活动
* 活动信息-探索活动
* @since Beta v0.8.0
* @interface ActItemExplore
* @extends ActItemBase<"ActTypeExplore">
* @property {ActExplore} explore_detail 探索活动详情
*/
type ActItemExplore = ActItemBase<"ActTypeExplore"> & { explore_detail: ActExplore };
type ActItemExplore = ActItemBase<"ActTypeExplore"> & {
/** 探索活动详情 */
explore_detail: ActExplore;
};
/**
* @description 探索活动详情
* 探索活动详情
* @since Beta v0.8.0
* @interface ActExplore
* @property {number} explore_percent 探索进度百分比
* @property {boolean} is_finished 是否完成
*/
type ActExplore = { explore_percent: number; is_finished: boolean };
type ActExplore = {
/** 探索进度百分比 */
explore_percent: number;
/** 是否完成 */
is_finished: boolean;
};
/**
* @description 活动信息-其他活动
* 活动信息-其他活动
* @since Beta v0.8.0
* @interface ActItemOther
* @extends ActItemBase<"ActTypeOther">
* @property {boolean} is_finished 是否完成
*/
type ActItemOther = ActItemBase<"ActTypeOther"> & { is_finished: boolean };
type ActItemOther = ActItemBase<"ActTypeOther"> & {
/** 是否完成 */
is_finished: boolean;
};
}

View File

@@ -1,54 +1,50 @@
/**
* @file types/Game/Base.d.ts
* @description 游戏相关基础类型定义文件
* 游戏相关基础类型定义文件
* @since Beta v0.8.0
*/
declare namespace TGApp.Game.Base {
/**
* @description 服务器类型
* 服务器类型
* @since Beta v0.8.0
* @const ServerType
* @property {string} "cn_gf01" - 国内-国服
* @property {string} "cn_qd01" - 国内-渠道服
* @property {string} "os_usa" - 海外-美国
* @property {string} "os_euro" - 海外-欧洲
* @property {string} "os_asia" - 海外-亚洲
* @property {string} "os_cht" - 海外-繁体中文
*/
const ServerType = <const>{
/** 国服-官方服 */
CN_GF01: "cn_gf01",
/** 国服-渠道服 */
CN_QD01: "cn_qd01",
/** 国际服-美服 */
OS_USA: "os_usa",
/** 国际服-欧服 */
OS_EURO: "os_euro",
/** 国际服-亚服 */
OS_ASIA: "os_asia",
/** 国际服-港澳台服 */
OS_CHT: "os_cht",
};
/**
* @description 公告服务器类型枚举
* 公告服务器类型枚举
* @since Beta v0.8.0
* @enum ServerTypeEnum
*/
type ServerTypeEnum = (typeof ServerType)[keyof typeof ServerType];
/**
* @description 时间类型
* 时间类型
* @since Beta v0.8.0
* @interface DateTime
* @property {number} year - 年份
* @property {number} month - 月份1-12
* @property {number} day - 日1-31
* @property {number} hour - 小时0-23
* @property {number} minute - 分钟0-59
* @property {number} second - 秒0-59
*/
type DateTime = {
/** 年份 */
year: number;
/** 月份1-12 */
month: number;
/** 日1-31 */
day: number;
/** 小时0-23 */
hour: number;
/** 分钟0-59 */
minute: number;
/** 秒0-59 */
second: number;
};
}

View File

@@ -64,8 +64,19 @@ declare namespace TGApp.Sqlite.GachaRecords {
* @remarks
* 1000-常驻池
* 2000-活动池
* 20011-男活动池
* 20012-男活动池2
* 20021-女活动池
* 20022-女活动池2
*/
gachaType: string;
/**
* 抽卡类型(接口用)
* @remarks
* 100-常驻池
* 200-活动池
*/
opGachaType: string;
/** 抽卡时间 */
time: string;
/** 抽卡物品 ID */