pvp:防守得分

This commit is contained in:
luying
2022-05-07 21:56:04 +08:00
parent d1115fb5d0
commit 143aba56b0
3 changed files with 31 additions and 16 deletions

View File

@@ -476,23 +476,32 @@ export async function generPVPOppRecInfo(isSuccess: boolean, curOpp: OppPlayer,
if(!curOpp.isRobot && !isSuccess) {
let pvpDefense = await PvpDefenseModel.findByRoleId(robotIdComBack(curOpp.roleId));
if(pvpDefense && pvpDefense.defense) {
let { attack, defense, heroScores, score } = pvpDefense;
for(let { actorId } of defense.heroes) {
let hs = heroScores.find(cur => cur.hid == actorId);
if(hs) {
hs.score += PVP.PVP_DEFENSE_SUCCESS_REWARD;
} else {
heroScores.push({ hid: actorId, score: PVP.PVP_DEFENSE_SUCCESS_REWARD })
}
addSumScore += PVP.PVP_DEFENSE_SUCCESS_REWARD;
let { attack, defense, heroScores, score, defenseScoreCnt, refDefenseScore } = pvpDefense;
if(shouldRefresh(refDefenseScore, new Date())) {
defenseScoreCnt = 0; refDefenseScore = new Date();
}
console.log('&&&&&', 'addSumScore', addSumScore)
let newAttack = <Attack>calLineupScore(attack, heroScores);
let newDefense = <Defense>calLineupScore(defense, heroScores);
await PvpDefenseModel.updateInfo(oppRole.roleId, { attack: newAttack, defense: newDefense, heroScores, score: score + addSumScore });
if(defenseScoreCnt < PVP.PVP_DEFENSE_SUCCESS_REWARD_MAX_CNT) {
for(let { actorId } of defense.heroes) {
let hs = heroScores.find(cur => cur.hid == actorId);
const dicOpp = gameData.pvpOpponent.get(curOpp.pos);
let addScore = PVP.PVP_DEFENSE_SUCCESS_REWARD - dicOpp.score;
if(hs) {
hs.score += addScore;
} else {
heroScores.push({ hid: actorId, score: addScore })
}
addSumScore += addScore;
}
let newAttack = <Attack>calLineupScore(attack, heroScores);
let newDefense = <Defense>calLineupScore(defense, heroScores);
await PvpDefenseModel.updateInfo(pvpDefense.roleId, { attack: newAttack, defense: newDefense, heroScores, score: score + addSumScore, defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
} else {
await PvpDefenseModel.updateInfo(pvpDefense.roleId, { defenseScoreCnt: defenseScoreCnt + 1, refDefenseScore });
}
}
}

View File

@@ -59,6 +59,11 @@ export default class PvpDefense extends BaseModel {
@prop({ required: true, default: true })
isFirstEntry: boolean;
@prop({ required: true, default: 0 })
defenseScoreCnt: number;
@prop({ required: true })
refDefenseScore: Date;
public static async findByRoleId(roleId: string, getters = false) {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).lean({ getters});
return result;

View File

@@ -36,7 +36,7 @@ export const PVP = {
PVP_SET_ATTACK_FREE_CNT: 2, // pvp每天免费设挑战阵容的次数
PVP_BUY_SET_ATTACK_CNT: 3, // pvp每天可购买的设置挑战阵容的次数
PVP_SET_ATTACK_CNT_GOLD: 100, // pvp收费设置挑战阵容的花费
PVP_DEFENSE_SUCCESS_REWARD: 5, // pvp防守成功积分奖励
PVP_DEFENSE_SUCCESS_REWARD: 20, // pvp防守方赢了应该是用20-攻击方应得的积分,防守方没有连胜
PVP_DEFENSE_SUCCESS_REWARD_MAX_CNT: 5, // 每天防守成功可以获得的奖励次数
PVP_SEASON_REWARD_TIME_BEFORE: 2, // pvp赛季结束几分钟前结算
PVP_SEASON_FORBID_BATTLE_TIME_BEFORE: 3600, // pvp赛季结束前几秒钟禁止挑战队伍
@@ -92,6 +92,7 @@ export const HTTPMANAGE = {
export const CHAT_SYSTEM = {
RECENT_GROUP_MSGS_CNT: 10, // 群消息获取条数
RECENT_PRIVATE_CHATS_CNT: 20, // 最近私聊个数
RECENT_SYSTEM_OPEN: 11, // 聊天开启等级
};
export const GUILDACTIVITY = {
GATEACTIVITY_CHALLENGE_TIMES: 1, // 蛮夷入侵每天可以挑战次的次数