🐞 fix(战力): pvp等机器人数据的战力生成修改为新算法
This commit is contained in:
@@ -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 };
|
||||
|
||||
@@ -180,11 +180,11 @@ export async function removeBossRank(guildCode: string, roleId: string) {
|
||||
await BossInstanceModel.removeBossRank(guildCode, roleId);
|
||||
}
|
||||
|
||||
function getBossSubAttrCe(secondAttrLevel: number, bossLevel: number) {
|
||||
function getBossSubAttrCe(hid: number, secondAttrLevel: number, bossLevel: number) {
|
||||
let newAttribute = new AttributeCal();
|
||||
newAttribute.setLv(bossLevel);
|
||||
let subAttr = gameData.towerPvpSubAttr.get(secondAttrLevel);
|
||||
if(subAttr) newAttribute.setByWarJson(subAttr.secondAtr);
|
||||
if(subAttr) newAttribute.setByWarJson(hid, subAttr.secondAtr);
|
||||
let newCe = newAttribute.calCe();
|
||||
return newCe;
|
||||
}
|
||||
@@ -218,7 +218,7 @@ export async function getBossHp(serverId: number, guildCode: string, dicBossBase
|
||||
}
|
||||
if(playerCnt == 0) return { ratio: 1, bossHp: zoomInDamage(minBossHp) };
|
||||
|
||||
let subCe = getBossSubAttrCe(dicWar.secondAttrLevel, bossLv)
|
||||
let subCe = getBossSubAttrCe(actorId, dicWar.secondAttrLevel, bossLv)
|
||||
console.log(`getBossHp activeCe ${activeCe} playerCnt ${playerCnt} subCe ${subCe}`);
|
||||
let B = (activeCe/playerCnt/6 - subCe)/GUILDACTIVITY.GATEACTIVITY_ENEMYCE;
|
||||
let bossBaseHp = B * hp;
|
||||
|
||||
@@ -524,7 +524,7 @@ export async function getHeroesAttributes(roleId: string) {
|
||||
let cal = new AttributeCal();
|
||||
let heroAttr = heroAttrs.find(cur => cur.hid == hid);
|
||||
if(heroAttr) cal.setLv(heroAttr.lv);
|
||||
cal.setByWarJson(attrs);
|
||||
cal.setByWarJson(hid, attrs);
|
||||
attrByHid.set(hid, cal);
|
||||
}
|
||||
return attrByHid;
|
||||
|
||||
@@ -418,9 +418,9 @@ export function getRobotAttribute(hid: number, posRatio: number, score: number)
|
||||
|
||||
let newAttribute = new AttributeCal();
|
||||
newAttribute.setLv(difficultRatio.enemyLv);
|
||||
newAttribute.setByMap(dicHero.baseAbilityArr, difficultRatio.value / 10000 * posRatio);
|
||||
newAttribute.setByMap(hid, dicHero.baseAbilityArr, difficultRatio.value / 10000 * posRatio);
|
||||
let subAttr = gameData.towerPvpSubAttr.get(difficultRatio.secondAttrLevel);
|
||||
if(subAttr) newAttribute.setByWarJson(subAttr.secondAtr);
|
||||
if(subAttr) newAttribute.setByWarJson(hid, subAttr.secondAtr);
|
||||
let attrArr = newAttribute.getAttributesToString();
|
||||
let newCe = newAttribute.calCe();
|
||||
return { attribute: attrArr, ce: newCe, lv: difficultRatio.enemyLv };
|
||||
|
||||
@@ -88,7 +88,7 @@ export class CalCe {
|
||||
let lv = this.data.heroLv.get(hid)||1;
|
||||
let obj = new AttributeCal();
|
||||
obj.setLv(lv);
|
||||
obj.setByWarJson(arr);
|
||||
obj.setByWarJson(hid, arr);
|
||||
return obj.calCe();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user