效果

效果

> 游戏规则

“效果”一词有两层含义:一是游戏中的某种机制,二是这种机制的具体施加。

武器和芯片的效果

这类效果用于描述一件武器或一个芯片,可以分别通过 getWeaponEffects 和 getChipEffects 获取。被遗忘武器的被动效果也能通过函数 getWeaponPassiveEffects 以相同的格式获取。返回结果是一个效果列表,形式为数组的数组。每个效果由以下部分组成:

类型

常量名 值 作用

EFFECT_DAMAGE 1 减少实体的生命值。受力量加成。与护盾、吸血和伤害反弹相互作用。同时使最大生命值减少扣除量的 5%。

EFFECT_HEAL 2 为实体恢复生命值,不超过最大生命值。受智慧加成。

EFFECT_BUFF_STRENGTH 3 为实体提供力量。受科学加成。

EFFECT_AGILITY 4 提升目标的敏捷。 -->

EFFECT_BUFF_AGILITY 4 为实体提供敏捷。受科学加成。

EFFECT_RELATIVE_SHIELD 5 提供百分比护盾,按比例减少伤害扣除的生命值。受抗性加成。

EFFECT_ABSOLUTE_SHIELD 6 提供固定护盾,按固定数值减少伤害扣除的生命值。受抗性加成。

EFFECT_BUFF_MP 7 为实体提供移动点。受科学加成。

EFFECT_BUFF_TP 8 为实体提供行动点。受科学加成。

EFFECT_DEBUFF 9 按一定百分比降低实体身上所有效果的数值。

EFFECT_TELEPORT 10 改变施法者的位置。

EFFECT_INVERT 11 交换施法者与目标实体的位置。

EFFECT_BOOST_MAX_LIFE 12 提升实体的生命值和最大生命值。受智慧加成。

EFFECT_POISON 13 减少实体的生命值。受魔法加成。同时使最大生命值减少扣除量的 10%。

EFFECT_SUMMON 14 召唤一个球茎。如果队伍已达到召唤上限,则没有效果。

EFFECT_RESURRECT 15 复活一个实体(最大生命值 = 复活前最大生命值的一半,当前生命值 = 复活前最大生命值的四分之一)。

EFFECT_KILL 16 扣除实体的全部生命值。

EFFECT_SHACKLE_MP 17 减少实体的移动点。受魔法加成。

EFFECT_SHACKLE_TP 18 减少实体的行动点。受魔法加成。

EFFECT_SHACKLE_STRENGTH 19 减少实体的力量。受魔法加成。

EFFECT_DAMAGE_RETURN 20 为实体提供伤害反弹:对该实体造成伤害的实体会被扣除生命值。受敏捷加成。同时使最大生命值减少扣除量的 5%。

EFFECT_BUFF_RESISTANCE 21 为实体提供抗性。受科学加成。

EFFECT_BUFF_WISDOM 22 为实体提供智慧。受科学加成。

EFFECT_ANTIDOTE 23 清除目标身上的所有中毒效果(EFFECT_POISON)。

EFFECT_SHACKLE_MAGIC 24 减少实体的魔法。受魔法加成。

EFFECT_AFTEREFFECT 25 减少实体的生命值。受科学加成。同时使最大生命值减少扣除量的 5%。

EFFECT_VULNERABILITY 26 减少实体的百分比护盾。不受加成。按比例增加伤害扣除的生命值。

EFFECT_ABSOLUTE_VULNERABILITY 27 减少实体的固定护盾。不受加成。按固定数值增加伤害扣除的生命值。

EFFECT_LIFE_DAMAGE 28 按施法者生命值的一定百分比扣除生命值。与护盾和伤害反弹相互作用。同时使最大生命值减少扣除量的 5%。

EFFECT_STEAL_ABSOLUTE_SHIELD 29 移除目标的固定护盾(EFFECT_ABSOLUTE_SHIELD),并将其转给施法者。

EFFECT_NOVA_DAMAGE 30 减少最大生命值。受科学加成。

EFFECT_RAW_BUFF_MP 31 为实体提供移动点。不受加成。

EFFECT_RAW_BUFF_TP 32 为实体提供行动点。不受加成。

EFFECT_POISON_TO_SCIENCE 33 根据所受的毒素伤害(EFFECT_POISON)提供科学。

