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:
113
store/player.js
Normal file
113
store/player.js
Normal file
@@ -0,0 +1,113 @@
|
||||
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
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user