UNPKG

md5-fight-plus

Version:

97 lines (90 loc) 2.98 kB
import { PlayerDeathEvent } from "@/events/playerDeath"; import { Skill } from "@/types/skill"; import { BattleFieldInstance } from "@/types/battleField"; import { PlayerInstanceProperty } from "@/types/player"; import _ from "lodash"; export const getPlayers = (battleField: BattleFieldInstance) => { return { player1: battleField.players.left, player2: battleField.players.right, }; }; export const initFnToPlayers = ( battleField: BattleFieldInstance, fn: (player: PlayerInstanceProperty) => void ) => { const { player1, player2 } = getPlayers(battleField); fn(player1); fn(player2); }; export const checkPlayerDeath = (battleField: BattleFieldInstance) => { const player1 = battleField.players.left; const player2 = battleField.players.right; if (player1.runtimeProperty.hp <= 0) { return new PlayerDeathEvent(`玩家【${player1.name}阵亡,游戏结束】`); } if (player2.runtimeProperty.hp <= 0) { return new PlayerDeathEvent(`玩家【${player2.name}阵亡,游戏结束】`); } }; export const toUpperFirstCase = (name: string) => name.charAt(0).toUpperCase() + name.slice(1); export const getRandomItem = (item: any[]) => { const max = item.length - 1; const index = _.random(0, max); return item[index]; }; export const releaseFrostbite = ( player: PlayerInstanceProperty, frostbite: number ) => { const id = player.hooks.afterAttack.tap("release Frostbite", (props) => { const battleField = props.battleField; const { player2: defender } = getPlayers(battleField); defender.hooks.onAdjustFrostbite.call(frostbite); removeHookInRoundEnd(player, id, "afterAttack"); return props; }); }; export const releaseFiring = ( player: PlayerInstanceProperty, firing: number ) => { player.hooks.onAdjustFiring.call(firing); }; export const releasePoison = ( player: PlayerInstanceProperty, poison: number ) => { const id = player.hooks.afterAttack.tap("release Frostbite", (props) => { player.hooks.onAdjustPoison.call(poison); removeHookInRoundEnd(player, id, "afterAttack"); return props; }); }; export const removeHookInRoundEnd = ( player: PlayerInstanceProperty, id: number, inHooks: string ) => { const battleField = player.battleField; battleField.roundHooks.roundEnd.tap("remove frostbiteAttack", (props) => { player.hooks[inHooks].removeTap(id); return props; }); }; export const getOpponent = (player: PlayerInstanceProperty) => { const battleField = player.battleField; if (battleField.players.left === player) return battleField.players.right; if (battleField.players.right === player) return battleField.players.left; return undefined; }; export const getPlayerState = (player: PlayerInstanceProperty) => { const runtimeProperty = player.runtimeProperty; let result = `${player.name}【状态记录】 `; for (const [key, value] of Object.entries(runtimeProperty)) { result += `${key}:${value} `; } return result; };