EFFECT_DAMAGE_TO_ABSOLUTE_SHIELD 34 根据所受的伤害(EFFECT_DAMAGE)提供固定护盾(EFFECT_ABSOLUTE_SHIELD)。

EFFECT_DAMAGE_TO_STRENGTH 35 根据所受的伤害(EFFECT_DAMAGE)提供力量。

EFFECT_NOVA_DAMAGE_TO_MAGIC 36 根据所受的新星伤害(EFFECT_NOVA_DAMAGE)提供魔法。

EFFECT_RAW_ABSOLUTE_SHIELD 37 提供固定护盾,按固定数值减少伤害(EFFECT_DAMAGE)扣除的生命值。不受加成。

EFFECT_RAW_BUFF_STRENGTH 38 为实体提供力量。不受加成。

EFFECT_RAW_BUFF_MAGIC 39 为实体提供魔法。不受加成。

EFFECT_RAW_BUFF_SCIENCE 40 为实体提供科学。不受加成。

EFFECT_RAW_BUFF_AGILITY 41 为实体提供敏捷。不受加成。

EFFECT_RAW_BUFF_RESISTANCE 42 为实体提供抗性。不受加成。

EFFECT_PROPAGATION 43 在目标的回合结束时,传播给目标附近的实体。

EFFECT_RAW_BUFF_WISDOM 44 为实体提供智慧。不受加成。

EFFECT_NOVA_VITALITY 45 提升目标的最大生命值。受科学加成。

EFFECT_ATTRACT 46 将直线上的第一个实体拉到目标格。

EFFECT_SHACKLE_AGILITY 47 减少实体的敏捷。受魔法加成。

EFFECT_SHACKLE_WISDOM 48 减少实体的智慧。受魔法加成。

EFFECT_REMOVE_SHACKLES 49 解除目标身上的所有削弱效果(EFFECT_SHACKLE_*)。

EFFECT_MOVED_TO_MP 50 目标实体每被位移一次,MP 就会增加。

EFFECT_PUSH 51 将直线上的第一个实体推到目标格。

EFFECT_RAW_BUFF_POWER 52 为实体提供威力(power)。不受加成。该效果未被使用。

EFFECT_REPEL 53 将目标实体沿直线击退指定的格数。

EFFECT_RAW_RELATIVE_SHIELD 54 提供百分比护盾,按比例减少伤害(EFFECT_DAMAGE)扣除的生命值。不受抗性加成。

EFFECT_ALLY_KILLED_TO_AGILITY 55 每有一名盟友阵亡,目标就获得敏捷。

EFFECT_KILL_TO_TP 56 目标每击杀一个实体,TP 就会增加。

EFFECT_RAW_HEAL 57 为实体恢复生命值,不超过最大生命值。不受智慧加成。

EFFECT_CRITICAL_TO_HEAL 58 目标实体每打出一次暴击,就会获得治疗。

EFFECT_ADD_STATE 59 为目标实体添加一个状态。

EFFECT_TOTAL_DEBUFF 60 移除目标身上效果的 100%(暴击时为 130%)。

EFFECT_STEAL_LIFE 61 减少目标一定量的最大生命值,并将其转给施法者。

EFFECT_MULTIPLY_STATS 62 将目标的属性乘以效果的数值。没有对应的常量。

EFFECT_DAMAGE_TO_RESISTANCE 63 根据所受的伤害(EFFECT_DAMAGE)提供抗性。

EFFECT_SUPERINFECTION 64 将目标身上中毒效果(EFFECT_POISON)的一定百分比转化为即时伤害。

最小值和最大值

所有效果都标有最小值和最大值。最终数值会在最小值和最大值之间随机抽取。

如果你想确保不会高估效果的数值,就用最小值。如果你觉得自己手气不错,就按最大值来算。拿不定主意?取最小值和最大值的平均值就好。

用哪个值,由你决定!

下面的公式让你可以选择一个置信系数:系数为 0 时,valeur_finale 等于 effect_min;系数为 1 时,valeur_finale 等于 effect_max。这里取 0.5,得到的就是平均值。

别忘了,打出暴击时,效果的数值会乘以 1.3!

持续时间

即效果在目标身上持续生效的回合数。

对于一次性结算的效果(治疗、中毒、伤害),值为 0 表示效果在施放时立即生效;值不为 0(1 或以上)则表示效果在目标的回合开始时生效。

受影响的实体

受效果影响的实体以二进制方式编码:如果某类实体对应的位为 1,这类实体就会受到该效果的影响。

