From b0dc4d82868f5058b63168a2098722a68a0b2e35 Mon Sep 17 00:00:00 2001 From: oc Date: Thu, 10 May 2018 00:08:42 +0800 Subject: [PATCH] Equipment Docs --- docs/V2.0.md | 2 +- docs/api.md | 2 +- docs/element.md | 12 ++----- docs/event.md | 2 +- docs/index.md | 2 +- docs/personalization.md | 75 ++++++++++++++++++++++++++++++++++++++++- docs/start.md | 2 +- project/items.js | 8 ++--- project/maps.js | 4 ++- 更新说明.txt | 2 +- 10 files changed, 89 insertions(+), 22 deletions(-) diff --git a/docs/V2.0.md b/docs/V2.0.md index 9fc2a067..be3e150e 100644 --- a/docs/V2.0.md +++ b/docs/V2.0.md @@ -1,6 +1,6 @@ # V2.0版本介绍 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 目前样板已经更新到V2.0版本以上,本章将对V2.0的一些内容进行介绍。 diff --git a/docs/api.md b/docs/api.md index b65f4808..1939aa2c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,6 +1,6 @@ # 附录:API列表 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 所有系统支持的API都列在了这里。所有可能被用到的API都在前面用\*标记。 diff --git a/docs/element.md b/docs/element.md index d4025cf8..44e3bd97 100644 --- a/docs/element.md +++ b/docs/element.md @@ -1,6 +1,6 @@ # 元件说明 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 在本章中,将对样板里的各个元件进行说明。各个元件主要包括道具、门、怪物、楼梯等等。 @@ -24,15 +24,7 @@ 如果需要让剑盾等变成装备,可以直接在`data.js`中设置`'equipment': true`即可。 -值得注意的是,有时候会有一个装备加多种属性的需求,此时需要把剑盾的效果从数值改成一个对象: - -``` js -"sword1": {"atk": 10, "def": 0, "mdef": 5}, // 铁剑加10攻和5魔防 -"shield1": {"atk": 0, "def": 10, "mdef": 10}, // 铁盾加10防和10魔防 -``` - -将需要的项目按照如上方式修改即可。 - +有关装备更为详细的资料可参见[自定义装备](personalization#自定义装备)的说明。 ## 门 diff --git a/docs/event.md b/docs/event.md index 3e936426..1aeaaeb4 100644 --- a/docs/event.md +++ b/docs/event.md @@ -1,6 +1,6 @@ # 事件 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 本章内将对样板所支持的事件进行介绍。 diff --git a/docs/index.md b/docs/index.md index ad0b16ef..02dd5118 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # HTML5 魔塔样板说明文档 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 众所周知,魔塔的趋势是向移动端发展,贴吧中也常常能见到“求手机魔塔”的帖子。然而现有的工具中,NekoRPG有着比较大的局限性,游戏感较差,更是完全没法在iOS上运行。而一些APP的魔塔虽然可用,但是必须要下载安装,对于Android和iOS还必须开发不同的版本,非常麻烦。 diff --git a/docs/personalization.md b/docs/personalization.md index f11e2e12..c287e4e7 100644 --- a/docs/personalization.md +++ b/docs/personalization.md @@ -1,6 +1,6 @@ # 个性化 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 有时候只靠样板本身可能是不够的。我们需要一些个性化、自定义的素材,道具效果,怪物属性,等等。 @@ -280,6 +280,79 @@ control.prototype.checkBlock = function () { ``` 4. 如果有更高的需求,例如想让吸血效果变成一半(如异空间),则还是在上面这些地方进行对应的修改即可。 +## 自定义装备 + +由于HTML5魔塔并不像RM那样存在一个装备界面可供我们对装备进行调整,但是我们也可以使用一个替代的方式实现这个目标。 + +### 装备的实现原理 + +在HTML5中,装备将全部看成是永久道具(constants),同时对于每个装备位置,勇士都定义一个flag域表示正在装备的内容。 + +例如:当勇士获得银剑时,将获得一个永久道具“银剑”;当使用这个银剑,首先检查勇士当前是否装备了武器(比如铁剑),如果 +装备了则先脱掉装备(减去已装备的铁剑所加的属性,并获得永久道具铁剑),然后再穿上新的银剑。 + +同时由于脱剑术和脱盾术的存在,我们还需要一个“脱掉装备”的永久道具(比如sword0),使用它可以脱掉对应位置的装备。 + +### 装备加值的修改 + +要启用装备,首先需要在data.js(全塔属性)中设置`'equipment': true`。此时,游戏内将自动将剑盾变成装备的存在,其 +所加的数值就是全塔属性中对应的数值(比如铁剑sword1就加的全塔属性中sword1的值)。 + +有时候,我们还会有一个装备加多种属性的需求,此时需要将对应的项从数值改变成一个对象。 + +``` js +"sword1": {"atk": 10, "def": 0, "mdef": 5}, // 铁剑加10攻和5魔防 +"shield1": {"atk": 0, "def": 10, "mdef": 10}, // 铁盾加10防和10魔防 +``` + +通过这种方式,当穿上装备时,将会给你的三围分别加上对应项的数值。 + +### 新增剑盾 + +样板默认提供了铁剑(盾),银剑(盾),骑士剑(盾),圣剑(盾)和神圣剑(盾)这五类装备。但有时候,五类是不够的, +我们可能还需要更多的剑盾。 + +要增加更多的剑盾,我们需要进行如下步骤:(以新增剑为例) + +1. 新注册一个素材到游戏;**其ID必须是sword+数字的形式,比如sword6等。**(同理如果是盾就必须是shield+数字的形式比如shield6。) +2. 将其cls设置为`constants`,`useItemEffect`和`canUseItem`直接复制其他几个剑盾的内容。 +(即:`useItemEffect`必须为`"core.plugin.useEquipment(itemId)"`,`canUseItemEffect`必须为`"true"`)。 +3. 使用VSCode或其他文本编辑器直接打开`data.js`文件,并在`"values"`中仿照已有的内容添加剑盾的属性。 +(例如:`"sword6": 100`,或者`"sword6": `{"atk": 100, "def": 0, "mdef": 50}`) + +!> 请注意:新的剑的ID必须是sword+数字,新的盾的ID必须是shield+数字的形式,不然装备将无效! + +### 新增其他部位的装备 + +如果我们还需要新增更多部位的装备,比如戒指、首饰等等,也是可以的,只需要依次进行如下步骤:(以新建戒指为例) + +1. 选择一个装备的部位的ID;比如假设我们的装备部位为戒指,那么我们可以选择"ring"作为装备的部位。 +2. 定义一个空戒指,相当于脱掉戒指。注册一个素材到游戏,**其ID必须是ring0**(即部位ID+数字0)。 +3. 同上述新建剑盾的方式来设置ring0这个空戒指的属性。请注意打开data.js后,设置的其值必须为0。 +(即:必须是`"ring0": 0`) +3. 创建更多的戒指;每加一个新的戒指到游戏,其ID必须是**ring+数字**的形式,比如`ring1`, `ring2`,等等。 +4. 对于每一个创建的戒指,按照上述新建剑盾的方式设置属性(图块属性,打开data.js直接编辑)。 +(例如:`"ring2": {"atk": 3, "def": 5, "mdef": 8}`) +5. **切换到脚本编辑 - 自定义插件编写,在`this.useEquipment`中仿照着新增一行代表戒指的使用。** + +``` js +this.useEquipment = function (itemId) { // 使用装备 + _useEquipment(itemId, "sword", "atk"); // 剑 + _useEquipment(itemId, "shield", "def"); // 盾 + _useEquipment(itemId, "ring", "mdef"); // 新增的戒指 +} +``` + +我们仿照着新增一行`_useEquipment(itemId, "ring", "mdef")`。 + +其中第二项为装备部位的ID,比如我们上述定义的是ring;第三项表示“如果values中该值为数字,则加到什么属性上”。 +比如如果我们这里写mdef,那么我们假设在data.js的values中设置`"ring1": 20`,则使用该戒指会增加20点魔防。 + +如果你定义的是对象`{"atk": xxx, "def": xxx, "mdef": xxx}`的形式,则不会受到第三项的影响。 + +!> 必须对于每一个装备部位定义唯一一个不同的ID;脱掉装备(空装备)必须是该ID加数字0的形式,其他有效装备必须是 +该ID+正整数的形式,不然会出错! + ## 自定义怪物属性 如果你对现有的怪物不满意,想自行添加怪物属性(例如让怪物拥有双属性乃至更多属性),也是可以的。具体参见`enemys.js`文件。 diff --git a/docs/start.md b/docs/start.md index 0bf5a6d3..568fc2ae 100644 --- a/docs/start.md +++ b/docs/start.md @@ -1,6 +1,6 @@ # 快速上手 -?> 目前版本**v2.2**,上次更新时间:* {docsify-updated} * +?> 目前版本**v2.2.1**,上次更新时间:* {docsify-updated} * 在这一节中,将详细介绍做一部塔的流程。现在,让我们来做一部单层塔! diff --git a/project/items.js b/project/items.js index 5a2788fe..475f59cb 100644 --- a/project/items.js +++ b/project/items.js @@ -105,13 +105,13 @@ items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = }, "sword0": { "cls": "constants", - "name": "折断的剑", - "text": "没有任何作用的剑,相当于脱掉装备。" + "name": "空剑", + "text": "使用可脱掉当前装备的剑。" }, "shield0": { "cls": "constants", - "name": "残破的盾", - "text": "没有任何作用的盾,相当于脱掉装备。" + "name": "空盾", + "text": "使用可脱掉当前装备的盾。" }, "book": { "cls": "constants", diff --git a/project/maps.js b/project/maps.js index 815c0ca9..6e7bee25 100644 --- a/project/maps.js +++ b/project/maps.js @@ -76,7 +76,9 @@ maps_90f36752_8815_4be8_b32b_d7fad1d0542e = '63':{'cls': 'items', 'id': 'moneyPocket'}, // 金钱袋 '64':{'cls': 'items', 'id': 'shoes'}, // 绿鞋 '65':{'cls': 'items', 'id': 'hammer'}, // 圣锤 - '66':{'cls': 'items', 'id': 'lifeWand'}, // 生命魔杖 + '66':{'cls': 'items', 'id': 'sword0'}, // 空剑 + '67':{'cls': 'items', 'id': 'shield0'}, // 空盾 + '68':{'cls': 'items', 'id': 'lifeWand'}, // 生命魔杖 ////////////////////////// 门、楼梯、传送点部分 ////////////////////////// diff --git a/更新说明.txt b/更新说明.txt index fba8aa78..d9e15cda 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -5,7 +5,7 @@ while循环事件 √ 地图数据统计 最大存档个数提到main处理 √ 新建地图可以保留楼层属性 √ -装备的教程 +自定义装备的教程(个性化 - 自定义装备) √ 部分Bug修复 √ -----------------------------------------------------------------------