安魂曲
角色介绍
安魂曲是游戏中的可操作角色之一,在新玩家初次进入游戏,并开始剧情中的新手教程后,安魂曲是第一个试玩角色。
经常会因为犯困而在各种地方化为蝙蝠睡觉,就连飞行的时候也会睡着。
空幕
空幕特性
每装配一个III型驱动,使暗属性异能伤害增强10%
空幕形状
异能
角色特性
| 高难度梦游 | 安魂曲在梦中化身蝙蝠,自由飞翔。在非战斗状态下,长按闪避可触发飞行模式,飞行期间会消耗耐力。[1] |
都市特性
番茄大厨
| LV.1 | 安魂曲上阵店铺后上架菜品包含1个甜品标签,该店的菜品售价额外增加1% |
| LV.2 | 安魂曲上阵店铺后食材消耗速度降低1% |
| LV.3 | 「店长特供」中会出现特殊菜品「特调番茄汁」,在玻璃杯中加入番茄汁即可制作。 |
| LV.4 | 安魂曲上阵店铺后食材消耗速度降低1% |
| LV.5 | 安魂曲上阵店铺后上架菜品包含2个甜品标签,该店的菜品售价额外增加1.5% |
专属「蝠利」
| LV.1 | 安魂曲在队伍中时,「粉爪大劫案」中结算时获取的方斯和爪爪币提高15% |
| LV.2 | 安魂曲在队伍中时,「粉爪大劫案」中结算时获取的方斯和爪爪币提高20% |
技能
注:所有表格内数据如无后缀,数据为百分数时即为该数值基于攻击力,数据为整数时代表不基于任何属性的固定数值。
普通攻击:酸甜口味的制裁
| 普通攻击:茄汁金属乐 | 安魂曲挥舞「平底锅」,发动至多5段连续攻击,造成暗属性异能伤害。第2段攻击产生的子弹可被后续攻击击破,引发爆炸,并造成额外暗属性异能伤害。 |
| 普通攻击:茄汁打击乐 | 安魂曲操纵「猩红果冻」,进行至多5段的连续攻击,造成暗属性异能伤害。 |
| 风味变奏 | 可随时通过瞄准键使用「风味变奏」。当安魂曲当前使用「普通攻击:茄汁金属乐」时,安魂曲甩出「平底锅」并向前飞踢,对命中的目标各造成1次暗属性异能伤害,随后攻击模组将替换为「普通攻击:茄汁打击乐」。当安魂曲当前使用「普通攻击:茄汁打击乐」时,安魂曲跃起后重击地面,造成1次范围暗属性异能伤害,随后攻击模组将替换为「普通攻击:茄汁金属乐」。普通攻击风格的不同将决定「极轨终结:工作日最终审判」的攻击方式。 |
| 普通攻击:恶魔的灵感 (使用该能力需完成番外《番茄酱暴走现场实录!》后解锁) |
长按使安魂曲进入瞄准状态,对准心范围内的敌人造成1次单体的暗属性异能伤害,并习得该敌人的战斗技巧。学习成功后,安魂曲将暂时遗忘「变轨技能:起床气加载中」,并使用习得的战斗技巧。习得的战斗技巧将长期保存于安魂曲的记忆中。可以习得新技巧以替换原有技巧,或在技能页面使安魂曲主动遗忘该技巧,从而重新回忆起「变轨技能:起床气加载中」。 |
| 普通攻击:番茄座流星雨 | 安魂曲在空中操纵异能造物,并迅速下落冲击地面,落地后造成1次范围性的暗属性异能伤害,伤害随下落高度升高而提升,最高提升1倍。 |
| 极限反击:fff休止符 | 触发极限闪避后使用「普通攻击」触发。安魂曲抓住敌人攻击落空的破绽,将大量「猩红果冻」猛地砸向敌人头顶,造成6次范围性的暗属性异能伤害,并额外扣除一定倾陷值。 |
| 「噩梦」 | 安魂曲攻击命中时,为目标施加「噩梦」状态,至多可叠加10层。如果1次「普通攻击」造成了多段伤害,每段伤害命中时都将附加1层「噩梦」。 |
普通攻击技能倍率表
变轨技能:
| 变轨技能:起床气加载中 | 阿……阿嚏!安魂曲失手掷出大量未成型的异能造物,对范围内全体目标造成1次暗属性异能伤害,并为目标附加「噩梦」状态。释放「变轨技能:起床气加载中」后,可直接释放「普通攻击:茄汁金属乐」或「普通攻击:茄汁打击乐」的第5段。 |
| 变轨技能:恶魔的礼物 | 安魂曲……也能做到。安魂曲使用异能,创造出与技巧原主相同的怪物并发动攻击,同时触发相应的技巧附加效果。技巧的释放时长与技巧原主相同。在释放期间,安魂曲无法移动,但可以主动取消释放或切换其他角色入场战斗。若在释放技巧期间安魂曲遭到攻击,则会受到伤害。释放「变轨技能:恶魔的礼物」时,安魂曲自动获得相当于技巧原主一定百分比的攻击力。 |
变轨技能技能倍率表
安魂曲可用全异能倍率表
由于统计出来的异能倍率表长度过长,且被分成了三个表,因此默认折叠,如有需要可展开查看详情
<script>(function() {
'use strict';
// ---------- 从参数中获取 id ----------
var widgetId = ;
var container = document.getElementById('widget-' + widgetId);
if (!container) {
console.warn('[Widget] 未找到容器 #widget-' + widgetId);
return;
}
// ---------- 数据(每个微件独立修改) ---------- var HEADERS = ['分解者', '棉绒绒', '低语种', '风洞种', '迷失种', '轰洞种', '抱抱藤', '雨人', '洄天鱼幡', '诺诺斯', '唱片机附电灵', '诡面筝', '罐头锡兵·蓝_1', '罐头锡兵·蓝_2', '罐头锡兵·红斧', '流梦种', '羽偶', '无明众喽啰(女)'];
var ROWS = [
[0.48, 1.053, 1.173, 0.567, 1.6, 0.426, 1.387, 1.267, 1.973, 1.96, 2.227, 3.213, 0.807, 1.613, 1.044, 2.207, 3.333, 2.307], [0.518, 1.138, 1.267, 0.612, 1.728, 0.46, 1.498, 1.368, 2.131, 2.117, 2.405, 3.47, 0.871, 1.742, 1.128, 2.383, 3.6, 2.491], [0.56, 1.229, 1.369, 0.661, 1.866, 0.496, 1.617, 1.477, 2.302, 2.286, 2.597, 3.748, 0.941, 1.882, 1.218, 2.574, 3.888, 2.69], [0.605, 1.327, 1.478, 0.714, 2.016, 0.536, 1.747, 1.596, 2.486, 2.469, 2.805, 4.048, 1.016, 2.032, 1.316, 2.78, 4.199, 2.906], [0.653, 1.433, 1.596, 0.771, 2.177, 0.579, 1.887, 1.723, 2.685, 2.667, 3.029, 4.372, 1.097, 2.195, 1.421, 3.002, 4.535, 3.138], [0.705, 1.548, 1.724, 0.833, 2.351, 0.625, 2.037, 1.861, 2.899, 2.88, 3.272, 4.721, 1.185, 2.371, 1.535, 3.242, 4.898, 3.389], [0.762, 1.672, 1.862, 0.899, 2.539, 0.675, 2.2, 2.01, 3.131, 3.11, 3.533, 5.099, 1.28, 2.56, 1.657, 3.502, 5.29, 3.66], [0.823, 1.805, 2.011, 0.971, 2.742, 0.729, 2.377, 2.171, 3.382, 3.359, 3.816, 5.507, 1.382, 2.765, 1.79, 3.782, 5.713, 3.953], [0.888, 1.95, 2.172, 1.049, 2.961, 0.788, 2.567, 2.345, 3.653, 3.628, 4.121, 5.948, 1.493, 2.986, 1.933, 4.084, 6.17, 4.269], [0.96, 2.106, 2.345, 1.133, 3.198, 0.851, 2.772, 2.532, 3.945, 3.918, 4.451, 6.423, 1.613, 3.225, 2.088, 4.411, 6.663, 4.611], [1.036, 2.274, 2.533, 1.223, 3.454, 0.919, 2.994, 2.735, 4.26, 4.231, 4.807, 6.937, 1.742, 3.483, 2.255, 4.764, 7.196, 4.98]
];
var LEVELS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
// ---------- ★ 新增:多段伤害配置(列名 → 段数) ----------
var MULTI_HIT = {
// 如果你还有其他多段伤害,在这里继续添加,例如:
'风洞种': 4,
'罐头锡兵·蓝_1': 2,
'流梦种': 2,
};
var COLUMN_FORMAT = {
// 示例:为特定列添加后缀
'分解者': { suffix: '每段' },
'轰洞种': { suffix: '每段' },
'唱片机附电灵': { suffix: '每段' },
'罐头锡兵·红斧': { suffix: '每段' },
// 示例:显示为纯整数(无百分号)
//'Skill_Kill_lv1': { type: 'integer' },
//'Skill_Kill_lv2': { type: 'integer' },
// 可以同时添加后缀和整数吗?可以,但整数模式会忽略后缀,所以不要同时设置。
};
// ---------- 合并配置 ----------
var DEFAULT_MERGE_GROUPS = [
{ newHeader: '罐头锡兵·蓝', sources: ['罐头锡兵·蓝_1', '罐头锡兵·蓝_2'] },
];
// 从 data-merge 解析
var mergeAttr = container.dataset.merge;
var mergeGroups = DEFAULT_MERGE_GROUPS;
if (mergeAttr && mergeAttr.trim() !== ) {
try { mergeGroups = JSON.parse(mergeAttr); } catch(e) {}
}
// ---------- 辅助函数 ----------
function fmtPercent(v) {
if (v === undefined || v === null) return '—';
var pct = v * 100;
// 使用 toFixed(12) 保证足够精度,同时避免浮点数误差
var str = pct.toFixed(12);
// 去除末尾多余的零,如果小数点后全是零,也去除小数点
str = str.replace(/\.?0+$/, );
return str + '%';
}
function escapeHtml(str) {
if (!str) return ;
var div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// ---------- ★ 新增:根据列名和数值生成显示字符串(支持多段) ----------
function formatDisplayValue(columnName, value) {
if (value === undefined || value === null) return '—';
var format = COLUMN_FORMAT[columnName] || {};
var isInteger = format.type === 'integer';
var suffix = format.suffix || ;
var displayStr;
if (isInteger) {
displayStr = Math.round(value).toString();
} else {
// 使用修改后的 fmtPercent,不再四舍五入
displayStr = fmtPercent(value);
}
// 多段处理
var hits = MULTI_HIT[columnName];
if (!isInteger && hits && typeof hits === 'number' && hits > 1) {
displayStr = displayStr + '*' + hits;
}
// 后缀
if (suffix) {
displayStr = displayStr + suffix;
}
return displayStr; }
// ---------- 构建展示列 ----------
function buildDisplayColumns(mergeGroups) {
var displayCols = [];
var mergeSourceMap = {};
mergeGroups.forEach(function(group) {
group.sources.forEach(function(src) {
mergeSourceMap[src] = group;
});
});
for (var i = 0; i < HEADERS.length; i++) {
var colName = HEADERS[i];
if (mergeSourceMap[colName]) {
var group = mergeSourceMap[colName];
var alreadyAdded = displayCols.some(function(item) {
return item.type === 'merge' && item.group === group;
});
if (!alreadyAdded) {
displayCols.push({
type: 'merge',
header: group.newHeader,
sources: group.sources.slice(),
group: group
});
}
continue;
}
displayCols.push({
type: 'normal',
index: i,
header: colName
});
}
return displayCols;
}
// ---------- 格式化合并列数据(每个源列都支持多段) ----------
function formatMergeData(sources, rowData) {
var parts = [];
for (var i = 0; i < sources.length; i++) {
var srcName = sources[i];
var idx = HEADERS.indexOf(srcName);
if (idx === -1) { parts.push('?'); continue; }
var val = rowData[idx];
if (val === undefined || val === null) {
parts.push('—');
} else {
parts.push(formatDisplayValue(srcName, val));
}
}
return parts.join('+');
}
// ---------- 初始化当前容器 ----------
var displayCols = buildDisplayColumns(mergeGroups);
var slider = container.querySelector('.widget-level-slider');
var badge = container.querySelector('.widget-datatable-level-badge');
var thead = container.querySelector('.widget-table-head');
var tbody = container.querySelector('.widget-table-body');
function renderTable(levelIndex) {
if (levelIndex < 0 || levelIndex >= LEVELS.length) levelIndex = 0;
var rowData = ROWS[levelIndex] || [];
// 表头var headHtml = ''; for (var i = 0; i < displayCols.length; i++) { headHtml += '' + escapeHtml(displayCols[i].header) + '';
}headHtml += ''; thead.innerHTML = headHtml; // 数据行 var bodyHtml = ''; for (var j = 0; j < displayCols.length; j++) { var col = displayCols[j]; var displayVal; if (col.type === 'merge') { displayVal = formatMergeData(col.sources, rowData); } else { var rawVal = rowData[col.index]; // 使用新的 formatDisplayValue 函数 displayVal = formatDisplayValue(col.header, rawVal); } bodyHtml += '' + displayVal + '';
}bodyHtml += ''; tbody.innerHTML = bodyHtml; badge.textContent = 'Lv.' + LEVELS[levelIndex]; } function onSliderChange() { var val = parseInt(slider.value, 10); if (isNaN(val) || val < 1) val = 1; if (val > LEVELS.length) val = LEVELS.length; renderTable(val - 1); } slider.addEventListener('input', onSliderChange); slider.value = 1; renderTable(0); })();</script>
<script>(function() {
'use strict';
// ---------- 从参数中获取 id ----------
var widgetId = ;
var container = document.getElementById('widget-' + widgetId);
if (!container) {
console.warn('[Widget] 未找到容器 #widget-' + widgetId);
return;
}
// ---------- 数据(每个微件独立修改) ---------- var HEADERS = ['岩壳种' ,'「肉改」棉绒绒' ,'凭依种' ,'欧拉拳套' ,'波普' ,'妖刀' ,'蜘识藏家' ,'贩售机附电灵' ,'拖车艄' ,'长明灯' ,'伤心英熊' ,'增殖的C' ,'纸翼战队' ,'ReroRero电话亭' ,'无明众精英(女)' ,'瓦楞城堡' ,'扫晴娘' ,'无明众精英(男)' ,'桀桀熊'];
var ROWS = [
[2.573, 1.907, 1.867, 2.16, 2.0, 1.707, 2.227, 2.347, 2.4, 0.584, 3.36, 3.893, 1.4, 3.413, 1.333, 1.6, 2.667, 1.773, 2.1],
[2.779, 2.059, 2.016, 2.333, 2.16, 1.843, 2.405, 2.534, 2.592, 0.631, 3.629, 4.205, 1.512, 3.686, 1.44, 1.728, 2.88, 1.915, 2.268], [3.002, 2.224, 2.177, 2.519, 2.333, 1.991, 2.597, 2.737, 2.799, 0.682, 3.919, 4.541, 1.633, 3.981, 1.555, 1.866, 3.11, 2.068, 2.449], [3.242, 2.402, 2.351, 2.721, 2.519, 2.15, 2.805, 2.956, 3.023, 0.736, 4.233, 4.904, 1.764, 4.3, 1.68, 2.016, 3.359, 2.234, 2.645], [3.501, 2.594, 2.54, 2.939, 2.721, 2.322, 3.029, 3.193, 3.265, 0.795, 4.571, 5.297, 1.905, 4.644, 1.814, 2.177, 3.628, 2.413, 2.857], [3.781, 2.802, 2.743, 3.174, 2.939, 2.508, 3.272, 3.448, 3.526, 0.859, 4.937, 5.721, 2.057, 5.015, 1.959, 2.351, 3.918, 2.606, 3.086], [4.084, 3.026, 2.962, 3.428, 3.174, 2.708, 3.533, 3.724, 3.808, 0.927, 5.332, 6.178, 2.222, 5.417, 2.116, 2.539, 4.232, 2.814, 3.332], [4.41, 3.268, 3.199, 3.702, 3.428, 2.925, 3.816, 4.022, 4.113, 1.002, 5.758, 6.672, 2.399, 5.85, 2.285, 2.742, 4.57, 3.039, 3.599], [4.763, 3.529, 3.455, 3.998, 3.702, 3.159, 4.121, 4.344, 4.442, 1.082, 6.219, 7.206, 2.591, 6.318, 2.468, 2.961, 4.936, 3.282, 3.887], [5.144, 3.811, 3.731, 4.318, 3.998, 3.412, 4.451, 4.691, 4.798, 1.168, 6.717, 7.783, 2.799, 6.823, 2.665, 3.198, 5.331, 3.545, 4.198], [5.556, 4.116, 4.03, 4.663, 4.318, 3.685, 4.807, 5.066, 5.181, 1.262, 7.254, 8.405, 3.022, 7.369, 2.879, 3.454, 5.757, 3.828, 4.534]
];
var LEVELS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
// ---------- ★ 新增:多段伤害配置(列名 → 段数) ----------
var MULTI_HIT = {
// 如果你还有其他多段伤害,在这里继续添加,例如:
'桀桀熊': 2,
'瓦楞城堡': 2,
};
var COLUMN_FORMAT = {
// 示例:为特定列添加后缀
'长明灯': { suffix: '每段' },
'纸翼战队': { suffix: '每段' },
// 示例:显示为纯整数(无百分号)
//'Skill_Kill_lv1': { type: 'integer' },
//'Skill_Kill_lv2': { type: 'integer' },
// 可以同时添加后缀和整数吗?可以,但整数模式会忽略后缀,所以不要同时设置。
};
// ---------- 合并配置 ----------
var DEFAULT_MERGE_GROUPS = [
//{ newHeader: '特殊攻击', sources: ['普通攻击1', '普通攻击2'] },
];
// 从 data-merge 解析
var mergeAttr = container.dataset.merge;
var mergeGroups = DEFAULT_MERGE_GROUPS;
if (mergeAttr && mergeAttr.trim() !== ) {
try { mergeGroups = JSON.parse(mergeAttr); } catch(e) {}
}
// ---------- 辅助函数 ----------
function fmtPercent(v) {
if (v === undefined || v === null) return '—';
var pct = v * 100;
// 使用 toFixed(12) 保证足够精度,同时避免浮点数误差
var str = pct.toFixed(12);
// 去除末尾多余的零,如果小数点后全是零,也去除小数点
str = str.replace(/\.?0+$/, );
return str + '%';
}
function escapeHtml(str) {
if (!str) return ;
var div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// ---------- ★ 新增:根据列名和数值生成显示字符串(支持多段) ----------
function formatDisplayValue(columnName, value) {
if (value === undefined || value === null) return '—';
var format = COLUMN_FORMAT[columnName] || {};
var isInteger = format.type === 'integer';
var suffix = format.suffix || ;
var displayStr;
if (isInteger) {
displayStr = Math.round(value).toString();
} else {
// 使用修改后的 fmtPercent,不再四舍五入
displayStr = fmtPercent(value);
}
// 多段处理
var hits = MULTI_HIT[columnName];
if (!isInteger && hits && typeof hits === 'number' && hits > 1) {
displayStr = displayStr + '*' + hits;
}
// 后缀
if (suffix) {
displayStr = displayStr + suffix;
}
return displayStr; }
// ---------- 构建展示列 ----------
function buildDisplayColumns(mergeGroups) {
var displayCols = [];
var mergeSourceMap = {};
mergeGroups.forEach(function(group) {
group.sources.forEach(function(src) {
mergeSourceMap[src] = group;
});
});
for (var i = 0; i < HEADERS.length; i++) {
var colName = HEADERS[i];
if (mergeSourceMap[colName]) {
var group = mergeSourceMap[colName];
var alreadyAdded = displayCols.some(function(item) {
return item.type === 'merge' && item.group === group;
});
if (!alreadyAdded) {
displayCols.push({
type: 'merge',
header: group.newHeader,
sources: group.sources.slice(),
group: group
});
}
continue;
}
displayCols.push({
type: 'normal',
index: i,
header: colName
});
}
return displayCols;
}
// ---------- 格式化合并列数据(每个源列都支持多段) ----------
function formatMergeData(sources, rowData) {
var parts = [];
for (var i = 0; i < sources.length; i++) {
var srcName = sources[i];
var idx = HEADERS.indexOf(srcName);
if (idx === -1) { parts.push('?'); continue; }
var val = rowData[idx];
if (val === undefined || val === null) {
parts.push('—');
} else {
parts.push(formatDisplayValue(srcName, val));
}
}
return parts.join('+');
}
// ---------- 初始化当前容器 ----------
var displayCols = buildDisplayColumns(mergeGroups);
var slider = container.querySelector('.widget-level-slider');
var badge = container.querySelector('.widget-datatable-level-badge');
var thead = container.querySelector('.widget-table-head');
var tbody = container.querySelector('.widget-table-body');
function renderTable(levelIndex) {
if (levelIndex < 0 || levelIndex >= LEVELS.length) levelIndex = 0;
var rowData = ROWS[levelIndex] || [];
// 表头var headHtml = ''; for (var i = 0; i < displayCols.length; i++) { headHtml += '' + escapeHtml(displayCols[i].header) + '';
}headHtml += ''; thead.innerHTML = headHtml; // 数据行 var bodyHtml = ''; for (var j = 0; j < displayCols.length; j++) { var col = displayCols[j]; var displayVal; if (col.type === 'merge') { displayVal = formatMergeData(col.sources, rowData); } else { var rawVal = rowData[col.index]; // 使用新的 formatDisplayValue 函数 displayVal = formatDisplayValue(col.header, rawVal); } bodyHtml += '' + displayVal + '';
}bodyHtml += ''; tbody.innerHTML = bodyHtml; badge.textContent = 'Lv.' + LEVELS[levelIndex]; } function onSliderChange() { var val = parseInt(slider.value, 10); if (isNaN(val) || val < 1) val = 1; if (val > LEVELS.length) val = LEVELS.length; renderTable(val - 1); } slider.addEventListener('input', onSliderChange); slider.value = 1; renderTable(0); })();</script> 注1:无明众精英(女)的数据极有可能不准确,在同一测试环境中仅有她是完全无法测出正确数值结果的异象,由于游戏中提取出来的数据在代码中的上下位置关系和游戏内安魂曲的异象吸收表完全一致,因此无明众精英(女)的数据数组是在最后根据提取出来的数据的位置关系得到的,如需了解该异象的伤害倍率,强烈建议自行测试。
<script>(function() {
'use strict';
// ---------- 从参数中获取 id ----------
var widgetId = ;
var container = document.getElementById('widget-' + widgetId);
if (!container) {
console.warn('[Widget] 未找到容器 #widget-' + widgetId);
return;
}
// ---------- 数据(每个微件独立修改) ---------- var HEADERS = ['无首铁驭回旋/下砸', '赛润尼缇吼叫', '赛润尼缇下砸', '音霸魔王', '黑之书', '玛门', '番茄酱恶魔', '斑蝶', '囿巢鸟', '永不谢幕的阿拉克涅', '讨债人'];
var ROWS = [
[2.72, 0.593, 4.15, 2.8, 3.64, 2.53, 0.25, 2.98, 1.327, 5.1, 1.9],
[2.938, 0.64, 4.482, 3.024, 3.931, 2.732, 0.27, 3.218, 1.433, 5.508, 2.052], [3.173, 0.692, 4.841, 3.266, 4.246, 2.951, 0.292, 3.476, 1.547, 5.949, 2.216], [3.426, 0.747, 5.228, 3.527, 4.585, 3.187, 0.315, 3.754, 1.671, 6.425, 2.393], [3.701, 0.807, 5.646, 3.809, 4.952, 3.442, 0.34, 4.054, 1.805, 6.938, 2.585], [3.997, 0.871, 6.098, 4.114, 5.348, 3.717, 0.367, 4.379, 1.949, 7.494, 2.792], [4.316, 0.941, 6.586, 4.443, 5.776, 4.015, 0.397, 4.729, 2.105, 8.093, 3.015], [4.662, 1.016, 7.112, 4.799, 6.238, 4.336, 0.428, 5.107, 2.274, 8.741, 3.256], [5.035, 1.097, 7.681, 5.183, 6.737, 4.683, 0.463, 5.516, 2.456, 9.44, 3.517], [5.437, 1.185, 8.296, 5.597, 7.276, 5.057, 0.5, 5.957, 2.652, 10.195, 3.798], [5.872, 1.28, 8.96, 6.045, 7.858, 5.462, 0.54, 6.434, 2.864, 11.011, 4.102]
];
var LEVELS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
// ---------- ★ 新增:多段伤害配置(列名 → 段数) ----------
var MULTI_HIT = {
// 如果你还有其他多段伤害,在这里继续添加,例如:
'音霸魔王': 2,
'黑之书': 2,
'玛门': 2,
'斑蝶': 2,
'讨债人': 2
};
var COLUMN_FORMAT = {
// 示例:为特定列添加后缀
'赛润尼缇吼叫': { suffix: '每段' },
'番茄酱恶魔': { suffix: '每段' },
'囿巢鸟': { suffix: '每段' },
// 示例:显示为纯整数(无百分号)
//'Skill_Kill_lv1': { type: 'integer' },
//'Skill_Kill_lv2': { type: 'integer' },
// 可以同时添加后缀和整数吗?可以,但整数模式会忽略后缀,所以不要同时设置。
};
// ---------- 合并配置 ----------
var DEFAULT_MERGE_GROUPS = [
//{ newHeader: '特殊攻击', sources: ['普通攻击1', '普通攻击2'] },
];
// 从 data-merge 解析
var mergeAttr = container.dataset.merge;
var mergeGroups = DEFAULT_MERGE_GROUPS;
if (mergeAttr && mergeAttr.trim() !== ) {
try { mergeGroups = JSON.parse(mergeAttr); } catch(e) {}
}
// ---------- 辅助函数 ----------
function fmtPercent(v) {
if (v === undefined || v === null) return '—';
var pct = v * 100;
// 使用 toFixed(12) 保证足够精度,同时避免浮点数误差
var str = pct.toFixed(12);
// 去除末尾多余的零,如果小数点后全是零,也去除小数点
str = str.replace(/\.?0+$/, );
return str + '%';
}
function escapeHtml(str) {
if (!str) return ;
var div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}
// ---------- ★ 新增:根据列名和数值生成显示字符串(支持多段) ----------
function formatDisplayValue(columnName, value) {
if (value === undefined || value === null) return '—';
var format = COLUMN_FORMAT[columnName] || {};
var isInteger = format.type === 'integer';
var suffix = format.suffix || ;
var displayStr;
if (isInteger) {
displayStr = Math.round(value).toString();
} else {
// 使用修改后的 fmtPercent,不再四舍五入
displayStr = fmtPercent(value);
}
// 多段处理
var hits = MULTI_HIT[columnName];
if (!isInteger && hits && typeof hits === 'number' && hits > 1) {
displayStr = displayStr + '*' + hits;
}
// 后缀
if (suffix) {
displayStr = displayStr + suffix;
}
return displayStr; }
// ---------- 构建展示列 ----------
function buildDisplayColumns(mergeGroups) {
var displayCols = [];
var mergeSourceMap = {};
mergeGroups.forEach(function(group) {
group.sources.forEach(function(src) {
mergeSourceMap[src] = group;
});
});
for (var i = 0; i < HEADERS.length; i++) {
var colName = HEADERS[i];
if (mergeSourceMap[colName]) {
var group = mergeSourceMap[colName];
var alreadyAdded = displayCols.some(function(item) {
return item.type === 'merge' && item.group === group;
});
if (!alreadyAdded) {
displayCols.push({
type: 'merge',
header: group.newHeader,
sources: group.sources.slice(),
group: group
});
}
continue;
}
displayCols.push({
type: 'normal',
index: i,
header: colName
});
}
return displayCols;
}
// ---------- 格式化合并列数据(每个源列都支持多段) ----------
function formatMergeData(sources, rowData) {
var parts = [];
for (var i = 0; i < sources.length; i++) {
var srcName = sources[i];
var idx = HEADERS.indexOf(srcName);
if (idx === -1) { parts.push('?'); continue; }
var val = rowData[idx];
if (val === undefined || val === null) {
parts.push('—');
} else {
parts.push(formatDisplayValue(srcName, val));
}
}
return parts.join('+');
}
// ---------- 初始化当前容器 ----------
var displayCols = buildDisplayColumns(mergeGroups);
var slider = container.querySelector('.widget-level-slider');
var badge = container.querySelector('.widget-datatable-level-badge');
var thead = container.querySelector('.widget-table-head');
var tbody = container.querySelector('.widget-table-body');
function renderTable(levelIndex) {
if (levelIndex < 0 || levelIndex >= LEVELS.length) levelIndex = 0;
var rowData = ROWS[levelIndex] || [];
// 表头var headHtml = ''; for (var i = 0; i < displayCols.length; i++) { headHtml += '' + escapeHtml(displayCols[i].header) + '';
}headHtml += ''; thead.innerHTML = headHtml; // 数据行 var bodyHtml = ''; for (var j = 0; j < displayCols.length; j++) { var col = displayCols[j]; var displayVal; if (col.type === 'merge') { displayVal = formatMergeData(col.sources, rowData); } else { var rawVal = rowData[col.index]; // 使用新的 formatDisplayValue 函数 displayVal = formatDisplayValue(col.header, rawVal); } bodyHtml += '' + displayVal + '';
}bodyHtml += ''; tbody.innerHTML = bodyHtml; badge.textContent = 'Lv.' + LEVELS[levelIndex]; } function onSliderChange() { var val = parseInt(slider.value, 10); if (isNaN(val) || val < 1) val = 1; if (val > LEVELS.length) val = LEVELS.length; renderTable(val - 1); } slider.addEventListener('input', onSliderChange); slider.value = 1; renderTable(0); })();</script> 注2:游戏中并未将强敌和首领合为一类,但考虑到目前安魂曲可吸收的首领仅有两个,因此本wiki合并了两类。
极轨终结:工作日最终审判
| 工作日最终审判:货车 | 当安魂曲当前使用「普通攻击:茄汁金属乐」时,安魂曲操控「货车」,造成10段范围性的暗属性异能伤害,并为范围内的所有目标附加「噩梦」。 |
| 工作日最终审判:汽车 | 当安魂曲当前使用「普通攻击:茄汁打击乐」时,安魂曲拆解「汽车」,造成5段范围性的暗属性异能伤害,并为范围内的所有目标附加「噩梦」。 |
极轨终结技能倍率表
援护技:紧急唤醒
| 援护技:紧急唤醒 | 解决这个,就可以休息了。安魂曲迅速操纵异能造物,造成1次范围性的暗属性异能伤害。 |
援护技技能倍率表
被动技能
| 番茄酱盛宴 | 「失谐」强化:触发「失谐」时,若目标已处于倾陷状态,则对目标额外造成400%攻击力的伤害。 |
| 就要自然醒 | 技能冷却期间,安魂曲使用「普通攻击:茄汁金属乐」或「普通攻击:茄汁打击乐」5次后,额外获得1次「变轨技能:起床气加载中」使用次数。此效果在每次技能冷却期间仅生效1次。 |
觉醒
觉醒效果
| 觉醒1:不加班之宽赦 | 「噩梦」的伤害倍率提升,当前技能等级下提升具体数值参考普攻倍率表末尾项。 |
| 觉醒2:闹钟响彻四方 | 安魂曲通过「援护技」入场时,自身造成的伤害提升15%,提升效果持续15秒。 |
| 觉醒3:冰淇淋在烈阳中融化 | 第5段「普通攻击:茄汁金属乐」或「普通攻击:茄汁打击乐」命中目标时,一次性结算目标当前已累积的全部「噩梦」效果。 |
| 觉醒4:威严赫赫番茄酱大王 | 「噩梦」状态的持续时间延长至6秒。 |
| 觉醒5:强化玻璃径受审判 | 安魂曲造成「噩梦」伤害时,额外削减目标生命值上限,削减量为本次「噩梦」伤害值的200%。每3秒,安魂曲基于期间造成的「噩梦」伤害回复自身生命值,回复量为期间「噩梦」总伤害值的1.5%。目标受到治疗时,不再移除「噩梦」层数。 |
| 觉醒6:早起出勤之咏 | 安魂曲释放「变轨技能:恶魔的礼物」后的5秒内,从任意可触发「黯星」「浊燃」「失谐」三种异能环合的角色切换至安魂曲时,无需累积「环合值」,即可自动释放「援护技」,并触发相应环合。该效果每5秒最多触发1次。 |
共鸣效果
| 3次觉醒后额外获得: 困倦的火焰在心中燃烧 |
「普通攻击:酸甜口味的制裁」「变轨技能:起床气加载中」「变轨技能:恶魔的礼物」「极轨终结:工作日最终审判」的技能等级提升1级。以蝙蝠形态飞行时,耐力消耗降低至85%。 |
| 6次觉醒后额外获得: 美梦的时刻即将来临 |
安魂曲造成的伤害,无视目标20%防御力。以蝙蝠形态飞行时,耐力消耗降低至70%。 |
激活后所有效果常驻生效。
觉醒原画
时装


粤公网安备44030002015967号