毒衰咒处理不走公共事件

This commit is contained in:
ckcz123 2020-06-15 11:22:11 +08:00
parent f3ce272e43
commit 11d1e18a37
14 changed files with 153 additions and 188 deletions

View File

@ -989,7 +989,7 @@ openKeyBoard: fn(fromUserAction?: bool)
insertCommonEvent: fn(name?: string, args?: [?], x?: number, y?: number, callback?: fn(), addToLast?: bool)
插入一个公共事件
例如core.insertCommonEvent('毒衰咒处理', [0]);
例如core.insertCommonEvent('加点事件', [3]);
name: 公共事件名;如果公共事件不存在则直接忽略
args: 参数列表,为一个数组,将依次赋值给 flag:arg1, flag:arg2, ...
x: 新的当前点横坐标,可选

View File

@ -97,7 +97,7 @@
* 数值提升项若干个键值对表示该装备增加属性的常数值支持负数。7个常用属性可以通过下拉框选取自定义的新属性也可以手动输入。
* 百分比提升项:若干个键值对,表示该装备增加属性的百分比(支持负数,如填-10就表示减少10%),修改方法同上。
* 装备对属性的影响原理:在穿脱装备时,会根据数值提升项和百分比提升项,分别调用`core.status.hero.xxx += yyy`和`core.addBuff('xxx', yyy)`这两个API衰弱的附加和解除同理而状态栏的显示值和战斗中的使用值则是`core.getStatus('xxx')`和buff值相乘再向下取整所得。
* PC端按下Ctrl+0~9可以保存当前套装Alt+0~9快速更换套装。
* PC端可以按Alt+0~9快速更换套装。
道具相关API请阅读[API列表](api)。
@ -110,7 +110,7 @@
5. **特殊属性:**一个由正整数组成的一维数组,您可以点击“勾选框编辑”按钮来修改它。所有特殊属性都定义在“脚本编辑——怪物特殊属性”,您可以在那里追加新的。它们大体分为四类:
1. 手册中属性值的修正:(按照结算顺序)模仿、坚固、光环,修正后的属性也将被用于战斗,详见“脚本编辑——怪物真实属性”。
2. 战损的修正这类最多先攻、魔攻、连击次数为n、破甲比例为defValue、反击比例为atkValue回合数为勇士的攻击回合数、净化倍数为n1表示单纯无视护盾、吸血比例为value是否加到自身为add、仇恨每场战斗的仇恨增值由全塔属性指定、无敌、固伤数值为damage、支援。其中又以仇恨和固伤不能被护盾直接抵消而和无敌较为特殊详见“脚本编辑——战斗伤害信息”。
3. 战后的影响中毒、衰弱、诅咒、仇恨的累加和减半、自爆、退化扣减值分别为atkValue和defValue、重生详见“脚本编辑——战后脚本”和“公共事件——毒衰咒处理”。
3. 战后的影响中毒、衰弱、诅咒、仇恨的累加和减半、自爆、退化扣减值分别为atkValue和defValue、重生详见“脚本编辑——战后脚本”和“脚本编辑——毒衰咒”。
4. 阻激夹域捕捉即对主角行走的妨害详见“脚本编辑——阻激夹域伤害”该函数也负责了血网图块ID为lavaNet请勿修改的伤害。
阻激域的伤害都为value且在夹击之前结算领域的形状和半径与光环一致。
@ -286,7 +286,7 @@
这个类型的数值会保存在core.values中可以直接在游戏中修改。
1. **血网伤害和中毒伤害:**如题,如果不想用常数,请修改“脚本编辑”的“阻激夹域伤害”和“每步后操作”。
2. **衰弱效果:**填小于1的正数代表扣减的比例否则为扣减的常数。扣减和恢复的原理和装备相同详见“公共事件——毒衰咒处理”、解衰药水和万能药水的使用效果。
2. **衰弱效果:**填小于1的正数代表扣减的比例否则为扣减的常数。扣减和恢复的原理和装备相同详见“脚本编辑——毒衰咒”、解衰药水和万能药水的使用效果。
3. **三种宝石和四种血瓶的值:**如题此值为基础值。实际效果还需乘以楼层属性最下面的“宝石血瓶效果”限即捡即用类详见这七种道具的属性。此外B键数据统计是按照此值乘以“宝石血瓶效果”统计的与道具的实际效果无关请自行注意。
4. **反击、破甲、净化比例:**如果反击、破甲、净化怪物没有指定atkValue、defValue和n就会用这三个值。请注意反击的总回合数是勇士的攻击回合数净化比例填1表示单纯无视护盾。
5. **仇恨增值:**每进行一场战斗core.status.hero.flags.hatred的增加量。如果不想用常数请修改“脚本编辑——战后脚本”。

