Cataclysm-DDA 魔法平衡指南:Magiclysm 法术层级、合法性分级与施法专精体系深度解析
2026/9/15 13:34:10 网站建设 项目流程

Cataclysm-DDA 魔法平衡指南:Magiclysm 法术层级、合法性分级与施法专精体系深度解析

【免费下载链接】Cataclysm-DDACataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.项目地址: https://gitcode.com/GitHub_Trending/ca/Cataclysm-DDA

导读

本文以 Cataclysm-DDA 官方魔法扩展模组 Magiclysm 的平衡设计文档 magic_balance.md 为主体,系统讲解该模组的法术强度评估体系、四大法术层级(Tier 0~3)的判定逻辑、法术书合法性分级,以及八大施法专精(Spellcasting Proficiencies)的划分原则与实现方式。读完本文,你将掌握如何依据 JSON 字段推断任意法术的实战强度、如何按层级设计新法术的属性预算,以及如何在 proficiencies.json 与法术定义中正确接入专精系统。文中所引法术实例均可在仓库data/mods/Magiclysm/Spells/下找到对应 JSON 定义,可直接对照学习。


一、概述:法术的"隐形层级"

Magiclysm 中的法术(Spell)拥有极强的可塑性,其强度完全由 JSON 中赋予的各项数值决定。文档明确指出,法术的 tier(层级)并不会在游戏内直接标注,而是可以通过若干关键维度反推出来。设计师在设计新法术时,应当先根据预期强度选定层级,再让各项数值符合该层级的预算。

tier 的判定并非单一维度,而是由以下因素综合决定:

判定维度核心影响平衡要点
Difficulty(施法难度)决定法术失败率难度越低越好施放,间接越强;多数时候应与层级成正比
Max Level(最高等级)决定成长空间低于 10 会拖累层级;高于 30 则训练成本陡增
Attack Stats(攻击数值)伤害/AOE/射程/持续数值越高层级越高
Effect / effect_str法术核心效果附带控制类效果会让强度飙升
Energy Source(能量来源)法力/体力/电池/HP越易回复的能量,相应法术越强
Casting Time(施法时间)战斗中的可用性越快越强;非战斗法术可放宽
Energy Cost(能量消耗)续航能力以约 2000 法力池为基准设计
Fields(场地效果)区域控制多数会提升层级,纯装饰性字段除外
Damage Type(伤害类型)护甲穿透性力场伤害无视护甲,价值最高
Valid Targets(有效目标)施放灵活性能无视友军/隔墙释放则自动更强

下文逐一展开。


二、逐项解析 tier 判定维度

2.1 Difficulty(施法难度)

难度是最直观的层级指标,但逻辑上与直觉相反:难度越低,法术越好施放,间接使其更强。难度直接参与法术失败率的计算,是"失败惩罚"的主要来源。文档强调:大多数情况下难度应当与法术层级同步缩放,否则该维度就失去了参考意义——例如一个伤害极高的法术若只给 1 点难度,它的真实强度就远超同级法术。

从源码看,难度同样作用于专精系统中的技能惩罚计算:proficiencies.json中每个施法专精都带有"default_skill_penalty"(默认 0.2),配合法术难度共同影响施放成功率。

2.2 Max Level(最高等级)

max_level决定两件事:

  1. 难度能否随等级继续降低:高等级时难度下降依赖等级成长,max_level过小则法术在后期无法享受难度减免;
  2. 能否持续享受数值成长min_damage/max_damage等字段通常通过math表达式随法术等级线性或非线性增长(见下文实例)。

文档给出的经验边界是:

  • max_level低于 10:成长空间不足,会负面影响法术层级;
  • max_level高于 30:需要大量训练才能练满,且训练成本随等级呈指数增长,设计时应谨慎预期玩家实际能达到的法术等级。

2.3 Attack Stats(攻击数值)

伤害、AOE、持续时间和射程,都是"数值越高、层级越高"的维度。文档给出的经验准则是:绝大多数 tier 0 和 tier 1 的法术,即使在满级时也不应超过 150 点伤害,除非附带严重的代价(高昂消耗、缓慢施法等)。

在 Magiclysm 的实际实现中,这些数值普遍使用math表达式随等级缩放。例如 magic_missile 的定义:

"min_damage": { "math": [ "(u_spell_level('magic_missile') * 0.75) + 0" ] }, "max_damage": { "math": [ "(u_spell_level('magic_missile') * 1) + 3" ] }, "min_range": 8, "range_increment": 0.8, "max_range": 20,

