md5-fight-plus
Version:
90 lines (89 loc) • 3.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPlayerState = exports.getOpponent = exports.removeHookInRoundEnd = exports.releasePoison = exports.releaseFiring = exports.releaseFrostbite = exports.getRandomItem = exports.toUpperFirstCase = exports.checkPlayerDeath = exports.initFnToPlayers = exports.getPlayers = void 0;
const playerDeath_1 = require("../events/playerDeath");
const lodash_1 = __importDefault(require("lodash"));
const getPlayers = (battleField) => {
return {
player1: battleField.players.left,
player2: battleField.players.right,
};
};
exports.getPlayers = getPlayers;
const initFnToPlayers = (battleField, fn) => {
const { player1, player2 } = (0, exports.getPlayers)(battleField);
fn(player1);
fn(player2);
};
exports.initFnToPlayers = initFnToPlayers;
const checkPlayerDeath = (battleField) => {
const player1 = battleField.players.left;
const player2 = battleField.players.right;
if (player1.runtimeProperty.hp <= 0) {
return new playerDeath_1.PlayerDeathEvent(`玩家【${player1.name}阵亡,游戏结束】`);
}
if (player2.runtimeProperty.hp <= 0) {
return new playerDeath_1.PlayerDeathEvent(`玩家【${player2.name}阵亡,游戏结束】`);
}
};
exports.checkPlayerDeath = checkPlayerDeath;
const toUpperFirstCase = (name) => name.charAt(0).toUpperCase() + name.slice(1);
exports.toUpperFirstCase = toUpperFirstCase;
const getRandomItem = (item) => {
const max = item.length - 1;
const index = lodash_1.default.random(0, max);
return item[index];
};
exports.getRandomItem = getRandomItem;
const releaseFrostbite = (player, frostbite) => {
const id = player.hooks.afterAttack.tap("release Frostbite", (props) => {
const battleField = props.battleField;
const { player2: defender } = (0, exports.getPlayers)(battleField);
defender.hooks.onAdjustFrostbite.call(frostbite);
(0, exports.removeHookInRoundEnd)(player, id, "afterAttack");
return props;
});
};
exports.releaseFrostbite = releaseFrostbite;
const releaseFiring = (player, firing) => {
player.hooks.onAdjustFiring.call(firing);
};
exports.releaseFiring = releaseFiring;
const releasePoison = (player, poison) => {
const id = player.hooks.afterAttack.tap("release Frostbite", (props) => {
player.hooks.onAdjustPoison.call(poison);
(0, exports.removeHookInRoundEnd)(player, id, "afterAttack");
return props;
});
};
exports.releasePoison = releasePoison;
const removeHookInRoundEnd = (player, id, inHooks) => {
const battleField = player.battleField;
battleField.roundHooks.roundEnd.tap("remove frostbiteAttack", (props) => {
player.hooks[inHooks].removeTap(id);
return props;
});
};
exports.removeHookInRoundEnd = removeHookInRoundEnd;
const getOpponent = (player) => {
const battleField = player.battleField;
if (battleField.players.left === player)
return battleField.players.right;
if (battleField.players.right === player)
return battleField.players.left;
return undefined;
};
exports.getOpponent = getOpponent;
const getPlayerState = (player) => {
const runtimeProperty = player.runtimeProperty;
let result = `${player.name}【状态记录】
`;
for (const [key, value] of Object.entries(runtimeProperty)) {
result += `${key}:${value} `;
}
return result;
};
exports.getPlayerState = getPlayerState;