View File

@ -101,7 +101,7 @@
## 公共事件(逗号键)
有几个事件,如战后加点、毒衰咒处理、回收钥匙商店,会在战后脚本或全局商店等处频繁用到。于是它们被整理成了公共事件,您也可以追加自己的。
有几个事件,如战后加点、回收钥匙商店,会在战后脚本或全局商店等处频繁用到。于是它们被整理成了公共事件,您也可以追加自己的。
公共事件在内容上和其他事件并无不同,只是在插入公共事件时(如`core.insertCommonEvent("回收钥匙商店")`)可以提供一个`参数列表`。

View File

@ -2242,6 +2242,10 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!doc": "读取主角某个属性的百分比修正倍率初始值为1<br/>例如core.getBuff('atk'); // 主角当前能发挥出多大比例的攻击力<br/>name: 属性的英文名",
"!type": "fn(name: string) -> number"
},
"triggerDebuff": {
"!doc": "获得或移除毒衰咒效果<br/>action: 要获得还是移除,'get'为获得,'remove'为移除<br/>type: 获得或移除的内容poison/weak/curse可以为字符串或数组",
"!type": "fn(action: string, type: string|[string])"
},
"setToolbarButton": {
"!doc": "改变工具栏为按钮1-8",
"!type": "fn(useButton?: bool)"
@ -3831,7 +3835,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!type": "fn(fromUserAction?: bool)"
},
"insertCommonEvent": {
"!doc": "插入一个公共事件<br/>例如core.insertCommonEvent('毒衰咒处理', [0]);<br/>name: 公共事件名;如果公共事件不存在则直接忽略<br/>args: 参数列表,为一个数组,将依次赋值给 flag:arg1, flag:arg2, ...<br/>x: 新的当前点横坐标,可选<br/>y: 新的当前点纵坐标,可选<br/>callback 新的回调函数,可选<br/>addToLast: 插入的位置true表示插入到末尾否则插入到开头",
"!doc": "插入一个公共事件<br/>例如core.insertCommonEvent('加点事件', [3]);<br/>name: 公共事件名;如果公共事件不存在则直接忽略<br/>args: 参数列表,为一个数组,将依次赋值给 flag:arg1, flag:arg2, ...<br/>x: 新的当前点横坐标,可选<br/>y: 新的当前点纵坐标,可选<br/>callback 新的回调函数,可选<br/>addToLast: 插入的位置true表示插入到末尾否则插入到开头",
"!type": "fn(name?: string, args?: [?], x?: number, y?: number, callback?: fn(), addToLast?: bool)"
},
"hideImage": {

View File

@ -19,12 +19,11 @@ var events_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_event": "commonEvent",
"_data": "加点事件"
},
"毒衰咒处理": {
"回收钥匙商店": {
"_leaf": true,
"_type": "event",
"_range": "thiseval instanceof Array",
"_event": "commonEvent",
"_data": "毒衰咒处理"
"_data": "回收钥匙商店"
},
}
if (obj[key]) return obj[key];

View File

