融化属性,定点查看完善

This commit is contained in:
unanmed 2023-01-11 11:06:04 +08:00
parent eaa8644df6
commit 7a42a0d9b9
16 changed files with 224 additions and 119 deletions

View File

@ -261,6 +261,12 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_docs": "极昼",
"_data": "极昼"
},
"melt": {
"_leaf": true,
"_type": "textarea",
"_docs": "融化",
"_data": "融化"
},
"value": {
"_leaf": true,
"_type": "textarea",

View File

@ -2620,6 +2620,11 @@ maps.prototype._drawThumbnail_drawTempCanvas = function (
}
options.ctx = tempCanvas;
tempCanvas.imageSmoothingEnabled = core.getLocalStorage(
'antiAliasing',
true
);
// 地图过大的缩略图不绘制显伤
if (width * height > core.bigmap.threshold) options.damage = false;

View File

@ -149,8 +149,18 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 =
"E597": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E598": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E599": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E600": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E600": {"name":"寒冰巨石","hp":3000,"atk":2250,"def":0,"money":2,"exp":100,"point":0,"special":[3]},
"E601": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E602": {"name":"永夜蝙","hp":6000,"atk":2000,"def":800,"money":1,"exp":65,"point":0,"special":[22],"night":100},
"E603": {"name":"极昼蝠","hp":8000,"atk":1750,"def":1000,"money":1,"exp":65,"point":0,"special":[23],"day":100}
"E603": {"name":"极昼蝠","hp":8000,"atk":1750,"def":1000,"money":1,"exp":65,"point":0,"special":[23],"day":100},
"E605": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E606": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E607": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E608": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E609": {"name":"具形雪人","hp":7500,"atk":2250,"def":1000,"money":2,"exp":90,"point":0,"special":[25],"melt":15},
"E610": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E611": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E612": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E613": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]},
"E614": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}
}

View File

@ -45,7 +45,7 @@ main.floors.MT36=
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70176,70177,70177,70177,70177],
[604, 0, 0, 0, 0, 0, 0, 0, 0, 0,70184,70185,70185,70185, 94],
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70208,70209,70209,70209,70209],
[604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[604, 0, 0, 0, 0, 0,600, 0, 0, 0, 0, 0, 0, 0, 0],
[587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

View File

@ -393,6 +393,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
core.declineStudiedSkill();
}
// 如果是融化怪,需要特殊标记一下
if (core.hasSpecial(special, 25) && core.has(x) && core.has(y)) {
flags[`melt_${floorId}`] ??= {};
flags[`melt_${floorId}`][`${x},${y}`] = enemy.melt;
}
// 获得金币
const money = enemy.money;
core.status.hero.money += money;
@ -709,19 +715,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
],
[
25,
'光环',
function (enemy) {
return (
'同楼层所有怪物生命提升' +
(enemy.value || 0) +
'%,攻击提升' +
(enemy.atkValue || 0) +
'%,防御提升' +
(enemy.defValue || 0) +
'%' +
(enemy.add ? '可叠加' : '不可叠加')
);
},
'融化',
enemy =>
`战斗后该怪物会融化在怪物位置产生一个3*3的范围光环光环内怪物的攻防增加${enemy.melt}%`,
'#e6e099',
1
],
@ -810,11 +806,23 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
var guards = [];
// 光环和支援检查
if (!core.status.checkBlock) core.status.checkBlock = {};
const info = {
hp: Math.floor(mon_hp),
atk: Math.floor(mon_atk),
def: Math.floor(mon_def),
money: Math.floor(mon_money),
exp: Math.floor(mon_exp),
point: Math.floor(mon_point),
special: mon_special,
guards: guards, // 返回支援情况
iceDecline
};
// 光环和支援检查
core.status.checkBlock ??= {};
if (!core.status.checkBlock.needCache) return info;
if (core.status.checkBlock.needCache) {
// 从V2.5.4开始,对光环效果增加缓存,以解决多次重复计算的问题,从而大幅提升运行效率。
var hp_buff = 0,
atk_buff = 0,
def_buff = 0;
@ -877,6 +885,24 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// TODO如果有其他类型光环怪物在这里仿照添加检查
// 注新增新的类光环属性需要遍历全图的需要在特殊属性定义那里的第五项写1参见光环和支援的特殊属性定义。
});
// 融化怪要在这里判断
if (
core.has(flags[`melt_${floorId}`]) &&
core.has(x) &&
core.has(y)
) {
for (const [loc, per] of Object.entries(
flags[`melt_${floorId}`]
)) {
const [mx, my] = loc.split(',').map(v => parseInt(v));
if (Math.abs(mx - x) <= 1 && Math.abs(my - y) <= 1) {
atk_buff += per;
def_buff += per;
}
}
}
core.status.checkBlock.cache[index] = {
hp_buff: hp_buff,
atk_buff: atk_buff,
@ -897,19 +923,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
mon_hp *= 1 + hp_buff / 100;
mon_atk *= 1 + atk_buff / 100;
mon_def *= 1 + def_buff / 100;
}
return {
hp: Math.floor(mon_hp),
atk: Math.floor(mon_atk),
def: Math.floor(mon_def),
money: Math.floor(mon_money),
exp: Math.floor(mon_exp),
point: Math.floor(mon_point),
special: mon_special,
guards: guards, // 返回支援情况
iceDecline
};
return info;
},
getDamageInfo: function (enemy, hero, x, y, floorId) {
// 获得战斗伤害信息(实际伤害计算函数)
@ -925,14 +940,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
// 勇士位置应该在这里进行计算,四个位置依次遍历,去重
let toMap = [];
if (
x !== null &&
x !== void 0 &&
y !== null &&
y !== void 0 &&
(hero?.x === null || hero?.x === void 0) &&
(hero?.y === null || hero?.y === void 0) &&
floorId !== null &&
floorId !== void 0 &&
core.has(x) &&
core.has(y) &&
!(core.has(hero?.x) && core.has(hero?.y)) &&
core.has(floorId) &&
flags.autoLocate &&
flags.chapter >= 2
) {
@ -1741,6 +1752,15 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
}
}
// 融化怪
if (core.has(flags[`melt_${floorId}`])) {
Object.keys(flags[`melt_${floorId}`]).forEach(v => {
needCache = true;
halo[v] ??= [];
halo[v].push('square:3:#d9a8ff');
});
}
core.flags.canGoDeadZone = canGoDeadZone;
core.status.checkBlock = {
damage: damage,

View File

@ -367,7 +367,17 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
"E600": 145,
"E601": 146,
"E602": 147,
"E603": 148
"E603": 148,
"E605": 149,
"E606": 150,
"E607": 151,
"E608": 152,
"E609": 153,
"E610": 154,
"E611": 155,
"E612": 156,
"E613": 157,
"E614": 158
},
"enemy48": {
"angel": 0,

View File

@ -532,6 +532,16 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"602": {"cls":"enemys","id":"E602"},
"603": {"cls":"enemys","id":"E603"},
"604": {"cls":"terrains","id":"T604"},
"605": {"cls":"enemys","id":"E605"},
"606": {"cls":"enemys","id":"E606"},
"607": {"cls":"enemys","id":"E607"},
"608": {"cls":"enemys","id":"E608"},
"609": {"cls":"enemys","id":"E609"},
"610": {"cls":"enemys","id":"E610"},
"611": {"cls":"enemys","id":"E611"},
"612": {"cls":"enemys","id":"E612"},
"613": {"cls":"enemys","id":"E613"},
"614": {"cls":"enemys","id":"E614"},
"20037": {"cls":"tileset","id":"X20037","cannotOut":["up","left"],"cannotIn":["up","left"]},
"20038": {"cls":"tileset","id":"X20038","cannotOut":["up"],"cannotIn":["up"]},
"20039": {"cls":"tileset","id":"X20039","cannotOut":["up","right"],"cannotIn":["up","right"]},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 159 KiB

View File

@ -575,6 +575,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
delete flags[`jump_${floorId}`];
delete flags[`inte_${floorId}`];
delete flags[`loop_${floorId}`];
delete flags[`melt_${floorId}`];
delete flags[`night_${floorId}`];
}
// 恢复楼层
@ -4710,5 +4712,9 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = {
right: 'left'
}[dir];
};
this.has = function (v) {
return v !== null && v !== void 0;
};
}
};

