洛天依 (#1887)
1950
repo/js/OcrMonsterNum/assets/info.json
Normal file
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 57 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/凌晶·霜夜灵嗣.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 56 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·尖端全能攻坚型.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·尖端全能斥候型.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·尖端火力地效型.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·强侦地效型.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·强侦攻坚型.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·强侦斥候型.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·近战攻坚型.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/巡陆艇·近战斥候型.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 53 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·先锋士.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·冰雹重炮手.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·掷弹兵.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·支援兵.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·榴铳手.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·火刃突击队.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·疗愈师.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·线列军.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/愚人众特辖队·雷霰近卫军.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/灼烜·霜夜灵嗣.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/荒野幽徒.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/荒野狂狩士.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/蔓结·霜夜灵嗣.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/蕴光刃犀.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/蕴光奇羊.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/蕴光月幻蝶.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/蕴光璇蛸.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/辉电·霜夜灵嗣.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
repo/js/OcrMonsterNum/assets/monster/重拳出击鸭.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
@@ -1,130 +1,193 @@
|
||||
(async function () {
|
||||
// 1. 初始化(分辨率由游戏环境自动提供)
|
||||
// 输出当前系统时间到 monster_count.txt 文件
|
||||
const now = new Date();
|
||||
const formattedTime = now.toLocaleString('zh-CN', {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'
|
||||
}).replace(/\//g, '.');
|
||||
const storagePath = "monster_count.txt"; // 结果存储文件
|
||||
const timeContent = `\n${formattedTime}\n`;
|
||||
file.writeTextSync(storagePath, timeContent, true); // 追加模式
|
||||
async function getMonsterCounts() {
|
||||
/* 0. 读取怪物列表 */
|
||||
const raw = file.readTextSync('assets/info.json');
|
||||
const monsterList = JSON.parse(raw).map(it => it.name);
|
||||
const monsterCounts = {};
|
||||
|
||||
await genshin.returnMainUi(); // 返回主界面
|
||||
keyPress("VK_ESCAPE"); // 打开派蒙菜单
|
||||
await sleep(1500); // 等待1.5秒
|
||||
/* 1. 外层循环:最多 3 次进入生物志 */
|
||||
let attempt = 0;
|
||||
while (attempt < 3) {
|
||||
attempt++;
|
||||
log.info(`第 ${attempt} 次尝试进入生物志`);
|
||||
await genshin.returnMainUi();
|
||||
keyPress('VK_ESCAPE');
|
||||
await sleep(1500);
|
||||
|
||||
// 2. 识别并点击【图鉴】
|
||||
const archiveTemplate = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync("assets/RecognitionObject/图鉴.png"),
|
||||
0, 0, 1920, 1080
|
||||
);
|
||||
const archiveRegion = captureGameRegion().find(archiveTemplate);
|
||||
if (!archiveRegion.isEmpty()) {
|
||||
archiveRegion.click();
|
||||
const archiveTpl = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync('assets/RecognitionObject/图鉴.png'), 0, 0, 1920, 1080);
|
||||
if (!(await findAndClick(archiveTpl))) continue;
|
||||
|
||||
const faunaTpl = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync('assets/RecognitionObject/生物志.png'), 0, 0, 1920, 1080);
|
||||
if (!(await findAndClick(faunaTpl))) continue;
|
||||
|
||||
click(1355, 532);
|
||||
await sleep(2000);
|
||||
break;
|
||||
}
|
||||
await sleep(3000); // 等待3秒
|
||||
|
||||
// 3. 识别并点击【生物志】
|
||||
const faunaTemplate = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync("assets/RecognitionObject/生物志.png"),
|
||||
0, 0, 1920, 1080
|
||||
);
|
||||
const faunaRegion = captureGameRegion().find(faunaTemplate);
|
||||
if (!faunaRegion.isEmpty()) {
|
||||
faunaRegion.click();
|
||||
if (attempt >= 3) {
|
||||
log.error('连续 3 次无法进入生物志,脚本终止');
|
||||
await genshin.returnMainUi();
|
||||
return {};
|
||||
}
|
||||
await sleep(400);
|
||||
click(1355, 532);
|
||||
await sleep(2000); // 等待2秒
|
||||
|
||||
// 4. 循环处理怪物识别
|
||||
// 读取 name.txt 文件中的怪物名称列表
|
||||
const monsterList = file.readTextSync("name.txt").split('\n').filter(name => name.trim()!== '');
|
||||
let monsterNum = 1;
|
||||
|
||||
for (const monsterId of monsterList) {
|
||||
let pageTurns = 0;
|
||||
let monsterRegion = null;
|
||||
|
||||
while (pageTurns < 70) {
|
||||
// 4a. 识别怪物图片
|
||||
const monsterTemplate = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync(`assets/monster/${monsterId.trim()}.png`),
|
||||
0, 0, 1920, 1080
|
||||
);
|
||||
monsterRegion = captureGameRegion().find(monsterTemplate);
|
||||
|
||||
if (!monsterRegion.isEmpty()) {
|
||||
break; // 识别到怪物,跳出翻页循环
|
||||
/* ===== 工具函数 ===== */
|
||||
async function findAndClick(target, maxAttempts = 20) {
|
||||
for (let attempts = 0; attempts < maxAttempts; attempts++) {
|
||||
const gameRegion = captureGameRegion();
|
||||
try {
|
||||
const result = gameRegion.find(target);
|
||||
if (result.isExist()) {
|
||||
result.click();
|
||||
return true; // 成功立刻返回
|
||||
}
|
||||
} catch (err) {
|
||||
} finally {
|
||||
gameRegion.dispose();
|
||||
}
|
||||
if (attempts < maxAttempts - 1) { // 最后一次不再 sleep
|
||||
await sleep(50);
|
||||
}
|
||||
}
|
||||
//log.error("已达到重试次数上限,仍未找到目标");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 未识别到则翻页
|
||||
await scrollPage(300); // 调用翻页函数
|
||||
pageTurns++;
|
||||
async function scrollPage(totalDistance, stepDistance = 10, delayMs = 5) {
|
||||
moveMouseTo(400, 750); // 移动到屏幕水平中心,垂直750坐标
|
||||
await sleep(50);
|
||||
leftButtonDown();
|
||||
|
||||
// 计算滚动方向和总步数
|
||||
const isDownward = totalDistance < 0; // 如果totalDistance为负数,则向下滑动
|
||||
const steps = Math.ceil(Math.abs(totalDistance) / stepDistance); // 使用绝对值计算步数
|
||||
|
||||
for (let j = 0; j < steps; j++) {
|
||||
const remainingDistance = Math.abs(totalDistance) - j * stepDistance;
|
||||
const moveDistance = remainingDistance < stepDistance ? remainingDistance : stepDistance;
|
||||
|
||||
// 根据滚动方向调整移动方向
|
||||
const direction = isDownward ? 1 : -1; // 向下滑动为正方向,向上滑动为负方向
|
||||
moveMouseBy(0, 1.2 * direction * moveDistance); // 根据方向调整滚动方向
|
||||
await sleep(delayMs);
|
||||
}
|
||||
|
||||
if (!monsterRegion || monsterRegion.isEmpty()) {
|
||||
log.info(`Monster ID: ${monsterId.trim()}, not found after 70 page turns.`);
|
||||
continue; // 达到翻页上限仍未找到,处理下一个怪物
|
||||
}
|
||||
await sleep(200);
|
||||
leftButtonUp();
|
||||
await sleep(500);
|
||||
}
|
||||
|
||||
monsterRegion.click(); // 点击怪物图标
|
||||
await sleep(10); // 等待界面加载
|
||||
async function readKillCount(maxTry = 5) {
|
||||
const ocrObj = RecognitionObject.Ocr(865, 980, 150, 50);
|
||||
for (let t = 0; t < maxTry; t++) {
|
||||
const region = captureGameRegion();
|
||||
const results = region.findMulti(ocrObj);
|
||||
region.dispose();
|
||||
|
||||
// 4b. 识别数量区域(870,1000,100,30)
|
||||
const countRegion = new ImageRegion(
|
||||
captureGameRegion().SrcMat,
|
||||
830, 980,
|
||||
null, // owner 参数设置为 null
|
||||
null, // converter 参数设置为 null
|
||||
null // drawContent 参数设置为 null
|
||||
);
|
||||
// 创建OCR识别对象
|
||||
const ocrObject = RecognitionObject.Ocr(830, 980, 140, 70);
|
||||
const countResults = countRegion.findMulti(ocrObject);
|
||||
let monsterCount = "-1";
|
||||
|
||||
if (countResults.count > 0) {
|
||||
for (let i = 0; i < countResults.count; i++) {
|
||||
const text = countResults[i].text;
|
||||
const numbers = text.match(/\d+/);
|
||||
if (numbers) {
|
||||
monsterCount = numbers[0];
|
||||
break;
|
||||
for (let i = 0; i < results.count; i++) {
|
||||
const str = results[i].text.trim();
|
||||
// 必须是纯数字
|
||||
if (/^\d+$/.test(str)) {
|
||||
return { success: true, count: parseInt(str, 10) };
|
||||
}
|
||||
}
|
||||
if (t < maxTry - 1) await sleep(200); // 最后一次不重试
|
||||
}
|
||||
return { success: false, count: -1 };
|
||||
}
|
||||
|
||||
async function readKillCountStable(prevCount, sameTolerance = 5) {
|
||||
let lastCount = -1;
|
||||
for (let r = 0; r < sameTolerance; r++) {
|
||||
await sleep(50 * r);
|
||||
//log.info(`执行第${r}次ocr`)
|
||||
const ocrRet = await readKillCount(5);
|
||||
if (!ocrRet.success) break; // 真的读不到数字就放弃
|
||||
lastCount = ocrRet.count;
|
||||
|
||||
if (lastCount !== prevCount) return { success: true, count: lastCount }; // 变了→成功
|
||||
}
|
||||
// 3 次仍相同→返回最后一次相同值
|
||||
return { success: true, count: lastCount };
|
||||
}
|
||||
|
||||
|
||||
async function findMonsterIcon(monsterId, iconRetry = 3) {
|
||||
const tpl = RecognitionObject.TemplateMatch(
|
||||
file.readImageMatSync(`assets/monster/${monsterId.trim()}.png`), 130, 80, 670, 970);
|
||||
let pageTurnsUp = 0;
|
||||
while (pageTurnsUp < 1) {
|
||||
let pageTurns = 0;
|
||||
while (pageTurns < 2) {
|
||||
//log.info("执行一次模板识别");
|
||||
if (await findAndClick(tpl, iconRetry)) return true;
|
||||
await scrollPage(300);
|
||||
pageTurns++;
|
||||
}
|
||||
for (let j = 0; j < 2; j++) {
|
||||
await scrollPage(-300);
|
||||
}
|
||||
pageTurnsUp++;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* ===== 主循环 ===== */
|
||||
let prevCount = -1; // 上一轮 OCR 结果
|
||||
let retryMask = 0; // 位掩码:第 i 位为 1 表示已回退过
|
||||
let prevFinalCount = -1; // 上一只怪物的最终击杀数
|
||||
|
||||
for (let i = 0; i < monsterList.length; i++) {
|
||||
const monsterId = monsterList[i];
|
||||
let time0 = new Date();
|
||||
/* 1. 找怪 + OCR */
|
||||
if (!(await findMonsterIcon(monsterId, 3))) {
|
||||
log.info(`怪物: ${monsterId.trim()}, 未找到图标`);
|
||||
monsterCounts[monsterId.trim()] = -1;
|
||||
prevCount = -1; // 重置
|
||||
continue;
|
||||
}
|
||||
let time1 = new Date();
|
||||
//log.info(`寻找图标用时${time1 - time0}`);
|
||||
/* 2. OCR:与上一只结果比较,原地重试 3 次 */
|
||||
const ocr = await readKillCountStable(prevFinalCount, 3);
|
||||
const count = ocr.success ? ocr.count : -1;
|
||||
let time2 = new Date();
|
||||
//log.info(`ocr用时${time2 - time1}`);
|
||||
/* 2. 结果相同且本行还没回退过 → 回退一次 */
|
||||
if (count === prevCount && !(retryMask & (1 << i))) {
|
||||
retryMask |= (1 << i); // 标记已回退
|
||||
i--; // 回退同一 i 一次
|
||||
continue;
|
||||
}
|
||||
|
||||
// 4c. 输出日志
|
||||
log.info(`NO.${monsterNum} 怪物名称: ${monsterId.trim()}, 数量: ${monsterCount}`);
|
||||
monsterNum++;
|
||||
/* 3. 正常记录 */
|
||||
monsterCounts[monsterId.trim()] = count;
|
||||
log.info(`怪物: ${monsterId.trim()}, 数量: ${count}`);
|
||||
prevCount = count;
|
||||
prevFinalCount = count; // 记录本次最终值,供下一只比对
|
||||
}
|
||||
return monsterCounts;
|
||||
}
|
||||
|
||||
// 4d. 存储结果到文件
|
||||
const writeContent = `${monsterId.trim()},${monsterCount}\n`;
|
||||
file.writeTextSync(storagePath, writeContent, true); // 追加模式
|
||||
|
||||
(async function () {
|
||||
const monsterCounts = await getMonsterCounts();
|
||||
|
||||
/* 1. 控制台打印 */
|
||||
log.info("怪物数量统计结果:");
|
||||
for (const [monsterName, count] of Object.entries(monsterCounts)) {
|
||||
log.info(`${monsterName}: ${count}`);
|
||||
}
|
||||
|
||||
/* 2. 写入 record.txt(JSON)*/
|
||||
try {
|
||||
const filePath = 'record.txt';
|
||||
const json = JSON.stringify(monsterCounts, null, 2);
|
||||
await file.writeText(filePath, json, false);
|
||||
log.info(`结果已写入 ${filePath}`);
|
||||
} catch (error) {
|
||||
log.error(`写入 record.txt 时出错: ${error.message}`);
|
||||
}
|
||||
})();
|
||||
|
||||
// 翻页函数(优化坐标为屏幕中心)
|
||||
async function scrollPage(totalDistance, stepDistance = 10, delayMs = 5) {
|
||||
moveMouseTo(400, 750); // 移动到屏幕水平中心,垂直750坐标
|
||||
await sleep(50);
|
||||
leftButtonDown();
|
||||
|
||||
const steps = Math.ceil(totalDistance / stepDistance);
|
||||
for (let j = 0; j < steps; j++) {
|
||||
const remainingDistance = totalDistance - j * stepDistance;
|
||||
const moveDistance = remainingDistance < stepDistance ? remainingDistance : stepDistance;
|
||||
moveMouseBy(0, 1.2*(-moveDistance)); // 向上滚动
|
||||
await sleep(delayMs);
|
||||
}
|
||||
|
||||
await sleep(200);
|
||||
leftButtonUp();
|
||||
await sleep(100);
|
||||
}
|
||||
@@ -5,6 +5,10 @@
|
||||
"bgi_version": "0.45.1",
|
||||
"description": "",
|
||||
"authors": [
|
||||
{
|
||||
"name": "mno",
|
||||
"links": "https://github.com/Bedrockx"
|
||||
},
|
||||
{
|
||||
"name": "Tool_tingsu",
|
||||
"links": "https://github.com/Tooltingsu"
|
||||
|
||||
@@ -1,290 +0,0 @@
|
||||
火史莱姆
|
||||
大型火史莱姆
|
||||
水史莱姆
|
||||
大型水史莱姆
|
||||
风史莱姆
|
||||
大型风史莱姆
|
||||
雷史莱姆
|
||||
大型冷史莱姆
|
||||
变异雷史莱姆
|
||||
草史莱姆
|
||||
大型草史莱姆
|
||||
冰史莱姆
|
||||
大型冰史莱姆
|
||||
岩史莱姆
|
||||
大型岩史莱姆
|
||||
狂风之核
|
||||
无相之火
|
||||
无相之水
|
||||
无相之风
|
||||
无相之雷
|
||||
无相之草
|
||||
无相之冰
|
||||
无相之岩
|
||||
纯水精灵
|
||||
雷音权现
|
||||
火飘浮灵
|
||||
水飘浮灵
|
||||
风飘浮灵
|
||||
雷飘浮灵
|
||||
草飘浮灵
|
||||
冰飘浮灵
|
||||
岩飘浮灵
|
||||
浊水粉碎幻灵
|
||||
浊水喷吐幻灵
|
||||
水形幻人
|
||||
丘丘人
|
||||
打手丘丘人
|
||||
冲锋丘丘人
|
||||
木盾丘丘人
|
||||
冰盾丘丘人
|
||||
岩盾丘丘人
|
||||
射手丘丘人
|
||||
火箭丘丘人
|
||||
雷箭丘丘人
|
||||
冰箭丘丘人
|
||||
爆弹丘丘人
|
||||
雷弹丘丘人
|
||||
冰弹丘丘人
|
||||
奇怪的丘丘人
|
||||
木盾丘丘暴徒
|
||||
岩盾丘丘暴徒
|
||||
冰盾丘丘暴徒
|
||||
火斧丘丘暴徒
|
||||
雷斧丘丘暴徒
|
||||
丘丘雷兜王
|
||||
丘丘霜铠王
|
||||
丘丘岩盔王
|
||||
水丘丘萨满
|
||||
风丘丘萨满
|
||||
雷丘丘萨满
|
||||
草丘丘萨满
|
||||
冰丘丘萨满
|
||||
岩丘丘萨满
|
||||
丘丘水行游侠
|
||||
丘丘风行游侠
|
||||
火深渊法师
|
||||
水深渊法师
|
||||
雷深渊法师
|
||||
冰深渊法师
|
||||
深渊使徒·激流
|
||||
深渊使徒·霜落
|
||||
深渊咏者·渊火
|
||||
深渊咏者·紫电
|
||||
深罪浸礼者
|
||||
嗜岩·兽境幼兽
|
||||
嗜雷·兽境幼兽
|
||||
嗜岩·兽境猎犬
|
||||
嗜雷·兽境猎犬
|
||||
黄金王兽
|
||||
黯色空壳·旗令
|
||||
黯色空壳·破阵
|
||||
黯色空壳·近卫
|
||||
黑蛇骑士·斩风之剑
|
||||
黑蛇骑士·摧岩之钺
|
||||
大型碎石隙境原体
|
||||
碎石隙境原体
|
||||
大型狂蔓隙境原体
|
||||
狂蔓隙境原体
|
||||
深邃拟覆叶
|
||||
深邃摹结株
|
||||
愚人众先遣队·火统游击兵
|
||||
愚人众先遣队·水铳重卫士
|
||||
愚人众先遣队·风拳前锋军
|
||||
愚人众先遣队·雷锤前锋军
|
||||
愚人众先遣队·冰铳重卫士
|
||||
愚人众先遣队·岩使游击兵
|
||||
愚人众·火之债务处理人
|
||||
愚人众·雷莹术士
|
||||
愚人众·冰萤术士
|
||||
愚人众·藏镜仕女
|
||||
愚人众·风役人
|
||||
愚人众·霜役人
|
||||
遗迹守卫
|
||||
遗迹猎者
|
||||
遗迹重机
|
||||
遗迹巨蛇
|
||||
遗迹巡弋者
|
||||
遗迹歼击者
|
||||
遗迹防卫者
|
||||
遗迹侦察者
|
||||
恒常机关阵列
|
||||
遗迹龙兽·地巡
|
||||
遗迹龙兽·空巡
|
||||
兆载永劫龙兽
|
||||
元能构装体·力场发生器
|
||||
元能构装体·重塑仪
|
||||
元能构装体·勘探机
|
||||
半永恒统辖矩阵
|
||||
机关·侦察记录型
|
||||
机关·算力增幅器
|
||||
机关·水下勘测型
|
||||
机关·地质勘探型
|
||||
机关·水下巡游型
|
||||
机关·深海攻击型
|
||||
机关·灵活采集型
|
||||
机关·区域警戒型
|
||||
攻坚特化型机关
|
||||
压制特化型机关
|
||||
歼灭特化型机关
|
||||
建造特化型机关
|
||||
冰风组曲
|
||||
实验性场力发生装置
|
||||
魔偶剑鬼
|
||||
秘源机兵·寻捕械
|
||||
秘源机兵·构型械
|
||||
秘源机兵·统御械
|
||||
盗宝团·斥候
|
||||
盗宝团·火之药剂师
|
||||
盗宝团·水之药剂师
|
||||
盗宝团·雷之药剂师
|
||||
盗宝团·冰之药剂师
|
||||
盗宝团·杂工
|
||||
盗宝团·神射手
|
||||
盗宝团·掘墓者
|
||||
盗宝团·海上男儿
|
||||
盗宝团·拳术家
|
||||
盗宝团·粉碎者
|
||||
野伏·阵刀番
|
||||
野伏·火伏番
|
||||
野伏·机巧番
|
||||
海乱鬼·炎威
|
||||
海乱鬼·雷腾
|
||||
镀金旅团·阵前斧手
|
||||
镀金旅团·机弩兵
|
||||
镀金旅团·鸦喙戟手
|
||||
镀金旅团·破阵者
|
||||
镀金旅团·刀舞者
|
||||
镀金旅团·沙中净水
|
||||
镀金旅团·炽阳凝冰
|
||||
镀金旅团·白日鸣雷
|
||||
镀金旅团·灵风猎手
|
||||
镀金旅团·魔岩役使
|
||||
镀金旅团·炽沙叙事人
|
||||
镀金旅团·叶轮舞者
|
||||
铸砂勇士·叩问人
|
||||
铸砂勇士·碎盾者
|
||||
铸砂勇士·投矛手
|
||||
疾讯勇士·引索客
|
||||
疾讯勇士·荡风斥候
|
||||
疾讯勇士·重刃讯使
|
||||
流刃勇士·游击人
|
||||
流刃勇士·锯脂者
|
||||
流刃勇士·掷叉猎手
|
||||
结羽勇士·腾空士
|
||||
结羽勇士·削羽人
|
||||
结羽勇士·驭空客
|
||||
灵觉勇士·执意师
|
||||
灵觉勇士·控念师
|
||||
灵觉勇士·冥思者
|
||||
横蛮勇士·冲撞手
|
||||
横蛮勇士·摔跤客
|
||||
横蛮勇士·抓扑人
|
||||
嵴锋龙武士·碎晶打者
|
||||
嵴锋龙武士·破岩锐刃
|
||||
匿叶龙武士·旋锯飞叶
|
||||
匿叶龙武士·流火鸣空
|
||||
鳍游龙武士·穿浪之梭
|
||||
鳍游龙武士·裂礁之涛
|
||||
绒翼龙武士·膛星之锤
|
||||
绒翼龙武士·长空明焰
|
||||
暝视龙武士·寒涌持者
|
||||
暝视龙武士·冰晶炮手
|
||||
突角龙武士·破空轰动
|
||||
突角龙武士·追缉灵光
|
||||
灵觉隐修的迷者
|
||||
炽热骗骗花
|
||||
电气骗骗花
|
||||
冰霜骗骗花
|
||||
爆炎树
|
||||
掣电树
|
||||
急冻树
|
||||
幼岩龙蜥
|
||||
岩龙蜥
|
||||
古岩龙蜥
|
||||
深海龙溪·原种
|
||||
深海龙溪·啮冰
|
||||
深海龙溪·吞雷
|
||||
水萤
|
||||
雷萤
|
||||
冰萤
|
||||
浮游水蕈兽
|
||||
浮游风蕈兽
|
||||
浮游草蕈兽
|
||||
旋转火蕈兽
|
||||
旋转雷蕈兽
|
||||
旋转冰蕈兽
|
||||
伸缩火蕈兽
|
||||
伸缩风蕈兽
|
||||
伸缩雷蕈兽
|
||||
伸缩岩蕈兽
|
||||
陆行水本真蕈
|
||||
有翼草本真蕈
|
||||
有翼冰本真蕈
|
||||
陆行岩本真蕈
|
||||
翠翎恐蕈
|
||||
圣骸角鳄
|
||||
圣骸牙兽
|
||||
圣骸赤鹫
|
||||
圣骸毒蝎
|
||||
圣骸飞蛇
|
||||
风蚀沙虫
|
||||
膨膨兽
|
||||
猎刀鳐·绿
|
||||
猎刀鳐·蓝
|
||||
重甲蟹·红
|
||||
重甲蟹·绿
|
||||
坚盾重甲蟹
|
||||
铁甲熔火帝皇
|
||||
帽子水母·黄
|
||||
帽子水母·蓝
|
||||
泡泡海马·紫
|
||||
泡泡海马·蓝
|
||||
泡泡海马·褐
|
||||
泡泡雄海马
|
||||
千年珍珠骏麟
|
||||
球球章鱼·红
|
||||
球球章鱼·褐
|
||||
天使海兔·蓝
|
||||
天使海兔·红
|
||||
大天使海兔
|
||||
玄文兽
|
||||
隐山猊兽
|
||||
魔像禁卫
|
||||
魔像督军
|
||||
幼嵴锋龙
|
||||
嵴锋龙
|
||||
幼鳍游龙
|
||||
鳍游龙
|
||||
幼匿叶龙
|
||||
匿叶龙
|
||||
贪食匿叶龙山王
|
||||
幼绒翼龙
|
||||
绒翼龙
|
||||
金焰绒翼龙暴君
|
||||
幼暝视龙
|
||||
暝视龙
|
||||
幼突角龙
|
||||
突角龙
|
||||
熔岩游像·蚀土者
|
||||
熔岩游像·流燃体
|
||||
熔岩辉龙像
|
||||
窟岩·大灵显化身
|
||||
溯流·大灵显化身
|
||||
疾叶·大灵显化身
|
||||
凛冽·大灵显化身
|
||||
焚燃·大灵显化身
|
||||
雳震·大灵显化身
|
||||
炉壳山鼬
|
||||
裂空的魔龙
|
||||
北风的王狼,奔狼的领主
|
||||
「公子」
|
||||
若陀龙王
|
||||
「女士」
|
||||
祸津御建鸣神命
|
||||
「正机之神」
|
||||
阿佩普的绿洲守望者
|
||||
吞星之鲸
|
||||
「仆人」
|
||||
蚀灭的源焰之主
|
||||
门扉前的弈局
|
||||