修复楼传bug

This commit is contained in:
unanmed 2023-01-01 22:53:22 +08:00
parent ece4cf74c5
commit e275669489
5 changed files with 7 additions and 219 deletions

View File

@ -384,9 +384,6 @@ actions.prototype._sys_keyDown_lockControl = function (keyCode) {
case 'action':
this._keyDownAction(keyCode);
break;
case 'fly':
this._keyDownFly(keyCode);
break;
case 'viewMaps':
this._keyDownViewMaps(keyCode);
break;
@ -477,9 +474,6 @@ actions.prototype._sys_keyUp_lockControl = function (keyCode, altKey) {
case 'help':
ok() && core.closePanel();
break;
case 'fly':
this._keyUpFly(keyCode);
break;
case 'viewMaps':
this._keyUpViewMaps(keyCode);
break;
@ -568,9 +562,6 @@ actions.prototype._sys_ondown_lockControl = function (x, y, px, py) {
case 'centerFly':
this._clickCenterFly(x, y, px, py);
break;
case 'fly':
this._clickFly(x, y, px, py);
break;
case 'viewMaps':
this._clickViewMaps(x, y, px, py);
break;
@ -918,13 +909,6 @@ actions.prototype._sys_onmousewheel = function (direct) {
return;
}
// 楼层飞行器
if (core.status.lockControl && core.status.event.id == 'fly') {
if (direct == 1) core.ui.drawFly(this._getNextFlyFloor(1));
if (direct == -1) core.ui.drawFly(this._getNextFlyFloor(-1));
return;
}
// 存读档
if (
core.status.lockControl &&
@ -1031,16 +1015,6 @@ actions.prototype._sys_longClick_lockControl = function (x, y, px, py) {
core.doAction();
return true;
}
// 长按楼传器的箭头可以快速翻页
if (core.status.event.id == 'fly') {
if (
(x == core._WIDTH_ - 2 || x == core._WIDTH_ - 3) &&
(y == this._HY_ - 1 || y == this._HY_ + 3)
) {
this._clickFly(x, y);
return true;
}
}
// 长按SL上下页快速翻页
if (
['save', 'load', 'replayLoad', 'replayRemain', 'replaySince'].indexOf(
@ -1467,96 +1441,6 @@ actions.prototype._keyUpAction = function (keycode) {
}
};
////// 楼层传送器界面时的点击操作 //////
actions.prototype._clickFly = function (x, y) {
if (
(x == core._WIDTH_ - 2 || x == core._WIDTH_ - 3) &&
y == this._HY_ + 3
) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(-1));
}
if (
(x == core._WIDTH_ - 2 || x == core._WIDTH_ - 3) &&
y == this._HY_ - 1
) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(1));
}
if (
(x == core._WIDTH_ - 2 || x == core._WIDTH_ - 3) &&
y == this._HY_ + 4
) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(-10));
}
if (
(x == core._WIDTH_ - 2 || x == core._WIDTH_ - 3) &&
y == this._HY_ - 2
) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(10));
}
if (x >= this._HX_ - 1 && x <= this._HX_ + 1 && y === core._HEIGHT_ - 1) {
core.playSound('取消');
core.ui.closePanel();
}
if (x >= 0 && x <= this._HX_ + 3 && y >= 3 && y <= core._HEIGHT_ - 1 - 1)
core.flyTo(core.floorIds[core.status.event.data]);
return;
};
////// 楼层传送器界面时,按下某个键的操作 //////
actions.prototype._keyDownFly = function (keycode) {
if (keycode == 37) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(-10));
} else if (keycode == 38) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(1));
} else if (keycode == 39) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(10));
} else if (keycode == 40) {
core.playSound('光标移动');
core.ui.drawFly(this._getNextFlyFloor(-1));
}
return;
};
actions.prototype._getNextFlyFloor = function (delta, index) {
if (index == null) index = core.status.event.data;
if (delta == 0) return index;
var sign = Math.sign(delta);
delta = Math.abs(delta);
var ans = index;
while (true) {
index += sign;
if (index < 0 || index >= core.floorIds.length) break;
var floorId = core.floorIds[index];
if (
core.status.maps[floorId].canFlyTo &&
core.hasVisitedFloor(floorId)
) {
delta--;
ans = index;
}
if (delta == 0) break;
}
return ans;
};
////// 楼层传送器界面时,放开某个键的操作 //////
actions.prototype._keyUpFly = function (keycode) {
if (keycode == 71 || keycode == 27 || keycode == 88) {
core.playSound('取消');
core.ui.closePanel();
}
if (keycode == 13 || keycode == 32 || keycode == 67)
this._clickFly(this._HX_ - 1, this._HY_ - 1);
return;
};
////// 查看地图界面时的点击操作 //////
actions.prototype._clickViewMaps = function (x, y, px, py) {
if (core.status.event.data == null) {

View File

@ -3242,102 +3242,7 @@ ui.prototype._drawCursor = function () {
ui.prototype.drawBook = function (index) {};
////// 绘制楼层传送器 //////
ui.prototype.drawFly = function (page) {
core.status.event.data = page;
var floorId = core.floorIds[page];
var title = core.status.maps[floorId].title;
core.clearMap('ui');
core.setAlpha('ui', 0.85);
core.fillRect('ui', 0, 0, core._PX_, core._PY_, '#000000');
core.setAlpha('ui', 1);
core.setTextAlign('ui', 'center');
core.fillText(
'ui',
'楼层跳跃',
core._PX_ / 2,
48,
'#FFFFFF',
this._buildFont(28, true)
);
core.fillText(
'ui',
'返回游戏',
core._PX_ / 2,
core._PY_ - 13,
null,
this._buildFont(15, true)
);
core.setTextAlign('ui', 'right');
core.fillText(
'ui',
'浏览地图时也',
core._PX_ - 10,
core._PY_ - 23,
'#aaaaaa',
this._buildFont(10, false)
);
core.fillText(
'ui',
'可楼层跳跃!',
core._PX_ - 10,
core._PY_ - 11,
null,
this._buildFont(10, false)
);
core.setTextAlign('ui', 'center');
var middle = core._PY_ / 2 + 39;
// 换行
var lines = core.splitLines('ui', title, 120, this._buildFont(19, true));
var start_y = middle - (lines.length - 1) * 11;
for (var i in lines) {
core.fillText('ui', lines[i], core._PX_ - 60, start_y, '#FFFFFF');
start_y += 22;
}
if (core.actions._getNextFlyFloor(1) != page) {
core.fillText(
'ui',
'▲',
core._PX_ - 60,
middle - 64,
null,
this._buildFont(17, false)
);
core.fillText('ui', '▲', core._PX_ - 60, middle - 96);
core.fillText('ui', '▲', core._PX_ - 60, middle - 96 - 7);
}
if (core.actions._getNextFlyFloor(-1) != page) {
core.fillText(
'ui',
'▼',
core._PX_ - 60,
middle + 64,
null,
this._buildFont(17, false)
);
core.fillText('ui', '▼', core._PX_ - 60, middle + 96);
core.fillText('ui', '▼', core._PX_ - 60, middle + 96 + 7);
}
var size = 0.75;
core.strokeRect(
'ui',
16,
64,
size * core._PX_,
size * core._PY_,
'#FFFFFF',
2
);
core.drawThumbnail(floorId, null, {
ctx: 'ui',
x: 16,
y: 64,
size: size,
damage: true,
all: true
});
};
ui.prototype.drawFly = function (page) {};
////// 绘制中心对称飞行器
ui.prototype._drawCenterFly = function () {

View File

@ -3387,7 +3387,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
core.addPop(
(x - core.bigmap.offsetX / 32) * 32 + 12,
(y - core.bigmap.offsetY / 32) * 32 + 20,
damage
-damage.toString()
);
core.status.hero.hp -= damage;
var text =

View File

@ -46,7 +46,7 @@ export function getSpecialHint(enemy: Enemy & DetailedEnemy) {
* @param enemy
*/
export function getDefDamage(
enemy: Enemy & DetailedEnemy,
enemy: DetailedEnemy,
addDef: number = 0,
addAtk: number = 0
) {
@ -59,7 +59,7 @@ export function getDefDamage(
const max = 100 - Math.floor(addDef / ratio);
for (let i = 0; i <= max; i++) {
const dam = core.getDamageInfo(enemy, {
const dam = core.getDamageInfo(enemy.id, {
def: core.status.hero.def + ratio * i + addDef,
atk: core.status.hero.atk + addAtk
});
@ -73,7 +73,6 @@ export function getDefDamage(
continue;
}
if (!has(dam)) continue;
if (dam.damage === origin) continue;
if (dam.damage === res.at(-1)?.[1]) continue;
last = dam.damage;
res.push([ratio * i + addDef, dam.damage]);
@ -91,7 +90,7 @@ export function getDefDamage(
* @param enemy
*/
export function getCriticalDamage(
enemy: Enemy & DetailedEnemy,
enemy: DetailedEnemy,
addAtk: number = 0,
addDef: number = 0
): [number, number][] {
@ -104,7 +103,7 @@ export function getCriticalDamage(
const max = 100 - Math.floor(addAtk / ratio);
for (let i = 0; i <= max; i++) {
const dam = core.getDamageInfo(enemy, {
const dam = core.getDamageInfo(enemy.id, {
atk: core.status.hero.atk + ratio * i + addAtk,
def: core.status.hero.def + addDef
});
@ -118,7 +117,6 @@ export function getCriticalDamage(
continue;
}
if (!has(dam)) continue;
if (dam.damage === origin) continue;
if (dam.damage === res.at(-1)?.[1]) continue;
last = dam.damage;
res.push([ratio * i + addAtk, dam.damage]);

View File

@ -553,6 +553,7 @@ onMounted(async () => {
v.addEventListener('click', e => (v as HTMLElement).blur());
});
locateMap(nowFloor.value);
draw();
useDrag(