@ -135,6 +135,12 @@ var functions_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_lint": true,
"_data": "读档操作"
},
"triggerDebuff": {
"_leaf": true,
"_type": "textarea",
"_lint": true,
"_data": "毒衰咒处理"
},
"updateStatusBar": {
"_leaf": true,
"_type": "textarea",

View File

@ -2100,6 +2100,11 @@ control.prototype.getBuff = function (name) {
return core.getFlag('__'+name+'_buff__', 1);
}
////// 获得或移除毒衰咒效果 //////
control.prototype.triggerDebuff = function (action, type) {
return this.controldata.triggerDebuff(action, type);
}
////// 设置勇士的位置 //////
control.prototype.setHeroLoc = function (name, value, noGather) {
if (!core.status.hero) return;

View File

@ -735,7 +735,7 @@ maps.prototype._automaticRoute_deepAdd = function (x, y) {
// 绕过亮灯
if (id == "light") deepAdd += 100;
// 绕过路障
if (id.endsWith("Net")) deepAdd += 100;
if (id.endsWith("Net") && !core.hasFlag(id.substring(0, id.length - 3))) deepAdd += 100;
// 绕过血瓶和绿宝石
if (core.hasFlag('__potionNoRouting__') && (id.endsWith("Potion") || id == 'greenGem')) deepAdd += 100;
// 绕过传送点

View File

@ -550,10 +550,10 @@ function action_maps(callback) {
"9": {"cls":"terrains","id":"pinkShopLeft"},
"10": {"cls":"terrains","id":"pinkShopRight"},
"11": {"cls":"animates","id":"lavaNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 血网的伤害效果移动到 checkBlock 中处理\n\n\t// 如果要做一次性血网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})();","name":"血网"},
"12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行毒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [0] });\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"},
"13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行衰处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [1] });\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"},
"14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行咒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [2] });\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"},
"54": {"cls":"items","id":"freezeBadge"},
"12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'poison');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"},
"13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'weak');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"},
"14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'curse');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"},
"54": {"cls":"items","id":"freezeBadge"},
"81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}},"name":"黄门"},
"82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}},"name":"蓝门"},
"83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}},"name":"红门"},

View File

