mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-04 02:50:01 +08:00
40 lines
2.0 KiB
JavaScript
40 lines
2.0 KiB
JavaScript
// 普通难度数值;团伙每名成员仅预测并执行自己的一项技能,随后照常出牌。
|
|
export const RAIDER_MOVES = Object.freeze({
|
|
beat: Object.freeze({ id: "beat", name: "殴打", damage: 7 }),
|
|
roar: Object.freeze({ id: "roar", name: "怒吼", strength: 3 }),
|
|
killshot: Object.freeze({ id: "killshot", name: "致命射击", damage: 10 }),
|
|
swing: Object.freeze({ id: "swing", name: "挥击", damage: 5, block: 5 }),
|
|
bigSwing: Object.freeze({ id: "bigSwing", name: "大力挥舞", damage: 12 }),
|
|
reload: Object.freeze({ id: "reload", name: "装填", block: 3 }),
|
|
fire: Object.freeze({ id: "fire", name: "射击!", damage: 14 }),
|
|
track: Object.freeze({ id: "track", name: "追踪", debuff: "脆弱", stacks: 2 }),
|
|
hounds: Object.freeze({ id: "hounds", name: "放狗", damage: 1, hits: 8 }),
|
|
});
|
|
|
|
export const RAIDER_CYCLES = Object.freeze({
|
|
mengsan_raider_brute_shuying: Object.freeze([RAIDER_MOVES.beat, RAIDER_MOVES.roar]),
|
|
mengsan_raider_assassin_shuying: Object.freeze([RAIDER_MOVES.killshot]),
|
|
mengsan_raider_axe_shuying: Object.freeze([RAIDER_MOVES.swing, RAIDER_MOVES.swing, RAIDER_MOVES.bigSwing]),
|
|
mengsan_raider_crossbow_shuying: Object.freeze([RAIDER_MOVES.reload, RAIDER_MOVES.fire]),
|
|
mengsan_raider_tracker_shuying: Object.freeze([RAIDER_MOVES.track, RAIDER_MOVES.hounds]),
|
|
});
|
|
|
|
export function isRaiderCharacter(character) {
|
|
return Object.hasOwn(RAIDER_CYCLES, character);
|
|
}
|
|
|
|
export function selectRaiderMove(character, state = {}) {
|
|
const cycle = RAIDER_CYCLES[character];
|
|
if (!cycle) return null;
|
|
const turn = state.turnsTaken || 0;
|
|
if (!Number.isInteger(turn) || turn < 0) throw new RangeError("劫掠者行动次数无效");
|
|
if (character === "mengsan_raider_tracker_shuying") {
|
|
return turn === 0 ? RAIDER_MOVES.track : RAIDER_MOVES.hounds;
|
|
}
|
|
return cycle[turn % cycle.length];
|
|
}
|
|
|
|
export function recordRaiderAction(state = {}) {
|
|
return { turnsTaken: (state.turnsTaken || 0) + 1 };
|
|
}
|