6.3 KiB
6.3 KiB
第二章:怪物特殊属性定义(getSpecials),表格配置
要求:读懂脚本编辑 - 怪物特殊属性定义(getSpecials)的实现。理解如何定义一个新的怪物属性。同时,还需要理解如何给怪物表格增加新项目。
回答如下问题:
-
如何定义一个新的怪物属性?
-
如何取得当前怪物的各项数值?
-
第五项参数在哪些情况下写1?为什么需要?
-
如何给怪物表格定义新项目?如何在伤害计算等地方取用定义的新项目?
-
当前,有一部分怪物属性使用了相同的表格项,如阻激夹域都使用了
value
等;这样无法同时给怪物增加吸血和领域两个属性。那应该怎么做才能同时支持这两项? -
理解《咕工智障》的下述怪物特殊属性并回答:
- 如果一个该属性怪物设置了
hpValue = 10, range = 2
,那么怪物手册中显示该怪物的特殊属性名和描述是什么? - 如果一个该属性怪物设置了
hpValue = -20, defValue = 30
,那么怪物手册中显示该怪物的特殊属性名和描述是什么? - 如果一个该属性怪物设置了
hpValue = 10, atkValue = 20, defValue = 30, add = true
,那么怪物手册中显示该怪物的特殊属性名和描述是什么? - 如果怪物手册中的描述是
周围方形范围内5格的友军生命提升10%,攻击降低20%,线性叠加
,那么该怪物的哪些项被设置了成了多少?该怪物的特殊属性名是什么? - 如果怪物手册中的描述是
周围十字范围内3格的友军生命提升20%,攻击提升10%,防御提升5%,不可叠加
,那么该怪物的哪些项被设置了成了多少?该怪物的特殊属性名是什么?
[25, function (enemy) { if (enemy.auraName) return enemy.auraName; if (enemy.hpValue && enemy.atkValue && enemy.defValue) return "魔力光环"; if (enemy.hpValue) { if (enemy.hpValue > 0) return "活力光环"; return "懒散光环"; } if (enemy.atkValue) { if (enemy.atkValue > 0) return "狂暴光环"; return "静谧光环"; } if (enemy.defValue) { if (enemy.defValue > 0) return "坚毅光环"; return "软弱光环"; } return "光环"; }, function (enemy) { var str; if (!enemy.range) { str = "同楼层所有友军"; } else { str = "周围" + (enemy.zoneSquare ? "方形" : "十字") + "范围内\r[yellow]" + (enemy.range || 1) + "\r格的友军"; } if (enemy.hpValue) { if (enemy.hpValue > 0) str += "生命提升\r[yellow]" + enemy.hpValue + "%\r,"; else str += "生命降低\r[yellow]" + (-enemy.hpValue) + "%\r,"; } if (enemy.atkValue) { if (enemy.atkValue > 0) str += "攻击提升\r[yellow]" + enemy.atkValue + "%\r,"; else str += "攻击降低\r[yellow]" + (-enemy.atkValue) + "%\r,"; } if (enemy.defValue) { if (enemy.defValue > 0) str += "防御提升\r[yellow]" + enemy.defValue + "%\r,"; else str += "防御降低\r[yellow]" + (-enemy.defValue) + "%\r,"; } str += (enemy.add ? "线性叠加" : "不可叠加"); return str; }, "#e6e099", 1],
- 如果一个该属性怪物设置了
-
理解《咕工智障》的下述怪物特殊属性并回答:
- 吸血数值是如何计算在怪物手册之中的?
- 如何根据角色当前拥有的道具或者变量来修改怪物属性描述?
- 如果要让简单难度下,怪物吸血值减半,特殊属性定义中应该怎么修改?
[11, "吸血", function (enemy) { var str = "\r[\#e525ff]【红海技能】\r战斗前,首先吸取对方的" + Math.floor(100 * enemy.value || 0) + "%生命(约" + Math.floor((enemy.value || 0) * core.getRealStatus('hp')) + "点)作为伤害" + (enemy.add ? ",并把伤害数值加到自身生命上" : ""); if (core.hasItem("I_noVampire")) str += "\r[yellow](对你无效)\r"; return str; }, "#ff00d2"],
-
定义同时满足如下条件的特殊属性(编号
28
),并和《咕工智障》的写法进行比较。- 当怪物的
value28 > 0
时,特殊属性名为迅捷光环
- 当怪物的
value28 <= 0
时,特殊属性名为怠惰光环
- 当难度为简单(
flag:hard = 1
)时,描述为此技能在简单难度下无效!
- 当角色拥有道具
I123
时,描述为此技能已被魔杖抵消!
- 当怪物的
range > 0
时,描述存在周围[方形/十字]范围内[?]格的友军
;其中这[]
里面内容由怪物的zoneSquare
和range
决定。 - 当怪物的
range = null
时,描述存在当前楼层的友军
- 当怪物的
value28 > 0
时,描述存在先攻X回合
,其中X由value28
决定(如,value28 = 5
时,描述存在先攻5回合
) - 当怪物的
value28 <= 0
时,描述存在被先攻X回合
,其中X由value28
决定(如,value28 = -5
时,描述存在被先攻5回合
)
- 当怪物的
-
定义同时满足如下条件的特殊属性(编号
30
),并和《咕工智障》的写法进行比较。- 特殊属性名:匙之力
- 当怪物的
range > 0
时,描述存在周围[方形/十字]范围内[?]格内
;其中这[]
里面内容由怪物的zoneSquare
和range
决定。 - 当怪物的
range = null
时,描述存在同楼层内
- 描述存在
每存在一个黄钥匙,生命增加X点,攻击增加Y点,防御增加Z点
,其中X, Y, Z
由怪物的value, atkValue, defValue
决定。如果其中某一项为0或null则不显示对应项。(例如,如果value = 30, defValue = 20
则只显示生命增加30点,防御增加20点
)
-
将阻击、激光、领域、吸血所使用的特殊属性值(当前均为
value
)分离,并实现一个怪物同时拥有阻击伤害100点,激光伤害50点,领域伤害200点,且吸血20%
这四个特殊属性。- 需在怪物手册正确显示
- 需正确实现对应的效果(需要修改
伤害计算(getDamageInfo)和阻激夹域伤害(updateCheckBlock)
两个函数)