法术模组编写

**原译者：子衿，青青子衿，文章从QQ群内搬运**

魔法Magic

## Spells

在 data/mods/Magiclysm mod里面有一个魔法模板，代码如下:

```
 {
   // This spell exists in json as a template for contributors to see the possible values of the spell

```

 "id": "example\_template", //id，唯一值，不能重复
 "type": "SPELL",
 "name": "Template Spell", // 名字，在游戏中显示的名字
 "description": "This is a template to show off all the available values",
 "valid\_targets": [ "hostile", "ground", "self", "ally" ], // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
 "effect": "shallow\_pit", // effect效果以C++编码。下面将提供已编码的effect效果的列表。
 "effect\_str": "template", // special. see below

```
 "effect_on_conditions": ["template"],                     // special. see below
 "shape": "blast",                                         // 魔法的攻击范围类型

```

 "extra\_effects": [ { "id": "fireball", "hit\_self": false, "max\_level": 3 } ], // 这允许您仅使用一个咒语施放多个咒语
 "affected\_body\_parts": [ "head", "torso", "mouth", "eyes", "arm\_l", "arm\_r", "hand\_r", "hand\_l", "leg\_l", "foot\_l", "foot\_r" ], //受效果影响的身体部位
 "flags": [ "SILENT", "LOUD", "SOMATIC", "VERBAL", "NO\_HANDS", "NO\_LEGS", "SPAWN\_GROUP" ], // 法术的flags，详情请参考下面的"Spell Flags"部分内容

```
 "spell_class": "NONE",                                    //

```

 "base\_casting\_time": 100, // 这是施法时间（用moves计算）
 "base\_energy\_cost": 10, // 施法所需的能量（必需值）
 "energy\_source": "MANA", // 用于施法的能量类型。 类型是：MANA(法力值)，BIONIC（生化能量），HP（血量），STAMINA（耐力），NONE（NONE不会消耗法力）

```
 "components": [requirement_id]                            // 施法所需要的物品id,可以写多个不同的物品

```

 "difficulty": 12, // 学习/施法的难度
 "max\_level": 10, // 法术的最高等级

```
 "min_accuracy" -20,                                       // 法术的精度
 "max_accuracy": 20,                                       // 法术的精度最大值
 "accuracy_increment": 1.5

```

 "min\_damage": 0, // 伤害最小值（或“初始”伤害）
 "max\_damage": 100, // maximum damage the spell can

```
 achieve

```

 "damage\_increment": 2.5, // 法术每级增加的伤害
 "min\_aoe": 0, // 法术的AOE范围
 "max\_aoe": 5,
 "aoe\_increment": 0.1,
 "min\_range": 1, // 法术的射程
 "max\_range": 10,
 "range\_increment": 2,
 "min\_dot": 0, // 法术的持续伤害
 "max\_dot": 2,
 "dot\_increment": 0.1,
 "min\_duration": 0, // 法术特殊效果的持续时间（如果有的话）
 "max\_duration": 1000,
 "duration\_increment": 4,
 "min\_pierce": 0, // 法术的穿甲效果
 "max\_pierce": 1,
 "pierce\_increment": 0.1,
 "field\_id": "fd\_blood", // 法术触发的field效果id
 "field\_chance": 100, // AOE范围内field每个格子生成的几率
 "min\_field\_intensity": 10, // 生成field的强渡
 "max\_field\_intensity": 10,
 "field\_intensity\_increment": 1,
 "field\_intensity\_variance": 0.1 // 生成field的强渡范围
 "sound\_type": "combat", // 声音的类型. 有以下几种:

```
 background, weather, music, movement, speech, activity, destructive_activity, alarm, combat, alert, order

```

 "sound\_description": "a whoosh", // 声音的描述
 "sound\_ambient": true, // 是否将其视为环境声音
 "sound\_id": "misc", // the sound id
 "sound\_variant": "shockwave" // the sound variant

```
 }

```

上面的大多数属性默认值是 0 或“NONE”，因此如果它们与您的法术无关，您可以忽略大部分属性。

