镇念塔:节点奖励
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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||[],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user