添加获取对手阵容,开始战斗,结算
This commit is contained in:
@@ -76,6 +76,7 @@ export async function matchPlayers(roleId: string, scale: number, range: number,
|
||||
enemyObj.enemyId = roleId;
|
||||
enemyObj.ce = defCe;
|
||||
|
||||
// TODO 修改获取attribute
|
||||
let heroIndex = 0;
|
||||
for(let enemy of dicWarJson) {
|
||||
if(enemy.relation == 2) {
|
||||
|
||||
@@ -60,6 +60,18 @@ export async function checkBattleHeroes(roleId: string, heroes: Array<number>) {
|
||||
return flag;
|
||||
}
|
||||
|
||||
export async function checkBattleHeroesByHid(roleId: string, heroes: Array<number>) {
|
||||
let flag = true;
|
||||
if(heroes.length <= 0) flag = false;
|
||||
|
||||
const findHeroes = await HeroModel.findByHidRange(heroes, roleId);
|
||||
if(findHeroes.length != heroes.length) flag = false;
|
||||
for(let hid of heroes) {
|
||||
let hero = findHeroes.find(cur => cur.hid == hid);
|
||||
if(!hero) flag = false;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
export async function updateWarStar(roleId: string, battleId: number, warType: number, star: number) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
|
||||
@@ -15,5 +15,12 @@ export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Ar
|
||||
await checkPvp(role);
|
||||
addFuncs.push(FUNCS_ID.PVP);
|
||||
}
|
||||
}
|
||||
|
||||
if (!dataFuncs.includes(FUNCS_ID.EVENT)) {//开启奇遇
|
||||
let res = getFuncsSwitch(FUNCS_ID.EVENT);
|
||||
if (!res || lv >= res.param) {
|
||||
addFuncs.push(FUNCS_ID.EVENT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
/**
|
||||
* 体力系统
|
||||
*/
|
||||
import { PvpDefenseModel, Heroes, OppPlayers, Robot, PvpDefenseType } from '../db/PvpDefense';
|
||||
import { PvpDefenseModel, Heroes, OppPlayers, Robot, PvpDefenseType, HeroScores } from '../db/PvpDefense';
|
||||
import { RoleType } from '../db/Role';
|
||||
import { PVP_HERO_POS, ROBOT_NAME } from '../consts';
|
||||
|
||||
import { dicPvpOpponent, DicPvpOpponent } from "../pubUtils/dictionary/DicPvpOpponent";
|
||||
import { getRandomIndexByLen, genCode, getRandomByLen } from '../pubUtils/util';
|
||||
import { oppPlayersInter } from '../pubUtils/interface';
|
||||
import { gameData } from "../pubUtils/data";
|
||||
|
||||
import { gameData, getPLvByScore } from "../pubUtils/data";
|
||||
import { PVP } from '../pubUtils/dicParam';
|
||||
|
||||
export async function initPvpInfo(role: RoleType) {
|
||||
let heroes: Array<Heroes> = [];
|
||||
@@ -56,6 +56,7 @@ export function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number) {
|
||||
result.push({
|
||||
pos, roleId, roleName, headHid, sHid, pLv, defCe,
|
||||
addScore: dicOpponent.score,
|
||||
rankLv: 0,
|
||||
plusScore: getPlusScore(winStreakNum)
|
||||
});
|
||||
} else {
|
||||
@@ -66,6 +67,7 @@ export function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number) {
|
||||
result.push({
|
||||
pos, roleId, roleName, headHid, sHid, pLv, defCe,
|
||||
addScore: dicOpponent.score,
|
||||
rankLv: 0, // TODO读取排名
|
||||
plusScore: getPlusScore(winStreakNum)
|
||||
});
|
||||
}
|
||||
@@ -105,10 +107,11 @@ async function matchPlayer(oppPlayers: OppPlayers[], roleId: string, pLv: number
|
||||
range.splice(index, 1);
|
||||
if(range.length <= 0) return false;
|
||||
index = getRandomIndexByLen(range.length);
|
||||
result = range[range.length];
|
||||
result = range[index];
|
||||
}
|
||||
|
||||
oppPlayers.push({
|
||||
roleId: result.roleId,
|
||||
oppDef: result._id,
|
||||
pos,
|
||||
isRobot: false,
|
||||
@@ -128,8 +131,11 @@ function matchRobot(oppPlayers: OppPlayers[], myCe: number, pLv: number, dicOpp:
|
||||
|
||||
let roleId = generateRobotRoleId();
|
||||
let roleName = getRandomByLen(ROBOT_NAME);
|
||||
let robot = new Robot(roleId, roleName, Math.floor(myCe * ratio), Math.floor(pLv + (minLv + maxLv)/2), result.war_id)
|
||||
let hisPLv = Math.floor(pLv + (minLv + maxLv)/2);
|
||||
if(hisPLv < 1) hisPLv = 1
|
||||
let robot = new Robot(roleId, roleName, Math.floor(myCe * ratio), hisPLv, result.war_id)
|
||||
oppPlayers.push({
|
||||
roleId,
|
||||
oppDef: null,
|
||||
pos,
|
||||
isRobot: true,
|
||||
@@ -151,6 +157,17 @@ export function checkRoleIsRobot(roleId: string) {
|
||||
// 根据连胜次数,获得加成的积分
|
||||
export function getPlusScore(win: number) {
|
||||
let result = win - 1;
|
||||
if(result > 10) result = 10;
|
||||
if(result < 0) result = 0;
|
||||
if(result > PVP.PVP_WINREWARD_UPLIMIT) result = PVP.PVP_WINREWARD_UPLIMIT;
|
||||
return result;
|
||||
}
|
||||
|
||||
export function getLvByScore(heroScores: HeroScores[]) {
|
||||
heroScores.sort((a, b) => b.score - a.score);
|
||||
let score = 0;
|
||||
for(let i = 0; i < 5; i++) {
|
||||
if(!heroScores[i]) break;
|
||||
score += heroScores[i].score;
|
||||
}
|
||||
return getPLvByScore(score);
|
||||
}
|
||||
Reference in New Issue
Block a user