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>
114 lines
2.0 KiB
JavaScript
114 lines
2.0 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
import { ref, computed } from 'vue'
|
|
|
|
export const usePlayerStore = defineStore('player', () => {
|
|
// 基础属性
|
|
const baseStats = ref({
|
|
strength: 10, // 力量
|
|
agility: 8, // 敏捷
|
|
dexterity: 8, // 灵巧
|
|
intuition: 10, // 智力
|
|
vitality: 10 // 体质(影响HP)
|
|
})
|
|
|
|
// 当前资源
|
|
const currentStats = ref({
|
|
health: 100,
|
|
maxHealth: 100,
|
|
stamina: 100,
|
|
maxStamina: 100,
|
|
sanity: 100,
|
|
maxSanity: 100
|
|
})
|
|
|
|
// 主等级
|
|
const level = ref({
|
|
current: 1,
|
|
exp: 0,
|
|
maxExp: 100
|
|
})
|
|
|
|
// 技能
|
|
const skills = ref({})
|
|
|
|
// 装备
|
|
const equipment = ref({
|
|
weapon: null,
|
|
armor: null,
|
|
shield: null,
|
|
accessory: null
|
|
})
|
|
|
|
// 背包
|
|
const inventory = ref([])
|
|
|
|
// 货币(以铜币为单位)
|
|
const currency = ref({
|
|
copper: 0
|
|
})
|
|
|
|
// 当前位置
|
|
const currentLocation = ref('camp')
|
|
|
|
// 标记
|
|
const flags = ref({})
|
|
|
|
// 计算属性:总货币
|
|
const totalCurrency = computed(() => {
|
|
return {
|
|
gold: Math.floor(currency.value.copper / 10000),
|
|
silver: Math.floor((currency.value.copper % 10000) / 100),
|
|
copper: currency.value.copper % 100
|
|
}
|
|
})
|
|
|
|
// 重置玩家数据
|
|
function resetPlayer() {
|
|
baseStats.value = {
|
|
strength: 10,
|
|
agility: 8,
|
|
dexterity: 8,
|
|
intuition: 10,
|
|
vitality: 10
|
|
}
|
|
currentStats.value = {
|
|
health: 100,
|
|
maxHealth: 100,
|
|
stamina: 100,
|
|
maxStamina: 100,
|
|
sanity: 100,
|
|
maxSanity: 100
|
|
}
|
|
level.value = {
|
|
current: 1,
|
|
exp: 0,
|
|
maxExp: 100
|
|
}
|
|
skills.value = {}
|
|
equipment.value = {
|
|
weapon: null,
|
|
armor: null,
|
|
shield: null,
|
|
accessory: null
|
|
}
|
|
inventory.value = []
|
|
currency.value = { copper: 0 }
|
|
currentLocation.value = 'camp'
|
|
flags.value = {}
|
|
}
|
|
|
|
return {
|
|
baseStats,
|
|
currentStats,
|
|
level,
|
|
skills,
|
|
equipment,
|
|
inventory,
|
|
currency,
|
|
totalCurrency,
|
|
currentLocation,
|
|
flags,
|
|
resetPlayer
|
|
}
|
|
})
|