From 207695bf17bd8fc4e2b88887dabd64bc6f25e376 Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 9 Aug 2021 17:07:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BB=E5=AE=9D=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8E=89=E8=90=BD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../battle/handler/comBattleHandler.ts | 16 +++--- game-server/app/services/comBattleService.ts | 57 ++++++++----------- shared/db/ComBattleTeam.ts | 5 +- shared/pubUtils/data.ts | 4 +- shared/pubUtils/dictionary/DicWar.ts | 3 + 5 files changed, 42 insertions(+), 43 deletions(-) diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index 5015758db..5a397bf3e 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -15,7 +15,7 @@ import { RoleStatus, ComBattleTeamModel, ComBattleTeamType, BossHp } from '../.. import { ItemModel, ItemType } from '../../../db/Item'; import { addItems, handleCost } from '../../../services/rewardService'; import { checkRoleInQueue, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService'; -import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, incEquipPrintDrop, randEquipPrintId, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, createComTeamData, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt } from '../../../services/comBattleService'; +import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, createComTeamData, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt } from '../../../services/comBattleService'; import { setAp } from '../../../services/actionPointService'; import { roleLevelup } from '../../../services/normalBattleService'; import { addUserToChannel, getSimpleRoleInfo } from '../../../services/roleService'; @@ -555,13 +555,13 @@ export class ComBattleHandler { return resResult(STATUS.BATTLE_ACTION_POINT_LACK); } - const { dropResult } = await incEquipPrintDrop(roleSt); - if (dropResult) { - const dropEquipId = randEquipPrintId(warInfo); - if (dropEquipId) { - roleSt.fixReward.push({ id: dropEquipId, count: 1 }); - } - } + // const { dropResult } = await incEquipPrintDrop(roleSt); + // if (dropResult) { + // const dropEquipId = randEquipPrintId(warInfo); + // if (dropEquipId) { + // roleSt.fixReward.push({ id: dropEquipId, count: 1 }); + // } + // } await ComBattleTeamModel.updateRewardSt(teamCode, roleId, true); const goods = await addItems(roleId, roleName, sid, roleSt.fixReward); diff --git a/game-server/app/services/comBattleService.ts b/game-server/app/services/comBattleService.ts index 3fa6c9791..e0a4b2b67 100644 --- a/game-server/app/services/comBattleService.ts +++ b/game-server/app/services/comBattleService.ts @@ -124,12 +124,12 @@ export async function checkComBattleDrop(roleId: string, battleCode: string) { } }); if (!roleSt || roleSt.gotReward) return { status: -1, resResult: resResult(STATUS.COM_BATTLE_REWARD_ERR) }; - let fixReward = getRewardByBlueprtId(team.blueprtId); + let { fixReward, teammateReward } = getRewardByBlueprtId(team.blueprtId); if (!roleSt.isCap) { if (roleSt.isFrd) { fixReward = []; } else { - fixReward = ratioReward(fixReward, COM_BTL_CONST.ASSIST_REWARD_RATIO); + fixReward = teammateReward; } } await ComBattleTeamModel.updateRewardSt(team.teamCode, roleId, true); @@ -152,19 +152,12 @@ export function setComBtlTimer(teamCode: string, timer: NodeJS.Timer, timerMap: } export async function getRealReward(blueprtId: number, roleSt: RoleStatus) { - let fixReward = getRewardByBlueprtId(blueprtId); + let { fixReward, teammateReward } = getRewardByBlueprtId(blueprtId); if (!roleSt.isCap) { if (roleSt.isFrd) { - let frdPointRec = await FriendPointModel.getFrdPointRecToday(roleSt.roleId, FRIEND_DROP_TYPE.COM_BATTLE); - if (!frdPointRec || frdPointRec.cnt <= FRIEND_DROP_MAX.COM_BTL - COM_BTL_CONST.FRDCNT_DROP) { - fixReward = [getFriendPointObject(COM_BTL_CONST.FRDCNT_DROP)]; - } else if (frdPointRec.cnt < FRIEND_DROP_MAX.COM_BTL) { - fixReward = [getFriendPointObject(COM_BTL_CONST.FRDCNT_DROP - frdPointRec.cnt)]; - } else { - fixReward = []; - } + fixReward = [] } else { - fixReward = ratioReward(fixReward, COM_BTL_CONST.ASSIST_REWARD_RATIO); + fixReward = teammateReward; } } return fixReward; @@ -428,28 +421,28 @@ function incEquipPrintDropData(roleSt: RoleStatus, dropRec: EquipPrintDropType) return dropResult; } -export async function incEquipPrintDrop(roleSt: RoleStatus) { - const { roleId, roleName } = roleSt; - let dropRec = await EquipPrintDropModel.getByRoleId(roleId); - if (!dropRec) { - dropRec = await EquipPrintDropModel.createDoc(initEquipPrintDropData(roleId, roleName)); - } +// export async function incEquipPrintDrop(roleSt: RoleStatus) { +// const { roleId, roleName } = roleSt; +// let dropRec = await EquipPrintDropModel.getByRoleId(roleId); +// if (!dropRec) { +// dropRec = await EquipPrintDropModel.createDoc(initEquipPrintDropData(roleId, roleName)); +// } - const dropResult = incEquipPrintDropData(roleSt, dropRec); - dropRec = await EquipPrintDropModel.updateDoc(roleId, omit(dropRec, ['_id', 'createdAt', 'updatedAt'])); - return { dropResult, dropRec }; -} +// const dropResult = incEquipPrintDropData(roleSt, dropRec); +// dropRec = await EquipPrintDropModel.updateDoc(roleId, omit(dropRec, ['_id', 'createdAt', 'updatedAt'])); +// return { dropResult, dropRec }; +// } -export function randEquipPrintId(warInfo: DicWar) { - if (!warInfo || !warInfo.jackpotReward) { - return null; - } - const result = getRandEelmWithWeight(warInfo.jackpotReward); - if (!result || !result.dic || !result.dic.id) { - return null; - } - return result.dic.id; -} +// export function randEquipPrintId(warInfo: DicWar) { +// if (!warInfo || !warInfo.jackpotReward) { +// return null; +// } +// const result = getRandEelmWithWeight(warInfo.jackpotReward); +// if (!result || !result.dic || !result.dic.id) { +// return null; +// } +// return result.dic.id; +// } /** * 按照好友关系,新增加成 diff --git a/shared/db/ComBattleTeam.ts b/shared/db/ComBattleTeam.ts index e9da51e3e..071bc4400 100644 --- a/shared/db/ComBattleTeam.ts +++ b/shared/db/ComBattleTeam.ts @@ -48,9 +48,12 @@ export class RoleStatus { // 是否领奖 @prop({ required: true, default: false }) gotReward: boolean; - // 固定奖励 + // 队长奖励 @prop({ required: true, default: [], type: ItemReward }) fixReward: ItemReward[]; + // 队友奖励 + @prop({ required: true, default: [], type: ItemReward }) + teammateReward: ItemReward[]; // 好友间伤害加成 @prop({ required: true, default: 0 }) frdRatio: number = 0; diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index ceb715349..d697b90ba 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -343,8 +343,8 @@ export function getWarByBlueprtId(blueprtId: number) { } export function getRewardByBlueprtId(blueprtId: number) { - let { fixReward } = getWarByBlueprtId(blueprtId); - return fixReward; + let { fixReward, teammateReward } = getWarByBlueprtId(blueprtId); + return { fixReward, teammateReward }; } function parseComBtlLvRange() { diff --git a/shared/pubUtils/dictionary/DicWar.ts b/shared/pubUtils/dictionary/DicWar.ts index 5616cae01..50c80dbc8 100644 --- a/shared/pubUtils/dictionary/DicWar.ts +++ b/shared/pubUtils/dictionary/DicWar.ts @@ -32,6 +32,8 @@ export interface DicWar { readonly dispatchJsonId: number; // 寻宝奖励 readonly jackpotReward: Array<{id: number, weight: number}>; + // 寻宝队友奖励 + readonly teammateReward: Array<{id: number, count: number}>; } export const dicWar = new Map(); @@ -48,6 +50,7 @@ export function loadWar() { o.parseRandomReward = parseRandomReward(o.parseRandomReward); o.detailUIBg = parseDetailUIBg(o.detailUIBg); o.jackpotReward = parseJackpotReward(o.jackpotReward); + o.teammateReward = parseFixReward(o.teammateReward); dicWar.set(o.war_id, o); if(o.warType == WAR_TYPE.PVP) {