Files
text-adventure-game/tests/fixtures/player.js
Claude cb412544e9 Initial commit: Text Adventure Game
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>
2026-01-21 17:13:51 +08:00

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]
})
}