mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-23 00:00:00 +08:00
fixed # 补全部分卡牌
fixed # 修复部分已知BUG
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { takeXCardUse } from "../battle/combat-rules.js";
|
||||
// 固定原场次与会话;一轮一个存活敌人快照,下一轮包含新生成敌人。
|
||||
export function createWhirlwind(game, getActiveBattle) {
|
||||
const valid = (player, battle, session) => Boolean(battle && getActiveBattle() === battle &&
|
||||
battle.session === session && session?.active && battle.players?.has(player) && player?.isAlive?.());
|
||||
const eligible = (player, battle, target) => target !== player && battle.players.has(target) &&
|
||||
target.isAlive() && player.isEnemyOf(target);
|
||||
return async function whirlwind(player, event, damage) {
|
||||
if (!Number.isSafeInteger(damage) || damage <= 0) throw new TypeError("旋风斩伤害无效");
|
||||
const battle = getActiveBattle(), session = battle?.session;
|
||||
if (!valid(player, battle, session)) return;
|
||||
const count = takeXCardUse(player, event, battle);
|
||||
if (count === null) return;
|
||||
for (let round = 0; round < count; round++) {
|
||||
if (!valid(player, battle, session)) break;
|
||||
const targets = game.filterPlayer(target => eligible(player, battle, target));
|
||||
if (!targets.length) break;
|
||||
for (const target of targets) {
|
||||
if (!valid(player, battle, session)) return;
|
||||
if (!eligible(player, battle, target)) continue;
|
||||
player.line(target, "green");
|
||||
const hit = target.damage(damage, player);
|
||||
hit.mengsanAttack_shuying = true;
|
||||
await hit;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user