View File

@ -56,10 +56,7 @@
"antiAliasing": {
"text": "抗锯齿",
"desc": [
"是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感。",
"<br>",
"<br>",
"此项只对游戏画面起作用,对浏览地图和楼传均不起作用。"
"是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感,同时部分像素错误也不会出现。"
]
},
"showStudied": {

View File

@ -144,6 +144,7 @@ const nowDamage = computed(() => {
});
function generateChart(ele: HTMLCanvasElement, data: [number, number][]) {
Chart.defaults.color = '#aaa';
const config: ChartConfiguration = {
type: 'line',
data: generateData(data),

View File

@ -86,6 +86,7 @@ watch(autoSkill, n => {
watch(antiAliasing, n => {
core.setLocalStorage('antiAliasing', n);
for (const canvas of core.dom.gameCanvas) {
if (core.domStyle.hdCanvas.includes(canvas.id)) continue;
if (n) {
canvas.classList.remove('no-anti-aliasing');
} else {

View File

@ -32,6 +32,9 @@ export default function init() {
if (!e) return;
show(ev);
});
data.addEventListener('mousedown', ev => {
showFixed.value = false;
});
return {
showFixed

10
src/source/cls.d.ts vendored
View File

@ -531,6 +531,16 @@ interface IdToCls {
E602: 'enemys';
E603: 'enemys';
T604: 'terrains';
E605: 'enemys';
E606: 'enemys';
E607: 'enemys';
E608: 'enemys';
E609: 'enemys';
E610: 'enemys';
E611: 'enemys';
E612: 'enemys';
E613: 'enemys';
E614: 'enemys';
X20037: 'tileset';
X20038: 'tileset';
X20039: 'tileset';

20
src/source/maps.d.ts vendored
View File

@ -531,6 +531,16 @@ interface IdToNumber {
E602: 602;
E603: 603;
T604: 604;
E605: 605;
E606: 606;
E607: 607;
E608: 608;
E609: 609;
E610: 610;
E611: 611;
E612: 612;
E613: 613;
E614: 614;
X20037: 20037;
X20038: 20038;
X20039: 20039;
@ -1116,6 +1126,16 @@ interface NumberToId {
602: 'E602';
603: 'E603';
604: 'T604';
605: 'E605';
606: 'E606';
607: 'E607';
608: 'E608';
609: 'E609';
610: 'E610';
611: 'E611';
612: 'E612';
613: 'E613';
614: 'E614';
20037: 'X20037';
20038: 'X20038';
20039: 'X20039';

View File

@ -134,6 +134,12 @@ interface PluginUtils {
* @param dir
*/
backDir(dir: Dir): Dir;
/**
* undefined和null
* @param value
*/
has<T>(value: T): value is NonNullable<T>;
}
interface PluginUis {