diff --git a/_server/data.comment.js b/_server/data.comment.js
index 7afe0f36..43080322 100644
--- a/_server/data.comment.js
+++ b/_server/data.comment.js
@@ -153,6 +153,11 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"_type": "textarea",
"_data": "初始生命值"
},
+ "mana": {
+ "_leaf": true,
+ "_type": "textarea",
+ "_data": "初始魔力值,只在enableMana开启时才有效"
+ },
"atk": {
"_leaf": true,
"_type": "textarea",
@@ -389,6 +394,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"_bool": "bool",
"_data": "是否是否启用生命上限"
},
+ "enableMana": {
+ "_leaf": true,
+ "_type": "checkbox",
+ "_bool": "bool",
+ "_data": "是否开启魔力值"
+ },
"enableMDef": {
"_leaf": true,
"_type": "checkbox",
@@ -431,6 +442,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
"_bool": "bool",
"_data": "是否涉及毒衰咒;如果此项为false则不会在状态栏中显示毒衰咒的debuff"
},
+ "enableSkill": {
+ "_leaf": true,
+ "_type": "checkbox",
+ "_bool": "bool",
+ "_data": "是否启用技能栏"
+ },
"flyNearStair": {
"_leaf": true,
"_type": "checkbox",
diff --git a/docs/personalization.md b/docs/personalization.md
index 30260cd3..c72a346f 100644
--- a/docs/personalization.md
+++ b/docs/personalization.md
@@ -554,6 +554,8 @@ this.myfunc = function(x) {
通过这种,将脚本和自定义事件混用的方式,可以达到和RM中公共事件类似的效果,即一个调用触发一系列事件。
+
+
## 技能塔的支持
其实,在HTML5上制作技能塔是完全可行的。
要支持技能塔,可能需要如下几个方面:
-- 魔力(和上限)的定义添加
+- 魔力(和上限)的添加;技能的定义
- 状态栏的显示
- 技能的触发(按键与录像问题)
- 技能的效果
-下面依次进行描述。
+从V2.5开始,魔力和技能的定义被内置到了样板中,因此十分方便。
-### 魔力的定义添加
+### 魔力的定义添加;技能的定义
-当我们定义了魔力的ID,比如`mana`后,要使用它,一般有两种方式:属性获取`status:mana`或者flag标记`flag:mana`。
+从V2.5开始,提供了status:mana选项,可以直接代表当前魔力值。
-如果要属性获取,则需要打开`data.js`文件,并在`hero`中添加定义。
+如果要启用,需要开启全塔属性的enableMana选项。
-通过这种方式定义的,可以通过`core.setStatus('mana', 0)`以及`core.getStatus('mana')`来设置或获取。
+如果需要魔力上限,则可以使用flag:manaMax来表示当前的魔力最大值。
-``` js
-'hero': {
- // ... 上略
- 'mana': 0, // 增添mana定义,可以放在experience之后。同理可定义manaMax表示当前最大魔力值。
-}
-```
+同时,我们可以使用flag:skill表示当前开启的技能编号,flag:skillName表示当前开启的技能名称。
-如果要flag标记,则无需额外在任何地方进行定义。只需要在设置或取用的时候使用 `core.setFlag('mana', 0)` 或 `core.getFlag('mana', 0)` 即可。
-
-下面我都使用属性获取的方式来进行说明。
+如果flag:skill不为0,则代表当前处于某个技能开启状态,且状态栏显示flag:skillName值。伤害计算函数中只需要对flag:skill进行处理即可。
### 状态栏的显示
-首先我们需要额外新增一个状态栏;请参见[自定义状态栏(新增显示项)](#自定义状态栏(新增显示项))。
+从V2.5开始,魔力值和技能名的状态栏项目已经被添加,可以直接使用。
-我们可以在魔力那一行显示当前值和最大值:
+在脚本编辑-updateStatusBar中,可以对状态栏显示内容进行修改。
``` js
-core.setStatus('mana', Math.min(core.getStatus('mana'), core.getStatus('manaMax'))); // 如果魔力存在上限,则不能超过其上限值
-core.statusBar.mana.innerHTML = core.getStatus('mana') + '/' + core.getStatus('manaMax', 0); // 显示比如 6/30 这样
-```
-
-如果我们还需要显示当前使用的技能名,也是可以的;定义一个ID为skill,然后按照上面的做法新增一行。
-
-请注意,如果是中文字符,需要取消斜体(不然会非常难看的)!
-
-``` js
-core.statusBar.skill.style.fontStyle = 'normal'; // 取消斜体显示
-core.statusBar.skill.innerHTML = core.getFlag('skillName', '无'); // 使用flag:skillName表示当前激活的技能名。
+ // 设置魔力值
+ if (core.flags.enableMana) {
+ // 也可以使用flag:manaMax来表示最大魔力值
+ // core.status.hero.mana = Math.max(core.status.hero.mana, core.getFlag('manaMax', 10));
+ // core.statusBar.mana.innerHTML = core.status.hero.mana + "/" + core.getFlag('manaMax', 10);
+ }
+ // 设置技能栏
+ if (core.flags.enableSkill) {
+ // 可以用flag:kill表示当前开启的技能类型,flag:skillName显示技能名;详见文档-个性化-技能塔的支持
+ core.statusBar.skill.innerHTML = core.getFlag('skillName', '无');
+ }
```
### 技能的触发
@@ -716,7 +713,7 @@ case 87: // W
举个例子,我设置一个勇士的技能:二倍斩,开启技能消耗5点魔力,下一场战斗攻击力翻倍。
-那么,直接在`getDamageInfo`中进行判断:
+那么,直接在脚本编辑的`getDamageInfo`中进行判断:
``` js
if (core.getFlag('skill', 0)==1) { // 开启了技能1
@@ -724,7 +721,7 @@ if (core.getFlag('skill', 0)==1) { // 开启了技能1
}
```
-然后在脚本编辑的战后事件中进行魔力值的扣除:
+然后在脚本编辑的`afterBattle`中进行魔力值的扣除:
``` js
if (core.getFlag('skill', 0)==1) { // 开启了技能1
diff --git a/editor-mobile.html b/editor-mobile.html
index 161e7897..cd51f4ed 100644
--- a/editor-mobile.html
+++ b/editor-mobile.html
@@ -355,6 +355,10 @@
+
+
![]()
+
+
@@ -379,6 +383,10 @@
+
+
![]()
+
+
diff --git a/editor.html b/editor.html
index cce7d36c..0ae3917b 100644
--- a/editor.html
+++ b/editor.html
@@ -341,6 +341,10 @@
+
+
![]()
+
+
@@ -365,6 +369,10 @@
+
+
![]()
+
+
diff --git a/index.html b/index.html
index 62182c53..2a05eb95 100644
--- a/index.html
+++ b/index.html
@@ -62,6 +62,10 @@
+
+
![]()
+
+
@@ -86,6 +90,10 @@
+
+
![]()
+
+
diff --git a/libs/control.js b/libs/control.js
index 0a6ce796..d69826b6 100644
--- a/libs/control.js
+++ b/libs/control.js
@@ -2807,6 +2807,8 @@ control.prototype.resize = function(clientWidth, clientHeight) {
if (!core.flags.enableKeys) count--;
if (!core.flags.enablePZF) count--;
if (!core.flags.enableName) count--;
+ if (!core.flags.enableMana) count--;
+ if (!core.flags.enableSkill) count--;
var statusLineHeight = BASE_LINEHEIGHT * 9 / count;
var statusLineFontSize = DEFAULT_FONT_SIZE;
@@ -3086,6 +3088,12 @@ control.prototype.resize = function(clientWidth, clientHeight) {
display: core.flags.enableHPMax ? 'block': 'none'
}
},
+ {
+ id: 'manaCol',
+ rules: {
+ display: core.flags.enableMana ? 'block': 'none'
+ }
+ },
{
id: 'mdefCol',
rules: {
@@ -3110,6 +3118,12 @@ control.prototype.resize = function(clientWidth, clientHeight) {
display: core.flags.enableLevelUp ? 'block': 'none'
}
},
+ {
+ id: 'skillCol',
+ rules: {
+ display: core.flags.enableSkill ? 'block': 'none'
+ }
+ },
{
id: 'keyCol',
rules: {
diff --git a/main.js b/main.js
index 1abb2b91..cee1293a 100644
--- a/main.js
+++ b/main.js
@@ -55,6 +55,7 @@ function main() {
'nameCol': document.getElementById('nameCol'),
'lvCol': document.getElementById('lvCol'),
'hpmaxCol': document.getElementById('hpmaxCol'),
+ 'manaCol': document.getElementById('manaCol'),
'mdefCol': document.getElementById('mdefCol'),
'moneyCol': document.getElementById('moneyCol'),
'expCol': document.getElementById('expCol'),
@@ -62,6 +63,7 @@ function main() {
'keyCol': document.getElementById('keyCol'),
'pzfCol': document.getElementById('pzfCol'),
'debuffCol': document.getElementById('debuffCol'),
+ 'skillCol': document.getElementById('skillCol'),
'hard': document.getElementById('hard'),
};
this.mode = 'play';
@@ -82,12 +84,14 @@ function main() {
'lv': document.getElementById('img-lv'),
'hpmax': document.getElementById('img-hpmax'),
'hp': document.getElementById("img-hp"),
+ 'mana': document.getElementById("img-mana"),
'atk': document.getElementById("img-atk"),
'def': document.getElementById("img-def"),
'mdef': document.getElementById("img-mdef"),
'money': document.getElementById("img-money"),
'experience': document.getElementById("img-experience"),
'up': document.getElementById("img-up"),
+ 'skill': document.getElementById('img-skill'),
'book': document.getElementById("img-book"),
'fly': document.getElementById("img-fly"),
'toolbox': document.getElementById("img-toolbox"),
@@ -133,12 +137,14 @@ function main() {
'lv': document.getElementById('lv'),
'hpmax': document.getElementById('hpmax'),
'hp': document.getElementById('hp'),
+ 'mana': document.getElementById('mana'),
'atk': document.getElementById('atk'),
'def': document.getElementById("def"),
'mdef': document.getElementById('mdef'),
'money': document.getElementById("money"),
'experience': document.getElementById("experience"),
'up': document.getElementById('up'),
+ 'skill': document.getElementById('skill'),
'yellowKey': document.getElementById("yellowKey"),
'blueKey': document.getElementById("blueKey"),
'redKey': document.getElementById("redKey"),
diff --git a/project/data.js b/project/data.js
index 74c27764..ef3da6f1 100644
--- a/project/data.js
+++ b/project/data.js
@@ -75,6 +75,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"lv": 1,
"hpmax": 9999,
"hp": 1000,
+ "mana": 0,
"atk": 100,
"def": 100,
"mdef": 100,
@@ -197,6 +198,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"enableName": false,
"enableLv": false,
"enableHPMax": false,
+ "enableMana": false,
"enableMDef": true,
"enableMoney": true,
"enableExperience": false,
@@ -204,6 +206,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"enableKeys": true,
"enablePZF": false,
"enableDebuff": false,
+ "enableSkill": false,
"flyNearStair": true,
"pickaxeFourDirections": false,
"bombFourDirections": false,
diff --git a/project/functions.js b/project/functions.js
index fff7e6bb..4cc5e5fa 100644
--- a/project/functions.js
+++ b/project/functions.js
@@ -617,7 +617,7 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
else core.statusBar.lv.style.fontStyle = 'normal';
// 设置生命上限、生命值、攻防魔防金币和经验值
- var statusList = ['hpmax', 'hp', 'atk', 'def', 'mdef', 'money', 'experience'];
+ var statusList = ['hpmax', 'hp', 'mana', 'atk', 'def', 'mdef', 'money', 'experience'];
statusList.forEach(function (item) {
// 向下取整
if (core.isset(core.status.hero[item]))
@@ -632,6 +632,18 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.statusBar.def.innerHTML = core.formatBigNumber(Math.floor(core.getFlag('equip_def_buff',1)*core.getStatus('def')));
core.statusBar.mdef.innerHTML = core.formatBigNumber(Math.floor(core.getFlag('equip_mdef_buff',1)*core.getStatus('mdef')));
}
+
+ // 设置魔力值
+ if (core.flags.enableMana) {
+ // 也可以使用flag:manaMax来表示最大魔力值;详见文档-个性化-技能塔的支持
+ // core.status.hero.mana = Math.max(core.status.hero.mana, core.getFlag('manaMax', 10));
+ // core.statusBar.mana.innerHTML = core.status.hero.mana + "/" + core.getFlag('manaMax', 10);
+ }
+ // 设置技能栏
+ if (core.flags.enableSkill) {
+ // 可以用flag:kill表示当前开启的技能类型,flag:skillName显示技能名;详见文档-个性化-技能塔的支持
+ core.statusBar.skill.innerHTML = core.getFlag('skillName', '无');
+ }
// 可以在这里添加自己额外的状态栏信息,比如想攻击显示 +0.5 可以这么写:
// if (core.hasFlag('halfAtk')) core.statusBar.atk.innerHTML += "+0.5";