4.8 KiB
4.8 KiB
進化系統設計文檔
現有實現
基礎進化機制
目前系統已支援基於時間 + 屬性條件的進化:
{
stage: 'child',
durationSeconds: 600, // 時間條件:需要 600 秒
conditions: { // 屬性條件:同時滿足
str: 20,
int: 20
}
}
進化條件檢查
- 時間條件:寵物年齡 >= durationSeconds
- 屬性條件:所有指定屬性都要達標
- 邏輯:時間 AND 屬性 都滿足才進化
進化分支系統設計
方案 1:多分支進化(推薦)
lifecycle: [
{ stage: 'egg', durationSeconds: 0 },
{ stage: 'baby', durationSeconds: 300 },
{
stage: 'child',
durationSeconds: 600,
conditions: { str: 20, int: 20 }
},
// 成年體可以有多種進化路線
{
stage: 'adult_warrior', // 戰士型
durationSeconds: 1200,
conditions: { str: 60, dex: 40 },
priority: 1
},
{
stage: 'adult_mage', // 法師型
durationSeconds: 1200,
conditions: { int: 60, str: 30 },
priority: 2
},
{
stage: 'adult_balanced', // 平衡型
durationSeconds: 1200,
conditions: { str: 50, int: 50, dex: 50 },
priority: 3
},
{
stage: 'adult', // 普通成年(保底)
durationSeconds: 1200,
conditions: {},
priority: 999
}
]
檢查邏輯:
- 時間到達後,檢查所有同階段的進化選項
- 按 priority 從小到大檢查
- 第一個滿足條件的就進化成該階段
方案 2:樹狀進化圖
export const EVOLUTION_TREE = {
tinyTigerCat: {
baby: {
next: ['child'], // 固定進化
conditions: { ageSeconds: 300 }
},
child: {
next: ['warrior', 'mage', 'balanced', 'adult'], // 多選一
conditions: { ageSeconds: 600 },
branches: {
warrior: { str: 60, dex: 40 },
mage: { int: 60, str: 30 },
balanced: { str: 50, int: 50, dex: 50 },
adult: {} // 保底
}
}
}
}
方案 3:觸發式進化
{
stage: 'adult_legendary', // 傳說型
trigger: 'special', // 不走正常流程
conditions: {
str: 100,
int: 100,
dex: 100,
destiny: 'lucky_star', // 需要特定命格
deityFavor: 100 // 神明好感滿
}
}
建議實現
第一階段(基礎)
使用方案 1,在 pet-species.js 中定義多條進化路線:
lifecycle: [
{ stage: 'baby', ... },
{ stage: 'child', ... },
{
stage: 'warrior',
branch: 'combat', // 標記分支類型
durationSeconds: 1200,
conditions: { str: 60, dex: 40 },
priority: 1,
description: '力量與速度的化身'
},
{
stage: 'mage',
branch: 'magic',
durationSeconds: 1200,
conditions: { int: 60 },
priority: 2,
description: '智慧的追求者'
},
{
stage: 'adult',
branch: 'normal',
durationSeconds: 1200,
conditions: {},
priority: 999,
description: '普通的成年體'
}
]
第二階段(進階)
- 添加超進化:需要特殊道具或事件觸發
- 添加退化機制:照顧不當可能退化
- 添加命格影響:特定命格解鎖特殊進化路線
實現細節
修改 checkStageTransition()
checkStageTransition() {
const ageSeconds = this.state.ageSeconds
const currentStage = this.state.stage
// 找出當前階段的所有可能進化
const candidates = this.speciesConfig.lifecycle
.filter(stage =>
stage.durationSeconds > 0 &&
ageSeconds >= stage.durationSeconds &&
stage.stage !== currentStage
)
.sort((a, b) => (a.priority || 999) - (b.priority || 999))
// 檢查第一個滿足條件的
for (const candidate of candidates) {
if (this.checkEvolutionConditions(candidate)) {
this.evolve(candidate.stage)
break
}
}
}
checkEvolutionConditions(stageConfig) {
if (!stageConfig.conditions) return true
const { str, int, dex, ...others } = stageConfig.conditions
if (str && this.state.str < str) return false
if (int && this.state.int < int) return false
if (dex && this.state.dex < dex) return false
// 可擴展:檢查其他條件
return true
}
數值平衡建議
進化時間規劃
- Egg → Baby: 5 分鐘(300秒)
- Baby → Child: 6 小時(21,900秒)
- Child → Adult: 3 天(281,100秒)
屬性要求
- Baby → Child:
- STR 8, INT 8
- 設計目標:6小時內約需餵食 30-40 次,玩耍 60-70 次
- Child → Adult:
- STR 50, INT 50, DEX 50
- 設計目標:3天內累積,需要持續照顧
命格影響
- 武曲星(力量成長+30%)→ 更容易進化成戰士
- 文曲星(智力成長+40%)→ 更容易進化成法師
- 天乙貴人(運勢高)→ 可能觸發特殊進化