装备:清理旧代码
This commit is contained in:
@@ -187,21 +187,6 @@ export async function calPlayerCe(hero: HeroType, update: HeroUpdate, type: numb
|
||||
case HERO_SYSTEM_TYPE.JEWEL_QUENCH:
|
||||
heroAttrs = calJewelResetRandSeIncAttr(hero, args, params, addSeidList, removeSeidList);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.EQUIP: //
|
||||
heroAttrs = calEquipPutOnOffIncAttr(hero, args, addSeidList, removeSeidList);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.EQUIP_BASE: //
|
||||
heroAttrs = calHeroEquipIncAttr(hero);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.RESTRENGTHEN: //
|
||||
heroAttrs = calRestrengthenIncAttr(hero, args.shift(), args, addSeidList, removeSeidList);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.JEWEL_ON: //
|
||||
heroAttrs = calHeroCeWhenJewelOnOrOff(hero, args[0], args[1]);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.JEWEL_OFF: //
|
||||
heroAttrs = calHeroCeWhenJewelOnOrOff(hero, 0, args[0]);
|
||||
break;
|
||||
case HERO_SYSTEM_TYPE.SCROLL:
|
||||
heroAttrs = calHeroCeScrollIncAttr(hero, update);
|
||||
break;
|
||||
@@ -795,185 +780,6 @@ export function calJewelResetRandSeIncAttr(hero: HeroType, eplaceIds: number[],
|
||||
return heroAttrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 穿脱, removeSeidList原来身上穿着的所有装备的seid,包括套装的
|
||||
* @param {HeroType} hero 武将
|
||||
* @param {number[]} seids args 原来穿着的装备的seid
|
||||
* @param {number[]} addSeidList 用于更新被动
|
||||
* @param {number[]} removeSeidList 用于更新被动
|
||||
*/
|
||||
export function calEquipPutOnOffIncAttr(hero: HeroType, seids: Array<number>, addSeidList: Array<number>, removeSeidList: Array<number>) {
|
||||
// 计算身上所有装备的战力值(特技相关以外)
|
||||
let heroAttrs = calHeroEquipIncAttr(hero);
|
||||
|
||||
// 计算被动技能
|
||||
let resultSeid = calEquipSeids(hero);
|
||||
for(let seid of resultSeid) {
|
||||
addSeidList.push(seid, 0);
|
||||
}
|
||||
|
||||
for (let seid of seids) {
|
||||
removeSeidList.push(seid, 0);
|
||||
}
|
||||
|
||||
return heroAttrs
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算一个武将身上的所有被动seid
|
||||
* @param {HeroType} hero 武将,equip需要populate
|
||||
*/
|
||||
export function calEquipSeids(_hero: HeroType) {
|
||||
let seids: number[] = [];
|
||||
// // 计算被动技能
|
||||
// let { ePlace } = hero;
|
||||
// let suits = new Map<number, Map<number, { dic: DicSuit, count: number }>>(); // suitType => starLevel => DicSuit
|
||||
|
||||
// for (let { equip } of ePlace) {
|
||||
// if (equip) {
|
||||
// let e = <EquipType>equip;
|
||||
// if (!!e.randSe) {
|
||||
// for (let { seid, rand } of e.randSe) {
|
||||
// seids.push(seid, rand);
|
||||
// }
|
||||
// }
|
||||
// if (e.suitId > 0) {
|
||||
// let { suitType, starLevel } = gameData.suit.get(e.suitId);
|
||||
// if (!suits.has(suitType)) {
|
||||
// suits.set(suitType, new Map<number, { dic: DicSuit, count: number }>());
|
||||
// }
|
||||
// for(let lv = 1; lv <= starLevel; lv++) {
|
||||
// let dicSuit = getDicSuitByTypeAndLv(suitType, lv); // 计算同type的低阶套装
|
||||
// if(dicSuit) {
|
||||
// if(!suits.get(suitType).has(lv)) {
|
||||
// suits.get(suitType).set(lv, { dic: dicSuit, count: 0 });
|
||||
// }
|
||||
// suits.get(suitType).get(lv).count ++;
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// for(let [ _suitType, map ] of suits) {
|
||||
// let effectSeid = new Map<number, { starLevel: number, seid: number }>(); // count => { starLevel, seid }
|
||||
// for(let [ starLevel, { dic: { effect }, count } ] of map) {
|
||||
// for(let { count: effectCount, seid} of effect) {
|
||||
// if(count >= effectCount ) { // 生效
|
||||
// if(!effectSeid.has(effectCount) || effectSeid.get(effectCount).starLevel < starLevel) { // 没有同数量效果
|
||||
// effectSeid.set(effectCount, { starLevel, seid });
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// for(let [_count, { seid }] of effectSeid) {
|
||||
// seids.push(seid, 0);
|
||||
// }
|
||||
// }
|
||||
return seids;
|
||||
}
|
||||
|
||||
/**
|
||||
* 装备,装备栏升级,装备精炼等涉及到值的
|
||||
* @param {HeroType} hero 装备更新过的武将
|
||||
*/
|
||||
export function calHeroEquipIncAttr(hero: HeroType) {
|
||||
let { attr: heroAttrs } = hero;
|
||||
|
||||
// let setMap = new Map<number, number>();
|
||||
// for (let { equip, lv, refineLv } of ePlace) {
|
||||
// if (equip) {
|
||||
// let e = <EquipType>equip;
|
||||
// let dicGoods = gameData.goods.get(e.id);
|
||||
// let { goodsAbility, goodsAbilityUp } = dicGoods;
|
||||
// let dicRefine = gameData.refine.get(refineLv);
|
||||
|
||||
// let jewel = new Map<number, number>();
|
||||
// for (let { jewel: jewelId } of e.holes) {
|
||||
// if (jewelId > 0) {
|
||||
// let g = gameData.goods.get(jewelId);
|
||||
// if (g) {
|
||||
// let jGoods = g.goodsAbility;
|
||||
// jGoods.forEach((value, key) => {
|
||||
// if (!jewel.has(key)) {
|
||||
// jewel.set(key, value);
|
||||
// } else {
|
||||
// jewel.set(key, jewel.get(key) + value);
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// let randMainMap = new Map<number, number>();
|
||||
// for(let {id, rand} of (e.randMain||[])) {
|
||||
// randMainMap.set(id, rand);
|
||||
// }
|
||||
// for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) {
|
||||
// // console.log('***', i);
|
||||
// let value1 = goodsAbility.get(i) || 0 * (HERO_CE_RATIO + e.randRange);
|
||||
// // console.log('基础值', value1);
|
||||
// let valueup = goodsAbilityUp.get(i) || 0;
|
||||
// // console.log('成长', lv, valueup);
|
||||
// let valueRefine = dicRefine ? dicRefine.upPercent : 0;
|
||||
// // console.log('精炼', dicRefine?dicRefine.upPercent:0 );
|
||||
// let valueJewel = jewel.get(i) || 0;
|
||||
// // console.log('宝石', valueJewel);
|
||||
// let valueGrade = randMainMap.get(i)||0;
|
||||
// // console.log('品相', valueGrade)
|
||||
// let attr = (value1 + lv * valueup) * valueGrade * (HERO_CE_RATIO + valueRefine) + valueJewel * HERO_CE_RATIO * HERO_CE_RATIO;
|
||||
|
||||
// if(attr >= 0) {
|
||||
// // console.log('装备战力:', i, attr);
|
||||
// if(setMap.has(i)) {
|
||||
// setMap.set(i, setMap.get(i) + Math.floor(attr / HERO_CE_RATIO));
|
||||
// } else {
|
||||
// setMap.set(i, Math.floor(attr / HERO_CE_RATIO));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) {
|
||||
// let attr = setMap.get(i)||0;
|
||||
// updateHeroAttr(heroAttrs, i, { set: { equipUp: attr } })
|
||||
// }
|
||||
|
||||
// hero.attr = heroAttrs;
|
||||
return heroAttrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 洗炼
|
||||
* @param {HeroType} hero 更新过的武将
|
||||
* @param {number} ePaceId 更新的栏位id
|
||||
* @param {number[]} seids 移除的seid
|
||||
* @param {number[]} addSeidList 用于更新被动
|
||||
* @param {number[]} removeSeidList 用于更新被动
|
||||
*/
|
||||
export function calRestrengthenIncAttr(hero: HeroType, _ePaceId: number, _seids: Array<number>, _addSeidList: Array<number>, _removeSeidList: Array<number>) {
|
||||
|
||||
let { attr: heroAttrs } = hero;
|
||||
// let { ePlace } = hero;
|
||||
|
||||
// let curPlace = ePlace.find(cur => cur.id == ePaceId);
|
||||
// if (curPlace && curPlace.equip) {
|
||||
// let e = <EquipType>curPlace.equip;
|
||||
// for (let { seid, rand } of e.randSe) {
|
||||
// addSeidList.push(seid, rand);
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (let seid of seids) {
|
||||
// removeSeidList.push(seid)
|
||||
// }
|
||||
|
||||
return heroAttrs
|
||||
}
|
||||
|
||||
// 添加技能增加的被动属性
|
||||
function addSeidEffect(heroAttrs: CeAttrData[], addSeidList: Array<number>, removeSeidList: Array<number>) {
|
||||
|
||||
@@ -1036,34 +842,6 @@ function addSeid(effectList: Array<any>, seidId: number, rand: number, seidValue
|
||||
effectList.push(seid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 带上宝石
|
||||
* @param {HeroType} hero 武将数据
|
||||
* @param {number} id 带上的宝石
|
||||
* @param {number} oldId 脱下的宝石
|
||||
*/
|
||||
function calHeroCeWhenJewelOnOrOff(hero: HeroType, id: number, oldId: number) {
|
||||
let { attr: heroAttrs } = hero;
|
||||
let { goodsAbility } = gameData.goods.get(id)||{ goodsAbility: new Map<number, number>() };
|
||||
let { goodsAbility: oldGoodsAbility } = gameData.goods.get(oldId)||{ goodsAbility: new Map<number, number>() };
|
||||
|
||||
let allIds: number[] = [];
|
||||
for(let [ id ] of goodsAbility) {
|
||||
allIds.push(id);
|
||||
}
|
||||
for(let [ id ] of oldGoodsAbility) {
|
||||
if(allIds.indexOf(id) == -1) allIds.push(id);
|
||||
}
|
||||
for(let id of allIds) {
|
||||
let value = goodsAbility.get(id)||0;
|
||||
let oldValue = oldGoodsAbility.get(id)||0;
|
||||
updateHeroAttr(heroAttrs, id, { inc: { equipUp: (value - oldValue) * HERO_CE_RATIO } })
|
||||
}
|
||||
|
||||
hero.attr = heroAttrs;
|
||||
return heroAttrs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 全局加成,百家学宫
|
||||
* @param role 角色
|
||||
|
||||
Reference in New Issue
Block a user