镇念塔:节点奖励

This commit is contained in:
luying
2022-04-19 16:45:16 +08:00
parent b8a54fc592
commit 9095b67fab
8 changed files with 1905 additions and 4 deletions

View File

@@ -17,6 +17,8 @@ import { HeroModel } from '../../../db/Hero';
import { vipCanSkipTower } from '../../../services/activity/monthlyTicketService';
import { pushTowerMsg } from '../../../services/sysChatService';
import { WarStar } from '../../../domain/dbGeneral';
import { RewardInter } from '../../../pubUtils/interface';
import { combineItems } from '../../../services/role/util';
export default function(app: Application) {
return new TowerBattleHandler(app);
@@ -33,7 +35,7 @@ export class TowerBattleHandler {
async getStatus(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let serverId = session.get('serverId');
let role = await RoleModel.findByRoleId(roleId);
let role = await RoleModel.findByRoleId(roleId, 'roleId serverId towerLv towerReceived');
let data = await getTowerStatus(role);
return resResult(STATUS.SUCCESS, data);
@@ -330,4 +332,45 @@ export class TowerBattleHandler {
return resResult(STATUS.SUCCESS, { ...data, goods });
}
/**
* 获取节点奖励
* @param session
*/
async receiveBox(msg: { id: number }, session: BackendSession) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let sid = session.get('sid');
let { id } = msg; // id为0表示一键领取
let role = await RoleModel.findByRoleId(roleId, 'towerLv towerReceived');
if(!role) return resResult(STATUS.ROLE_NOT_FOUND);
let { towerLv, towerReceived = [] } = role;
let rewards: RewardInter[] = [], newReceived: number[] = [];
if(id == 0) {
for(let [ id, dicTowerGift ] of gameData.towerGift) {
if(towerLv > dicTowerGift.towerLv && towerReceived.indexOf(id) == -1) {
rewards.push(...dicTowerGift.reward);
newReceived.push(id);
}
}
if(newReceived.length <= 0) return resResult(STATUS.TOWER_BOX_NO_RECEIVE);
} else {
let dicTowerGift = gameData.towerGift.get(id);
if(!dicTowerGift) return resResult(STATUS.WRONG_PARMS);
if(towerLv <= dicTowerGift.towerLv) {
return resResult(STATUS.TOWER_LV_NOT_ENOUGH);
}
if(towerReceived.indexOf(id) != -1) {
return resResult(STATUS.TOWER_BOX_HAS_RECEIVED);
}
rewards.push(...dicTowerGift.reward);
newReceived.push(id);
}
role = await RoleModel.receiveTowerBox(roleId, newReceived);
let goods = await addItems(roleId, roleName, sid, combineItems(rewards), ITEM_CHANGE_REASON.RECEIVE_TOWER_BOX);
return resResult(STATUS.SUCCESS, { goods, receivedBox: newReceived });
}
}

View File

@@ -24,7 +24,7 @@ import { getVipHungupReward } from './activity/monthlyTicketService';
* @param role
*/
export async function getTowerStatus(role: RoleType) {
let { towerLv, roleId, serverId } = role;
let { towerLv, roleId, serverId, towerReceived } = role;
if (!towerLv) {
let role = await RoleModel.towerLvUp(roleId);
towerLv = role.towerLv;
@@ -37,7 +37,8 @@ export async function getTowerStatus(role: RoleType) {
sendTaskEnableLv: dicParam.TOWER_SEARCH.TOWER_SEARCH_STARTLIMITED,
curLv: towerLv,
usedHeroes: towerRec.heroes,
progress: towerRec.warStatus
progress: towerRec.warStatus,
receivedBox: towerReceived||[],
};
}