Merge branch 'status-itcfangye' into artresources

This commit is contained in:
草莓 2025-01-22 16:29:16 +08:00
commit d40775456c
4 changed files with 3169 additions and 3107 deletions

View File

@ -1 +1 @@
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

View File

@ -1,7 +1,7 @@
var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
{ {
"greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0,"magic":false},
"redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10}, "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"value":10,"magic":false},
"blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0}, "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":0},
"slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]}, "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]},
"bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]}, "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]},

View File

@ -531,15 +531,21 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var hero_hp = core.getRealStatusOrDefault(hero, 'hp'), var hero_hp = core.getRealStatusOrDefault(hero, 'hp'),
hero_atk = core.getRealStatusOrDefault(hero, 'atk'), hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
hero_def = core.getRealStatusOrDefault(hero, 'def'), hero_def = core.getRealStatusOrDefault(hero, 'def'),
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'); hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
hero_speed = core.getRealStatusOrDefault(hero, 'speed');
var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId), var mon_hp = core.getEnemyValue(enemy, 'hp', x, y, floorId),
mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId), mon_atk = core.getEnemyValue(enemy, 'atk', x, y, floorId),
mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId), mon_def = core.getEnemyValue(enemy, 'def', x, y, floorId),
mon_mdef = core.getEnemyValue(enemy, 'mdef', x, y, floorId),
mon_speed = core.getEnemyValue(enemy, 'speed', x, y, floorId),
mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId); mon_special = core.getEnemyValue(enemy, 'special', x, y, floorId);
var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId), var mon_money = core.getEnemyValue(enemy, 'money', x, y, floorId),
mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId), mon_exp = core.getEnemyValue(enemy, 'exp', x, y, floorId),
mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId); mon_point = core.getEnemyValue(enemy, 'point', x, y, floorId);
var mon_barrier = 0,
mon_absorb_damage = 0,
mon_magic = core.getEnemyValue(enemy, 'magic', x, y, floorId);
// 模仿 // 模仿
if (core.hasSpecial(mon_special, 10)) { if (core.hasSpecial(mon_special, 10)) {
mon_atk = hero_atk; mon_atk = hero_atk;
@ -633,10 +639,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
"hp": Math.floor(mon_hp), "hp": Math.floor(mon_hp),
"atk": Math.floor(mon_atk), "atk": Math.floor(mon_atk),
"def": Math.floor(mon_def), "def": Math.floor(mon_def),
"mdef": Math.floor(mon_mdef),
"speed": Math.floor(mon_speed),
"barrier": Math.floor(mon_barrier),
"absorb": Math.floor(mon_absorb_damage),
"money": Math.floor(mon_money), "money": Math.floor(mon_money),
"exp": Math.floor(mon_exp), "exp": Math.floor(mon_exp),
"point": Math.floor(mon_point), "point": Math.floor(mon_point),
"special": mon_special, "special": mon_special,
"magic": mon_magic,
"guards": guards, // 返回支援情况 "guards": guards, // 返回支援情况
}; };
}, },
@ -655,15 +666,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
hero_atk = core.getRealStatusOrDefault(hero, 'atk'), hero_atk = core.getRealStatusOrDefault(hero, 'atk'),
hero_def = core.getRealStatusOrDefault(hero, 'def'), hero_def = core.getRealStatusOrDefault(hero, 'def'),
hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'), hero_mdef = core.getRealStatusOrDefault(hero, 'mdef'),
hero_speed = core.getRealStatusOrDefault(hero, 'speed'),
hero_magic = core.getRealStatusOrDefault(hero, 'magic'),
origin_hero_hp = core.getStatusOrDefault(hero, 'hp'), origin_hero_hp = core.getStatusOrDefault(hero, 'hp'),
origin_hero_atk = core.getStatusOrDefault(hero, 'atk'), origin_hero_atk = core.getStatusOrDefault(hero, 'atk'),
origin_hero_def = core.getStatusOrDefault(hero, 'def'); origin_hero_def = core.getStatusOrDefault(hero, 'def');
// 勇士的负属性都按0计算
hero_hp = Math.max(0, hero_hp);
hero_atk = Math.max(0, hero_atk);
hero_def = Math.max(0, hero_def);
hero_mdef = Math.max(0, hero_mdef);
// 怪物的各项数据 // 怪物的各项数据
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中 // 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
@ -671,23 +680,34 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
var mon_hp = enemyInfo.hp, var mon_hp = enemyInfo.hp,
mon_atk = enemyInfo.atk, mon_atk = enemyInfo.atk,
mon_def = enemyInfo.def, mon_def = enemyInfo.def,
mon_special = enemyInfo.special; mon_mdef = enemyInfo.mdef,
mon_speed = enemyInfo.speed,
mon_special = enemyInfo.special,
mon_absorb_damage = enemyInfo.absorb,
mon_barrier = enemyInfo.barrier;
//---第一部分:静态属性修正---
//此处写入静态影响勇士属性的勇士或怪物技能静态影响怪物属性的技能于getEnemyInfo中写入
// 技能的处理 // 技能的处理
if (core.getFlag('skill', 0) == 1) { // 开启了技能1二倍斩 if (core.getFlag('skill', 0) == 1) { // 开启了技能1二倍斩
hero_atk *= 2; // 计算时攻击力翻倍 hero_atk *= 2; // 计算时攻击力翻倍
} }
//勇士属性取整
hero_atk = Math.max(0, Math.floor(hero_atk));
hero_def = Math.max(0, Math.floor(hero_def));
hero_mdef = Math.max(0, Math.floor(hero_mdef));
hero_speed = Math.max(0, Math.floor(hero_speed));
// 如果是无敌属性,且勇士未持有十字架 // 如果是无敌属性,且勇士未持有十字架
if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross")) if (core.hasSpecial(mon_special, 20) && !core.hasItem("cross"))
return null; // 不可战斗 return null; // 不可战斗
// 战前造成的额外伤害(可被护盾抵消) // 战前造成的额外伤害(可被护盾抵消)
var init_damage = 0; let init_damage = 0;
// 吸血 // 吸血
if (core.hasSpecial(mon_special, 11)) { if (core.hasSpecial(mon_special, 11)) {
var vampire_damage = hero_hp * enemy.vampire; let vampire_damage = hero_hp * enemy.vampire;
// 如果有神圣盾免疫吸血等可以在这里写 // 如果有神圣盾免疫吸血等可以在这里写
// 也可以用hasItem和hasEquip来判定装备 // 也可以用hasItem和hasEquip来判定装备
@ -701,17 +721,60 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
init_damage += vampire_damage; init_damage += vampire_damage;
} }
//——第二部分:变量定义和初始赋值——
// 每回合怪物对勇士造成的战斗伤害 // 每回合怪物对勇士造成的战斗伤害
var per_damage = mon_atk - hero_def; let per_damage = Math.max(mon_atk - hero_def, 0);
if (enemyInfo.magic) per_damage = Math.max(mon_atk - hero_mdef, 0);
// 战斗伤害不能为负值 //
if (per_damage < 0) per_damage = 0; let hero_per_damage = Math.max(hero_atk - mon_def, 0);
if (hero_magic) hero_per_damage = Math.max(hero_atk - mon_mdef, 0);
let damage = 0,
hero_turn = 0,
mon_turn = 0;
//---第三部分:递归开始---
let length = hero_speed * mon_speed;
for (let now_mon_hp = mon_hp, last_mon_hp = mon_hp, mon_length = length, hero_length = length, mon_time = 0, hero_time = 0; now_mon_hp > 0;) { //勇士和怪物的长度
mon_time = mon_length / mon_speed;
hero_time = hero_length / hero_speed;
if ((mon_time < hero_time) || ((mon_time = hero_time) && (mon_speed > hero_speed))) { //怪物攻击的回合
//这里计算怪物攻击时发生的各种变化
//伤害与回合增加
damage += per_damage;
if (core.hasSpecial(mon_special, 6)) {
mon_turn += enemy.n;
} else {
mon_turn += 1;
}
//重新为长度赋值
mon_length = length;
hero_length = hero_length - mon_time * hero_speed;
} else { //勇士攻击的回合
// 这里计算勇士攻击时发生的各种变化
// 伤害与回合数增加
now_mon_hp -= hero_per_damage;
hero_turn += 1; //勇士回合+1如果有勇士每回合多次攻击的情况在这里写判断
// 无法战斗计算
if (hero_turn % 50 == 0) {
if (now_mon_hp >= last_mon_hp) return null;
last_mon_hp = now_mon_hp;
}
//重新为长度赋值
hero_length = length;
mon_length = mon_length - hero_time * mon_speed;
}
}
//下面这些还没修改
// 连击 // 连击
if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2); if (core.hasSpecial(mon_special, 6)) per_damage *= (enemy.n || 2);
// 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合 // 每回合的反击伤害;反击是按照勇士的攻击次数来计算回合
var counterDamage = 0; let counterDamage = 0;
if (core.hasSpecial(mon_special, 8)) if (core.hasSpecial(mon_special, 8))
counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk); counterDamage += Math.floor((enemy.counterAttack || core.values.counterAttack) * hero_atk);
@ -725,19 +788,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 净化 // 净化
if (core.hasSpecial(mon_special, 9)) if (core.hasSpecial(mon_special, 9))
init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef); init_damage += Math.floor((enemy.purify || core.values.purify) * hero_mdef);
//上面这些还没修改
// 勇士每回合对怪物造成的伤害 //勇士护盾计算
var hero_per_damage = Math.max(hero_atk - mon_def, 0); let barrier = hero_mdef;
if (enemyInfo.magic) barrier = hero_def;
// 如果没有破防,则不可战斗
if (hero_per_damage <= 0) return null;
// 勇士的攻击回合数;为怪物生命除以每回合伤害向上取整
var turn = Math.ceil(mon_hp / hero_per_damage);
// ------ 支援 ----- // // ------ 支援 ----- //
// 这个递归最好想明白为什么flag:__extraTurn__是怎么用的 // 这个递归最好想明白为什么flag:__extraTurn__是怎么用的
var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards); /*var guards = core.getFlag("__guards__" + x + "_" + y, enemyInfo.guards);
var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false) var guard_before_current_enemy = false; // ------ 支援怪是先打(true)还是后打(false)
turn += core.getFlag("__extraTurn__", 0); turn += core.getFlag("__extraTurn__", 0);
if (guards.length > 0) { if (guards.length > 0) {
@ -764,13 +822,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
turn += core.getFlag("__extraTurn__", 0); turn += core.getFlag("__extraTurn__", 0);
} }
} }
core.removeFlag("__extraTurn__"); core.removeFlag("__extraTurn__");*/
// ------ 支援END ------ // // ------ 支援END ------ //
// 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害 // 最终伤害:初始伤害 + 怪物对勇士造成的伤害 + 反击伤害
var damage = init_damage + (turn - 1) * per_damage + turn * counterDamage; damage += init_damage + hero_turn * counterDamage;
// 再扣去护盾 // 再扣去护盾
damage -= hero_mdef; damage -= barrier;
// 检查是否允许负伤 // 检查是否允许负伤
if (!core.flags.enableNegativeDamage) if (!core.flags.enableNegativeDamage)
@ -788,12 +846,18 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
"mon_hp": Math.floor(mon_hp), "mon_hp": Math.floor(mon_hp),
"mon_atk": Math.floor(mon_atk), "mon_atk": Math.floor(mon_atk),
"mon_def": Math.floor(mon_def), "mon_def": Math.floor(mon_def),
"mon_mdef": Math.floor(mon_mdef),
"init_damage": Math.floor(init_damage), "init_damage": Math.floor(init_damage),
"per_damage": Math.floor(per_damage), "per_damage": Math.floor(per_damage),
"hero_per_damage": Math.floor(hero_per_damage), "hero_per_damage": Math.floor(hero_per_damage),
"turn": Math.floor(turn), "turn": Math.floor(hero_turn),
"mon_turn": Math.floor(mon_turn),
"damage": Math.floor(damage) "damage": Math.floor(damage)
}; };
/*TODO:return
1. 显示怪物是魔攻还是物攻在怪物名字上做颜色变化物攻是黄色魔攻是蓝色
2. 一防减伤是物防还是魔防由怪物是物攻还是魔攻来转换
3. 特殊战斗的怪物在怪物手册里伤害写为特殊战*/
} }
}, },
"actions": { "actions": {

View File

@ -1,6 +1,5 @@
var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
{ init: function () {
"init": function () {
this._afterLoadResources = function () { this._afterLoadResources = function () {
// 本函数将在所有资源加载完毕后,游戏开启前被执行 // 本函数将在所有资源加载完毕后,游戏开启前被执行
core.ui.statusBar.init(); core.ui.statusBar.init();
@ -221,7 +220,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}); });
}; };
}, },
"drawLight": function () { drawLight: function () {
// 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...) // 绘制灯光/漆黑层效果。调用方式 core.plugin.drawLight(...)
// 【参数说明】 // 【参数说明】
// name必填要绘制到的画布名可以是一个系统画布或者是个自定义画布如果不存在则创建 // name必填要绘制到的画布名可以是一个系统画布或者是个自定义画布如果不存在则创建
@ -287,7 +286,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
// 可以在任何地方如afterXXX或自定义脚本事件调用函数方法为 core.plugin.xxx(); // 可以在任何地方如afterXXX或自定义脚本事件调用函数方法为 core.plugin.xxx();
}; };
}, },
"shop": function () { shop: function () {
// 【全局商店】相关的功能 // 【全局商店】相关的功能
// //
// 打开一个全局商店 // 打开一个全局商店
@ -563,7 +562,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
60 60
); );
}, },
"removeMap": function () { removeMap: function () {
// 高层塔砍层插件,删除后不会存入存档,不可浏览地图也不可飞到。 // 高层塔砍层插件,删除后不会存入存档,不可浏览地图也不可飞到。
// 推荐用法: // 推荐用法:
// 对于超高层或分区域塔当在1区时将2区以后的地图删除1区结束时恢复2区进二区时删除1区地图以此类推 // 对于超高层或分区域塔当在1区时将2区以后的地图删除1区结束时恢复2区进二区时删除1区地图以此类推
@ -652,7 +651,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}); });
}; };
}, },
"fiveLayers": function () { fiveLayers: function () {
// 是否启用五图层增加背景2层和前景2层 将__enable置为true即会启用启用后请保存后刷新编辑器 // 是否启用五图层增加背景2层和前景2层 将__enable置为true即会启用启用后请保存后刷新编辑器
// 背景层2将会覆盖背景层 被事件层覆盖 前景层2将会覆盖前景层 // 背景层2将会覆盖背景层 被事件层覆盖 前景层2将会覆盖前景层
// 另外 请注意加入两个新图层 会让大地图的性能降低一些 // 另外 请注意加入两个新图层 会让大地图的性能降低一些
@ -854,7 +853,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}; };
}; };
}, },
"itemShop": function () { itemShop: function () {
// 道具商店相关的插件 // 道具商店相关的插件
// 可在全塔属性-全局商店中使用「道具商店」事件块进行编辑(如果找不到可以在入口方块中找) // 可在全塔属性-全局商店中使用「道具商店」事件块进行编辑(如果找不到可以在入口方块中找)
@ -1256,7 +1255,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
]); ]);
}; };
}, },
"enemyLevel": function () { enemyLevel: function () {
// 此插件将提供怪物手册中的怪物境界显示 // 此插件将提供怪物手册中的怪物境界显示
// 使用此插件需要先给每个怪物定义境界,方法如下: // 使用此插件需要先给每个怪物定义境界,方法如下:
// 点击怪物的【配置表格】,找到“【怪物】相关的表格配置”,然后在【名称】仿照增加境界定义: // 点击怪物的【配置表格】,找到“【怪物】相关的表格配置”,然后在【名称】仿照增加境界定义:
@ -1424,7 +1423,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
); );
}; };
}, },
"multiHeros": function () { multiHeros: function () {
// 多角色插件 // 多角色插件
// Step 1: 启用本插件 // Step 1: 启用本插件
// Step 2: 定义每个新的角色各项初始数据(参见下方注释) // Step 2: 定义每个新的角色各项初始数据(参见下方注释)
@ -1578,7 +1577,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.setFlag("heroId", toHeroId); // 保存切换到的角色ID core.setFlag("heroId", toHeroId); // 保存切换到的角色ID
}; };
}, },
"heroFourFrames": function () { heroFourFrames: function () {
// 样板的勇士/跟随者移动时只使用2、4两帧观感较差。本插件可以将四帧全用上。 // 样板的勇士/跟随者移动时只使用2、4两帧观感较差。本插件可以将四帧全用上。
// 是否启用本插件 // 是否启用本插件
@ -1641,7 +1640,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
return false; return false;
}; };
}, },
"routeFixing": function () { routeFixing: function () {
// 是否开启本插件true 表示启用false 表示禁用。 // 是否开启本插件true 表示启用false 表示禁用。
var __enable = true; var __enable = true;
if (!__enable) return; if (!__enable) return;
@ -1765,7 +1764,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
100 100
); );
}, },
"numpad": function () { numpad: function () {
// 样板自带的整数输入事件为白屏弹窗且可以误输入任意非法内容但不支持负整数观感较差。本插件可以将其美化成仿RM样式使其支持负整数同时带有音效 // 样板自带的整数输入事件为白屏弹窗且可以误输入任意非法内容但不支持负整数观感较差。本插件可以将其美化成仿RM样式使其支持负整数同时带有音效
// 另一方面4399等第三方平台不允许使用包括 core.myprompt() 和 core.myconfirm() 在内的弹窗,因此也需要此插件来替代,不然类似生命魔杖的道具就不好实现了 // 另一方面4399等第三方平台不允许使用包括 core.myprompt() 和 core.myconfirm() 在内的弹窗,因此也需要此插件来替代,不然类似生命魔杖的道具就不好实现了
// 关于负整数输入V2.8.2原生支持其录像的压缩和解压,只是默认的 core.events._action_input() 函数将负数取了绝对值,可以只复写下面的 core.isReplaying() 部分来取消 // 关于负整数输入V2.8.2原生支持其录像的压缩和解压,只是默认的 core.events._action_input() 函数将负数取了绝对值,可以只复写下面的 core.isReplaying() 部分来取消
@ -2022,7 +2021,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"sprites": function () { sprites: function () {
// 基于canvas的sprite化摘编整理自万宁魔塔 // 基于canvas的sprite化摘编整理自万宁魔塔
// //
// ---------------------------------------- 第一部分 js代码 (必装) --------------------------------------- // // ---------------------------------------- 第一部分 js代码 (必装) --------------------------------------- //
@ -2226,7 +2225,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
window.Sprite = Sprite; window.Sprite = Sprite;
}, },
"hotReload": function () { hotReload: function () {
/* ---------- ---------- * /* ---------- ---------- *
1. libs/ main.js index.html 中的任意一个文件被更改后会自动刷新塔的页面 1. libs/ main.js index.html 中的任意一个文件被更改后会自动刷新塔的页面
@ -2483,7 +2482,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
})(); })();
}, },
"statusBar": function () { statusBar: function () {
main.dom.floorMsgGroup.style.display = "none"; main.dom.floorMsgGroup.style.display = "none";
main.dom.statusBar.style.display = "none"; main.dom.statusBar.style.display = "none";
main.dom.toolBar.style.display = "none"; main.dom.toolBar.style.display = "none";
@ -3688,7 +3687,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}; };
// init() called in `afterLoadResources`. // init() called in `afterLoadResources`.
}, },
"override": function () { override: function () {
core.statusBar.icons = { core.statusBar.icons = {
floor: 0, floor: 0,
name: null, name: null,
@ -4038,7 +4037,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
ctx.fillText(text, x, y); ctx.fillText(text, x, y);
}; };
}, },
"额外信息": function () { 额外信息: function () {
/* /*
* 注意不要在道具属性中直接操作flags使用core.status.hero.flags或core.setFlag系列函数代替 * 注意不要在道具属性中直接操作flags使用core.status.hero.flags或core.setFlag系列函数代替
* 需要将 变量itemDetail改为true才可正常运行 * 需要将 变量itemDetail改为true才可正常运行
@ -4195,7 +4194,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
} }
}, },
"编辑器显伤": function () { 编辑器显伤: function () {
// 在此增加新插件 // 在此增加新插件
/////// 用户设置 /////// /////// 用户设置 ///////
// 将__enable置为false将关闭插件 // 将__enable置为false将关闭插件
@ -4469,7 +4468,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"手册区分特殊属性": function () { 手册区分特殊属性: function () {
// 在此增加新插件 // 在此增加新插件
this.arrsame = function (Arraya, Arrayb) { this.arrsame = function (Arraya, Arrayb) {
let a = Arraya || []; let a = Arraya || [];
@ -4821,7 +4820,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
return [enemy, texts]; return [enemy, texts];
}; };
}, },
"一防减伤": function () { 一防减伤: function () {
// 在此增加新插件 // 在此增加新插件
ui.prototype._drawBook_drawRow3 = function ( ui.prototype._drawBook_drawRow3 = function (
index, index,
@ -6332,7 +6331,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.registerReplayAction("equip", core.control._replayAction_equip); core.registerReplayAction("equip", core.control._replayAction_equip);
core.registerReplayAction("unEquip", core.control._replayAction_unEquip); core.registerReplayAction("unEquip", core.control._replayAction_unEquip);
}, },
"技能树": function () { 技能树: function () {
// 在此增加新插件 // 在此增加新插件
// //
// 已学习的技能等级 flags._hasSkill_ // 已学习的技能等级 flags._hasSkill_
@ -7134,7 +7133,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}; };
core.registerReplayAction("skill", control.prototype._replayAction_skill); core.registerReplayAction("skill", control.prototype._replayAction_skill);
}, },
"animate": function () { animate: function () {
// -------------------- 插件说明 -------------------- // // -------------------- 插件说明 -------------------- //
// github仓库https://github.com/unanmed/animate // github仓库https://github.com/unanmed/animate
@ -8008,7 +8007,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
inverseTrigo: N, inverseTrigo: N,
}; };
}, },
"func": function () { func: function () {
// 功能函数集,具体有哪些函数看每个函数前的注释即可 // 功能函数集,具体有哪些函数看每个函数前的注释即可
// 安装方式:直接复制到插件里面,注意新建插件自带的 function () { } 不能删 // 安装方式:直接复制到插件里面,注意新建插件自带的 function () { } 不能删
// 使用方式:可以直接使用对象解构按需引入 // 使用方式:可以直接使用对象解构按需引入
@ -8448,7 +8447,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"音频系统": function () { 音频系统: function () {
// 在此增加新插件 // 在此增加新插件
/* libs/thirdparty index.html /* libs/thirdparty index.html
@ -8912,7 +8911,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
const type = checkAudioType(data); const type = checkAudioType(data);
if (type === "") { if (type === "") {
console.error( console.error(
"Unknown audio type. Header: '" + [...toCheck] "Unknown audio type. Header: '" +
[...toCheck]
.map((v) => v.toString().padStart(2, "0")) .map((v) => v.toString().padStart(2, "0"))
.join(" ") .join(" ")
.toUpperCase() + .toUpperCase() +
@ -9097,7 +9097,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
this.audioType = checkAudioType(data); this.audioType = checkAudioType(data);
if (!this.audioType) { if (!this.audioType) {
console.error( console.error(
"Unknown audio type. Header: '" + [...toCheck] "Unknown audio type. Header: '" +
[...toCheck]
.map((v) => v.toString(16).padStart(2, "0")) .map((v) => v.toString(16).padStart(2, "0"))
.join(" ") .join(" ")
.toUpperCase() + .toUpperCase() +
@ -10547,8 +10548,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.playSound("确定"); core.playSound("确定");
core.ui._drawSwitchs_sounds(); core.ui._drawSwitchs_sounds();
}; };
}, },
"怪物碎裂特效": function () { 怪物碎裂特效: function () {
// 在此增加新插件 // 在此增加新插件
// -------------------- 安装说明 -------------------- // // -------------------- 安装说明 -------------------- //
// 先安装两个在插件简介中说明的前置插件 // 先安装两个在插件简介中说明的前置插件
@ -10793,7 +10794,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
applyFragWith, applyFragWith,
}; };
}, },
"自定义常用事件": function () { 自定义常用事件: function () {
// editorBlocklyconfigPlus.js // editorBlocklyconfigPlus.js
// 自訂常見事件模板插件 // 自訂常見事件模板插件
// 本插件引用了通用函數插件(Utility.js) // 本插件引用了通用函數插件(Utility.js)
@ -12082,7 +12083,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
.split("// end mark sfergsvae")[0]; .split("// end mark sfergsvae")[0];
} }
}, },
"夹击激光动画": function () { 夹击激光动画: function () {
function createCanvas(name, zIndex) { function createCanvas(name, zIndex) {
if (!name) return; if (!name) return;
var canvas = document.createElement("canvas"); var canvas = document.createElement("canvas");
@ -12313,7 +12314,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"瞬移轨迹": function () { 瞬移轨迹: function () {
// 在此增加新插件 // 在此增加新插件
function popMove() { function popMove() {
var ctx = core.getContextByName("popMove"); var ctx = core.getContextByName("popMove");
@ -12460,7 +12461,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.setAlpha("event2", alpha); core.setAlpha("event2", alpha);
}; };
}, },
"小地图": function () { 小地图: function () {
// 在此增加新插件 // 在此增加新插件
// ----- 不可自定义 杂七杂八的变量 // ----- 不可自定义 杂七杂八的变量
/** @type {{[x: string]: BFSResult}} */ /** @type {{[x: string]: BFSResult}} */
@ -12879,7 +12880,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"楼传": function () { 楼传: function () {
// 在此增加新插件 // 在此增加新插件
core.canMoveFloor = function () { core.canMoveFloor = function () {
@ -13987,7 +13988,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
0 0
); );
}, },
"CG回廊": function () { CG回廊: function () {
// 在此增加新插件 // 在此增加新插件
const CGUI = document.createElement("canvas"); //CGui画布设置 const CGUI = document.createElement("canvas"); //CGui画布设置
CGUI.style.position = "absolute"; CGUI.style.position = "absolute";
@ -14490,7 +14491,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
main.core.ui.CG.update(); main.core.ui.CG.update();
}; };
}, },
"光标设置": function () { 光标设置: function () {
// 在此增加新插件 // 在此增加新插件
this.changeMouse = function ( this.changeMouse = function (
icon, icon,
@ -14527,7 +14528,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
core.dom[div].style.cursor = "auto"; core.dom[div].style.cursor = "auto";
}; };
}, },
"信息弹出": function () { 信息弹出: function () {
// 在此增加新插件 // 在此增加新插件
/* /*
* 使用方法core.addPop(px, py, value, color, boldColor, left, jump, time, show, font, speed) * 使用方法core.addPop(px, py, value, color, boldColor, left, jump, time, show, font, speed)
@ -14634,7 +14635,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
else core.status.pop.push(data); else core.status.pop.push(data);
}; };
}, },
"warning": function () { warning: function () {
// 在此增加新插件 // 在此增加新插件
// 默认音效名 // 默认音效名
var defaultSound = "jingbao.opus"; var defaultSound = "jingbao.opus";
@ -14697,7 +14698,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}, 1600); }, 1600);
}; };
}, },
"立体声音效": function () { 立体声音效: function () {
// 在此增加新插件 // 在此增加新插件
// 音效双声道播放 // 音效双声道播放
var can = true; var can = true;
@ -14801,7 +14802,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}, 10); }, 10);
}; };
}, },
"滑动转场": function () { 滑动转场: function () {
// 在此增加新插件 // 在此增加新插件
const defaultChange = { const defaultChange = {
left: "leftPortal", // 左箭头 left: "leftPortal", // 左箭头
@ -14991,7 +14992,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}, 25); }, 25);
}; };
}, },
"剧情cg": function () { 剧情cg: function () {
// 在此增加新插件 // 在此增加新插件
const cg = document.createElement("canvas"); //cg画布设置 const cg = document.createElement("canvas"); //cg画布设置
cg.style.position = "absolute"; cg.style.position = "absolute";
@ -15520,7 +15521,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
core.ui.cgText = new cgText(); core.ui.cgText = new cgText();
}, },
"旁白": function () { 旁白: function () {
// 在此增加新插件 // 在此增加新插件
const over = document.createElement("canvas"); //over画布设置 const over = document.createElement("canvas"); //over画布设置
over.style.position = "absolute"; over.style.position = "absolute";
@ -16010,7 +16011,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"回合制boss战": function () { 回合制boss战: function () {
// 在此增加新插件 // 在此增加新插件
const boss = document.createElement("canvas"); //boss战画布设置 const boss = document.createElement("canvas"); //boss战画布设置
boss.style.position = "absolute"; boss.style.position = "absolute";
@ -16058,7 +16059,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
core.ui.boss = new boss1(); core.ui.boss = new boss1();
}, },
"剧情视频引用": function () { 剧情视频引用: function () {
// 在此增加新插件 // 在此增加新插件
let a; let a;
let bgm; let bgm;
@ -16364,7 +16365,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
); );
}; };
}, },
"musicMode": function () { musicMode: function () {
// 在此增加新插件 // 在此增加新插件
const music = document.createElement("canvas"); const music = document.createElement("canvas");
music.style.position = "absolute"; music.style.position = "absolute";
@ -16497,10 +16498,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
[x + w, y + h], [x + w, y + h],
]; ];
}; };
const inRect = ([x, y], [ const inRect = ([x, y], [[sx, sy], [dx, dy]]) => {
[sx, sy],
[dx, dy]
]) => {
return sx <= x && x <= dx && sy <= y && y <= dy; return sx <= x && x <= dx && sy <= y && y <= dy;
}; };
const pos = [px, py]; const pos = [px, py];
@ -16996,9 +16994,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
text, text,
150, 150,
posy - 30, posy - 30,
page === this.selection[0] && i === this.selection[1] ? page === this.selection[0] && i === this.selection[1]
"#FFFFFF" : ? "#FFFFFF"
"#444444", : "#444444",
"#000000", "#000000",
6, 6,
core.ui._buildFont(66, true) core.ui._buildFont(66, true)
@ -17146,9 +17144,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
text, text,
950, 950,
posy - 30, posy - 30,
page === this.selection[0] && i === this.selection[1] ? page === this.selection[0] && i === this.selection[1]
"#FFFFFF" : ? "#FFFFFF"
"#444444", : "#444444",
"#000000", "#000000",
6, 6,
core.ui._buildFont(66, true) core.ui._buildFont(66, true)
@ -17299,8 +17297,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}); });
}; };
}, },
"横屏切换": function () { 横屏切换: function () {
// 在此增加新插件 // 在此增加新插件
this.triggerFullscreen = async function (full) { this.triggerFullscreen = async function (full) {
if (!!document.fullscreenElement && !full) { if (!!document.fullscreenElement && !full) {
@ -17338,7 +17336,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
} }
}; };
}, },
"图片压缩webp导出": function () { 图片压缩webp导出: function () {
// 在此增加新插件 // 在此增加新插件
//使用方法进入游戏后开始游戏F12打开控制台输入core.towebp(image),image为已在全塔属性中注册过的图片名字需要""括起来 //使用方法进入游戏后开始游戏F12打开控制台输入core.towebp(image),image为已在全塔属性中注册过的图片名字需要""括起来
this.towebp = function (image) { this.towebp = function (image) {
@ -17564,5 +17562,5 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
}); });
} }
}); });
} },
} };