寻宝掉落

This commit is contained in:
liangtongchuan
2020-12-02 00:16:07 +08:00
parent 15cf434d73
commit cdd889f1aa
9 changed files with 116 additions and 13 deletions
@@ -2,7 +2,7 @@
* @Author: 梁桐川
* @Date: 2020-11-30 15:05:48
* @Last Modified by: 梁桐川
* @Last Modified time: 2020-12-01 21:11:33
* @Last Modified time: 2020-12-02 00:13:35
*/
import { COM_BATTLE_ASSIST_TIME, COM_BATTLE_ROBOT_ROUND_LMT, COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, COM_TEAM_STATUS } from './../../../consts/consts';
import { IT_TYPE, GOLD_COST_RATIO, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_BATTLE_CAP_TIME, COM_BATTLE_TIME_LMT } from './../../../consts/consts';
@@ -267,7 +267,7 @@ export class ComBattleHandler {
return resResult(STATUS.COM_BATTLE_CE_LIMIT);
}
let teams = await ComBattleTeamModel.getTeamByRoleAndTime(roleId, [teamStatus.quality], new Date(new Date().setHours(0, 0, 0, 0)), true);
let teams = await ComBattleTeamModel.getAssistTeamsByTime(roleId, [teamStatus.quality], new Date(new Date().setHours(0, 0, 0, 0)), true);
if (teams.length >= assistanceTime) resResult(STATUS.COM_BATTLE_ASSIST_NOT_ENOUGH);
// 加入队伍
@@ -314,7 +314,7 @@ export class ComBattleHandler {
*/
async getAssistCnt(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let teams = await ComBattleTeamModel.getTeamByRoleAndTime(roleId, null, new Date(new Date().setHours(0, 0, 0, 0)), true);
let teams = await ComBattleTeamModel.getAssistTeamsByTime(roleId, null, new Date(new Date().setHours(0, 0, 0, 0)), true);
let cnt = [0, 0, 0, 0, 0];
teams.forEach(team => {
if (team && team.quality) {
@@ -359,18 +359,19 @@ export class ComBattleHandler {
* @returns
* @memberof ComBattleHandler
*/
async setupHeroes(msg: {teamCode: string, heroes: Array<number>}, session: BackendSession) {
async setupHeroes(msg: {teamCode: string, heroes: Array<number>, battleCode: string}, session: BackendSession) {
let roleId = session.get('roleId');
let { teamCode, heroes } = msg;
let { teamCode, heroes, battleCode } = msg;
let teamStatus = this.teamMap.get(teamCode);
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
let team = await ComBattleTeamModel.updateHeroes(teamCode, roleId, heroes);
let team = await ComBattleTeamModel.setupBattleInfo(teamCode, roleId, heroes, battleCode);
if (!team) return resResult(STATUS.COM_BATTLE_UPDATE_HEROES_ERR);
teamStatus.roleStatus.forEach(st => {
if (st && st.roleId === roleId) {
st.heroes = heroes;
st.battleCode = battleCode;
}
});
@@ -562,7 +563,18 @@ export class ComBattleHandler {
let result = battleSt === COM_TEAM_STATUS.WIN;
let team = await ComBattleTeamModel.syncTeamData({teamCode, status: battleSt, roleStatus: teamStatus.roleStatus});
if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR);
channel.pushMessage('onTeamComplete', {teamCode, result});
let battleCode = 'default';
teamStatus.roleStatus.forEach(st => {
if (st.roleId === roleId) {
battleCode = st.battleCode;
}
});
// 战斗胜利扣减藏宝图
if (result) {
let res = await ItemModel.decreaseItems(roleId, [{id: teamStatus.blueprtId, count: 1}]);
if (!res) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_ENOUGH);
}
channel.pushMessage('onTeamComplete', {teamCode, battleCode, result});
}
return resResult(STATUS.SUCCESS);
}
@@ -17,6 +17,7 @@ import { RScriptRecordModel } from '../../../db/RScriptRecord';
import { updateWarStar, checkBattleHeroes, roleLevelup } from '../../../services/normalBattleService';
import { checkDungeonNum, checkDungeonAndIncrease } from '../../../services/dungeonService';
import { switchOnFunc } from '../../../services/funcSwitchService';
import { checkComBattleDrop } from '../../../services/comBattleService';
export default function(app: Application) {
return new NormalBattleHandler(app);
@@ -219,6 +220,15 @@ export class NormalBattleHandler {
return checkResult.resResult;
}
dungeonNum = Object.assign(dungeonNum, checkResult.data)
} else if (warInfo.warType == WAR_TYPE.WARLOARDS) {
let checkResult = await checkComBattleDrop(roleId, battleCode);
if (checkResult.status === -1) {
return checkResult.resResult;
}
// 寻宝会根据是否队长重新计算掉落
if (checkResult.fixReward) {
warReward.resetFixReward(checkResult.fixReward);
}
}
if(isSuccess) { // 挑战胜利
+27 -3
View File
@@ -1,7 +1,8 @@
import { STATUS } from './../consts/statusCode';
import { COM_BATTLE_ROBOT_ID_NAME, COM_BATTLE_ROBOT_CE_RATIO, COM_BATTLE_ROBOT_ROUND_LMT, COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, COM_TEAM_STATUS } from './../consts/consts';
import { RoleStatus } from './../db/ComBattleTeam';
import { getBluePrtByQuality } from "../pubUtils/gamedata";
import { getRandEelm, getRandValue } from "../pubUtils/util";
import { RoleStatus, ComBattleTeamModel } from './../db/ComBattleTeam';
import { getBluePrtByQuality, getRewardByBlueprtId } from "../pubUtils/gamedata";
import { getRandEelm, getRandValue, resResult, ratioReward } from "../pubUtils/util";
import { getRandRobot } from "./battleService";
/**
@@ -70,4 +71,27 @@ export function checkComBattleResult(teamStatus) {
}
}
return COM_TEAM_STATUS.FIGHTING;
}
export async function checkComBattleDrop(roleId: string, battleCode: string) {
let team = await ComBattleTeamModel.getTeamByRoleAndBattleCode(roleId, battleCode);
if (team.status !== COM_TEAM_STATUS.WIN) return { status: -1, resResult: resResult(STATUS.COM_BATTLE_REWARD_ERR) };
let roleSt = null;
team.roleStatus.forEach(st => {
if (st.roleId === roleId) {
roleSt = st;
}
});
if (!roleSt || roleSt.gotReward) return { status: -1, resResult: resResult(STATUS.COM_BATTLE_REWARD_ERR) };
let fixReward = getRewardByBlueprtId(team.blueprtId);
if (!roleSt.isCap) {
if (roleSt.isFrd) {
fixReward = '&';
// TODO: 消耗品情谊点添加
} else {
fixReward = ratioReward(fixReward, COM_BATTLE_ROBOT_HURT_CH_RATIO);
}
}
await ComBattleTeamModel.updateRewardSt(roleId, battleCode, true);
return {status: 0, fixReward};
}
@@ -55,6 +55,10 @@ export class WarReward {
}
}
public resetFixReward(reward: string) {
this.fixReward = reward;
}
public setConditionReward(reward: string) {
let str = this.conditionReward;
let last = str.substr(str.length-1, 1);