🐞 fix(gvg): 修复防御cd,积分点驻守变更
This commit is contained in:
@@ -478,7 +478,7 @@ export class GVGBattleHandler {
|
||||
// 计算并更新两支队伍耐久
|
||||
let { win, fail } = gameData.gvgBattleDurabilityMinus;
|
||||
attackTeam = await GVGTeamModel.battleEndAttack(attackTeam.teamCode, isSuccess? -win: -fail, getBirthAreaOfCity(city, attackTeam.leagueCode), await getTechReviveMinus(groupKey, configId, attackTeam.leagueCode));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(defenseTeam.teamCode, isSuccess? -fail: -win, getBirthAreaOfCity(city, defenseTeam.leagueCode), await getTechReviveMinus(groupKey, configId, defenseTeam.leagueCode));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(defenseTeam.teamCode, isSuccess? -fail: -win, getBirthAreaOfCity(city, defenseTeam.leagueCode), GVG.GVG_DEFAULT_DEFENSE_CD, await getTechReviveMinus(groupKey, configId, defenseTeam.leagueCode));
|
||||
if(defenseTeam.curTeamBreak && defenseTeam.originPointId > 0 && !defenseTeam.isCatapult) { // 打败的对手原来占领着一个位置,现在这个位置是你的了
|
||||
if(!attackTeam.curTeamBreak) {
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
|
||||
@@ -536,7 +536,7 @@ export class GVGBattleHandler {
|
||||
if (!city) return resResult(STATUS.GVG_CITY_NOT_FOUND);
|
||||
|
||||
let hurt = await getTechKnifeHurt(configId, attackTeam.leagueCode);
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(oppoTeamCode, -hurt, getBirthAreaOfCity(city, defenseTeam.leagueCode), await getTechReviveMinus(groupKey, configId, defenseTeam.leagueCode));
|
||||
defenseTeam = await GVGTeamModel.battleEndDefense(oppoTeamCode, -hurt, getBirthAreaOfCity(city, defenseTeam.leagueCode), 0, await getTechReviveMinus(groupKey, configId, defenseTeam.leagueCode));
|
||||
if(defenseTeam.curTeamBreak && defenseTeam.originPointId > 0 && !defenseTeam.isCatapult) { // 打败的对手原来占领着一个位置,现在这个位置是你的了
|
||||
if(!attackTeam.curTeamBreak) {
|
||||
attackTeam = await GVGTeamModel.settlePoint(attackTeam.teamCode, defenseTeam.originPointId);
|
||||
|
||||
@@ -106,7 +106,7 @@ export function checkMoveStatus(team: GVGTeamType, cityId: number, areaId: numbe
|
||||
if(team.pointId > 0) return STATUS.GVG_BATTLE_TEAM_IS_SELLTED;
|
||||
if(team.stopMoveTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING;
|
||||
if(team.moveCdTime > nowSeconds()) return STATUS.GVG_BATTLE_IS_MOVING_CD;
|
||||
if(team.lockTime > nowSeconds()) return STATUS.GVG_TEAM_DEFENSEING;
|
||||
if(team.lockTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_LOCK;
|
||||
if(team.restartTime > nowSeconds()) return STATUS.GVG_BATTLE_TEAM_REVIVE;
|
||||
let dicArea = gameData.gvgArea.get(areaId);
|
||||
if(!dicArea) return STATUS.DIC_DATA_NOT_FOUND;
|
||||
@@ -663,7 +663,7 @@ export async function pushTeamBeHurtMessage(team: GVGTeamType, replaceTeam?: GVG
|
||||
|
||||
if(team.curTeamBreak && team.originPointId > 0) {
|
||||
await sendMessageToGVGAreaByTeamWithSuc(team.groupKey, team.fromAreaId, PUSH_ROUTE.GVG_AREA_POINT_CHANGE, {
|
||||
cityId: team.cityId, areaId: team.fromAreaId, targetPointId: team.originPointId, originPointId: replaceTeam?.originPointId??0, point: new GVGTeamInListOnPoint(team.originPointId, replaceTeam && !replaceTeam.curTeamBreak, replaceTeam)
|
||||
cityId: team.cityId, areaId: team.fromAreaId, targetPointId: team.pointId, originPointId: team.originPointId, point: new GVGTeamInListOnPoint(team.originPointId, replaceTeam && !replaceTeam.curTeamBreak, replaceTeam)
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ export const STATUS = {
|
||||
GVG_BATTLE_IS_MOVING: { code: 21403, simStr: '编队正在移动中' },
|
||||
GVG_BATTLE_IS_NOT_IN_CITY: { code: 21404, simStr: '编队不在这个城池中' },
|
||||
GVG_TEAM_ATTACKING: { code: 21405, simStr: '您的编队正在攻击冷却中' },
|
||||
GVG_TEAM_DEFENSEING: { code: 21406, simStr: '选择的编队正在防守冷却中' },
|
||||
GVG_TEAM_DEFENSEING: { code: 21406, simStr: '该玩家正在与其他玩家战斗' },
|
||||
GVG_BATTLEREC_NOT_FOUND: { code: 21407, simStr: '未找到该记录' },
|
||||
GVG_AREA_NOT_IN_CITY: { code: 21408, simStr: '选择区域不在这座城池中' },
|
||||
GVG_TEAM_NOT_FOUND: { code: 21409, simStr: '未找到这个队伍' },
|
||||
@@ -385,7 +385,7 @@ export const STATUS = {
|
||||
GVG_TEAM_NOT_NEED_REVIVE: { code: 21418, simStr: '此队伍不需要复活' },
|
||||
GVG_BATTLE_IS_MOVING_CD: { code: 21403, simStr: '移动冷却中' },
|
||||
GVG_BATTLE_TEAM_REVIVE: { code: 21404, simStr: '队伍复活中' },
|
||||
GVG_BATTLE_TEAM_LOCK: { code: 21405, simStr: '您的队伍正在被攻击中' },
|
||||
GVG_BATTLE_TEAM_LOCK: { code: 21405, simStr: '正在有玩家挑战您,请等待' },
|
||||
|
||||
// 通用 30000 - 30099
|
||||
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },
|
||||
|
||||
@@ -4,6 +4,7 @@ import Role, { RoleType } from '../db/Role';
|
||||
import { genCode } from '../pubUtils/util';
|
||||
import { GuildType } from './Guild';
|
||||
import { LEAGUE_AUTH } from '../consts';
|
||||
import { GVG } from '../pubUtils/dicParam';
|
||||
|
||||
class Member {
|
||||
@prop({ required: true })
|
||||
@@ -88,7 +89,7 @@ export default class GVGLeague extends BaseModel {
|
||||
|
||||
public static async findByCondition(type: number, serverIds: number[], page: number, name: string) {
|
||||
let query = {
|
||||
status: 1, type, serverId: { $in: serverIds }
|
||||
status: 1, type, serverId: { $in: serverIds }, guildCnt: { $lt: GVG.GVG_LEAGUE_COMPOSE }
|
||||
};
|
||||
if(name) {
|
||||
query['name'] = { $regex: new RegExp(name, 'i') };
|
||||
|
||||
@@ -273,8 +273,8 @@ export default class GVGTeam extends BaseModel {
|
||||
}
|
||||
|
||||
// 结算防守方
|
||||
public static async battleEndDefense(teamCode: string, hpInc: number, rebirthAreaId: number, reviveCd: number) {
|
||||
let team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { defenseTime: nowSeconds() + GVG.GVG_DEFAULT_DEFENSE_CD, lockTime: 0, lockTeamCode: '' }, $inc: { durability: hpInc } }, { new: true }).lean();
|
||||
public static async battleEndDefense(teamCode: string, hpInc: number, rebirthAreaId: number, defenseCd: number, reviveCd: number) {
|
||||
let team: GVGTeamType = await GVGTeamModel.findOneAndUpdate({ teamCode }, { $set: { defenseTime: nowSeconds() + defenseCd, lockTime: 0, lockTeamCode: '' }, $inc: { durability: hpInc } }, { new: true }).lean();
|
||||
if(team.durability <= 0) {
|
||||
let originPointId = team.pointId;
|
||||
team = await GVGTeamModel.teamBreak(teamCode, team.isRobot, team.maxDurability, rebirthAreaId, team.areaId, reviveCd);
|
||||
|
||||
@@ -702,6 +702,7 @@ export class GVGTeamInList {
|
||||
durability: number; // 耐久
|
||||
maxDurability: number; // 最大耐久
|
||||
restartTime: number;
|
||||
defenseTime: number;
|
||||
curTeamBreak: boolean;
|
||||
|
||||
constructor(team: GVGTeamType) {
|
||||
@@ -720,6 +721,7 @@ export class GVGTeamInList {
|
||||
this.durability = team.durability;
|
||||
this.maxDurability = team.maxDurability;
|
||||
this.restartTime = team.restartTime;
|
||||
this.defenseTime = team.defenseTime;
|
||||
this.curTeamBreak = !!team.curTeamBreak;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -405,7 +405,7 @@ export const GVG = {
|
||||
GVG_DEFAULT_REVIVE_CD: 30, // GVG激战期默认的复活CD
|
||||
GVG_DEFAULT_MOVE_CD: 5, // GVG激战期默认的移动CD
|
||||
GVG_DEFAULT_ATTACK_CD: 5, // GVG激战期默认的攻击CD
|
||||
GVG_DEFAULT_DEFENSE_CD: 2, // GVG激战期默认的防御CD
|
||||
GVG_DEFAULT_DEFENSE_CD: 5, // GVG激战期默认的防御CD
|
||||
GVG_DEFAULT_DURABILITY_MINUS: '5&100', // GVG激战期默认的队伍耐扣除规则,胜&败:num&num
|
||||
GVG_PRODUCE_GAME_RATIO: '1&10|2&20|3&6', // 云台外政中贡献分3种产量分值换算 1:粮食*系数 2:铁矿*系数 3:木材*系数
|
||||
GVG_BATTLE_SCORE: 1000000, // 战力换算积分的除数
|
||||
|
||||
Reference in New Issue
Block a user