✨ feat:将魂碎片出售
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user