Implement base damage calculation system for spells

- Add base and growth values to all 36 spells across heal_single, damage_single, damage_aoe, and heal_aoe categories in spells.php
- Map base values: heal [8, 18, 38, 65], fire [5, 12, 25, 45], ice [4, 10, 22, 42], thunder [6, 14, 28, 48], aoe damage [4-6, 10-14, 22-28, 42-48]
- Map growth rates: heal [0.8, 1.0, 1.2, 1.5], fire [0.6, 0.8, 1.0, 1.2], ice [0.5, 0.7, 0.95, 1.15], thunder [0.7, 0.9, 1.1, 1.3]
- Modify createSpell() in Item.php to calculate final base damage using formula: finalValue = base + (level * growth) + randomBonus(15%)
- All spells now generate with calculated base values that scale with level and quality tier
- This enables proper damage/healing scaling mechanics in combat system

Formula implementation:
- baseValue = spellInfo['base'][$qualityIndex]
- growth = spellInfo['growth'][$qualityIndex]
- randomBonus = rand(0, max(1, (int)($baseValue * 0.15)))
- finalBaseValue = (int)($baseValue + ($level * $growth) + $randomBonus)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hant 2025-12-05 23:01:35 +08:00
parent 82b6b27563
commit cd020e1240
2 changed files with 74 additions and 0 deletions

View File

