diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index e3b96e34b..0cccbdcc8 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -3,7 +3,7 @@ import { handleCost, addItems, unlockFigure, createHero } from '../../../service import { calPlayerCeAndSave, calAllHeroCe } from '../../../services/playerCeService'; import { resResult, deepCopy } from '../../../pubUtils/util'; import { STATUS } from '../../../consts/statusCode'; -import { HeroModel, Connect } from '../../../db/Hero'; +import { HeroModel, Connect, HeroSkin } from '../../../db/Hero'; import { CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ABI_STAGE, DEBUG_MAGIC_WORD, HERO_INITIAL_QUALITY, REDIS_KEY, TASK_TYPE } from '../../../consts'; import { RoleModel } from '../../../db/Role'; import { ItemModel } from '../../../db/Item'; @@ -15,6 +15,7 @@ import { calculatetopLineup } from '../../../pubUtils/playerCe'; import { PvpDefenseModel } from '../../../db/PvpDefense'; import { checkTaskWithHero, checkTask, checkActivityTask } from '../../../services/taskService'; import { addSkin } from '../../../pubUtils/itemUtils'; +import Skin from '../../../db/Skin'; export default function (app: Application) { return new HeroHandler(app); @@ -605,28 +606,28 @@ export class HeroHandler { let hero = await HeroModel.findByHidAndRole(skinInfo.actorId, roleId); if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let heroSkins = deepCopy(hero.skins); - + let newHeroSkins: HeroSkin[] = []; let result = false; let lastSkinId: number; - for (let skin of heroSkins) { + for (let skin of hero.skins) { if (skin.id == id) { if (!!skin.enable) { return resResult(STATUS.HERO_SKIN_IS_EQUIPED); } - skin.enable = true; + newHeroSkins.push({...skin, enable: true}); result = true; } else { if (!!skin.enable) { lastSkinId = skin.id; } - skin.enable = false; + + newHeroSkins.push({...skin, enable: false}); } } if (!result) { return resResult(STATUS.HERO_SKIN_NOT_FIND); } - hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: heroSkins }, [id, lastSkinId]); + hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: newHeroSkins }, [id, lastSkinId]); return resResult(STATUS.SUCCESS, { curHero: { hid: hero.hid, skins: hero.skins } }); } }