四方向夹击判定
This commit is contained in:
parent
461caa933e
commit
a516d45189
@ -162,8 +162,8 @@ editor_datapanel_wrapper = function (editor) {
|
||||
printe('不合法的idnum');
|
||||
return;
|
||||
}
|
||||
if (!/^[0-9a-zA-Z_]+$/.test(id)) {
|
||||
printe('不合法的id,请使用字母、数字或下划线')
|
||||
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(id)) {
|
||||
printe('不合法的id,请使用字母、数字或下划线,且不能以数字开头');
|
||||
return;
|
||||
}
|
||||
editor.file.changeIdAndIdnum(id, idnum, editor_mode.info, function (err) {
|
||||
@ -193,8 +193,8 @@ editor_datapanel_wrapper = function (editor) {
|
||||
changeId.children[1].onclick = function () {
|
||||
var id = changeId.children[0].value;
|
||||
if (id) {
|
||||
if (!/^[0-9a-zA-Z_]+$/.test(id)) {
|
||||
printe('不合法的id,请使用字母、数字或下划线')
|
||||
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(id)) {
|
||||
printe('不合法的id,请使用字母、数字或下划线,且不能以数字开头')
|
||||
return;
|
||||
}
|
||||
editor.file.changeIdAndIdnum(id, null, editor_mode.info, function (err) {
|
||||
|
||||
@ -267,12 +267,14 @@ enemys.prototype.getDefDamage = function (enemy, k, x, y, floorId) {
|
||||
}
|
||||
|
||||
enemys.prototype.getEnemyInfo = function (enemy, hero, x, y, floorId) {
|
||||
if (enemy == null) return null;
|
||||
if (typeof enemy == 'string') enemy = core.material.enemys[enemy];
|
||||
return this.enemydata.getEnemyInfo(enemy, hero, x, y, floorId)
|
||||
}
|
||||
|
||||
////// 获得战斗伤害信息(实际伤害计算函数) //////
|
||||
enemys.prototype.getDamageInfo = function (enemy, hero, x, y, floorId) {
|
||||
if (enemy == null) return null;
|
||||
// 移动到了脚本编辑 - getDamageInfo中
|
||||
if (typeof enemy == 'string') enemy = core.material.enemys[enemy];
|
||||
return this.enemydata.getDamageInfo(enemy, hero, x, y, floorId);
|
||||
@ -284,6 +286,7 @@ enemys.prototype.getDamage = function (enemy, x, y, floorId) {
|
||||
}
|
||||
|
||||
enemys.prototype._getDamage = function (enemy, hero, x, y, floorId) {
|
||||
if (enemy == null) return null;
|
||||
if (typeof enemy == 'string') enemy = core.material.enemys[enemy];
|
||||
|
||||
var info = this.getDamageInfo(enemy, hero, x, y, floorId);
|
||||
|
||||
@ -1210,32 +1210,35 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
for (var y = 0; y < height; y++) {
|
||||
var loc = x + "," + y;
|
||||
// 夹击怪物的ID
|
||||
var enemyId = null;
|
||||
var enemyId1 = null, enemyId2 = null;
|
||||
// 检查左右夹击
|
||||
var leftBlock = blocks[(x - 1) + "," + y],
|
||||
rightBlock = blocks[(x + 1) + "," + y];
|
||||
if (leftBlock && rightBlock && leftBlock.id == rightBlock.id) {
|
||||
if (core.hasSpecial(leftBlock.event.id, 16))
|
||||
enemyId = leftBlock.event.id;
|
||||
enemyId1 = leftBlock.event.id;
|
||||
}
|
||||
// 检查上下夹击
|
||||
var topBlock = blocks[x + "," + (y - 1)],
|
||||
bottomBlock = blocks[x + "," + (y + 1)];
|
||||
if (topBlock && bottomBlock && topBlock.id == bottomBlock.id) {
|
||||
if (core.hasSpecial(topBlock.event.id, 16))
|
||||
enemyId = topBlock.event.id;
|
||||
enemyId2 = topBlock.event.id;
|
||||
}
|
||||
|
||||
if (enemyId != null) {
|
||||
if (enemyId1 != null || enemyId2 != null) {
|
||||
var leftHp = core.status.hero.hp - (damage[loc] || 0);
|
||||
if (leftHp > 1) {
|
||||
// 上整/下整
|
||||
var value = Math.floor((leftHp + (core.flags.betweenAttackCeil ? 1 : 0)) / 2);
|
||||
// 是否不超过怪物伤害值
|
||||
if (core.flags.betweenAttackMax) {
|
||||
var enemyDamage = core.getDamage(enemyId, x, y, floorId);
|
||||
if (enemyDamage != null && enemyDamage < value)
|
||||
value = enemyDamage;
|
||||
var enemyDamage1 = core.getDamage(enemyId1, x, y, floorId);
|
||||
if (enemyDamage1 != null && enemyDamage1 < value)
|
||||
value = enemyDamage1;
|
||||
var enemyDamage2 = core.getDamage(enemyId2, x, y, floorId);
|
||||
if (enemyDamage2 != null && enemyDamage2 < value)
|
||||
value = enemyDamage2;
|
||||
}
|
||||
if (value > 0) {
|
||||
damage[loc] = (damage[loc] || 0) + value;
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
(已完成!) 8. 系统设置菜单中“音量”和“步时”的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化
|
||||
(已完成!) 9. 建议给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些如新新2的QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支
|
||||
10. 建议给“转变图块”事件增加一个淡入时间参数,用于原本是空地或空气墙的情况,目前这种效果必须借助存在安全隐患的红点
|
||||
11. 建议修复勇士后退时跟随者的鬼畜行为,并推出一套能够对跟随者位置和朝向进行读写的API甚至事件,且允许这些信息被计入存档,以实现一些演出效果甚至游戏要素,如新新2用公主占位防冰块
|
||||
(已完成!) 11. 建议修复勇士后退时跟随者的鬼畜行为,并推出一套能够对跟随者位置和朝向进行读写的API甚至事件,且允许这些信息被计入存档,以实现一些演出效果甚至游戏要素,如新新2用公主占位防冰块
|
||||
(已完成!) 12. “设置怪物属性”事件的下拉框目前只支持一部分,另一部分只能通过手敲json再解析来得到,希望提供完整支持
|
||||
13. 建议给core.moveAction(callback)提供对应的事件,用于在事件中让勇士像事件外一样移动,从而正常触发跑毒和阻激夹域捕等
|
||||
14. core.openShop()和对应的事件,建议在用于公共事件时简单地退化为“插入公共事件”而不要打断当前事件,把决定权交给作者
|
||||
@ -28,13 +28,13 @@
|
||||
(已完成!) noPass->canPass改成选择框
|
||||
初始化&读档优化:不一次读取全部楼层并创建
|
||||
绿钥匙进状态栏
|
||||
图块ID不可全数字
|
||||
(已完成!) 图块ID不可全数字
|
||||
怪物详细信息富文本化
|
||||
(已完成!) for和forEach事件
|
||||
转向:顺时针/逆时针/反向
|
||||
事件转向
|
||||
(已完成!) 合并数值操作事件
|
||||
fromLoad,聚集问题
|
||||
(已完成!) fromLoad,聚集问题
|
||||
|
||||
|
||||
(不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“snipe”
|
||||
@ -59,12 +59,12 @@ fromLoad,聚集问题
|
||||
(不处理) 19. (来自群友)建议删除2连击和3连击
|
||||
(不处理) 20. (来自群友)建议优化怪物图块属性中value的结构(退化和攻防光环同理),君浪为此配置了一个独立的表格可供使用(基于在getEnemyInfo、getDamageInfo和afterBattle中各eval一串脚本)
|
||||
(不处理) 21. (来自群友)建议大幅缩减表格的长度,譬如把勾选项和单个数值类紧凑摆放
|
||||
(不处理) 22. betweenAttackMax在被四个怪同时夹击时(比如上下楼后或通过事件使勇士和其中一只怪重合了)目前是以上下方向的怪为准,建议在表格注释中予以强调,更合理的做法是在两种怪的战损中取max或min
|
||||
(已完成!) 22. betweenAttackMax在被四个怪同时夹击时(比如上下楼后或通过事件使勇士和其中一只怪重合了)目前是以上下方向的怪为准,建议在表格注释中予以强调,更合理的做法是在两种怪的战损中取max或min
|
||||
(不处理) 23. displayIdInBook属性不能用于夹击QAQ,同时建议给core.getBlockId()追加一个“如果是怪物,是否按displayIdInBook进行映射”的参数。此外此属性会导致core.hasEnemyLeft()在指定id时失真(不一定是坏事)
|
||||
(不处理) 24. core.hasEnemyLeft()不应该调用core.getCurrentEnemys(),因为后者是用于手册的,它为了按伤害升序排列而调用了core.getDamageInfo(),而core.getDamageInfo()又会调用core.getEnemyInfo(),但作者完全可能在core.getDamageInfo()或core.getEnemyInfo()中使用core.hasEnemyLeft()判断特定id的怪物是否存在从而实现一些类似光环的效果(如协同),这样就会造成死递归
|
||||
(不处理) 25. 建议新增一个类似“勇士转向”的事件指令————“图块转向”,用于NPC甚至怪物(比如基于索引/数字对4取余),毕竟用转变图块的话不够通用
|
||||
(已完成!) 26. “勇士转向”会导致跟随者聚集,这不利于演出,建议改成像core.turnHero()一样不聚集跟随者
|
||||
27. 勇士后退时跟随者很鬼畜,建议优化(每步聚集算是一种简陋的办法)
|
||||
(已完成!) 27. 勇士后退时跟随者很鬼畜,建议优化(每步聚集算是一种简陋的办法)
|
||||
(不处理) 28. 勇士的移动帧只有2,建议改为允许作者指定
|
||||
(不处理) 29. 建议加一对“勇士开始抖动”和“勇士停止抖动”事件指令,来让勇士像图块一样原地抖动(即全局动画)。目前这个效果还只能通过隐藏勇士(或切换透明行走图)并转变图块/图层块来实现且只能用于事件处理中QAQ
|
||||
30. 建议加一个“视角锁定”事件指令,从而允许用事件改变勇士位置、朝向或行走图时不会使视角重置到以其为中心,用于一些演出效果
|
||||
@ -116,7 +116,7 @@ fromLoad,聚集问题
|
||||
(已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式
|
||||
(已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显
|
||||
76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件
|
||||
(不处理) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符)
|
||||
(已完成!增加正则匹配) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符)
|
||||
(已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改
|
||||
(不处理;有跟随情况下处理很麻烦) 79. 建议给core.drawHero()添加纵横两个偏移参数(目前只有一个),以用于做一些斜向移动的演出
|
||||
(文档都给秋橙) 80. 在线文档中“系统使用的flag变量”不够完整,建议加以补充
|
||||
|
||||
Loading…
Reference in New Issue
Block a user