镇念塔:禁用角色

This commit is contained in:
luying
2021-08-18 20:24:57 +08:00
parent 18dfafd036
commit 0e3756978c
4 changed files with 51 additions and 1 deletions
+28 -1
View File
@@ -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);