From 7a42a0d9b9742f991aca5c38e1117a886983d799 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 11 Jan 2023 11:06:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=9E=8D=E5=8C=96=E5=B1=9E=E6=80=A7=EF=BC=8C?= =?UTF-8?q?=E5=AE=9A=E7=82=B9=E6=9F=A5=E7=9C=8B=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/_server/table/comment.js | 6 + public/libs/maps.js | 5 + public/project/enemys.js | 14 +- public/project/floors/MT36.js | 2 +- public/project/functions.js | 242 +++++++++++++++------------- public/project/icons.js | 12 +- public/project/maps.js | 10 ++ public/project/materials/enemys.png | Bin 147844 -> 162415 bytes public/project/plugins.js | 6 + src/data/settings.json | 5 +- src/panel/enemyCritical.vue | 1 + src/plugin/settings.ts | 1 + src/plugin/ui/fixed.ts | 3 + src/source/cls.d.ts | 10 ++ src/source/maps.d.ts | 20 +++ src/types/plugin.d.ts | 6 + 16 files changed, 224 insertions(+), 119 deletions(-) diff --git a/public/_server/table/comment.js b/public/_server/table/comment.js index 12b6744..a2b804e 100644 --- a/public/_server/table/comment.js +++ b/public/_server/table/comment.js @@ -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", diff --git a/public/libs/maps.js b/public/libs/maps.js index 6e1e8a8..f45173b 100644 --- a/public/libs/maps.js +++ b/public/libs/maps.js @@ -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; diff --git a/public/project/enemys.js b/public/project/enemys.js index 6358c71..1e15db7 100644 --- a/public/project/enemys.js +++ b/public/project/enemys.js @@ -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":[]} } \ No newline at end of file diff --git a/public/project/floors/MT36.js b/public/project/floors/MT36.js index 3a42368..e7e237f 100644 --- a/public/project/floors/MT36.js +++ b/public/project/floors/MT36.js @@ -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], diff --git a/public/project/functions.js b/public/project/functions.js index 91004e5..dedd1d0 100644 --- a/public/project/functions.js +++ b/public/project/functions.js @@ -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,96 +806,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { var guards = []; - // 光环和支援检查 - if (!core.status.checkBlock) core.status.checkBlock = {}; - - if (core.status.checkBlock.needCache) { - // 从V2.5.4开始,对光环效果增加缓存,以解决多次重复计算的问题,从而大幅提升运行效率。 - var hp_buff = 0, - atk_buff = 0, - def_buff = 0; - // 检查光环和支援的缓存 - var index = - x != null && y != null ? x + ',' + y : 'floor' + enemy.id; - core.status.checkBlock.cache ??= {}; - var cache = core.status.checkBlock.cache[index]; - if (!cache) { - // 没有该点的缓存,则遍历每个图块 - core.extractBlocks(floorId); - core.status.maps[floorId].blocks.forEach(function (block) { - if (block.disable) return; - // 获得该图块的ID - var id = block.event.id, - e = core.material.enemys[id]; - var dx = Math.abs(block.x - x), - dy = Math.abs(block.y - y); - // 检查【支援】技能,数字26 - if ( - e && - core.hasSpecial(e.special, 26) && - // 检查支援条件,坐标存在,距离为1,且不能是自己 - // 其他类型的支援怪,比如十字之类的话.... 看着做是一样的 - x != null && - y != null && - Math.abs(block.x - x) <= 1 && - Math.abs(block.y - y) <= 1 && - !(x == block.x && y == block.y) - ) { - // 记录怪物的x,y,ID - guards.push([block.x, block.y, id]); - } - - // 抱团 - if ( - e && - core.hasSpecial(mon_special, 8) && - core.hasSpecial(e.special, 8) && - !(dx == 0 && dy == 0) && - dx < 3 && - dy < 3 - ) { - atk_buff += enemy.together || 0; - def_buff += enemy.together || 0; - } - - // 冰封光环 - if ( - e && - core.hasSpecial(e.special, 21) && - x != null && - y != null && - dx < 4 && - dy < 4 - ) { - iceDecline += e.iceHalo; - } - - // TODO:如果有其他类型光环怪物在这里仿照添加检查 - // 注:新增新的类光环属性(需要遍历全图的)需要在特殊属性定义那里的第五项写1,参见光环和支援的特殊属性定义。 - }); - core.status.checkBlock.cache[index] = { - hp_buff: hp_buff, - atk_buff: atk_buff, - def_buff: def_buff, - guards: guards, - iceHalo: iceDecline - }; - } else { - // 直接使用缓存数据 - hp_buff = cache.hp_buff; - atk_buff = cache.atk_buff; - def_buff = cache.def_buff; - guards = cache.guards; - iceDecline = cache.iceHalo; - } - - // 增加比例;如果要增加数值可以直接在这里修改 - mon_hp *= 1 + hp_buff / 100; - mon_atk *= 1 + atk_buff / 100; - mon_def *= 1 + def_buff / 100; - } - - return { + const info = { hp: Math.floor(mon_hp), atk: Math.floor(mon_atk), def: Math.floor(mon_def), @@ -910,6 +817,114 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { guards: guards, // 返回支援情况 iceDecline }; + + // 光环和支援检查 + core.status.checkBlock ??= {}; + + if (!core.status.checkBlock.needCache) return info; + + var hp_buff = 0, + atk_buff = 0, + def_buff = 0; + // 检查光环和支援的缓存 + var index = + x != null && y != null ? x + ',' + y : 'floor' + enemy.id; + core.status.checkBlock.cache ??= {}; + var cache = core.status.checkBlock.cache[index]; + if (!cache) { + // 没有该点的缓存,则遍历每个图块 + core.extractBlocks(floorId); + core.status.maps[floorId].blocks.forEach(function (block) { + if (block.disable) return; + // 获得该图块的ID + var id = block.event.id, + e = core.material.enemys[id]; + var dx = Math.abs(block.x - x), + dy = Math.abs(block.y - y); + // 检查【支援】技能,数字26 + if ( + e && + core.hasSpecial(e.special, 26) && + // 检查支援条件,坐标存在,距离为1,且不能是自己 + // 其他类型的支援怪,比如十字之类的话.... 看着做是一样的 + x != null && + y != null && + Math.abs(block.x - x) <= 1 && + Math.abs(block.y - y) <= 1 && + !(x == block.x && y == block.y) + ) { + // 记录怪物的x,y,ID + guards.push([block.x, block.y, id]); + } + + // 抱团 + if ( + e && + core.hasSpecial(mon_special, 8) && + core.hasSpecial(e.special, 8) && + !(dx == 0 && dy == 0) && + dx < 3 && + dy < 3 + ) { + atk_buff += enemy.together || 0; + def_buff += enemy.together || 0; + } + + // 冰封光环 + if ( + e && + core.hasSpecial(e.special, 21) && + x != null && + y != null && + dx < 4 && + dy < 4 + ) { + iceDecline += e.iceHalo; + } + + // 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, + def_buff: def_buff, + guards: guards, + iceHalo: iceDecline + }; + } else { + // 直接使用缓存数据 + hp_buff = cache.hp_buff; + atk_buff = cache.atk_buff; + def_buff = cache.def_buff; + guards = cache.guards; + iceDecline = cache.iceHalo; + } + + // 增加比例;如果要增加数值可以直接在这里修改 + mon_hp *= 1 + hp_buff / 100; + mon_atk *= 1 + atk_buff / 100; + mon_def *= 1 + def_buff / 100; + + 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, diff --git a/public/project/icons.js b/public/project/icons.js index 24bb91b..ac9e464 100644 --- a/public/project/icons.js +++ b/public/project/icons.js @@ -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, diff --git a/public/project/maps.js b/public/project/maps.js index 4c7da55..af03f38 100644 --- a/public/project/maps.js +++ b/public/project/maps.js @@ -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"]}, diff --git a/public/project/materials/enemys.png b/public/project/materials/enemys.png index 7a51db6dfc530e4ed20b81a8947b2f11350d975d..f96992fdfd52526a2f51b66801e04078b431084f 100644 GIT binary patch delta 16649 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 Teo_v2-T{NBtDnm{r-UW|8O3_w delta 1964 zcmV;d2UGa(^a+H636K^G5}*hM0000?Z0EayA%!6UwIKrKIe)dRwvh$V9-(nyz9%q) zG1}miC0A9X>0YLx7%a?05dd{{eLIaovSliRFsBQtk=v(LE^cwwpR(LGIIs)LP z0G(&P!%)2N8Gi;q`B;RuN05;HRO@RVtpBfer$ols6Yxnb` zM+E@tQyoP&l!I=XZ-4fb`rRO{O0Wj^VZgiBue-DJ^R@h>aWL4*V_u>z@MQyl>y+& z4|~e}Cr`TBYtyT75z8I$Ah`}d~|j7Un_t1%niWu^XG0z0UAK%prg{XA7lnfLTITS zf~E%+(~Ghc09$ZbPap^ELht4fV`XdFLN?awR_DqE!=uYQaulV5T$O` zd3}toJuK;?a19_GilR2)fCOW8Yd~WFswYBO>ccpDaKYK0hBOXFzoQu1ahvl*DX{%1 z5C3h`fu};e4&6EcdEk`*csDQ{fq#~)%q`?=M^$==!giQB6t&LN2IjtXSZ$2dZ_Cr21FyfSS-p9Oe_|Q5NO%;EjwzmaGmz(zbPwXL)e+cVgcuiY)`2* zre9a~L_zaF=;c!Hnk+gf4iEmc_Nkr}0OC~HS2G~0Ji$~m(8U1%+00$m*Oe1Q?&D!9SWbClKHSo~3{(TtEY=01TG6>ZMi(LZ{ zNvDhrqixVKAZtKmeTy9#XJk^uLz1$n`aBW>KtYH&M57~XBdM{8yy%`V0A9Y;jE_8q zMjSVVbSIDFDFB2C&3)dpdDdZXeMW9{Z5n`WIC4lbCIAj88vC$iV!%F7KO~(K0}d$~ z`>ClPSKFt0QUF*ZY6i57 z&eB|EseXICbEXQXT=L=4e#E$D9-Zo__%p>H%P{jTtbO`<^`P z0d?`0C;2V4{cPpd0x_BbH2^XOY|4U~?&4hS=K}b10tSJt1CTLbCjdn9N7if~fP?`P z0H%FKv1_J4R7k&WVn8Jb8y7*_^1K$P?QxS~sKtPc{#GX%1pu3C!wB!;T}RR%F$bu= zmj1Ced}jb`Du1@XN~UdDzKOid9aD#I0001HNkl0 diff --git a/public/project/plugins.js b/public/project/plugins.js index 01c3b04..c45a92e 100644 --- a/public/project/plugins.js +++ b/public/project/plugins.js @@ -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; + }; } }; diff --git a/src/data/settings.json b/src/data/settings.json index 68a61b2..e45b501 100644 --- a/src/data/settings.json +++ b/src/data/settings.json @@ -56,10 +56,7 @@ "antiAliasing": { "text": "抗锯齿", "desc": [ - "是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感。", - "
", - "
", - "此项只对游戏画面起作用,对浏览地图和楼传均不起作用。" + "是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感,同时部分像素错误也不会出现。" ] }, "showStudied": { diff --git a/src/panel/enemyCritical.vue b/src/panel/enemyCritical.vue index eb300be..34445b1 100644 --- a/src/panel/enemyCritical.vue +++ b/src/panel/enemyCritical.vue @@ -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), diff --git a/src/plugin/settings.ts b/src/plugin/settings.ts index 4e778f8..8e734e4 100644 --- a/src/plugin/settings.ts +++ b/src/plugin/settings.ts @@ -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 { diff --git a/src/plugin/ui/fixed.ts b/src/plugin/ui/fixed.ts index 25e4ad7..2ff0a38 100644 --- a/src/plugin/ui/fixed.ts +++ b/src/plugin/ui/fixed.ts @@ -32,6 +32,9 @@ export default function init() { if (!e) return; show(ev); }); + data.addEventListener('mousedown', ev => { + showFixed.value = false; + }); return { showFixed diff --git a/src/source/cls.d.ts b/src/source/cls.d.ts index 0830efe..4e1ec20 100644 --- a/src/source/cls.d.ts +++ b/src/source/cls.d.ts @@ -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'; diff --git a/src/source/maps.d.ts b/src/source/maps.d.ts index 55fde03..7c75a2c 100644 --- a/src/source/maps.d.ts +++ b/src/source/maps.d.ts @@ -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'; diff --git a/src/types/plugin.d.ts b/src/types/plugin.d.ts index 05ade6c..9474b1e 100644 --- a/src/types/plugin.d.ts +++ b/src/types/plugin.d.ts @@ -134,6 +134,12 @@ interface PluginUtils { * @param dir 方向 */ backDir(dir: Dir): Dir; + + /** + * 判断一个值是否不是undefined和null + * @param value 要判断的值 + */ + has(value: T): value is NonNullable; } interface PluginUis {