在确定其中一些的值时，重要的是要注意某些公式不是线性的。例如，这是拼写失败几率的公式:

( ( ( ( 法术等级 - 法术难度 ) \* 2 + 智力 + 魔法能力等级 ) - 30 ) / 30 ) ^ 2

这意味着由智力为 8、魔法能力为 0、法术等级为 0 的玩家施展的难度为 0 的法术将有 53% 的法术失败几率。 另一方面，具有 12 智力、6 魔法能力和 6 级法术等级的玩家在同一个法术中的法术失败几率为 0%.

但是，经验增益的计算起来有点复杂。您需要多少经验才能达到一个级别的公式如下:

e ^ ( ( level + 62.5 ) \* 0.146661 ) ) - 6200

法术效果：Spell effects and rules
The value of the "effect" string in the spell's JSON data says what effect the spell has. For example, the Magus spell "Magic Missile" has a target\_attack effect, meaning it deals damage to a specific target:

```
 {
   "id": "magic_missile",
   "effect": "attack",
   "min_damage": 1
 }

```

而德鲁伊咒语“自然之弓”具有 spawn\_item 效果，并且需要物品的名称才能生成:

```
 {
   "id": "druid_naturebow1",
   "effect": "spawn_item",
   "effect_str": "druid_recurve"
 }

```

下表列出了当前实现的效果，以及它们用法:

* 效果
* pain\_split 让你四肢的所有伤害均摊
* attack 对其aoe中的目标造成伤害，并对effect\_str命名的目标施加effect效果
* spawn\_item 生成一个将在持续时间结束时消失的物品。默认持续时间为 0.
* summon 从effect\_str召唤一个怪物ID或怪物组ID，该ID或组ID将在其持续时间结束时消失。默认持续时间为 0.
* summon\_vehicle 从effect\_str中召唤车辆 ID，该 ID 将在持续时间结束时消失。默认持续时间为 0.
* translocate 打开一个窗口，允许施法者选择一个易位门进行传送。.
* area\_pull 将AOE范围内的 valid\_targets拉入目标位置
* area\_push 将 AOE范围内的valid\_targets推离目标位置
* short\_range\_teleport 传送玩家到AOE范围内随机位置
* targeted\_polymorph 目标怪物的HP低于法术的伤害，就会永久变身为effect\_str指定的怪物ID。如果effect\_str留空，目标将变成一个具有相似难度等级的随机怪物，或者可以使用标志"POLYMORPH\_GROUP"从怪物组中挑选一个加权怪物ID。玩家和NPC对这种法术效果免疫.
* recover\_energy 恢复等同于法术伤害的能量来源。 恢复的能量源在“effect\_str”中定义，可以是“MANA”、“STAMINA”、“FAIGUE”、“PAIN”、“BIONIC”之一
* ter\_transform 改变以目标为中心的区域内的地形和家具。 影响范围内任何一个点发生变化的几率是 one\_in(damage)。 \*effect\_str 是 ter\_furn\_transform 的 id。.
* vomit 任何在其影响范围内的生物都会立即呕吐，如果目标能够做到的话.
* timed\_event 仅向玩家添加定时事件。 有效的定时事件：“help”、“wanted”、“robot\_attack”、“spawn\_wyrms”、\*“amigara”、“roots\_die”、“temple\_open”、“temple\_flood”、“temple\_spawn”、“dim”、“artifact\_light” 仅针对神器主动效果添加。 支持有限，使用风险自负.
* explosion 以目标为中心爆炸，具有中心伤害和范围伤害.
* flashbang 以目标为中心爆发闪光效果，具有中心伤害和范围伤害
* mod\_moves 增加/减少移动点到目标。可以为负数以“冻结”目标该时间量
* map 以为玩家为中心解锁AOE范围的地图视野
* morale 给aoe内的所有npc或化身带来士气效应damage()。decay\_start是 10分之一的Duration（）.
* charm\_monster 魅力一个生命值小于伤害的怪物，持续时间由duration定义
* mutate 法术触发变异。 如果定义了 effect\_str，则向该类别变异，而不是随机选择。 “MUTATE\_TRAIT”标志允许 \*effect\_str 成为特定变异而不是类别。 damage() / 100 是突变成功的百分比（值 10000 表示 100.00%）
* bash 造成bash钝击伤害.
* dash 在范围内向前冲刺并击中目标
* banishment 在AOE范围内消耗自身hp杀死目标，当目标hp小于施法者，扣除目标hp值的自身血量，斩杀目标，如果目标HP比施法者多，施法失败.
* revive 像僵尸死灵法师一样复活怪物。 怪物必须有复活标志:revivesflag
* upgrade 立即升级目标怪物
* pull\_target 尝试将目标沿直线拉向施法者。 如果路径被不可通行的家具或地形阻挡，则效果失败.
* guilt 目标获得guilt的士气，就好像它被施法者杀死了一样
* remove\_effect 移除 aoe 中所有生物的effect\_str效果.
* remove\_field 移除AOE范围内的field效果，如果移除是 fd\_fatigue，则根据强度导致不同强度的效果.
* emit 触发emit效果
* fungalize 真菌化目标
* effect\_on\_condition 触发effect\_on\_condition对话效果. 对于运行 eoc，目标是 u，施法者是 npc.

