commit
70e6d1effa
5
B站视频教程.url
Normal file
5
B站视频教程.url
Normal file
@ -0,0 +1,5 @@
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
||||
[InternetShortcut]
|
||||
IDList=
|
||||
URL=https://www.bilibili.com/video/av32781473/
|
||||
@ -2,4 +2,4 @@
|
||||
Prop3=19,2
|
||||
[InternetShortcut]
|
||||
IDList=
|
||||
URL=https://ckcz123.github.io/mota-js/
|
||||
URL=https://h5mota.com/games/template/docs/
|
||||
@ -1,78 +0,0 @@
|
||||
这只是一个最简单的造塔流程,更为详细的还是请参见视频或教程文档。
|
||||
|
||||
1. 打开启动服务,地图编辑器。
|
||||
|
||||
2. 切换到MT0层,然后开始绘制地图。可以在上面放置墙、门、道具或怪物等。
|
||||
如果提示“该素材未被定义”,请参见第7点。
|
||||
如果要从RMXP中复刻已有的塔的地图,请参见第11点。
|
||||
|
||||
3. 切换到楼层属性,一项一项仔细进行楼层属性的编辑,如楼层名,firstArrive等等。
|
||||
将鼠标移动到表格的中间可以查看详细信息。
|
||||
firstArrive为初次到达楼层的事件,可以双击进行事件的编辑。有关事件请详见文档。
|
||||
|
||||
3. 输入怪物数据:点击右边怪物,然后左边写怪物的攻防血等数值。
|
||||
将鼠标移动到表格的中间可以查看详细信息。
|
||||
如果是特殊属性怪物直接写特殊编号,多个特殊属性可以用 [1,2] 来表示。
|
||||
|
||||
4. 在中间的下拉框切换全塔属性,一项一项仔细进行根据需求编辑。
|
||||
请注意"name"一项必须修改为“字母、数字、下划线组成的字符串”,否则会出现串档问题。
|
||||
startText(初始剧情)、shops(全局商店)、levelUp(升级)等都是可以双击方框进行编辑的。
|
||||
有关全局商店和升级等信息详见 教程文档 - 事件
|
||||
|
||||
5. 给地图添加事件;可以给地图上的NPC增加事件,或者战斗/开门事件等。
|
||||
点击地图上的某个点,在左边进行编辑。
|
||||
event -- 该点的自定义事件(例如NPC,商店,等等)
|
||||
changeFloor -- 该点的楼层传送事件(楼梯/传送门)
|
||||
afterBattle -- 该点战斗后触发的战后事件
|
||||
afterOpenDoor -- 该点开门后触发的事件
|
||||
afterGetItem -- 该点获得道具后触发的事件
|
||||
等等。
|
||||
有关事件详细内容请参见 文档 - 事件。
|
||||
|
||||
6. 新建楼层:切换到地图编辑,然后在框内输入新楼层的floorId,点击新建地图即可保存。
|
||||
创建的floorId必须是字母、数字和下划线组成,且不能以数字开头。
|
||||
不能为空白,不能和任何已有楼层的floorId重复。
|
||||
保存成功后刷新页面。
|
||||
|
||||
删除楼层同理,不过请注意删除的会是当前的楼层而不是框中的内容。
|
||||
|
||||
7. 关于素材未被定义的问题:如果点击某个怪物或NPC提示该素材未被定义,请在左边进行素材的注册。
|
||||
输入该素材的唯一ID(不能和其他素材的ID重复),和素材的唯一数字(1000以内,不能和其他的数字重复),
|
||||
保存并刷新,即注册成功。
|
||||
|
||||
8. 添加新素材:请打开启动服务的便捷PS工具,然后左边读取你要添加到的图片(比如怪物是enemys.png,道具是items.png),
|
||||
右边读取你要导入的怪物素材,通过复制粘贴进行导入,再保存,刷新页面后按照第7点来进行素材的注册。
|
||||
|
||||
9. 道具的自定义效果:如果需要自定义道具效果,请仿照其他的几个道具来写,更多信息详见文档。
|
||||
|
||||
10. 报错处理:有时候刷新后可能页面变成空白,即无法正确加载。
|
||||
出现这种问题的原因往往是手动错误编辑了文件、新建楼层使用了不合法的floorId(比如中文或数字)、楼层floorId定义重复,等等。
|
||||
|
||||
出现这种问题,(在Chrome浏览器中)请按Ctrl+Shift+I打开控制台,找到Console查看报错。
|
||||
一般都会具体到哪个楼层文件出错。
|
||||
|
||||
解决方式:哪个楼层文件出错,请使用VSCode等打开project目录下的data.js文件,并将出错的那个楼层定义删除。
|
||||
|
||||
举例,比如我在新建地图中写了 “水潭边” 这样一个楼层名(中文),然后新建并保存,刷新会出错。
|
||||
此时,打开控制台(Ctrl+Shift+I的Console),并查看报错,发现是该楼层错误。
|
||||
那么打开data.js文件,并将 "floorIds": [..., "水潭边"] 这里对它的楼层定义删除,再刷新即可。
|
||||
|
||||
11. 从RMXP中导入已有的塔的地图。
|
||||
如果你想复刻老塔,则需使用启动服务的地图生成器。
|
||||
请确保老地图中的所有使用素材(地面/墙壁/门/道具/怪物等等)都已经被注册过(参见第7点)。
|
||||
|
||||
打开windows自带的截图工具,并对地图进行截图。
|
||||
截图时请注意:必须截刚好13x13范围大小的地图,尽量对其边缘进行截取。
|
||||
如果不是13x13的范围大小,可能会导致地图生成器无响应。
|
||||
截图完毕后,请复制到剪切板,然后在地图生成器中点加载图片。等1-2秒,就可以看到截图被识别。
|
||||
点“复制地图”,然后在地图编辑器中切换到“地图编辑”,并粘贴到左边的框内,即可。
|
||||
如果存在个别识别问题,可以对这个别素材再进行重新绘制。
|
||||
|
||||
如果出现大量识别问题,比如基本全是错的,则代表你的截图方式有问题。
|
||||
由于地图生成器的识别以左上角的图块为基准来找寻截图偏移量,请确保左上角一定要是一个能被很好识别的图块。
|
||||
建议:在RM的图层第三层,左上角放一个岩浆,再进行截图(保证截图的13x13的左上角是岩浆,从而可以确保定位),
|
||||
识别后再复制到地图编辑器中进行绘制。
|
||||
|
||||
--------------------------------
|
||||
|
||||
HTML5魔塔交流群:539113091,如果有问题请加群提问。
|
||||
@ -1238,7 +1238,7 @@ return code;
|
||||
*/;
|
||||
|
||||
switch_s
|
||||
: '多重分歧 条件判定' ':' expression BGNL? Newline switchCase_s+ BEND Newline
|
||||
: '多重分歧 条件判定' ':' expression BGNL? Newline switchCase+ BEND Newline
|
||||
|
||||
|
||||
/* switch_s
|
||||
@ -1247,16 +1247,16 @@ helpUrl : https://ckcz123.github.io/mota-js/#/event?id=switch%EF%BC%9A%E5%A4%9A%
|
||||
default : ["判别值"]
|
||||
colour : this.eventColor
|
||||
var code = ['{"type": "switch", "condition": "',expression_0,'", "caseList": [\n',
|
||||
switchCase_s_0,
|
||||
switchCase_0,
|
||||
'], },\n'].join('');
|
||||
return code;
|
||||
*/;
|
||||
|
||||
switchCase_s
|
||||
switchCase
|
||||
: '如果是' expression '的场合' BGNL? Newline action+
|
||||
|
||||
|
||||
/* switchCase_s
|
||||
/* switchCase
|
||||
tooltip : 选项的选择
|
||||
helpUrl : https://ckcz123.github.io/mota-js/#/event?id=switch%EF%BC%9A%E5%A4%9A%E9%87%8D%E6%9D%A1%E4%BB%B6%E5%88%86%E6%AD%A7
|
||||
colour : this.subColor
|
||||
@ -2014,7 +2014,7 @@ ActionParser.prototype.parseAction = function() {
|
||||
case "switch": // 多重条件分歧
|
||||
var case_caseList = null;
|
||||
for(var ii=data.caseList.length-1,caseNow;caseNow=data.caseList[ii];ii--) {
|
||||
case_caseList=MotaActionBlocks['switchCase_s'].xmlText([
|
||||
case_caseList=MotaActionBlocks['switchCase'].xmlText([
|
||||
this.isset(caseNow.case)?MotaActionBlocks['evalString_e'].xmlText([caseNow.case]):"值",this.insertActionList(caseNow.action),case_caseList]);
|
||||
}
|
||||
this.next = MotaActionBlocks['switch_s'].xmlText([
|
||||
|
||||
@ -424,6 +424,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||
"_bool": "bool",
|
||||
"_data": "是否允许等级提升(进阶);如果上面enableExperience为false,则此项恒视为false"
|
||||
},
|
||||
"levelUpLeftMode": {
|
||||
"_leaf": true,
|
||||
"_type": "checkbox",
|
||||
"_bool": "bool",
|
||||
"_data": "进阶使用扣除模式,即在状态栏显示距离下个等级所需要的经验值;只有enableExperience和enableLevelUp均开启时才有效。"
|
||||
},
|
||||
"enableKeys": {
|
||||
"_leaf": true,
|
||||
"_type": "checkbox",
|
||||
@ -612,6 +618,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||
"_bool": "bool",
|
||||
"_data": "是否允许查看未开启状态的快捷商店内容;如果此项为真,则对于未开启状态的商店允许查看其内容(但不能购买)"
|
||||
},
|
||||
"disableShopOnDamage": {
|
||||
"_leaf": true,
|
||||
"_type": "checkbox",
|
||||
"_bool": "bool",
|
||||
"_data": "是否在经过领域/夹击/路障等伤害后禁用快捷商店。"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ editor_blockly = function () {
|
||||
MotaActionFunctions.actionParser.parseList({"type": "switch", "condition": "判别量", "caseList": [
|
||||
{"action": [{"type": "comment", "text": "当判别值是值的场合执行此事件"}]},
|
||||
{"action": []},
|
||||
{"case": "'default'", "action": [{"type": "comment", "text": "当没有符合的值的场合执行此事件"}]},
|
||||
{"case": "default", "action": [{"type": "comment", "text": "当没有符合的值的场合执行此事件"}]},
|
||||
]}),
|
||||
MotaActionBlocks['while_s'].xmlText(),
|
||||
MotaActionBlocks['break_s'].xmlText(),
|
||||
|
||||
@ -548,50 +548,47 @@ this.myfunc = function(x) {
|
||||
|
||||
通过这种,将脚本和自定义事件混用的方式,可以达到和RM中公共事件类似的效果,即一个调用触发一系列事件。
|
||||
|
||||
<!--
|
||||
|
||||
## 自定义状态栏(新增显示项)
|
||||
|
||||
在V2.2以后,我们可以自定义状态栏背景图(全塔属性 - statusLeftBackground)等等。
|
||||
|
||||
但是,如果我们还想新增其他项目的显示,比如技能塔所需要的魔力值(气息),该怎么办?
|
||||
但是,如果我们还想新增其他项目的显示,比如攻速或者暴击,该怎么办?
|
||||
|
||||
需要进行如下几个操作:
|
||||
|
||||
1. 定义图标ID;比如魔力我就定义mana,气息可以简单的定义qixi;你也可以定义其他的ID,但是不能和已有的重复。这里以mana为例。
|
||||
1. 定义ID;比如攻速我就定义speed,暴击可以简单的定义baoji;你也可以定义其他的ID,但是不能和已有的重复。这里以speed为例。
|
||||
2. 在index.html的statusBar中(44行起),进行该状态栏项的定义。仿照其他几项,插在其应当显示的位置,注意替换掉相应的ID。
|
||||
``` html
|
||||
<div class="status" id="manaCol">
|
||||
<img id="img-mana">
|
||||
<p class='statusLabel' id='mana'></p>
|
||||
<div class="status" id="speedCol">
|
||||
<img id="img-speed">
|
||||
<p class='statusLabel' id='speed'></p>
|
||||
</div>
|
||||
```
|
||||
3. 在editor.html中的statusBar(317行起),仿照第二点同样添加;这一项如果不进行则会地图编辑器报错。editor-mobile.html同理。
|
||||
4. 使用便捷PS工具,打开icons.png,新增一行并将魔力的图标P上去;记下其索引比如24(从0开始数)。
|
||||
3. 在editor.html中的statusBar(323行起),仿照第二点同样添加;这一项如果不进行则会地图编辑器报错。editor-mobile.html同理。
|
||||
4. 使用便捷PS工具,打开icons.png,新增一行并将魔力的图标P上去;记下其索引比如30(从0开始数)。
|
||||
5. 在main.js的this.statusBar中增加图片、图标和内容的定义。
|
||||
``` js
|
||||
this.statusBar = {
|
||||
'images': {
|
||||
// ...其他略
|
||||
'mana': document.getElementById("img-mana"), // 图片的定义
|
||||
'speed': document.getElementById("img-speed"), // 图片的定义
|
||||
},
|
||||
'icons': {
|
||||
// ...其他略
|
||||
'mana': 24, // 图标的定义,这里对应的是icons.png中的索引
|
||||
'speed': 24, // 图标的定义,这里对应的是icons.png中的索引
|
||||
},
|
||||
// ...其他略
|
||||
'mana': document.getElementById('mana'), // 显示内容(数据)的定义
|
||||
'speed': document.getElementById('speed'), // 显示内容(数据)的定义
|
||||
}
|
||||
```
|
||||
6. 显示内容的设置。在脚本编辑的updateStatusBar函数,可以对该状态栏显示内容进行设置,下面是几个例子。
|
||||
``` js
|
||||
core.statusBar.mana.innerHTML = core.getFlag('mana', 0); // 设置其显示内容为flag:mana值。
|
||||
core.statusBar.mana.innerHTML = core.getFlag('mana', 0) + '/' + core.getFlag('manaMax', 0); // 显示内容将类似 "32/60" 这样。
|
||||
core.statusBar.mana.style.fontStyle = 'normal'; // 这一行会取消斜体。如果是汉字(比如技能名)的话,斜体起来会非常难看,可以通过这一句取消。
|
||||
// 设置其显示内容为status:speed值;需要在project/data.js中firstData的hero那里新增初始值`"speed": 0`。
|
||||
core.statusBar.speed.innerHTML = core.getStatus('speed');
|
||||
// 设置其显示内容为flag:speed值,无需额外进行定义。
|
||||
core.statusBar.speed.innerHTML = core.getFlag('speed', 0);
|
||||
```
|
||||
|
||||
-->
|
||||
|
||||
## 技能塔的支持
|
||||
|
||||
其实,在HTML5上制作技能塔是完全可行的。
|
||||
|
||||
@ -1245,6 +1245,14 @@ control.prototype.checkBlock = function () {
|
||||
if (damage>0) {
|
||||
core.playSound('zone.mp3');
|
||||
core.drawAnimate("zone", x, y);
|
||||
|
||||
// 禁用快捷商店
|
||||
if (core.flags.disableShopOnDamage) {
|
||||
for (var shopId in core.status.shops) {
|
||||
core.status.shops[shopId].visited = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
core.status.hero.statistics.extraDamage += damage;
|
||||
|
||||
@ -1913,7 +1921,7 @@ control.prototype.replay = function () {
|
||||
core.status.event.data = {"toolsPage":Math.floor(index/12)+1, "constantsPage":1, "selectId":null};
|
||||
index = index%12;
|
||||
}
|
||||
else if (index=constants.indexOf(itemId)>=0) {
|
||||
else if ((index=constants.indexOf(itemId))>=0) {
|
||||
core.status.event.data = {"toolsPage":1, "constantsPage":Math.floor(index/12)+1, "selectId":null};
|
||||
index = index%12+12;
|
||||
}
|
||||
@ -2778,6 +2786,7 @@ control.prototype.resize = function(clientWidth, clientHeight) {
|
||||
if (!core.flags.enableMoney) count--;
|
||||
if (!core.flags.enableExperience) count--;
|
||||
if (!core.flags.enableLevelUp) count--;
|
||||
if (core.flags.levelUpLeftMode) count--;
|
||||
if (!core.flags.enableDebuff) count--;
|
||||
if (!core.flags.enableKeys) count--;
|
||||
if (!core.flags.enablePZF) count--;
|
||||
@ -3084,7 +3093,7 @@ control.prototype.resize = function(clientWidth, clientHeight) {
|
||||
{
|
||||
id: 'expCol',
|
||||
rules: {
|
||||
display: core.flags.enableExperience ? 'block': 'none'
|
||||
display: core.flags.enableExperience && !core.flags.levelUpLeftMode ? 'block': 'none'
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@ -183,6 +183,8 @@ core.prototype.init = function (coreData, callback) {
|
||||
|
||||
if (!core.flags.enableExperience)
|
||||
core.flags.enableLevelUp = false;
|
||||
if (!core.flags.enableLevelUp)
|
||||
core.flags.levelUpLeftMode = false;
|
||||
if (!core.flags.canOpenBattleAnimate) {
|
||||
core.flags.showBattleAnimateConfirm = false;
|
||||
core.flags.battleAnimate = false;
|
||||
|
||||
@ -260,22 +260,17 @@ enemys.prototype.getCurrentEnemys = function (floorId) {
|
||||
var critical = this.nextCriticals(enemyId);
|
||||
if (critical.length>0) critical=critical[0];
|
||||
|
||||
enemys.push({
|
||||
'id': enemyId,
|
||||
'name': enemy.name,
|
||||
'hp': enemyInfo.hp,
|
||||
'atk': enemyInfo.atk,
|
||||
'def': enemyInfo.def,
|
||||
'money': enemyInfo.money||0,
|
||||
'experience': enemyInfo.experience||0,
|
||||
'point': enemyInfo.point||0, // 加点
|
||||
'special': specialText,
|
||||
'damage': this.getDamage(enemyId,null,null,floorId),
|
||||
'critical': critical[0],
|
||||
'criticalDamage': critical[1],
|
||||
'defDamage': this.getDefDamage(enemyId,1,null,null,floorId)
|
||||
});
|
||||
|
||||
var e = core.clone(enemy);
|
||||
for (var x in enemyInfo) {
|
||||
e[x] = enemyInfo[x];
|
||||
}
|
||||
e.id = enemyId;
|
||||
e.specialText = specialText;
|
||||
e.damage = this.getDamage(enemyId, null, null, floorId);
|
||||
e.critical = critical[0];
|
||||
e.criticalDamage = critical[1];
|
||||
e.defDamage = this.getDefDamage(enemyId,1,null,null,floorId);
|
||||
enemys.push(e);
|
||||
used[enemyId] = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -810,7 +810,7 @@ events.prototype.doAction = function() {
|
||||
var value=core.calValue(data.value);
|
||||
// 属性
|
||||
if (data.name.indexOf("status:")==0) {
|
||||
value=parseFloat(value);
|
||||
// value=parseFloat(value);
|
||||
core.setStatus(data.name.substring(7), value);
|
||||
}
|
||||
// 道具
|
||||
|
||||
33
libs/ui.js
33
libs/ui.js
@ -1340,25 +1340,25 @@ ui.prototype.drawBook = function (index) {
|
||||
// 数据
|
||||
core.canvas.ui.textAlign = "center";
|
||||
|
||||
if (enemy.special=='') {
|
||||
if (enemy.specialText=='') {
|
||||
core.fillText('ui', enemy.name, 115, 62 * i + 47, '#DDDDDD', 'bold 17px Verdana');
|
||||
}
|
||||
else {
|
||||
core.fillText('ui', enemy.name, 115, 62 * i + 40, '#DDDDDD', 'bold 17px Verdana');
|
||||
core.fillText('ui', enemy.special, 115, 62 * i + 62, '#FF6A6A', 'bold 15px Verdana');
|
||||
core.fillText('ui', enemy.specialText, 115, 62 * i + 62, '#FF6A6A', 'bold 15px Verdana');
|
||||
}
|
||||
core.canvas.ui.textAlign = "left";
|
||||
core.fillText('ui', '生命', 165, 62 * i + 32, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.hp), 195, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.hp||0), 195, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', '攻击', 255, 62 * i + 32, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.atk), 285, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.atk||0), 285, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', '防御', 335, 62 * i + 32, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.def), 365, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.def||0), 365, 62 * i + 32, '#DDDDDD', 'bold 13px Verdana');
|
||||
|
||||
var expOffset = 165, line_cnt=0;
|
||||
if (core.flags.enableMoney) {
|
||||
core.fillText('ui', '金币', 165, 62 * i + 50, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.money), 195, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.money||0), 195, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
expOffset = 255;
|
||||
line_cnt++;
|
||||
}
|
||||
@ -1367,7 +1367,7 @@ ui.prototype.drawBook = function (index) {
|
||||
if (core.flags.enableAddPoint) {
|
||||
core.canvas.ui.textAlign = "left";
|
||||
core.fillText('ui', '加点', expOffset, 62 * i + 50, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.point), expOffset + 30, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.point||0), expOffset + 30, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
expOffset = 255;
|
||||
line_cnt++;
|
||||
}
|
||||
@ -1375,7 +1375,7 @@ ui.prototype.drawBook = function (index) {
|
||||
if (core.flags.enableExperience && line_cnt<2) {
|
||||
core.canvas.ui.textAlign = "left";
|
||||
core.fillText('ui', '经验', expOffset, 62 * i + 50, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.experience), expOffset + 30, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.experience||0), expOffset + 30, 62 * i + 50, '#DDDDDD', 'bold 13px Verdana');
|
||||
line_cnt++;
|
||||
}
|
||||
|
||||
@ -1396,14 +1396,14 @@ ui.prototype.drawBook = function (index) {
|
||||
if (damage<=0) color = '#00FF00';
|
||||
|
||||
damage = core.formatBigNumber(damage);
|
||||
if (core.enemys.hasSpecial(core.material.enemys[enemy.id], 19))
|
||||
if (core.enemys.hasSpecial(enemy, 19))
|
||||
damage += "+";
|
||||
if (core.enemys.hasSpecial(core.material.enemys[enemy.id], 21))
|
||||
if (core.enemys.hasSpecial(enemy, 21))
|
||||
damage += "-";
|
||||
if (core.enemys.hasSpecial(core.material.enemys[enemy.id], 11))
|
||||
if (core.enemys.hasSpecial(enemy, 11))
|
||||
damage += "^";
|
||||
}
|
||||
if (core.material.enemys[enemy.id].notBomb)
|
||||
if (enemy.notBomb)
|
||||
damage += "[b]";
|
||||
|
||||
core.fillText('ui', damage, damageOffset, 62 * i + 50, color, 'bold 13px Verdana');
|
||||
@ -1411,11 +1411,11 @@ ui.prototype.drawBook = function (index) {
|
||||
core.canvas.ui.textAlign = "left";
|
||||
|
||||
core.fillText('ui', '临界', 165, 62 * i + 68, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.critical), 195, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.critical||0), 195, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', '减伤', 255, 62 * i + 68, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.criticalDamage), 285, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.criticalDamage||0), 285, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', '1防', 335, 62 * i + 68, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.defDamage), 365, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
core.fillText('ui', core.formatBigNumber(enemy.defDamage||0), 365, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
|
||||
if (index == start+i) {
|
||||
core.strokeRect('ui', 10, 62 * i + 13, 416-10*2, 62, '#FFD700');
|
||||
@ -1436,8 +1436,7 @@ ui.prototype.drawBookDetail = function (index) {
|
||||
if (index<0) index=0;
|
||||
if (index>=enemys.length) index=enemys.length-1;
|
||||
|
||||
var enemyId=enemys[index].id;
|
||||
var enemy = core.material.enemys[enemyId];
|
||||
var enemy = enemys[index], enemyId = enemy.id;
|
||||
var hints=core.enemys.getSpecialHint(enemy);
|
||||
|
||||
if (hints.length==0)
|
||||
|
||||
@ -203,6 +203,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"enableMoney": true,
|
||||
"enableExperience": false,
|
||||
"enableLevelUp": false,
|
||||
"levelUpLeftMode": false,
|
||||
"enableKeys": true,
|
||||
"enablePZF": false,
|
||||
"enableDebuff": false,
|
||||
@ -232,6 +233,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"portalWithoutTrigger": true,
|
||||
"canGoDeadZone": false,
|
||||
"enableMoveDirectly": true,
|
||||
"enableDisabledShop": true
|
||||
"enableDisabledShop": true,
|
||||
"disableShopOnDamage": false
|
||||
}
|
||||
}
|
||||
@ -817,7 +817,11 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
|
||||
// 进阶
|
||||
if (core.flags.enableLevelUp && core.status.hero.lv<core.firstData.levelUp.length) {
|
||||
core.statusBar.up.innerHTML = core.firstData.levelUp[core.status.hero.lv].need || " ";
|
||||
var need = core.firstData.levelUp[core.status.hero.lv].need;
|
||||
if (core.flags.levelUpLeftMode)
|
||||
core.statusBar.up.innerHTML = (need - core.getStatus('experience')) || " ";
|
||||
else
|
||||
core.statusBar.up.innerHTML = need || " ";
|
||||
}
|
||||
else core.statusBar.up.innerHTML = " ";
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user