战力:补充数据结构

This commit is contained in:
陆莹
2022-03-25 20:10:07 +08:00
parent 1bdace30f9
commit 68e4d2232d
4 changed files with 376 additions and 118 deletions

View File

@@ -1,7 +1,7 @@
import { ABI_STAGE, ABI_STAGE_TO_TYPE, ABI_TYPE_MAIN, SEID_TYPE } from "../../consts";
import { HeroUpdate } from "../../db/Hero";
import { RoleUpdate, Teraph } from "../../db/Role";
import { GlobalAttr, HeroAttr, HeroAttrCell, RoleCeType } from "../../db/RoleCe";
import { AttrCell, EquipAttr, HeroAttr, RoleCeType } from "../../db/RoleCe";
import { AttributeCal } from "../../domain/roleField/attribute";
import { gameData, getHeroStarByQuality, getHeroWakeByQuality, getTeraph } from "../../pubUtils/data";
import { DicRandomEffectPool } from "../../pubUtils/dictionary/DicRandomEffectPool";
@@ -10,10 +10,14 @@ import { addToMap, deepCopy } from "../../pubUtils/util";
class RoleCe {
roleId: string;
globalAttrs: Map<number, GlobalMainAttr|GlobalSubAttr> = new Map(); // attrId => GlobalCe
heroAttrs: Map<string, HeroMainAttr|HeroSubAttr> = new Map(); // hid+attrId => HeroCe
globalAttrs: Map<number, GlobalMainAttr|GlobalSubAttr> = new Map(); // attrId => GlobalAttr
heroAttrs: Map<string, HeroMainAttr|HeroSubAttr> = new Map(); // hid+attrId => HeroAttr
heroAttrsByHid: Map<number, string[]> = new Map(); // hid => [hid+attrId]
equipAttrs: Map<string, EquipMainAttr|EquipSubAttr> = new Map(); // hid+eplaceId+attrId => EquipAttr
equipAttrsByHid: Map<number, string[]> = new Map(); // hid => [hid+eplaceId+attrId]
equipAttrsByHidAndEplace: Map<string, { hid: number, eplaceId: number, keys: string[]}> = new Map(); // hid+eplaceId =>+eplaceId+attrId]
heroLv: Map<number, number> = new Map();
equipLv: Map<string, number> = new Map(); // hid+eplaceId => lv
setRoleCe(roleCe: RoleCeType) {
this.roleId = roleCe.roleId;
@@ -28,6 +32,13 @@ class RoleCe {
obj.setByRoleCe(cell);
}
}
for(let { hid, eplaceId, lv, attrs } of roleCe.equipAttrs) {
this.equipLv.set(`${hid}_${eplaceId}`, lv);
for(let cell of attrs) {
let obj = this.getEquipAttrByHidAndId(hid, eplaceId, cell.attrId);
obj.setByRoleCe(cell);
}
}
}
public getGlobalAttrById(attrId: number) {
@@ -62,14 +73,44 @@ class RoleCe {
return this.heroAttrs.get(key);
}
public getEquipAttrByHidAndId(hid: number, eplaceId: number, attrId: number) {
let key = `${hid}_${eplaceId}_${attrId}`;
if(!this.equipAttrs.has(key)) {
if(ABI_TYPE_MAIN.indexOf(attrId) != -1) {
let obj = new EquipMainAttr(hid, attrId);
this.equipAttrs.set(key, obj);
} else {
let obj = new EquipSubAttr(hid, attrId);
this.equipAttrs.set(key, obj);
}
if(!this.equipAttrsByHid.has(hid)) {
this.equipAttrsByHid.set(hid, []);
}
this.equipAttrsByHid.get(hid).push(key);
let key2 = `${hid}_${eplaceId}`;
if(!this.equipAttrsByHidAndEplace.has(key2)) {
this.equipAttrsByHidAndEplace.set(key2, { hid, eplaceId, keys: []});
}
this.equipAttrsByHidAndEplace.get(key2).keys.push(key);
}
return this.equipAttrs.get(key);
}
public calHeroCe() {
let ces = new Map<number, { id: number, val: number }[]>(); // hid => [{attrId, val}]
for(let [hid, keys] of this.heroAttrsByHid) {
let lv = this.heroLv.get(hid)||1;
for(let key of keys) {
let { attrId, base, baseUp, starUp, skillRatio, skill, job } = this.heroAttrs.get(key);
let { schoolRatio, title, teraph } = this.getGlobalAttrById(attrId);
let val = ( base + lv * ( baseUp + starUp ) + skill + job) * (1 + skillRatio + schoolRatio ) + teraph + title;
let { attrId, base = 0, job = 0, starUp = 0, connect = 0, favour = 0, talent = 0, equip = 0, equipUp = 0, equipStone = 0 } = this.heroAttrs.get(key);
let { school = 0, teraph = 0, title = 0, scroll = 0, skin = 0 } = this.getGlobalAttrById(attrId);
let val = 0;
if(ABI_TYPE_MAIN.indexOf(attrId)) {
// {[hp1 + lv * hp2 + hp3 * ( 1 + hp4 )] * (1 + hp5 ) + [( hp6+hp7)*(1+hp8)] } * ( 1 + hp9 ) + hp10 + hp11
val = ((base + job + lv * starUp + connect * ( 1 + favour )) * ( 1 + school + talent ) + equip ) * ( 1 + equipUp ) + equipStone + teraph + title + scroll + skin;
} else {
val = base + job + talent + teraph + school + title + equip + skin;
}
if(!ces.has(hid)) ces.set(hid, []);
ces.get(hid).push({ id: attrId, val });
}
@@ -84,14 +125,14 @@ class RoleCe {
}
public getRoleCeTable() {
let globalAttrs: GlobalAttr[] = [];
let globalAttrs: AttrCell[] = [];
for(let [_, globalAttr] of this.globalAttrs) {
globalAttrs.push(globalAttr.getGlobalAttr());
}
let heroAttrs: HeroAttr[] = [];
for(let [hid, keys] of this.heroAttrsByHid) {
let lv = this.heroLv.get(hid);
let attrs: HeroAttrCell[] = [];
let attrs: AttrCell[] = [];
for(let key of keys) {
let heroAttr = this.heroAttrs.get(key);
attrs.push(heroAttr.getHeroAttrCell());
@@ -100,8 +141,20 @@ class RoleCe {
hid, lv, attrs
});
}
let equipAttrs: EquipAttr[] = [];
for(let [key2, { hid, eplaceId, keys }] of this.equipAttrsByHidAndEplace) {
let lv = this.equipLv.get(key2);
let attrs: AttrCell[] = [];
for(let key of keys) {
let equipAttr = this.equipAttrs.get(key);
attrs.push(equipAttr.getEquipAttrCell());
}
equipAttrs.push({
hid, eplaceId, lv, attrs
});
}
return {
roleId: this.roleId, globalAttrs, heroAttrs
roleId: this.roleId, globalAttrs, heroAttrs, equipAttrs
}
}
}
@@ -109,11 +162,11 @@ class RoleCe {
// 计算函数
export class CalCe extends RoleCe {
public setInitHero(role: RoleUpdate, heroes: HeroUpdate[]) {
this.roleId = role.roleId;
for(let { hid, skinId, lv, quality, star, starStage, colorStar, colorStarStage, job, jobStage, } of heroes) {
this.setHeroBase(hid, skinId);
this.setHeroLv(hid, lv);
this.setHeroStar(hid, job, quality, star, starStage, colorStar, colorStarStage);
this.setSkill(hid, skinId, star, colorStar);
this.setJob(hid, job, jobStage);
}
this.setTitle(role.title);
@@ -127,10 +180,6 @@ export class CalCe extends RoleCe {
let heroAttr = this.getHeroAttrByHidAndId(hid, attrId);
heroAttr.base = value;
}
for(let [attrId, value] of dicHero.baseAbilityUpArr) {
let heroAttr = this.getHeroAttrByHidAndId(hid, attrId);
heroAttr.baseUp = value;
}
}
// 武将等级
@@ -161,30 +210,6 @@ export class CalCe extends RoleCe {
}
// 武将星级解锁被动技能计算
public setSkill(hid: number, skinId: number, _star: number, _colorStar: number) {
let seidList = new Map<number, number>(); // type => seid
let dicHero = gameData.hero.get(skinId);
let { starSeidArr, colorStarSeidArr } = gameData.heroSkill.get(dicHero.skill);
for (let { star, value, type } of starSeidArr) {
if (_star >= star) seidList.set(type, value);
}
for (let { star, value, type } of colorStarSeidArr) {
if (_colorStar >= star) seidList.set(type, value);
}
let list: number[] = [];
for(let [_type, value] of seidList) list.push(value);
let { fixUp, ratioUp } = this.addSeidEffect(list);
for(let [attrId, value] of fixUp) {
let heroAttr = this.getHeroAttrByHidAndId(hid, attrId);
heroAttr.skill = value;
}
for(let [attrId, value] of ratioUp) {
let heroAttr = this.getHeroAttrByHidAndId(hid, attrId);
heroAttr.skillRatio = value;
}
}
// 职业基础
public setJob(hid: number, job: number, jobStage: number) {
const dicJob = gameData.job.get(job);
@@ -284,15 +309,17 @@ export class CalCe extends RoleCe {
abstract class GlobalAllAttr {
attrId: number;
schoolRatio: number = 0;
title: number = 0;
school: number = 0;
teraph: number = 0;
title: number = 0;
scroll: number = 0;
skin: number = 0;
constructor(attrId: number) {
this.attrId = attrId;
}
abstract setByRoleCe(data: GlobalAttr): void;
abstract setByRoleCe(data: AttrCell): void;
abstract getValues(): number[];
public getGlobalAttr() {
@@ -305,17 +332,21 @@ abstract class GlobalAllAttr {
class GlobalMainAttr extends GlobalAllAttr {
public setByRoleCe(globalAttr: GlobalAttr) {
public setByRoleCe(globalAttr: AttrCell) {
for(let i = 0; i < globalAttr.values.length; i++) {
let value = globalAttr.values[i];
if(value != undefined) {
switch(i) {
case GLOBAL_ATTR_INDEX.SCHOOL:
this.schoolRatio = value; break;
case GLOBAL_ATTR_INDEX.TITLE:
this.title = value; break;
case GLOBAL_ATTR_INDEX.TERAPH:
case GLOBAL_MAIN_ATTR_INDEX.SCHOOL:
this.school = value; break;
case GLOBAL_MAIN_ATTR_INDEX.TERAPH:
this.teraph = value; break;
case GLOBAL_MAIN_ATTR_INDEX.TITLE:
this.title = value; break;
case GLOBAL_MAIN_ATTR_INDEX.SCROLL:
this.scroll = value; break;
case GLOBAL_MAIN_ATTR_INDEX.SKIN:
this.skin = value; break;
}
}
}
@@ -323,14 +354,23 @@ class GlobalMainAttr extends GlobalAllAttr {
public getValues() {
let values: number[] = [];
for(let i = GLOBAL_ATTR_INDEX.START; i < GLOBAL_ATTR_INDEX.END; i++) {
for(let i = GLOBAL_MAIN_ATTR_INDEX.START; i < GLOBAL_MAIN_ATTR_INDEX.END; i++) {
switch(i) {
case GLOBAL_ATTR_INDEX.SCHOOL:
values.push(this.schoolRatio); break;
case GLOBAL_ATTR_INDEX.TITLE:
values.push(this.title); break;
case GLOBAL_ATTR_INDEX.TERAPH:
values.push(this.teraph); break;
case GLOBAL_MAIN_ATTR_INDEX.SCHOOL:
if(this.school) values[i] = this.school;
break;
case GLOBAL_MAIN_ATTR_INDEX.TERAPH:
if(this.teraph) values[i] = this.teraph;
break;
case GLOBAL_MAIN_ATTR_INDEX.TITLE:
if(this.title) values[i] = this.title;
break;
case GLOBAL_MAIN_ATTR_INDEX.SCROLL:
if(this.scroll) values[i] = this.scroll;
break;
case GLOBAL_MAIN_ATTR_INDEX.SKIN:
if(this.skin) values[i] = this.skin;
break;
}
}
return values;
@@ -339,17 +379,19 @@ class GlobalMainAttr extends GlobalAllAttr {
class GlobalSubAttr extends GlobalAllAttr {
public setByRoleCe(globalAttr: GlobalAttr) {
public setByRoleCe(globalAttr: AttrCell) {
for(let i = 0; i < globalAttr.values.length; i++) {
let value = globalAttr.values[i];
if(value != undefined) {
switch(i) {
case GLOBAL_ATTR_INDEX.SCHOOL:
this.schoolRatio = value; break;
case GLOBAL_ATTR_INDEX.TITLE:
this.title = value; break;
case GLOBAL_ATTR_INDEX.TERAPH:
case GLOBAL_SUB_ATTR_INDEX.SCHOOL:
this.school = value; break;
case GLOBAL_MAIN_ATTR_INDEX.TERAPH:
this.teraph = value; break;
case GLOBAL_MAIN_ATTR_INDEX.TITLE:
this.title = value; break;
case GLOBAL_MAIN_ATTR_INDEX.SKIN:
this.skin = value; break;
}
}
}
@@ -357,14 +399,20 @@ class GlobalSubAttr extends GlobalAllAttr {
public getValues() {
let values: number[] = [];
for(let i = GLOBAL_ATTR_INDEX.START; i < GLOBAL_ATTR_INDEX.END; i++) {
for(let i = GLOBAL_MAIN_ATTR_INDEX.START; i < GLOBAL_MAIN_ATTR_INDEX.END; i++) {
switch(i) {
case GLOBAL_ATTR_INDEX.SCHOOL:
values.push(this.schoolRatio); break;
case GLOBAL_ATTR_INDEX.TITLE:
values.push(this.title); break;
case GLOBAL_ATTR_INDEX.TERAPH:
values.push(this.teraph); break;
case GLOBAL_MAIN_ATTR_INDEX.SCHOOL:
if(this.school) values[i] = this.school;
break;
case GLOBAL_MAIN_ATTR_INDEX.TERAPH:
if(this.teraph) values[i] = this.teraph;
break;
case GLOBAL_MAIN_ATTR_INDEX.TITLE:
if(this.title) values[i] = this.title;
break;
case GLOBAL_MAIN_ATTR_INDEX.SKIN:
if(this.skin) values[i] = this.skin;
break;
}
}
return values;
@@ -375,12 +423,14 @@ abstract class HeroAllAttr {
hid: number;
attrId: number;
base: number = 0;
lv: number = 0;
baseUp: number = 0;
starUp: number = 0;
skillRatio: number = 0;
skill: number = 0;
job: number = 0;
starUp: number = 0;
connect: number = 0;
favour: number = 0;
talent: number = 0;
equip: number = 0;
equipUp: number = 0;
equipStone: number = 0;
constructor(hid: number, attrId: number, ) {
this.hid = hid;
@@ -388,7 +438,7 @@ abstract class HeroAllAttr {
}
abstract setByRoleCe(data: GlobalAttr): void;
abstract setByRoleCe(data: AttrCell): void;
abstract getValues(): number[];
public getHeroAttrCell() {
@@ -400,13 +450,29 @@ abstract class HeroAllAttr {
}
class HeroMainAttr extends HeroAllAttr {
public setByRoleCe(heroAttr: HeroAttrCell) {
public setByRoleCe(heroAttr: AttrCell) {
for(let i = 0; i < heroAttr.values.length; i++) {
let value = heroAttr.values[i];
if(value != undefined) {
switch(i) {
case HERO_ATTR_INDEX.BASE:
this.base = value;
case HERO_MAIN_ATTR_INDEX.BASE:
this.base = value; break;
case HERO_MAIN_ATTR_INDEX.JOB:
this.job = value; break;
case HERO_MAIN_ATTR_INDEX.STAR_UP:
this.starUp = value; break;
case HERO_MAIN_ATTR_INDEX.CONNECT:
this.connect = value; break;
case HERO_MAIN_ATTR_INDEX.FAVOUR:
this.favour = value; break;
case HERO_MAIN_ATTR_INDEX.TALENT:
this.talent = value; break;
case HERO_MAIN_ATTR_INDEX.EQUIP:
this.equip = value; break;
case HERO_MAIN_ATTR_INDEX.EQUIP_UP:
this.equipUp = value; break;
case HERO_MAIN_ATTR_INDEX.EQUIP_STONE:
this.equipStone = value; break;
}
}
}
@@ -414,10 +480,35 @@ class HeroMainAttr extends HeroAllAttr {
public getValues() {
let values: number[] = [];
for(let i = HERO_ATTR_INDEX.START; i < HERO_ATTR_INDEX.END; i++) {
for(let i = HERO_MAIN_ATTR_INDEX.START; i < HERO_MAIN_ATTR_INDEX.END; i++) {
switch(i) {
case HERO_ATTR_INDEX.BASE:
values.push(this.base); break;
case HERO_MAIN_ATTR_INDEX.BASE:
if(this.base) values[i] = this.base;
break;
case HERO_MAIN_ATTR_INDEX.JOB:
if(this.job) values[i] = this.job;
break;
case HERO_MAIN_ATTR_INDEX.STAR_UP:
if(this.starUp) values[i] = this.starUp;
break;
case HERO_MAIN_ATTR_INDEX.CONNECT:
if(this.connect) values[i] = this.connect;
break;
case HERO_MAIN_ATTR_INDEX.FAVOUR:
if(this.favour) values[i] = this.favour;
break;
case HERO_MAIN_ATTR_INDEX.TALENT:
if(this.talent) values[i] = this.talent;
break;
case HERO_MAIN_ATTR_INDEX.EQUIP:
if(this.equip) values[i] = this.equip;
break;
case HERO_MAIN_ATTR_INDEX.EQUIP_UP:
if(this.equipUp) values[i] = this.equipUp;
break;
case HERO_MAIN_ATTR_INDEX.EQUIP_STONE:
if(this.equipStone) values[i] = this.equipStone;
break;
}
}
return values;
@@ -425,13 +516,19 @@ class HeroMainAttr extends HeroAllAttr {
}
class HeroSubAttr extends HeroAllAttr {
public setByRoleCe(heroAttr: HeroAttrCell) {
public setByRoleCe(heroAttr: AttrCell) {
for(let i = 0; i < heroAttr.values.length; i++) {
let value = heroAttr.values[i];
if(value != undefined) {
switch(i) {
case HERO_ATTR_INDEX.BASE:
this.base = value;
case HERO_SUB_ATTR_INDEX.BASE:
this.base = value; break;
case HERO_SUB_ATTR_INDEX.JOB:
this.job = value; break;
case HERO_SUB_ATTR_INDEX.TALENT:
this.talent = value; break;
case HERO_SUB_ATTR_INDEX.EQUIP:
this.equip = value; break;
}
}
}
@@ -439,27 +536,192 @@ class HeroSubAttr extends HeroAllAttr {
public getValues() {
let values: number[] = [];
for(let i = HERO_ATTR_INDEX.START; i < HERO_ATTR_INDEX.END; i++) {
for(let i = HERO_SUB_ATTR_INDEX.START; i < HERO_SUB_ATTR_INDEX.END; i++) {
switch(i) {
case HERO_ATTR_INDEX.BASE:
values.push(this.base); break;
case HERO_SUB_ATTR_INDEX.BASE:
if(this.base) values[i] = this.base;
break;
case HERO_SUB_ATTR_INDEX.JOB:
if(this.job) values[i] = this.job;
break;
case HERO_SUB_ATTR_INDEX.TALENT:
if(this.talent) values[i] = this.talent;
break;
case HERO_SUB_ATTR_INDEX.EQUIP:
if(this.equip) values[i] = this.equip;
break;
}
}
return values;
}
}
enum GLOBAL_ATTR_INDEX {
abstract class EquipAllAttr {
hid: number;
eplaceId: number;
attrId: number;
equipQuality: number = 0;
equipStrengthen: number = 0;
equipStar: number = 0;
equipSuit: number = 0;
jewel: number = 0;
stone: number = 0;
constructor(hid: number, attrId: number, ) {
this.hid = hid;
this.attrId = attrId;
}
abstract setByRoleCe(data: AttrCell): void;
abstract getValues(): number[];
public getEquipAttrCell() {
return {
attrId: this.attrId,
values: this.getValues()
}
}
}
class EquipMainAttr extends EquipAllAttr {
public setByRoleCe(equipAttr: AttrCell) {
for(let i = 0; i < equipAttr.values.length; i++) {
let value = equipAttr.values[i];
if(value != undefined) {
switch(i) {
case EQUIP_MAIN_ATTR_INDEX.EQUIP_QUALITY:
this.equipQuality = value; break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_STRENGTH:
this.equipStrengthen = value; break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_STAR:
this.equipStar = value; break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_SUIT:
this.equipSuit = value; break;
case EQUIP_MAIN_ATTR_INDEX.JEWEL:
this.jewel = value; break;
case EQUIP_MAIN_ATTR_INDEX.STONE:
this.stone = value; break;
}
}
}
}
public getValues() {
let values: number[] = [];
for(let i = EQUIP_MAIN_ATTR_INDEX.START; i < EQUIP_MAIN_ATTR_INDEX.END; i++) {
switch(i) {
case EQUIP_MAIN_ATTR_INDEX.EQUIP_QUALITY:
if(this.equipQuality) values[i] = this.equipQuality;
break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_STRENGTH:
if(this.equipStrengthen) values[i] = this.equipStrengthen;
break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_STAR:
if(this.equipStar) values[i] = this.equipStar;
break;
case EQUIP_MAIN_ATTR_INDEX.EQUIP_SUIT:
if(this.equipSuit) values[i] = this.equipSuit;
break;
case EQUIP_MAIN_ATTR_INDEX.JEWEL:
if(this.jewel) values[i] = this.jewel;
break;
case EQUIP_MAIN_ATTR_INDEX.STONE:
if(this.stone) values[i] = this.stone;
break;
}
}
return values;
}
}
class EquipSubAttr extends EquipAllAttr {
public setByRoleCe(equipAttr: AttrCell) {
for(let i = 0; i < equipAttr.values.length; i++) {
let value = equipAttr.values[i];
if(value != undefined) {
switch(i) {
case EQUIP_SUB_ATTR_INDEX.EQUIP_STAR:
this.equipStar = value; break;
case EQUIP_SUB_ATTR_INDEX.JEWEL:
this.jewel = value; break;
}
}
}
}
public getValues() {
let values: number[] = [];
for(let i = EQUIP_SUB_ATTR_INDEX.START; i < EQUIP_SUB_ATTR_INDEX.END; i++) {
switch(i) {
case EQUIP_SUB_ATTR_INDEX.EQUIP_STAR:
if(this.equipStar) values[i] = this.equipStar;
break;
case EQUIP_SUB_ATTR_INDEX.JEWEL:
if(this.jewel) values[i] = this.jewel;
break;
}
}
return values;
}
}
enum GLOBAL_MAIN_ATTR_INDEX {
START,
SCHOOL = 0,
TITLE = 1,
TERAPH = 2,
SCHOOL = 0, // hp5百家学宫百分比加成dic_zyz_schoolRate的mainAttrApercent
TERAPH = 1, // hp11, 神像加成(直接读数据库teraph字段的值)
TITLE = 2, // hp11, 爵位加成(dic_zyz_title的hp)
SCROLL = 3, // hp11名将谱加成(dic_zyz_heroScroll的hp)
SKIN = 4, // hp12, 皮肤加成(dic_zyz_fashion的actorAttr)
END
}
enum HERO_ATTR_INDEX {
enum GLOBAL_SUB_ATTR_INDEX {
START,
BASE = 0, // 角色基础属性(dic_zyz_hero的hp)
BASE_UP = 1,
SCHOOL = 0, // attr5, 百家学宫(根据dic_zyz_school中的upAttribute决定书院加的是那些次级属性具体值读取dic_zyz_schoolRate中的assiAttrAddValue一列)
TERAPH = 1, // attr4, 神像加成(dic_zyz_teraph中的assistAttrValue)
TITLE = 2, // attr6, 爵位dic_zyz_title中的pdi、mdi
SKIN = 3, // attr8, 皮肤
END
}
enum HERO_MAIN_ATTR_INDEX {
START,
BASE = 0, // hp1, 角色基础属性(dic_zyz_hero的hp)
JOB = 1, // hp1, 职业属性(dic_zyz_job的attr)
STAR_UP = 2, // hp2, 角色升星成长(dic_zyz_hero_star的hp或dic_zyz_hero_wake的hp)
CONNECT = 3, // hp3, 角色羁绊固定值(dic_zyz_friend_ship的attribute)
FAVOUR = 4, // hp4, 声望加成(dic_zyz_friend_ship_level的add)
TALENT = 5, // hp5, 天赋树百分比加成(dic_zyz_hero_talent的levelSeid然后对应到dic_zyz_se)
EQUIP = 6, // (hp6+hp7)*(1+hp8) 装备equipAttr加成之后加到这里
EQUIP_UP = 7, // hp9, 天晶洗练处的主属性百分比加成equipAttr中计算好加和加入
EQUIP_STONE = 8, // hp10, 地玉石增加的固定值equipAttr中计算好和加入
END
}
enum HERO_SUB_ATTR_INDEX {
START,
BASE = 0, // attr1系统参数表中所有人
JOB = 1, // attr2, 职业的attr
TALENT = 2, // attr3, 天赋树百分比加成 (dic_zyz_hero_talent的levelSeid然后对应到dic_zyz_se)
EQUIP = 3, // attr7+attr9, 天晶加成和精炼加成equipAttr加起来
END
}
enum EQUIP_MAIN_ATTR_INDEX {
START,
EQUIP_QUALITY = 0, // hp6, 装备升品基础值加成(dic_zyz_equipQuality)
EQUIP_STRENGTH = 1,// hp7, 装备强化值(需改表,改为键值对)
EQUIP_STAR = 2, // hp8, 装备(dic_zyz_equipStar)
EQUIP_SUIT = 3, // hp8, 装备套装加成(dic_zyz_equipSuit)
JEWEL = 4, // hp9, 天晶洗练出的主属性百分比加成equipAttr加起来
STONE = 5, // hp10地玉石增加的固定值equipAttr加起来
END
}
enum EQUIP_SUB_ATTR_INDEX {
START,
JEWEL = 0, // attr7, 天晶随机属性(随机出来的值在dic_zyz_randomEffectPool中读最终值)
EQUIP_STAR = 1, // attr8, 精炼次级属性(dic_zyz_equipStar的subAttr)
END
}