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地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
=== HP/ATK 提升 === {{Main|:Category:隊長技能/ATK和HP提升}} {{Main|:Category:隊長技能/HP提升}} {{Main|:Category:隊長技能/ATK提升}} 使符合屬性或種族的隊員的HP和/或ATK提升一定的倍率。因為 Divine Gate 中回復力直接與HP相關,所以高HP倍率幾乎是成為隊長不可或缺的條件。 現時最常見的隊長技能類別 — 或者說,不是這類角色大部分玩家不會設為隊長。 以下列出部分較多人使用的 ×2.0 血攻以上的角色。低過此倍率的都不宜當隊長。完整列表可參看[[隊長技能/提升倍率一覧表]]或以上其中一個類別。 {{技能數據目錄|LS}} !! 備注 |- |colspan=4 class=subtitle-row| ×3.0血 + x2.0攻【Life Shift II+】 |- {{:LS:電子の歌姫|DataRow}} |初音未來合作刮卡一等角色,可選擇的隊員很多,可以使持有的玩家很快的通過初期降臨副本。 {{:LS:円環の理|DataRow}} |魔法少女小圓合作刮卡一等角色,可惜因為魔物與神族的衝突點較多,沒有像{{721|Monster}}如此令人驚艷。 |- |colspan=4 class=subtitle-row| ×3.0血【Life IV】 / ×3.0攻【Assault IV】 {{:LS:ドラゴライズ:アサルトⅣ|DataRow}} |rowspan=2| 2014年4月開始隨著[[:Category:特務龍系列|特務龍系列]]首次出現 ×3.0 倍技能。 {{:LS:ドラゴライズ:ライフⅣ|DataRow}} {{:LS:アクアライズ:アサルトⅣ|DataRow}} |rowspan=2|高出力型隊長,本身的AS、PS也都具有增加攻擊力的效果,但是HP極端低落。 {{:LS:フィアライズ:アサルトⅣ|DataRow}} |- |colspan=4 class=subtitle-row| ×2.5血攻【Shift III】 {{:LS:エレクトロマスター|DataRow}} | 魔法禁書目錄合作刮卡一等角色,是首個屬性雙×2.5的角色,配合{{296|Monster}}能安全秒過當時任何副本,在光隊獨大的時期換來無課玩家一片責罵之聲。 {{:LS:00475-AEDF-52510-2|DataRow}} | Psycho-Pass 合作刮卡一等角色,第二個屬性雙×2.5角色,配合闇亞瑟可以發揮極端強力的攻擊。 {{:LS:ウィンダライズ:シフトⅢ|DataRow}} | {{DLink|無限駅コーカサス|text=yes}}降臨的Boss,是目前唯一能免費取得的屬性雙2.5角色,但是難度也十分之高。 {{:LS:ライトマシナライズ:シフトⅢ|DataRow}} |rowspan=3|銀幣刮卡期間限定角色,從原本只支援種族的雙2.5變成種族、屬性皆支援的頂級角色,可謂最強隊伍的一角。 {{:LS:フィアビーストライズ:シフトⅢ|DataRow}} {{:LS:ノンドラゴライズ:シフトⅢ|DataRow}} {{:LS:マシナライズ:シフトⅢ|DataRow}} | {{DLink|破要塞カタストロフ|text=yes}}降臨的Boss,遊戲首個雙2.5血攻的角色。因刮卡新增了高雙圍的[[:Category:機械娘系列|機械娘系列]],以及平民的高HP三星[[:Category:第三世代系列|第三世代系列]]作隊員,到現時仍是能攻略高難度副本的主要隊長。 {{:LS:ドラゴライズ:シフトⅢ|DataRow}} | {{DLink|古神殿ヒルズアーク|text=yes}}降臨的Boss,遊戲第二個雙2.5血攻的角色。雖然在當時 GungHo 不斷推出龍族角色,但真正令龍王多人使用卻是天上獸降臨時的屬性相剋。 {{:LS:ヒューマライズ:シフトⅢ|DataRow}} | 銀幣刮卡期間限定角色。由於很多強力角色都是人類,加上其AS、PS的增強,迅速成為主流隊長之一。 {{:LS:スピリライズ:シフトⅢ|DataRow}} | 銀幣刮卡期間限定角色。 {{:LS:デモンライズ:シフトⅢ|DataRow}} | 銀幣刮卡期間限定角色。 {{:LS:ゴッドライズ:シフトⅢ|DataRow}} |剛推出[[:Category:北歐神系列|北歐神]]時因為神系角色稀少所以僅有{{772|Monster}}可以藉由亂入的{{218|Monster}}、{{768|Monster}}可藉由活動的{{803|Monster}}組成隊伍,後來由於[[:Category:病神系列|病神]]的出現,才使得神系組隊普遍化。 |- |colspan=4 class=subtitle-row| ×2.5血【Life III】 / ×2.5攻【Assault III】 {{:LS:ヒューマライズ:アサルトⅢ|DataRow}} |rowspan=10| 2.5倍ATK角色,犧牲HP的提升而將ATK最大化,在「掃」普通副本時十分有效,常常能一回合清除小怪甚至Boss,但不能秒人便會被秒。其中{{296|Monster}}是第一次亦是最容易的{{DLink|理想郷アヴァロン|text=yes}}的Boss,人類隊員又有很多,而本身的二圍亦不弱,導致早期經常出現亞瑟好友泛濫的情況。 {{:LS:デモンライズ:アサルトⅢ|DataRow}} {{:LS:マシナライズ:アサルトⅢ|DataRow}} {{:LS:ドラゴライズ:アサルトⅢ|DataRow}} {{:LS:フィアライズ:アサルトⅢ|DataRow}} {{:LS:アクアライズ:アサルトⅢ|DataRow}} {{:LS:ウィンダライズ:アサルトⅢ|DataRow}} {{:LS:ライトライズ:アサルトⅢ|DataRow}} {{:LS:ダクタライズ:アサルトⅢ|DataRow}} {{:LS:ノンライズ:アサルトⅢ|DataRow}} {{:LS:デモンライズ:ライフⅢ|DataRow}} |rowspan=9| {{:LS:マシナライズ:ライフⅢ|DataRow}} {{:LS:ドラゴライズ:ライフⅢ|DataRow}} {{:LS:フィアライズ:ライフⅢ|DataRow}} {{:LS:アクアライズ:ライフⅢ|DataRow}} {{:LS:ウィンダライズ:ライフⅢ|DataRow}} {{:LS:ライトライズ:ライフⅢ|DataRow}} {{:LS:ダクタライズ:ライフⅢ|DataRow}} {{:LS:ノンライズ:ライフⅢ|DataRow}} {{:LS:5代目マスター|DataRow}} | 2.5倍HP角色,「磨隊」的隊長,以高血低攻長時間作戰逐漸消滅Boss。{{320|Monster}}是早期唯一能免費取得的×2.5血角色。 {{:LS:一方通行|DataRow}} |rowspan=3| {{:LS:エロヒム|DataRow}} {{:LS:エロヒム・ツァバオト|DataRow}} {{:LS:エル|DataRow}} |DAL抽棋角色,原本妖精種族因血量關係不適合作為磨隊,但在{{650|Monster}}出現後有了可能性。 |- {{:LS:元気を歌う少年|DataRow}} |rowspan=3| {{:LS:情熱を歌う美女|DataRow}} {{:LS:夢を歌う青年|DataRow}} |- |colspan=4 class=subtitle-row| ×2.0血攻【Shift II】 {{:LS:フィアライズ:シフトⅡ|DataRow}} |rowspan=9| 各2.0倍HP&ATK角色。既能提高血量亦可加大輸出,是必須的隊長選擇。 {{:LS:アクアライズ:シフトⅡ|DataRow}} {{:LS:ウィンダライズ:シフトⅡ|DataRow}} {{:LS:ライトライズ:シフトⅡ|DataRow}} {{:LS:ダクタライズ:シフトⅡ|DataRow}} {{:LS:ノンライズ:シフトⅡ|DataRow}} {{:LS:ヒューマライズ:シフトⅡ|DataRow}} {{:LS:マシナライズ:シフトⅡ|DataRow}} {{:LS:デモンライズ:シフトⅡ|DataRow}} {{:LS:ドラゴライズ:シフトⅡ|DataRow}} |因為龍系角色稀少而沒有太大用途,等收集到足夠的龍系角色後往往已可以挑戰{{DLink|古神殿ヒルズアーク|text=yes}}獲取{{595|Monster}},目前存在的價值相當微妙。 {{:LS:スピリライズ:シフトⅡ|DataRow}} |{{534|Monster}}取得困難且妖精種族沒有特別突出的點,遠比屬性×2.0血攻貧弱。 {{:LS:ビーストライズ:シフトⅡ|DataRow}} |{{640|Monster}}目前只有活動能取得,對新手玩家來講難度高,且實用性也不大。 {{:LS:ゴッドライズ:シフトⅡ|DataRow}} | {{:LS:フィアデモライズ:シフトⅡ|DataRow}} |rowspan=6|5/30/2014新追加的聖劇戲曲系列角色,跨越了屬性與種族的新UNIT引起一陣撻伐。 {{:LS:アクアマシナライズ:シフトⅡ|DataRow}} {{:LS:ウィンドヒューマライズ:シフトⅡ|DataRow}} {{:LS:ライトドラゴライズ:シフトⅡ|DataRow}} {{:LS:ダクタスピリライズ:シフトⅡ|DataRow}} {{:LS:ノーンビーストライズ:シフトⅡ|DataRow}} {{:LS:ライトマシナライズ:シフトⅡ|DataRow}} | {{:LS:アドナイ・メレク|DataRow}} |DAL一等抽獎角色,破格的雙種族與強力攻擊增幅讓她迅速上竄 {{:LS:エロヒム・ギボール|DataRow}} |DAL一等抽獎角色,可以作為{{146|Monster}}與{{583|Monster}}替代品 {{:LS:妖精女王|DataRow}} |rowspan=8| 較多人使用的合作刮卡一、二等角色,取得上較一般刮卡簡單,但仍需要付出一定的金錢。 {{:LS:人類最強の兵士|DataRow}} {{:LS:死の捕食|DataRow}} {{:LS:星霊の加護|DataRow}} {{:LS:甘味の心得|DataRow}} {{:LS:00475-AECJ-30157-1|DataRow}} {{:LS:純真の歌姫|DataRow}} {{:LS:恋を歌う少女|DataRow}} {{:LS:妖精軍師|DataRow}} |rowspan=4| 合作/活動副本的角色。{{321|Monster}}能簡單取得,所以有很多人使用。{{776|Monster}}也是能免費取得的好隊長。 {{:LS:最悪の犯罪者|DataRow}} {{:LS:ヤクマ十八闘神魔法|DataRow}} {{:LS:犯罪係数472|DataRow}} |} 這一類提升主參數的隊長技的常用表記如下 — 「(第一部分)(第二部分):(第三部分)(第四部分)」 第一部分規定範圍:即屬性與種族。第一部分可以有一項,也可以包括多於一項。 第二部分就決定那個範圍到底是與還是或,如果是Rise的話就是「或」(符合第一部分所述任一條件即可受惠),如果是Limit的話就是「與」(符合第一部分全部條件方可受惠)。 第三部分目前有五種可能:Life只加血、Assault只加攻擊,Shift兩者都加且倍數相等,Assault Shift是兩者俱加但攻擊加幅較大,Life Shift是兩者俱加但血加幅較大。 第四部分表示加的倍數如何。如果甚麼都沒有,對於Shift、Assault、Life就是1.5倍,對於Assault Shift 與Life Shift就是較大者兩倍較小者1.5倍。 第四部分如果是有加羅馬數字,這數字每加一,所有相關參數一起加0.5倍,例如Assault IV就是符合條件者攻擊力3倍,Life Shift II就是符合條件者血2.5倍攻2倍。 第四部分每有一個加號,就是較大的一者加0.5倍,只見於Assault Shift與Life Shift的場合,例如Assault Shift II+ 就是血2倍攻3倍。 值得注意的是,這種表記只適用於提升倍數可以0.5整除的例子。
摘要:
请注意在Divine Gate 维基上的所有贡献都将依据CC-BY-SA进行发布。
取消
编辑帮助
(在新窗口中打开)
Follow on IG
TikTok
Join Fan Lab