md5-fight-plus
Version:
104 lines (95 loc) • 2.03 kB
text/typescript
import { createBattleField } from "@/battle-field";
import { loadPlayer } from "@/player";
import { PlayerInstanceProperty } from "@/types/player";
import { expect, test } from "vitest";
type Player = {
name: string;
skills: string[];
};
function createPlayer(player: Player) {
return loadPlayer({
name: player.name,
skills: player.skills || ["a"],
level: 1,
baseProperty: {
SPD: 10,
STR: 10,
MANA: 10,
CON: 10,
},
});
}
function fight(p1: PlayerInstanceProperty, p2: PlayerInstanceProperty) {
const battleField = createBattleField(p1, p2);
battleField.fight();
console.log(
battleField.logger.LogContainer.map((item) => item.message).join("\n")
);
return battleField;
}
test("normalAttack", () => {
const p1 = createPlayer({
name: "p1",
skills: ["normalAttack"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});
test("assassinate", () => {
const p1 = createPlayer({
name: "p1",
skills: ["assassinate"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});
test("finalAttack", () => {
const p1 = createPlayer({
name: "p1",
skills: ["finalAttack"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});
test("waiting && gentlyAttack", () => {
const p1 = createPlayer({
name: "p1",
skills: ["waiting", "gentlyAttack"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});
test("sneak", () => {
const p1 = createPlayer({
name: "p1",
skills: ["sneak", "gentlyAttack"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});
test("double", () => {
const p1 = createPlayer({
name: "p1",
skills: ["double", "normalAttack"],
});
const p2 = createPlayer({
name: "p2",
skills: ["normalAttack"],
});
fight(p1, p2);
});