武将:一键升星

This commit is contained in:
luying
2021-07-05 19:51:21 +08:00
parent 5a948d1741
commit 50867e8878
11 changed files with 6420 additions and 3858 deletions

View File

@@ -365,12 +365,12 @@ export function comBtlRanges() {
}
export function getHeroStarByQuality(quality: number, star: number) {
return gameData.heroStar.get(`${quality}_${star}`);
export function getHeroStarByQuality(classType: number, quality: number, star: number) {
return gameData.heroStar.get(`${classType}_${quality}_${star}`);
}
export function getHeroWakeByQuality(quality: number, star: number) {
return gameData.heroWake.get(`${quality}_${star}`);
export function getHeroWakeByQuality(classType: number, quality: number, star: number) {
return gameData.heroWake.get(`${classType}_${quality}_${star}`);
}
export function getMaxGradeByjobClass(jobClass: number) {

View File

@@ -7,6 +7,8 @@ export interface DicHeroStar {
// 唯一id
readonly id: number;
// 职业类型
readonly classType: number;
// 品质
readonly quality: number;
// 星级
@@ -20,7 +22,7 @@ export interface DicHeroStar {
type KeysEnum<T> = { [P in keyof Required<T>]: true };
const DicHeroStarKeys: KeysEnum<DicHeroStar> = {id: true, quality: true, star: true, advanceUpFragmentNum: true, ceAttr: true};
const DicHeroStarKeys: KeysEnum<DicHeroStar> = {id: true, classType: true, quality: true, star: true, advanceUpFragmentNum: true, ceAttr: true};
export const dicHeroStar = new Map<string, DicHeroStar>();
export function loadHeroStar() {
@@ -28,7 +30,8 @@ export function loadHeroStar() {
arr.forEach(o => {
o.ceAttr = parseCeAttr(o);
dicHeroStar.set(`${o.quality}_${o.star}`, _.pick(o, Object.keys(DicHeroStarKeys)));
o.classType = o.class_type;
dicHeroStar.set(`${o.classType}_${o.quality}_${o.star}`, _.pick(o, Object.keys(DicHeroStarKeys)));
});
arr = undefined;
}

View File

@@ -8,6 +8,8 @@ export interface DicHeroWake {
// 唯一id
readonly id: number;
// 职业类型
readonly classType: number;
// 品质
readonly quality: number;
// 彩星级
@@ -22,7 +24,7 @@ export interface DicHeroWake {
}
type KeysEnum<T> = { [P in keyof Required<T>]: true };
const DicHeroWakeKeys: KeysEnum<DicHeroWake> = {id: true, quality: true, star: true, fragmentNum: true, consume: true, ceAttr: true};
const DicHeroWakeKeys: KeysEnum<DicHeroWake> = {id: true, classType: true, quality: true, star: true, fragmentNum: true, consume: true, ceAttr: true};
export const dicHeroWake = new Map<string, DicHeroWake>();
export function loadHeroWake() {
@@ -31,7 +33,8 @@ export function loadHeroWake() {
arr.forEach(o => {
o.consume = parseGoodStr(o.consume);
o.ceAttr = parseCeAttr(o);
dicHeroWake.set(`${o.quality}_${o.star}`, _.pick(o, Object.keys(DicHeroWakeKeys)));
o.classType = o.class_type;
dicHeroWake.set(`${o.classType}_${o.quality}_${o.star}`, _.pick(o, Object.keys(DicHeroWakeKeys)));
});
arr = undefined;
}

View File

@@ -293,7 +293,8 @@ export function calHeroStarIncAttr(originHero: HeroType, update: HeroUpdate, typ
if(starStage == ABI_STAGE.START) star--;
if(colorStarStage == ABI_STAGE.START) colorStar--;
const dicStar = isWake ? getHeroWakeByQuality(dicHero.quality, colorStar) : getHeroStarByQuality(quality, star); // 星级表
const dicJob = gameData.job.get(dicHero.jobid);
const dicStar = isWake ? getHeroWakeByQuality(dicJob.job_class, dicHero.quality, colorStar) : getHeroStarByQuality(dicJob.job_class, quality, star); // 星级表
let stages = new Array<number>(); // 需要升级的阶
@@ -302,6 +303,14 @@ export function calHeroStarIncAttr(originHero: HeroType, update: HeroUpdate, typ
} else if (type == HERO_SYSTEM_TYPE.LVUP) {
stages = getAllAttrStage();
} else if (type == HERO_SYSTEM_TYPE.STAR) {
let end = isUpStar? ABI_STAGE.END: starStage;
if(end < originStarStage) {
stages = getAllAttrStage();
} else {
for(let i = originStarStage; i < end; i++) {
stages.push(i + 1);
}
}
stages.push(isUpStar? ABI_STAGE.END: starStage);
} else if (type == HERO_SYSTEM_TYPE.QUALITY) {
stages = getAllAttrStage();
@@ -309,7 +318,14 @@ export function calHeroStarIncAttr(originHero: HeroType, update: HeroUpdate, typ
if (isFirstWake) { // 首次觉醒
stages = getAllAttrStage();
} else {
stages.push(isUpStar ? ABI_STAGE.END : colorStarStage);
let end = isUpStar? ABI_STAGE.END: colorStarStage;
if(end < originColorStarStage) {
stages = getAllAttrStage();
} else {
for(let i = originColorStarStage; i < end; i++) {
stages.push(i + 1);
}
}
}
}
for (let stage of stages) {