Features: - Combat system with AP/EP hit calculation and three-layer defense - Auto-combat/farming mode - Item system with stacking support - Skill system with levels, milestones, and parent skill sync - Shop system with dynamic pricing - Inventory management with bulk selling - Event system - Game loop with offline earnings - Save/Load system Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
150 lines
3.1 KiB
JavaScript
150 lines
3.1 KiB
JavaScript
/**
|
|
* Player Store 测试夹具
|
|
*/
|
|
|
|
/**
|
|
* 创建模拟玩家数据
|
|
* @param {Object} overrides - 覆盖的属性
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createMockPlayer(overrides = {}) {
|
|
return {
|
|
baseStats: {
|
|
strength: 10,
|
|
agility: 8,
|
|
dexterity: 8,
|
|
intuition: 10,
|
|
vitality: 10,
|
|
...overrides.baseStats
|
|
},
|
|
currentStats: {
|
|
health: 100,
|
|
maxHealth: 100,
|
|
stamina: 100,
|
|
maxStamina: 100,
|
|
sanity: 100,
|
|
maxSanity: 100,
|
|
...overrides.currentStats
|
|
},
|
|
level: {
|
|
current: 1,
|
|
exp: 0,
|
|
maxExp: 100,
|
|
...overrides.level
|
|
},
|
|
skills: overrides.skills || {},
|
|
equipment: {
|
|
weapon: null,
|
|
armor: null,
|
|
shield: null,
|
|
accessory: null,
|
|
...overrides.equipment
|
|
},
|
|
inventory: overrides.inventory || [],
|
|
currency: {
|
|
copper: 0,
|
|
...overrides.currency
|
|
},
|
|
currentLocation: 'camp',
|
|
flags: overrides.flags || {},
|
|
milestoneBonuses: overrides.milestoneBonuses || {},
|
|
globalBonus: overrides.globalBonus || {
|
|
critRate: 0,
|
|
attackBonus: 0,
|
|
expRate: 1,
|
|
critMult: 0,
|
|
darkPenaltyReduce: 0,
|
|
globalExpRate: 0,
|
|
readingSpeed: 1
|
|
},
|
|
equipmentStats: overrides.equipmentStats || null,
|
|
killCount: overrides.killCount || {}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 创建已解锁技能的玩家
|
|
* @param {string} skillId - 技能ID
|
|
* @param {number} level - 技能等级
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createPlayerWithSkill(skillId, level = 1) {
|
|
return createMockPlayer({
|
|
skills: {
|
|
[skillId]: {
|
|
level,
|
|
exp: 0,
|
|
unlocked: true
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 创建高等级玩家
|
|
* @param {number} level - 玩家等级
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createHighLevelPlayer(level = 10) {
|
|
return createMockPlayer({
|
|
level: {
|
|
current: level,
|
|
exp: 0,
|
|
maxExp: level * 100 * Math.pow(1.5, level - 1)
|
|
},
|
|
baseStats: {
|
|
strength: 10 + level * 2,
|
|
agility: 8 + level * 2,
|
|
dexterity: 8 + level * 2,
|
|
intuition: 10 + level * 2,
|
|
vitality: 10 + level * 2
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 创建受伤的玩家
|
|
* @param {number} healthPercent - 生命值百分比
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createInjuredPlayer(healthPercent = 30) {
|
|
return createMockPlayer({
|
|
currentStats: {
|
|
health: 100 * healthPercent / 100,
|
|
maxHealth: 100,
|
|
stamina: 50,
|
|
maxStamina: 100,
|
|
sanity: 80,
|
|
maxSanity: 100
|
|
}
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 创建富有的玩家
|
|
* @param {number} copper - 铜币数量
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createRichPlayer(copper = 10000) {
|
|
return createMockPlayer({
|
|
currency: { copper }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 创建已装备武器的玩家
|
|
* @param {Object} weapon - 武器对象
|
|
* @returns {Object} 模拟玩家对象
|
|
*/
|
|
export function createPlayerWithWeapon(weapon) {
|
|
return createMockPlayer({
|
|
equipment: {
|
|
weapon: null,
|
|
armor: null,
|
|
shield: null,
|
|
accessory: null
|
|
},
|
|
inventory: [weapon]
|
|
})
|
|
}
|