即每升一级,最小伤害 +0.75、最大伤害 +1、射程 +0.8 格。这种"等级驱动数值"的写法是 Magiclysm 法术 JSON 的通用模式,也是文档最后"专精使用建议"第 2 条要求所有extra_effects子法术都正确使用math函数的原因——否则子法术无法随主法术等级正确缩放。

2.4 Effect 与 effect_str

effect是法术的主体,平衡时必须以它为核心。effect_str则直接作用于效果:例如攻击法术若附加了"dazed"(眩晕)等控制效果,其强度会"火箭式上升",层级必须相应提高。仅造成伤害而没有effect_str的法术,则不受此加成。

源码层面,effect是一个字符串枚举,Magiclysm 中常见的取值包括attack(攻击)、short_range_teleport(短距传送)、translocate(传送到定位门)、spawn_item(生成物品)、effect_on_condition(触发 EOC)等,分别对应 src/magic.cpp 中 spell_effect 的分派逻辑。

2.5 Energy Source(能量来源)

能量来源通常与法术所属的"法术职业(spell_class)"强相关:

  • Stamina(体力):由于体力极易恢复,使用体力施法的法术层级会显著上调;
  • Bionic power(生化电池):主要归 Technomancer(技师法师)使用;
  • HP(生命值):是 Animist(万物有灵师)的职业特色;任何非 Animist 职业使用 HP 施法,层级都会自动高于同样消耗法力(Mana)的法术

法力(Mana)是法术的默认能量来源。这一规则在源码的spell_flag中也有呼应——PSIONIC等标志会影响法术数据展示(见 src/magic.cpp)。

2.6 Casting Time(施法时间)

文档将施法时间划分为三档:

区间定位平衡含义
0 ~ 300 moves快速战斗法术可在高压战斗场景中随时使用
300 ~ 1000 moves慢速战斗法术需要一定预判或拉开距离
> 1000 moves非战斗法术基本无法在战斗中使用,层级可相应放宽

法术的层级高度依赖"能否在高压环境下快速出手",因此施法时间越长,对层级的约束就越宽松。文档特别警告:施法时间为 0 的法术会处于极高的层级,除非附加强烈的限制条件,否则不要这样设计。

2.7 Energy Cost(能量消耗)

法力池大小因人而异,但文档建议以施法者拥有约 2000 法力为平衡基准。Magiclysm 的设计哲学是"法术应当是你其他战斗手段的补充":

  • 低等级、低层级时,法师应当花费全部或接近全部法力去解决低威胁目标(如 2~3 只僵尸或一只肥僵尸);
  • 因此法术层级可以作为"法师在特定法术等级下能征服何种威胁"的粗略标尺。

这也是为什么 fireball 这种高伤害 AOE 法术要设置"base_energy_cost": 350——它在同层级中属于消耗较高的"主力清场技",而不是可以随意连发的常规手段。

2.8 Fields(场地效果)

场地效果(field)目前灵活性有限:持续时间固定,且除非专门编码否则不会漂移。大多数 field 会提升法术层级,具体取决于字段类型、生成概率与强度。但也存在例外:纯装饰性的字段(血液、血腥碎块、轻微热量等)不会提升层级,因为它们对战斗结果几乎没有影响。

2.9 Damage Type(伤害类型)

伤害类型是攻击法术的关键因素:

  • 力场伤害(force):无视所有护甲,价值最高;
  • 钝击/切割/穿刺(bashing/cutting/piercing):会被对应护甲阻挡;
  • 其他类型:被各自的伤害抗性所阻挡。

文档还补充了几条当时的特殊规则(并注明"直到重写伤害函数为止"):

  • heat(热)伤害还会点燃目标;
  • cold(冷)伤害会被火焰抗性阻挡;
  • bio(生化)伤害会被NOBREATHE(无需呼吸)标志阻挡。

注意,在 Magiclysm 中许多法术的damage_type并非原版的基础类型,而是模组自定义类型(如nethernecrotic),详见模组的 damage_types.json。

2.10 Valid Targets(有效目标)

若攻击法术可以忽略自身与友军(即valid_targets中不包含selfally,只包含hostile),则它自动优于会误伤己方的法术。此外:

  • 带 AOE 的攻击法术若可以指定地面为目标"ground"),就意味着可以对视线之外的目标施放——这同样是实质性的强度提升。

对比实例如下:tier 0 的 magic_missile 只允许"valid_targets": [ "hostile" ],而 tier 2 的 fireball 则允许"valid_targets": [ "self", "ally", "hostile", "ground" ]——后者的地面施放能力正是其高层级的重要构成部分。


