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>
This commit is contained in:
149
tests/fixtures/player.js
vendored
Normal file
149
tests/fixtures/player.js
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
/**
|
||||
* 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]
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user