法术其他"shape"形状类型. 它决定AOE范围的形状.

* Shape 描述
* blast 从撞击位置向外发出的标准圆形爆炸。 aoe 值是半径.
* line 发射一条宽度等于 aoe 的线，长度为射程
* cone 发射弧度等于 aoe 的圆锥体
* Spell Flags

Flag允许您为法术效果、行为和限制提供额外的自定义。 法术可以有任意数量的flag，例如:

```
{
   "id": "bless",
   "//": "Encumbrance on the mouth (verbal) or arms (somatic) affect casting success, but not legs.",
   "flags": [ "VERBAL", "SOMATIC", "NO_LEGS" ]
}

```

* Flag 描述
* WONDER 这极大地改变了父法术的行为：法术本身不施放，但使用它的伤害和范围信息来施放额外效果。 将随机选择 N 个额外效果来施放，其中 N 是该法术的当前伤害（带有 RANDOM\_DAMAGE 标志的flag），并且该法术施放的法术的消息也将被显示。 如果不想显示此法术的消息，请确保该消息为空字符串。.
* RANDOM\_TARGET 法术自动选择范围内的一个随机有效目标，而不是施法者选择目标。 这会影响 extra\_effects.
* RANDOM\_DURATION 在 min+increment\*level 和 max 之间选择随机数，而不是正常的持续时间
* RANDOM\_DAMAGE 在 min+increment\*level 和 max 之间选择随机数，而不是正常的伤害
* RANDOM\_AOE 在 min+increment\*level 和 max 之间选择随机数，而不是正常的AOE范围
* PERMANENT 使用此flag的法术生成的物品或生物不会像平常一样消失和死亡。 物品只能在最大法术等级下永久存在； 任何法术等级的生物都可以是永久的。
* IGNORE\_WALLS 法术的aoe范围能够穿墙.
* SWAP\_POS 交换施法者和选中目标物品的位置
* HOSTILE\_SUMMON 召唤法术总是产生一个敌对的怪物
* HOSTILE\_50 召唤法术有50%产生一个友好的怪物
* FRIENDLY\_POLY 如果该法术成功结算，targeted\_polymorph 法术的目标将变得对施法者友好.
* POLYMORPH\_GROUP 一个targeted\_polymorph 法术会将目标从effect\_str 中的怪物组ID 匹配随机变成怪物.
* SILENT 法术在目标处不会产生噪音
* LOUD 法术在目标处产生额外的噪音
* VERBAL 法术在施法者位置发出噪音，嘴巴的累赘会影响成功率
* SOMATIC 手臂累赘影响成功率和施法时间（轻微）
* NO\_HANDS 手部累赘不影响施法
* NO\_LEGS 腿部累赘不影响施法
* CONCENTRATE 专注（注意力）影响法术成功率
* MUTATE\_TRAIT 法术触发变异的spell\_effect使用指定的变异id：trait\_id而不是变异类别
* PAIN\_NORESIST 改变疼痛的法术无法被抵抗(类似于deadened trait)
* WITH\_CONTAINER 生成的物品带有容器
* UNSAFE\_TELEPORT 传送法术有杀死施法者或其他人的风险
* TARGET\_TELEPORT 传送法术更改为最大范围目标，并以 aoe 作为目标周围的变化
* SPAWN\_GROUP 从物品或怪物群中生成或召唤，而不是单个物品/怪物 ID
* SPAWN\_WITH\_DEATH\_DROPS 允许召唤的怪物保留他们死亡掉落，否则他们什么都不掉落
* NON\_MAGICAL 在计算伤害时忽略目标的法术抗性
* NO\_PROJECTILE 法术的“投射”部分会穿过墙壁。法术效果的中心在你瞄准的地方，不受任何障碍的影响

