修改数据库,姑且跑起来

This commit is contained in:
luying
2022-02-14 19:47:10 +08:00
parent a43c61cb5a
commit ecc55b3063
11 changed files with 1242 additions and 1166 deletions

View File

@@ -631,54 +631,54 @@ export function calEquipPutOnOffIncAttr(hero: HeroType, seids: Array<number>, ad
* 计算一个武将身上的所有被动seid
* @param {HeroType} hero 武将equip需要populate
*/
export function calEquipSeids(hero: HeroType) {
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
// // 计算被动技能
// 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 { 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);
}
}
// 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;
}
@@ -687,70 +687,70 @@ export function calEquipSeids(hero: HeroType) {
* @param {HeroType} hero 装备更新过的武将
*/
export function calHeroEquipIncAttr(hero: HeroType) {
let { ePlace, attr: heroAttrs } = hero;
let { ePlace:_, 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 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 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;
// 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));
}
}
}
}
// 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 } })
}
// 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;
// hero.attr = heroAttrs;
return heroAttrs;
}
@@ -762,22 +762,22 @@ export function calHeroEquipIncAttr(hero: HeroType) {
* @param {number[]} addSeidList 用于更新被动
* @param {number[]} removeSeidList 用于更新被动
*/
export function calRestrengthenIncAttr(hero: HeroType, ePaceId: number, seids: Array<number>, addSeidList: Array<number>, removeSeidList: Array<number>) {
export function calRestrengthenIncAttr(hero: HeroType, _ePaceId: number, _seids: Array<number>, _addSeidList: Array<number>, _removeSeidList: Array<number>) {
let { attr: heroAttrs } = hero;
let { ePlace } = 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);
}
}
// 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)
}
// for (let seid of seids) {
// removeSeidList.push(seid)
// }
return heroAttrs
}

View File

@@ -130,10 +130,10 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero:
pushMessage = await checkTask(roleId, taskType, 1, true, { favourLv: hero.favourLv, oldLv: args[0] })
}
else if (taskType == TASK_TYPE.EQUIP_BY_HERO) {
// arg[0] 1穿上 -1脱下
let { ePlace } = hero;
let count = ePlace.filter(cur => cur.equip).length;
pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0], oldCount: args[1] });
// // arg[0] 1穿上 -1脱下
// let { ePlace } = hero;
// let count = ePlace.filter(cur => cur.equip).length;
// pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0], oldCount: args[1] });
}
else if (taskType == TASK_TYPE.EQUIP_STRENGTHEN) {
// args: 依次为原先的装备的强化等级