远征:模板计算

This commit is contained in:
luying
2021-09-13 15:36:26 +08:00
parent 217f9b6368
commit 63d28d1233
3 changed files with 14 additions and 8 deletions

View File

@@ -199,9 +199,9 @@ export async function matchRobots(scale: number, myCe: number, robotCe: number,
let dicExpeditionSubAttr = gameData.expeditionSubAttr.get(lv);
for(let json of dicWarJson) {
if(json.relation == 2) {
const { attribute } = json;
const { attribute, enemyCount } = json;
let { attribute: newAttribute, ce } = getRobotAttribute(attribute, dicExpeditionSubAttr.attribute, dicExpeditionSubAttr.lv, myCe, robotCe, scale);
let { attribute: newAttribute, ce } = getRobotAttribute(attribute, enemyCount, dicExpeditionSubAttr.attribute, dicExpeditionSubAttr.lv, myCe, robotCe, scale);
enemyObj.enemies.push({...json, attribute: newAttribute, lv, ce});
allCe += ce;
}

View File

@@ -282,7 +282,7 @@ async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], ro
if (!dicHero) continue;
let heroInfo = new PvpHeroInfo();
heroInfo.setRobotInfo(h, myLv, dicHero.initialStars, dicHero.quality);
let { attribute, ce } = getRobotAttribute(h.attribute, [], pLv, myCe, PVP_CONST.ENEMY_CE, ratio);
let { attribute, ce } = getRobotAttribute(h.attribute, h.enemyCount, [], pLv, myCe, PVP_CONST.ENEMY_CE, ratio);
defCe += ce;
heroInfo.setAttribute(attribute);
let enemy = new PvpEnemies(warJson, heroInfo, 0, ce);
@@ -513,14 +513,14 @@ export async function findPvpDefAllByRoleId(roleId: string) {
* @param enemyCe 出兵表对手战力
* @param ratio 系数
*/
export function getRobotAttribute(mainAttrs: { id: number, val: number }[], subAttrs: {id: number, val: number}[], lv: number, ce: number, enemyCe: number, ratio: number) {
export function getRobotAttribute(mainAttrs: { id: number, val: number }[], enemyCount: number, subAttrs: {id: number, val: number}[], lv: number, ce: number, enemyCe: number, ratio: number) {
let newAttribute = new AttributeCal();
newAttribute.setLv(lv);
newAttribute.setByWarJson(subAttrs); // 次级属性
let subAttrCe = newAttribute.calSubAttrCeAndReduce();
let mainAttrCe = ce > subAttrCe? ce - subAttrCe: 0;
newAttribute.setByWarJson(mainAttrs, mainAttrCe / enemyCe * ratio);
let subAttrCe = newAttribute.calSubAttrCeAndReduce() * enemyCount;
let mainAttrCe = ce * ratio > subAttrCe? ce * ratio - subAttrCe: 0;
newAttribute.setByWarJson(mainAttrs, mainAttrCe / enemyCe);
let attrArr = newAttribute.getReduceAttributesToString();
let newCe = newAttribute.calCelAndReduce();
return { attribute: attrArr, ce: newCe };

View File

@@ -45,7 +45,8 @@ export interface DicWarJson {
readonly enemyType: number;
// 召唤技能的召唤物
readonly callSkillData: string;
// 敌军数量
readonly enemyCount: number;
}
export const dicWarJson = new Map<number, Array<DicWarJson>>();
@@ -54,9 +55,14 @@ export function loadWarJson() {
let warjson = new Array<DicWarJson>();
let warid = 0;
let enemyCount = 0;
arr.forEach(o => {
o.attribute = parseAttribute(o.attribute);
if(o.warId) warid = o.warId;
if(o.relation == 2) enemyCount++;
});
arr.forEach(o => {
o.enemyCount = enemyCount;
warjson.push(o);
});
dicWarJson.set(warid, warjson);