✨ feat(共鸣系统): 添加最强6人推送,不可养成拦截
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Application, BackendSession, HandlerService, } from 'pinus';
|
||||
import { getJewelDataMap, getResonanceDataMap, getStartLimt, refreshResonanceData } from '../../../services/role/resonanceService';
|
||||
import { getInitEplace, getJewelDataMap, getResonanceDataMap, refreshResonanceData } from '../../../services/role/resonanceService';
|
||||
import { resResult } from '../../../pubUtils/util'
|
||||
import { HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, STATUS } from '../../../consts';
|
||||
import { HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, LINEUP_NUM, RESONANCE, STATUS } from '../../../consts';
|
||||
import { ResonanceModel } from '../../../db/Resonance';
|
||||
import { gameData } from '../../../pubUtils/data';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
@@ -12,8 +12,6 @@ import { calculateCeWithHero } from '../../../services/playerCeService';
|
||||
import { HeroParam } from '../../../domain/roleField/hero';
|
||||
import { pick } from 'underscore';
|
||||
import { ResonanceHistoryModel } from '../../../db/ResonanceHistory';
|
||||
import { RESONANCE } from '../../../pubUtils/dicParam';
|
||||
;
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -29,7 +27,7 @@ export class HeroHandler {
|
||||
const sid: string = session.get('sid');
|
||||
const serverId: number = session.get('serverId');
|
||||
|
||||
if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
// if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
const resonances = await refreshResonanceData(roleId, serverId, sid);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { resonanceDatas: resonances })
|
||||
@@ -40,7 +38,7 @@ export class HeroHandler {
|
||||
const roleId: string = session.get('roleId');
|
||||
const sid: string = session.get('sid');
|
||||
|
||||
if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
// if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
|
||||
let dbResonance = await ResonanceModel.findByPosition(roleId, position);
|
||||
if (dbResonance) return resResult(STATUS.RESONANCE_POSITION_LOCK);
|
||||
@@ -67,10 +65,10 @@ export class HeroHandler {
|
||||
const sid: string = session.get('sid');
|
||||
const serverId: number = session.get('serverId');
|
||||
|
||||
if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
// if (!await getStartLimt(roleId)) return resResult(STATUS.RESONANCE_NO_START);
|
||||
let { dbResonanceMap } = await getResonanceDataMap(roleId);
|
||||
let heroCount = await HeroModel.getHidCountByRoleId(roleId);
|
||||
if (dbResonanceMap.size + RESONANCE.HOSTER >= heroCount) return resResult(STATUS.RESONANCE_PUT_NOT_POSITION)
|
||||
let dbRole = await RoleModel.findByRoleId(roleId);
|
||||
if (dbResonanceMap.size + LINEUP_NUM >= (dbRole?.heroNum || 0)) return resResult(STATUS.RESONANCE_PUT_NOT_POSITION)
|
||||
|
||||
let dbResonance = await ResonanceModel.findByPosition(roleId, position);
|
||||
if (!dbResonance) return resResult(STATUS.RESONANCE_POSITION_UNLOCK);
|
||||
@@ -86,7 +84,7 @@ export class HeroHandler {
|
||||
if (jobStage) return resResult(STATUS.RESONANCE_PUT_POSITION_EXIST_JOBSTAGE);
|
||||
if (skins.find(cur => (cur?.usedTalentPoint || 0) > 0)) return resResult(STATUS.RESONANCE_PUT_POSITION_EXIST_TALENT);
|
||||
if (connections.length > 0) return resResult(STATUS.RESONANCE_PUT_POSITION_EXIST_CONNECT);
|
||||
if (ePlace.length > 0) return resResult(STATUS.RESONANCE_PUT_POSITION_EXIST_EQUIP);
|
||||
if (ePlace.length > 0) return resResult(STATUS.RESONANCE_PUT_POSITION_EXIST_EQUIP); //TODO
|
||||
|
||||
let result = await ResonanceModel.updateByPosition(roleId, position, { hid, seqId, lv, exp, jobStage, skinId, skins, connections, ePlace, ce });
|
||||
if (!result) return resResult(STATUS.RESONANCE_PUT_POSITION_FAIL);
|
||||
@@ -118,6 +116,19 @@ export class HeroHandler {
|
||||
obj.usedTalentPoint = newSkin.usedTalentPoint;
|
||||
}
|
||||
}
|
||||
for (let obj of dbHero.ePlace) {
|
||||
let tempEPlace = ePlace.find(cur => cur.id == obj.id);
|
||||
if (!tempEPlace && (!RESONANCE.JEWEL || !RESONANCE.STONE) && (obj.jewel || obj.stones.find(cur => cur.stone != 0))) {
|
||||
ePlace.push({ ...await getInitEplace(obj.id, skinId) });
|
||||
tempEPlace = ePlace.find(cur => cur.id == obj.id);
|
||||
}
|
||||
if (!RESONANCE.JEWEL && obj.jewel) {
|
||||
tempEPlace.jewel = obj.jewel;
|
||||
}
|
||||
if (!RESONANCE.STONE && obj.stones.find(cur => cur.stone != 0)) {
|
||||
tempEPlace.stones = obj.stones;
|
||||
}
|
||||
}
|
||||
let heroResult = await HeroModel.updateHeroInfo(roleId, hid, { lv, exp, jobStage, skinId, skins: dbHero.skins, connections, ePlace });
|
||||
if (!heroResult) return resResult(STATUS.RESONANCE_OFF_POSITION_FAIL);
|
||||
|
||||
@@ -134,7 +145,7 @@ export class HeroHandler {
|
||||
await ResonanceModel.deletePosition(roleId, position);
|
||||
let result = await ResonanceModel.updateByPosition(roleId, position, {});
|
||||
if (!result || result.hid) return resResult(STATUS.RESONANCE_OFF_POSITION_FAIL);
|
||||
await ResonanceHistoryModel.updateByPosition(roleId, position, { ...dbResonance, time: new Date() });
|
||||
await ResonanceHistoryModel.updateByPosition(roleId, position, { ...dbResonance });
|
||||
|
||||
const resonances = await refreshResonanceData(roleId, serverId, sid);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user