伤害类型：Damage Types
对于具有攻击类型的法术，下面是可用的伤害类型:

```
"fire"
"acid"
"bash"
"bio" - internal damage such as poison
"cold"
"cut"
"electric"
"stab"
"none" - this damage type goes through armor altogether. it is the default.

```

## Spells that level up

在升级时改变效果的法术必须具有最小和最大效果以及增量。 最小效果是法术在 0 级时的效果，最大效果是它停止增长的地方。 增量是它每级的变化量。 例如：

```
"min_range": 1,
"max_range": 25,
"range_increment": 5,

```

最小值和最大值必须始终具有相同的符号，但它可以是负数，例如。 在使用负面“恢复”效果造成疼痛或耐力伤害的法术的情况下。 例如：

```
{
 "id": "stamina_damage",
 "type": "SPELL",
 "name": "Tired",
 "description": "decreases stamina",
 "valid_targets": [ "hostile" ],
 "min_damage": -2000,
 "max_damage": -10000,
 "damage_increment": -3000,
 "max_level": 10,
 "effect": "recover_energy",
 "effect_str": "STAMINA"
}

```

## Learning Spells

目前只有一种主动学习法术的方法：通过 use\_action 从物品中学习法术。 一个例子如下所示：

{

```
 "id": "DEBUG_spellbook",
 "type": "GENERIC",
 "name": "A Technomancer's Guide to Debugging C:DDA",
 "description": "static std::string description( spell sp ) const;",
 "weight": 1,
 "volume": "1 ml",
 "symbol": "?",
 "color": "magenta",
 "use_action": {
   "type": "learn_spell",
   "//": "list of spells you can learn from the item",
   "spells": [ "debug_hp", "debug_stamina", "example_template", "debug_bionic", "pain_split", "fireball" ]
 }

```

},
你可以根据智力、法术和专注力以每回合约 1 次经验的速度学习这本法术书.

除了看书学习，还可以通过变异来获得法术以及NPC的教学来获得法术.

Spells in professions and NPC classes
你可以像这样在职业或NPC类定义中添加“法术”:

"spells": [ { "id": "summon\_zombie", "level": 0 }, { "id": "magic\_missile", "level": 10 } ]
NOTE: 这使得学习与职业冲突的法术成为可能。

法术示例：Spell examples
下面是一些法术示例

```
   {
   "type": "SPELL",
   "id": "test_summon",                                       //id，唯一值，不能重复
   "name": "Summon",                                          // 名字，在游戏中显示的名字
   "description": "召唤 'effect_str' 中指定的生物",
   "flags": [ "SILENT", "HOSTILE_SUMMON" ],  // see "Spell Flags" in this document
   "valid_targets": [ "ground" ],                             // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
   "min_damage": 1,                                           // minimum number of creatures summoned (or "starting" number of creatures summoned)
   "max_damage": 1,                                           // maximum number of creatures summoned the spell can achieve
   "min_aoe": 3,                                            // area of effect of the spell, in this case the area the summons can appear in
   "max_aoe": 3,
   "effect": "summon",                                        // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "effect_str": "mon_test_monster",                          // varies, see table of implemented effects in this document
   "min_duration": 6250,                                      // 法术特殊效果的持续时间（如果有的话）
   "max_duration": 6250
 }

```