@ -21,6 +21,8 @@ return [
// 品质参数:[common, rare, epic, legendary] // 品质参数:[common, rare, epic, legendary]
'heal_ratio' => [0.5, 0.8, 1.2, 1.8], // 魔攻倍数 'heal_ratio' => [0.5, 0.8, 1.2, 1.8], // 魔攻倍数
'heal_base' => [20, 40, 70, 120], // 基础治疗值 'heal_base' => [20, 40, 70, 120], // 基础治疗值
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
// 2. 及时救难 - 生命值百分比型 (恢复 = 自己最大生命值 × 百分比) // 2. 及时救难 - 生命值百分比型 (恢复 = 自己最大生命值 × 百分比)
@ -32,6 +34,8 @@ return [
'level_req' => 5, 'level_req' => 5,
'desc' => '将自己的部分生命值转移给队友', 'desc' => '将自己的部分生命值转移给队友',
'heal_ratio' => [0.3, 0.4, 0.5, 0.6], // 最大生命值百分比 'heal_ratio' => [0.3, 0.4, 0.5, 0.6], // 最大生命值百分比
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
// 3. 活力术 - 混合型 (恢复 = (魔攻 + 物攻) × 倍数 + 基础值) // 3. 活力术 - 混合型 (恢复 = (魔攻 + 物攻) × 倍数 + 基础值)
@ -44,6 +48,8 @@ return [
'desc' => '结合物理和魔法的治疗法术', 'desc' => '结合物理和魔法的治疗法术',
'heal_ratio' => [0.3, 0.5, 0.7, 1.0], // (魔攻+物攻) 倍数 'heal_ratio' => [0.3, 0.5, 0.7, 1.0], // (魔攻+物攻) 倍数
'heal_base' => [15, 30, 50, 80], 'heal_base' => [15, 30, 50, 80],
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
// 4. 生命之泉 - 基于当前生命值缺口 (恢复 = 缺失血量 × 百分比) // 4. 生命之泉 - 基于当前生命值缺口 (恢复 = 缺失血量 × 百分比)
@ -55,6 +61,8 @@ return [
'level_req' => 18, 'level_req' => 18,
'desc' => '根据队友缺失的生命值比例进行治疗', 'desc' => '根据队友缺失的生命值比例进行治疗',
'heal_ratio' => [0.4, 0.55, 0.7, 0.85], // 缺失生命值百分比 'heal_ratio' => [0.4, 0.55, 0.7, 0.85], // 缺失生命值百分比
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
// 5. 暴击治疗 - 与暴击率相关 (恢复 = 魔攻 × 倍数 × (1 + 暴击率×特殊系数)) // 5. 暴击治疗 - 与暴击率相关 (恢复 = 魔攻 × 倍数 × (1 + 暴击率×特殊系数))
@ -67,6 +75,8 @@ return [
'desc' => '暴击率越高,治疗效果越强', 'desc' => '暴击率越高,治疗效果越强',
'heal_ratio' => [0.4, 0.65, 0.95, 1.4], // 基础魔攻倍数 'heal_ratio' => [0.4, 0.65, 0.95, 1.4], // 基础魔攻倍数
'crit_bonus' => [0.5, 0.7, 1.0, 1.5], // 暴击率加成系数 'crit_bonus' => [0.5, 0.7, 1.0, 1.5], // 暴击率加成系数
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
// 6. 援护术 - 基于防御属性 (恢复 = (物防+魔防) × 倍数 + 固定值) // 6. 援护术 - 基于防御属性 (恢复 = (物防+魔防) × 倍数 + 固定值)
@ -79,6 +89,8 @@ return [
'desc' => '根据防御力进行治疗,防御越高效果越好', 'desc' => '根据防御力进行治疗,防御越高效果越好',
'heal_ratio' => [0.8, 1.2, 1.8, 2.5], // (物防+魔防) 倍数 'heal_ratio' => [0.8, 1.2, 1.8, 2.5], // (物防+魔防) 倍数
'heal_base' => [10, 20, 35, 60], 'heal_base' => [10, 20, 35, 60],
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
], ],
], ],
@ -93,6 +105,8 @@ return [
'level_req' => 1, 'level_req' => 1,
'desc' => '发出一团火球,对单个敌人造成伤害', 'desc' => '发出一团火球,对单个敌人造成伤害',
'damage_ratio' => [1.2, 1.6, 2.0, 2.6], 'damage_ratio' => [1.2, 1.6, 2.0, 2.6],
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
], ],
// 11. 冰锥术 - 魔攻型 // 11. 冰锥术 - 魔攻型
@ -104,6 +118,8 @@ return [
'level_req' => 6, 'level_req' => 6,
'desc' => '凝聚寒冰之力,发出锐利冰锥', 'desc' => '凝聚寒冰之力,发出锐利冰锥',
'damage_ratio' => [1.3, 1.8, 2.2, 3.0], 'damage_ratio' => [1.3, 1.8, 2.2, 3.0],
'base' => [4, 10, 22, 42], // 基础伤害值
'growth' => [0.5, 0.7, 0.95, 1.15], // 等级成长系数
], ],
// 12. 雷击术 - 物攻型 (伤害 = 物攻 × 倍数) // 12. 雷击术 - 物攻型 (伤害 = 物攻 × 倍数)
@ -115,6 +131,8 @@ return [
'level_req' => 10, 'level_req' => 10,
'desc' => '召唤雷电直击单个敌人,与物攻相关', 'desc' => '召唤雷电直击单个敌人,与物攻相关',
'damage_ratio' => [1.4, 1.9, 2.3, 3.2], 'damage_ratio' => [1.4, 1.9, 2.3, 3.2],
'base' => [6, 14, 28, 48], // 基础伤害值
'growth' => [0.7, 0.9, 1.1, 1.3], // 等级成长系数
], ],
// 13. 烈焰焚天 - 混合型 (伤害 = (魔攻 + 物攻) × 倍数) // 13. 烈焰焚天 - 混合型 (伤害 = (魔攻 + 物攻) × 倍数)
@ -126,6 +144,8 @@ return [
'level_req' => 18, 'level_req' => 18,
'desc' => '释放强大的火焰,伤害与双攻相关', 'desc' => '释放强大的火焰,伤害与双攻相关',
'damage_ratio' => [0.8, 1.1, 1.5, 2.0], 'damage_ratio' => [0.8, 1.1, 1.5, 2.0],
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
], ],
// 14. 诛仙剑气 - 物攻 + 暴击型 (伤害 = 物攻 × 倍数 × (1 + 暴击伤害系数)) // 14. 诛仙剑气 - 物攻 + 暴击型 (伤害 = 物攻 × 倍数 × (1 + 暴击伤害系数))
@ -138,6 +158,8 @@ return [
'desc' => '凝聚剑意,暴击伤害系数越高效果越强', 'desc' => '凝聚剑意,暴击伤害系数越高效果越强',
'damage_ratio' => [1.5, 2.0, 2.6, 3.5], 'damage_ratio' => [1.5, 2.0, 2.6, 3.5],
'crit_dmg_bonus' => [0.3, 0.5, 0.8, 1.2], // 暴击伤害加成系数 'crit_dmg_bonus' => [0.3, 0.5, 0.8, 1.2], // 暴击伤害加成系数
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
], ],
// 15. 狂暴斩 - 低防御有加成 (伤害 = 物攻 × 倍数 × (1 + (100-敌人防御百分比)×系数)) // 15. 狂暴斩 - 低防御有加成 (伤害 = 物攻 × 倍数 × (1 + (100-敌人防御百分比)×系数))
@ -149,6 +171,8 @@ return [
'level_req' => 20, 'level_req' => 20,
'desc' => '攻击防御低的敌人伤害更高', 'desc' => '攻击防御低的敌人伤害更高',
'damage_ratio' => [1.1, 1.5, 2.0, 2.7], 'damage_ratio' => [1.1, 1.5, 2.0, 2.7],
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
], ],
], ],
@ -163,6 +187,8 @@ return [
'level_req' => 5, 'level_req' => 5,
'desc' => '召唤冰雹,攻击所有敌人', 'desc' => '召唤冰雹,攻击所有敌人',
'damage_ratio' => [0.7, 1.0, 1.3, 1.7], 'damage_ratio' => [0.7, 1.0, 1.3, 1.7],
'base' => [4, 10, 22, 42],
'growth' => [0.5, 0.7, 0.95, 1.15],
], ],
// 21. 炎爆术 - 魔攻型,随敌人数量加成 // 21. 炎爆术 - 魔攻型,随敌人数量加成
@ -175,6 +201,8 @@ return [
'desc' => '引发连锁爆炸,敌人越多伤害加成越高', 'desc' => '引发连锁爆炸,敌人越多伤害加成越高',
'damage_ratio' => [0.8, 1.1, 1.4, 1.9], 'damage_ratio' => [0.8, 1.1, 1.4, 1.9],
'enemy_count_bonus' => [0.1, 0.15, 0.2, 0.3], // 每增加一个敌人增加的伤害百分比 'enemy_count_bonus' => [0.1, 0.15, 0.2, 0.3], // 每增加一个敌人增加的伤害百分比
'base' => [4, 10, 22, 42], // 基础伤害值
'growth' => [0.5, 0.7, 0.95, 1.15], // 等级成长系数
], ],
// 22. 流星雨 - 混合型 (每敌伤害 = (魔攻 + 物攻) × 倍数) // 22. 流星雨 - 混合型 (每敌伤害 = (魔攻 + 物攻) × 倍数)
@ -186,6 +214,8 @@ return [
'level_req' => 20, 'level_req' => 20,
'desc' => '召唤流星坠落,轰击全体敌人', 'desc' => '召唤流星坠落,轰击全体敌人',
'damage_ratio' => [0.6, 0.85, 1.15, 1.55], 'damage_ratio' => [0.6, 0.85, 1.15, 1.55],
'base' => [5, 12, 25, 45],
'growth' => [0.6, 0.8, 1, 1.2],
], ],
// 23. 灭世风暴 - 基于暴击率 (每敌伤害 = 魔攻 × 倍数 × (1 + 暴击率×系数)) // 23. 灭世风暴 - 基于暴击率 (每敌伤害 = 魔攻 × 倍数 × (1 + 暴击率×系数))
@ -198,6 +228,8 @@ return [
'desc' => '引发天地异变,暴击率影响范围伤害', 'desc' => '引发天地异变,暴击率影响范围伤害',
'damage_ratio' => [0.9, 1.2, 1.6, 2.2], 'damage_ratio' => [0.9, 1.2, 1.6, 2.2],
'crit_bonus' => [0.4, 0.6, 0.9, 1.3], 'crit_bonus' => [0.4, 0.6, 0.9, 1.3],
'base' => [5, 12, 25, 45],
'growth' => [0.6, 0.8, 1, 1.2],
], ],
// 24. 末日火雨 - 敌人越多伤害越低,但每个敌人都会受伤 // 24. 末日火雨 - 敌人越多伤害越低,但每个敌人都会受伤
@ -210,6 +242,8 @@ return [
'desc' => '魔法能量分散到所有敌人,敌人越多分散越严重', 'desc' => '魔法能量分散到所有敌人,敌人越多分散越严重',
'damage_ratio' => [1.8, 2.5, 3.2, 4.0], 'damage_ratio' => [1.8, 2.5, 3.2, 4.0],
'dispersion' => [0.8, 0.75, 0.7, 0.65], // 随敌人数量衰减系数 'dispersion' => [0.8, 0.75, 0.7, 0.65], // 随敌人数量衰减系数
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
], ],
// 25. 狂风斩 - 基于物攻 (每敌伤害 = 物攻 × 倍数) // 25. 狂风斩 - 基于物攻 (每敌伤害 = 物攻 × 倍数)
@ -221,6 +255,8 @@ return [
'level_req' => 16, 'level_req' => 16,
'desc' => '挥出狂暴的风刃,基于物攻伤害', 'desc' => '挥出狂暴的风刃,基于物攻伤害',
'damage_ratio' => [0.9, 1.2, 1.6, 2.1], 'damage_ratio' => [0.9, 1.2, 1.6, 2.1],
'base' => [6, 14, 28, 48],
'growth' => [0.7, 0.9, 1.1, 1.3],
], ],
], ],
@ -236,6 +272,8 @@ return [
'desc' => '为所有队员增加防护,恢复生命值', 'desc' => '为所有队员增加防护,恢复生命值',
'heal_ratio' => [0.3, 0.5, 0.75, 1.0], 'heal_ratio' => [0.3, 0.5, 0.75, 1.0],
'heal_base' => [15, 30, 50, 75], 'heal_base' => [15, 30, 50, 75],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
// 31. 恢复光环 - 生命值百分比型 (每人恢复 = 自己最大生命值 × 百分比) // 31. 恢复光环 - 生命值百分比型 (每人恢复 = 自己最大生命值 × 百分比)
@ -247,6 +285,8 @@ return [
'level_req' => 14, 'level_req' => 14,
'desc' => '释放温暖的光芒,基于自己的最大生命值恢复队员', 'desc' => '释放温暖的光芒,基于自己的最大生命值恢复队员',
'heal_ratio' => [0.2, 0.3, 0.4, 0.5], 'heal_ratio' => [0.2, 0.3, 0.4, 0.5],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
// 32. 圣灵之力 - 混合型 (每人恢复 = (魔攻 + 物攻) × 倍数) // 32. 圣灵之力 - 混合型 (每人恢复 = (魔攻 + 物攻) × 倍数)
@ -259,6 +299,8 @@ return [
'desc' => '强大的群体治疗,恢复所有队员', 'desc' => '强大的群体治疗,恢复所有队员',
'heal_ratio' => [0.25, 0.4, 0.6, 0.85], 'heal_ratio' => [0.25, 0.4, 0.6, 0.85],
'heal_base' => [10, 20, 35, 55], 'heal_base' => [10, 20, 35, 55],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
// 33. 仙界救赎 - 智能治疗(优先治疗血量少的队员) // 33. 仙界救赎 - 智能治疗(优先治疗血量少的队员)
@ -272,6 +314,8 @@ return [
'heal_ratio' => [0.4, 0.6, 0.9, 1.3], 'heal_ratio' => [0.4, 0.6, 0.9, 1.3],
'heal_base' => [25, 45, 70, 110], 'heal_base' => [25, 45, 70, 110],
'priority_bonus' => [0.2, 0.3, 0.4, 0.5], // 血量越少加成越多 'priority_bonus' => [0.2, 0.3, 0.4, 0.5], // 血量越少加成越多
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
// 34. 护盾术 - 基于防御属性 (每人恢复 = (物防+魔防) × 倍数) // 34. 护盾术 - 基于防御属性 (每人恢复 = (物防+魔防) × 倍数)
@ -284,6 +328,8 @@ return [
'desc' => '根据防御力为队员恢复生命值', 'desc' => '根据防御力为队员恢复生命值',
'heal_ratio' => [0.5, 0.75, 1.1, 1.5], 'heal_ratio' => [0.5, 0.75, 1.1, 1.5],
'heal_base' => [8, 16, 28, 45], 'heal_base' => [8, 16, 28, 45],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
// 35. 团队共鸣 - 基于队伍状态 (每人恢复 = 魔攻 × 倍数 × (队员数量系数)) // 35. 团队共鸣 - 基于队伍状态 (每人恢复 = 魔攻 × 倍数 × (队员数量系数))
@ -296,6 +342,8 @@ return [
'desc' => '队员越多,治疗效果越强', 'desc' => '队员越多,治疗效果越强',
'heal_ratio' => [0.35, 0.55, 0.8, 1.1], 'heal_ratio' => [0.35, 0.55, 0.8, 1.1],
'team_bonus' => [0.2, 0.3, 0.45, 0.6], // 每增加一个队员增加的治疗百分比 'team_bonus' => [0.2, 0.3, 0.45, 0.6], // 每增加一个队员增加的治疗百分比
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
], ],
], ],

View File

@ -295,6 +295,28 @@ class Item
$teamBonus = $spellInfo['team_bonus'][$qualityIndex] ?? ($spellInfo['team_bonus'][0] ?? 0); $teamBonus = $spellInfo['team_bonus'][$qualityIndex] ?? ($spellInfo['team_bonus'][0] ?? 0);
$priorityBonus = $spellInfo['priority_bonus'][$qualityIndex] ?? ($spellInfo['priority_bonus'][0] ?? 0); $priorityBonus = $spellInfo['priority_bonus'][$qualityIndex] ?? ($spellInfo['priority_bonus'][0] ?? 0);
// 计算基础伤害值(根据法术模板的基础值和成长系数)
$baseValue = 0;
$growth = 0;
if (isset($spellInfo['base']) && isset($spellInfo['growth'])) {
$baseArray = $spellInfo['base'];
$growthArray = $spellInfo['growth'];
// 确保索引在范围内
if (is_array($baseArray) && is_array($growthArray)) {
$baseValue = $baseArray[$qualityIndex] ?? ($baseArray[0] ?? 0);
$growth = $growthArray[$qualityIndex] ?? ($growthArray[0] ?? 0);
// 应用计算公式finalValue = baseValue + (level * growth) + randomBonus
$randomBonus = rand(0, max(1, (int)($baseValue * 0.15)));
$finalBaseValue = (int)($baseValue + ($level * $growth) + $randomBonus);
} else {
$finalBaseValue = 0;
}
} else {
$finalBaseValue = 0;
}
return [ return [
'id' => uniqid('spell_'), 'id' => uniqid('spell_'),
'type' => 'spell', 'type' => 'spell',
@ -318,6 +340,10 @@ class Item
'dispersion' => $dispersion, 'dispersion' => $dispersion,
'team_bonus' => $teamBonus, 'team_bonus' => $teamBonus,
'priority_bonus' => $priorityBonus, 'priority_bonus' => $priorityBonus,
// 基础伤害值(已计算)
'base' => $finalBaseValue,
'growth' => $growth,
]; ];
} }