三、层级示例:从 Tier 0 到 Tier 3

3.1 Tier 0:新手学徒的入门法术

Tier 0 是新手法师学习魔法时最早接触的法术,特点是低数值、低消耗、低难度,或者带有明显的功能性局限。

Magic Missile(魔法飞弹)—— Spells/magus.json

  • 伤害低,满级上限约 20 出头;
  • 但属于nether类型伤害,可无视护甲;
  • target_attack(可穿透墙壁直接锁定目标)类型,配"NO_PROJECTILE"标志;
  • 拥有体面的射程(8~20 格)和快速施法时间(100 moves)。

Finger Firelighter(手指点火器)—— items/ethereal_items.json

  • 实用型功能法术:能在法术持续期间点燃火焰;
  • 点亮所在格子,但持续时间较短,不足以用来读书照明;
  • 属于典型的"功能性而非战斗性"的 tier 0 定位。

Necrotic Gaze(死灵凝视)—— Spells/animist.json

  • 造成 necrotic 伤害,但僵尸对此免疫;
  • 射程较短(3~5 格);
  • 高等级时伤害可观:min_damage = 等级×2 + 4max_damage = 等级×5 + 8
  • 以 HP 施法(Animist 职业特色),且相当便宜(base_energy_cost 相对低);
  • 带有SPLIT_DAMAGECONSUMES_RUNES等限制性标志,需要在 Spells/animist.json 中查看完整的 flag 组合。

3.2 Tier 1:开始独当一面的进阶法术

Tier 1 的法师开始掌握更复杂的法术。

Point Flare(点状爆焰)—— Spells/kelvinist.json

  • 对攻击法术而言施法偏慢(300 moves);
  • 高单体伤害(满级约等级×3.3 + 8)和可穿透墙壁施放NO_PROJECTILE+ hostile-only)弥补;
  • 施法成本相对伤害而言很低(75 法力);
  • 难度 4,并带LOUDCONCENTRATE标志。

Phase Door(相位门)—— Spells/magus.json

  • 效果为short_range_teleport,能让你脱离眼前的危险;
  • 但会随机传送,可能适得其反;
  • 难度较高(2,配合 10 级上限),低等级时失败率不低;
  • 施法快速(100 moves),可在危急时刻使用,但传送距离有限(3~4 格)。

Lightning Bolt(闪电箭)—— Spells/stormshaper.json

  • 对一条直线上的所有目标造成可观伤害;
  • 作为远程法术射程偏短;
  • 对伤害法术而言非常便宜;
  • 拥有稀有特性:施法时间随法术等级提升而缩短base_casting_time+ 每级增量机制);
  • 缺点是难度 6 且带LOUD标志——虽然满级伤害很高,但达到那个等级所需的训练量同样很高。

3.3 Tier 2:职业内也颇为专业的法术

Tier 2 法术即便在各自职业内也属于相当专业化的存在。

Cat's Grace(猫之优雅)

  • 与 Magus 职业其他属性增益法术类似,提升 4 点敏捷属性,持续可观时长;
  • 代价是施法缓慢,几乎没有准备无法在战斗中施放;
  • 需要专注(CONCENTRATE),且难度 5——专注与难度共同决定失败率;
  • 只能对自己施放(valid_targets: ["self"]),但持续时间上限很高。

Animated Blade(活化之刃)—— Spells/technomancer.json

  • 召唤类法术;召唤法术通常比直接攻击法术更强,因为召唤物既能输出伤害又能吸收怪物的伤害
  • 召唤活化之刃怪物,高等级可召唤多把;
  • 对于能召唤这类怪物的法术而言,消耗与施法时间都非常低,因此难度与层级被大幅调高,持续时间则被压缩——这正是文档"用难度和续航换强度"平衡手法的典型示范。

Fireball(火球术)—— Spells/kelvinist.json

  • 经典奇幻法术,凭借大范围 AOE(3~5 格)与优秀的伤害输出稳居 tier 2;
  • 施法时间(200 moves)恰好处于"战斗中可轻松施放"的临界点;
  • 能量消耗(350)相对其"伤害 + AOE"组合而言偏低;
  • 射程很远(6~20 格),是 kelvinist 法师的招牌法术;
  • 难度只有 4,带IGNITE_FLAMMABLESPLIT_DAMAGE标志,伤害类型为 heat。

3.4 Tier 3:更为奇幻或高度专业化的法术

