✨ feat(宝物): 添加宝物系统
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
import { getRandEelm, } from '../pubUtils/util';
|
||||
import { EPlace, Stone } from "../db/Hero";
|
||||
import { gameData, getJewelConditionByLvAndSeId, getRandEffectByGroupAndLevel } from "../pubUtils/data";
|
||||
import { gameData, getArtifactWithQuality, getDicArtifactLvByPlanId, getDicArtifactQualityByStage, getJewelConditionByLvAndSeId, getNextArtifact, getNextArtifactQuality, getRandEffectByGroupAndLevel } from "../pubUtils/data";
|
||||
import { JewelType, RandSe } from '../db/Jewel';
|
||||
import { DicRandomEffectPool } from '../pubUtils/dictionary/DicRandomEffectPool';
|
||||
import { getJewelRandSe } from './role/rewardService';
|
||||
import { ArtifactModelType } from '../db/Artifact';
|
||||
import { STATUS } from '../consts';
|
||||
import { ItemInter } from '../pubUtils/interface';
|
||||
import { combineItems } from './role/util';
|
||||
|
||||
export function getRandSeResult(id: number, randSe: RandSe[], originSe: RandSe[] = [], originId?: number) {
|
||||
let { randomEffect, effectCount, lv } = gameData.jewel.get(id);
|
||||
@@ -160,4 +164,56 @@ export function isRandSeUnLock(jewelId: number, randSeId: number, stones: Stone[
|
||||
}
|
||||
}
|
||||
return stoneCnt >= dicJewelCondition.stoneCnt && stoneLv >= dicJewelCondition.stoneLv;
|
||||
}
|
||||
|
||||
export function checkArtifactCanCompose(originArtifactId: number, artifact: ArtifactModelType) {
|
||||
if(!artifact) return STATUS.ARTIFACT_IS_NOT_FIND;
|
||||
// 宝物表
|
||||
let dicArtifact = gameData.artifact.get(artifact.artifactId);
|
||||
if(!dicArtifact) return STATUS.ARTIFACT_IS_NOT_FIND;
|
||||
// 宝物品质表
|
||||
let dicArtifactQuality = getDicArtifactQualityByStage(dicArtifact.quality, dicArtifact.qualityStage);
|
||||
if(!dicArtifactQuality) return STATUS.DIC_DATA_NOT_FOUND;
|
||||
// 狗粮不可装备
|
||||
if(artifact.hid > 0) return STATUS.ARTIFACT_IS_EQUIPED;
|
||||
// 狗粮不可强化
|
||||
if(artifact.lv > 0) return STATUS.ARTIFACT_CAN_NOT_STRENGTHEN;
|
||||
|
||||
// 合成目标
|
||||
let dicTargetArtifactQuality = getNextArtifact(originArtifactId);
|
||||
if(!dicTargetArtifactQuality) return STATUS.DIC_DATA_NOT_FOUND;
|
||||
|
||||
// 检查狗粮品质
|
||||
if(dicTargetArtifactQuality.materialId != dicArtifactQuality.uniqId) return STATUS.ARTIFACT_MATERIAL_QUALITY_ERR;
|
||||
// 检查是否同名
|
||||
if(dicTargetArtifactQuality.materialGroup == 1 && dicTargetArtifactQuality.group != dicArtifact.group) return STATUS.ARTIFACT_MATERIAL_QUALITY_ERR;
|
||||
return STATUS.SUCCESS;
|
||||
}
|
||||
|
||||
export function getRebuildConsume(artifacts: ArtifactModelType[]) {
|
||||
let usedConsumes: ItemInter[] = [];
|
||||
for(let artifact of artifacts) {
|
||||
let dicArtifact = getArtifactWithQuality(artifact.artifactId);
|
||||
if(!dicArtifact) continue;
|
||||
if(!hasArtifactStrength(artifact)) continue;
|
||||
|
||||
for(let lv = 1; lv <= artifact.lv; lv++) {
|
||||
let dicArtifactLv = getDicArtifactLvByPlanId(dicArtifact.lvAttrPlan, lv);
|
||||
usedConsumes.push(...dicArtifactLv.consumes);
|
||||
}
|
||||
for(let stage = 0; stage < artifact.qualityStage; stage++) {
|
||||
let dicArtifactQuality = getDicArtifactQualityByStage(dicArtifact.quality, stage);
|
||||
let dicNextArtifactQuality = gameData.artifactQualityById.get(dicArtifactQuality?.nextId);
|
||||
if(!dicNextArtifactQuality) continue;
|
||||
let consumes = dicArtifactQuality.generalItem.map(({id, count}) => ({ id, count: count * dicNextArtifactQuality.materialCnt}));
|
||||
usedConsumes.push(...consumes);
|
||||
}
|
||||
}
|
||||
return combineItems(usedConsumes);
|
||||
}
|
||||
|
||||
// 宝物是否有养成
|
||||
export function hasArtifactStrength(artifact: ArtifactModelType) {
|
||||
if(!artifact) return false;
|
||||
return artifact.lv >= 1 || artifact.qualityStage > 0;
|
||||
}
|
||||
Reference in New Issue
Block a user