diff --git a/game-server/app/servers/gm/handler/gmRoleHandler.ts b/game-server/app/servers/gm/handler/gmRoleHandler.ts index 552ccd9b8..e09fc0716 100644 --- a/game-server/app/servers/gm/handler/gmRoleHandler.ts +++ b/game-server/app/servers/gm/handler/gmRoleHandler.ts @@ -26,6 +26,7 @@ import { RScriptRecordModel } from '../../../db/RScriptRecord'; import { DicWar } from '../../../pubUtils/dictionary/DicWar'; import { SchoolModel } from '../../../db/School'; import { JewelModel } from '../../../db/Jewel'; +import { RoleCeModel } from '../../../db/RoleCe'; let timer: NodeJS.Timer; export default function (app: Application) { @@ -121,6 +122,7 @@ export class GmRoleHandler { await SkinModel.deleteByHero(roleId, hid); let role = await RoleModel.findByRoleId(roleId); await PvpDefenseModel.deleteHero(roleId, hid); + await RoleCeModel.deleteHero(roleId, hid); await RoleModel.updateRoleInfo(roleId, { topLineup: role.topLineup.filter(cur => cur.hid != hid), topLineupCe: role.topLineupCe - hero.ce, ce: role.ce - hero.ce }); return resResult(STATUS.SUCCESS); diff --git a/shared/db/RoleCe.ts b/shared/db/RoleCe.ts index 38a27f1b7..0f328e39b 100644 --- a/shared/db/RoleCe.ts +++ b/shared/db/RoleCe.ts @@ -1,5 +1,6 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; +import { isArray } from 'underscore'; // 全局加成 export class AttrCell { @@ -117,6 +118,19 @@ export default class RoleCe extends BaseModel { let result: RoleCeType = await RoleCeModel.findOneAndUpdate({ roleId }, { $set: update }, { new: true, upsert: true }).lean(); return result; } + + public static async deleteHero(roleId: string, hid: number) { + let roleCe: RoleCeType = await RoleCeModel.findByRoleId(roleId); + return await RoleCeModel.updateRoleCe(roleId, this.filterHid(roleCe, hid, ['heroAttrs', 'equipAttrs', 'schoolAttrs', 'scrollAttrs'])); + } + + private static filterHid(roleCe: RoleCeType, hid: number, fields: string[]) { + let update: RoleCeUpdate = {}; + for(let field of fields) { + if(roleCe[field] && isArray(roleCe[field])) update[field] = roleCe[field].filter(cur => cur.hid != hid); + } + return update; + } } export const RoleCeModel = getModelForClass(RoleCe);