添加处理seid方法
This commit is contained in:
@@ -11,24 +11,33 @@ import Hero from '../db/Hero';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { getJobInfoById, getJobByGradeAndClass, getHeroInfoById, getHeroStar, getHeroWake } from '../pubUtils/gamedata';
|
||||
import { HEROTARIN, CE_RATIO, ABI_TYPE_TO_STAGE, ABI_STAGE} from '../consts/abilityConst';
|
||||
import { CeAttrData } from '../db/BaseModel';
|
||||
import { CeAttrData, CeAttr } from '../db/BaseModel';
|
||||
const HERO_CE_RATIO = 100;
|
||||
//战力计算TODO
|
||||
export function calPlayerCe(hero: any, type: number, args: Array<number>) {
|
||||
let incCe = 0;
|
||||
let incArr = {};
|
||||
let reIncAttr; // {"hp": {"base": number, "fixUp": number, "ratioUp": number}}
|
||||
|
||||
let addSeidList = new Array<number>();
|
||||
let removeSeidList = new Array<number>();
|
||||
|
||||
if (type == HERO_SYSTEM_TYPE.STAR) {
|
||||
reIncAttr = calHeroStarIncAttr(hero, args); // 返回 计算后的值
|
||||
reIncAttr = calHeroStarIncAttr(hero, addSeidList, removeSeidList); // 返回 计算后的值
|
||||
} else if (type == HERO_SYSTEM_TYPE.TRAIN) {
|
||||
reIncAttr = calHeroTrainIncAttr(hero);
|
||||
}
|
||||
for (let attrName in reIncAttr) {
|
||||
let originalAttrData: CeAttrData = hero.ceAttr[attrName];
|
||||
|
||||
addSeidEffect(reIncAttr, addSeidList, removeSeidList); // 处理加值
|
||||
|
||||
if(!hero.ceAttr) hero.ceAttr = new CeAttr();
|
||||
for (let attrName in reIncAttr) {
|
||||
let originalAttrData: CeAttrData = hero.ceAttr[attrName]||new CeAttrData();
|
||||
let oldCe = originalAttrData.fixUp * HERO_CE_RATIO + originalAttrData.base *(HERO_CE_RATIO + originalAttrData.ratioUp)
|
||||
|
||||
if(!hero.ceAttr[attrName]) hero.ceAttr[attrName] = new CeAttrData();
|
||||
for (let attrKey in reIncAttr[attrName]) {
|
||||
hero.CeAttr[attrName][attrKey] = parseInt(reIncAttr[attrName][attrKey]);
|
||||
hero.ceAttr[attrName][attrKey] = parseInt(reIncAttr[attrName][attrKey]);
|
||||
}
|
||||
incArr[attrName] = reIncAttr[attrName].fixUp * HERO_CE_RATIO + reIncAttr[attrName].base *(HERO_CE_RATIO + reIncAttr[attrName].ratioUp) - oldCe; //计算属性
|
||||
incCe += incArr[attrName] * CE_RATIO[attrName];
|
||||
@@ -61,7 +70,7 @@ export async function calPlayerCeAndSave(sid: string, roleId: string, heros: Arr
|
||||
return heros;
|
||||
}
|
||||
|
||||
export function calHeroStarIncAttr (hero: Hero, _args: Array<number>) {
|
||||
export function calHeroStarIncAttr (hero: Hero, addSeidList: Array<number>, removeSeidList: Array<number>) {
|
||||
let {star, starStage, quality, colorStar, colorStarStage, ceAttr} = hero;
|
||||
let res = {};
|
||||
const dicHero = getHeroInfoById(hero.hid);
|
||||
@@ -98,7 +107,7 @@ export function calHeroStarIncAttr (hero: Hero, _args: Array<number>) {
|
||||
let starUp = dicStar.ceAttr.get(stage);
|
||||
let newBase = heroAttr + hero.lv * (heroUpAttr + starUp);
|
||||
let field = WAR_JSON_ATTRIBUTE_TYPE[targetAttrId];
|
||||
let ceAttrData: CeAttrData = ceAttr[field]; // 存表中的属性下的base,fixup,ratioup
|
||||
let ceAttrData: CeAttrData = ceAttr[field]||new CeAttrData(); // 存表中的属性下的base,fixup,ratioup
|
||||
let {ratioUp = 0, fixUp = 0} = ceAttrData;
|
||||
res[field] = { base: newBase, ratioUp, fixUp}; // base变动,增量为△base * ratio + 0
|
||||
}
|
||||
@@ -131,3 +140,8 @@ function getFieldByStage(stage: number, jobid: number) {
|
||||
return targetAttrId(dicJob.type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function addSeidEffect(reIncAttr: CeAttr, addSeidList: Array<number>, removeSeidList: Array<number>) {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user