lawless/client/assets/scripts/data/GameData.ts

361 行
7.2 KiB
TypeScript

/**
*
* GDD设计文档定义核心数据结构
*/
/**
*
*/
export enum RaceType {
HUMAN = 'human', // 人族
ELF = 'elf', // 精灵
DWARF = 'dwarf', // 矮人
ORC = 'orc', // 兽人
GOBLIN = 'goblin', // 地精
DRAGONBORN = 'dragonborn', // 龙裔
UNDEAD = 'undead', // 亡灵
DEMON = 'demon', // 魔族
ANGEL = 'angel', // 神族
TITAN = 'titan', // 巨人
WEREWOLF = 'werewolf', // 狼人
VAMPIRE = 'vampire', // 吸血鬼
NEPHILIM = 'nephilim', // 深潜裔
CELESTIAL = 'celestial', // 天人
SPIRIT = 'spirit', // 精魂
FLAME = 'flame', // 火裔
FROST = 'frost', // 冰裔
THUNDER = 'thunder', // 雷裔
EARTH = 'earth', // 土裔
}
/**
*
*/
export enum ProfessionType {
// 人族职业
SWORD_CULTIVATOR = 'sword_cultivator', // 副修
PILL_CULTIVATOR = 'pill_cultivator', // 炼丹
WEAPON_CULTIVATOR = 'weapon_cultivator', // 炼器
FORMATION_CULTIVATOR = 'formation_cultivator', // 阵修
SCHOLAR = 'scholar', // 儒修
MONK = 'monk', // 释修
HERETIC = 'heretic', // 邪修
// 种族专属职业
KNIGHT = 'knight', // 骑士
MAGE = 'mage', // 法师
ROGUE = 'rogue', // 盗贼
RANGER = 'ranger', // 游侠
SHAMAN = 'shaman', // 萨满
NECROMANCER = 'necromancer', // 死灵法师
PALADIN = 'paladin', // 圣骑士
WARLOCK = 'warlock', // 术士
}
/**
*
*/
export enum RealmLevel {
QI_REFINING = 1, // 炼气期
FOUNDATION = 2, // 筑基期
GOLDEN_CORE = 3, // 金丹期
NASCENT_SOUL = 4, // 元婴期
SPIRIT_SEVERING = 5, // 化神期
BODY_INTEGRATION = 6, // 合体期
MAHAYANA = 7, // 大乘期
TRIBULATION = 8, // 渡劫期
ASCENSION = 9, // 飞升
}
/**
*
*/
export enum SubRealm {
EARLY = 1, // 初期
MIDDLE = 2, // 中期
LATE = 3, // 后期
PEAK = 4, // 圆满
HALF_STEP = 5, // 半步
TRANSITION = 6, // 突破中
}
/**
*
*/
export enum ItemGrade {
COMMON = 1, // 凡品
FINE = 2, // 良品
EXCELLENT = 3, // 优品
PREMIUM = 4, // 精品
SUPREME = 5, // 极品
CHAOS = 6, // 混沌
}
/**
*
*/
export enum ItemQuality {
COMMON = 1, // 凡
FINE = 2, // 良
EXCELLENT = 3, // 优
PREMIUM = 4, // 精
SUPREME = 5, // 极
}
/**
*
*/
export interface CharacterData {
id: string;
name: string;
race: RaceType;
profession: ProfessionType;
level: number;
realm: RealmLevel;
subRealm: SubRealm;
// 属性
strength: number; // 力
constitution: number; // 体
wisdom: number; // 悟
speed: number; // 速
agility: number; // 灵
luck: number; // 命
// 资源
copper: number; // 铜钱
spiritStones: number; // 灵石
internalForce: number; // 内力
energy: number; // 能量
maxEnergy: number; // 能量上限
purity: number; // 纯净度
// 状态
hp: number;
maxHp: number;
san: number; // 理智值
alignment: number; // 善恶值 (-1000 ~ +1000)
factionReputation: number; // 门派贡献
// 时间
createdAt: number;
lastLoginAt: number;
totalPlayTime: number;
}
/**
*
*/
export interface EquipmentData {
id: string;
itemId: string;
name: string;
grade: ItemGrade;
quality: ItemQuality;
slot: EquipmentSlot;
stats: { [key: string]: number };
enchants: string[];
durability: number;
maxDurability: number;
}
/**
*
*/
export enum EquipmentSlot {
WEAPON = 'weapon',
HEAD = 'head',
BODY = 'body',
BELT = 'belt',
BOOTS = 'boots',
ACCESSORY = 'accessory',
MOUNT = 'mount',
}
/**
*
*/
export interface ItemData {
id: string;
name: string;
description: string;
grade: ItemGrade;
quality: ItemQuality;
type: ItemType;
stackable: boolean;
maxStack: number;
price: number;
}
/**
*
*/
export enum ItemType {
EQUIPMENT = 'equipment',
MATERIAL = 'material',
PILL = 'pill',
SCROLL = 'scroll',
CURRENCY = 'currency',
QUEST = 'quest',
COSMETIC = 'cosmetic',
}
/**
*
*/
export interface SkillData {
id: string;
name: string;
description: string;
grade: ItemGrade;
type: SkillType;
level: number;
maxLevel: number;
cooldown: number;
energyCost: number;
damage: number;
effects: SkillEffect[];
}
/**
*
*/
export enum SkillType {
ACTIVE = 'active',
PASSIVE = 'passive',
ULTIMATE = 'ultimate',
}
/**
*
*/
export interface SkillEffect {
type: string;
value: number;
duration: number;
chance: number;
}
/**
*
*/
export interface SectData {
id: string;
name: string;
description: string;
faction: string;
buildings: SectBuilding[];
reputation: number;
contribution: number;
}
/**
*
*/
export interface SectBuilding {
id: string;
name: string;
level: number;
description: string;
unlockCondition: string;
}
/**
*
*/
export interface MapLocation {
id: string;
name: string;
description: string;
realmRequirement: RealmLevel;
type: LocationType;
x: number;
y: number;
resources: string[];
events: string[];
}
/**
*
*/
export enum LocationType {
SAFE_ZONE = 'safe_zone',
WILDERNESS = 'wilderness',
DUNGEON = 'dungeon',
CITY = 'city',
SECT = 'sect',
}
/**
*
*/
export interface CombatData {
id: string;
type: CombatType;
player: CombatParticipant;
enemy: CombatParticipant;
rounds: CombatRound[];
result: CombatResult;
startTime: number;
endTime: number;
}
/**
*
*/
export enum CombatType {
PVE = 'pve',
PVP = 'pvp',
BOSS = 'boss',
DUNGEON = 'dungeon',
}
/**
*
*/
export interface CombatParticipant {
id: string;
name: string;
race: RaceType;
profession: ProfessionType;
level: number;
hp: number;
maxHp: number;
energy: number;
maxEnergy: number;
stats: { [key: string]: number };
skills: string[];
buffs: string[];
debuffs: string[];
}
/**
*
*/
export interface CombatRound {
roundNumber: number;
events: CombatEvent[];
}
/**
*
*/
export interface CombatEvent {
type: 'attack' | 'skill' | 'buff' | 'debuff' | 'dodge' | 'crit' | 'heal' | 'damage';
actor: string;
target: string;
value: number;
description: string;
isCrit: boolean;
}
/**
*
*/
export interface CombatResult {
winner: 'player' | 'enemy' | 'draw';
rewards: { [key: string]: number };
experience: number;
reputation: number;
}