Translocate Self(自我传送)—— Spells/classless.json

  • 效果极其特殊但强大:translocate可让你传送到任意已创建的定位门(gate)
  • 施法时间 6000 moves,完全无法在战斗中使用,是纯粹的战略性工具法术;
  • 关键加分项:无职业归属("spell_class": "NONE",任何法师流派都能学习,通用性、实用性与威力兼备;
  • 难度高达 15,消耗 675 法力。

Mana Blast(法力爆破)

  • 类似火球术,但伤害更高;
  • 且造成力场伤害(force),无视一切护甲
  • 仅凭"高伤害 + 无视护甲"两点就足以让它单独跻身 tier 3。

注:mana_blast在仓库中表现为由mana_doping等机制触发的衍生效果(见 Spells/item_only.json),其"高伤害 + 无视护甲"的定位与原文档描述一致。

3.5 Legality(法术书合法性分级)

除层级外,法术还按合法性分为三类,决定其书籍能否在文明社会中流通:

级别定义典型例子
Unrestricted(不受限制)主要为个人、无害效果:报时、清洁衣物、防护伤害、加热食物等"良民"行为功能性日常生活法术
Restricted(受限)可能被用于不法用途、政府需要跟踪掌握:隐身、传送、召唤、单体或非致命战斗法术隐身术、传送术、召唤术
Illegal(非法)任何平民都没有理由知晓:大规模战斗法术、纯粹以造成痛苦为目的的法术群体攻击、折磨类法术

法术书的合法性由其中包含的最受管控的法术决定(取最高管控级别)。文档给出的实践建议是:如果可能,可以将同一本书制作成两个不同版本(一个经过审查删减)并赋予不同的合法性级别——例如公开售卖"洁本"、黑市流通"全本"。


四、施法专精(Spellcasting Proficiencies)体系

施法专精允许法师跨越魔法职业,根据法术的功能类别进行专业化发展。当前共有八个专精类别。每个类别在 proficiencies.json 中都有完整的三阶成长链beginner(新手,8 小时学习)→apprentice(学徒,16 小时)→master(大师,32 小时),全部归属prof_magic_casting(Spellcraft)专精大类,并设置了default_time_multiplier: 1.5default_skill_penalty: 0.2的通用参数。

4.1 Evocation(塑能系)

  • 覆盖范围:强大、施法快速的爆发型法术,快速聚集能量并释放。涵盖大多数攻击法术——Magic Missile、Fireball、Necrotic Gaze 等。
  • 边界:也可覆盖非攻击法术,只要它们要求施法者"快速汇聚法力并释放",且其效果不属于其他专精类别。
  • 专精收益:更高效地使用法力,提升法术的伤害或效果威力

4.2 Channeling(导能系)

  • 覆盖范围:需要长时间专注、缓慢汇聚或引导法力的法术。包括大多数仪式法术:Wash the Wounds Clean、Crystallize Mana,以及各类符文创造法术。
  • 实例:Crystallize Mana 施法时间长达 600000 moves,消耗 1000 法力,是典型的导能系仪式法术。
  • 专精收益降低法力消耗与施法时间
  • 与 Conjuration 的区分永久性创造(如炼成物品)更偏向 Channeling;临时召唤则归 Conjuration。

4.3 Conjuration(召唤系)

  • 覆盖范围:召唤某物或某人,通常持续固定时间。大部分 Golemancy(魔像术)、Animist 的 Summon Undead、Ignus Fattus、德鲁伊的 Nature's Bow 均属此类。
  • 实例:Summon Undead 是 Animist 职业的招牌召唤术。
  • 专精收益降低法力消耗,并提升召唤物/物体的持续时间

4.4 Enhancement(强化系)

  • 覆盖范围:以某种方式提升目标的法术——心智、肉体或情绪层面。如 Cat's Grace、Ogre's Strength、Eagle's Sight、Feral Form。
  • 边界纯治疗法术不在此列(治疗是修复受损,强化是整体增益);但既治疗又增益的法术应归入本类;纯削弱/阻碍类法术也不在此列(见 Enervation)。
  • 专精收益降低施法时间,并延长强化效果的持续时间

4.5 Enervation(衰弱系)

  • 覆盖范围:Enhancement 的反面——降低目标某方面能力的法术,如 Slow、A Shadow in the Crowd、Faerie Fire。也包括夺取目标心智/行动控制权的法术(Domination、Beguiling the Savage Beast)。
  • 边界以伤害为主要效果、仅附带些许削弱能力的法术不属此类
  • 专精收益延长法术持续时间,并扩大 AOE 范围

4.6 Conveyance(传送系)

  • 覆盖范围:涉及传送、瞬移或移动施法者/目标的法术:Phase Door、Magus's Mark、Shocking Dash、Translocate Self。
  • 实例:Phase Door 与 Translocate Self 均带CONVEYANCE_SPELL标志。
  • 专精收益延长法术射程,并降低法力消耗

4.7 Restoration(恢复系)

  • 覆盖范围:将目标在肉体、精神、情感或魔法层面的能力恢复到理想状态。Cure Light Wounds、Sacrificial Regrowth、Mind over Pain、Stone's Endurance 均属此类。
  • 黑暗面吸取目标能力以恢复施法者的法术同样属于恢复系——这与"恢复类法术"的一般认知形成对照。
  • 专精收益降低施法时间,并提升治疗量

4.8 Transformation(变化系)

  • 覆盖范围:将一物变为另一物,如将一把树叶变成黄金、将冲锋的敌人变成家猫;也包括目标的局部变化。Harvest of the Hunter、Vicious Tentacle、Convert 都是变化系法术。
  • 专精收益延长持续时间,并降低施法时间

4.9 专精在法术中的接入方式(核心实操)

原文档给出了两条关键实践建议,二者均能通过仓库源码得到印证:

建议 1:打标志 + 挂 EOC 子法术

为法术添加对应的专精标志(flag),并通过extra_effects调用相应的"setup"法术来发放专精经验。若法术使用了多个子法术,必须为所有子法术都加上对应标志

仓库中所有专精法术都遵循这一模式,例如 magic_missile:

"flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "VERBAL", "SOMATIC", "NO_LEGS", "SILENT", "NO_PROJECTILE" ], "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],

