镇念塔:禁用角色
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { HeroModel } from './../db/Hero';
|
||||
import { HangUpRecordModel } from './../db/HangUpRecord';
|
||||
import { pinus } from 'pinus';
|
||||
import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TIME_OUTPUT_TYPE, GOLD_COST_RATIO, TOWER_TASK_STATUS, MAIL_TYPE } from './../consts';
|
||||
import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TOWER_FORBIDDEN_CHARA_TYPE, TOWER_TASK_STATUS, MAIL_TYPE } from './../consts';
|
||||
import { BattleRecordModel } from './../db/BattleRecord';
|
||||
import { TowerRecordModel } from './../db/TowerRecord';
|
||||
import { RoleModel, RoleType } from './../db/Role';
|
||||
@@ -158,10 +158,16 @@ export async function checkTowerWar(roleId: string, battleId: number, heroes: Ar
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_NOT_FOUND) };
|
||||
}
|
||||
let { heroes: recHeroes = [], warStatus = [] } = tower;
|
||||
let dicWar = gameData.war.get(battleId);
|
||||
let { fobiddenCharactor } = dicWar;
|
||||
for (let hid of heroes) {
|
||||
if (recHeroes.indexOf(hid) !== -1) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_DUPLICATE_HERO) };
|
||||
}
|
||||
if(checkForbiddenChar(hid, fobiddenCharactor)) {
|
||||
return { status: -1, resResult: resResult(STATUS.TOWER_HERO_FORBIDDEN) };
|
||||
}
|
||||
|
||||
}
|
||||
const curWarStatus = warStatus.find(elem => elem.warId == battleId);
|
||||
if (curWarStatus && curWarStatus.status) {
|
||||
@@ -175,6 +181,27 @@ export async function checkTowerWar(roleId: string, battleId: number, heroes: Ar
|
||||
};
|
||||
}
|
||||
|
||||
function checkForbiddenChar(hid: number, fobiddenCharactor: {type: number, id: number}[]) {
|
||||
let dicHero = gameData.hero.get(hid);
|
||||
let dicJob = gameData.job.get(dicHero.jobid);
|
||||
let flag = false;
|
||||
for(let { type, id } of fobiddenCharactor) {
|
||||
switch(type) {
|
||||
case TOWER_FORBIDDEN_CHARA_TYPE.CHAR:
|
||||
if(id == hid) flag = true;
|
||||
break;
|
||||
case TOWER_FORBIDDEN_CHARA_TYPE.JOB:
|
||||
if(id == dicJob.job_class) flag = true;
|
||||
break;
|
||||
case TOWER_FORBIDDEN_CHARA_TYPE.CAMP:
|
||||
if(id == dicHero.camp) flag = true;
|
||||
break;
|
||||
}
|
||||
if(flag) break;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
export async function towerBattleEnd(sid: string, funcs: number[], roleId: string, serverId: number, battleCode: string, battleId: number, succeed: boolean, heroes: Array<number>) {
|
||||
if (succeed) {
|
||||
let battleRec = await BattleRecordModel.getBattleRecordByCode(battleCode);
|
||||
|
||||
Reference in New Issue
Block a user