feat(共鸣系统): 添加最强6人推送,不可养成拦截

This commit is contained in:
zhangxk
2023-10-09 20:49:24 +08:00
parent ffcdb7c0bc
commit dac8ac07a6
10 changed files with 109 additions and 42 deletions

View File

@@ -1,5 +1,5 @@
import { Application, BackendSession, HandlerService, } from "pinus";
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, TASK_TYPE, CONSUME_TYPE } from "../../../consts";
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, TASK_TYPE, CONSUME_TYPE, RESONANCE } from "../../../consts";
import { ItemInter, RewardInter } from "../../../pubUtils/interface";
import { resResult, parseGoodStr } from "../../../pubUtils/util";
@@ -20,6 +20,7 @@ import { calculateCeWithHero } from "../../../services/playerCeService";
import { ItemModel } from "../../../db/Item";
import { index } from "typegoose";
import { all } from "bluebird";
import { getResonanceDataMap } from "../../../services/role/resonanceService";
export default function (app: Application) {
new HandlerService(app, {});
@@ -80,6 +81,10 @@ export class EquipHandler {
let { hid, ePlaceId, isOneClick } = msg;
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
let oldEplace = hero.ePlace || [];
@@ -126,6 +131,10 @@ export class EquipHandler {
let sid: string = session.get('sid');
let { hid, lv } = msg; // lv: 升到哪一级
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -179,6 +188,10 @@ export class EquipHandler {
let sid: string = session.get('sid');
let { hid, ePlaceId, isOneClick } = msg;
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -250,6 +263,10 @@ export class EquipHandler {
let sid: string = session.get('sid');
let { hid, ePlaceId, isOneClick } = msg;
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -332,6 +349,10 @@ export class EquipHandler {
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid) && RESONANCE.JEWEL) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -387,6 +408,9 @@ export class EquipHandler {
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid) && RESONANCE.JEWEL) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -416,6 +440,9 @@ export class EquipHandler {
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid) && RESONANCE.STONE) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);

View File

@@ -31,6 +31,7 @@ import { PvpSaveDataModel } from '../../../db/PvpSaveData';
import { ArtifactModel } from '../../../db/Artifact';
import { GVGVestigeRankModel } from '../../../db/GVGVestigeRank';
import { GVGTeamModel } from '../../../db/GVGTeam';
import { getResonanceDataMap } from '../../../services/role/resonanceService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -78,6 +79,9 @@ export class HeroHandler {
let { hid, type } = msg;
if(isHeroHidden(hid)) return resResult(STATUS.HERO_IS_HIDDEN);
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let addLv = 0;
if (type == 1) {
addLv = 1;
@@ -440,6 +444,9 @@ export class HeroHandler {
let { hid, shipId, type } = msg;
if(isHeroHidden(hid)) return resResult(STATUS.HERO_IS_HIDDEN);
let { dbResonanceMap } = await getResonanceDataMap(roleId);
if(dbResonanceMap.has(hid)) return resResult(STATUS.RESONANCE__HID_NOT_CAN);
let dicFriendShip = getFriendShipByIdAndLv(hid, shipId, 1);
if(!dicFriendShip) return resResult(STATUS.DIC_DATA_NOT_FOUND);

View File

@@ -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);