| @@ -1132,18 +1132,10 @@ var formation = new Formation(teamsCount,5); | |||
| </div> | |||
| <div class="row-mon-super-awoken"> | |||
| <!--怪物超觉醒--> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-nosawoken" /> | |||
| <template id="sawoken-option-icon"><input type="radio" name="sawoken-choice" class="sawoken-choice" /><label class="awoken-icon"></label></template> | |||
| <div class="awoken-ul"> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="-1" id="sawoken-choice--1" /><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-0" /><label for="sawoken-choice-0" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="1" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="2" id="sawoken-choice-2" /><label for="sawoken-choice-2" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="3" id="sawoken-choice-3" /><label for="sawoken-choice-3" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="4" id="sawoken-choice-4" /><label for="sawoken-choice-4" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -1176,9 +1168,8 @@ var formation = new Formation(teamsCount,5); | |||
| </div> | |||
| <div class="subrow"> | |||
| <button class="m-level-btn-min" value="1"></button>~<button class="m-level-btn-max" value="99"></button> | |||
| <br> | |||
| <button class="m-level-btn-110 display-none" value="110"></button> | |||
| <button class="m-level-btn-120 display-none" value="120"></button> | |||
| <button class="m-level-btn-110 display-none" value="110">110</button> | |||
| <button class="m-level-btn-120 display-none" value="120">120</button> | |||
| </div> | |||
| <div class="m-level-exp"></div> | |||
| </div> | |||
| @@ -488,7 +488,7 @@ const pdcBadgeMap = [ | |||
| {pdf:12,pdc:15}, //墨镜 | |||
| {pdf:13,pdc:17}, //防废 | |||
| {pdf:14,pdc:16}, //防毒 | |||
| {pdf:50,pdc:14}, //月卡 | |||
| {pdf:129,pdc:14}, //月卡 | |||
| ]; | |||
| //pdc的潜觉对应数字 | |||
| const pdcLatentMap = [ | |||
| @@ -448,13 +448,11 @@ function awokenCountInTeam(team, awokenIndex, solo, teamsCount) { | |||
| //启用的觉醒数组片段 | |||
| let enableAwoken = card.awakenings.slice(0, mon.awoken); | |||
| //单人、3人时,大于等于100级且297时增加超觉醒 | |||
| if ((solo || teamsCount === 3) && mon.sawoken >= 0 && mon.level >= 100 && mon.plus.every(p=>p>=99)) { | |||
| const sAwokenT = card.superAwakenings[mon.sawoken]; | |||
| if (sAwokenT >= 0) | |||
| enableAwoken = enableAwoken.concat(sAwokenT); | |||
| if ((solo || teamsCount === 3) && mon.sawoken > 0 && mon.level >= 100 && mon.plus.every(p=>p>=99)) { | |||
| enableAwoken.push(mon.sawoken); | |||
| } | |||
| if (assistCard && assistCard.enabled && assistCard.awakenings.includes(49)) { //如果卡片未启用 | |||
| enableAwoken = enableAwoken.concat(assistCard.awakenings.slice(0, assist.awoken)); | |||
| enableAwoken.push(...assistCard.awakenings.slice(0, assist.awoken)); | |||
| } | |||
| //相同的觉醒数 | |||
| @@ -567,9 +565,8 @@ function calculateAbility(member, assist = null, solo = true, teamsCount = 1) { | |||
| //储存点亮的觉醒 | |||
| let awokenList = memberCard.awakenings.slice(0, member.awoken); | |||
| //单人、3人时,大于等于100级且297时增加超觉醒 | |||
| if ((solo || teamsCount === 3) && member.sawoken >= 0 && member.level >= 100 && member.plus.every(p=>p>=99)) { | |||
| const sAwokenT = memberCard.superAwakenings[member.sawoken]; | |||
| if (sAwokenT >= 0) awokenList.push(sAwokenT) | |||
| if ((solo || teamsCount === 3) && member.sawoken > 0 && member.level >= 100 && member.plus.every(p=>p>=99)) { | |||
| awokenList.push(member.sawoken) | |||
| } | |||
| //如果有武器还要计算武器的觉醒 | |||
| let enableBouns = false; | |||
| @@ -1247,13 +1244,11 @@ function countTeamSB(team, solo) { | |||
| const memberCard = henshinBase(member); | |||
| let enableAwoken = memberCard?.awakenings?.slice(0, member.awoken) || []; | |||
| //单人、3人时,大于等于100级且297时增加超觉醒 | |||
| if ((solo || teamsCount === 3) && member.sawoken >= 0 && member.level >= 100 && member.plus.every(p=>p>=99)) { | |||
| const sAwokenT = memberCard?.superAwakenings?.[member.sawoken]; | |||
| if (sAwokenT >= 0) | |||
| enableAwoken = enableAwoken.concat(sAwokenT); | |||
| if ((solo || teamsCount === 3) && member.sawoken > 0 && member.level >= 100 && member.plus.every(p=>p>=99)) { | |||
| enableAwoken.push(member.sawoken); | |||
| } | |||
| if (assist.card && assist.card.enabled && assist.card.awakenings.includes(49)) { //如果卡片未启用 | |||
| enableAwoken = enableAwoken.concat(assist.card.awakenings.slice(0, assist.awoken)); | |||
| if (assist.card && assist.card.enabled && assist.card.awakenings.includes(49)) { | |||
| enableAwoken.push(...assist.card.awakenings.slice(0, assist.awoken)); | |||
| } | |||
| //大SB 56,小SB 21 | |||
| @@ -1319,7 +1314,7 @@ function countMoveTime(team, leader1id, leader2id, teamIdx) { | |||
| case 21: //大手指 | |||
| moveTime.duration.badge = 2; | |||
| break; | |||
| case 50: //月卡 | |||
| case PAD_PASS_BADGE: //月卡 | |||
| moveTime.duration.badge = 3; | |||
| break; | |||
| } | |||
| @@ -20,11 +20,12 @@ let qrcodeReader; //二维码读取 | |||
| let qrcodeWriter; //二维码输出 | |||
| let selectedDeviceId; //视频源id | |||
| const dataStructure = 4; //阵型输出数据的结构版本 | |||
| const dataStructure = 5; //阵型输出数据的结构版本 | |||
| const cfgPrefix = "PADDF-"; //设置名称的前缀 | |||
| const className_displayNone = "display-none"; | |||
| const dataAttrName = "data-value"; //用于储存默认数据的属性名 | |||
| const isGuideMod = !unsupportFeatures.length && Boolean(Number(getQueryString("guide"))); //是否以图鉴模式启动 | |||
| const PAD_PASS_BADGE = 1<<7 | 1; //月卡徽章编号,129 | |||
| if (location.search.includes('&')) { | |||
| location.search = location.search.replace(/&/ig, '&'); | |||
| @@ -186,8 +187,8 @@ Member.prototype.outObj = function() { | |||
| obj[3] = m.plus; | |||
| } | |||
| } | |||
| if (m.latent != undefined && Array.isArray(m.latent) && m.latent.length >= 1) obj[4] = m.latent; | |||
| if (m.sawoken != undefined && m.sawoken >= 0) obj[5] = m.sawoken; | |||
| if (Array.isArray(m?.latent) && m.latent.length >= 1) obj[4] = m.latent; | |||
| if (m?.sawoken >= 0) obj[5] = m.sawoken; | |||
| const card = Cards[m.id] || Cards[0]; //怪物固定数据 | |||
| const skill = Skills[card.activeSkillId]; | |||
| //有技能等级,并且技能等级低于最大等级时才记录技能 | |||
| @@ -218,7 +219,11 @@ Member.prototype.loadObj = function(m, dataVersion) { | |||
| this.latent = dataVersion > 1 ? m[4] : m.latent; | |||
| if (Array.isArray(this.latent) && dataVersion <= 2) this.latent = this.latent.map(l => l >= 13 ? l + 3 : l); //修复以前自己编的潜觉编号为官方编号 | |||
| if (!Array.isArray(this.latent)) this.latent = []; //如果潜觉不是数组,则改变 | |||
| this.sawoken = dataVersion > 1 ? m[5] : m.sawoken; | |||
| this.sawoken = dataVersion > 1 ? | |||
| (dataStructure < 5 ? | |||
| Cards[this.id].superAwakenings[m[5]] //第四版前,是超觉醒的顺序 | |||
| : m[5] ) //第5版开始,超觉醒使用觉醒编号而不是顺序 | |||
| : m.sawoken; | |||
| this.skilllevel = m[6] || null; | |||
| }; | |||
| Member.prototype.loadFromMember = function(m) { | |||
| @@ -374,7 +379,9 @@ Formation.prototype.loadObj = function(f) { | |||
| const fm = tf[1][mi]; | |||
| m.loadObj(fm, dataVeision); | |||
| }); | |||
| t[2] = tf[2] != undefined ? (dataVeision > 3 ? tf[2] : badgeConvert(tf[2])) : 1; //徽章 | |||
| t[2] = dataVeision > 3 ? //徽章 | |||
| (dataVeision < 5 && tf[2] == 50 ? PAD_PASS_BADGE : tf[2]) //5版开始月卡徽章用开关1<<7来识别 | |||
| : badgeConvert(tf[2]); //1、2版老数据的徽章 | |||
| t[3] = tf[3] ?? 0; //队长 | |||
| } | |||
| }); | |||
| @@ -400,8 +407,8 @@ Formation.prototype.loadObj = function(f) { | |||
| case 15:case 16:case 17: { | |||
| return old - 3; | |||
| } | |||
| case 18: { | |||
| return 50; | |||
| case 18: { //月卡 | |||
| return 1<<7 | 1 ; | |||
| } | |||
| default: return 1; | |||
| } | |||
| @@ -450,8 +457,8 @@ Formation.prototype.getPdcQrStr = function() | |||
| o.set(4, m.plus[0]); | |||
| o.set(5, m.plus[1]); | |||
| o.set(6, m.plus[2]); | |||
| o.set(7, (m.awoken != null && m.awoken >= Cards[m.id].awakenings.length) ? -1 : m.awoken); | |||
| o.set(8, (m.sawoken != null && m.sawoken >= 0) ? Cards[m.id].superAwakenings[m.sawoken] : 0); | |||
| o.set(7, (m?.awoken >= Cards[m.id].awakenings.length) ? -1 : m.awoken); | |||
| o.set(8, m?.sawoken ?? 0); | |||
| if (a.id != 0) | |||
| { | |||
| o.set(9, a.id); | |||
| @@ -574,9 +581,9 @@ class PlayerDataDeck { | |||
| { | |||
| let datas = decks1.concat(decks2 ?? []); | |||
| let decks = datas.map(deck=>new PlayerDataDeck(deck, parsedCards)); | |||
| if (Boolean(decks2)) | |||
| if (Boolean(decks2)) //如果开了月卡 | |||
| { | |||
| decks.forEach(deck=>{if (deck.badge === 1) deck.badge = 50;}); | |||
| decks.forEach(deck=>{if (deck.badge === 1) deck.badge |= 1 << 7;}); //觉醒1打开月卡flag | |||
| } | |||
| return decks; | |||
| } | |||
| @@ -592,12 +599,12 @@ class PlayerDataDeck { | |||
| const ta = tAssists[idx]; | |||
| if (member) { | |||
| tm.loadFromMember(member); | |||
| tm.sawoken = Cards[member.id].superAwakenings.indexOf(member.superAwoken); | |||
| tm.sawoken = member.superAwoken; | |||
| tm.plus = Object.values(member.plus); | |||
| tm.skilllevel = member.skillLevel; | |||
| if (member.assist) { | |||
| ta.loadFromMember(member.assist); | |||
| ta.sawoken = Cards[member.assist.id].superAwakenings.indexOf(member.assist.superAwoken); | |||
| ta.sawoken = member.assist.superAwoken; | |||
| ta.plus = Object.values(member.assist.plus); | |||
| ta.skilllevel = member.assist.skillLevel; | |||
| } | |||
| @@ -654,7 +661,7 @@ class PlayerDataCard { | |||
| m.awoken = this.awoken; | |||
| m.skilllevel = this.skillLevel; | |||
| m.plus = [this.plus.hp,this.plus.atk,this.plus.rcv]; | |||
| m.sawoken = Cards[this.id].superAwakenings.indexOf(this.superAwoken); | |||
| m.sawoken = this.superAwoken; | |||
| m.latent = this.latent.concat(); | |||
| return m; | |||
| } | |||
| @@ -1349,7 +1356,7 @@ function reloadFormationData(event) { | |||
| if (isGuideMod && !isNaN(mid)) { | |||
| formation.teams[editingTarget[0]][editingTarget[1]][editingTarget[2]].id = mid; | |||
| } | |||
| editMon(editingTarget[0], editingTarget[1], editingTarget[2]); | |||
| editBox.editMon(editingTarget[0], editingTarget[1], editingTarget[2]); | |||
| if (editingTarget && searchArr) | |||
| { | |||
| showSearch(searchArr); | |||
| @@ -1442,7 +1449,7 @@ function inputFromQrString(string) | |||
| { | |||
| const re = {code: 0, message: null}; | |||
| //code 1~99 为各种编码 | |||
| if (string.substr(0,1) == "{" && string.substr(-1,1) == "}") | |||
| if (string[0] === "{" && string[string.length-1] === "}") | |||
| { | |||
| try{ | |||
| let jo = JSON.parse(string); | |||
| @@ -1517,14 +1524,14 @@ function pdcFotmationToPdfFotmation(inputString) | |||
| } | |||
| team.members = membersStr.map(memberStr=>{ | |||
| let memberArr = memberStr.split(',').map(valueStr=>{ | |||
| let idx = parseInt(valueStr.substr(0,2),36); | |||
| let value = valueStr.substr(2); | |||
| let idx = parseInt(valueStr.substring(0,2),36); | |||
| let value = valueStr.substring(2); | |||
| if (idx !== 2) | |||
| { | |||
| value = parseInt(value,36); | |||
| }else | |||
| { | |||
| value = value.split(/(\w{2})/).filter(Boolean).map(v=>parseInt(v,36)); | |||
| value = value.match(/\w{2}/g).map(v=>parseInt(v,36)); | |||
| } | |||
| return [idx, value]; | |||
| }); | |||
| @@ -1550,7 +1557,7 @@ function pdcFotmationToPdfFotmation(inputString) | |||
| if (team2Leader) | |||
| { | |||
| team2Leader.set(15,0); | |||
| team2.splice(0,0,team2Leader); | |||
| team2.unshift(team2Leader); | |||
| team1.splice(team1.indexOf(team2Leader),1); | |||
| } | |||
| } | |||
| @@ -1580,7 +1587,7 @@ function pdcFotmationToPdfFotmation(inputString) | |||
| m.awoken = member.get(7) >= 0 ? member.get(7) : Cards[m.id].awakenings.length; | |||
| a.awoken = member.get(14) >= 0 ? member.get(14) : (a.id > 0 ? Cards[a.id].awakenings.length : 0); | |||
| m.sawoken = member.get(8) ? Cards[m.id].superAwakenings.indexOf(member.get(8)) : null; | |||
| m.sawoken = member.get(8); | |||
| }); | |||
| }); | |||
| return f; | |||
| @@ -1626,6 +1633,7 @@ function initialize() { | |||
| statusLine = controlBox.querySelector(".status"); //显示当前状态的 | |||
| formationBox = document.body.querySelector(".formation-box"); | |||
| editBox = document.body.querySelector(".edit-box"); | |||
| editBox.editMon = editMember; | |||
| if (isGuideMod) { | |||
| console.info('现在是 怪物图鉴 模式'); | |||
| @@ -2227,7 +2235,7 @@ function initialize() { | |||
| //编辑界面点击每个怪物的头像的处理 | |||
| function clickMonHead(e) { | |||
| const arr = getMemberArrayIndexFromMonHead(this); | |||
| editMon(arr[0], arr[1], arr[2]); | |||
| editBox.editMon(arr[0], arr[1], arr[2]); | |||
| return false; //没有false将会打开链接 | |||
| } | |||
| //编辑界面每个怪物的头像的拖动 | |||
| @@ -3502,7 +3510,7 @@ function initialize() { | |||
| }); | |||
| //id搜索 | |||
| settingBox.changeMonId = editBoxChangeMonId; | |||
| editBox.changeMonId = editBoxChangeMonId; | |||
| const monstersID = settingBox.querySelector(".row-mon-id .m-id"); | |||
| const btnSearchByString = settingBox.querySelector(".row-mon-id .search-by-string"); | |||
| function idChange(event) | |||
| @@ -3528,7 +3536,7 @@ function initialize() { | |||
| history.pushState(state, null, locationURL); | |||
| } | |||
| settingBox.changeMonId(newId); | |||
| editBox.changeMonId(newId); | |||
| } | |||
| return true; | |||
| }else | |||
| @@ -3588,29 +3596,7 @@ function initialize() { | |||
| //超觉醒 | |||
| const monEditSAwokensRow = settingBox.querySelector(".row-mon-super-awoken"); | |||
| monEditSAwokensRow.swaokenIndex = -1; | |||
| const monEditSAwokens = Array.from(monEditSAwokensRow.querySelectorAll(".awoken-ul input[name='sawoken-choice']")); | |||
| function notCheckMyself() { | |||
| const value = parseInt(this.value, 10); | |||
| if (value >= 0 && monEditSAwokensRow.swaokenIndex === value) { | |||
| monEditSAwokens[0].click(); | |||
| return false; | |||
| } else { | |||
| monEditSAwokensRow.swaokenIndex = value; | |||
| const plusArr = [monEditAddHp,monEditAddAtk,monEditAddRcv]; | |||
| //自动打上297 | |||
| if (value >= 0 && plusArr.some(ipt=>parseInt(ipt.value)<99)) | |||
| { | |||
| console.debug("点亮超觉醒,自动设定297"); | |||
| plusArr.forEach(ipt=>ipt.value=99); | |||
| reCalculateAbility(); | |||
| } | |||
| } | |||
| } | |||
| monEditSAwokens.forEach(akDom => { | |||
| akDom.onclick = notCheckMyself; | |||
| }); | |||
| //3个快速设置this.ipt为自己的value | |||
| function setIptToMyValue() { | |||
| if (this.ipt.value != this.value) { | |||
| @@ -3857,7 +3843,7 @@ function initialize() { | |||
| if (card.superAwakenings.length) //如果支持超觉醒 | |||
| { | |||
| const mSAwokenChoIpt = monEditSAwokensRow.querySelector("input[name='sawoken-choice']:checked"); | |||
| mon.sawoken = mSAwokenChoIpt ? parseInt(mSAwokenChoIpt.value, 10) : -1; | |||
| mon.sawoken = parseInt(mSAwokenChoIpt?.value, 10) || 0; | |||
| } | |||
| if (card.stacking || card.types.some(t=>[0,12,14,15].includes(t)) && | |||
| @@ -4152,15 +4138,14 @@ function changeid(mon, monDom, latentDom, assist) { | |||
| } | |||
| const sawoken = monDom.querySelector(".super-awoken"); | |||
| if (sawoken) { //如果存在超觉醒的DOM | |||
| if (mon.sawoken != null && //怪物设定了超觉醒 | |||
| mon?.sawoken >= 0 && //怪物超觉醒编号大于0 | |||
| card.superAwakenings.length && //卡片有超觉醒 | |||
| if (mon?.sawoken > 0 && //怪物超觉醒编号大于0 | |||
| //card.superAwakenings.length && //卡片有超觉醒 | |||
| mon.level >= 100 && //怪物大于100级 | |||
| mon.plus.every(p=>p>=99) //怪物297了 | |||
| ) { | |||
| sawoken.classList.remove(className_displayNone); | |||
| const sawokenIcon = sawoken.querySelector(".awoken-icon"); | |||
| sawokenIcon.setAttribute("data-awoken-icon", card.superAwakenings[mon.sawoken]); | |||
| sawokenIcon.setAttribute("data-awoken-icon", mon.sawoken); | |||
| } else { | |||
| sawoken.classList.add(className_displayNone); | |||
| } | |||
| @@ -4278,7 +4263,7 @@ function refreshLatent(latents, monid, latentsNode, option) { | |||
| } | |||
| }; | |||
| //点击怪物头像,出现编辑窗 | |||
| function editMon(teamNum, isAssist, indexInTeam) { | |||
| function editMember(teamNum, isAssist, indexInTeam) { | |||
| //数据 | |||
| const mon = formation.teams[teamNum][isAssist][indexInTeam]; | |||
| @@ -4313,9 +4298,10 @@ function editMon(teamNum, isAssist, indexInTeam) { | |||
| //if (mon.awoken > 0 && monEditAwokens[mon.awoken]) monEditAwokens[mon.awoken].click(); //涉及到觉醒数字的显示,所以需要点一下,为了减少计算次数,把这一条移动到了最后面 | |||
| //超觉醒 | |||
| const monEditSAwokensRow = settingBox.querySelector(".row-mon-super-awoken"); | |||
| const monEditSAwokens = monEditSAwokensRow.querySelectorAll(".awoken-ul input[name='sawoken-choice']"); //单选框,0号是隐藏的 | |||
| monEditSAwokens[(mon.sawoken >= 0 && monEditSAwokens[mon.sawoken + 1]) ? mon.sawoken + 1 : 0].checked = true; | |||
| monEditSAwokensRow.swaokenIndex = mon.sawoken; | |||
| const monEditSAwokens = Array.from(monEditSAwokensRow.querySelectorAll(".awoken-ul input[name='sawoken-choice']")); //单选框,0号是隐藏的 | |||
| const noSAwokenRadio = settingBox.querySelector("#sawoken-choice-nosawoken"); //不选超觉醒的选项 | |||
| (monEditSAwokens.find(ipt=>mon.sawoken === parseInt(ipt.value,10)) || noSAwokenRadio).checked = true; | |||
| monEditSAwokensRow.swaoken = mon.sawoken; | |||
| const monEditLv = settingBox.querySelector(".row-mon-level .m-level"); | |||
| monEditLv.value = mon.level || 1; | |||
| @@ -4447,28 +4433,66 @@ function editBoxChangeMonId(id) { | |||
| mAwokenIpt[card.awakenings.length].click(); //选择最后一个觉醒 | |||
| //超觉醒 | |||
| const monEditSAwokensRow = settingBox.querySelector(".row-mon-super-awoken"); | |||
| const mSAwoken = Array.from(monEditSAwokensRow.querySelectorAll(".awoken-ul .awoken-icon")); | |||
| let prevSAwokens = mSAwoken.map(icon=>parseInt(icon.getAttribute("data-awoken-icon") || 0, 10)).filter(Boolean); | |||
| if (card.superAwakenings.length > 0) //辅助时也还是加入超觉醒吧 | |||
| { | |||
| if (card.superAwakenings.length == prevSAwokens.length && | |||
| card.superAwakenings.every((sak, idx)=>sak===prevSAwokens[idx])) | |||
| { | |||
| //切换前后超觉相同,什么都不做 | |||
| const monEditSAwokensUl = settingBox.querySelector(".row-mon-super-awoken .awoken-ul"); | |||
| const monEditSAwokensIcons = Array.from(monEditSAwokensUl.querySelectorAll(".awoken-icon")); | |||
| const noSAwokenRadio = settingBox.querySelector("#sawoken-choice-nosawoken"); //不选超觉醒的选项 | |||
| //获得之前的所有超觉醒 | |||
| const prevSAwokens = monEditSAwokensIcons.map(icon=>parseInt(icon.getAttribute("data-awoken-icon") || 0, 10)).filter(Boolean); | |||
| function notCheckMyself() { | |||
| const sawoken = parseInt(this.value, 10); | |||
| if (monEditSAwokensUl.swaoken === sawoken && this != noSAwokenRadio) { | |||
| noSAwokenRadio.click(); | |||
| monEditSAwokensUl.swaoken = 0; | |||
| return false; | |||
| } else { | |||
| for (let ai = 0; ai < mSAwoken.length; ai++) { | |||
| if (ai < card.superAwakenings.length) { | |||
| mSAwoken[ai].setAttribute("data-awoken-icon", card.superAwakenings[ai]); | |||
| monEditSAwokensUl.swaoken = sawoken; | |||
| const level = settingBox.querySelector(".row-mon-level .m-level"); | |||
| const plusArr = [...settingBox.querySelectorAll(".row-mon-plus input[type='number']")]; | |||
| if (sawoken > 0) | |||
| { | |||
| let recalFlag = false; | |||
| //自动100级 | |||
| if (parseInt(level.value, 10)<100) | |||
| { | |||
| console.debug("点亮超觉醒,自动设定100级"); | |||
| level.value = 100; | |||
| recalFlag = true; | |||
| } | |||
| mSAwoken[ai].classList.toggle(className_displayNone, ai >= card.superAwakenings.length);; | |||
| //自动打上297 | |||
| if (plusArr.some(ipt=>parseInt(ipt.value, 10)<99)) | |||
| { | |||
| console.debug("点亮超觉醒,自动设定297"); | |||
| plusArr.forEach(ipt=>ipt.value=99); | |||
| recalFlag = true; | |||
| } | |||
| if (recalFlag) editBox.reCalculateAbility(); | |||
| } | |||
| monEditSAwokensRow.querySelector("#sawoken-choice--1").click(); //选中隐藏的空超觉 | |||
| } | |||
| monEditSAwokensRow.classList.remove(className_displayNone); | |||
| } | |||
| if (card.superAwakenings.length == prevSAwokens.length && | |||
| card.superAwakenings.every((sak, idx)=>sak===prevSAwokens[idx]) | |||
| ) | |||
| { | |||
| //切换前后超觉相同,什么都不做 | |||
| //console.debug('与上一个超觉醒完全相同,不用修改超觉醒'); | |||
| } else { | |||
| monEditSAwokensRow.classList.add(className_displayNone); | |||
| monEditSAwokensRow.querySelector("#sawoken-choice--1").click(); //选中隐藏的空超觉 | |||
| const optionIconTemplate = settingBox.querySelector('#sawoken-option-icon'); | |||
| monEditSAwokensUl.innerHTML = ''; //清空旧的超觉醒 | |||
| monEditSAwokensUl.swaoken = 0; | |||
| card.superAwakenings.forEach((sak,idx)=>{ | |||
| const clone = document.importNode(optionIconTemplate.content, true); | |||
| const input = clone.querySelector('input'); | |||
| const label = clone.querySelector('label'); | |||
| input.value = sak; | |||
| input.onclick = notCheckMyself; | |||
| label.setAttribute("data-awoken-icon", sak); | |||
| const id = `sawoken-choice-${idx}`; | |||
| input.id = id; | |||
| label.setAttribute('for', id); | |||
| monEditSAwokensUl.append(clone); | |||
| }); | |||
| noSAwokenRadio.click(); //选中隐藏的空超觉 | |||
| } | |||
| const monEditLvMax = settingBox.querySelector(".m-level-btn-max"); | |||
| @@ -4862,13 +4886,12 @@ function refreshmemberAwoken(memberAwokenDom, assistAwokenDom, team, idx) { | |||
| let memberAwokens = memberCard?.awakenings?.slice(0,memberData.awoken) || []; | |||
| //单人和三人为队员增加超觉醒 | |||
| if ((solo || teamsCount === 3) && | |||
| memberData.sawoken != null && //怪物设定了超觉醒 | |||
| memberData.sawoken >= 0 && //怪物超觉醒编号大于0 | |||
| memberCard?.superAwakenings?.length >= 0 && //卡片有超觉醒 | |||
| memberData.sawoken > 0 && //怪物超觉醒编号大于0 | |||
| //memberCard?.superAwakenings?.length > 0 && //卡片有超觉醒 | |||
| memberData.level >= 100 && //怪物大于100级 | |||
| memberData.plus.every(p=>p>=99) //怪物297了 | |||
| ) { | |||
| memberAwokens.push(memberCard.superAwakenings[memberData.sawoken]); | |||
| memberAwokens.push(memberData.sawoken); | |||
| } | |||
| //memberAwokens.sort(); | |||
| //武器觉醒 | |||
| @@ -96,7 +96,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="12" id="team-1-badge-12"><label class="badge" data-badge-icon="12" for="team-1-badge-12"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="13" id="team-1-badge-13"><label class="badge" data-badge-icon="13" for="team-1-badge-13"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="14" id="team-1-badge-14"><label class="badge" data-badge-icon="14" for="team-1-badge-14"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="50" id="team-1-badge-50"><label class="badge" data-badge-icon="50" for="team-1-badge-50"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="129" id="team-1-badge-129"><label class="badge" data-badge-icon="129" for="team-1-badge-129"></label></li> | |||
| <!--<li><input type="radio" name="team-1-badge" class="badge-radio" value="15" id="team-1-badge-15"><label class="badge" data-badge-icon="15" for="team-1-badge-15"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li>--> | |||
| </ul> | |||
| @@ -978,18 +978,10 @@ var formation = new Formation(teamsCount,6); | |||
| </div> | |||
| <div class="row-mon-super-awoken"> | |||
| <!--怪物超觉醒--> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-nosawoken" /> | |||
| <template id="sawoken-option-icon"><input type="radio" name="sawoken-choice" class="sawoken-choice" /><label class="awoken-icon"></label></template> | |||
| <div class="awoken-ul"> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="-1" id="sawoken-choice--1" /><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-0" /><label for="sawoken-choice-0" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="1" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="2" id="sawoken-choice-2" /><label for="sawoken-choice-2" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="3" id="sawoken-choice-3" /><label for="sawoken-choice-3" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="4" id="sawoken-choice-4" /><label for="sawoken-choice-4" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -1022,9 +1014,8 @@ var formation = new Formation(teamsCount,6); | |||
| </div> | |||
| <div class="subrow"> | |||
| <button class="m-level-btn-min" value="1"></button>~<button class="m-level-btn-max" value="99"></button> | |||
| <br> | |||
| <button class="m-level-btn-110 display-none" value="110"></button> | |||
| <button class="m-level-btn-120 display-none" value="120"></button> | |||
| <button class="m-level-btn-110 display-none" value="110">110</button> | |||
| <button class="m-level-btn-120 display-none" value="120">120</button> | |||
| </div> | |||
| <div class="m-level-exp"></div> | |||
| </div> | |||
| @@ -1397,7 +1397,7 @@ | |||
| .badge[data-badge-icon='23']::before{ | |||
| background-position-y:calc(-30px * 23); | |||
| } | |||
| .badge[data-badge-icon='50']::before{ | |||
| .badge[data-badge-icon='129']::before{ | |||
| background-position-x: -36px; | |||
| background-position-y: 0; | |||
| } | |||
| @@ -1209,20 +1209,20 @@ icon.inflicts::after | |||
| .member-awoken .awoken-ul, | |||
| .member-types .types-ul | |||
| { | |||
| grid-auto-rows: 25.6px; | |||
| grid-auto-rows: 21px; | |||
| place-content: start center; | |||
| } | |||
| .member-awoken .awoken-ul | |||
| { | |||
| grid-gap: 2px; | |||
| grid-template-columns: repeat(3, 25.6px); | |||
| grid-template-columns: repeat(4, 21px); | |||
| } | |||
| .member-awoken .awoken-icon, | |||
| .member-types .type-icon | |||
| { | |||
| filter: unset; | |||
| transform: scale(0.80); | |||
| margin: calc(-32px * (1 - 0.80) / 2); | |||
| transform: scale(0.65); | |||
| margin: calc(-32px * (1 - 0.65) / 2); | |||
| } | |||
| .tIf-addition-info, | |||
| .team-assist-awoken, | |||
| @@ -2147,14 +2147,10 @@ icon.inflicts::after | |||
| /*未选中的超觉醒半透明,选中的不透明*/ | |||
| .row-mon-super-awoken .sawoken-choice{display:none;} | |||
| .row-mon-super-awoken .sawoken-choice+label | |||
| .row-mon-super-awoken .sawoken-choice:not(:checked)+label | |||
| { | |||
| opacity: var(--search-icon-unchecked); | |||
| } | |||
| .row-mon-super-awoken .sawoken-choice:checked+label | |||
| { | |||
| opacity: unset; | |||
| } | |||
| /*怪物能力横条*/ | |||
| /*.row-ability{ | |||
| border-color: #D5AF5B; | |||
| @@ -2274,11 +2270,10 @@ icon.inflicts::after | |||
| { | |||
| margin-left: 10px; | |||
| } | |||
| .row-mon-level .level-value::before, | |||
| .row-mon-level .m-level-btn-min::before, | |||
| .row-mon-level .m-level-btn-max::before, | |||
| .row-mon-level .m-level-btn-110::before, | |||
| .row-mon-level .m-level-btn-120::before | |||
| .row-mon-level :is( | |||
| .level-value, | |||
| button | |||
| )::before | |||
| { | |||
| content: "Lv."; | |||
| } | |||
| @@ -2286,11 +2281,9 @@ icon.inflicts::after | |||
| { | |||
| font-family: var(--game-font-family ); | |||
| font-size: 22px; | |||
| line-height: 35px; | |||
| line-height: 22px; | |||
| } | |||
| /*.row-mon-level .level-value::before{ | |||
| content: "Lv."; | |||
| }*/ | |||
| .edit-box .setting-box .m-level | |||
| { | |||
| color: inherit; | |||
| @@ -2302,27 +2295,30 @@ icon.inflicts::after | |||
| width: 100px; | |||
| height: 40px; | |||
| } | |||
| .m-level-btn-min, | |||
| .m-level-btn-max, | |||
| .m-level-btn-110, | |||
| .m-level-btn-120 | |||
| .row-mon-level button | |||
| { | |||
| box-sizing: border-box; | |||
| font-size: 18px; | |||
| padding: 0 3px; | |||
| vertical-align: top; | |||
| } | |||
| .row-mon-level .m-level-btn-min::after, | |||
| .row-mon-level .m-level-btn-max::after | |||
| .row-mon-level button::before | |||
| { | |||
| content: attr(value); | |||
| font-size: 0.75em; | |||
| } | |||
| .row-mon-level .m-level-btn-110::after | |||
| .row-mon-level :where( | |||
| .m-level-btn-min, | |||
| .m-level-btn-max, | |||
| )::after | |||
| { | |||
| content: attr(value) " (+" attr(data-limit-break-incr) "%)"; | |||
| content: attr(value); | |||
| } | |||
| .row-mon-level .m-level-btn-120::after | |||
| .row-mon-level .m-level-btn-110::after | |||
| { | |||
| content: attr(value); | |||
| content: "(+" attr(data-limit-break-incr) "%)"; | |||
| color: #00A0D8; | |||
| font-size: 0.75em; | |||
| display: block; | |||
| } | |||
| .m-level-btn-110 | |||
| { | |||
| @@ -110,7 +110,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="12" id="team-1-badge-12"><label class="badge" data-badge-icon="12" for="team-1-badge-12"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="13" id="team-1-badge-13"><label class="badge" data-badge-icon="13" for="team-1-badge-13"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="14" id="team-1-badge-14"><label class="badge" data-badge-icon="14" for="team-1-badge-14"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="50" id="team-1-badge-50"><label class="badge" data-badge-icon="50" for="team-1-badge-50"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="129" id="team-1-badge-129"><label class="badge" data-badge-icon="129" for="team-1-badge-129"></label></li> | |||
| <!--<li><input type="radio" name="team-1-badge" class="badge-radio" value="15" id="team-1-badge-15"><label class="badge" data-badge-icon="15" for="team-1-badge-15"></label></li> | |||
| <li><input type="radio" name="team-1-badge" class="badge-radio" value="16" id="team-1-badge-16"><label class="badge" data-badge-icon="16" for="team-1-badge-16"></label></li>--> | |||
| </ul> | |||
| @@ -624,7 +624,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="12" id="team-2-badge-12"><label class="badge" data-badge-icon="12" for="team-2-badge-12"></label></li> | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="13" id="team-2-badge-13"><label class="badge" data-badge-icon="13" for="team-2-badge-13"></label></li> | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="14" id="team-2-badge-14"><label class="badge" data-badge-icon="14" for="team-2-badge-14"></label></li> | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="50" id="team-2-badge-50"><label class="badge" data-badge-icon="50" for="team-2-badge-50"></label></li> | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="129" id="team-2-badge-129"><label class="badge" data-badge-icon="129" for="team-2-badge-129"></label></li> | |||
| <!--<li><input type="radio" name="team-2-badge" class="badge-radio" value="15" id="team-2-badge-15"><label class="badge" data-badge-icon="15" for="team-2-badge-15"></label></li> | |||
| <li><input type="radio" name="team-2-badge" class="badge-radio" value="16" id="team-2-badge-16"><label class="badge" data-badge-icon="16" for="team-2-badge-16"></label></li>--> | |||
| </ul> | |||
| @@ -1135,7 +1135,7 @@ var formation = new Formation(teamsCount,6); | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="12" id="team-3-badge-12"><label class="badge" data-badge-icon="12" for="team-3-badge-12"></label></li> | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="13" id="team-3-badge-13"><label class="badge" data-badge-icon="13" for="team-3-badge-13"></label></li> | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="14" id="team-3-badge-14"><label class="badge" data-badge-icon="14" for="team-3-badge-14"></label></li> | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="50" id="team-3-badge-50"><label class="badge" data-badge-icon="50" for="team-3-badge-50"></label></li> | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="129" id="team-3-badge-129"><label class="badge" data-badge-icon="129" for="team-3-badge-129"></label></li> | |||
| <!--<li><input type="radio" name="team-3-badge" class="badge-radio" value="15" id="team-3-badge-15"><label class="badge" data-badge-icon="15" for="team-3-badge-15"></label></li> | |||
| <li><input type="radio" name="team-3-badge" class="badge-radio" value="16" id="team-3-badge-16"><label class="badge" data-badge-icon="16" for="team-3-badge-16"></label></li>--> | |||
| </ul> | |||
| @@ -2014,18 +2014,10 @@ var formation = new Formation(teamsCount,6); | |||
| </div> | |||
| <div class="row-mon-super-awoken"> | |||
| <!--怪物超觉醒--> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-nosawoken" /> | |||
| <template id="sawoken-option-icon"><input type="radio" name="sawoken-choice" class="sawoken-choice" /><label class="awoken-icon"></label></template> | |||
| <div class="awoken-ul"> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" value="-1" id="sawoken-choice--1" /><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="0" id="sawoken-choice-0" /><label for="sawoken-choice-0" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="1" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="2" id="sawoken-choice-2" /><label for="sawoken-choice-2" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="3" id="sawoken-choice-3" /><label for="sawoken-choice-3" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="4" id="sawoken-choice-4" /><label for="sawoken-choice-4" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="5" id="sawoken-choice-5" /><label for="sawoken-choice-5" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="6" id="sawoken-choice-6" /><label for="sawoken-choice-6" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="7" id="sawoken-choice-7" /><label for="sawoken-choice-7" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="8" id="sawoken-choice-8" /><label for="sawoken-choice-8" class="awoken-icon"></label><!-- | |||
| --><input type="radio" name="sawoken-choice" class="sawoken-choice" value="9" id="sawoken-choice-9" /><label for="sawoken-choice-9" class="awoken-icon"></label> | |||
| <input type="radio" name="sawoken-choice" class="sawoken-choice" id="sawoken-choice-1" /><label for="sawoken-choice-1" class="awoken-icon"></label> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| @@ -2058,9 +2050,8 @@ var formation = new Formation(teamsCount,6); | |||
| </div> | |||
| <div class="subrow"> | |||
| <button class="m-level-btn-min" value="1"></button>~<button class="m-level-btn-max" value="99"></button> | |||
| <br> | |||
| <button class="m-level-btn-110 display-none" value="110"></button> | |||
| <button class="m-level-btn-120 display-none" value="120"></button> | |||
| <button class="m-level-btn-110 display-none" value="110">110</button> | |||
| <button class="m-level-btn-120 display-none" value="120">120</button> | |||
| </div> | |||
| <div class="m-level-exp"></div> | |||
| </div> | |||