典型攻击法术:

```
   {
   "id": "test_attack",                                     //id，唯一值，不能重复
   "type": "SPELL",
   "name": "Ranged Strike",                                 // 名字，在游戏中显示的名字
   "description": "以100%的准确率对目标造成伤害。 将始终应用“effect_str”中指定的状态效果。",
   "valid_targets": [ "ground", "hostile" ],                // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
    "effect": "projectile_attack",                           // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "effect_str": "stunned",                                 // varies, see table of implemented effects in this document
   "min_damage": 10,                                        // 伤害最小值（或“初始”伤害）
   "max_damage": 20,                                        // maximum damage the spell can achieve
   "damage_increment": 1.0,                              // How much damage increases per spell level increase
   "min_range": 4,                                          // 法术的射程
   "max_range": 4,
   "base_casting_time": 500,                                // 这是施法时间（用moves计算）
   "min_duration": 200,                                     // 法术特殊效果的持续时间（如果有的话）
   "max_duration": 300,
   "duration_increment": 10,                              // How much longer the spell lasts per spell level
   "damage_type": "stab"                                    // type of damage
 } ;

```

note: Uses both ground and hostile in valid\_targets as well so it can be targeted in an area with no line of sight

持续类法术:

```
   {
   "id": "test_combo",                                        //id，唯一值，不能重复
   "type": "SPELL",
   "name": "Combo Strikes",                                   // 名字，在游戏中显示的名字
   "description": "施展此法术时，还将按降序激活“extra_effects”上指定的法术。",
   "flags": [ "SILENT", "RANDOM_DAMAGE", "RANDOM_AOE" ],      // see "Spell Flags" in this document
   "valid_targets": [ "hostile", "ground" ],                  // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
   "effect": "projectile_attack",                             // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "effect_str": "downed",                                    // varies, see table of implemented effects in this document
   "extra_effects": [ { "id": "test_atk1" }, { "id": "test_atk2" } ],               // 这允许您仅使用一个咒语施放多个咒语
   "min_damage": 7,                                         // 伤害最小值（或“初始”伤害）
   "max_damage": 14,                                        // maximum  damage the spell can achieve
   "damage_increment": 0.7                            // damage increase per spell level
   "min_aoe": 2,                                            // area of effect
   "max_aoe": 4,
   "aoe_increment": 0.2,                               // how much wider the area of effect gets per spell level
   "min_range": 10,                                         // 法术的射程
   "max_range": 10,
   "base_casting_time": 750,                                // 这是施法时间（用moves计算）
   "min_duration": 325,                                     // 法术特殊效果的持续时间（如果有的话）
   "max_duration": 325,
   "damage_type": "stab"                                    // type of damage
 } ;

```

note: 如果您在 extra\_effects 中放置两个或更多法术，它将简单地连续施放所有法术 - 第一个法术在 extra\_effects 中，第二个在 extra\_effects 中，第三个在 extra\_effects 等等。如果您想随机选择一个，请使用 WONDER 标志。 此外，除非在 fake\_spell 中添加了额外的数据，否则额外的法术将被施展到与正在施展的父法术的等级相同的等级。

随机施法:

```
 {
   "id": "test_starter_spell",                              //id，唯一值，不能重复
   "type": "SPELL",
   "name": "Starter",                                       // 名字，在游戏中显示的名字
   "description": "施展此法术时，随机选择一个在'extra_effects'中指定的法术来施展。 这个法术的伤害计算它会从列表中随机选择多少次",
   "flags": [ "SILENT", "WONDER", "RANDOM_DAMAGE" ],        // see "Spell Flags" in this document
   "valid_targets": [ "hostile" ],                          // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
   "effect": "projectile_attack",                           // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "extra_effects": [                                       // 这允许您仅使用一个咒语施放多个咒语
     { "id": "test_atk1" },                                 //id，唯一值，不能重复
     { "id": "test_atk2" },                                 //id，唯一值，不能重复
     { "id": "test_atk3" },                                 //id，唯一值，不能重复
     { "id": "test_atk4" },                                 //id，唯一值，不能重复
     { "id": "test_atk5" },                                 //id，唯一值，不能重复
     { "id": "test_atk6" }                                  //id，唯一值，不能重复
   ],
   "min_damage": 3,                                         // 伤害最小值（或“初始”伤害）
   "max_damage": 5,                                         // maximum damage the spell can achieve
   "damage_increment": 0.2                            // damage increase per spell level
   "min_range": 10,                                         // 法术的射程
   "max_range": 10
 }

```

note: WONDER flag 在这里它可以用作骰子模拟器。 它从这些法术中选择一个（它不会失败，它总是会选择至少一个随机咒语），这个骰子的掷骰数是通过 min\_damage 和 max\_damage 指定的，当然在 RANDOM\_DAMAGE 这个flag的帮助下 - 在这个例子中， 此法术将重复最少 3 次，最多 5 次，因此它总是会施放 3-5 次。 extra\_effects 中必须至少有一个法术，WONDER 才能正常工作。