因此,要判断某个实体是否会受到影响,需要使用按位与运算符(符号为 &),它可以检查给定数字中某一位的状态(不能使用 == 和 === 运算符,因为可能同时有多个位为 1)。

效果 值(二进制) 值(十进制) 受影响的实体

EFFECT_TARGET_ENEMIES 00001 1 施加效果的实体的敌人

EFFECT_TARGET_ALLIES 00010 2 施加效果的实体的盟友

EFFECT_TARGET_CASTER 00100 4 施加效果的实体本身

EFFECT_TARGET_NON_SUMMONS 01000 8 韭葱、宝箱、炮塔和怪物(不是球茎的实体)

EFFECT_TARGET_SUMMONS 10000 16 球茎

例如,如果表示受影响实体的数字是 14(二进制为 01110),就表示受该效果影响的是友方韭葱以及施加效果的实体本身。因此,球茎和敌人不会受到影响。

下面的代码可以判断一个效果是否会影响敌方球茎:

修饰符

和受影响的实体一样,修饰符也以二进制方式编码。这些修饰符作用于效果,用来改变效果的目标或数值。

EFFECT_MODIFIER_STACKABLE 00001 1 效果可叠加

EFFECT_MODIFIER_MULTIPLIED_BY_TARGETS 00010 2 效果数值乘以范围内命中的目标数

EFFECT_MODIFIER_ON_CASTER 00100 4 总是作用于施法者。

EFFECT_MODIFIER_NOT_REPLACEABLE 01000 8 不可覆盖。

EFFECT_MODIFIER_IRREDUCTIBLE 10000 16 不可降低。

修饰符 EFFECT_MODIFIER_STACKABLE 表示该效果可以叠加,也就是说,一个实体身上可以同时存在由同一件武器或同一个芯片施加的多个此类效果。例如,一个实体身上可以有同一个芯片施加的多个中毒效果,但不能有两个来自芯片头盔的固定护盾效果。如果你对已经带有头盔效果的韭葱再次施放头盔,原来的效果会被新的效果取代。注意,别让你的弱小球茎对一根已经有更强头盔效果的韭葱施放头盔,否则反而会损失护盾!

修饰符 EFFECT_MODIFIER_MULTIPLIED_BY_TARGETS 会将效果的基础数值乘以物品 AoE 范围内的实体数。

修饰符 EFFECT_MODIFIER_ON_CASTER 表示该效果总是作用于施法者。例如,阔剑的力量增益效果就带有这个修饰符,所以即使朝空地攻击,也能获得力量。

修饰符 EFFECT_MODIFIER_NOT_REPLACEABLE 表示如果目标身上已有该效果,就不会被替换(例如:对已经感染的韭葱施放新冠肺炎,不会改变它因新冠所受的毒素伤害数值)。

修饰符 EFFECT_MODIFIER_IRREDUCTIBLE 表示该效果的数值无法被降低(例如被解放降低)。

实体身上的效果

这类效果用于详细反映一个实体的状态,可以通过 getEffects 获取。返回结果是一个效果列表,形式为数组的数组。还可以通过 getLaunchedEffects 获取某个实体施加的效果列表,比如可以借此判断它是不是对手的核心角色,从而决定是否优先击杀它。每个效果包含以下信息:

与 getWeaponEffects 或 getChipEffects 得到的效果不同,这里是已经施放、数值已知的效果,这次不需要估算了。

注意:除非明确标为可叠加,否则一个实体不能多次叠加来自同一件武器或同一个芯片的相同效果。比如,你已经对自己施放了盔甲,如果你的金属球茎再对你施放同一个芯片盔甲,两者不会叠加,不过持续时间会重新计算。

效果的结算顺序

在每个实体的回合开始时,依次进行:

1. 该实体身上的中毒、后遗症和持续治疗(EFFECT_POISON、EFFECT_AFTEREFFECT、EFFECT_HEAL)按获得的先后顺序生效,并且各自减少 1 回合。如果实体的生命值降到 0,它就会死亡。 2. 该实体施放的其他效果减少 1 回合。 3. 执行该实体的 AI。

回合数降到 0 的效果会消失,相关的加成和减益也会一并移除。因此,持续 N 回合的中毒、后遗症或持续治疗恰好生效 N 次;而持续 N 回合的增益,会在施放者之后第 N 个回合开始时消失。