✨ feat:将魂碎片出售

This commit is contained in:
zhangxk
2023-07-19 14:48:26 +08:00
committed by luying
parent c7bd174dce
commit 523eaad05e
6 changed files with 251 additions and 50 deletions
+8
View File
@@ -1980,6 +1980,14 @@ export function checkRouteParam(route: string, msg: any) {
if (!checkNaturalNumbers(msg.goodsId, msg.count)) return false;
break;
}
case "role.shopHandler.recycleSoulFast":
{
if (!checkNaturalArray(msg.recycleSoulFastPara)) return false;
for (let { hid, goodsId, count } of msg.recycleSoulFastPara) {
if (!checkNaturalNumbers(hid, goodsId, count)) return false;
}
break;
}
case "role.taskHandler.receiveTask":
{
if (!checkNaturalNumbers(msg.type, msg.id)) return false;
+69 -2
View File
@@ -1,9 +1,11 @@
import { CURRENCY_TYPE, HANDLE_REWARD_TYPE, CURRENCY_BY_TYPE, CONSUME_TYPE, ITID_STONE_LIMIT } from '../../consts';
import { CURRENCY_TYPE, HANDLE_REWARD_TYPE, CURRENCY_BY_TYPE, CONSUME_TYPE, ITID_STONE_LIMIT, HERO_GROW_MAX, ABI_STAGE } from '../../consts';
import { RoleModel, RoleType } from '../../db/Role';
import { ItemModel, ItemType } from '../../db/Item';
import { ItemInter, RewardInter, } from '../../pubUtils/interface';
import { gameData } from '../../pubUtils/data';
import { gameData, getHeroStarByQuality, getHeroWakeByQuality } from '../../pubUtils/data';
import { sortItems } from './util';
import { HeroType } from '../../db/Hero';
export class CheckMeterial {
private roleId: string;
@@ -351,3 +353,68 @@ export async function getComposeStoneCostAndAdd(curItem, itId) {
/**
* 计算升到6彩后剩余碎片
* @param roleId
* @param hid
* @returns
*/
export async function calUpSixColorsResidueFragment(roleId: string, hero: HeroType, hid: number, count?: number) {
let needFragment = 0;
// if (isHeroHidden(hid)) return;
let dicHero = gameData.hero.get(hid);
if (!dicHero) return;
let { pieceId, jobid } = dicHero;
let dicJob = gameData.job.get(jobid);
if (!dicJob) return;
// let hero = await HeroModel.findByHidAndRole(hid, roleId);
// if (!hero) return;
let curItemCount = count;
if (!count) {
let item = await ItemModel.findbyRoleAndGid(roleId, pieceId);
curItemCount = item?.count || 0;
}
if (curItemCount < 0) return;
let { star: oldStar, starStage: oldStarStage, quality: oldQuality, colorStar: oldColorStar, colorStarStage: oldColorStarStage, } = hero;
// 计算升星
if (oldStar < HERO_GROW_MAX.STAR) {
for (let starIndex = oldStar; starIndex < HERO_GROW_MAX.STAR; starIndex++) {
const curDicHeroStar = getHeroStarByQuality(dicJob.job_class, oldQuality, starIndex);
needFragment += (curDicHeroStar?.advanceUpFragmentNum || 0) * (ABI_STAGE.END - oldStarStage);
}
}
if (curItemCount < needFragment) return;
// 计算升品
if (oldQuality < HERO_GROW_MAX.QUALITY) {
for (let qualityIndex = oldQuality; qualityIndex < HERO_GROW_MAX.QUALITY; qualityIndex++) {
const curDicHeroQualityUp = gameData.heroQualityUp.get(qualityIndex);
needFragment += curDicHeroQualityUp?.fragmentNum || 0
}
}
if (curItemCount < needFragment) return;
// 计算觉醒升6彩
if (oldColorStar < HERO_GROW_MAX.COLORSTAR) {
for (let colorStarIndex = oldColorStar; colorStarIndex < 6; colorStarIndex++) {
const curDicHeroStar = getHeroWakeByQuality(dicJob.job_class, dicHero.quality, colorStarIndex)
if (colorStarIndex == 0) {
needFragment += curDicHeroStar?.fragmentNum || 0;
continue;
}
needFragment += (curDicHeroStar?.fragmentNum || 0) * (ABI_STAGE.END - oldColorStarStage)
}
}
if (curItemCount < needFragment) return;
return curItemCount - needFragment;
}