From 0c7aaf4eb0dd4482bdb31b272db7ca9a94372c8c Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Wed, 27 Oct 2021 16:24:07 +0800 Subject: [PATCH] L2 --- _codelab/L2.md | 101 +++++++++++++++++++++++++++++++++++++++++++ _codelab/_sidebar.md | 1 + 2 files changed, 102 insertions(+) create mode 100644 _codelab/L2.md diff --git a/_codelab/L2.md b/_codelab/L2.md new file mode 100644 index 00000000..ec77820c --- /dev/null +++ b/_codelab/L2.md @@ -0,0 +1,101 @@ +# 第二章:怪物特殊属性定义(getSpecials),表格配置 + +要求:读懂脚本编辑 - 怪物特殊属性定义(getSpecials)的实现。理解如何定义一个新的怪物属性。同时,还需要理解如何给怪物表格增加新项目。 + +回答如下问题: + +1. 如何定义一个新的怪物属性? + +2. 如何取得当前怪物的各项数值? + +3. 第五项参数在哪些情况下写1?为什么需要? + +4. 如何给怪物表格定义新项目?如何在伤害计算等地方取用定义的新项目? + +5. 当前,有一部分怪物属性使用了相同的表格项,如阻激夹域都使用了`value`等;这样无法同时给怪物增加吸血和领域两个属性。那应该怎么做才能同时支持这两项? + +6. 理解《咕工智障》的下述怪物特殊属性并回答: + - 如果一个该属性怪物设置了`hpValue = 10, range = 2`,那么怪物手册中显示该怪物的特殊属性名和描述是什么? + - 如果一个该属性怪物设置了`hpValue = -20, defValue = 30`,那么怪物手册中显示该怪物的特殊属性名和描述是什么? + - 如果一个该属性怪物设置了`hpValue = 10, atkValue = 20, defValue = 30, add = true`,那么怪物手册中显示该怪物的特殊属性名和描述是什么? + - 如果怪物手册中的描述是`周围方形范围内5格的友军生命提升10%,攻击降低20%,线性叠加`,那么该怪物的哪些项被设置了成了多少?该怪物的特殊属性名是什么? + - 如果怪物手册中的描述是`周围十字范围内3格的友军生命提升20%,攻击提升10%,防御提升5%,不可叠加`,那么该怪物的哪些项被设置了成了多少?该怪物的特殊属性名是什么? + + ```js + [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], + ``` + +7. 理解《咕工智障》的下述怪物特殊属性并回答: + - 吸血数值是如何计算在怪物手册之中的? + - 如何根据角色当前拥有的道具或者变量来修改怪物属性描述? + - 如果要让简单难度下,怪物吸血值减半,特殊属性定义中应该怎么修改? + + ```js + [11, "吸血", function (enemy) { + var str = "\r[\#e525ff]【红海技能】\r战斗前,首先吸取对方的" + + Math.floor(100 * enemy.value || 0) + "%生命(约" + + Math.floor((enemy.value || 0) * core.getStatus('hp')) + "点)作为伤害" + + (enemy.add ? ",并把伤害数值加到自身生命上" : ""); + if (core.hasItem("I_noVampire")) str += "\r[yellow](对你无效)\r"; + return str; + }, "#ff00d2"], + ``` + +8. 定义同时满足如下条件的特殊属性(编号`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回合`) + +9. 定义同时满足如下条件的特殊属性(编号`30`),并和《咕工智障》的写法进行比较。 + - 特殊属性名:匙之力 + - 当怪物的 `range > 0` 时,描述存在`周围[方形/十字]范围内[?]格内`;其中这`[]`里面内容由怪物的 `zoneSquare` 和 `range` 决定。 + - 当怪物的 `range = null` 时,描述存在`同楼层内` + - 描述存在 `每存在一个黄钥匙,生命增加X点,攻击增加Y点,防御增加Z点`,其中`X, Y, Z`由怪物的`value, atkValue, defValue`决定。如果其中某一项为0或null则不显示对应项。(例如,如果`value = 30, defValue = 20`则只显示`生命增加30点,防御增加20点`) + +10. 将阻击、激光、领域、吸血所使用的特殊属性值(当前均为`value`)分离,并实现一个怪物同时拥有`阻击伤害100点,激光伤害50点,领域伤害200点,且吸血20%`这四个特殊属性。 + - 需在怪物手册正确显示 + - 需正确实现对应的效果(需要修改`伤害计算(getDamageInfo)和阻激夹域伤害(updateCheckBlock)`两个函数) + diff --git a/_codelab/_sidebar.md b/_codelab/_sidebar.md index 1a880b21..f18cfa1f 100644 --- a/_codelab/_sidebar.md +++ b/_codelab/_sidebar.md @@ -1,2 +1,3 @@ - [第一章:伤害计算函数](L1) +- [第二章:特殊属性定义,表格配置](L2)