✨ feat(gvg): 定时器
This commit is contained in:
@@ -8,7 +8,7 @@ import { Application, BackendSession, ChannelService, HandlerService } from "pin
|
||||
import { resResult, genCode } from "../../../pubUtils/util";
|
||||
import { GVGLeagueModel } from '../../../db/GVGLeague';
|
||||
import { checkGVGPeriod, getGroupIdOfServer, getGVGConfig, getGVGPeriodData, getGVGServerType } from '../../../services/gvg/gvgService';
|
||||
import { calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBirthAreaOfCity, getGVGWarId, getOppHeroes, initRobots, teamBreak } from '../../../services/gvg/gvgBattleService';
|
||||
import { addBattleRankScore, calBattleScoreByCe, checkAreaIsInCity, checkGVGBattleStart, checkMoveStatus, getBattleRanks, getBirthAreaOfCity, getGVGWarId, getOppHeroes, initRobots, teamBreak } from '../../../services/gvg/gvgBattleService';
|
||||
import { getGVGBattleData } from '../../../services/gvg/gvgBattleMemory';
|
||||
import { nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { GVGBattleRecModel } from '../../../db/GVGBattleRec';
|
||||
@@ -23,7 +23,7 @@ import { sendMessageToUserWithSuc } from '../../../services/pushService';
|
||||
import { GVGHeroInfo } from '../../../domain/dbGeneral';
|
||||
import { ArtifactModel } from '../../../db/Artifact';
|
||||
import { getHeroesAttributes } from '../../../services/playerCeService';
|
||||
import { gvgBattleStartSchedule } from '../../../services/timeTaskService';
|
||||
import { gvgBattleEndSchedule, gvgBattleStartSchedule } from '../../../services/timeTaskService';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -204,10 +204,11 @@ export class GVGBattleHandler {
|
||||
|
||||
const recs = await GVGRecModel.findByCity(cityId, configId);
|
||||
const teamResult = teams.map(team => new MyTeamInfo(team));
|
||||
const { ranks, myRank } = await getBattleRanks(configId, groupId, serverType, cityId, myLeague);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
cityId,
|
||||
ranks: [], // ! redis 中积分排行榜
|
||||
ranks, myRank,
|
||||
recs,
|
||||
teams: teamResult,
|
||||
});
|
||||
@@ -450,18 +451,15 @@ export class GVGBattleHandler {
|
||||
|
||||
// 计算并更新两支队伍耐久
|
||||
let { win, fail } = gameData.gvgBattleDurabilityMinus;
|
||||
attackTeam = await GVGTeamModel.battleEndAttack(attackTeam.teamCode, isSuccess? -win: -fail, calBattleScoreByCe(isSuccess, attackTeam.lineupCe));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(defenseTeam.teamCode, isSuccess? -fail: -win, calBattleScoreByCe(isSuccess, defenseTeam.lineupCe));
|
||||
|
||||
if(attackTeam.durability <= 0) {
|
||||
attackTeam = await teamBreak(city, attackTeam);
|
||||
}
|
||||
if(defenseTeam.durability <= 0) {
|
||||
if(defenseTeam.pointId > 0 && attackTeam.durability > 0) { // 打败的对手原来占领着一个位置,现在这个位置是你的了
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.pointId);
|
||||
}
|
||||
defenseTeam = await teamBreak(city, defenseTeam);
|
||||
let attackScore = calBattleScoreByCe(isSuccess, attackTeam.lineupCe);
|
||||
let defenseScore = calBattleScoreByCe(!isSuccess, defenseTeam.lineupCe);
|
||||
attackTeam = await GVGTeamModel.battleEndAttack(attackTeam.teamCode, isSuccess? -win: -fail, attackScore, getBirthAreaOfCity(city, attackTeam.leagueCode));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(defenseTeam.teamCode, isSuccess? -fail: -win, defenseScore, getBirthAreaOfCity(city, defenseTeam.leagueCode));
|
||||
if(defenseTeam.curTeamBreak && defenseTeam.originPointId > 0 && !attackTeam.curTeamBreak) { // 打败的对手原来占领着一个位置,现在这个位置是你的了
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
|
||||
}
|
||||
await addBattleRankScore(attackTeam, attackScore);
|
||||
await addBattleRankScore(defenseTeam, defenseScore);
|
||||
|
||||
// 更新内存
|
||||
let teamObj = getGVGBattleData(groupId, serverType);
|
||||
@@ -513,5 +511,11 @@ export class GVGBattleHandler {
|
||||
|
||||
async debugStartSchedule() {
|
||||
await gvgBattleStartSchedule();
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
async debugEndSchedule() {
|
||||
await gvgBattleEndSchedule();
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,10 +357,6 @@ export class GVGHandler {
|
||||
if (!!res.err) return resResult(STATUS.REDLOCK_ERR);
|
||||
|
||||
let leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||
if(!leaguePrepare || leaguePrepare.lv < dicTech.levelLimit) {
|
||||
res.releaseCallback();
|
||||
return resResult(STATUS.GVG_TECH_LV_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
if(checkTechIsIng(techId, leaguePrepare?.activeTech||[], leaguePrepare?.techQueue||[])) {
|
||||
res.releaseCallback();
|
||||
@@ -409,6 +405,9 @@ export class GVGHandler {
|
||||
if(!checkTechIsIng(techId, [], leaguePrepare?.techQueue||[])) {
|
||||
return resResult(STATUS.GVG_TECH_NOT_QUEUE);
|
||||
}
|
||||
if(!leaguePrepare || leaguePrepare.lv < dicTech.levelLimit) {
|
||||
return resResult(STATUS.GVG_TECH_LV_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
// 扣战功
|
||||
const costResult = await handleGVGCost(roleId, myLeague.leagueCode, sid, [{ id: GVG_ITEM.BATTLE_FEAT, count: battleFeats }], [], ITEM_CHANGE_REASON.GVG_ACTIVE_TECH);
|
||||
|
||||
Reference in New Issue
Block a user