八个专精标志在引擎中均有正式定义(src/magic.h),并由 src/magic.cpp 映射为字符串;同时引擎会在法术信息面板中渲染这些标志(src/magic.cpp),玩家可直接看到"is an evocation spell"等描述。对应地,每个专精类别都有专属的 setup 子法术:eoc_evocation_setupeoc_channeling_setupeoc_conjuration_setupeoc_enhancement_setupeoc_enervation_setupeoc_conveyance_setupeoc_restoration_setupeoc_transformation_setup——它们遍布于 Spells/animist.json、Spells/classless.json 及各 attunement 法术文件中。

建议 2:多效果法术必须统一使用 math 函数

当法术包含多个效果(如extra_effects条目)时,必须让所有子法术都使用正确的math函数进行数值缩放,否则法术整体无法随等级正确成长。这正是 magic_missile 中min_damage/max_damage使用u_spell_level('magic_missile')表达式的原因,也是 fireball 等所有攻击法术的通用写法。

三阶专精链与引擎联动

每个类别的三阶专精通过required_proficiencies串联(如prof_magic_evocation_beginnerapprenticemaster),法师施放对应法术即可积累经验(见 proficiencies.json)。default_skill_penalty: 0.2意味着未掌握专精时施放该类法术会有 20% 的技能惩罚,而default_time_multiplier: 1.5表示学习该类专精需要 1.5 倍的基础时间——这些参数共同构成了"专精既是成长路线、也是即时收益"的双层机制。


五、总结:设计一张平衡的法术"体检表"

综合原文档与仓库实现,设计或评估一个 Magiclysm 法术时可按下表逐项自检:

  1. 定层级:先确定预期 tier,再分配数值预算;
  2. 对数值:满级伤害(tier 0/1 上限约 150)、AOE、射程、持续时间是否符合该层级;
  3. 算账本:以 2000 法力池为基准,base_energy_cost是否让低等级施法者"倾尽全力解决一个中等威胁";
  4. 卡节奏:施法时间落在三档中的哪一档,是否符合战斗/非战斗定位;
  5. 审类型:伤害类型是否绕过护甲(force 最高),是否附带点燃/眩晕等隐性增益;
  6. 查目标valid_targets是否包含ground(隔墙施放)或排除了友军;
  7. 挂专精:按效果类别选择八个专精标志之一,并为每个子法术补齐标志与eoc_*_setup子法术,同时用math函数统一缩放;
  8. 定合法性:按书籍内最高管控法术设定 unrestricted / restricted / illegal,必要时制作双版本法术书。

遵循这套流程,无论是新法术的设计者还是 Mod 平衡性的审阅者,都能在 magic_balance.md 给出的框架内,产出强度可预期、成长曲线合理、且与 Magiclysm 专精生态无缝衔接的法术内容。

【免费下载链接】Cataclysm-DDACataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.项目地址: https://gitcode.com/GitHub_Trending/ca/Cataclysm-DDA

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询