feat(稷下学宫): 添加挑战关主动触发随机奖励接口

This commit is contained in:
zhangxk
2023-09-15 15:07:42 +08:00
parent a0abc2baa3
commit ae9642b149
5 changed files with 44 additions and 7 deletions

View File

@@ -1203,6 +1203,32 @@ export class RougeHandler {
});
}
async challengeRandom(msg: { detailCode: string }, session: BackendSession) {
let roleId: string = session.get('roleId');
const { detailCode } = msg;
let dbDetail = await RougelikeRecordDetailModel.findByDetailCode(detailCode);
if (!dbDetail) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
let { gameCode, layer, nodeId, nodeType, rewards = [], challenge } = dbDetail;
if (rewards.length > 0 || nodeType != ROUGE_LIKE_NODE_TYPE.CHALLENGE || (challenge?.status || 0) < 2) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
const dbRecord = await RougelikeRecordModel.findByGameCode(gameCode);
if (!dbRecord) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
const { authorType, type, grade } = dbRecord;
const typeGradeData = gameData.rougeTypeGrade.get(type + '_' + grade);
if (!typeGradeData) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
const layerPlanData = gameData.rougeLayerPlan.get(typeGradeData.layerPlan + '_' + layer);
if (!layerPlanData) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
let result = await getLayerNodeReward(roleId, gameCode, authorType, nodeId, layerPlanData.rewardPlan, layer);
if (!result || !result.rewards) return resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
rewards = result.rewards;
dbDetail = await RougelikeRecordDetailModel.updateByCode(gameCode, detailCode, { $set: { rewards } });
if (!dbDetail || !dbDetail.rewards) resResult(STATUS.ROUGE_CHALLENGE_RANDOM_FAIL);
return resResult(STATUS.SUCCESS, { gameCode, detailCode, rewards: dbDetail.rewards })
}
/**
* debug接口清空科技树
* @param msg

View File

@@ -859,12 +859,12 @@ export async function updateChalleng(dbRecord: RougelikeRecordType, roleId: stri
challenge.status = 2;
//处理在挑战进度完成时再随机奖励
const typeGradeData = gameData.rougeTypeGrade.get(type + '_' + grade);
if (!typeGradeData) continue;
const layerPlanData = gameData.rougeLayerPlan.get(typeGradeData.layerPlan + '_' + layer);
if (!layerPlanData) continue;
let result = await getLayerNodeReward(roleId, gameCode, authorType, nodeId, layerPlanData.rewardPlan, layer);
rewards = result.rewards;
// const typeGradeData = gameData.rougeTypeGrade.get(type + '_' + grade);
// if (!typeGradeData) continue;
// const layerPlanData = gameData.rougeLayerPlan.get(typeGradeData.layerPlan + '_' + layer);
// if (!layerPlanData) continue;
// let result = await getLayerNodeReward(roleId, gameCode, authorType, nodeId, layerPlanData.rewardPlan, layer);
// rewards = result.rewards;
};
}

View File

@@ -1004,7 +1004,12 @@ export function checkRouteParam(route: string, msg: any) {
if (!checkNaturalStrings(gameCode, oldCharaCode, newCharaCode)) return false;
break;
}
case "battle.rougeHandler.challengeRandom":
{
let { detailCode } = msg;
if (!checkNaturalStrings(detailCode)) return false;
break;
}
case "battle.rougeHandler.unlockTech":
{
if (!checkNaturalNumbers(msg.techId)) return false;

View File

@@ -805,6 +805,7 @@ export const STATUS = {
BATTLE_ABNORMAL_CHARA: { code: 80023, simStr: '上阵学员数量异常' },
ROUGE_RE_RANDOM_CNT_OVER: { code: 80024, simStr: '已重新随机过' },
ROUGE_NO_CAN_PUT_SAME_ID: { code: 80025, simStr: '不能安装相同特性卡' },
ROUGE_CHALLENGE_RANDOM_FAIL: { code: 80026, simStr: '挑战关不可随机随机奖励' },
ROUGE_TECH_SCORE_NOT_ENOUGH: { code: 80101, simStr: '科技点不足' },
ROUGE_TECH_HAS_UNLOCKED: { code: 80102, simStr: '科技点已解锁' },

View File

@@ -245,6 +245,11 @@ export default class RougelikeRecordDetail extends BaseModel {
return result;
}
public static async findByDetailCode(detailCode: string, lean = true) {
const result: RougelikeRecordDetailType = await RougelikeRecordDetailModel.findOne({ detailCode }).lean(lean);
return result;
}
public static async findByGameCodeAndLtLayer(gameCode: string, layer: number, lean = true) {
const result: RougelikeRecordDetailType[] = await RougelikeRecordDetailModel.find({ gameCode, layer: { $lt: layer } }).lean(lean);
return result;