反复施放相同的法术:
 {

```
   "type": "SPELL",
   "id": "test_attack_repeat",                         //id，唯一值，不能重复
   "name": "a spell",                                  // 名字，在游戏中显示的名字
   "description": "施展此法术时，它将重复 `extra_effects` 中指定的法术 - 重复次数为间隔 `min_damage`-`max_damage` ",
   "extra_effects": [ { "id": "test_attack" } ],       // 这允许您仅使用一个咒语施放多个咒语
   "flags": [ "SILENT", "WONDER", "RANDOM_DAMAGE" ],   // see "Spell Flags" in this document
   "valid_targets": [ "hostile" ],                     // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
   "effect": "target_attack",                          // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "effect_str": "target_message",                     // varies, see table of implemented effects in this document
   "min_damage": 5,                                    // minimum (starting damage)
   "max_damage": 7,                                    // maximum damage the spell can achieve
   "damage_increment": 0.2                        // damage increase per spell level
   "min_range": 10,                                    // 法术的射程
   "max_range": 10,
   "min_duration": 1,                                  // 法术特殊效果的持续时间（如果有的话）
   "max_duration": 1
 }

```

note: 请注意我们如何再次获得 WONDER、RANDOM\_DAMAGE 组合 - 我们将 min\_damage 设置为 5，将 max\_damage 设置为 7。这意味着骰子将滚动 5-7 次，但这次我们在 extra\_effects 中只有一个法术。 观察到如果 extra\_effets 中只有 1 个法术，WONDER 有 100% 的机会选择一个法术，因此它将重复相同的法术 5-7 次.

对目标施法并影响自身的法术:
 {

```
   "id": "test_attack_note",                            //id，唯一值，不能重复
   "type": "SPELL",
   "name": "a note",                                    // 名字，在游戏中显示的名字
   "description": "这个法术应用一个无害的状态效果来通知玩家自己施放的法术。",
   "flags": [ "SILENT" ],                               // see "Spell Flags" in this document
   "valid_targets": [ "hostile" ],                      // 施法目标，如果未包含有效目标，则无法对该目标施放咒语
   "effect": "target_attack",                           // effects are coded in C++. A list is provided in this document of possible effects that have been coded.
   "extra_effects": [ { "id": "sacrifice_spell", "hit_self": true }, { "id": "test_attack" } ],     // 这允许您仅使用一个咒语施放多个咒语
   "effect_str": "eff_test_note",                       // varies, see table of implemented effects in this document

```

 "min\_aoe": 6, // 法术的AOE范围

```
   "max_aoe": 6,
   "min_duration": 1,                                   // 法术特殊效果的持续时间（如果有的话）
   "max_duration": 1
 }

```

note: 在这里，我们必须对施法者本身使用一种法术，对敌对目标使用另一种法术。 为了使施法者对自己施展法术 - 你必须指定你正在使用的任何法术的 id 并在它附近写在相同的括号中 hit\_self：true，第二个法术将施展在目标上 这只有在以下情况下才是必要的:我们需要一个对目标施放的效果和对施法者施放的第二个效果.

Monsters
您可以将法术指定为怪物的特殊攻击.

{ "type": "spell", "spell\_id": "burning\_hands", "spell\_level": 10, "cooldown": 10 }
spell\_id: 法术id.
spell\_level: 施法的等级。怪物施放的法术不会像玩家练习法术那样提升等级.
cooldown: 冷却时间
附魔：Enchantments
Identifier 描述
id Unique ID. Must be one continuous word, use underscores if necessary.
has 附魔的激活方式： “WIELD” - 手持时 \* “WORN” - 作为穿戴时 \* “HELD” - 在你的物品栏中时
condition 附魔激活条件判断。 1."ALWAYS" - 永远激活 2."DIALOG\_CONDITION" - 只要条件中的对话条件为true，就激活 3. "ACTIVE" - 每当项目、突变、仿生或附魔附加到的任何东西处于激活状态时激活。 4.“INACTIVE"” - 每当附魔的物品、突变、仿生或任何附魔处于不活跃状态时激活。
hit\_you\_effect 当你近战攻击一个生物时激活的法术。 除非self = true，否则法术以生物的位置为中心，然后以您的位置为中心。 遵循定义“fake\_spell”的模板"
hit\_me\_effect 当你被生物击中时激活的法术。 该法术以您的位置为中心。 遵循定义“fake\_spell”的模板
intermittent\_activation 根据持续时间，以你为中心激活的法术。 法术遵循“fake\_spell”模板
values 附魔属性。 不同属性id不同效果 ，“add”：和“multiply”是可选的，add:1——增加1点，multiply：2.0——200%的加成（属性值参考下列附魔属性）

```
 {
   "type": "enchantment",
   "id": "MEP_INK_GLAND_SPRAY",
   "hit_me_effect": [
     {
       "id": "generic_blinding_spray_1",
       "hit_self": false,
       "once_in": 15,
       "message": "Your ink glands spray some ink into %2$s's eyes.",
       "npc_message": "%1$s's ink glands spay some ink into %2$s's eyes."
     }
   ]
 },
 {
   "type": "enchantment",
   "id": "ENCH_INVISIBILITY",
   "condition": "ALWAYS",
   "ench_effects": [ { "effect": "invisibility", "intensity": 1 } ],
   "has": "WIELD",
   "hit_you_effect": [ { "id": "AEA_FIREBALL" } ],
   "hit_me_effect": [ { "id": "AEA_HEAL" } ],
   "values": [ { "value": "STRENGTH", "multiply": 1.1, "add": -5 } ],
   "intermittent_activation": {
     "effects": [
       {
         "frequency": "1 hour",
         "spell_effects": [
           { "id": "AEA_ADRENALINE" }
         ]
       }
     ]
   }
 }

```

附魔属性：Allowed id for values
* STRENGTH ：力量
* DEXTERITY ：敏捷
* PERCEPTION ：感知
* INTELLIGENCE ： 智力
* SPEED ：速度
* ATTACK\_COST ：攻击消耗
* ATTACK\_SPEED ：攻击速度
* MOVE\_COST ：移动消耗
* METABOLISM ：新陈代谢
* MAX\_MANA ：最大法力上限
* REGEN\_MANA ：法力恢复
* BIONIC\_POWER ：生化能量
* MAX\_STAMINA：最大耐力上限
* REGEN\_STAMINA：耐力恢复
* MAX\_HP：最大hp上限
* REGEN\_HP：HP恢复
* HUNGER ：饥饿
* THIRST ：口渴
* FATIGUE ：疲劳
* PAIN ：疼痛
* BONUS\_DODGE ：闪避奖励
* BONUS\_BLOCK ：格挡奖励
* BONUS\_DAMAGE ：伤害奖励
* ATTACK\_NOISE ：攻击噪音
* SPELL\_NOISE ：施法噪音
* SHOUT\_NOISE ：呼吸噪音
* FOOTSTEP\_NOISE ：走路噪音
* SIGHT\_RANGE ：视野范围
* CARRY\_WEIGHT ；负重上限
* CARRY\_VOLUME ：负重容量
* WEAPON\_DISPERSION
* SOCIAL\_LIE ：撒谎能力
* SOCIAL\_PERSUAD ：说服力E
* SOCIAL\_INTIMIDATE ：威慑力
* SLEEPY : 越高，越容易入睡。.
* LUMINATION : 角色自发光
* EFFECTIVE\_HEALTH\_MOD : 如果这不是零（默认为零），将使用它代替代替健康值而不是你的实际的健康模式
* MOD\_HEALTH : 如果这不是零（默认为零），您将每半小时将您的健康调整为最大/最小的MOD\_HEALTH\_CAP值
* MOD\_HEALTH\_CAP : 如果这不是零（默认为零），您将每半小时改变一次您的 MOD\_HEALTH 收益/损失
* MAP\_MEMORY : 您能记住多少地图图块。
* READING\_EXP : 更改您从每个读数增量中学习的最小值：提升学习能力
* SKILL\_RUST\_RESIST :百分之百抵抗skill rust.
* LEARNING\_FOCUS : 学习时获得的额外注意力.
* ARMOR\_BASH ：钝击防护
* ARMOR\_CUT
* ARMOR\_STAB
* ARMOR\_HEAT
* ARMOR\_COLD
* ARMOR\_ELEC
* ARMOR\_ACID
* ARMOR\_BIO

附魔物品的效果：

* ITEM\_DAMAGE\_PURE ：真实伤害
* ITEM\_DAMAGE\_BASH
* ITEM\_DAMAGE\_CUT
* ITEM\_DAMAGE\_STAB
* ITEM\_DAMAGE\_HEAT
* ITEM\_DAMAGE\_COLD
* ITEM\_DAMAGE\_ELEC
* ITEM\_DAMAGE\_ACID
* ITEM\_DAMAGE\_BIO

伤害附魔值仅适用于近战.

* ITEM\_DAMAGE\_AP
* ITEM\_DAMAGE\_PURE
* ITEM\_ARMOR\_BASH
* ITEM\_ARMOR\_CUT
* ITEM\_ARMOR\_STAB
* ITEM\_ARMOR\_HEAT
* ITEM\_ARMOR\_COLD
* ITEM\_ARMOR\_ELEC
* ITEM\_ARMOR\_ACID
* ITEM\_ARMOR\_BIO
* ITEM\_WEIGHT ：重量
* ITEM\_ENCUMBRANCE ：累赘
* ITEM\_VOLUME ：容积
* ITEM\_COVERAGE ：覆盖率
* ITEM\_ATTACK\_SPEED ：攻速
* ITEM\_WET\_PROTECTION ：防湿

示例：

```
 { "value": "ARMOR_ELEC", "add": -20 }减去 20 点电伤害
 { "value": "ATTACK_SPEED", "add": -60 } 攻击消耗减去 60 ，使攻击更快
 {" value": "ARMOR_COLD", "multiply": -0.4 } 减去任何寒冷伤害的 40%
 { "value": "ARMOR_HEAT", "multiply": 0.4 } 火焰伤害增加 40%
 { "value": "ARMOR_CUT", "add": 2 } 受到的切割伤害增加 2
 { "value": "ARMOR_BIO", "multiply": -1.4 } 减去 140% 的任何生物伤害，造成 40% 的伤害增加为生命值
 { "value": "ARMOR_ACID", "multiply": 1.4 } 从酸中受到的伤害提高 140%

```