n[t].axis===e)).shift()}function createDatasetContext(t,e){return createContext(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function createDataContext(t,e,n){return createContext(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function clearStacks(t,e){const n=t.controller.index,a=t.vScale&&t.vScale.axis;if(a){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[a]||void 0===e[a][n])return;delete e[a][n],void 0!==e[a]._visualValues&&void 0!==e[a]._visualValues[n]&&delete e[a]._visualValues[n]}}}const isDirectUpdateMode=t=>"reset"===t||"none"===t,cloneIfNotShared=(t,e)=>e?t:Object.assign({},t),createStack=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:getSortedDatasetIndices(n,!0),values:null};class DatasetController{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=isStacked(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&clearStacks(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset(),a=(t,e,n,a)=>"x"===t?e:"r"===t?a:n,o=e.xAxisID=valueOrDefault(n.xAxisID,getFirstScaleId(t,"x")),i=e.yAxisID=valueOrDefault(n.yAxisID,getFirstScaleId(t,"y")),r=e.rAxisID=valueOrDefault(n.rAxisID,getFirstScaleId(t,"r")),l=e.indexAxis,s=e.iAxisID=a(l,o,i,r),c=e.vAxisID=a(l,i,o,r);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(i),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(s),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&unlistenArrayEvents(this._data,this),t._stacked&&clearStacks(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._data;if(isObject(e))this._data=convertObjectDataToArray(e);else if(n!==e){if(n){unlistenArrayEvents(n,this);const t=this._cachedMeta;clearStacks(t),t._parsed=[]}e&&Object.isExtensible(e)&&listenArrayEvents(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();let a=!1;this._dataCheck();const o=e._stacked;e._stacked=isStacked(e.vScale,e),e.stack!==n.stack&&(a=!0,clearStacks(e),e.stack=n.stack),this._resyncElements(t),(a||o!==e._stacked)&&updateStacks(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:n,_data:a}=this,{iScale:o,_stacked:i}=n,r=o.axis;let l,s,c,d=0===t&&e===a.length||n._sorted,p=t>0&&n._parsed[t-1];if(!1===this._parsing)n._parsed=a,n._sorted=!0,c=a;else{c=isArray(a[t])?this.parseArrayData(n,a,t,e):isObject(a[t])?this.parseObjectData(n,a,t,e):this.parsePrimitiveData(n,a,t,e);const o=()=>null===s[r]||p&&s[r]
e||d n[t].axis===e)).shift()}function createDatasetContext(t,e){return createContext(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function createDataContext(t,e,n){return createContext(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function clearStacks(t,e){const n=t.controller.index,a=t.vScale&&t.vScale.axis;if(a){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[a]||void 0===e[a][n])return;delete e[a][n],void 0!==e[a]._visualValues&&void 0!==e[a]._visualValues[n]&&delete e[a]._visualValues[n]}}}const isDirectUpdateMode=t=>"reset"===t||"none"===t,cloneIfNotShared=(t,e)=>e?t:Object.assign({},t),createStack=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:getSortedDatasetIndices(n,!0),values:null};class DatasetController{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=isStacked(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&clearStacks(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,n=this.getDataset(),a=(t,e,n,a)=>"x"===t?e:"r"===t?a:n,o=e.xAxisID=valueOrDefault(n.xAxisID,getFirstScaleId(t,"x")),i=e.yAxisID=valueOrDefault(n.yAxisID,getFirstScaleId(t,"y")),r=e.rAxisID=valueOrDefault(n.rAxisID,getFirstScaleId(t,"r")),l=e.indexAxis,s=e.iAxisID=a(l,o,i,r),c=e.vAxisID=a(l,i,o,r);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(i),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(s),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&unlistenArrayEvents(this._data,this),t._stacked&&clearStacks(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),n=this._data;if(isObject(e))this._data=convertObjectDataToArray(e);else if(n!==e){if(n){unlistenArrayEvents(n,this);const t=this._cachedMeta;clearStacks(t),t._parsed=[]}e&&Object.isExtensible(e)&&listenArrayEvents(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,n=this.getDataset();let a=!1;this._dataCheck();const o=e._stacked;e._stacked=isStacked(e.vScale,e),e.stack!==n.stack&&(a=!0,clearStacks(e),e.stack=n.stack),this._resyncElements(t),(a||o!==e._stacked)&&updateStacks(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:n,_data:a}=this,{iScale:o,_stacked:i}=n,r=o.axis;let l,s,c,d=0===t&&e===a.length||n._sorted,p=t>0&&n._parsed[t-1];if(!1===this._parsing)n._parsed=a,n._sorted=!0,c=a;else{c=isArray(a[t])?this.parseArrayData(n,a,t,e):isObject(a[t])?this.parseObjectData(n,a,t,e):this.parsePrimitiveData(n,a,t,e);const o=()=>null===s[r]||p&&s[r] e||d{t[r](e[n],o)&&(i.push({element:t,datasetIndex:a,index:s}),l=l||t.inRange(e.x,e.y,o))})),a&&!l?[]:i}var Interaction={evaluateInteractionItems:evaluateInteractionItems,modes:{index(t,e,n,a){const o=getRelativePosition(e,t),i=n.axis||"x",r=n.includeInvisible||!1,l=n.intersect?getIntersectItems(t,o,i,a,r):getNearestItems(t,o,i,!1,a,r),s=[];return l.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=l[0].index,n=t.data[e];n&&!n.skip&&s.push({element:n,datasetIndex:t.index,index:e})})),s):[]},dataset(t,e,n,a){const o=getRelativePosition(e,t),i=n.axis||"xy",r=n.includeInvisible||!1;let l=n.intersect?getIntersectItems(t,o,i,a,r):getNearestItems(t,o,i,!1,a,r);if(l.length>0){const e=l[0].datasetIndex,n=t.getDatasetMeta(e).data;l=[];for(let t=0;t(r+(c?l-t:t))%i,v=()=>{h!==m&&(t.lineTo(b,m),t.lineTo(b,h),t.lineTo(b,g))};for(s&&(p=o[x(0)],t.moveTo(p.x,p.y)),d=0;d<=l;++d){if(p=o[x(d)],p.skip)continue;const e=p.x,n=p.y,a=0|e;a===u?(n
","
","缩放原则如下:","
","1. 首先尝试缩放至最大缩放比例","
","2. 如果缩放后游戏画面高度高于页面高度的95%,那么缩小一个缩放比例,否则保持最大比例"]},showHalo={text:"展示范围光环",desc:["开启后,会在地图上显示范围光环。"]},useFixed={text:"移动鼠标显示怪物信息",desc:["开启后,当鼠标移动到怪物上时,会以盒子的形式展示该点的怪物信息。手机端此功能无效。","
","
","注:当鼠标移动到怪物上时,经过200毫秒才会显示信息,防止误操作。"]},autoLocate={text:"自动勇士定位",desc:["此项会在进入第二章后会起作用。开启后,当勇士处于不同位置打同一个怪物伤害不同时,在地图上使用绿色箭头标出伤害最低的位置,","其余方向,伤害越高,箭头颜色越红,同时在自动寻路中选择可以到达的伤害最低的位置。","
","
","注:如果出现明显卡顿现象可以考虑关闭本设置或自动切换技能设置。"]},antiAliasing={text:"抗锯齿",desc:["是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感,同时部分像素错误也不会出现。"]},showStudied={text:"展示已学习技能",desc:["开启后,会在画面内以类似状态栏的盒子的形式显示当前已学习的怪物技能。"]},settingInfo={transition:transition$1,itemDetail:itemDetail,autoSkill:autoSkill,autoScale:autoScale,showHalo:showHalo,useFixed:useFixed,autoLocate:autoLocate,antiAliasing:antiAliasing,showStudied:showStudied},_hoisted_1$f={class:"colomn"},_hoisted_2$c={class:"tools"},_hoisted_3$c=["id"],_sfc_main$f=defineComponent({__name:"colomn",props:{width:null,height:null,left:null,right:null},emits:["close"],setup(t,{emit:e}){const n=t,a=(1e8*Math.random()).toFixed(0);let o,i,r;function l(){o=document.getElementById(`column-${a}`),i=document.getElementById(`column-left-${a}`),r=document.getElementById(`column-right-${a}`),has(n.width)&&!isMobile&&(o.style.width=`${n.width}%`),has(n.height)&&(o.style.height=`${n.height}%`),has(n.left)&&(i.style.flexBasis=`${n.left}%`),has(n.right)&&(r.style.flexBasis=`${n.right}%`)}function s(t){const n=keycode(t.keyCode);n!==KeyCode.Escape&&n!==KeyCode.KeyX||e("close")}return onMounted((async()=>{l(),await S(50),core.plugin.transition.value&&await S(600),document.addEventListener("keyup",s)})),onUpdated(l),onUnmounted((()=>{document.removeEventListener("keyup",s)})),(t,n)=>{const o=__unplugin_components_0;return openBlock(),createElementBlock("div",_hoisted_1$f,[createBaseVNode("div",_hoisted_2$c,[createBaseVNode("span",{class:"button-text",onClick:n[0]||(n[0]=t=>e("close"))},[createVNode(unref(LeftOutlined)),createTextVNode(" 返回游戏")])]),createBaseVNode("div",{class:"column-main",id:`column-${unref(a)}`},[createVNode(Scroll,{class:"column-left",id:`column-left-${unref(a)}`},{default:withCtx((()=>[renderSlot(t.$slots,"left",{},void 0,!0)])),_:3},8,["id"]),createVNode(o,{class:"divider",dashed:"",style:{"border-color":"#ddd4"},type:unref(isMobile)?"horizontal":"vertical"},null,8,["type"]),createVNode(Scroll,{class:"column-right",id:`column-right-${unref(a)}`},{default:withCtx((()=>[renderSlot(t.$slots,"right",{},void 0,!0)])),_:3},8,["id"])],8,_hoisted_3$c)])}}}),colomn_vue_vue_type_style_index_0_scoped_682173f1_lang="",Column=_export_sfc(_sfc_main$f,[["__scopeId","data-v-682173f1"]]),_hoisted_1$e={id:"setting-list"},_hoisted_2$b=["selected"],_hoisted_3$b=["selected"],_hoisted_4$9=["selected"],_hoisted_5$7=["selected"],_hoisted_6$6=["selected"],_hoisted_7$6=["selected"],_hoisted_8$5=["selected"],_hoisted_9$5=["selected"],_hoisted_10$5=["selected"],_hoisted_11$5=["innerHTML"],_sfc_main$e=defineComponent({__name:"settings",setup(t){const e=window.core,n=ref("transition"),a=computed((()=>splitText(settingInfo[n.value].desc))),o={transition:transition$2,itemDetail:itemDetail$1,autoSkill:autoSkill$1,autoScale:autoScale$1,showHalo:showHalo$1,showStudied:showStudied$1,useFixed:useFixed$1,autoLocate:autoLocate$1,antiAliasing:antiAliasing$1};function i(){e.plugin.settingsOpened.value=!1}function r(t){n.value===t?o[t].value=!o[t].value:n.value=t}return(t,o)=>(openBlock(),createBlock(Column,{width:60,height:60,onClose:i},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$e,[createBaseVNode("span",{class:"selectable",selected:"transition"===n.value,onClick:o[0]||(o[0]=t=>r("transition"))},"界面动画: "+toDisplayString(unref(transition$2)?"ON":"OFF"),9,_hoisted_2$b),createBaseVNode("span",{class:"selectable",selected:"itemDetail"===n.value,onClick:o[1]||(o[1]=t=>r("itemDetail"))},"宝石血瓶显伤: "+toDisplayString(unref(itemDetail$1)?"ON":"OFF"),9,_hoisted_3$b),createBaseVNode("span",{class:"selectable",selected:"autoSkill"===n.value,onClick:o[2]||(o[2]=t=>r("autoSkill"))},"自动切换技能: "+toDisplayString(unref(autoSkill$1)?"ON":"OFF"),9,_hoisted_4$9),createBaseVNode("span",{class:"selectable",selected:"autoScale"===n.value,onClick:o[3]||(o[3]=t=>r("autoScale"))},"自动放缩: "+toDisplayString(unref(autoScale$1)?"ON":"OFF"),9,_hoisted_5$7),createBaseVNode("span",{class:"selectable",selected:"showHalo"===n.value,onClick:o[4]||(o[4]=t=>r("showHalo"))},"展示范围光环: "+toDisplayString(unref(showHalo$1)?"ON":"OFF"),9,_hoisted_6$6),createBaseVNode("span",{class:"selectable",selected:"useFixed"===n.value,onClick:o[5]||(o[5]=t=>r("useFixed"))},"移动鼠标显示怪物信息: "+toDisplayString(unref(useFixed$1)?"ON":"OFF"),9,_hoisted_7$6),createBaseVNode("span",{class:"selectable",selected:"autoLocate"===n.value,onClick:o[6]||(o[6]=t=>r("autoLocate"))},"勇士自动定位: "+toDisplayString(unref(autoLocate$1)?"ON":"OFF"),9,_hoisted_8$5),createBaseVNode("span",{class:"selectable",selected:"antiAliasing"===n.value,onClick:o[7]||(o[7]=t=>r("antiAliasing"))},"抗锯齿: "+toDisplayString(unref(antiAliasing$1)?"ON":"OFF"),9,_hoisted_9$5),unref(e).getSkillLevel(11)>0?(openBlock(),createElementBlock("span",{key:0,class:"selectable",selected:"showStudied"===n.value,onClick:o[8]||(o[8]=t=>r("showStudied"))},"展示已学习技能: "+toDisplayString(unref(showStudied$1)?"ON":"OFF"),9,_hoisted_10$5)):createCommentVNode("",!0)])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(a)},null,8,_hoisted_11$5)])),_:1}))}}),settings_vue_vue_type_style_index_0_scoped_98d9836e_lang="",Settings=_export_sfc(_sfc_main$e,[["__scopeId","data-v-98d9836e"]]),tip={text:"注意事项",condition:"true",desc:["这里显示本塔中需要注意的事项。","
","
",'1. ',"本百科全书字数很多,可以选择性地阅读。不过本条目最好可以全部阅读一遍。","
","
",'2. 本百科全书的内容会随着游戏的推进而增加新内容,',"同时每次增加新内容时都会有提示。","
","
","3. 背包中的系统设置同样非常重要,有些问题可以在那里找到原因。例如当你获得技能时可能会发现开启不了技能,","就是因为你打开了自动切换技能的功能,在系统设置里面有说。","
","
",'4. 本塔中几乎所有 ui 都可以纵向滚动,如果发现显示不全,',"可以尝试上下拖动,就像浏览网页一样。电脑端还可以使用滚轮上下滚动。","大部分可以纵向滚动的 ui 都会在右方有一个滚动条,也可以拖动它进行滚动,例如本百科全书的条目列表和","条目说明都是可以通过上述方式滚动的。","
","
","5. 本塔主要面向电脑端设计,",'建议使用电脑游玩以获得更好的游戏体验。但是手机依然可以游玩本塔,',"但部分操作可能不是很方便,ui 也可能不是很美观,不过依然可以完整体验本游戏。","
","
",'6. 对于手机端,可以点击右下角的难度文字来切换工具栏至数字键。',"这样,你可以更加方便地进行使用技能等操作。","
","
","6. 本塔中几乎所有 ui 在打开时都会有一个0.6s的动画,如果不想要,可以在开头捡的系统设置里面关闭(默认关闭)。","同时,几乎所有 ui 的退出按钮都在左上角。","
","
",'7. 地图上显示的怪物临界有可能不准,当其与折线图有差异时,请以折线图为准。']},about={text:"关于游戏",condition:"true",desc:["使用样板:Vite 魔塔样板","
","样板版本:V2.10.0","
",'游戏开源地址:',"https://github.com/unanmed/HumanBreak","
","游戏作者:古祠","
","BGM来源:网易云音乐等","
","素材来源:大素材库、爱给网、网站素材库等","
","特别鸣谢:无名甲烷菌(提供部分特殊属性与机制想法)","
","测试:"]},tutorial={text:"新手教程",condition:"true",desc:["本条目是魔塔游戏的新手教程,如果对魔塔有一定的了解,可以直接忽略。","
","
",'魔塔是一种固定数值rpg游戏,在打怪的时候,遵循我打你一下,你打我一下',"的原则,造成的伤害是己方攻击减去对方防御,最后怪物的伤害便是你在战斗中失去的生命值。当然,为了游戏体验,","战斗过程会被省略。","
","
","宝石可以增加你的属性,在大部分魔塔中,红宝石增加攻击,蓝宝石增加防御,本塔也不例外。血瓶可以增加你的生命值。",'一般情况下,拾取宝物的优先级是红宝石 > 蓝宝石 > 血瓶,',"但部分情况可能不是这样,这需要你自己的游玩经验等。","
","
","本塔还拥有升级机制,升级时能够给你增加大量的属性,因此,一般情况下当你接近升级时,需要尽快打怪升级。","
","
","然后是门。在魔塔中,很多门都不是必开的门,它们的作用一般是可以躲开怪物拿宝石,或者门里面有血瓶等。","当你血量足够时,这些门可以不用开,不然可能会有必开的门无法开启导致卡关。对于钥匙,每种颜色的钥匙开对应颜色的门,",'价值是红 > 蓝 > 黄。',"
","
","为了更加方便,本塔增加了宝石血瓶显示数据的功能,这样你可以清晰地知道每个宝石增加了多少属性。","
","
","下面是勇士基础属性的说明:","
",'1. 生命值:',"勇士的血量,当它归零时,游戏结束","
",'2. 攻击:',"勇士的攻击,攻击越高,每回合对怪物造成的伤害越高","
",'3. 防御:',"勇士的防御,防御越高,怪物每回合对你造成的伤害越低","
",'4. 经验:',"勇士的经验,到达一定值后会升级。本塔在状态栏中显示为距离升级剩余的经验","
",'5. 金币:',"勇士的金币,可以用于购买物品。本塔中在进入第二章后会有用","
",'6. 护盾:',"勇士的护盾,用处是能够在战后减少同等数值的伤害,在本塔中可以使伤害变为负值。本塔中,在点开无上之盾技能后,","智慧会充当护盾。更多信息可以查看“勇士属性”条目。"]},noun={text:"名词解释",condition:"true",desc:["本条目会解释诸如临界等魔塔术语,对魔塔有一定了解的可以直接忽略。","
","
",'1. 临界:',"在魔塔中,临界是一个非常重要的东西。首先,我们很容易可以得到,吃攻击时只有当减少了战斗回合数时怪物的伤害会减少,",'那么,吃攻击时怪物的减伤是不连续的。而距离下一次减少怪物的伤害需要加的攻击的量',"便是临界。当我们吃一个攻击恰好使怪物伤害减少时,称为“踩临界”。一般情况下,踩临界的减伤要比吃防御要高,","因此,当能踩到临界时,我们应当先踩临界,再吃防御。","
","
",'2. 加防:',"加防指的是加防对怪物的减伤。在本塔中,会以“n防”的形式显示在怪物手册或其他地方。在本塔中,一般你不需要刻意计算",'临界与加防减伤,你可以在怪物手册中查看减伤折线图,',"更多信息请查看“怪物手册”条目。","
","
",'3. 咸鱼:',"一般来讲,开不必开的门,或者使用不必使用的道具被称为咸鱼,或者是咸门,咸道具。一般情况下,说“咸”便是指咸鱼。","一般情况下,门后面有宝石且无法通过其他方式进入的都是必开门,而只有血瓶的都是咸鱼门。"]},shortcut={text:"快捷键",condition:"true",desc:["这里包含本塔中所有的快捷键。对于手机端,可以点击工具栏的难度的位置切换工具栏至数字键。","下面会分为样板快捷键和本塔快捷键两类分别说明。可以ctrl+F进行搜索快捷键的功能。","
","
","下面是样板中的所有快捷键:","
",'X:打开怪物手册',"
",'S:打开存档界面',"
",'D:打开读档界面',"
",'A或5:读取自动存档',"
",'W或6:撤销读取的自动存档',"
",'Q:打开装备栏',"
",'T:打开道具栏',"
",'G:打开楼层传送器',"
",'Z或单击勇士:勇士转向',"
",'空格或双击勇士或7:轻按(拾取勇士周围的宝物但不移动勇士)',"
",'Esc:打开游戏菜单',"
",'R:打开录像回放菜单',"
",'N:询问是否返回游戏主菜单',"
",'V:打开快捷商店',"
",'B:打开数据统计界面',"
",'Alt + 数字键:快速换装',"
",'PgUp或PgDn:浏览地图',"
",'P:打开评论区',"
","
","下面是本塔中新增的快捷键(不包括技能,技能快捷键请在查看技能界面中查看):","
",'M:快速标记怪物',"
",'J:打开技能树',"
",'H:打开百科全书',"
",'E:查看鼠标位置怪物的特殊属性信息',"
",'C:查看鼠标位置怪物的详细临界信息']},extraAttr={text:"勇士属性",condition:"true",desc:["这里只对本塔中新增的勇士属性进行说明。","
","
",'1. 智慧:',"智慧是该塔的核心属性之一。智慧可用于智慧加点,该功能会在进入第一章后开启。使用智慧可以点技能树。","除此之外,智慧也有其它功能。例如点开无上之盾技能后智慧还可以充当护盾,第二章点开学习技能后可以使用智慧学习怪物技能等。","
","
",'2. 生命回复:',"生命回复指的是勇士每回合回复的生命值。当与怪物战斗时,勇士每回合都会回复对应量的生命值。因此,当吃攻击时,","与怪物战斗的回合数可能会减少,导致生命回复的总回复量减少。不过大部分情况下不需要在意这一点,","减少一回合并不会对吸的血造成很大的影响,除了一些特殊情况。","该项会显示在状态栏的生命值右方偏下的位置。","
","
",'3. 额外攻击:',"额外攻击指的是勇士每回合的额外造成的伤害。一般情况下,当勇士破了怪物的防御时,该项便会起作用。","额外攻击相当于魔攻,无法通过一般方式减免。当勇士攻击怪物时,每回合都会附加对应量的伤害,对坚固怪同样有效。","额外攻击会显示在状态栏的攻击右方偏下的位置。"]},statusBar={text:"状态栏",condition:"true",desc:["在本塔中,状态栏与游戏画面是分开的。你可以自由拖动状态栏,也可以修改其大小。","具体方法如下:点击一下状态栏之后,左上角的拖拽图标会放大,此时你可以按住它拖动状态栏。","你可以直接将鼠标放到状态栏的边框上,然后直接拖动以改变状态栏的大小。手机端可以先点击一下状态栏使边框","变宽,然后拖动。电脑端点击状态栏也可以使边框变宽。如果你想折叠状态栏,完全可以拖动状态栏的下边框,","然后直接拖动至上方,这时状态栏便会变成一条线,相当于折叠了状态栏","
","
","状态栏可以纵向滚动,如果你发现状态栏显示不全,可以尝试拉大状态栏,或者纵向拖动状态栏,就像网页上下滚动一样。","电脑端还可以使用滚轮上下滚动。","
","
","如果你觉得状态栏有些碍事,你完全可以将其缩小,或者把它放到不碍事的地方。","
","
","状态栏上面可能会有按钮,你可以直接点击。","
","
","对状态栏布局的说明。","
","本塔的状态栏的布局较为灵活。它是横向的布局,在状态栏较宽时可以看到,属性会横向依次显示。按照显示顺序,","状态栏显示项依次为:","
","
","1. 楼层名,点击后进入浏览地图界面","
","2. 勇士等级","
","3. 当前开启的技能","
","4. 当前勇士生命值,右方偏下为每回合回复的生命值,当点开治愈之泉技能时,右方偏上会显示距离增加生命回复剩余血瓶数","
","5. 当前勇士的攻击,右方偏下为勇士的额外攻击","
","6. 当前勇士的防御","
","7. 当前勇士的智慧,可以用于智慧加点等","
","8. 当前勇士的金币","
","9. 当前勇士距离升级剩余经验数","
","10. 三色钥匙","
","11. 打开技能树(进入第一章后开启)","
","12. 查看勇士的技能(进入第一章后开启)"]},markEnemy={text:"标记怪物",condition:"true",desc:["标记怪物可以使你能够更加方便地了解一个怪物的情况。","
","你可以通过以下两种方式标记怪物:","
","1. 打开怪物手册,选中怪物,进入怪物更多信息栏,点击标记怪物。","
",'2. 将鼠标移动到你想要标记的怪物上面,',"按下M键,即可标记怪物,注意浏览地图中不能用该方式标记。","手机端暂时没有快速标记怪物的方式。","
","
","当一个怪物被标记后,怪物会有以下行为:","
","1. 当勇士恰好能打败怪物时,会进行提示","
","2. 当怪物的伤害恰好低于勇士生命值的2/3或1/3时,会进行提示","
","3. 当勇士恰好踩到怪物的临界时,会进行提示","
","4. 当怪物零伤时,会进行提示","
","5. 被标记的怪物会出现类似于状态栏的盒子,可以随意拖动和改变大小。你也可以选择关闭这个盒子,","被关闭后可以通过重新标记来打开。这个盒子会显示标记的怪物的临界与伤害信息等,与状态栏一样,可以纵向滚动。","
","
","这个功能可以用于标记boss或者较强的挡路怪,当这些怪能够攻击时你可以直接收到信息,不需要再时刻费心注意怪物的伤害。","
","
","注意,标记的怪物是不计入存档的,同时标记的怪物只在本次游戏中有效,刷新页面后便会消失。"]},book={text:"怪物手册",condition:"true",desc:["本塔的怪物手册功能很多,下面一一介绍。","
","
","首先,你可以按X打开怪物手册。除此之外,将鼠标移动到怪物上也可以定点查看怪物的粗略信息。",'将鼠标移动到一个怪物上,按下','E键,可以查看该怪物的特殊属性信息。按下',"C键,可以查看该怪物的详细临界信息。","
","
","怪物手册打开的时候有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭(默认关闭)。","
","
","打开怪物手册后,怪物手册的布局与样板自带的类似。与样板不同的是,这里的怪物手册不再是翻页式结构。","这里的怪物手册是滚动式结构,你可以像浏览网页一样,用手指或鼠标上下滚动或者拖动右边的滚动条,电脑端还可以使用滚轮。","对于电脑端,还可以使用键盘操作。上和下可以上下选择怪物,左和右可以向上或向下移动5个怪物。这些操作与样板都类似。","
","
","点击一个怪物或者按下回车空格后,将进入怪物详细信息界面。这个界面分为多个栏,分别是特殊属性栏,详细临界栏,更多信息栏。","进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。","注意特殊属性依然可以纵向滚动。在特殊属性下方,","是怪物的临界表,可以粗略地查看怪物的临界信息。在下方,你可以点击详细临界信息进入详细临界栏。","
","
","在详细临界栏中,怪物的伤害会以可视化折线图的方式显示出来,从而你可以更为清晰地看出怪物减伤趋势。","除了查看怪物伤害曲线,你还可以规划宝石。每个折线图下方都有一个滑动条,你可以拖动来模拟吃宝石。","注意,拖动时,滑动条左边会显示当前的加攻或加防次数,这个数值指的是在勇士所在地图中需要吃的最弱的宝石数量。","例如,当前勇士所在地图中最弱的宝石加2点攻击,加攻次数为3,那么勇士的攻击增加量就为6。","勇士增加的攻击数值也会在下方显示。当加攻次数和加防次数改变时,折线图也会变化。",'当前状态下怪物的伤害以及减伤总量也会在下方显示。',"注意在此栏中无法通过点击屏幕回到怪物手册界面,更多信息请查看最后一段。","
","
","在特殊属性栏,点击下方的怪物更多信息可以进入更多信息栏。此栏中,你可以查看怪物描述。但这不是这一栏的核心功能。","这一栏的核心功能是标记怪物。被标记的怪物会有一些非常方便的行为,这些行为可以在“标记怪物”条目中查看。","
","
","注意,在怪物详细信息中,除详细临界栏外均可以通过点击屏幕返回到怪物手册界面。",'如果你是电脑端,在任意栏目中按下X键会退出怪物手册,返回游戏,','按下回车(Enter)键会回到怪物手册界面。']},fly={text:"楼层传送器",condition:"true",desc:["楼传界面打开时会有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭。(默认关闭)","
","
",'本塔的楼层传送器是一个集分区、小地图、楼层传送、浏览地图于一体的多功能楼传。',"下面是楼传的具体说明:","
","
","首先,对于电脑端,最左侧显示区域信息,手机端则在上方的左侧。","
","
","然后,区域的右侧是小地图栏,这一栏会显示楼层的平面结构。你可以拖动,也可以使用滚轮或者双指放缩,当放缩到一定大小时,","会显示地图的缩略图。直接点击地图也可以选中地图,再次点击会传送至目标地图。","
","
","对于电脑端,最右侧是当前选中的地图的缩略图,手机则在下方,点击缩略图也可以传送。缩略图的下方是当前选中的地图名,","左右各有两个按钮,表示后退10层、后退1层、前进1层、前进10层,与样板的楼传的按钮功能类似,对于小地图无法显示的单层,","可以使用该功能到达。","
","
","最下方是设置按钮,可以切换无边框模式,电脑端还可以切换传统按键模式,传统按键模式下按键遵循样板的楼传按键方式。",'对于非传统模式,上下左右可以移动地图,','PageUp和PageDown可以前进1层或后退1层。']},tools={text:"道具栏与装备栏",condition:"true",desc:["道具栏与装备栏打开时会有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭。(默认关闭)","
","
","本塔的道具栏没有特别之处,这里不需要说明。主要是装备栏。","
","
","本塔的装备栏手机和电脑端不同,电脑端比手机端多了一个勇士属性的显示。在装备栏的装备列表栏,","上方有两个选择框与一个排序方式的选项。这三个可以筛选你拥有的装备并进行排序,从而让你能够更清楚地知道哪个装备更强。","第一个选择框可以筛选装备增加的属性,如果装备不增加选择的属性,那么会不显示。第二个选择框可以筛选增加的属性的方式,","有数值增加和百分比增加两种。在这个选择框右边有一个图标,这个图标可以改变武器的排序方式,有升序和降序两种,默认为升序。","例如,你拥有两个装备,分别增加10攻击和20攻击,三者你分别选择了攻击,数值,升序,那么增加10攻击的装备会排在上面,","而增加20攻击的装备会排在下面。","
","
","对于电脑端,如果你想装装备,可以直接拖动装备至装备孔,也可以选中装备后再次点击。手机端暂时无法拖动装备。当选中一个装备后,","电脑端和手机端均会显示装备增加或减少的属性,注意有的装备可能不增加属性但是有特殊功能。对于电脑端,","还会直接在勇士属性栏显示增加或减少的属性。"]},skillTree={text:"技能树",condition:"flags.chapter > 0",desc:['打开技能树可以点击状态栏的',"技能树按钮(如果发现没有显示可以尝试上下滚动状态栏),还可以按",'快捷键J打开。',"
","
","技能树是本塔的主要玩法之一。它可以让你使用智慧来学习技能,增加属性等。智慧在状态栏显示在防御的下一项,","绿宝石可以增加勇士的智慧。","
","
","打开技能树页面后,你可以在上方看到技能的名称与描述,下方会显示技能树,以及升级要求等。点击一个技能可以选中技能,","再次点击可以升级技能。注意,前置技能栏可以上下滚动,因此如果发现显示不全,可以尝试上下滚动前置技能栏","
","
","注意,技能在点开之后是无法取消的,因此,加点时请慎重加点。注意,部分技能是必点技能,这些技能会在技能说明中明确指出,","这些技能一般需要尽早点出。"]},study={text:"学习",condition:"core.getSkillLevel(11) > 0",desc:["本条目会详细说明学习的机制与所有可以被学习的技能被学习后的效果。当前已经学习的技能会以与状态栏类似的盒子展示出来。","
","
","首先,学习技能消耗的智慧点会越来越多,初始消耗的智慧点为500,每学习一次增加250。","学习的技能可以持续5场战斗,在技能树界面每升级一次增加3场,",'当前为${core.getSkillLevel(11) * 3 + 2}场。',"学习后对应属性的值,例如抱团怪增加的属性百分比,会与被学习的怪物相同。学习界面可以使用背包中的道具或点击状态栏打开。","
","
","下面会详细说明每一种可以被学习的技能被学习后的效果,没有列出的均不可学习。","
","
",'1. 致命一击:勇士每5回合对怪物造成一次强力攻击。',"
",'2. 恶毒:勇士攻击无视怪物的防御。',"
",'3. 坚固:勇士防御不低于怪物的攻击-1。',"
",'4. n连击:勇士每回合攻击n次',"
",'5. 饥渴:勇士在战前吸取怪物一定量的攻击加载自己身上,',"同时减少怪物相应量的攻击,优先于怪物。","
",'6. 抱团:勇士周围每有一个拥有抱团属性的怪物,勇士的属性便增加一定值。',"相应地,拥有抱团属性的怪物也会受到勇士的加成。","
",'7. 勇气之刃:勇士第一回合造成一定量的伤害,之后正常。',"
",'8. 勇气冲锋:勇士首先发动冲锋,造成一定量的伤害,眩晕怪物5回合。',"学习该技能后,勇士无条件先手。","
",'9. 魔攻:勇士攻击无视怪物的防御。',"
",'10. 先攻:勇士无条件先手。']},special1={text:"第一章怪物特技",condition:"flags.chapter > 0",desc:["这里会展示第一章的怪物中需要特别说明的怪物特技。","
","
",'1. 坚固:',"在本塔中,额外攻击可以对坚固怪造成额外伤害。","
","
",'2. 绝对防御:',"该怪物一般可以用于刷血。该怪物可以使你每回合对怪物造成的伤害恰好为1,导致战斗回合数很高,因此可以刷血。","
","
",'3. 致命一击、勇气之刃、勇气冲锋:',"造成的伤害为怪物每回合对勇士的伤害的一定倍数,而非攻击提高一定倍数。"]},special2={text:"第二章怪物特技",condition:"flags.chapter > 1",desc:["这里会展示第二章的怪物中需要特别说明的怪物特技。","
","
",'1. 电摇嘲讽:',"该特技会撞碎路上的所有地形和门,不需要消耗钥匙,拾取路上的所有道具,与路上的怪物战斗,最后与该怪物战斗。","如果怪物所在位置可以被嘲讽,那么勇士会被继续嘲讽。如果在被嘲讽的路上可以被其他怪物嘲讽,则不会触发。","如果一个点可以被多个怪物嘲讽,那么会优先选择最靠左上角的怪物。",'在被嘲讽之前会自动存档。',"
","
",'2. 永夜、极昼:',"战斗后会在本楼层中加减怪物与勇士的攻防,每个楼层会单独存储。例如你在1楼层增加了100点攻击,2楼层减少了100点攻击,","那么当你从2楼层到1楼层时,攻击会增加200点,反之亦然。注意这里没有计算buff。"]},desc={tip:tip,about:about,tutorial:tutorial,noun:noun,shortcut:shortcut,extraAttr:extraAttr,statusBar:statusBar,markEnemy:markEnemy,book:book,fly:fly,tools:tools,skillTree:skillTree,study:study,special1:special1,special2:special2},_hoisted_1$d={id:"desc-list"},_hoisted_2$a=["selected","show","onClick"],_hoisted_3$a={key:0},_hoisted_4$8=["innerHTML"],_sfc_main$d=defineComponent({__name:"desc",setup(__props){const selected=ref(Object.keys(desc)[0]);function exit(){core.plugin.descOpened.value=!1}const content=computed((()=>eval("`"+splitText(desc[selected.value].desc)+"`")));function click(key){eval(desc[key].condition)&&(selected.value=key)}function show(condition){return eval(condition)}return(t,e)=>(openBlock(),createBlock(Column,{onClose:exit,width:80,height:80,left:30,right:70},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$d,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(desc),((t,e)=>(openBlock(),createElementBlock("div",{class:"selectable desc-item",selected:selected.value===e,show:show(t.condition),onClick:t=>click(e)},[show(t.condition)?(openBlock(),createElementBlock("span",_hoisted_3$a,toDisplayString(t.text),1)):createCommentVNode("",!0)],8,_hoisted_2$a)))),256))])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(content)},null,8,_hoisted_4$8)])),_:1}))}}),desc_vue_vue_type_style_index_0_scoped_bcbf0734_lang="",Desc=_export_sfc(_sfc_main$d,[["__scopeId","data-v-bcbf0734"]]),none={text:"无",opened:"true",desc:["当前未选择技能"]},blade={text:"1:断灭之刃",opened:"core.getSkillLevel(2) > 0",desc:['快捷键1,开启后勇士攻击增加${level:2 * 10}%,',"同时防御减少${level:2 * 10}%。","
","
","当前等级:${level:2}"]},jump={text:"2:跳跃",opened:"flags.skill2 === true",desc:['快捷键2,消耗200点生命值,困难消耗400点,一个地图只能使用3次,',"如果前方为可通行的地面,则不能使用该技能,如果前方为怪物,则将怪物移至勇士视线上第一个不能通行的方块后","如果前方为障碍物,则直接跳到该障碍物的后方。","
","
","进入第二章后不再消耗生命值。"]},shield={text:"3:铸剑为盾",opened:"core.getSkillLevel(10) > 0",desc:['快捷键3,开启后勇士防御增加${level:10 * 10}%,',"同时攻击减少${level:10 * 10}%。","
","
","当前等级:${level:10}"]},skills={none:none,blade:blade,jump:jump,shield:shield},_hoisted_1$c={id:"skill-list"},_hoisted_2$9=["selected","selectable","onClick"],_hoisted_3$9=["innerHTML"],_sfc_main$c=defineComponent({__name:"skill",setup(__props){const selected=ref("none");function skillOpened(skill){return eval(skills[skill].opened)}function select(t){skillOpened(t)&&(selected.value=t)}const content=computed((()=>eval("`"+skills[selected.value].desc.map(((t,e,n)=>/^\d+\./.test(t)?`${" ".repeat(12)}${t}`:has(n[e-1])&&"
"!==t&&"
"===n[e-1]||0===e?`${" ".repeat(8)}${t}`:t)).join("").replace(/level:(\d+)/g,"core.getSkillLevel($1)")+"`")));function exit(){core.plugin.skillOpened.value=!1}return(t,e)=>(openBlock(),createBlock(Column,{onClose:exit,width:70,height:70},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$c,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(skills),((t,e)=>(openBlock(),createElementBlock("span",{class:"selectable skill-item",selected:e===selected.value,selectable:skillOpened(e),onClick:t=>select(e)},toDisplayString(t.text),9,_hoisted_2$9)))),256))])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(content)},null,8,_hoisted_3$9)])),_:1}))}}),skill_vue_vue_type_style_index_0_scoped_9f619ff1_lang="",Skill=_export_sfc(_sfc_main$c,[["__scopeId","data-v-9f619ff1"]]),_withScopeId$4=t=>(pushScopeId("data-v-b1be4e88"),t=t(),popScopeId(),t),_hoisted_1$b={id:"skill-tree"},_hoisted_2$8={id:"tools"},_hoisted_3$8={id:"skill-title"},_hoisted_4$7={id:"skill-info"},_hoisted_5$6=["innerHTML"],_hoisted_6$5={id:"skill-effect"},_hoisted_7$5=["innerHTML"],_hoisted_8$4=["innerHTML"],_hoisted_9$4={id:"skill-bottom"},_hoisted_10$4=_withScopeId$4((()=>createBaseVNode("canvas",{id:"skill-canvas"},null,-1))),_hoisted_11$4={id:"skill-upgrade-info"},_hoisted_12$3={id:"skill-level"},_hoisted_13$3={key:1,id:"skill-consume",style:{color:"gold"}},_hoisted_14$3={id:"skill-front"},_hoisted_15$2=_withScopeId$4((()=>createBaseVNode("span",null,"前置技能",-1))),_hoisted_16$2={id:"skill-chapter"},_sfc_main$b=defineComponent({__name:"skillTree",setup(__props){let canvas,ctx;const selected=ref(0),chapter=ref("chapter1"),update=ref(!1),chapterDict={chapter1:"第一章",chapter2:"第二章"};flags.skillTree??=0;const chapterList=Object.keys(core.plugin.skills);selected.value=core.plugin.skills[chapterList[flags.skillTree]][0].index,chapter.value=chapterList[flags.skillTree],watch(selected,draw),watch(update,(()=>mdef.value=core.status.hero.mdef));const mdef=ref(core.status.hero.mdef),skill=computed((()=>(update.value,core.getSkillFromIndex(selected.value)))),skills=computed((()=>core.plugin.skills[chapter.value])),desc=computed((()=>eval("`"+splitText(skill.value.desc).replace(/level(:\d+)?/g,((t,e)=>e?`core.getSkillLevel(${e})`:`core.getSkillLevel(${skill.value.index})`))+"`"))),effect=computed((()=>[0,1].map((v=>eval("`"+(0===v?"当前效果:":"下一级效果:")+skill.value.effect.join("").replace(/level(:\d+)?/g,((t,e)=>e?`(core.getSkillLevel(${e}) + ${v})`:`(core.getSkillLevel(${skill.value.index}) + ${v})`))+"`"))))),dict=computed((()=>{const t={};return skills.value.forEach(((e,n)=>{t[e.index]=n})),t})),front=computed((()=>skill.value.front.map((t=>`${core.getSkillLevel(t[0])>=t[1]?"a":"b"}${t[1]}级 ${skills.value[dict.value[t[0]]].title}`)))),consume=computed((()=>(update.value,core.getSkillConsume(selected.value)))),level=computed((()=>(update.value,core.getSkillLevel(selected.value))));function exit(){core.plugin.skillTreeOpened.value=!1}function resize(){const t=getComputedStyle(canvas);canvas.width=parseFloat(t.width)*devicePixelRatio,canvas.height=parseFloat(t.height)*devicePixelRatio}function draw(){const t=dict.value,e=canvas.width/11;ctx.clearRect(0,0,canvas.width,canvas.height),skills.value.forEach((n=>{const[a,o]=n.loc.map((t=>2*t-1));n.front.forEach((([i],r)=>{const l=skills.value[t[i]];ctx.beginPath(),ctx.moveTo(a*e+e/2,o*e+e/2),ctx.lineTo(...l.loc.map((t=>(2*t-1)*e+e/2))),core.getSkillLevel(l.index)
"!==t&&"
"===n[e-1]||0===e?`${" ".repeat(8)}${t}`:t)).join("")}!function(){const t="",e=[[0,1,0,"None",0,"unknown",0,"VK_UNKNOWN",t,t],[0,1,1,"Hyper",0,t,0,t,t,t],[0,1,2,"Super",0,t,0,t,t,t],[0,1,3,"Fn",0,t,0,t,t,t],[0,1,4,"FnLock",0,t,0,t,t,t],[0,1,5,"Suspend",0,t,0,t,t,t],[0,1,6,"Resume",0,t,0,t,t,t],[0,1,7,"Turbo",0,t,0,t,t,t],[0,1,8,"Sleep",0,t,0,"VK_SLEEP",t,t],[0,1,9,"WakeUp",0,t,0,t,t,t],[31,0,10,"KeyA",31,"A",65,"VK_A",t,t],[32,0,11,"KeyB",32,"B",66,"VK_B",t,t],[33,0,12,"KeyC",33,"C",67,"VK_C",t,t],[34,0,13,"KeyD",34,"D",68,"VK_D",t,t],[35,0,14,"KeyE",35,"E",69,"VK_E",t,t],[36,0,15,"KeyF",36,"F",70,"VK_F",t,t],[37,0,16,"KeyG",37,"G",71,"VK_G",t,t],[38,0,17,"KeyH",38,"H",72,"VK_H",t,t],[39,0,18,"KeyI",39,"I",73,"VK_I",t,t],[40,0,19,"KeyJ",40,"J",74,"VK_J",t,t],[41,0,20,"KeyK",41,"K",75,"VK_K",t,t],[42,0,21,"KeyL",42,"L",76,"VK_L",t,t],[43,0,22,"KeyM",43,"M",77,"VK_M",t,t],[44,0,23,"KeyN",44,"N",78,"VK_N",t,t],[45,0,24,"KeyO",45,"O",79,"VK_O",t,t],[46,0,25,"KeyP",46,"P",80,"VK_P",t,t],[47,0,26,"KeyQ",47,"Q",81,"VK_Q",t,t],[48,0,27,"KeyR",48,"R",82,"VK_R",t,t],[49,0,28,"KeyS",49,"S",83,"VK_S",t,t],[50,0,29,"KeyT",50,"T",84,"VK_T",t,t],[51,0,30,"KeyU",51,"U",85,"VK_U",t,t],[52,0,31,"KeyV",52,"V",86,"VK_V",t,t],[53,0,32,"KeyW",53,"W",87,"VK_W",t,t],[54,0,33,"KeyX",54,"X",88,"VK_X",t,t],[55,0,34,"KeyY",55,"Y",89,"VK_Y",t,t],[56,0,35,"KeyZ",56,"Z",90,"VK_Z",t,t],[22,0,36,"Digit1",22,"1",49,"VK_1",t,t],[23,0,37,"Digit2",23,"2",50,"VK_2",t,t],[24,0,38,"Digit3",24,"3",51,"VK_3",t,t],[25,0,39,"Digit4",25,"4",52,"VK_4",t,t],[26,0,40,"Digit5",26,"5",53,"VK_5",t,t],[27,0,41,"Digit6",27,"6",54,"VK_6",t,t],[28,0,42,"Digit7",28,"7",55,"VK_7",t,t],[29,0,43,"Digit8",29,"8",56,"VK_8",t,t],[30,0,44,"Digit9",30,"9",57,"VK_9",t,t],[21,0,45,"Digit0",21,"0",48,"VK_0",t,t],[3,1,46,"Enter",3,"Enter",13,"VK_RETURN",t,t],[9,1,47,"Escape",9,"Escape",27,"VK_ESCAPE",t,t],[1,1,48,"Backspace",1,"Backspace",8,"VK_BACK",t,t],[2,1,49,"Tab",2,"Tab",9,"VK_TAB",t,t],[10,1,50,"Space",10,"Space",32,"VK_SPACE",t,t],[83,0,51,"Minus",83,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[81,0,52,"Equal",81,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[87,0,53,"BracketLeft",87,"[",219,"VK_OEM_4","[","OEM_4"],[89,0,54,"BracketRight",89,"]",221,"VK_OEM_6","]","OEM_6"],[88,0,55,"Backslash",88,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,0,56,"IntlHash",0,t,0,t,t,t],[80,0,57,"Semicolon",80,";",186,"VK_OEM_1",";","OEM_1"],[90,0,58,"Quote",90,"'",222,"VK_OEM_7","'","OEM_7"],[86,0,59,"Backquote",86,"`",192,"VK_OEM_3","`","OEM_3"],[82,0,60,"Comma",82,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[84,0,61,"Period",84,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[85,0,62,"Slash",85,"/",191,"VK_OEM_2","/","OEM_2"],[8,1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",t,t],[59,1,64,"F1",59,"F1",112,"VK_F1",t,t],[60,1,65,"F2",60,"F2",113,"VK_F2",t,t],[61,1,66,"F3",61,"F3",114,"VK_F3",t,t],[62,1,67,"F4",62,"F4",115,"VK_F4",t,t],[63,1,68,"F5",63,"F5",116,"VK_F5",t,t],[64,1,69,"F6",64,"F6",117,"VK_F6",t,t],[65,1,70,"F7",65,"F7",118,"VK_F7",t,t],[66,1,71,"F8",66,"F8",119,"VK_F8",t,t],[67,1,72,"F9",67,"F9",120,"VK_F9",t,t],[68,1,73,"F10",68,"F10",121,"VK_F10",t,t],[69,1,74,"F11",69,"F11",122,"VK_F11",t,t],[70,1,75,"F12",70,"F12",123,"VK_F12",t,t],[0,1,76,"PrintScreen",0,t,0,t,t,t],[79,1,77,"ScrollLock",79,"ScrollLock",145,"VK_SCROLL",t,t],[7,1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",t,t],[19,1,79,"Insert",19,"Insert",45,"VK_INSERT",t,t],[14,1,80,"Home",14,"Home",36,"VK_HOME",t,t],[11,1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",t,t],[20,1,82,"Delete",20,"Delete",46,"VK_DELETE",t,t],[13,1,83,"End",13,"End",35,"VK_END",t,t],[12,1,84,"PageDown",12,"PageDown",34,"VK_NEXT",t,t],[17,1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",t],[15,1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",t],[18,1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",t],[16,1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",t],[78,1,89,"NumLock",78,"NumLock",144,"VK_NUMLOCK",t,t],[108,1,90,"NumpadDivide",108,"NumPad_Divide",111,"VK_DIVIDE",t,t],[103,1,91,"NumpadMultiply",103,"NumPad_Multiply",106,"VK_MULTIPLY",t,t],[106,1,92,"NumpadSubtract",106,"NumPad_Subtract",109,"VK_SUBTRACT",t,t],[104,1,93,"NumpadAdd",104,"NumPad_Add",107,"VK_ADD",t,t],[3,1,94,"NumpadEnter",3,t,0,t,t,t],[94,1,95,"Numpad1",94,"NumPad1",97,"VK_NUMPAD1",t,t],[95,1,96,"Numpad2",95,"NumPad2",98,"VK_NUMPAD2",t,t],[96,1,97,"Numpad3",96,"NumPad3",99,"VK_NUMPAD3",t,t],[97,1,98,"Numpad4",97,"NumPad4",100,"VK_NUMPAD4",t,t],[98,1,99,"Numpad5",98,"NumPad5",101,"VK_NUMPAD5",t,t],[99,1,100,"Numpad6",99,"NumPad6",102,"VK_NUMPAD6",t,t],[100,1,101,"Numpad7",100,"NumPad7",103,"VK_NUMPAD7",t,t],[101,1,102,"Numpad8",101,"NumPad8",104,"VK_NUMPAD8",t,t],[102,1,103,"Numpad9",102,"NumPad9",105,"VK_NUMPAD9",t,t],[93,1,104,"Numpad0",93,"NumPad0",96,"VK_NUMPAD0",t,t],[107,1,105,"NumpadDecimal",107,"NumPad_Decimal",110,"VK_DECIMAL",t,t],[92,0,106,"IntlBackslash",92,"OEM_102",226,"VK_OEM_102",t,t],[58,1,107,"ContextMenu",58,"ContextMenu",93,t,t,t],[0,1,108,"Power",0,t,0,t,t,t],[0,1,109,"NumpadEqual",0,t,0,t,t,t],[71,1,110,"F13",71,"F13",124,"VK_F13",t,t],[72,1,111,"F14",72,"F14",125,"VK_F14",t,t],[73,1,112,"F15",73,"F15",126,"VK_F15",t,t],[74,1,113,"F16",74,"F16",127,"VK_F16",t,t],[75,1,114,"F17",75,"F17",128,"VK_F17",t,t],[76,1,115,"F18",76,"F18",129,"VK_F18",t,t],[77,1,116,"F19",77,"F19",130,"VK_F19",t,t],[0,1,117,"F20",0,t,0,"VK_F20",t,t],[0,1,118,"F21",0,t,0,"VK_F21",t,t],[0,1,119,"F22",0,t,0,"VK_F22",t,t],[0,1,120,"F23",0,t,0,"VK_F23",t,t],[0,1,121,"F24",0,t,0,"VK_F24",t,t],[0,1,122,"Open",0,t,0,t,t,t],[0,1,123,"Help",0,t,0,t,t,t],[0,1,124,"Select",0,t,0,t,t,t],[0,1,125,"Again",0,t,0,t,t,t],[0,1,126,"Undo",0,t,0,t,t,t],[0,1,127,"Cut",0,t,0,t,t,t],[0,1,128,"Copy",0,t,0,t,t,t],[0,1,129,"Paste",0,t,0,t,t,t],[0,1,130,"Find",0,t,0,t,t,t],[0,1,131,"AudioVolumeMute",112,"AudioVolumeMute",173,"VK_VOLUME_MUTE",t,t],[0,1,132,"AudioVolumeUp",113,"AudioVolumeUp",175,"VK_VOLUME_UP",t,t],[0,1,133,"AudioVolumeDown",114,"AudioVolumeDown",174,"VK_VOLUME_DOWN",t,t],[105,1,134,"NumpadComma",105,"NumPad_Separator",108,"VK_SEPARATOR",t,t],[110,0,135,"IntlRo",110,"ABNT_C1",193,"VK_ABNT_C1",t,t],[0,1,136,"KanaMode",0,t,0,t,t,t],[0,0,137,"IntlYen",0,t,0,t,t,t],[0,1,138,"Convert",0,t,0,t,t,t],[0,1,139,"NonConvert",0,t,0,t,t,t],[0,1,140,"Lang1",0,t,0,t,t,t],[0,1,141,"Lang2",0,t,0,t,t,t],[0,1,142,"Lang3",0,t,0,t,t,t],[0,1,143,"Lang4",0,t,0,t,t,t],[0,1,144,"Lang5",0,t,0,t,t,t],[0,1,145,"Abort",0,t,0,t,t,t],[0,1,146,"Props",0,t,0,t,t,t],[0,1,147,"NumpadParenLeft",0,t,0,t,t,t],[0,1,148,"NumpadParenRight",0,t,0,t,t,t],[0,1,149,"NumpadBackspace",0,t,0,t,t,t],[0,1,150,"NumpadMemoryStore",0,t,0,t,t,t],[0,1,151,"NumpadMemoryRecall",0,t,0,t,t,t],[0,1,152,"NumpadMemoryClear",0,t,0,t,t,t],[0,1,153,"NumpadMemoryAdd",0,t,0,t,t,t],[0,1,154,"NumpadMemorySubtract",0,t,0,t,t,t],[0,1,155,"NumpadClear",126,"Clear",12,"VK_CLEAR",t,t],[0,1,156,"NumpadClearEntry",0,t,0,t,t,t],[5,1,0,t,5,"Ctrl",17,"VK_CONTROL",t,t],[4,1,0,t,4,"Shift",16,"VK_SHIFT",t,t],[6,1,0,t,6,"Alt",18,"VK_MENU",t,t],[57,1,0,t,57,"Meta",0,"VK_COMMAND",t,t],[5,1,157,"ControlLeft",5,t,0,"VK_LCONTROL",t,t],[4,1,158,"ShiftLeft",4,t,0,"VK_LSHIFT",t,t],[6,1,159,"AltLeft",6,t,0,"VK_LMENU",t,t],[57,1,160,"MetaLeft",57,t,0,"VK_LWIN",t,t],[5,1,161,"ControlRight",5,t,0,"VK_RCONTROL",t,t],[4,1,162,"ShiftRight",4,t,0,"VK_RSHIFT",t,t],[6,1,163,"AltRight",6,t,0,"VK_RMENU",t,t],[57,1,164,"MetaRight",57,t,0,"VK_RWIN",t,t],[0,1,165,"BrightnessUp",0,t,0,t,t,t],[0,1,166,"BrightnessDown",0,t,0,t,t,t],[0,1,167,"MediaPlay",0,t,0,t,t,t],[0,1,168,"MediaRecord",0,t,0,t,t,t],[0,1,169,"MediaFastForward",0,t,0,t,t,t],[0,1,170,"MediaRewind",0,t,0,t,t,t],[114,1,171,"MediaTrackNext",119,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",t,t],[115,1,172,"MediaTrackPrevious",120,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",t,t],[116,1,173,"MediaStop",121,"MediaStop",178,"VK_MEDIA_STOP",t,t],[0,1,174,"Eject",0,t,0,t,t,t],[117,1,175,"MediaPlayPause",122,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",t,t],[0,1,176,"MediaSelect",123,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",t,t],[0,1,177,"LaunchMail",124,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",t,t],[0,1,178,"LaunchApp2",125,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",t,t],[0,1,179,"LaunchApp1",0,t,0,"VK_MEDIA_LAUNCH_APP1",t,t],[0,1,180,"SelectTask",0,t,0,t,t,t],[0,1,181,"LaunchScreenSaver",0,t,0,t,t,t],[0,1,182,"BrowserSearch",115,"BrowserSearch",170,"VK_BROWSER_SEARCH",t,t],[0,1,183,"BrowserHome",116,"BrowserHome",172,"VK_BROWSER_HOME",t,t],[112,1,184,"BrowserBack",117,"BrowserBack",166,"VK_BROWSER_BACK",t,t],[113,1,185,"BrowserForward",118,"BrowserForward",167,"VK_BROWSER_FORWARD",t,t],[0,1,186,"BrowserStop",0,t,0,"VK_BROWSER_STOP",t,t],[0,1,187,"BrowserRefresh",0,t,0,"VK_BROWSER_REFRESH",t,t],[0,1,188,"BrowserFavorites",0,t,0,"VK_BROWSER_FAVORITES",t,t],[0,1,189,"ZoomToggle",0,t,0,t,t,t],[0,1,190,"MailReply",0,t,0,t,t,t],[0,1,191,"MailForward",0,t,0,t,t,t],[0,1,192,"MailSend",0,t,0,t,t,t],[109,1,0,t,109,"KeyInComposition",229,t,t,t],[111,1,0,t,111,"ABNT_C2",194,"VK_ABNT_C2",t,t],[91,1,0,t,91,"OEM_8",223,"VK_OEM_8",t,t],[0,1,0,t,0,t,0,"VK_KANA",t,t],[0,1,0,t,0,t,0,"VK_HANGUL",t,t],[0,1,0,t,0,t,0,"VK_JUNJA",t,t],[0,1,0,t,0,t,0,"VK_FINAL",t,t],[0,1,0,t,0,t,0,"VK_HANJA",t,t],[0,1,0,t,0,t,0,"VK_KANJI",t,t],[0,1,0,t,0,t,0,"VK_CONVERT",t,t],[0,1,0,t,0,t,0,"VK_NONCONVERT",t,t],[0,1,0,t,0,t,0,"VK_ACCEPT",t,t],[0,1,0,t,0,t,0,"VK_MODECHANGE",t,t],[0,1,0,t,0,t,0,"VK_SELECT",t,t],[0,1,0,t,0,t,0,"VK_PRINT",t,t],[0,1,0,t,0,t,0,"VK_EXECUTE",t,t],[0,1,0,t,0,t,0,"VK_SNAPSHOT",t,t],[0,1,0,t,0,t,0,"VK_HELP",t,t],[0,1,0,t,0,t,0,"VK_APPS",t,t],[0,1,0,t,0,t,0,"VK_PROCESSKEY",t,t],[0,1,0,t,0,t,0,"VK_PACKET",t,t],[0,1,0,t,0,t,0,"VK_DBE_SBCSCHAR",t,t],[0,1,0,t,0,t,0,"VK_DBE_DBCSCHAR",t,t],[0,1,0,t,0,t,0,"VK_ATTN",t,t],[0,1,0,t,0,t,0,"VK_CRSEL",t,t],[0,1,0,t,0,t,0,"VK_EXSEL",t,t],[0,1,0,t,0,t,0,"VK_EREOF",t,t],[0,1,0,t,0,t,0,"VK_PLAY",t,t],[0,1,0,t,0,t,0,"VK_ZOOM",t,t],[0,1,0,t,0,t,0,"VK_NONAME",t,t],[0,1,0,t,0,t,0,"VK_PA1",t,t],[0,1,0,t,0,t,0,"VK_OEM_CLEAR",t,t]],n=[],a=[];for(const o of e){const[t,e,i,r,l,s,c,d,p,u]=o;if(a[i]||(a[i]=!0,scanCodeStrToInt[r]=i,scanCodeLowerCaseStrToInt[r.toLowerCase()]=i),!n[l]){if(n[l]=!0,!s)throw new Error(`String representation missing for key code ${l} around scan code ${r}`);uiMap.define(l,s),userSettingsUSMap.define(l,p||s),userSettingsGeneralMap.define(l,u||p||s)}c&&(EVENT_KEY_CODE_MAP[c]=l)}}(),KeyCodeUtils2=KeyCodeUtils||(KeyCodeUtils={}),KeyCodeUtils2.toString=function(t){return uiMap.keyCodeToStr(t)},KeyCodeUtils2.fromString=function(t){return uiMap.strToKeyCode(t)},KeyCodeUtils2.toUserSettingsUS=function(t){return userSettingsUSMap.keyCodeToStr(t)},KeyCodeUtils2.toUserSettingsGeneral=function(t){return userSettingsGeneralMap.keyCodeToStr(t)},KeyCodeUtils2.fromUserSettings=function(t){return userSettingsUSMap.strToKeyCode(t)||userSettingsGeneralMap.strToKeyCode(t)},KeyCodeUtils2.toElectronAccelerator=function(t){if(t>=93&&t<=108)return null;switch(t){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return uiMap.keyCodeToStr(t)};const animation=[];let animateTime=0;function init$9(){return core.registerAnimationFrame("animateController",!0,(t=>{if(!(t-animateTime<=core.values.animateSpeed)){for(const e of animation)e(t);animateTime=core.animateFrame.animateTime}})),{addAnimate:addAnimate,removeAnimate:removeAnimate}}function addAnimate(t){animation.push(t)}function removeAnimate(t){const e=animation.findIndex((e=>e===t));-1!==e&&animation.splice(e,1)}const _hoisted_1$o=["width","height","id"],_sfc_main$o=defineComponent({__name:"boxAnimate",props:{id:null,noborder:{type:Boolean},width:null,height:null},setup(t){const e=t,n=(1e8*Math.random()).toFixed(0);let a,o,i;function r(){if("none"===n)return;has(i)&&removeAnimate(i);const t=core.getClsFromId(e.id),r=core.getAnimateFrames(t),l=e.width??32,s=e.height??32;e.noborder||(a.style.border="1.5px solid #ddd",a.style.backgroundColor="#222");const c=window.devicePixelRatio;if(a.style.width=`${l}px`,a.style.height=`${s}px`,a.width=c*l,a.height=c*s,o.scale(c,c),"none"!==e.id)if("hero"===e.id){const t=core.material.images.hero;o.drawImage(t,0,0,t.width/4,t.height/4,0,0,l,s)}else 1===r?core.drawIcon(o,e.id,0,0,e.width,e.height):(i=()=>{core.clearMap(o);const t=core.status.globalAnimateStatus%r;core.drawIcon(o,e.id,0,0,l,s,t)},i(),addAnimate(i),onUnmounted((()=>{removeAnimate(i)})))}return onMounted((()=>{a=document.getElementById(`box-animate-${n}`),o=a.getContext("2d"),r()})),onUpdated((()=>{r()})),(e,a)=>(openBlock(),createElementBlock("canvas",{width:t.width??32,height:t.height??32,id:`box-animate-${unref(n)}`},null,8,_hoisted_1$o))}});function init$8(){return{useDrag:useDrag,useWheel:useWheel,useUp:useUp,isMobile:isMobile}}const dragFnMap=new Map,isMobile=matchMedia("(max-width: 600px)").matches;function useDrag(t,e,n,a,o=!1){let i=!1;const r=t=>{i=!0,n&&n(t.clientX,t.clientY,t)},l=t=>{i=!0,n&&n(t.touches[0].clientX,t.touches[0].clientY,t)};t instanceof Array?t.forEach((t=>{t.addEventListener("mousedown",r),t.addEventListener("touchstart",l)})):(t.addEventListener("mousedown",r),t.addEventListener("touchstart",l));const s=o?document:t,c=t=>{i&&e(t.clientX,t.clientY,t)},d=t=>{i&&e(t.touches[0].clientX,t.touches[0].clientY,t)},p=t=>{i&&(a&&a(t),i=!1)},u=t=>{i&&(a&&a(t),i=!1)};s instanceof Array?s.forEach((t=>{t.addEventListener("mouseup",p),t.addEventListener("touchend",u),t.addEventListener("mousemove",c),t.addEventListener("touchmove",d)})):(s.addEventListener("mouseup",p),s.addEventListener("touchend",u),s.addEventListener("mousemove",c),s.addEventListener("touchmove",d)),dragFnMap.set(e,[c,d,p,u])}function cancelGlobalDrag(t){const e=dragFnMap.get(t);dragFnMap.delete(t),e&&(document.removeEventListener("mousemove",e[0]),document.removeEventListener("touchmove",e[1]),document.removeEventListener("mouseup",e[0]),document.removeEventListener("touchend",e[1]))}function useWheel(t,e){t.addEventListener("wheel",(t=>{e(t.deltaX,t.deltaY,t.deltaZ,t)}))}function useUp(t,e){t.addEventListener("mouseup",(t=>{e(t.clientX,t.clientY,t)})),t.addEventListener("touchend",(t=>{e(t.touches[0].clientX,t.touches[0].clientY,t)}))}const _hoisted_1$n=["selected"],_hoisted_2$k={class:"info"},_hoisted_3$k={class:"leftbar"},_hoisted_4$h={class:"name"},_hoisted_5$e={key:0,class:"special-text"},_hoisted_6$c={key:1,class:"special-text"},_hoisted_7$a={class:"rightbar"},_hoisted_8$9={class:"detail"},_hoisted_9$9={class:"detail-info"},_hoisted_10$7={style:{color:"lightgreen"}},_hoisted_11$7={class:"detail-info"},_hoisted_12$5={style:{color:"lightcoral"}},_hoisted_13$5={class:"detail-info"},_hoisted_14$5={style:{color:"lightblue"}},_hoisted_15$4={class:"detail-info"},_hoisted_16$4={style:{color:"lightyellow"}},_hoisted_17$3={class:"detail-info"},_hoisted_18$3={style:{color:"lawngreen"}},_hoisted_19$3={class:"detail-info"},_hoisted_20$3={class:"detail-info"},_hoisted_21$3={style:{color:"lightsalmon"}},_hoisted_22$2={class:"detail-info"},_hoisted_23$2={style:{color:"lightpink"}},_hoisted_24$2={style:{"font-family":"'Fira Code'"}},_hoisted_25$2={class:"detail-info"},_hoisted_26$2={style:{color:"cyan"}},_sfc_main$n=defineComponent({__name:"enemyOne",props:{enemy:null,selected:{type:Boolean}},emits:["select","hover"],setup(t,{emit:e}){const n=window.core,a=.032*window.innerWidth;function o(t){e("select")}function i(){e("hover")}return(e,r)=>{const l=__unplugin_components_1;return openBlock(),createElementBlock("div",{class:"enemy-container",onClick:o,onMouseenter:i,selected:t.selected},[createBaseVNode("div",_hoisted_2$k,[createBaseVNode("div",_hoisted_3$k,[createBaseVNode("span",_hoisted_4$h,toDisplayString(t.enemy.name),1),createVNode(_sfc_main$o,{id:t.enemy.id,width:unref(isMobile)?32:a,height:unref(isMobile)?32:a,style:{margin:"5%"}},null,8,["id","width","height"]),unref(has)(t.enemy.special)&&t.enemy.special.length>0?(openBlock(),createElementBlock("div",_hoisted_5$e,[(openBlock(!0),createElementBlock(Fragment,null,renderList(t.enemy.toShowSpecial,((e,n)=>(openBlock(),createElementBlock("span",{style:normalizeStyle({color:t.enemy.toShowColor[n]})}," "+toDisplayString(e)+" ",5)))),256))])):(openBlock(),createElementBlock("div",_hoisted_6$c,"无属性"))]),createVNode(l,{type:"vertical",dashed:"",style:{height:"100%",margin:"0 3% 0 1%","border-color":"#ddd4"}}),createBaseVNode("div",_hoisted_7$a,[createBaseVNode("div",_hoisted_8$9,[createBaseVNode("div",_hoisted_9$9,[createBaseVNode("span",_hoisted_10$7,"生命 "+toDisplayString(unref(n).formatBigNumber(t.enemy.hp)),1)]),createBaseVNode("div",_hoisted_11$7,[createBaseVNode("span",_hoisted_12$5,"攻击 "+toDisplayString(unref(n).formatBigNumber(t.enemy.atk)),1)]),createBaseVNode("div",_hoisted_13$5,[createBaseVNode("span",_hoisted_14$5,"防御 "+toDisplayString(unref(n).formatBigNumber(t.enemy.def)),1)]),createBaseVNode("div",_hoisted_15$4,[createBaseVNode("span",_hoisted_16$4,"金币 "+toDisplayString(unref(n).formatBigNumber(t.enemy.money)),1)]),createBaseVNode("div",_hoisted_17$3,[createBaseVNode("span",_hoisted_18$3,"经验 "+toDisplayString(unref(n).formatBigNumber(t.enemy.exp)),1)]),createBaseVNode("div",_hoisted_19$3,[createBaseVNode("span",{style:normalizeStyle({color:t.enemy.damageColor})},"伤害 "+toDisplayString(unref(n).formatBigNumber(t.enemy.damage)),5)]),createBaseVNode("div",_hoisted_20$3,[createBaseVNode("span",_hoisted_21$3,"临界 "+toDisplayString(unref(n).formatBigNumber(t.enemy.critical)),1)]),createBaseVNode("div",_hoisted_22$2,[createBaseVNode("span",_hoisted_23$2,[createTextVNode("减伤 "),createBaseVNode("span",{style:normalizeStyle({color:t.enemy.criticalDamage<0&&!unref(has)(t.enemy.damage)?"gold":"lightpink"})},[createBaseVNode("span",_hoisted_24$2,toDisplayString(t.enemy.criticalDamage<0&&!unref(has)(t.enemy.damage)?unref(isMobile)?"-":"=>":""),1),createTextVNode(toDisplayString(unref(n).formatBigNumber(t.enemy.criticalDamage<0?-t.enemy.criticalDamage:t.enemy.criticalDamage)),1)],4)])]),createBaseVNode("div",_hoisted_25$2,[createBaseVNode("span",_hoisted_26$2,toDisplayString(unref(n).formatBigNumber(unref(n).status.thisMap.ratio))+"防 "+toDisplayString(unref(n).formatBigNumber(t.enemy.defDamage)),1)])])])])],40,_hoisted_1$n)}}}),enemyOne_vue_vue_type_style_index_0_scoped_03a35715_lang="",_export_sfc=(t,e)=>{const n=t.__vccOpts||t;for(const[a,o]of e)n[a]=o;return n},EnemyOne=_export_sfc(_sfc_main$n,[["__scopeId","data-v-03a35715"]]),_hoisted_1$m=["id"],_hoisted_2$j={class:"main-div"},_hoisted_3$j=["id"],_hoisted_4$g=["id"],_sfc_main$m=defineComponent({__name:"scroll",props:{now:null,type:null,drag:{type:Boolean},width:null,update:{type:Boolean},noScroll:{type:Boolean}},emits:["update:now","update:drag","update:update"],setup(t,{emit:e}){const n=t;let a,o=0,i=0;const r=(1e8*Math.random()).toFixed(0),l=window.devicePixelRatio,s=n.width??20,c="horizontal"===n.type?"left":"top",d="horizontal"===n.type?"width":"height";let p,u,h=!1;const m=async()=>{await b(),g()};function g(){if(0===i)return;if(ie{t[r](e[n],o)&&(i.push({element:t,datasetIndex:a,index:s}),l=l||t.inRange(e.x,e.y,o))})),a&&!l?[]:i}var Interaction={evaluateInteractionItems:evaluateInteractionItems,modes:{index(t,e,n,a){const o=getRelativePosition(e,t),i=n.axis||"x",r=n.includeInvisible||!1,l=n.intersect?getIntersectItems(t,o,i,a,r):getNearestItems(t,o,i,!1,a,r),s=[];return l.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=l[0].index,n=t.data[e];n&&!n.skip&&s.push({element:n,datasetIndex:t.index,index:e})})),s):[]},dataset(t,e,n,a){const o=getRelativePosition(e,t),i=n.axis||"xy",r=n.includeInvisible||!1;let l=n.intersect?getIntersectItems(t,o,i,a,r):getNearestItems(t,o,i,!1,a,r);if(l.length>0){const e=l[0].datasetIndex,n=t.getDatasetMeta(e).data;l=[];for(let t=0;t(r+(c?l-t:t))%i,v=()=>{h!==m&&(t.lineTo(b,m),t.lineTo(b,h),t.lineTo(b,g))};for(s&&(p=o[x(0)],t.moveTo(p.x,p.y)),d=0;d<=l;++d){if(p=o[x(d)],p.skip)continue;const e=p.x,n=p.y,a=0|e;a===u?(n
","
","缩放原则如下:","
","1. 首先尝试缩放至最大缩放比例","
","2. 如果缩放后游戏画面高度高于页面高度的95%,那么缩小一个缩放比例,否则保持最大比例"]},showHalo={text:"展示范围光环",desc:["开启后,会在地图上显示范围光环。"]},useFixed={text:"移动鼠标显示怪物信息",desc:["开启后,当鼠标移动到怪物上时,会以盒子的形式展示该点的怪物信息。手机端此功能无效。","
","
","注:当鼠标移动到怪物上时,经过200毫秒才会显示信息,防止误操作。"]},autoLocate={text:"自动勇士定位",desc:["此项会在进入第二章后会起作用。开启后,当勇士处于不同位置打同一个怪物伤害不同时,在地图上使用绿色箭头标出伤害最低的位置,","其余方向,伤害越高,箭头颜色越红,同时在自动寻路中选择可以到达的伤害最低的位置。","
","
","注:如果出现明显卡顿现象可以考虑关闭本设置或自动切换技能设置。"]},antiAliasing={text:"抗锯齿",desc:["是否开启抗锯齿。开启后,画面会变得不那么锐利,观感更加舒适;关闭后,可以更好地展现出像素感,同时部分像素错误也不会出现。"]},showStudied={text:"展示已学习技能",desc:["开启后,会在画面内以类似状态栏的盒子的形式显示当前已学习的怪物技能。"]},settingInfo={transition:transition$1,itemDetail:itemDetail,autoSkill:autoSkill,autoScale:autoScale,showHalo:showHalo,useFixed:useFixed,autoLocate:autoLocate,antiAliasing:antiAliasing,showStudied:showStudied},_hoisted_1$e={class:"colomn"},_hoisted_2$b={class:"tools"},_hoisted_3$b=["id"],_sfc_main$e=defineComponent({__name:"colomn",props:{width:null,height:null,left:null,right:null},emits:["close"],setup(t,{emit:e}){const n=t,a=(1e8*Math.random()).toFixed(0);let o,i,r;function l(){o=document.getElementById(`column-${a}`),i=document.getElementById(`column-left-${a}`),r=document.getElementById(`column-right-${a}`),has(n.width)&&!isMobile&&(o.style.width=`${n.width}%`),has(n.height)&&(o.style.height=`${n.height}%`),has(n.left)&&(i.style.flexBasis=`${n.left}%`),has(n.right)&&(r.style.flexBasis=`${n.right}%`)}function s(t){const n=keycode(t.keyCode);n!==KeyCode.Escape&&n!==KeyCode.KeyX||e("close")}return onMounted((async()=>{l(),await S(50),core.plugin.transition.value&&await S(600),document.addEventListener("keyup",s)})),onUpdated(l),onUnmounted((()=>{document.removeEventListener("keyup",s)})),(t,n)=>{const o=__unplugin_components_1;return openBlock(),createElementBlock("div",_hoisted_1$e,[createBaseVNode("div",_hoisted_2$b,[createBaseVNode("span",{class:"button-text",onClick:n[0]||(n[0]=t=>e("close"))},[createVNode(unref(LeftOutlined)),createTextVNode(" 返回游戏")])]),createBaseVNode("div",{class:"column-main",id:`column-${unref(a)}`},[createVNode(Scroll,{class:"column-left",id:`column-left-${unref(a)}`},{default:withCtx((()=>[renderSlot(t.$slots,"left",{},void 0,!0)])),_:3},8,["id"]),createVNode(o,{class:"divider",dashed:"",style:{"border-color":"#ddd4"},type:unref(isMobile)?"horizontal":"vertical"},null,8,["type"]),createVNode(Scroll,{class:"column-right",id:`column-right-${unref(a)}`},{default:withCtx((()=>[renderSlot(t.$slots,"right",{},void 0,!0)])),_:3},8,["id"])],8,_hoisted_3$b)])}}}),colomn_vue_vue_type_style_index_0_scoped_682173f1_lang="",Column=_export_sfc(_sfc_main$e,[["__scopeId","data-v-682173f1"]]),_hoisted_1$d={id:"setting-list"},_hoisted_2$a=["selected"],_hoisted_3$a=["selected"],_hoisted_4$8=["selected"],_hoisted_5$6=["selected"],_hoisted_6$5=["selected"],_hoisted_7$5=["selected"],_hoisted_8$4=["selected"],_hoisted_9$4=["selected"],_hoisted_10$4=["selected"],_hoisted_11$4=["innerHTML"],_sfc_main$d=defineComponent({__name:"settings",setup(t){const e=window.core,n=ref("transition"),a=computed((()=>splitText(settingInfo[n.value].desc))),o={transition:transition$2,itemDetail:itemDetail$1,autoSkill:autoSkill$1,autoScale:autoScale$1,showHalo:showHalo$1,showStudied:showStudied$1,useFixed:useFixed$1,autoLocate:autoLocate$1,antiAliasing:antiAliasing$1};function i(){e.plugin.settingsOpened.value=!1}function r(t){n.value===t?o[t].value=!o[t].value:n.value=t}return(t,o)=>(openBlock(),createBlock(Column,{width:60,height:60,onClose:i},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$d,[createBaseVNode("span",{class:"selectable",selected:"transition"===n.value,onClick:o[0]||(o[0]=t=>r("transition"))},"界面动画: "+toDisplayString(unref(transition$2)?"ON":"OFF"),9,_hoisted_2$a),createBaseVNode("span",{class:"selectable",selected:"itemDetail"===n.value,onClick:o[1]||(o[1]=t=>r("itemDetail"))},"宝石血瓶显伤: "+toDisplayString(unref(itemDetail$1)?"ON":"OFF"),9,_hoisted_3$a),createBaseVNode("span",{class:"selectable",selected:"autoSkill"===n.value,onClick:o[2]||(o[2]=t=>r("autoSkill"))},"自动切换技能: "+toDisplayString(unref(autoSkill$1)?"ON":"OFF"),9,_hoisted_4$8),createBaseVNode("span",{class:"selectable",selected:"autoScale"===n.value,onClick:o[3]||(o[3]=t=>r("autoScale"))},"自动放缩: "+toDisplayString(unref(autoScale$1)?"ON":"OFF"),9,_hoisted_5$6),createBaseVNode("span",{class:"selectable",selected:"showHalo"===n.value,onClick:o[4]||(o[4]=t=>r("showHalo"))},"展示范围光环: "+toDisplayString(unref(showHalo$1)?"ON":"OFF"),9,_hoisted_6$5),createBaseVNode("span",{class:"selectable",selected:"useFixed"===n.value,onClick:o[5]||(o[5]=t=>r("useFixed"))},"移动鼠标显示怪物信息: "+toDisplayString(unref(useFixed$1)?"ON":"OFF"),9,_hoisted_7$5),createBaseVNode("span",{class:"selectable",selected:"autoLocate"===n.value,onClick:o[6]||(o[6]=t=>r("autoLocate"))},"勇士自动定位: "+toDisplayString(unref(autoLocate$1)?"ON":"OFF"),9,_hoisted_8$4),createBaseVNode("span",{class:"selectable",selected:"antiAliasing"===n.value,onClick:o[7]||(o[7]=t=>r("antiAliasing"))},"抗锯齿: "+toDisplayString(unref(antiAliasing$1)?"ON":"OFF"),9,_hoisted_9$4),unref(e).getSkillLevel(11)>0?(openBlock(),createElementBlock("span",{key:0,class:"selectable",selected:"showStudied"===n.value,onClick:o[8]||(o[8]=t=>r("showStudied"))},"展示已学习技能: "+toDisplayString(unref(showStudied$1)?"ON":"OFF"),9,_hoisted_10$4)):createCommentVNode("",!0)])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(a)},null,8,_hoisted_11$4)])),_:1}))}}),settings_vue_vue_type_style_index_0_scoped_98d9836e_lang="",Settings=_export_sfc(_sfc_main$d,[["__scopeId","data-v-98d9836e"]]),tip={text:"注意事项",condition:"true",desc:["这里显示本塔中需要注意的事项。","
","
",'1. ',"本百科全书字数很多,可以选择性地阅读。不过本条目最好可以全部阅读一遍。","
","
",'2. 本百科全书的内容会随着游戏的推进而增加新内容,',"同时每次增加新内容时都会有提示。","
","
","3. 背包中的系统设置同样非常重要,有些问题可以在那里找到原因。例如当你获得技能时可能会发现开启不了技能,","就是因为你打开了自动切换技能的功能,在系统设置里面有说。","
","
",'4. 本塔中几乎所有 ui 都可以纵向滚动,如果发现显示不全,',"可以尝试上下拖动,就像浏览网页一样。电脑端还可以使用滚轮上下滚动。","大部分可以纵向滚动的 ui 都会在右方有一个滚动条,也可以拖动它进行滚动,例如本百科全书的条目列表和","条目说明都是可以通过上述方式滚动的。","
","
","5. 本塔主要面向电脑端设计,",'建议使用电脑游玩以获得更好的游戏体验。但是手机依然可以游玩本塔,',"但部分操作可能不是很方便,ui 也可能不是很美观,不过依然可以完整体验本游戏。","
","
",'6. 对于手机端,可以点击右下角的难度文字来切换工具栏至数字键。',"这样,你可以更加方便地进行使用技能等操作。","
","
","6. 本塔中几乎所有 ui 在打开时都会有一个0.6s的动画,如果不想要,可以在开头捡的系统设置里面关闭(默认关闭)。","同时,几乎所有 ui 的退出按钮都在左上角。","
","
",'7. 地图上显示的怪物临界有可能不准,当其与折线图有差异时,请以折线图为准。']},about={text:"关于游戏",condition:"true",desc:["使用样板:Vite 魔塔样板","
","样板版本:V2.10.0","
",'游戏开源地址:',"https://github.com/unanmed/HumanBreak","
","游戏作者:古祠","
","BGM来源:网易云音乐等","
","素材来源:大素材库、爱给网、网站素材库等","
","特别鸣谢:无名甲烷菌(提供部分特殊属性与机制想法)","
","测试:"]},tutorial={text:"新手教程",condition:"true",desc:["本条目是魔塔游戏的新手教程,如果对魔塔有一定的了解,可以直接忽略。","
","
",'魔塔是一种固定数值rpg游戏,在打怪的时候,遵循我打你一下,你打我一下',"的原则,造成的伤害是己方攻击减去对方防御,最后怪物的伤害便是你在战斗中失去的生命值。当然,为了游戏体验,","战斗过程会被省略。","
","
","宝石可以增加你的属性,在大部分魔塔中,红宝石增加攻击,蓝宝石增加防御,本塔也不例外。血瓶可以增加你的生命值。",'一般情况下,拾取宝物的优先级是红宝石 > 蓝宝石 > 血瓶,',"但部分情况可能不是这样,这需要你自己的游玩经验等。","
","
","本塔还拥有升级机制,升级时能够给你增加大量的属性,因此,一般情况下当你接近升级时,需要尽快打怪升级。","
","
","然后是门。在魔塔中,很多门都不是必开的门,它们的作用一般是可以躲开怪物拿宝石,或者门里面有血瓶等。","当你血量足够时,这些门可以不用开,不然可能会有必开的门无法开启导致卡关。对于钥匙,每种颜色的钥匙开对应颜色的门,",'价值是红 > 蓝 > 黄。',"
","
","为了更加方便,本塔增加了宝石血瓶显示数据的功能,这样你可以清晰地知道每个宝石增加了多少属性。","
","
","下面是勇士基础属性的说明:","
",'1. 生命值:',"勇士的血量,当它归零时,游戏结束","
",'2. 攻击:',"勇士的攻击,攻击越高,每回合对怪物造成的伤害越高","
",'3. 防御:',"勇士的防御,防御越高,怪物每回合对你造成的伤害越低","
",'4. 经验:',"勇士的经验,到达一定值后会升级。本塔在状态栏中显示为距离升级剩余的经验","
",'5. 金币:',"勇士的金币,可以用于购买物品。本塔中在进入第二章后会有用","
",'6. 护盾:',"勇士的护盾,用处是能够在战后减少同等数值的伤害,在本塔中可以使伤害变为负值。本塔中,在点开无上之盾技能后,","智慧会充当护盾。更多信息可以查看“勇士属性”条目。"]},noun={text:"名词解释",condition:"true",desc:["本条目会解释诸如临界等魔塔术语,对魔塔有一定了解的可以直接忽略。","
","
",'1. 临界:',"在魔塔中,临界是一个非常重要的东西。首先,我们很容易可以得到,吃攻击时只有当减少了战斗回合数时怪物的伤害会减少,",'那么,吃攻击时怪物的减伤是不连续的。而距离下一次减少怪物的伤害需要加的攻击的量',"便是临界。当我们吃一个攻击恰好使怪物伤害减少时,称为“踩临界”。一般情况下,踩临界的减伤要比吃防御要高,","因此,当能踩到临界时,我们应当先踩临界,再吃防御。","
","
",'2. 加防:',"加防指的是加防对怪物的减伤。在本塔中,会以“n防”的形式显示在怪物手册或其他地方。在本塔中,一般你不需要刻意计算",'临界与加防减伤,你可以在怪物手册中查看减伤折线图,',"更多信息请查看“怪物手册”条目。","
","
",'3. 咸鱼:',"一般来讲,开不必开的门,或者使用不必使用的道具被称为咸鱼,或者是咸门,咸道具。一般情况下,说“咸”便是指咸鱼。","一般情况下,门后面有宝石且无法通过其他方式进入的都是必开门,而只有血瓶的都是咸鱼门。"]},shortcut={text:"快捷键",condition:"true",desc:["这里包含本塔中所有的快捷键。对于手机端,可以点击工具栏的难度的位置切换工具栏至数字键。","下面会分为样板快捷键和本塔快捷键两类分别说明。可以ctrl+F进行搜索快捷键的功能。","
","
","下面是样板中的所有快捷键:","
",'X:打开怪物手册',"
",'S:打开存档界面',"
",'D:打开读档界面',"
",'A或5:读取自动存档',"
",'W或6:撤销读取的自动存档',"
",'Q:打开装备栏',"
",'T:打开道具栏',"
",'G:打开楼层传送器',"
",'Z或单击勇士:勇士转向',"
",'空格或双击勇士或7:轻按(拾取勇士周围的宝物但不移动勇士)',"
",'Esc:打开游戏菜单',"
",'R:打开录像回放菜单',"
",'N:询问是否返回游戏主菜单',"
",'V:打开快捷商店',"
",'B:打开数据统计界面',"
",'Alt + 数字键:快速换装',"
",'PgUp或PgDn:浏览地图',"
",'P:打开评论区',"
","
","下面是本塔中新增的快捷键(不包括技能,技能快捷键请在查看技能界面中查看):","
",'M:快速标记怪物',"
",'J:打开技能树',"
",'H:打开百科全书',"
",'E:查看鼠标位置怪物的特殊属性信息',"
",'C:查看鼠标位置怪物的详细临界信息']},extraAttr={text:"勇士属性",condition:"true",desc:["这里只对本塔中新增的勇士属性进行说明。","
","
",'1. 智慧:',"智慧是该塔的核心属性之一。智慧可用于智慧加点,该功能会在进入第一章后开启。使用智慧可以点技能树。","除此之外,智慧也有其它功能。例如点开无上之盾技能后智慧还可以充当护盾,第二章点开学习技能后可以使用智慧学习怪物技能等。","
","
",'2. 生命回复:',"生命回复指的是勇士每回合回复的生命值。当与怪物战斗时,勇士每回合都会回复对应量的生命值。因此,当吃攻击时,","与怪物战斗的回合数可能会减少,导致生命回复的总回复量减少。不过大部分情况下不需要在意这一点,","减少一回合并不会对吸的血造成很大的影响,除了一些特殊情况。","该项会显示在状态栏的生命值右方偏下的位置。","
","
",'3. 额外攻击:',"额外攻击指的是勇士每回合的额外造成的伤害。一般情况下,当勇士破了怪物的防御时,该项便会起作用。","额外攻击相当于魔攻,无法通过一般方式减免。当勇士攻击怪物时,每回合都会附加对应量的伤害,对坚固怪同样有效。","额外攻击会显示在状态栏的攻击右方偏下的位置。"]},statusBar={text:"状态栏",condition:"true",desc:["在本塔中,状态栏与游戏画面是分开的。你可以自由拖动状态栏,也可以修改其大小。","具体方法如下:点击一下状态栏之后,左上角的拖拽图标会放大,此时你可以按住它拖动状态栏。","你可以直接将鼠标放到状态栏的边框上,然后直接拖动以改变状态栏的大小。手机端可以先点击一下状态栏使边框","变宽,然后拖动。电脑端点击状态栏也可以使边框变宽。如果你想折叠状态栏,完全可以拖动状态栏的下边框,","然后直接拖动至上方,这时状态栏便会变成一条线,相当于折叠了状态栏","
","
","状态栏可以纵向滚动,如果你发现状态栏显示不全,可以尝试拉大状态栏,或者纵向拖动状态栏,就像网页上下滚动一样。","电脑端还可以使用滚轮上下滚动。","
","
","如果你觉得状态栏有些碍事,你完全可以将其缩小,或者把它放到不碍事的地方。","
","
","状态栏上面可能会有按钮,你可以直接点击。","
","
","对状态栏布局的说明。","
","本塔的状态栏的布局较为灵活。它是横向的布局,在状态栏较宽时可以看到,属性会横向依次显示。按照显示顺序,","状态栏显示项依次为:","
","
","1. 楼层名,点击后进入浏览地图界面","
","2. 勇士等级","
","3. 当前开启的技能","
","4. 当前勇士生命值,右方偏下为每回合回复的生命值,当点开治愈之泉技能时,右方偏上会显示距离增加生命回复剩余血瓶数","
","5. 当前勇士的攻击,右方偏下为勇士的额外攻击","
","6. 当前勇士的防御","
","7. 当前勇士的智慧,可以用于智慧加点等","
","8. 当前勇士的金币","
","9. 当前勇士距离升级剩余经验数","
","10. 三色钥匙","
","11. 打开技能树(进入第一章后开启)","
","12. 查看勇士的技能(进入第一章后开启)"]},markEnemy={text:"标记怪物",condition:"true",desc:["标记怪物可以使你能够更加方便地了解一个怪物的情况。","
","你可以通过以下两种方式标记怪物:","
","1. 打开怪物手册,选中怪物,进入怪物更多信息栏,点击标记怪物。","
",'2. 将鼠标移动到你想要标记的怪物上面,',"按下M键,即可标记怪物,注意浏览地图中不能用该方式标记。","手机端暂时没有快速标记怪物的方式。","
","
","当一个怪物被标记后,怪物会有以下行为:","
","1. 当勇士恰好能打败怪物时,会进行提示","
","2. 当怪物的伤害恰好低于勇士生命值的2/3或1/3时,会进行提示","
","3. 当勇士恰好踩到怪物的临界时,会进行提示","
","4. 当怪物零伤时,会进行提示","
","5. 被标记的怪物会出现类似于状态栏的盒子,可以随意拖动和改变大小。你也可以选择关闭这个盒子,","被关闭后可以通过重新标记来打开。这个盒子会显示标记的怪物的临界与伤害信息等,与状态栏一样,可以纵向滚动。","
","
","这个功能可以用于标记boss或者较强的挡路怪,当这些怪能够攻击时你可以直接收到信息,不需要再时刻费心注意怪物的伤害。","
","
","注意,标记的怪物是不计入存档的,同时标记的怪物只在本次游戏中有效,刷新页面后便会消失。"]},book={text:"怪物手册",condition:"true",desc:["本塔的怪物手册功能很多,下面一一介绍。","
","
","首先,你可以按X打开怪物手册。除此之外,将鼠标移动到怪物上也可以定点查看怪物的粗略信息。",'将鼠标移动到一个怪物上,按下','E键,可以查看该怪物的特殊属性信息。按下',"C键,可以查看该怪物的详细临界信息。","
","
","怪物手册打开的时候有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭(默认关闭)。","
","
","打开怪物手册后,怪物手册的布局与样板自带的类似。与样板不同的是,这里的怪物手册不再是翻页式结构。","这里的怪物手册是滚动式结构,你可以像浏览网页一样,用手指或鼠标上下滚动或者拖动右边的滚动条,电脑端还可以使用滚轮。","对于电脑端,还可以使用键盘操作。上和下可以上下选择怪物,左和右可以向上或向下移动5个怪物。这些操作与样板都类似。","
","
","点击一个怪物或者按下回车空格后,将进入怪物详细信息界面。这个界面分为多个栏,分别是特殊属性栏,详细临界栏,更多信息栏。","进入怪物详细信息后默认在特殊属性栏,该栏可以查看怪物的特殊属性。","注意特殊属性依然可以纵向滚动。在特殊属性下方,","是怪物的临界表,可以粗略地查看怪物的临界信息。在下方,你可以点击详细临界信息进入详细临界栏。","
","
","在详细临界栏中,怪物的伤害会以可视化折线图的方式显示出来,从而你可以更为清晰地看出怪物减伤趋势。","除了查看怪物伤害曲线,你还可以规划宝石。每个折线图下方都有一个滑动条,你可以拖动来模拟吃宝石。","注意,拖动时,滑动条左边会显示当前的加攻或加防次数,这个数值指的是在勇士所在地图中需要吃的最弱的宝石数量。","例如,当前勇士所在地图中最弱的宝石加2点攻击,加攻次数为3,那么勇士的攻击增加量就为6。","勇士增加的攻击数值也会在下方显示。当加攻次数和加防次数改变时,折线图也会变化。",'当前状态下怪物的伤害以及减伤总量也会在下方显示。',"注意在此栏中无法通过点击屏幕回到怪物手册界面,更多信息请查看最后一段。","
","
","在特殊属性栏,点击下方的怪物更多信息可以进入更多信息栏。此栏中,你可以查看怪物描述。但这不是这一栏的核心功能。","这一栏的核心功能是标记怪物。被标记的怪物会有一些非常方便的行为,这些行为可以在“标记怪物”条目中查看。","
","
","注意,在怪物详细信息中,除详细临界栏外均可以通过点击屏幕返回到怪物手册界面。",'如果你是电脑端,在任意栏目中按下X键会退出怪物手册,返回游戏,','按下回车(Enter)键会回到怪物手册界面。']},fly={text:"楼层传送器",condition:"true",desc:["楼传界面打开时会有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭。(默认关闭)","
","
",'本塔的楼层传送器是一个集分区、小地图、楼层传送、浏览地图于一体的多功能楼传。',"下面是楼传的具体说明:","
","
","首先,对于电脑端,最左侧显示区域信息,手机端则在上方的左侧。","
","
","然后,区域的右侧是小地图栏,这一栏会显示楼层的平面结构。你可以拖动,也可以使用滚轮或者双指放缩,当放缩到一定大小时,","会显示地图的缩略图。直接点击地图也可以选中地图,再次点击会传送至目标地图。","
","
","对于电脑端,最右侧是当前选中的地图的缩略图,手机则在下方,点击缩略图也可以传送。缩略图的下方是当前选中的地图名,","左右各有两个按钮,表示后退10层、后退1层、前进1层、前进10层,与样板的楼传的按钮功能类似,对于小地图无法显示的单层,","可以使用该功能到达。","
","
","最下方是设置按钮,可以切换无边框模式,电脑端还可以切换传统按键模式,传统按键模式下按键遵循样板的楼传按键方式。",'对于非传统模式,上下左右可以移动地图,','PageUp和PageDown可以前进1层或后退1层。']},tools={text:"道具栏与装备栏",condition:"true",desc:["道具栏与装备栏打开时会有一个0.6秒的动画,如果不想要可以在开头捡的系统设置里面关闭。(默认关闭)","
","
","本塔的道具栏没有特别之处,这里不需要说明。主要是装备栏。","
","
","本塔的装备栏手机和电脑端不同,电脑端比手机端多了一个勇士属性的显示。在装备栏的装备列表栏,","上方有两个选择框与一个排序方式的选项。这三个可以筛选你拥有的装备并进行排序,从而让你能够更清楚地知道哪个装备更强。","第一个选择框可以筛选装备增加的属性,如果装备不增加选择的属性,那么会不显示。第二个选择框可以筛选增加的属性的方式,","有数值增加和百分比增加两种。在这个选择框右边有一个图标,这个图标可以改变武器的排序方式,有升序和降序两种,默认为升序。","例如,你拥有两个装备,分别增加10攻击和20攻击,三者你分别选择了攻击,数值,升序,那么增加10攻击的装备会排在上面,","而增加20攻击的装备会排在下面。","
","
","对于电脑端,如果你想装装备,可以直接拖动装备至装备孔,也可以选中装备后再次点击。手机端暂时无法拖动装备。当选中一个装备后,","电脑端和手机端均会显示装备增加或减少的属性,注意有的装备可能不增加属性但是有特殊功能。对于电脑端,","还会直接在勇士属性栏显示增加或减少的属性。"]},skillTree={text:"技能树",condition:"flags.chapter > 0",desc:['打开技能树可以点击状态栏的',"技能树按钮(如果发现没有显示可以尝试上下滚动状态栏),还可以按",'快捷键J打开。',"
","
","技能树是本塔的主要玩法之一。它可以让你使用智慧来学习技能,增加属性等。智慧在状态栏显示在防御的下一项,","绿宝石可以增加勇士的智慧。","
","
","打开技能树页面后,你可以在上方看到技能的名称与描述,下方会显示技能树,以及升级要求等。点击一个技能可以选中技能,","再次点击可以升级技能。注意,前置技能栏可以上下滚动,因此如果发现显示不全,可以尝试上下滚动前置技能栏","
","
","注意,技能在点开之后是无法取消的,因此,加点时请慎重加点。注意,部分技能是必点技能,这些技能会在技能说明中明确指出,","这些技能一般需要尽早点出。"]},study={text:"学习",condition:"core.getSkillLevel(11) > 0",desc:["本条目会详细说明学习的机制与所有可以被学习的技能被学习后的效果。当前已经学习的技能会以与状态栏类似的盒子展示出来。","
","
","首先,学习技能消耗的智慧点会越来越多,初始消耗的智慧点为500,每学习一次增加250。","学习的技能可以持续5场战斗,在技能树界面每升级一次增加3场,",'当前为${core.getSkillLevel(11) * 3 + 2}场。',"学习后对应属性的值,例如抱团怪增加的属性百分比,会与被学习的怪物相同。学习界面可以使用背包中的道具或点击状态栏打开。","
","
","下面会详细说明每一种可以被学习的技能被学习后的效果,没有列出的均不可学习。","
","
",'1. 致命一击:勇士每5回合对怪物造成一次强力攻击。',"
",'2. 恶毒:勇士攻击无视怪物的防御。',"
",'3. 坚固:勇士防御不低于怪物的攻击-1。',"
",'4. n连击:勇士每回合攻击n次',"
",'5. 饥渴:勇士在战前吸取怪物一定量的攻击加载自己身上,',"同时减少怪物相应量的攻击,优先于怪物。","
",'6. 抱团:勇士周围每有一个拥有抱团属性的怪物,勇士的属性便增加一定值。',"相应地,拥有抱团属性的怪物也会受到勇士的加成。","
",'7. 勇气之刃:勇士第一回合造成一定量的伤害,之后正常。',"
",'8. 勇气冲锋:勇士首先发动冲锋,造成一定量的伤害,眩晕怪物5回合。',"学习该技能后,勇士无条件先手。","
",'9. 魔攻:勇士攻击无视怪物的防御。',"
",'10. 先攻:勇士无条件先手。']},special1={text:"第一章怪物特技",condition:"flags.chapter > 0",desc:["这里会展示第一章的怪物中需要特别说明的怪物特技。","
","
",'1. 坚固:',"在本塔中,额外攻击可以对坚固怪造成额外伤害。","
","
",'2. 绝对防御:',"该怪物一般可以用于刷血。该怪物可以使你每回合对怪物造成的伤害恰好为1,导致战斗回合数很高,因此可以刷血。","
","
",'3. 致命一击、勇气之刃、勇气冲锋:',"造成的伤害为怪物每回合对勇士的伤害的一定倍数,而非攻击提高一定倍数。"]},special2={text:"第二章怪物特技",condition:"flags.chapter > 1",desc:["这里会展示第二章的怪物中需要特别说明的怪物特技。","
","
",'1. 电摇嘲讽:',"该特技会撞碎路上的所有地形和门,不需要消耗钥匙,拾取路上的所有道具,与路上的怪物战斗,最后与该怪物战斗。","如果怪物所在位置可以被嘲讽,那么勇士会被继续嘲讽。如果在被嘲讽的路上可以被其他怪物嘲讽,则不会触发。","如果一个点可以被多个怪物嘲讽,那么会优先选择最靠左上角的怪物。",'在被嘲讽之前会自动存档。',"
","
",'2. 永夜、极昼:',"战斗后会在本楼层中加减怪物与勇士的攻防,每个楼层会单独存储。例如你在1楼层增加了100点攻击,2楼层减少了100点攻击,","那么当你从2楼层到1楼层时,攻击会增加200点,反之亦然。注意这里没有计算buff。"]},desc={tip:tip,about:about,tutorial:tutorial,noun:noun,shortcut:shortcut,extraAttr:extraAttr,statusBar:statusBar,markEnemy:markEnemy,book:book,fly:fly,tools:tools,skillTree:skillTree,study:study,special1:special1,special2:special2},_hoisted_1$c={id:"desc-list"},_hoisted_2$9=["selected","show","onClick"],_hoisted_3$9={key:0},_hoisted_4$7=["innerHTML"],_sfc_main$c=defineComponent({__name:"desc",setup(__props){const selected=ref(Object.keys(desc)[0]);function exit(){core.plugin.descOpened.value=!1}const content=computed((()=>eval("`"+splitText(desc[selected.value].desc)+"`")));function click(key){eval(desc[key].condition)&&(selected.value=key)}function show(condition){return eval(condition)}return(t,e)=>(openBlock(),createBlock(Column,{onClose:exit,width:80,height:80,left:30,right:70},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$c,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(desc),((t,e)=>(openBlock(),createElementBlock("div",{class:"selectable desc-item",selected:selected.value===e,show:show(t.condition),onClick:t=>click(e)},[show(t.condition)?(openBlock(),createElementBlock("span",_hoisted_3$9,toDisplayString(t.text),1)):createCommentVNode("",!0)],8,_hoisted_2$9)))),256))])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(content)},null,8,_hoisted_4$7)])),_:1}))}}),desc_vue_vue_type_style_index_0_scoped_bcbf0734_lang="",Desc=_export_sfc(_sfc_main$c,[["__scopeId","data-v-bcbf0734"]]),none={text:"无",opened:"true",desc:["当前未选择技能"]},blade={text:"1:断灭之刃",opened:"core.getSkillLevel(2) > 0",desc:['快捷键1,开启后勇士攻击增加${level:2 * 10}%,',"同时防御减少${level:2 * 10}%。","
","
","当前等级:${level:2}"]},jump={text:"2:跳跃",opened:"flags.skill2 === true",desc:['快捷键2,消耗200点生命值,困难消耗400点,一个地图只能使用3次,',"如果前方为可通行的地面,则不能使用该技能,如果前方为怪物,则将怪物移至勇士视线上第一个不能通行的方块后","如果前方为障碍物,则直接跳到该障碍物的后方。","
","
","进入第二章后不再消耗生命值。"]},shield={text:"3:铸剑为盾",opened:"core.getSkillLevel(10) > 0",desc:['快捷键3,开启后勇士防御增加${level:10 * 10}%,',"同时攻击减少${level:10 * 10}%。","
","
","当前等级:${level:10}"]},skills={none:none,blade:blade,jump:jump,shield:shield},_hoisted_1$b={id:"skill-list"},_hoisted_2$8=["selected","selectable","onClick"],_hoisted_3$8=["innerHTML"],_sfc_main$b=defineComponent({__name:"skill",setup(__props){const selected=ref("none");function skillOpened(skill){return eval(skills[skill].opened)}function select(t){skillOpened(t)&&(selected.value=t)}const content=computed((()=>eval("`"+skills[selected.value].desc.map(((t,e,n)=>/^\d+\./.test(t)?`${" ".repeat(12)}${t}`:has(n[e-1])&&"
"!==t&&"
"===n[e-1]||0===e?`${" ".repeat(8)}${t}`:t)).join("").replace(/level:(\d+)/g,"core.getSkillLevel($1)")+"`")));function exit(){core.plugin.skillOpened.value=!1}return(t,e)=>(openBlock(),createBlock(Column,{onClose:exit,width:70,height:70},{left:withCtx((()=>[createBaseVNode("div",_hoisted_1$b,[(openBlock(!0),createElementBlock(Fragment,null,renderList(unref(skills),((t,e)=>(openBlock(),createElementBlock("span",{class:"selectable skill-item",selected:e===selected.value,selectable:skillOpened(e),onClick:t=>select(e)},toDisplayString(t.text),9,_hoisted_2$8)))),256))])])),right:withCtx((()=>[createBaseVNode("span",{innerHTML:unref(content)},null,8,_hoisted_3$8)])),_:1}))}}),skill_vue_vue_type_style_index_0_scoped_9f619ff1_lang="",Skill=_export_sfc(_sfc_main$b,[["__scopeId","data-v-9f619ff1"]]),_withScopeId$3=t=>(pushScopeId("data-v-b1be4e88"),t=t(),popScopeId(),t),_hoisted_1$a={id:"skill-tree"},_hoisted_2$7={id:"tools"},_hoisted_3$7={id:"skill-title"},_hoisted_4$6={id:"skill-info"},_hoisted_5$5=["innerHTML"],_hoisted_6$4={id:"skill-effect"},_hoisted_7$4=["innerHTML"],_hoisted_8$3=["innerHTML"],_hoisted_9$3={id:"skill-bottom"},_hoisted_10$3=_withScopeId$3((()=>createBaseVNode("canvas",{id:"skill-canvas"},null,-1))),_hoisted_11$3={id:"skill-upgrade-info"},_hoisted_12$2={id:"skill-level"},_hoisted_13$2={key:1,id:"skill-consume",style:{color:"gold"}},_hoisted_14$2={id:"skill-front"},_hoisted_15$1=_withScopeId$3((()=>createBaseVNode("span",null,"前置技能",-1))),_hoisted_16$1={id:"skill-chapter"},_sfc_main$a=defineComponent({__name:"skillTree",setup(__props){let canvas,ctx;const selected=ref(0),chapter=ref("chapter1"),update=ref(!1),chapterDict={chapter1:"第一章",chapter2:"第二章"};flags.skillTree??=0;const chapterList=Object.keys(core.plugin.skills);selected.value=core.plugin.skills[chapterList[flags.skillTree]][0].index,chapter.value=chapterList[flags.skillTree],watch(selected,draw),watch(update,(()=>mdef.value=core.status.hero.mdef));const mdef=ref(core.status.hero.mdef),skill=computed((()=>(update.value,core.getSkillFromIndex(selected.value)))),skills=computed((()=>core.plugin.skills[chapter.value])),desc=computed((()=>eval("`"+splitText(skill.value.desc).replace(/level(:\d+)?/g,((t,e)=>e?`core.getSkillLevel(${e})`:`core.getSkillLevel(${skill.value.index})`))+"`"))),effect=computed((()=>[0,1].map((v=>eval("`"+(0===v?"当前效果:":"下一级效果:")+skill.value.effect.join("").replace(/level(:\d+)?/g,((t,e)=>e?`(core.getSkillLevel(${e}) + ${v})`:`(core.getSkillLevel(${skill.value.index}) + ${v})`))+"`"))))),dict=computed((()=>{const t={};return skills.value.forEach(((e,n)=>{t[e.index]=n})),t})),front=computed((()=>skill.value.front.map((t=>`${core.getSkillLevel(t[0])>=t[1]?"a":"b"}${t[1]}级 ${skills.value[dict.value[t[0]]].title}`)))),consume=computed((()=>(update.value,core.getSkillConsume(selected.value)))),level=computed((()=>(update.value,core.getSkillLevel(selected.value))));function exit(){core.plugin.skillTreeOpened.value=!1}function resize(){const t=getComputedStyle(canvas);canvas.width=parseFloat(t.width)*devicePixelRatio,canvas.height=parseFloat(t.height)*devicePixelRatio}function draw(){const t=dict.value,e=canvas.width/11;ctx.clearRect(0,0,canvas.width,canvas.height),skills.value.forEach((n=>{const[a,o]=n.loc.map((t=>2*t-1));n.front.forEach((([i],r)=>{const l=skills.value[t[i]];ctx.beginPath(),ctx.moveTo(a*e+e/2,o*e+e/2),ctx.lineTo(...l.loc.map((t=>(2*t-1)*e+e/2))),core.getSkillLevel(l.index)
"&&s[i-1]==="
"||i===0?`${" ".repeat(8)}${e}`:e).join("")}const animation=[];let animateTime=0;function init$9(){return core.registerAnimationFrame("animateController",!0,t=>{if(!(t-animateTime<=core.values.animateSpeed)){for(const e of animation)e(t);animateTime=core.animateFrame.animateTime}}),{addAnimate,removeAnimate}}function addAnimate(t){animation.push(t)}function removeAnimate(t){const e=animation.findIndex(i=>i===t);e!==-1&&animation.splice(e,1)}const _hoisted_1$p=["width","height","id"],_sfc_main$p=defineComponent({__name:"boxAnimate",props:{id:null,noborder:{type:Boolean},width:null,height:null},setup(t){const e=t,i=(Math.random()*1e8).toFixed(0);let s,n,a;function r(){var f,g;if(i==="none")return;has(a)&&removeAnimate(a);const l=core.getClsFromId(e.id),c=core.getAnimateFrames(l),d=(f=e.width)!=null?f:32,u=(g=e.height)!=null?g:32;e.noborder||(s.style.border="1.5px solid #ddd",s.style.backgroundColor="#222");const h=window.devicePixelRatio;if(s.style.width=`${d}px`,s.style.height=`${u}px`,s.width=h*d,s.height=h*u,n.scale(h,h),e.id!=="none")if(e.id==="hero"){const m=core.material.images.hero;n.drawImage(m,0,0,m.width/4,m.height/4,0,0,d,u)}else c===1?core.drawIcon(n,e.id,0,0,e.width,e.height):(a=()=>{core.clearMap(n);const m=core.status.globalAnimateStatus%c;core.drawIcon(n,e.id,0,0,d,u,m)},a(),addAnimate(a),onUnmounted(()=>{removeAnimate(a)}))}return onMounted(()=>{s=document.getElementById(`box-animate-${i}`),n=s.getContext("2d"),r()}),onUpdated(()=>{r()}),(l,c)=>{var d,u;return openBlock(),createElementBlock("canvas",{width:(d=t.width)!=null?d:32,height:(u=t.height)!=null?u:32,id:`box-animate-${unref(i)}`},null,8,_hoisted_1$p)}}});function init$8(){return{useDrag,useWheel,useUp,isMobile}}const dragFnMap=new Map,isMobile=matchMedia("(max-width: 600px)").matches;function useDrag(t,e,i,s,n=!1){let a=!1;const r=g=>{a=!0,i&&i(g.clientX,g.clientY,g)},l=g=>{a=!0,i&&i(g.touches[0].clientX,g.touches[0].clientY,g)};t instanceof Array?t.forEach(g=>{g.addEventListener("mousedown",r),g.addEventListener("touchstart",l)}):(t.addEventListener("mousedown",r),t.addEventListener("touchstart",l));const c=n?document:t,d=g=>{!a||e(g.clientX,g.clientY,g)},u=g=>{!a||e(g.touches[0].clientX,g.touches[0].clientY,g)},h=g=>{!a||(s&&s(g),a=!1)},f=g=>{!a||(s&&s(g),a=!1)};c instanceof Array?c.forEach(g=>{g.addEventListener("mouseup",h),g.addEventListener("touchend",f),g.addEventListener("mousemove",d),g.addEventListener("touchmove",u)}):(c.addEventListener("mouseup",h),c.addEventListener("touchend",f),c.addEventListener("mousemove",d),c.addEventListener("touchmove",u)),dragFnMap.set(e,[d,u,h,f])}function cancelGlobalDrag(t){const e=dragFnMap.get(t);dragFnMap.delete(t),e&&(document.removeEventListener("mousemove",e[0]),document.removeEventListener("touchmove",e[1]),document.removeEventListener("mouseup",e[0]),document.removeEventListener("touchend",e[1]))}function useWheel(t,e){t.addEventListener("wheel",i=>{e(i.deltaX,i.deltaY,i.deltaZ,i)})}function useUp(t,e){t.addEventListener("mouseup",i=>{e(i.clientX,i.clientY,i)}),t.addEventListener("touchend",i=>{e(i.touches[0].clientX,i.touches[0].clientY,i)})}const _hoisted_1$o=["selected"],_hoisted_2$l={class:"info"},_hoisted_3$l={class:"leftbar"},_hoisted_4$i={class:"name"},_hoisted_5$f={key:0,class:"special-text"},_hoisted_6$d={key:1,class:"special-text"},_hoisted_7$b={class:"rightbar"},_hoisted_8$a={class:"detail"},_hoisted_9$a={class:"detail-info"},_hoisted_10$8={style:{color:"lightgreen"}},_hoisted_11$8={class:"detail-info"},_hoisted_12$6={style:{color:"lightcoral"}},_hoisted_13$6={class:"detail-info"},_hoisted_14$6={style:{color:"lightblue"}},_hoisted_15$5={class:"detail-info"},_hoisted_16$5={style:{color:"lightyellow"}},_hoisted_17$4={class:"detail-info"},_hoisted_18$4={style:{color:"lawngreen"}},_hoisted_19$4={class:"detail-info"},_hoisted_20$4={class:"detail-info"},_hoisted_21$4={style:{color:"lightsalmon"}},_hoisted_22$3={class:"detail-info"},_hoisted_23$3={style:{color:"lightpink"}},_hoisted_24$3={style:{"font-family":"'Fira Code'"}},_hoisted_25$2={class:"detail-info"},_hoisted_26$2={style:{color:"cyan"}},_sfc_main$o=defineComponent({__name:"enemyOne",props:{enemy:null,selected:{type:Boolean}},emits:["select","hover"],setup(t,{emit:e}){const i=window.core,s=window.innerWidth*.032;function n(r){e("select")}function a(){e("hover")}return(r,l)=>{const c=__unplugin_components_0;return openBlock(),createElementBlock("div",{class:"enemy-container",onClick:n,onMouseenter:a,selected:t.selected},[createBaseVNode("div",_hoisted_2$l,[createBaseVNode("div",_hoisted_3$l,[createBaseVNode("span",_hoisted_4$i,toDisplayString(t.enemy.name),1),createVNode(_sfc_main$p,{id:t.enemy.id,width:unref(isMobile)?32:s,height:unref(isMobile)?32:s,style:{margin:"5%"}},null,8,["id","width","height"]),unref(has)(t.enemy.special)&&t.enemy.special.length>0?(openBlock(),createElementBlock("div",_hoisted_5$f,[(openBlock(!0),createElementBlock(Fragment,null,renderList(t.enemy.toShowSpecial,(d,u)=>(openBlock(),createElementBlock("span",{style:normalizeStyle({color:t.enemy.toShowColor[u]})},"\xA0"+toDisplayString(d)+"\xA0",5))),256))])):(openBlock(),createElementBlock("div",_hoisted_6$d,"\u65E0\u5C5E\u6027"))]),createVNode(c,{type:"vertical",dashed:"",style:{height:"100%",margin:"0 3% 0 1%","border-color":"#ddd4"}}),createBaseVNode("div",_hoisted_7$b,[createBaseVNode("div",_hoisted_8$a,[createBaseVNode("div",_hoisted_9$a,[createBaseVNode("span",_hoisted_10$8,"\u751F\u547D\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.hp)),1)]),createBaseVNode("div",_hoisted_11$8,[createBaseVNode("span",_hoisted_12$6,"\u653B\u51FB\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.atk)),1)]),createBaseVNode("div",_hoisted_13$6,[createBaseVNode("span",_hoisted_14$6,"\u9632\u5FA1\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.def)),1)]),createBaseVNode("div",_hoisted_15$5,[createBaseVNode("span",_hoisted_16$5,"\u91D1\u5E01\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.money)),1)]),createBaseVNode("div",_hoisted_17$4,[createBaseVNode("span",_hoisted_18$4,"\u7ECF\u9A8C\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.exp)),1)]),createBaseVNode("div",_hoisted_19$4,[createBaseVNode("span",{style:normalizeStyle({color:t.enemy.damageColor})},"\u4F24\u5BB3\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.damage)),5)]),createBaseVNode("div",_hoisted_20$4,[createBaseVNode("span",_hoisted_21$4,"\u4E34\u754C\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.critical)),1)]),createBaseVNode("div",_hoisted_22$3,[createBaseVNode("span",_hoisted_23$3,[createTextVNode("\u51CF\u4F24\xA0\xA0\xA0\xA0"),createBaseVNode("span",{style:normalizeStyle({color:t.enemy.criticalDamage<0&&!unref(has)(t.enemy.damage)?"gold":"lightpink"})},[createBaseVNode("span",_hoisted_24$3,toDisplayString(t.enemy.criticalDamage<0&&!unref(has)(t.enemy.damage)?unref(isMobile)?"-":"=>":""),1),createTextVNode(toDisplayString(unref(i).formatBigNumber(t.enemy.criticalDamage<0?-t.enemy.criticalDamage:t.enemy.criticalDamage)),1)],4)])]),createBaseVNode("div",_hoisted_25$2,[createBaseVNode("span",_hoisted_26$2,toDisplayString(unref(i).formatBigNumber(unref(i).status.thisMap.ratio))+"\u9632\xA0\xA0\xA0\xA0"+toDisplayString(unref(i).formatBigNumber(t.enemy.defDamage)),1)])])])])],40,_hoisted_1$o)}}}),enemyOne_vue_vue_type_style_index_0_scoped_03a35715_lang="",_export_sfc=(t,e)=>{const i=t.__vccOpts||t;for(const[s,n]of e)i[s]=n;return i},EnemyOne=_export_sfc(_sfc_main$o,[["__scopeId","data-v-03a35715"]]),_hoisted_1$n=["id"],_hoisted_2$k={class:"main-div"},_hoisted_3$k=["id"],_hoisted_4$h=["id"],_sfc_main$n=defineComponent({__name:"scroll",props:{now:null,type:null,drag:{type:Boolean},width:null,update:{type:Boolean},noScroll:{type:Boolean}},emits:["update:now","update:drag","update:update"],setup(t,{emit:e}){var W;const i=t;let s,n=0,a=0;const r=(1e8*Math.random()).toFixed(0),l=window.devicePixelRatio,c=(W=i.width)!=null?W:20,d=i.type==="horizontal"?"left":"top",u=i.type==="horizontal"?"width":"height";let h,f,g=!1;const m=async()=>{await w(),_()};function _(){if(a===0||(a"u"?function(t){return t()}:window.requestAnimationFrame}();function throttled(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,requestAnimFrame.call(window,()=>{s=!1,t.apply(e,i)}))}}function debounce(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const _toLeftRightCenter=t=>t==="start"?"left":t==="end"?"right":"center",_alignStartEnd=(t,e,i)=>t==="start"?e:t==="end"?i:(e+i)/2,_textX=(t,e,i,s)=>t===(s?"left":"right")?i:t==="center"?(e+i)/2:e;function _getStartAndCountOfVisiblePoints(t,e,i){const s=e.length;let n=0,a=s;if(t._sorted){const{iScale:r,_parsed:l}=t,c=r.axis,{min:d,max:u,minDefined:h,maxDefined:f}=r.getUserBounds();h&&(n=_limitValue(Math.min(_lookupByKey(l,r.axis,d).lo,i?s:_lookupByKey(e,c,r.getPixelForValue(d)).lo),0,s-1)),f?a=_limitValue(Math.max(_lookupByKey(l,r.axis,u,!0).hi+1,i?0:_lookupByKey(e,c,r.getPixelForValue(u),!0).hi+1),n,s)-n:a=s-n}return{start:n,count:a}}function _scaleRangesChanged(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const a=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),a}const atEdge=t=>t===0||t===1,elasticIn=(t,e,i)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*TAU/i)),elasticOut=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*TAU/i)+1,effects={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*HALF_PI)+1,easeOutSine:t=>Math.sin(t*HALF_PI),easeInOutSine:t=>-.5*(Math.cos(PI*t)-1),easeInExpo:t=>t===0?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>t===1?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>atEdge(t)?t:t<.5?.5*Math.pow(2,10*(t*2-1)):.5*(-Math.pow(2,-10*(t*2-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>atEdge(t)?t:elasticIn(t,.075,.3),easeOutElastic:t=>atEdge(t)?t:elasticOut(t,.075,.3),easeInOutElastic(t){return atEdge(t)?t:t<.5?.5*elasticIn(t*2,.1125,.45):.5+.5*elasticOut(t*2-1,.1125,.45)},easeInBack(t){return t*t*((1.70158+1)*t-1.70158)},easeOutBack(t){return(t-=1)*t*((1.70158+1)*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-effects.easeOutBounce(1-t),easeOutBounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:t=>t<.5?effects.easeInBounce(t*2)*.5:effects.easeOutBounce(t*2-1)*.5+.5};function isPatternOrGradient(t){if(t&&typeof t=="object"){const e=t.toString();return e==="[object CanvasPattern]"||e==="[object CanvasGradient]"}return!1}function color(t){return isPatternOrGradient(t)?t:new Color(t)}function getHoverColor(t){return isPatternOrGradient(t)?t:new Color(t).saturate(.5).darken(.1).hexString()}const numbers=["x","y","borderWidth","radius","tension"],colors=["color","borderColor","backgroundColor"];function applyAnimationsDefaults(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>e!=="onProgress"&&e!=="onComplete"&&e!=="fn"}),t.set("animations",{colors:{type:"color",properties:colors},numbers:{type:"number",properties:numbers}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>e|0}}}})}function applyLayoutsDefaults(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const intlCache=new Map;function getNumberFormat(t,e){e=e||{};const i=t+JSON.stringify(e);let s=intlCache.get(i);return s||(s=new Intl.NumberFormat(t,e),intlCache.set(i,s)),s}function formatNumber(t,e,i){return getNumberFormat(e,i).format(t)}const formatters={values(t){return isArray(t)?t:""+t},numeric(t,e,i){if(t===0)return"0";const s=this.chart.options.locale;let n,a=t;if(i.length>1){const d=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(d<1e-4||d>1e15)&&(n="scientific"),a=calculateDelta(t,i)}const r=log10(Math.abs(a)),l=Math.max(Math.min(-1*Math.floor(r),20),0),c={notation:n,minimumFractionDigits:l,maximumFractionDigits:l};return Object.assign(c,this.options.ticks.format),formatNumber(t,s,c)},logarithmic(t,e,i){if(t===0)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(log10(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?formatters.numeric.call(this,t,e,i):""}};function calculateDelta(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t)),i}var Ticks={formatters};function applyScaleDefaults(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,i)=>i.lineWidth,tickColor:(e,i)=>i.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ticks.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&e!=="callback"&&e!=="parser",_indexable:e=>e!=="borderDash"&&e!=="tickBorderDash"&&e!=="dash"}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:e=>e!=="backdropPadding"&&e!=="callback",_indexable:e=>e!=="backdropPadding"})}const overrides=Object.create(null),descriptors=Object.create(null);function getScope$1(t,e){if(!e)return t;const i=e.split(".");for(let s=0,n=i.length;s