mirror of
https://github.com/unanmed/HumanBreak.git
synced 2026-04-12 15:31:11 +08:00
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
// todo: 优化,直接调用 floor.enemy.list 进行计算
|
|
|
|
/**
|
|
* 检查漏怪
|
|
*/
|
|
export function checkRemainEnemy(floorIds: FloorIds[]) {
|
|
const enemy: Partial<Record<FloorIds, { loc: LocArr; id: EnemyIds }[]>> =
|
|
{};
|
|
floorIds.forEach(v => {
|
|
core.extractBlocks(v);
|
|
const blocks = core.status.maps[v].blocks;
|
|
blocks.forEach(block => {
|
|
if (!block.event.cls.startsWith('enemy') || block.disable) return;
|
|
const id: EnemyIds = block.event.id as EnemyIds;
|
|
enemy[v] ??= [];
|
|
const info = enemy[v]!;
|
|
info.push({ loc: [block.x, block.y], id });
|
|
});
|
|
});
|
|
return enemy;
|
|
}
|
|
|
|
/**
|
|
* 获取剩余怪物字符串
|
|
*/
|
|
export function getRemainEnemyString(floorIds: FloorIds[]) {
|
|
const enemy = checkRemainEnemy(floorIds);
|
|
const str = [];
|
|
let now = [];
|
|
for (const floor in enemy) {
|
|
const all: { loc: LocArr; id: EnemyIds }[] = enemy[floor as FloorIds]!;
|
|
const remain: Partial<Record<EnemyIds, number>> = {};
|
|
all.forEach(v => {
|
|
const id = v.id;
|
|
remain[id] ??= 0;
|
|
remain[id]!++;
|
|
});
|
|
const title = core.status.maps[floor as FloorIds].title;
|
|
for (const id in remain) {
|
|
const name = core.material.enemys[id as EnemyIds].name;
|
|
now.push(`${title}(${floor}): ${name} * ${remain[id as EnemyIds]}`);
|
|
if (now.length === 10) {
|
|
str.push(now.join('\n'));
|
|
now = [];
|
|
}
|
|
}
|
|
}
|
|
if (now.length > 0) {
|
|
str.push(now.join('\n'));
|
|
str[0] = `当前剩余怪物:\n${str[0]}`;
|
|
}
|
|
|
|
return str;
|
|
}
|