From 0ac40d166057d1cd36114d836f907db69b6c7690 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 19 Jul 2022 17:13:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E6=99=B6=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=A8=80=E6=9C=89=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/role/calCe.ts | 3 +++ .../app/services/role/rewardService.ts | 8 ++++++-- shared/db/Jewel.ts | 20 +++++++++++-------- shared/domain/roleField/hero.ts | 4 +++- shared/pubUtils/dictionary/DicJewel.ts | 3 +++ 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/game-server/app/services/role/calCe.ts b/game-server/app/services/role/calCe.ts index 1f9409dfb..f100ffd44 100644 --- a/game-server/app/services/role/calCe.ts +++ b/game-server/app/services/role/calCe.ts @@ -374,6 +374,9 @@ export class CalCe { seids.push(seid, rand); } } + for(let { seid, rand } of jewel.rareSe) { + seids.push(seid, rand); + } } let { ratioUp } = this.addSeidEffect(seids); let map = new Map(); // attrId => val diff --git a/game-server/app/services/role/rewardService.ts b/game-server/app/services/role/rewardService.ts index 76e0a41f9..33ca87f57 100644 --- a/game-server/app/services/role/rewardService.ts +++ b/game-server/app/services/role/rewardService.ts @@ -397,16 +397,20 @@ export async function addJewels(roleId: string, roleName: string, jewels: { id: export async function getAddJewelInfo(roleId: string, roleName: string, jewel: { id: number, }) { let { id, } = jewel; - let { name, randomEffect, effectCount } = gameData.jewel.get(id); + let { name, randomEffect, effectCount, rareEffect } = gameData.jewel.get(id); // 随机属性 let randomResult: number[] = getRandEelm(randomEffect, effectCount); + let rareResult: number[] = getRandEelm(rareEffect, 1); let randSe: Array = randomResult.map((id: number, index: number) => { return getJewelRandSe(index + 1, id); }); + let rareSe: Array = rareResult.map((id: number, index: number) => { + return getJewelRandSe(index + 1, id); + }); - return { roleId, roleName, id, name, randSe }; + return { roleId, roleName, id, name, randSe, rareSe }; } /** diff --git a/shared/db/Jewel.ts b/shared/db/Jewel.ts index 88aeb2c31..ac38b55cb 100644 --- a/shared/db/Jewel.ts +++ b/shared/db/Jewel.ts @@ -8,13 +8,22 @@ import { CounterModel } from './Counter'; import { COUNTER } from '../consts'; import { HeroModel } from './Hero'; -export class RandSe { +export class JewelSe { @prop({ required: true }) id: number; // 随机属性位置id @prop({ required: true }) seid: number; // 随机属性池id @prop({ required: true }) rand: number; // 随机属性内需要随机的值 + + constructor(id: number, seid: number, rand: number) { + this.id = id; + this.seid = seid; + this.rand = rand; + } +} + +export class RandSe extends JewelSe { @prop({ required: true }) preRand?: number; // 淬炼失败的是随机出的值 @prop({ required: true }) @@ -24,13 +33,6 @@ export class RandSe { quenched: boolean = false; // 是否淬炼了 @prop({ required: false, default: 0 }) quenchCnt: number = 0; // 淬炼次数 - - constructor(id: number, seid: number, rand: number) { - this.id = id; - this.seid = seid; - this.rand = rand; - } - } @index({ roleId: 1, hid: 1, id: 1 }) @@ -54,6 +56,8 @@ export default class Jewel extends BaseModel { @prop({ required: false, default: 0 }) ePlaceId: number; // 武将装备的部位 + @prop({ required: false, type: JewelSe, default: [], _id: false }) + rareSe: JewelSe[]; // 强化随机属性 @prop({ required: false, type: RandSe, default: [], _id: false }) randSe: RandSe[]; // 强化随机属性 @prop({ required: false, type: RandSe, default: [], _id: false }) diff --git a/shared/domain/roleField/hero.ts b/shared/domain/roleField/hero.ts index fcf3c704a..cb2b442ed 100644 --- a/shared/domain/roleField/hero.ts +++ b/shared/domain/roleField/hero.ts @@ -1,6 +1,6 @@ import { Connect, EPlace, HeroSkin, HeroType, HeroUpdate, Talent } from '../../db/Hero'; -import { JewelType, RandSe } from '../../db/Jewel'; +import { JewelSe, JewelType, RandSe } from '../../db/Jewel'; import { gameData } from '../../pubUtils/data'; export interface CreateHeroParam extends HeroUpdate { hid: number; @@ -104,6 +104,7 @@ export class JewelParam { ePlaceId: number; // 装备在哪个位置 randSe: RandSe[]; + rareSe: JewelSe[]; count: number; inc: number; reason: number; @@ -115,6 +116,7 @@ export class JewelParam { this.hid = jewel.hid; this.ePlaceId = jewel.ePlaceId; this.randSe = jewel.randSe; + this.rareSe = jewel.rareSe; if(isPush) { this.count = 1; this.inc = 1; diff --git a/shared/pubUtils/dictionary/DicJewel.ts b/shared/pubUtils/dictionary/DicJewel.ts index 91255cd4e..41b021eb3 100644 --- a/shared/pubUtils/dictionary/DicJewel.ts +++ b/shared/pubUtils/dictionary/DicJewel.ts @@ -20,6 +20,8 @@ export interface DicJewel { readonly effectCount: number; // 套装效果 readonly randomEffect: number[]; + // 稀有属性 + readonly rareEffect: number[]; // 对应藏宝图id readonly mapGoodId: number; // 淬炼消耗 @@ -40,6 +42,7 @@ export function loadJewel() { arr.forEach(o => { o.randomEffect = parseNumberList(o.randomEffect); + o.rareEffect = parseNumberList(o.rareEffect); o.quenchConsume = parseGoodStr(o.quenchConsume); o.inheritConsume = parseGoodStr(o.inheritConsume); dicJewel.set(o.good_id, o);