@ -45,117 +45,6 @@ var events_c12a15a8_c380_4b28_8144_256cba95f760 =
]
}
],
"毒衰咒处理": [
{
"type": "comment",
"text": "获得毒衰咒效果flag:arg1 为要获得的类型"
},
{
"type": "switch",
"condition": "flag:arg1",
"caseList": [
{
"case": "0",
"action": [
{
"type": "comment",
"text": "获得毒效果"
},
{
"type": "if",
"condition": "!flag:poison",
"true": [
{
"type": "setValue",
"name": "flag:poison",
"value": "true"
}
],
"false": []
}
]
},
{
"case": "1",
"action": [
{
"type": "comment",
"text": "获得衰效果"
},
{
"type": "if",
"condition": "!flag:weak",
"true": [
{
"type": "setValue",
"name": "flag:weak",
"value": "true"
},
{
"type": "if",
"condition": "core.values.weakValue>=1",
"true": [
{
"type": "comment",
"text": ">=1直接扣数值"
},
{
"type": "setValue",
"name": "status:atk",
"operator": "-=",
"value": "core.values.weakValue"
},
{
"type": "setValue",
"name": "status:def",
"operator": "-=",
"value": "core.values.weakValue"
}
],
"false": [
{
"type": "comment",
"text": "<1扣比例"
},
{
"type": "function",
"function": "function(){\ncore.addBuff('atk', -core.values.weakValue);\n}"
},
{
"type": "function",
"function": "function(){\ncore.addBuff('def', -core.values.weakValue);\n}"
}
]
}
],
"false": []
}
]
},
{
"case": "2",
"action": [
{
"type": "comment",
"text": "获得咒效果"
},
{
"type": "if",
"condition": "!flag:curse",
"true": [
{
"type": "setValue",
"name": "flag:curse",
"value": "true"
}
],
"false": []
}
]
}
]
}
],
"回收钥匙商店": [
{
"type": "comment",

View File

@ -80,14 +80,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
})
});
},
"lose": function(reason) {
"lose": function (reason) {
// 游戏失败事件
core.ui.closePanel();
var replaying = core.isReplaying();
core.stopReplay();
core.waitHeroToStop(function() {
core.waitHeroToStop(function () {
core.drawText([
"\t["+(reason||"结局1")+"]你死了。\n如题。"
"\t[" + (reason || "结局1") + "]你死了。\n如题。"
], function () {
core.events.gameOver(null, replaying);
});
@ -117,7 +117,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.status.hero.loc = heroLoc;
// 检查重生怪并重置
if (!fromLoad) {
core.extractBlocks(floorId);
core.extractBlocks(floorId);
core.status.maps[floorId].blocks.forEach(function (block) {
if (block.disable && core.enemys.hasSpecial(block.event.id, 23)) {
block.disable = false;
@ -196,7 +196,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
loc = core.getFlag("__leaveLoc__", {})[toId] || null;
}
if (core.status.maps[toId].flyPoint != null && core.status.maps[toId].flyPoint.length == 2) {
loc = {x: core.status.maps[toId].flyPoint[0], y: core.status.maps[toId].flyPoint[1]};
loc = { x: core.status.maps[toId].flyPoint[0], y: core.status.maps[toId].flyPoint[1] };
}
if (loc == null) {
// 获得两个楼层的索引,以决定是上楼梯还是下楼梯
@ -311,8 +311,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.status.hero.statistics.exp += exp;
var hint = "打败 " + enemy.name;
if (core.flags.statusBarItems.indexOf('enableMoney')>=0) hint += ",金币+" + money;
if (core.flags.statusBarItems.indexOf('enableExp')>=0) hint += ",经验+" + exp;
if (core.flags.statusBarItems.indexOf('enableMoney') >= 0) hint += ",金币+" + money;
if (core.flags.statusBarItems.indexOf('enableExp') >= 0) hint += ",经验+" + exp;
core.drawTip(hint, enemy.id);
// 事件的处理
@ -321,15 +321,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var special = enemy.special;
// 中毒
if (core.enemys.hasSpecial(special, 12)) {
core.push(todo, [{ "type": "insert", "name": "毒衰咒处理", "args": [0] }]);
core.triggerDebuff('get', 'poison');
}
// 衰弱
if (core.enemys.hasSpecial(special, 13)) {
core.push(todo, [{ "type": "insert", "name": "毒衰咒处理", "args": [1] }]);
core.triggerDebuff('get', 'weak');
}
// 诅咒
if (core.enemys.hasSpecial(special, 14)) {
core.push(todo, [{ "type": "insert", "name": "毒衰咒处理", "args": [2] }]);
core.triggerDebuff('get', 'curse');
}
// 仇恨属性
if (core.enemys.hasSpecial(special, 17)) {
@ -351,7 +351,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.setFlag('hatred', core.getFlag('hatred', 0) + core.values.hatred);
// 战后的技能处理,比如扣除魔力值
if (core.flags.statusBarItems.indexOf('enableSkill') >=0 ) {
if (core.flags.statusBarItems.indexOf('enableSkill') >= 0) {
// 检测当前开启的技能类型
var skill = core.getFlag('skill', 0);
if (skill == 1) { // 技能1二倍斩
@ -363,7 +363,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
}
// 如果有加点
var point = guards.reduce(function (curr, g) {
var point = guards.reduce(function (curr, g) {
return curr + core.material.enemys[g[2]].point;
}, enemy.point) || 0;
if (core.flags.enableAddPoint && point > 0) {
@ -891,20 +891,20 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.useItem('skill1', true);
}
break;
// 在这里可以任意新增或编辑已有的快捷键内容
/*
case 0: // 使用该按键的keyCode
// 还可以再判定altKey是否被按下即 if (altKey) { ...
// 在这里可以任意新增或编辑已有的快捷键内容
/*
case 0: // 使用该按键的keyCode
// 还可以再判定altKey是否被按下即 if (altKey) { ...
// ... 在这里写你要执行脚本
// **强烈建议所有新增的自定义快捷键均能给个对应的道具可点击,以方便手机端的行为**
if (core.hasItem('...')) {
core.status.route.push("key:0");
core.useItem('...', true); // 增加true代表该使用道具不计入录像
}
// ... 在这里写你要执行脚本
// **强烈建议所有新增的自定义快捷键均能给个对应的道具可点击,以方便手机端的行为**
if (core.hasItem('...')) {
core.status.route.push("key:0");
core.useItem('...', true); // 增加true代表该使用道具不计入录像
}
break;
*/
break;
*/
}
},
@ -986,9 +986,61 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core.playBgm(core.getFlag("__bgm__"));
}
core.removeFlag('__fromLoad__');
core.removeFlag('__fromLoad__');
if (callback) callback();
});
},
"triggerDebuff": function (action, type) {
// 毒衰咒效果的获得与解除
// action获得还是解除'get'表示获得,'remove'表示解除
// type一个数组表示获得了哪些毒衰咒效果poison, weakcurse
if (!(type instanceof Array)) type = [type];
if (action == 'get') {
if (core.inArray(type, 'poison') && !core.hasFlag("poison")) {
// 获得毒效果
core.setFlag('poison', true);
}
if (core.inArray(type, 'weak') && !core.hasFlag('weak')) {
// 获得衰效果
core.setFlag('weak', true);
if (core.values.weakValue >= 1) {
// >=1直接扣数值
core.addStatus('atk', -core.values.weakValue);
core.addStatus('def', -core.values.weakValue);
} else {
// <1扣比例
core.addBuff('atk', -core.values.weakValue);
core.addBuff('def', -core.values.weakValue);
}
}
if (core.inArray(type, 'curse') && !core.hasFlag('curse')) {
// 获得咒效果
core.setFlag('curse', true);
}
} else if (action == 'remove') {
if (core.inArray(type, "poison") && core.hasFlag("poison")) {
// 移除毒效果
core.setFlag("poison", false);
}
if (core.inArray(type, "weak") && core.hasFlag("weak")) {
// 移除衰效果
core.setFlag("weak", false);
if (core.values.weakValue >= 1) {
// >=1直接扣数值
core.addStatus('atk', core.values.weakValue);
core.addStatus('def', core.values.weakValue);
} else {
// <1扣比例
core.addBuff('atk', core.values.weakValue);
core.addBuff('def', core.values.weakValue);
}
}
if (core.inArray(type, "curse") && core.hasFlag("curse")) {
// 移除咒效果
core.setFlag("curse", false);
}
}
},
"updateStatusBar": function () {
// 更新状态栏
@ -1024,8 +1076,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
if (core.status.hero.manamax != null && core.getRealStatus('manamax') >= 0) {
core.status.hero.mana = Math.min(core.status.hero.mana, core.getRealStatus('manamax'));
core.setStatusBarInnerHTML('mana', core.status.hero.mana + "/" + core.getRealStatus('manamax'));
}
else {
} else {
core.setStatusBarInnerHTML("mana", core.status.hero.mana);
}
// 设置技能栏
@ -1038,9 +1089,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 如果是自定义添加的状态栏,也需要在这里进行设置显示的数值
// 进阶
if (core.flags.statusBarItems.indexOf('enableLevelUp')>=0 && core.status.hero.lv < core.firstData.levelUp.length) {
if (core.flags.statusBarItems.indexOf('enableLevelUp') >= 0 && core.status.hero.lv < core.firstData.levelUp.length) {
var need = core.calValue(core.firstData.levelUp[core.status.hero.lv].need);
if (core.flags.statusBarItems.indexOf('levelUpLeftMode')>=0)
if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0)
core.setStatusBarInnerHTML('up', core.formatBigNumber(need - core.getStatus('exp')) || "");
else
core.setStatusBarInnerHTML('up', core.formatBigNumber(need) || "");
@ -1144,7 +1195,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var rdir = core.turnDirection(":back", dir);
// 检查下一个点是否存在事件(从而判定是否移动)
var rnx = x + core.utils.scan[rdir].x,
var rnx = x + core.utils.scan[rdir].x,
rny = y + core.utils.scan[rdir].y;
if (core.canMoveHero(x, y, rdir, floorId) && core.getBlock(rnx, rny, floorId) == null) {
repulse[currloc] = (repulse[currloc] || []).concat([
@ -1286,32 +1337,33 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 从v2.7开始,每一步行走不会再刷新状态栏。
// 如果有特殊要求如每走一步都加buff之类可手动取消注释下面这一句
// core.updateStatusBar(true);
// 检查自动事件
core.checkAutoEvents();
// ------ 检查目标点事件 ------ //
// 无事件的道具(如血瓶)需要优先于阻激夹域判定
var nowx = core.getHeroLoc('x'), nowy = core.getHeroLoc('y');
var block = core.getBlock(nowx, nowy);
var hasTrigger = false;
if (block!=null && block.block.event.trigger=='getItem' &&
!core.floors[core.status.floorId].afterGetItem[nowx+","+nowy]) {
hasTrigger = true;
core.trigger(nowx, nowy, callback);
}
// 执行目标点的阻激夹域事件
core.checkBlock();
var nowx = core.getHeroLoc('x'),
nowy = core.getHeroLoc('y');
var block = core.getBlock(nowx, nowy);
var hasTrigger = false;
if (block != null && block.block.event.trigger == 'getItem' &&
!core.floors[core.status.floorId].afterGetItem[nowx + "," + nowy]) {
hasTrigger = true;
core.trigger(nowx, nowy, callback);
}
// 执行目标点的阻激夹域事件
core.checkBlock();
// 执行目标点的script和事件
if (!hasTrigger)
core.trigger(nowx, nowy, callback);
// 执行目标点的script和事件
if (!hasTrigger)
core.trigger(nowx, nowy, callback);
// 检查该点是否是滑冰
if (core.onSki()) {
// 检查该点是否是滑冰
if (core.onSki()) {
// 延迟到事件最后执行,因为这之前可能有阻激夹域动画
core.insertAction({"type": "moveAction"}, null, null, null, true);
}
core.insertAction({ "type": "moveAction" }, null, null, null, true);
}
// ------ 检查目标点事件 END ------ //
@ -1443,7 +1495,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
},
"drawStatistics": function () {
// 浏览地图时参与的统计项目
return [
'yellowDoor', 'blueDoor', 'redDoor', 'greenDoor', 'steelDoor',
'yellowKey', 'blueKey', 'redKey', 'greenKey', 'steelKey',
@ -1457,13 +1509,16 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 在这里可以增加新的ID来进行统计个数只能增加道具ID
];
},
"drawAbout": function() {
"drawAbout": function () {
// 绘制“关于”界面
core.ui.closePanel();
core.lockControl();
core.status.event.id = 'about';
var left = 48, top = 36, right = core.__PIXELS__ - 2 * left, bottom = core.__PIXELS__ - 2 * top;
var left = 48,
top = 36,
right = core.__PIXELS__ - 2 * left,
bottom = core.__PIXELS__ - 2 * top;
core.setAlpha('ui', 0.85);
core.fillRect('ui', left, top, right, bottom, '#000000');
@ -1474,11 +1529,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 名称
core.setTextAlign('ui', 'left');
var globalFont = (core.status.globalAttribute||core.initStatus.globalAttribute).font;
core.fillText('ui', "HTML5 魔塔样板", text_start, top+35, "#FFD700", "bold 22px "+globalFont);
core.fillText('ui', "版本: "+main.__VERSION__, text_start, top + 80, "#FFFFFF", "bold 17px "+globalFont);
var globalFont = (core.status.globalAttribute || core.initStatus.globalAttribute).font;
core.fillText('ui', "HTML5 魔塔样板", text_start, top + 35, "#FFD700", "bold 22px " + globalFont);
core.fillText('ui', "版本: " + main.__VERSION__, text_start, top + 80, "#FFFFFF", "bold 17px " + globalFont);
core.fillText('ui', "作者: 艾之葵", text_start, top + 112);
core.fillText('ui', 'HTML5魔塔交流群539113091', text_start, top+112+32);
core.fillText('ui', 'HTML5魔塔交流群539113091', text_start, top + 112 + 32);
// TODO: 写自己的“关于”页面每次增加32像素即可
}
}

View File

@ -423,28 +423,28 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"cls": "tools",
"name": "解毒药水",
"text": "可以解除中毒状态",
"useItemEffect": "core.removeFlag('poison');",
"useItemEffect": "core.triggerDebuff('remove', 'poison');",
"canUseItemEffect": "core.hasFlag('poison');"
},
"weakWine": {
"cls": "tools",
"name": "解衰药水",
"text": "可以解除衰弱状态",
"useItemEffect": "core.removeFlag('weak');\nif (core.values.weakValue>=1) { // >=1直接扣数值\n\tcore.status.hero.atk += core.values.weakValue;\n\tcore.status.hero.def += core.values.weakValue;\n}\nelse { // <1扣比例\n\tcore.addBuff(\"atk\", core.values.weakValue);\n\tcore.addBuff(\"def\", core.values.weakValue);\n}",
"useItemEffect": "core.triggerDebuff('remove', 'weak');",
"canUseItemEffect": "core.hasFlag('weak');"
},
"curseWine": {
"cls": "tools",
"name": "解咒药水",
"text": "可以解除诅咒状态",
"useItemEffect": "core.removeFlag('curse');",
"useItemEffect": "core.triggerDebuff('remove', 'curse');",
"canUseItemEffect": "core.hasFlag('curse');"
},
"superWine": {
"cls": "tools",
"name": "万能药水",
"text": "可以解除所有不良状态",
"useItemEffect": "core.removeFlag('poison');\nif (core.hasFlag('weak')) {\n\tcore.removeFlag('weak');\n\tif (core.values.weakValue>=1) { // >=1直接扣数值\n\t\tcore.status.hero.atk += core.values.weakValue;\n\t\tcore.status.hero.def += core.values.weakValue;\n\t}\n\telse { // <1扣比例\n\t\tcore.addBuff(\"atk\", core.values.weakValue);\n\t\tcore.addBuff(\"def\", core.values.weakValue);\n\t}\n}\ncore.removeFlag('curse');",
"useItemEffect": "core.triggerDebuff('remove', ['poison', 'weak', 'curse']);",
"canUseItemEffect": "(function() {\n\treturn core.hasFlag('poison') || core.hasFlag('weak') || core.hasFlag('curse');\n})();"
},
"hammer": {

View File

@ -11,9 +11,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"9": {"cls":"terrains","id":"pinkShopLeft"},
"10": {"cls":"terrains","id":"pinkShopRight"},
"11": {"cls":"animates","id":"lavaNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 血网的伤害效果移动到 checkBlock 中处理\n\n\t// 如果要做一次性血网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})();","name":"血网"},
"12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行毒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [0] });\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"},
"13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行衰处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [1] });\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"},
"14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 直接插入公共事件进行咒处理\n\tif (!core.hasItem('amulet')) {\n\t\tcore.insertAction({ \"type\": \"insert\", \"name\": \"毒衰咒处理\", \"args\": [2] });\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"},
"12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'poison');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"},
"13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'weak');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"},
"14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'curse');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"},
"15": {"cls":"animates","id":"blueWater"},
"16": {"cls":"animates","id":"water"},
"20": {"cls":"autotile","id":"autotile"},

9
runtime.d.ts vendored
View File

@ -455,6 +455,13 @@ declare class control {
* @param name
*/
getBuff(name: string): number
/**
*
* @param action 'get''remove'
* @param type
*/
triggerDebuff(action: string, type: string|string[]): void
/**
*
@ -1108,7 +1115,7 @@ declare class events {
/**
*
* @example core.insertCommonEvent('毒衰咒处理', [0]);
* @example core.insertCommonEvent('加点事件', [3]);
* @param name
* @param args flag:arg1, flag:arg2, ...
* @param x