🐞 fix(战力): pvp等机器人数据的战力生成修改为新算法

This commit is contained in:
luying
2023-02-17 14:26:31 +08:00
parent b0e0c83fcd
commit 52701f7e11
8 changed files with 64 additions and 29 deletions
@@ -198,9 +198,9 @@ export async function matchRobots(scale: number, myCe: number, robotCe: number,
let allCe = 0;
for(let json of dicWarJson) {
if(json.relation == 2) {
const { attribute, enemyCount } = json;
const { actorId, attribute, enemyCount } = json;
let { attribute: newAttribute, ce } = getRobotAttribute(attribute, enemyCount, lv, myCe, robotCe, scale);
let { attribute: newAttribute, ce } = getRobotAttribute(actorId, attribute, enemyCount, lv, myCe, robotCe, scale);
enemyObj.enemies.push({...json, skinId: json.actorId, attribute: newAttribute, lv, ce});
allCe += ce;
}
@@ -276,24 +276,24 @@ export async function getResetRemainCnt(curTime: Date, roleId: string, role?: Ro
* @param enemyCe 出兵表对手战力
* @param ratio 系数
*/
export function getRobotAttribute(mainAttrs: { id: number, val: number }[], enemyCount: number, lv: number, ce: number, enemyCe: number, ratio: number) {
export function getRobotAttribute(hid: number, mainAttrs: { id: number, val: number }[], enemyCount: number, lv: number, ce: number, enemyCe: number, ratio: number) {
let _lv = Math.floor(lv * ratio)
let newAttribute = new AttributeCal();
newAttribute.setLv(_lv);
let dicExpeditionSubAttr = gameData.expeditionSubAttr.get(_lv);
if(!dicExpeditionSubAttr) dicExpeditionSubAttr = gameData.expeditionSubAttr.get('max');
newAttribute.setByWarJson(dicExpeditionSubAttr.attribute); // 次级属性
newAttribute.setByWarJson(hid, dicExpeditionSubAttr.attribute); // 次级属性
let subAttrCe = newAttribute.calSubAttrCe() * enemyCount;
if(ce * ratio > subAttrCe) {
let mainAttrCe = ce * ratio - subAttrCe;
newAttribute.setByWarJson(mainAttrs, mainAttrCe / enemyCe);
newAttribute.setByWarJson(hid, mainAttrs, mainAttrCe / enemyCe);
let attrArr = newAttribute.getAttributesToString();
let newCe = newAttribute.calCe();
return { attribute: attrArr, ce: newCe };
} else {
newAttribute = new AttributeCal();
newAttribute.setByWarJson(mainAttrs, ce * ratio / enemyCe);
newAttribute.setByWarJson(hid, mainAttrs, ce * ratio / enemyCe);
let attrArr = newAttribute.getAttributesToString();
let newCe = newAttribute.calCe();
return { attribute: attrArr, ce: newCe };