寻宝:修改掉落逻辑
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 按照好友关系,新增加成
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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<number, DicWar>();
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user