Divine Gate 维基
探索
首页
讨论板
所有页面
社区页
交互式地图
最新博文
遊戲知識
工具
Divine Gate Wikia APK
Divine Gate Tool
體力計算
模擬強化合成
模擬刮卡
隊伍組合
活動時間表
基礎資料
版本更新
帳號升級能力表
任務
抽獎資訊
數據轉移系統
棋子掉落機制
亂入
心得
遊戲開局
朋友系統
遊戲秘技
速刷首抽秘技
光闇無主角開局
無視移動系陷阱
關於所有陷阱的小Bug
Unit相關
經驗值類型: Type2 (Lv 10) Type2 (Lv 15) Type2 (Lv 25) Type2 (Lv 30) Type2 (Lv 50) Type2 (Lv 70) Type3 (Lv 5) Type3 (Lv 10) Type3 (Lv 15) Type3 (Lv 25) Type3 (Lv 30) Type3 (Lv 35) Type3 (Lv 50) Type3 (Lv 70) Type5 (Lv 50) Type5 (Lv 99) 不能升級 合作小怪 Type4 第三世代A 第三世代B 合作刮卡 巨人 Type3e 妖尾II 御坂妹 化合龍A 化合龍B 一夜 大貓 花獸 WEGO — 滿級經驗: — 最大等級: — 成長曲線: 等級基礎經驗升到下級 /**/
@import url(//cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.css); #friends th { text-align: right; } #calculate-button { width: 50%; margin: 1em; } #friends { margin: auto; } .highlighted-unit { background: purple; } 合成目標【Base】: 不指定 強化素材【Materials】:Lv數量 經常出現的朋友及路人 火水風光闇無 人類 龍 神 魔物 妖精 獸 機械 強化合成用 var newRowTemplate = '' + '' + '' + '' + ''; function fetchFriendFactors() { var friendFactors = {'': 1}; var elems = ['火','水','風','光','闇','無']; var races = ['人類','龍','神','魔物','妖精','獸','機械','強化合成用']; $.each(elems, function (_, elem) { $.each(races, function (_, race) { friendFactors[elem + race] = 1.0; }); }); $('#friends input:checked').each(function () { var kind = $(this).data('kind').split(/-/); var thisElem = kind[0]; var thisRace = kind[1]; friendFactors[thisElem + thisRace] = 1.5; $.each(elems, function (_, elem) { friendFactors[elem + thisRace] = Math.max(1.25, friendFactors[elem + thisRace]); }); $.each(races, function (_, race) { friendFactors[thisElem + race] = Math.max(1.25, friendFactors[thisElem + race]); }); }); return friendFactors; } function getMinExp(info, level) { if (level >= info.lvmax) { return info.expmax; } else { var ratio = (level - 1) / (info.lvmax - 1); return Math.ceil(info.expmax * Math.pow(ratio, info.exppow)); } } var NEXT_UNIT_KEY = 0; function Unit(unitData, unitId, level) { this.key = NEXT_UNIT_KEY++; this.unitId = unitId; if (!unitData) { return; } var info = this._info = unitData[unitId]; this._exp = getMinExp(info, level); var blendCoeff = info.blendpow * (info.blendmax - info.blendmin) / info.exppow; this._blendCoeff = blendCoeff * Math.pow(info.expmax, -info.blendpow / info.exppow); this.recompute(); }; Unit.prototype.recompute = function () { var info = this._info; if (this._exp >= info.expmax) { this._exp = info.expmax; this._level = info.lvmax; this._blend = info.blendmax; } else { var raw_ratio = Math.pow((this._exp / info.expmax), 1 / info.exppow); this._level = ((raw_ratio * (info.lvmax - 1))|0) + 1; var ratio = Math.pow((this._level - 1) / (info.lvmax - 1), info.blendpow); this._blend = info.blendmin + (((info.blendmax - info.blendmin) * ratio)|0); } var blendPotential = Math.pow(Math.max(1, this._exp), info.blendpow / info.exppow - 1); this._blendPotential = this._blendCoeff * blendPotential; }; Unit.prototype.clone = function () { var newUnit = new Unit(); newUnit.unitId = this.unitId; newUnit._info = this._info; newUnit._exp = this._exp; newUnit._level = this._level; newUnit._blend = this._blend; newUnit._blendCoeff = this._blendCoeff; newUnit._blendPotential = this._blendPotential; return newUnit; }; Unit.prototype.getBlendFactor = function (info, friendFactors) { var factor = friendFactors[info.elem + info.race] || friendFactors; if (this._info.elem == info.elem) { factor *= 1.5; } return factor; }; Unit.prototype.minimizeFriendFactor = function () { var minExp = getMinExp(this._info, this._level); var baseExp = this.target._exp; var targetInfo = this.target._info; for (var ff = 1.0; ff < this.friendFactor; ff += 0.25) { var blend = this.material.getBlend(targetInfo, ff); if (blend + baseExp >= minExp) { this.friendFactor = ff; this._exp = blend + baseExp; break; } } }; Unit.prototype.getBlend = function (info, friendFactors) { return (this.getBlendFactor(info, friendFactors) * this._blend)|0; }; Unit.prototype.getBlendPotential = function (info, friendFactors) { return this.getBlendFactor(info, friendFactors) * this._blendPotential; }; Unit.prototype.toHTMLPartsSimple = function () { var info = this._info; return [ ' Lv.', this._level, '', ]; }; Unit.prototype.toHTMLParts = function () { /* Assume `.target` and `.material` are defined! */ var selfParts = this.toHTMLPartsSimple(); var targetParts = this.target.toHTMLPartsSimple(); var materialParts = this.material.toHTMLPartsSimple(); var ffString = this.friendFactor; if (this.friendFactor == 1) { ffString = '1.0'; } var materialBlend = this._exp - this.target._exp; return [''].concat(selfParts, ' = ', targetParts, ' + ', materialParts, ' (×', ffString, ' = ', materialBlend,')'); }; function blendUnits(target, material, friendFactors) { var result = target.clone(); result.target = target; result.material = material; result.friendFactor = friendFactors[target._info.elem + target._info.race]; result._exp += material.getBlend(target._info, friendFactors); result.recompute(); return result; } function fetchMaterials(unitData) { var materials = []; $('#units-tbody').children().each(function (i, row) { var unitId = $('select.unit', row).val(); var level = $('input.level', row).val()|0; for (var j = $('input.count', row).val()|0; j > 0; -- j) { materials.push(new Unit(unitData, unitId, level)); } }); return materials; } function BlendMatrix(materials, finalTargetInfo, friendFactors) { this._finalTargetInfo = finalTargetInfo; this._friendFactors = friendFactors; this._materials = materials.map(function (x) { return [x.getBlendPotential(finalTargetInfo, friendFactors), x, -1]; }); this._frozenMaterials = []; this.sortMaterials(); } BlendMatrix.prototype.sortMaterials = function () { this._materials.sort(function (a, b) { return b[0] - a[0]; }); }; BlendMatrix.prototype.checkMergeableOneSide = function (target, material) { var finalTargetInfo = this._finalTargetInfo; var friendFactors = this._friendFactors; var targetBlend = target.getBlend(finalTargetInfo, friendFactors); var materialBlend = material.getBlend(finalTargetInfo, friendFactors); var blendThreshold = targetBlend + materialBlend; var merged = blendUnits(target, material, friendFactors); var mergedBlend = merged.getBlend(finalTargetInfo, friendFactors); if (mergedBlend = p2[2]) { return p1; } else { return p2; } }; BlendMatrix.prototype.trySurvive = function () { var warmMaterial = this._materials.pop()[1]; var bestProposal = [0, null, -1]; var bestProposalIndex = -1; for (var i = 0; i < this._frozenMaterials.length; ++ i) { var frozenMaterial = this._frozenMaterials[i]; var proposal = this.checkMergeable(warmMaterial, frozenMaterial); if (proposal) { if (proposal[2] > bestProposal[2]) { bestProposal = proposal; bestProposalIndex = i; } } } if (bestProposalIndex >= 0) { this._frozenMaterials.splice(bestProposalIndex, 1); this._materials.push(bestProposal); return null; } else { return warmMaterial; } }; BlendMatrix.prototype.compress = function () { switch (this._materials.length) { default: { var worstMaterial = this._materials.pop(); var secondMaterial = this._materials.pop(); var proposalLow = this.checkMergeable(worstMaterial[1], secondMaterial[1]); var shouldMerge; if (!proposalLow) { shouldMerge = false; } else { var bestMaterial = this._materials[this._materials.length - 1]; var proposalHigh = this.checkMergeable(secondMaterial[1], bestMaterial[1]); var proposalMid = this.checkMergeable(worstMaterial[1], bestMaterial[1]); if (!(proposalHigh || proposalMid)) { shouldMerge = true; } else { var finalTargetInfo = this._finalTargetInfo; var friendFactors = this._friendFactors; var this_ = this; function computeTotalBlend(proposal, material) { if (!proposal) { return 0; } var merge = this_.checkMergeable(proposal[1], material); if (merge) { return merge[2]; } else { return proposal[2] + material.getBlend(finalTargetInfo, friendFactors); } } var lowTotalBlend = computeTotalBlend(proposalLow, bestMaterial[1]); var highTotalBlend = computeTotalBlend(proposalHigh, worstMaterial[1]); var midTotalBlend = computeTotalBlend(proposalMid, secondMaterial[1]); if (lowTotalBlend >= midTotalBlend) { shouldMerge = (lowTotalBlend >= highTotalBlend); } else { if (midTotalBlend > highTotalBlend) { this._materials[this._materials.length - 1] = secondMaterial; proposalLow = proposalMid; shouldMerge = true; } else { shouldMerge = false; } } } } /* accept low only if high is not better. */ if (shouldMerge) { this._materials.push(proposalLow); } else { this._materials.push(secondMaterial); this._frozenMaterials.push(worstMaterial[1]); } return true; } case 2: { var material1 = this._materials.pop(); var material2 = this._materials.pop(); var proposal = this.checkMergeable(material1[1], material2[1]); if (proposal) { this._materials.push(proposal); return true; } else { this._materials.push(material2, material1); /* fallthrough */ } } case 1: { var frozenMaterial = this.trySurvive(); if (!frozenMaterial) { return true; } else { this._frozenMaterials.push(frozenMaterial); /* fallthrough */ } } case 0: return (this._materials.length); } if (!this._materials.length) { return false; } var material = this._materials.pop(); if (this._materials.length) { var anotherMaterial = this._materials.pop(); var mergeProposal1 = this.checkMergeable(material[1], anotherMaterial[1]); var mergeProposal2 = this.checkMergeable(anotherMaterial[1], material[1]); if (mergeProposal2) { this._materials.push(mergeProposal2); this.sortMaterials(); return true; } else if (mergeProposal1) { this._materials.push(mergeProposal1); this.sortMaterials(); return true; } else { this._materials.push(anotherMaterial); } } for (var i = 0; i < this._frozenMaterials.length; ++ i) { var frozenMaterial = this._frozenMaterials[i]; var mergeResult = this.checkMergeable(material[1], frozenMaterial); if (mergeResult) { this._frozenMaterials.splice(i, 1); this._materials.push(mergeResult); this.sortMaterials(); return true; } } this._frozenMaterials.push(material[1]); return true; }; BlendMatrix.prototype.renderTo = function (elem) { var htmls = []; function appendMaterial(unit, canMinimize) { if (unit.material) { if (canMinimize) { unit.minimizeFriendFactor(); } htmls.push(unit.toHTMLParts()); appendMaterial(unit.material, true); appendMaterial(unit.target, false); } } for (var i = 0; i < this._frozenMaterials.length; ++ i) { appendMaterial(this._frozenMaterials[i], true); } htmls.reverse(); for (var i = 0; i < this._frozenMaterials.length; ++ i) { htmls.push('✓ ', this._frozenMaterials[i].toHTMLPartsSimple(), ''); } var flattened = []; htmls = flattened.concat.apply(flattened, htmls); elem.innerHTML = htmls.join(''); }; var PUBLIC_MATRIX; function pageFn() { var unitData = JSON.parse($('#unit-info').text()); function nextUnitId(x) { var newId = '000' + (1 + (x|0)); newId = newId.substr(newId.length - 3); if (!unitData[newId]) { newId = '001'; } return newId; } function addRow() { var tbody = $('#units-tbody'); var newId = tbody.children().length; tbody.append($(newRowTemplate)); var newRow = tbody.children().last(); makeUnitSelector($('select.unit', newRow), unitData, function (x) { if (newId) { var prevRow = newRow.prev(); $('input.level', newRow).val($('input.level', prevRow).val()); x.select2('val', nextUnitId($('select.unit', prevRow).val())); } else { x.select2('val', '187'); } }); $('select.unit,input.level', newRow).change(function () { var level = $('input.level', newRow); level.val(Math.min(unitData[$('select.unit', newRow).val()].lvmax, level.val() >>> 0)); }); } $('#add-new-button').click(addRow); $('#calculate-button').click(function () { NEXT_UNIT_KEY = 0; var friendFactors = fetchFriendFactors(); var materials = fetchMaterials(unitData); var finalTargetInfo; if ($('#base-type-some').prop('checked')) { finalTargetInfo = unitData[$('#base-unit').val()]; } else { finalTargetInfo = {elem: '', race: ''}; } var matrix = new BlendMatrix(materials, finalTargetInfo, friendFactors); /* this is O(n^3). any faster algorithm? */ var stepCount = 0; for (; stepCount < 10000; ++ stepCount) { if (!matrix.compress()) { break; } } PUBLIC_MATRIX = matrix; if (stepCount >= 10000) { alert('找不到答案!(太複雜啦?)\n\nCannot find answer, maybe too complicated!'); } else { matrix.renderTo(document.getElementById('answer-area')); } }); addRow(); makeUnitSelector($('#base-unit'), unitData); $('#base-unit').change(function(){ $('#base-type-some').prop('checked', true); }); $('#units-tbody').on('click', '.delete-button', function () { var tr = $(this).closest('tr'); if (tr.siblings().length) { tr.remove(); } }); $('#answer-area').on('mouseenter mouseleave', '.blend-unit', function() { var unitKey = this.getAttribute('data-unit-key'); $('.blend-unit[data-unit-key=' + unitKey + ']').toggleClass('highlighted-unit'); }); }
副本
副本列表
戰鬥系統
陷阱系統
Unit索引
Unit一覽表
001–887
888-1754
1755+
屬性索引
水屬
風屬
火屬
光屬
闇屬
無屬
稀有度索引
★3
★6
★1
★2
★4
★5
種族索引
人類
獸
龍
機械
魔物
妖精
神
技能分類
隊長技能
主動技能
普通技能
被動技能
敵人技能
副本資訊
故事副本
都之系列
監獄系列
塔之系列
樓閣系列
休息室系列
研究所系列
遊園地系列
進化神殿
烈火殿ヘパイストス
流水殿ポセイドン
旋風殿ヘルメス
閃光殿アルテミス
常闇殿ハーデス
絶無殿ヘスティア
賭場副本
活動副本
單週副本
合作副本
降臨副本
FANDOM
游戏
电影
电视
wiki
探索wiki
社区中心
创建wiki
尚未注册?
注册
登录
FANDOM
Explore
Current Wiki
创建wiki
尚未注册?
注册
登录
Advertisement
登录
注册
Divine Gate 維基
4,441
个页面
探索
首页
讨论板
所有页面
社区页
交互式地图
最新博文
遊戲知識
工具
Divine Gate Wikia APK
Divine Gate Tool
體力計算
模擬強化合成
模擬刮卡
隊伍組合
活動時間表
基礎資料
版本更新
帳號升級能力表
任務
抽獎資訊
數據轉移系統
棋子掉落機制
亂入
心得
遊戲開局
朋友系統
遊戲秘技
速刷首抽秘技
光闇無主角開局
無視移動系陷阱
關於所有陷阱的小Bug
Unit相關
經驗值類型: Type2 (Lv 10) Type2 (Lv 15) Type2 (Lv 25) Type2 (Lv 30) Type2 (Lv 50) Type2 (Lv 70) Type3 (Lv 5) Type3 (Lv 10) Type3 (Lv 15) Type3 (Lv 25) Type3 (Lv 30) Type3 (Lv 35) Type3 (Lv 50) Type3 (Lv 70) Type5 (Lv 50) Type5 (Lv 99) 不能升級 合作小怪 Type4 第三世代A 第三世代B 合作刮卡 巨人 Type3e 妖尾II 御坂妹 化合龍A 化合龍B 一夜 大貓 花獸 WEGO — 滿級經驗: — 最大等級: — 成長曲線: 等級基礎經驗升到下級 /**/
@import url(//cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.css); #friends th { text-align: right; } #calculate-button { width: 50%; margin: 1em; } #friends { margin: auto; } .highlighted-unit { background: purple; } 合成目標【Base】: 不指定 強化素材【Materials】:Lv數量 經常出現的朋友及路人 火水風光闇無 人類 龍 神 魔物 妖精 獸 機械 強化合成用 var newRowTemplate = '' + '' + '' + '' + ''; function fetchFriendFactors() { var friendFactors = {'': 1}; var elems = ['火','水','風','光','闇','無']; var races = ['人類','龍','神','魔物','妖精','獸','機械','強化合成用']; $.each(elems, function (_, elem) { $.each(races, function (_, race) { friendFactors[elem + race] = 1.0; }); }); $('#friends input:checked').each(function () { var kind = $(this).data('kind').split(/-/); var thisElem = kind[0]; var thisRace = kind[1]; friendFactors[thisElem + thisRace] = 1.5; $.each(elems, function (_, elem) { friendFactors[elem + thisRace] = Math.max(1.25, friendFactors[elem + thisRace]); }); $.each(races, function (_, race) { friendFactors[thisElem + race] = Math.max(1.25, friendFactors[thisElem + race]); }); }); return friendFactors; } function getMinExp(info, level) { if (level >= info.lvmax) { return info.expmax; } else { var ratio = (level - 1) / (info.lvmax - 1); return Math.ceil(info.expmax * Math.pow(ratio, info.exppow)); } } var NEXT_UNIT_KEY = 0; function Unit(unitData, unitId, level) { this.key = NEXT_UNIT_KEY++; this.unitId = unitId; if (!unitData) { return; } var info = this._info = unitData[unitId]; this._exp = getMinExp(info, level); var blendCoeff = info.blendpow * (info.blendmax - info.blendmin) / info.exppow; this._blendCoeff = blendCoeff * Math.pow(info.expmax, -info.blendpow / info.exppow); this.recompute(); }; Unit.prototype.recompute = function () { var info = this._info; if (this._exp >= info.expmax) { this._exp = info.expmax; this._level = info.lvmax; this._blend = info.blendmax; } else { var raw_ratio = Math.pow((this._exp / info.expmax), 1 / info.exppow); this._level = ((raw_ratio * (info.lvmax - 1))|0) + 1; var ratio = Math.pow((this._level - 1) / (info.lvmax - 1), info.blendpow); this._blend = info.blendmin + (((info.blendmax - info.blendmin) * ratio)|0); } var blendPotential = Math.pow(Math.max(1, this._exp), info.blendpow / info.exppow - 1); this._blendPotential = this._blendCoeff * blendPotential; }; Unit.prototype.clone = function () { var newUnit = new Unit(); newUnit.unitId = this.unitId; newUnit._info = this._info; newUnit._exp = this._exp; newUnit._level = this._level; newUnit._blend = this._blend; newUnit._blendCoeff = this._blendCoeff; newUnit._blendPotential = this._blendPotential; return newUnit; }; Unit.prototype.getBlendFactor = function (info, friendFactors) { var factor = friendFactors[info.elem + info.race] || friendFactors; if (this._info.elem == info.elem) { factor *= 1.5; } return factor; }; Unit.prototype.minimizeFriendFactor = function () { var minExp = getMinExp(this._info, this._level); var baseExp = this.target._exp; var targetInfo = this.target._info; for (var ff = 1.0; ff < this.friendFactor; ff += 0.25) { var blend = this.material.getBlend(targetInfo, ff); if (blend + baseExp >= minExp) { this.friendFactor = ff; this._exp = blend + baseExp; break; } } }; Unit.prototype.getBlend = function (info, friendFactors) { return (this.getBlendFactor(info, friendFactors) * this._blend)|0; }; Unit.prototype.getBlendPotential = function (info, friendFactors) { return this.getBlendFactor(info, friendFactors) * this._blendPotential; }; Unit.prototype.toHTMLPartsSimple = function () { var info = this._info; return [ ' Lv.', this._level, '', ]; }; Unit.prototype.toHTMLParts = function () { /* Assume `.target` and `.material` are defined! */ var selfParts = this.toHTMLPartsSimple(); var targetParts = this.target.toHTMLPartsSimple(); var materialParts = this.material.toHTMLPartsSimple(); var ffString = this.friendFactor; if (this.friendFactor == 1) { ffString = '1.0'; } var materialBlend = this._exp - this.target._exp; return [''].concat(selfParts, ' = ', targetParts, ' + ', materialParts, ' (×', ffString, ' = ', materialBlend,')'); }; function blendUnits(target, material, friendFactors) { var result = target.clone(); result.target = target; result.material = material; result.friendFactor = friendFactors[target._info.elem + target._info.race]; result._exp += material.getBlend(target._info, friendFactors); result.recompute(); return result; } function fetchMaterials(unitData) { var materials = []; $('#units-tbody').children().each(function (i, row) { var unitId = $('select.unit', row).val(); var level = $('input.level', row).val()|0; for (var j = $('input.count', row).val()|0; j > 0; -- j) { materials.push(new Unit(unitData, unitId, level)); } }); return materials; } function BlendMatrix(materials, finalTargetInfo, friendFactors) { this._finalTargetInfo = finalTargetInfo; this._friendFactors = friendFactors; this._materials = materials.map(function (x) { return [x.getBlendPotential(finalTargetInfo, friendFactors), x, -1]; }); this._frozenMaterials = []; this.sortMaterials(); } BlendMatrix.prototype.sortMaterials = function () { this._materials.sort(function (a, b) { return b[0] - a[0]; }); }; BlendMatrix.prototype.checkMergeableOneSide = function (target, material) { var finalTargetInfo = this._finalTargetInfo; var friendFactors = this._friendFactors; var targetBlend = target.getBlend(finalTargetInfo, friendFactors); var materialBlend = material.getBlend(finalTargetInfo, friendFactors); var blendThreshold = targetBlend + materialBlend; var merged = blendUnits(target, material, friendFactors); var mergedBlend = merged.getBlend(finalTargetInfo, friendFactors); if (mergedBlend = p2[2]) { return p1; } else { return p2; } }; BlendMatrix.prototype.trySurvive = function () { var warmMaterial = this._materials.pop()[1]; var bestProposal = [0, null, -1]; var bestProposalIndex = -1; for (var i = 0; i < this._frozenMaterials.length; ++ i) { var frozenMaterial = this._frozenMaterials[i]; var proposal = this.checkMergeable(warmMaterial, frozenMaterial); if (proposal) { if (proposal[2] > bestProposal[2]) { bestProposal = proposal; bestProposalIndex = i; } } } if (bestProposalIndex >= 0) { this._frozenMaterials.splice(bestProposalIndex, 1); this._materials.push(bestProposal); return null; } else { return warmMaterial; } }; BlendMatrix.prototype.compress = function () { switch (this._materials.length) { default: { var worstMaterial = this._materials.pop(); var secondMaterial = this._materials.pop(); var proposalLow = this.checkMergeable(worstMaterial[1], secondMaterial[1]); var shouldMerge; if (!proposalLow) { shouldMerge = false; } else { var bestMaterial = this._materials[this._materials.length - 1]; var proposalHigh = this.checkMergeable(secondMaterial[1], bestMaterial[1]); var proposalMid = this.checkMergeable(worstMaterial[1], bestMaterial[1]); if (!(proposalHigh || proposalMid)) { shouldMerge = true; } else { var finalTargetInfo = this._finalTargetInfo; var friendFactors = this._friendFactors; var this_ = this; function computeTotalBlend(proposal, material) { if (!proposal) { return 0; } var merge = this_.checkMergeable(proposal[1], material); if (merge) { return merge[2]; } else { return proposal[2] + material.getBlend(finalTargetInfo, friendFactors); } } var lowTotalBlend = computeTotalBlend(proposalLow, bestMaterial[1]); var highTotalBlend = computeTotalBlend(proposalHigh, worstMaterial[1]); var midTotalBlend = computeTotalBlend(proposalMid, secondMaterial[1]); if (lowTotalBlend >= midTotalBlend) { shouldMerge = (lowTotalBlend >= highTotalBlend); } else { if (midTotalBlend > highTotalBlend) { this._materials[this._materials.length - 1] = secondMaterial; proposalLow = proposalMid; shouldMerge = true; } else { shouldMerge = false; } } } } /* accept low only if high is not better. */ if (shouldMerge) { this._materials.push(proposalLow); } else { this._materials.push(secondMaterial); this._frozenMaterials.push(worstMaterial[1]); } return true; } case 2: { var material1 = this._materials.pop(); var material2 = this._materials.pop(); var proposal = this.checkMergeable(material1[1], material2[1]); if (proposal) { this._materials.push(proposal); return true; } else { this._materials.push(material2, material1); /* fallthrough */ } } case 1: { var frozenMaterial = this.trySurvive(); if (!frozenMaterial) { return true; } else { this._frozenMaterials.push(frozenMaterial); /* fallthrough */ } } case 0: return (this._materials.length); } if (!this._materials.length) { return false; } var material = this._materials.pop(); if (this._materials.length) { var anotherMaterial = this._materials.pop(); var mergeProposal1 = this.checkMergeable(material[1], anotherMaterial[1]); var mergeProposal2 = this.checkMergeable(anotherMaterial[1], material[1]); if (mergeProposal2) { this._materials.push(mergeProposal2); this.sortMaterials(); return true; } else if (mergeProposal1) { this._materials.push(mergeProposal1); this.sortMaterials(); return true; } else { this._materials.push(anotherMaterial); } } for (var i = 0; i < this._frozenMaterials.length; ++ i) { var frozenMaterial = this._frozenMaterials[i]; var mergeResult = this.checkMergeable(material[1], frozenMaterial); if (mergeResult) { this._frozenMaterials.splice(i, 1); this._materials.push(mergeResult); this.sortMaterials(); return true; } } this._frozenMaterials.push(material[1]); return true; }; BlendMatrix.prototype.renderTo = function (elem) { var htmls = []; function appendMaterial(unit, canMinimize) { if (unit.material) { if (canMinimize) { unit.minimizeFriendFactor(); } htmls.push(unit.toHTMLParts()); appendMaterial(unit.material, true); appendMaterial(unit.target, false); } } for (var i = 0; i < this._frozenMaterials.length; ++ i) { appendMaterial(this._frozenMaterials[i], true); } htmls.reverse(); for (var i = 0; i < this._frozenMaterials.length; ++ i) { htmls.push('✓ ', this._frozenMaterials[i].toHTMLPartsSimple(), ''); } var flattened = []; htmls = flattened.concat.apply(flattened, htmls); elem.innerHTML = htmls.join(''); }; var PUBLIC_MATRIX; function pageFn() { var unitData = JSON.parse($('#unit-info').text()); function nextUnitId(x) { var newId = '000' + (1 + (x|0)); newId = newId.substr(newId.length - 3); if (!unitData[newId]) { newId = '001'; } return newId; } function addRow() { var tbody = $('#units-tbody'); var newId = tbody.children().length; tbody.append($(newRowTemplate)); var newRow = tbody.children().last(); makeUnitSelector($('select.unit', newRow), unitData, function (x) { if (newId) { var prevRow = newRow.prev(); $('input.level', newRow).val($('input.level', prevRow).val()); x.select2('val', nextUnitId($('select.unit', prevRow).val())); } else { x.select2('val', '187'); } }); $('select.unit,input.level', newRow).change(function () { var level = $('input.level', newRow); level.val(Math.min(unitData[$('select.unit', newRow).val()].lvmax, level.val() >>> 0)); }); } $('#add-new-button').click(addRow); $('#calculate-button').click(function () { NEXT_UNIT_KEY = 0; var friendFactors = fetchFriendFactors(); var materials = fetchMaterials(unitData); var finalTargetInfo; if ($('#base-type-some').prop('checked')) { finalTargetInfo = unitData[$('#base-unit').val()]; } else { finalTargetInfo = {elem: '', race: ''}; } var matrix = new BlendMatrix(materials, finalTargetInfo, friendFactors); /* this is O(n^3). any faster algorithm? */ var stepCount = 0; for (; stepCount < 10000; ++ stepCount) { if (!matrix.compress()) { break; } } PUBLIC_MATRIX = matrix; if (stepCount >= 10000) { alert('找不到答案!(太複雜啦?)\n\nCannot find answer, maybe too complicated!'); } else { matrix.renderTo(document.getElementById('answer-area')); } }); addRow(); makeUnitSelector($('#base-unit'), unitData); $('#base-unit').change(function(){ $('#base-type-some').prop('checked', true); }); $('#units-tbody').on('click', '.delete-button', function () { var tr = $(this).closest('tr'); if (tr.siblings().length) { tr.remove(); } }); $('#answer-area').on('mouseenter mouseleave', '.blend-unit', function() { var unitKey = this.getAttribute('data-unit-key'); $('.blend-unit[data-unit-key=' + unitKey + ']').toggleClass('highlighted-unit'); }); }
副本
副本列表
戰鬥系統
陷阱系統
Unit索引
Unit一覽表
001–887
888-1754
1755+
屬性索引
水屬
風屬
火屬
光屬
闇屬
無屬
稀有度索引
★3
★6
★1
★2
★4
★5
種族索引
人類
獸
龍
機械
魔物
妖精
神
技能分類
隊長技能
主動技能
普通技能
被動技能
敵人技能
副本資訊
故事副本
都之系列
監獄系列
塔之系列
樓閣系列
休息室系列
研究所系列
遊園地系列
進化神殿
烈火殿ヘパイストス
流水殿ポセイドン
旋風殿ヘルメス
閃光殿アルテミス
常闇殿ハーデス
絶無殿ヘスティア
賭場副本
活動副本
單週副本
合作副本
降臨副本
分类:
屬性索引
、
★5
、
機械
、
以及
其他7个分类
人類
★6
魔物
4
妖精
風屬妖精
獸
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
風屬
分类页面
编辑
可视化编辑器
查看历史
讨论 (0)
風屬性Unit一覽
[
|
]
热门页面
ID:758 コスモリウム
ID:036 ミスティルテイン:プロト
所有项目 (288)
#
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他
I
ID:113 マーメイド
★
Category:★3
Category:★5
【
ID:1225 【聖学】イヴ
ID:1216 【聖学】オリエンス
は
ID:746 はちゅねミク
ふ
ID:1107 ふぃーたん
ア
ID:1373 アスタルテ:風
ID:820 アムネジア
ID:408 アルミン
ID:409 アルミン・アルレルト
ID:114 アルラウネ
ID:209 アローアーム
ID:210 アローアーム:セカンド
ID:501 アンデルス
イ
ID:263 イバラ
ID:374 イヴ
ID:1111 イージス
ウ
ID:1151 ウィンディ
ID:193 ウィンドエッグ
ID:101 ウィンドエッジ
ID:1647 ウィンドゴッドギガノウン
ID:1648 ウィンドゴッドテラノウン
ID:1549 ウィンドゴッドノウン
ID:1591 ウィンドゴッドメガノウン
ID:1671 ウィンドスピリギガノウン
ID:1672 ウィンドスピリテラノウン
ID:1561 ウィンドスピリノウン
ID:1603 ウィンドスピリメガノウン
ID:1659 ウィンドデモギガノウン
ID:1660 ウィンドデモテラノウン
ID:1555 ウィンドデモノウン
ID:1597 ウィンドデモメガノウン
ID:1635 ウィンドドラゴギガノウン
ID:1636 ウィンドドラゴテラノウン
ID:1543 ウィンドドラゴノウン
ID:1585 ウィンドドラゴメガノウン
ID:783 ウィンドバレット
ID:1623 ウィンドヒューマギガノウン
ID:1624 ウィンドヒューマテラノウン
ID:1537 ウィンドヒューマノウン
ID:1579 ウィンドヒューマメガノウン
ID:1683 ウィンドビーストギガノウン
ID:1684 ウィンドビーストテラノウン
ID:1567 ウィンドビーストノウン
ID:1609 ウィンドビーストメガノウン
ID:102 ウィンドピア
ID:784 ウィンドベクター
ID:1695 ウィンドマシナギガノウン
ID:1696 ウィンドマシナテラノウン
ID:1573 ウィンドマシナノウン
ID:1615 ウィンドマシナメガノウン
ID:054 ウィンドリウム
ID:089 ウィンドロン
ID:090 ウィンドロン:ツヴァイ
ID:439 ウィンドロン:ドライ
ID:1520 ウィンドSエッグ
ID:307 ウェンディ
ID:1181 ウサギの因子:延珠
ID:454 ウマスク
ID:715 ウメ
エ
ID:1315 エルヴィン
ID:1316 エルヴィン・スミス
オ
ID:962 オリエンス
カ
ID:1118 カイザーウィンドエッグ
ID:477 カカシ
ID:159 カゼゲコー
ID:177 カゼテルテル
ID:183 カゼドラグルミ
ID:1757 カゼペルソナ
ID:065 カゼポックル
ID:066 カゼポックルン
ID:1763 カゼモックン
ID:165 カゼモッフル
ID:171 カゼロボタン
ガ
ID:1196 ガストレア:風
ID:956 ガル
ID:275 ガレス
ID:455 ガンマン
キ
ID:077 キャット・フー
ID:849 キュゥべえ:緑
ID:195 キングウィンドエッグ
ID:1522 キングウィンドSエッグ
ク
ID:1137 クラスメイト:美月
ID:1167 クロン
グ
ID:1743 グライフ
ID:624 グリュプス
ID:246 グリーンうーぱ
ID:807 グリーンピクシー
ケ
ID:287 ケイ
ID:078 ケット・フー
ID:078 ケット・ワー
コ
ID:758 コスモリウム
ID:487 コドラマッチャ
サ
ID:759 ササポックル
ID:760 ササポックルン
ID:1330 サナエ
ID:1431 サナエ:初音ミク
ID:1426 サマエル
シ
ID:681 シェイクスピア
ID:889 シェイクスピア:初音ミク
ID:617 シェリア
ID:324 シャルル
ID:149 シルフ
ID:734 シルフ:初音ミク
ジ
ID:586 ジョーイ
ID:880 ジンソク
ス
ID:873 ススキポックル
ID:874 ススキポックルン
ID:795 スネア
セ
ID:223 センプウニフカレシモノ
ソ
ID:757 ソラリウム
ID:1450 ソロモン:イースト
デ
ID:443 ディバインロイド
ト
ID:542 トキワ
ID:812 トラピゾイド
ド
ID:1018 ドライ
ID:1019 ドライ:A06
ID:488 ドラマッチャ
ID:578 ドローン:シグナルグリーン
ニ
ID:691 ニャオ・フー
ID:1212 ニュウガクポックル
ID:1213 ニュウガクポックルン
ハ
ID:194 ハイウィンドエッグ
ID:1521 ハイウィンドSエッグ
バ
ID:231 バレル・タイターの娘
ID:1043 バーサーカー
ID:1054 バーサーカーぼん
ヒ
ID:1324 ヒスイ
ID:1729 ヒルダ=ケイ
ピ
ID:1143 ピクシー:タイプ風
フ
ID:558 ファティマ
ID:1302 ファティマ:メロンドレス
ID:1232 フィンセント
ID:1098 フィール・ニルヴァレン
ID:919 フランジャ
ブ
ID:125 ブヒー
ID:1728 ブラウン=ガレス
プ
ID:360 プチゼツラン
ID:113 プチラウネ
ヘ
ID:765 ヘズ
ベ
ID:126 ベヒモス
ID:661 ベルセルク:八舞夕弦
ID:659 ベルセルク:八舞耶倶矢
ホ
ID:597 ホルステン
マ
ID:427 マイカゼ
ID:428 マイカゼ:カグラ
ID:1351 マジカルパティシエ小咲
ID:970 マダナイ
ID:1391 マリ
ID:1413 マリぼん
ID:1398 マリ:イージス
ID:1202 マーリン
ミ
ID:739 ミクぼん
ID:034 ミスティル
ID:035 ミスティルテイン
ID:036 ミスティルテイン:プロト
ID:033 ミスト
ID:009 ミドリ
ID:053 ミドリウム
ID:719 ミドリ:WEGO
ID:1417 ミドリ:サマー
ID:1736 ミドリ:幼少期
ID:1175 ミドリ:春風
メ
ID:299 メガカゼポックルン
ヤ
ID:631 ヤスツナ
ユ
ID:330 ユライ
ヨ
ID:394 ヨウキヒ
ID:1408 ヨトゥン:仮設5号機
ID:137 ヨルムンガルド
ID:138 ヨルムンガルド:バースト
ラ
ID:348 ラプラス
ID:1403 ラプラス:第3使徒
ID:1361 ラ・フォリア・リハヴァイン
リ
ID:317 リサーナ
ID:1472 リザぼん
ID:1459 リザ・ホークアイ中尉
ID:361 リュウゼツラン
レ
ID:510 レベル4・白井黒子
ワ
ID:466 ワンリップ
一
ID:1243 一途な乙女:小野寺小咲
七
ID:1486 七つの大罪:キング
ID:1128 七草真由美
仁
ID:1434 仁藤菜月
偽
ID:1168 偽風精クロン
傷
ID:1754 傷の男
八
ID:660 八舞夕弦
ID:658 八舞耶倶矢
六
ID:565 六合塚弥生:エリミネーター
ID:564 六合塚弥生:パラライザー
ID:1099 六重術者フィール
初
ID:720 初音ミク
十
ID:1129 十師族七草家:真由美
取
ID:944 取り立て屋ぼん
ID:937 取り立て屋・平和島静雄
叶
ID:1359 叶瀬夏音
喪
ID:821 喪失神アムネジア
堕
ID:1122 堕風才ラプラス
天
ID:625 天上獣グリュプス
ID:1744 天神獣グライフ
下一页
Advertisement
Follow on IG
TikTok
Join Fan Lab