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
尚未注册?
注册
登录
登录
注册
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
種族索引
人類
獸
龍
機械
魔物
妖精
神
技能分類
隊長技能
主動技能
普通技能
被動技能
敵人技能
副本資訊
故事副本
都之系列
監獄系列
塔之系列
樓閣系列
休息室系列
研究所系列
遊園地系列
進化神殿
烈火殿ヘパイストス
流水殿ポセイドン
旋風殿ヘルメス
閃光殿アルテミス
常闇殿ハーデス
絶無殿ヘスティア
賭場副本
活動副本
單週副本
合作副本
降臨副本
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
正在編輯
極光塔オーロラ
返回页面
编辑
可视化编辑器
查看历史
讨论 (0)
正在编辑
極光塔オーロラ
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
== 亂入 == {{亂入Unit簡介}} <!-- {{副本數據目錄}} {{副本數據|403|star=!|damage=3254|hp=55|def=5000000|next=3|drop=402|lv=1|drop%=50|plus-drop%=0.5}} {{副本數據|218|star=!|damage=13067|hp=2325000|def=1250|next=2|drop=217|lv=1|drop%=50|plus-drop%=2}} |} --> {{#invoke:Enemy|List| 403. !. atk 3254. hp 55. def 5000000. next 3. drop 402 Lv1 218. !. atk 13067. hp 2325000. def 1250. next 2. drop 217 Lv1 1303. !. atk 275. hp 9940. def 100. next 2. drop 1303 Lv? <!-- 独立攻性部隊:草薙素子 (167240) --> }} == 小怪列表 == {{副本數據目錄}} {{副本數據|097|star=3,4|damage=448|hp=1472|def=40|next=3|drop=097|drop%=11.2|plus-drop%=1|lv=5}} {{副本數據|099|star=4|damage=483|hp=1590|def=40|next=3|drop=099|drop%=11.2|plus-drop%=1|lv=5}} {{副本數據|101|star=5|damage=518|hp=1708|def=40|next=3|drop=101|drop%=11.2|plus-drop%=1|lv=5}} {{副本數據|080|star=1,2|damage=570|hp=2178|def=21|next=3|drop=079|drop%=22.5|plus-drop%=1|lv=4}} {{副本數據|082|star=3|damage=544|hp=2178|def=21|next=3|drop=081|drop%=22.5|plus-drop%=1|lv=4}} {{副本數據|084|star=6|damage=643|hp=3120|def=21|next=3|drop=083|drop%=22.5|plus-drop%=1|lv=4}} {{副本數據|091|star=!|damage=828|hp=4476|def=0|next=4|drop=091|drop%=30|plus-drop%=1|lv=4}} {{副本數據|064|star=1,2|damage=387|hp=1173|def=21|next=2|drop=063|drop%=22.5|plus-drop%=1|lv=4}} {{副本數據|070|star=3,4|damage=432|hp=1191|def=21|next=2|drop=069|drop%=22.5|plus-drop%=1|lv=4}} {{副本數據|125|star=5,6|damage=566|hp=2513|def=3|next=3|drop=125|drop%=3.75|plus-drop%=1|lv=2}} {{副本數據|131|star=5,6|damage=566|hp=2513|def=3|next=3|drop=131|drop%=0.38|plus-drop%=1|lv=2}} {{副本數據|196|star=!|damage=10|hp=3|def=2000|next=1|drop=196|drop%=30|plus-drop%=0|lv=1}} {{副本數據|202|star=!|damage=10|hp=3|def=2000|next=1|drop=202|drop%=30|plus-drop%=0|lv=1}} |} == -{群れた獣}- == {{QuestInfo|tickets=0|sta=9|floor=2|exp=312|money=1,000 |min-money=11,200|max-money=41,550|avg-money=25,762|traps=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ}} {{副本數據目錄}} {{副本數據|122|star=Boss|damage=452|hp=15093|def=0|next=2|drop=121|drop%=5|plus-drop%=1|lv=5}} {{副本數據|124|star=Boss|damage=512|hp=9850|def=33|next=2|drop=123|drop%=5|plus-drop%=1|lv=5}} {{副本數據|126|star=Boss|damage=1250|hp=12000|def=46|next=3|drop=125|drop%=5|plus-drop%=1|lv=5}} |} {{Story|【群れた獣】<br>7色の輝きを魅せる極光塔オーロラの第一階層、そこは獣達の隠れ家。襲いかかるのは群れた獣。魔界<ヘリスティア>の炎の狐、氷の狼、風の猪、三者三様のいで立ちで、最期の宝石塔への予期せぬ侵入者を、最上階へと昇らせまいと一掃していた。|【群聚的野獸】<br>發出七彩誘人的光{{t|極光塔オーロラ}}的第一階層,這邊是野獸們的棲息地。襲擊而來的是群聚而來的野獸。{{t|魔界}}的炎之狐、冰之狼、風之豬,三者聚集在一起,最後的寶石塔的意外的入侵者,不讓他往最上層前進的被一掃而空。}} == -{極光塔の女子会}- == {{QuestInfo|tickets=0|sta=9|floor=2|exp=320|money=1,100 |min-money=11,300|max-money=46,750|avg-money=28,408|traps=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ}} {{副本數據目錄}} {{副本數據|112|star=Boss|damage=655|hp=18835|def=36|next=2|drop=111|drop%=2|plus-drop%=1|lv=5}} {{副本數據|114|star=Boss|damage=681|hp=19765|def=36|next=2|drop=113|drop%=2|plus-drop%=1|lv=5}} {{副本數據|110|star=Boss|damage=626|hp=17903|def=58|next=2|drop=109|drop%=2|plus-drop%=1|lv=5}} |} {{Story|【極光塔の女子会】<br>第二階層でちょっと一息、極光塔の女子会は乙女達の談義の場。乙女が顔を寄せ合って話すことと言えば、今も昔も噂話。花を咲かせたのは、誰かと誰かが付き合ってるとか、誰が誰を好きとか。人間も精霊も、乙女心は大して変わらないものだった。|【極光塔的女子會】<br>在第二階段稍事休息,極光塔的女子會是少女們閒聊雜談的場所。少女們湊在一起討論著以前或是現在的謠言,誰墜入情網了,誰跟誰開始交往了,誰喜歡著誰等等。人類也好精靈也好,少女心中有一個部分是不會改變的。}} == -{天昇る機竜}- == {{QuestInfo|tickets=0|sta=9|floor=2|exp=413|money=1,100 |min-money=11,300|max-money=46,750|avg-money=28,408|traps=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ}} {{副本數據目錄}} {{副本數據|139|star=Boss|damage=3456|hp=19784|def=125|next=3|drop=139|drop%=0.01|plus-drop%=1|lv=1}} |} {{Story|【天昇る機竜】<br>警戒レベル3の警報が聞こえた時、もはや聞き慣れてしまったプロテクトの解除音が聞こえた。そう、再び現れたのは光の大型自立型ドライバ、第五世代の天昇る機竜。予期せぬ敵の出現に、宝石塔の警戒態勢が予測出来ないものへと変わった。|【升天的機龍】<br>當警戒等級三的警報響起時,也傳來了快習慣的保護裝置解除聲。是的,再度登場的是光的大型自立型{{t|ドライバ}},第五世代的升天的機龍。對付無法預測的入侵者,寶石塔的警戒態勢已經變得難以預測了。}} == -{空翔る機竜}- == {{QuestInfo|tickets=0|sta=9|floor=2|exp=383|money=1,100 |min-money=11,300|max-money=46,750|avg-money=28,408|traps=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ}} {{副本數據目錄}} {{副本數據|141|star=Boss|damage=2500|hp=24234|def=150|next=2|drop=141|drop%=0.01|plus-drop%=1|lv=1}} |} {{Story|【空翔る機竜】<br>警戒レベル4、真っ先に聞こえてきたのはプロテクトの解除音。光の天昇る機竜に続き、現れたのは闇の空翔る機竜。闇の力を蓄えたその機械の身体は、自らの意志で予期せぬ侵入者へと、終わりを、永遠に続く闇を与えようとしていた。|【飛翔的機龍】<br>警戒等級四,馬上就傳來了保護裝置的解除聲。接在光之升天的機龍之後,出現的是暗之飛翔的機龍。積蓄著暗之力量的機體,以自己的意志,想要將入侵者施以永遠的闇作為終結。}} == -{地走る機竜}- == {{QuestInfo|tickets=0|sta=11|floor=2|exp=486|money=1,600 |min-money=6,700|max-money=73,650|avg-money=39,542|traps=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ}} {{副本數據目錄}} {{副本數據|143|star=Boss|damage=4054|hp=56410|def=50|next=3|drop=143|drop%=0.01|plus-drop%=1|lv=1}} |} * 首次通關獲贈 {{銀幣}} × 1 {{Story|【地走る機竜】<br>警戒レベル5、9回目のプロテクトの解除音。地走る機竜の出現はもはや予測の範疇となっていた。7つと連なっていた宝石塔の最期、目にも止まらぬ速さで繰り広げらる攻防、加速したその先に、天界<セレスティア>への道が待っている。|【奔馳的機龍】<br>警戒等級五,第九次的保護裝置解除聲。奔馳的機龍已經是可以預測的範圍了。七座相連的寶石塔的最後,眼睛快要跟不上的攻防,加速的最後所等待著的,是通往{{t|天界}}的道路。}} {{AreaInfo |英文名稱=Aurora Tower |火=14 |水=14 |風=14 |光=14 |闇=14 |無=14 |心=16 |設計編號=0021 |寶箱=tower_box |鑰匙=tower_key |前=水晶塔クォーツ |後=赤帝楼閣スザク |類別=塔之系列 |根類別=故事副本 |陷阱=ブロ,地雷Ⅱ,ダーⅡ,毒Ⅱ }}
摘要:
请注意在Divine Gate 维基上的所有贡献都将依据CC-BY-SA进行发布。
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
Template:!
(
查看源代码
)
Template:064
(
查看源代码
)
Template:070
(
查看源代码
)
Template:080
(
查看源代码
)
Template:082
(
查看源代码
)
Template:084
(
查看源代码
)
Template:091
(
查看源代码
)
Template:097
(
查看源代码
)
Template:099
(
查看源代码
)
Template:101
(
查看源代码
)
Template:110
(
查看源代码
)
Template:112
(
查看源代码
)
Template:114
(
查看源代码
)
Template:122
(
查看源代码
)
Template:124
(
查看源代码
)
Template:125
(
查看源代码
)
Template:126
(
查看源代码
)
Template:131
(
查看源代码
)
Template:139
(
查看源代码
)
Template:141
(
查看源代码
)
Template:143
(
查看源代码
)
Template:196
(
查看源代码
)
Template:202
(
查看源代码
)
Template:AreaInfo
(
查看源代码
)
Template:Ifeq
(
查看源代码
)
Template:P2
(
查看源代码
)
Template:QuestInfo
(
查看源代码
)
Template:Story
(
查看源代码
)
Template:T
(
查看源代码
)
Template:Texttip
(
查看源代码
)
Template:Traps
(
查看源代码
)
Template:UnitLink
(
查看源代码
)
Template:UnitNameJP
(
查看源代码
)
Template:Unit Info Direct
(
查看源代码
)
Template:亂入Unit簡介
(
查看源代码
)
Template:副本數據
(
查看源代码
)
Template:副本數據目錄
(
查看源代码
)
Template:銀幣
(
查看源代码
)
Module:Enemy
(
编辑
)
Module:JSON
(
编辑
)
Module:Quest
(
编辑
)
Module:QuestData
(
编辑
)
Module:Skill
(
编辑
)
Module:SkillData/AS
(
编辑
)
Module:SkillData/BS
(
编辑
)
Module:SkillData/EA
(
编辑
)
Module:SkillData/ES
(
编辑
)
Module:SkillData/LS
(
编辑
)
Module:SkillData/NS
(
编辑
)
Module:SkillData/PS
(
编辑
)
Module:SkillData/SA
(
编辑
)
Module:T
(
编辑
)
Module:Translate
(
编辑
)
Module:Unit
(
编辑
)
Module:UnitData
(
编辑
)
Module:UnitNameJP
(
编辑
)
Follow on IG
TikTok
Join Fan Lab