hanli/src/Data/spells.php
hant cd020e1240 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>
2025-12-05 23:01:35 +08:00

422 lines
18 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 法术系统配置 - 丰富版本
* 法术分为四类:单体治疗、单体伤害、群体伤害、群体治疗
* 每个法术有独立的计算方式和品质参数
* 参考装备的品质系统 (common, rare, epic, legendary)
*/
return [
// ============ 单体治疗法术 (heal_single) ============
'heal_single' => [
// 1. 治愈术 - 魔攻型 (恢复 = 魔攻 × 倍数 + 基础值)
1 => [
'name' => '治愈术',
'type' => 'heal_single',
'calc_type' => 'matk', // 计算方式:纯魔攻
'cost' => 15,
'level_req' => 1,
'desc' => '恢复自己或队友的生命值,效果与魔攻相关',
// 品质参数:[common, rare, epic, legendary]
'heal_ratio' => [0.5, 0.8, 1.2, 1.8], // 魔攻倍数
'heal_base' => [20, 40, 70, 120], // 基础治疗值
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
],
// 2. 及时救难 - 生命值百分比型 (恢复 = 自己最大生命值 × 百分比)
2 => [
'name' => '及时救难',
'type' => 'heal_single',
'calc_type' => 'hp_percent', // 计算方式:最大生命值百分比
'cost' => 20,
'level_req' => 5,
'desc' => '将自己的部分生命值转移给队友',
'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 => [
'name' => '活力术',
'type' => 'heal_single',
'calc_type' => 'hybrid', // 计算方式:魔攻 + 物攻混合
'cost' => 25,
'level_req' => 12,
'desc' => '结合物理和魔法的治疗法术',
'heal_ratio' => [0.3, 0.5, 0.7, 1.0], // (魔攻+物攻) 倍数
'heal_base' => [15, 30, 50, 80],
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
],
// 4. 生命之泉 - 基于当前生命值缺口 (恢复 = 缺失血量 × 百分比)
4 => [
'name' => '生命之泉',
'type' => 'heal_single',
'calc_type' => 'hp_missing', // 计算方式:缺失生命值百分比
'cost' => 30,
'level_req' => 18,
'desc' => '根据队友缺失的生命值比例进行治疗',
'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 => [
'name' => '暴击治疗',
'type' => 'heal_single',
'calc_type' => 'crit_heal', // 计算方式:与暴击率相关
'cost' => 28,
'level_req' => 22,
'desc' => '暴击率越高,治疗效果越强',
'heal_ratio' => [0.4, 0.65, 0.95, 1.4], // 基础魔攻倍数
'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 => [
'name' => '援护术',
'type' => 'heal_single',
'calc_type' => 'defense', // 计算方式:基于防御属性
'cost' => 22,
'level_req' => 15,
'desc' => '根据防御力进行治疗,防御越高效果越好',
'heal_ratio' => [0.8, 1.2, 1.8, 2.5], // (物防+魔防) 倍数
'heal_base' => [10, 20, 35, 60],
'base' => [8, 18, 38, 65], // 基础伤害值
'growth' => [0.8, 1.0, 1.2, 1.5], // 等级成长系数
],
],
// ============ 单体伤害法术 (damage_single) ============
'damage_single' => [
// 10. 火球术 - 魔攻型 (伤害 = 魔攻 × 倍数)
10 => [
'name' => '火球术',
'type' => 'damage_single',
'calc_type' => 'matk',
'cost' => 20,
'level_req' => 1,
'desc' => '发出一团火球,对单个敌人造成伤害',
'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 => [
'name' => '冰锥术',
'type' => 'damage_single',
'calc_type' => 'matk',
'cost' => 22,
'level_req' => 6,
'desc' => '凝聚寒冰之力,发出锐利冰锥',
'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 => [
'name' => '雷击术',
'type' => 'damage_single',
'calc_type' => 'patk',
'cost' => 24,
'level_req' => 10,
'desc' => '召唤雷电直击单个敌人,与物攻相关',
'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 => [
'name' => '烈焰焚天',
'type' => 'damage_single',
'calc_type' => 'hybrid',
'cost' => 35,
'level_req' => 18,
'desc' => '释放强大的火焰,伤害与双攻相关',
'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 => [
'name' => '诛仙剑气',
'type' => 'damage_single',
'calc_type' => 'crit_damage',
'cost' => 40,
'level_req' => 28,
'desc' => '凝聚剑意,暴击伤害系数越高效果越强',
'damage_ratio' => [1.5, 2.0, 2.6, 3.5],
'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 => [
'name' => '狂暴斩',
'type' => 'damage_single',
'calc_type' => 'low_def_bonus',
'cost' => 32,
'level_req' => 20,
'desc' => '攻击防御低的敌人伤害更高',
'damage_ratio' => [1.1, 1.5, 2.0, 2.7],
'base' => [5, 12, 25, 45], // 基础伤害值
'growth' => [0.6, 0.8, 1.0, 1.2], // 等级成长系数
],
],
// ============ 群体伤害法术 (damage_aoe) ============
'damage_aoe' => [
// 20. 冰雹术 - 魔攻型 (每敌伤害 = 魔攻 × 倍数)
20 => [
'name' => '冰雹术',
'type' => 'damage_aoe',
'calc_type' => 'matk',
'cost' => 35,
'level_req' => 5,
'desc' => '召唤冰雹,攻击所有敌人',
'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 => [
'name' => '炎爆术',
'type' => 'damage_aoe',
'calc_type' => 'matk_scaled',
'cost' => 40,
'level_req' => 12,
'desc' => '引发连锁爆炸,敌人越多伤害加成越高',
'damage_ratio' => [0.8, 1.1, 1.4, 1.9],
'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 => [
'name' => '流星雨',
'type' => 'damage_aoe',
'calc_type' => 'hybrid',
'cost' => 50,
'level_req' => 20,
'desc' => '召唤流星坠落,轰击全体敌人',
'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 => [
'name' => '灭世风暴',
'type' => 'damage_aoe',
'calc_type' => 'crit_aoe',
'cost' => 60,
'level_req' => 30,
'desc' => '引发天地异变,暴击率影响范围伤害',
'damage_ratio' => [0.9, 1.2, 1.6, 2.2],
'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 => [
'name' => '末日火雨',
'type' => 'damage_aoe',
'calc_type' => 'dispersed_damage',
'cost' => 55,
'level_req' => 25,
'desc' => '魔法能量分散到所有敌人,敌人越多分散越严重',
'damage_ratio' => [1.8, 2.5, 3.2, 4.0],
'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 => [
'name' => '狂风斩',
'type' => 'damage_aoe',
'calc_type' => 'patk',
'cost' => 45,
'level_req' => 16,
'desc' => '挥出狂暴的风刃,基于物攻伤害',
'damage_ratio' => [0.9, 1.2, 1.6, 2.1],
'base' => [6, 14, 28, 48],
'growth' => [0.7, 0.9, 1.1, 1.3],
],
],
// ============ 群体治疗法术 (heal_aoe) ============
'heal_aoe' => [
// 30. 神圣庇护 - 魔攻型 (每人恢复 = 魔攻 × 倍数 + 基础值)
30 => [
'name' => '神圣庇护',
'type' => 'heal_aoe',
'calc_type' => 'matk',
'cost' => 30,
'level_req' => 8,
'desc' => '为所有队员增加防护,恢复生命值',
'heal_ratio' => [0.3, 0.5, 0.75, 1.0],
'heal_base' => [15, 30, 50, 75],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
],
// 31. 恢复光环 - 生命值百分比型 (每人恢复 = 自己最大生命值 × 百分比)
31 => [
'name' => '恢复光环',
'type' => 'heal_aoe',
'calc_type' => 'hp_percent',
'cost' => 35,
'level_req' => 14,
'desc' => '释放温暖的光芒,基于自己的最大生命值恢复队员',
'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 => [
'name' => '圣灵之力',
'type' => 'heal_aoe',
'calc_type' => 'hybrid',
'cost' => 45,
'level_req' => 22,
'desc' => '强大的群体治疗,恢复所有队员',
'heal_ratio' => [0.25, 0.4, 0.6, 0.85],
'heal_base' => [10, 20, 35, 55],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
],
// 33. 仙界救赎 - 智能治疗(优先治疗血量少的队员)
33 => [
'name' => '仙界救赎',
'type' => 'heal_aoe',
'calc_type' => 'smart_heal',
'cost' => 55,
'level_req' => 32,
'desc' => '至高的救赎之力,优先治疗血量较低的队员',
'heal_ratio' => [0.4, 0.6, 0.9, 1.3],
'heal_base' => [25, 45, 70, 110],
'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 => [
'name' => '护盾术',
'type' => 'heal_aoe',
'calc_type' => 'defense',
'cost' => 40,
'level_req' => 18,
'desc' => '根据防御力为队员恢复生命值',
'heal_ratio' => [0.5, 0.75, 1.1, 1.5],
'heal_base' => [8, 16, 28, 45],
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
],
// 35. 团队共鸣 - 基于队伍状态 (每人恢复 = 魔攻 × 倍数 × (队员数量系数))
35 => [
'name' => '团队共鸣',
'type' => 'heal_aoe',
'calc_type' => 'team_sync',
'cost' => 38,
'level_req' => 20,
'desc' => '队员越多,治疗效果越强',
'heal_ratio' => [0.35, 0.55, 0.8, 1.1],
'team_bonus' => [0.2, 0.3, 0.45, 0.6], // 每增加一个队员增加的治疗百分比
'base' => [8, 18, 38, 65],
'growth' => [0.8, 1, 1.2, 1.5],
],
],
// ============ 品质掉落概率 ============
'quality_drop_rates' => [
'common' => 70, // 普通法术 70% 掉落概率
'rare' => 20, // 稀有法术 20% 掉落概率
'epic' => 8, // 史诗法术 8% 掉落概率
'legendary' => 2, // 传奇法术 2% 掉落概率
],
// ============ 法术品质对应的学习资源书数量 ============
'quality_levels' => [
'common' => 1, // 普通资源书可学习普通法术
'rare' => 2, // 稀有资源书可学习稀有法术
'epic' => 3, // 史诗资源书可学习史诗法术
'legendary' => 4, // 传奇资源书可学习传奇法术
],
// ============ 法术升级系统 ============
'upgrades' => [
// 每个等级需要的资源书数量和属性提升
1 => ['cost' => 0, 'bonus' => 0, 'cost_reduction' => 0],
2 => ['cost' => 2, 'bonus' => 10, 'cost_reduction' => 2],
3 => ['cost' => 3, 'bonus' => 20, 'cost_reduction' => 4],
4 => ['cost' => 4, 'bonus' => 30, 'cost_reduction' => 6],
5 => ['cost' => 5, 'bonus' => 40, 'cost_reduction' => 8],
6 => ['cost' => 6, 'bonus' => 50, 'cost_reduction' => 10],
7 => ['cost' => 8, 'bonus' => 60, 'cost_reduction' => 12],
8 => ['cost' => 10, 'bonus' => 70, 'cost_reduction' => 14],
9 => ['cost' => 12, 'bonus' => 80, 'cost_reduction' => 16],
10 => ['cost' => 15, 'bonus' => 100, 'cost_reduction' => 20],
],
// ============ 地牢法术掉落映射 ============
'dungeon_spell_drops' => [
1 => ['heal_single', 'damage_single', 'damage_aoe'], // 七玄门 (Lv.1-5)
2 => ['damage_single', 'damage_aoe', 'heal_aoe'], // 太南谷 (Lv.5-10)
3 => ['heal_single', 'heal_aoe'], // 血色禁地 (Lv.10-15)
4 => ['damage_single', 'damage_aoe'], // 黄枫谷 (Lv.15-20)
5 => ['damage_single', 'heal_aoe'], // 燕翎堡 (Lv.20-30)
6 => ['damage_single', 'heal_aoe'], // 越京皇宫 (Lv.30-40)
7 => ['damage_aoe'], // 乱星海-魁星岛 (Lv.40-50)
8 => ['damage_aoe', 'heal_single', 'heal_aoe'], // 虚天殿 (Lv.50-60)
9 => ['damage_single', 'damage_aoe', 'heal_single'], // 外星海 (Lv.60+)
],
// ============ 按法术类型和品质分类 ============
'spells_by_quality' => [
'common' => [
'heal_single' => [1],
'damage_single' => [10],
'damage_aoe' => [20],
'heal_aoe' => [30],
],
'rare' => [
'heal_single' => [2, 3],
'damage_single' => [11, 12],
'damage_aoe' => [21, 22],
'heal_aoe' => [31, 32],
],
'epic' => [
'heal_single' => [4, 5],
'damage_single' => [13, 14],
'damage_aoe' => [23, 24],
'heal_aoe' => [33, 34],
],
'legendary' => [
'heal_single' => [6],
'damage_single' => [15],
'damage_aoe' => [25],
'heal_aoe' => [35],
],
],
];