军团:改表

This commit is contained in:
luying
2021-12-21 19:26:24 +08:00
parent 75da9edc85
commit b304995c5d
17 changed files with 7838 additions and 2469 deletions

View File

@@ -117,14 +117,11 @@ export class DonationHandler {
const { guildCode: code, receiveBoxs: resReceiveBoxs } = userGuild; const { guildCode: code, receiveBoxs: resReceiveBoxs } = userGuild;
if (resReceiveBoxs.indexOf(id) != -1) if (resReceiveBoxs.indexOf(id) != -1)
return resResult(STATUS.GUILD_DONATE_BOXS_IS_GOT); return resResult(STATUS.GUILD_DONATE_BOXS_IS_GOT);
let { boxRewards, fund } = getArmyDonateBoxBaseById(id); let { boxRewards, fund, level } = getArmyDonateBoxBaseById(id);
let { donateFund, donationLv } = await getDonation(code, serverId); let { donateFund, donationLv } = await getDonation(code, serverId);
let { boxRewardRatio, requireRewardRatio } = getArmyDonateBaseByLv(donationLv); if( donationLv < level) return resResult(STATUS.GUILD_DONATE_LV_NOT_ENOUGH)
if (donateFund < Math.floor(fund * (100 + requireRewardRatio) / 100)) if (donateFund < fund)
return resResult(STATUS.GUILD_DONATE_BOXS_NOT_GOT); return resResult(STATUS.GUILD_DONATE_BOXS_NOT_GOT);
boxRewards = boxRewards.map(({ id, count }) => {
return { id, count: count * (boxRewardRatio + 100) };
});
resReceiveBoxs.push(id); resReceiveBoxs.push(id);
let { receiveBoxs } = await UserGuildModel.updateInfo(roleId, { receiveBoxs: resReceiveBoxs }, {}, 'receiveBoxs'); let { receiveBoxs } = await UserGuildModel.updateInfo(roleId, { receiveBoxs: resReceiveBoxs }, {}, 'receiveBoxs');
let goods = await addItems(roleId, roleName, sid, boxRewards, ITEM_CHANGE_REASON.DONATE_BOX); let goods = await addItems(roleId, roleName, sid, boxRewards, ITEM_CHANGE_REASON.DONATE_BOX);

View File

@@ -1,7 +1,7 @@
import { Application, BackendSession, pinus, HandlerService, } from 'pinus'; import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
import { UserGuildModel } from '../../../db/UserGuild'; import { UserGuildModel } from '../../../db/UserGuild';
import { resResult } from '../../../pubUtils/util'; import { resResult } from '../../../pubUtils/util';
import { STATUS, GUILD_OPERATE, TASK_TYPE, ITEM_CHANGE_REASON } from '../../../consts'; import { STATUS, GUILD_OPERATE, TASK_TYPE, ITEM_CHANGE_REASON, ITID, CONSUME_TYPE } from '../../../consts';
import { GuildRefineModel } from '../../../db/GuildRefine'; import { GuildRefineModel } from '../../../db/GuildRefine';
import { getArmyDevelopConsumeById, getGoodById } from '../../../pubUtils/data'; import { getArmyDevelopConsumeById, getGoodById } from '../../../pubUtils/data';
import { nowSeconds } from '../../../pubUtils/timeUtil'; import { nowSeconds } from '../../../pubUtils/timeUtil';
@@ -59,10 +59,12 @@ export class GuildRefineHandler {
for (let scienceTree of scienceTrees) { for (let scienceTree of scienceTrees) {
if (scienceTree.endTime < nowSeconds()) { if (scienceTree.endTime < nowSeconds()) {
let developConsume = getArmyDevelopConsumeById(scienceTree.id); let developConsume = getArmyDevelopConsumeById(scienceTree.id);
if (developConsume.quality && developConsume.levelMax >= pieceInfo.lvLimited && pieceInfo.lvLimited <= developConsume.levelMin) { // TODO 改成星级 let dicItid = ITID.get(pieceInfo.itid);
if (developConsume.quality >= pieceInfo.quality && (dicItid.type != CONSUME_TYPE.PIECE || (dicItid.type == CONSUME_TYPE.PIECE && pieceInfo.equipLvl >= developConsume.starLevel))) {
findDevelopConsume = developConsume; findDevelopConsume = developConsume;
break; break;
} }
} }
} }
if (!findDevelopConsume) if (!findDevelopConsume)

View File

@@ -1,6 +1,6 @@
import { Application, BackendSession, HandlerService, } from 'pinus'; import { Application, BackendSession, HandlerService, } from 'pinus';
import { resResult, genCode, getRandSingleEelm } from '../../../pubUtils/util'; import { resResult, genCode, getRandSingleEelm } from '../../../pubUtils/util';
import { DEBUG_MAGIC_WORD, ITEM_CHANGE_REASON, STATUS, TASK_TYPE } from '../../../consts'; import { DEBUG_MAGIC_WORD, ITEM_CHANGE_REASON, STATUS, TASK_TYPE, TRAIN_REWARD_TYPE } from '../../../consts';
import { GuildTrainModel } from '../../../db/GuildTrain'; import { GuildTrainModel } from '../../../db/GuildTrain';
import { BattleRecordModel } from '../../../db/BattleRecord'; import { BattleRecordModel } from '../../../db/BattleRecord';
import { nowSeconds, getTimeFun, getZeroPoint } from '../../../pubUtils/timeUtil'; import { nowSeconds, getTimeFun, getZeroPoint } from '../../../pubUtils/timeUtil';
@@ -10,7 +10,7 @@ import { lockData } from '../../../services/redLockService';
import { GUILD_REPORT_NUM, GUILD_POINT_WAYS } from '../../../consts/constModules/guildConst'; import { GUILD_REPORT_NUM, GUILD_POINT_WAYS } from '../../../consts/constModules/guildConst';
import { UserGuildModel } from '../../../db/UserGuild'; import { UserGuildModel } from '../../../db/UserGuild';
import { GuildModel } from '../../../db/Guild'; import { GuildModel } from '../../../db/Guild';
import { getArmyTrainJuDian, getTrainSoloReward, getTrainBaseByLv, gameData } from '../../../pubUtils/data'; import { getArmyTrainJuDian, getTrainBaseByLv, gameData } from '../../../pubUtils/data';
import { CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/constModules/itemConst'; import { CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/constModules/itemConst';
import { handleCost, addItems } from '../../../services/rewardService'; import { handleCost, addItems } from '../../../services/rewardService';
import { ARMY } from '../../../pubUtils/dicParam'; import { ARMY } from '../../../pubUtils/dicParam';
@@ -20,7 +20,7 @@ import { DATA_NAME } from '../../../consts/dataName';
import { pushGuildTrainSucMsg } from '../../../services/chatService'; import { pushGuildTrainSucMsg } from '../../../services/chatService';
import { checkActivityTask, checkTask } from '../../../services/taskService'; import { checkActivityTask, checkTask } from '../../../services/taskService';
import { sendPopUpActivityData } from '../../../services/guildActivityService'; import { sendPopUpActivityData } from '../../../services/guildActivityService';
import { guildInter } from '../../../pubUtils/interface'; import { guildInter, RewardInter } from '../../../pubUtils/interface';
import { getGuildTrainGkInfo } from '../../../pubUtils/data'; import { getGuildTrainGkInfo } from '../../../pubUtils/data';
export default function (app: Application) { export default function (app: Application) {
@@ -132,6 +132,7 @@ export class GuildTrainHandler {
* @param session * @param session
*/ */
async trainBattleEnd(msg: guildInter & { battleCode: string, isSuccess: boolean }, session: BackendSession) { async trainBattleEnd(msg: guildInter & { battleCode: string, isSuccess: boolean }, session: BackendSession) {
const { battleCode, isSuccess, myUserGuild } = msg; const { battleCode, isSuccess, myUserGuild } = msg;
const roleId: string = session.get('roleId'); const roleId: string = session.get('roleId');
const serverId: number = parseInt(session.get('serverId')); const serverId: number = parseInt(session.get('serverId'));
@@ -167,6 +168,8 @@ export class GuildTrainHandler {
let res: any = await lockData(serverId, DATA_NAME.TRAIN, code + '_' + trainId);//加锁 let res: any = await lockData(serverId, DATA_NAME.TRAIN, code + '_' + trainId);//加锁
if (!!res.err) if (!!res.err)
return resResult(STATUS.REDLOCK_ERR); return resResult(STATUS.REDLOCK_ERR);
try {
let guildTrain = await GuildTrainModel.findTrainByTrainIdNotLock(code, trainId); let guildTrain = await GuildTrainModel.findTrainByTrainIdNotLock(code, trainId);
if (!guildTrain) { if (!guildTrain) {
res.releaseCallback();//解锁 res.releaseCallback();//解锁
@@ -179,19 +182,19 @@ export class GuildTrainHandler {
} }
let { trainInstances, soloRewardRatio } = getArmyTrainJuDian(trainId); let { trainInstances, soloRewardRatio } = getArmyTrainJuDian(trainId);
let dicWar = gameData.war.get(battleRecord.battleId);
if(!dicWar) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let instance = findWhere(trainInstances, { hid }); let instance = findWhere(trainInstances, { hid });
if (!instance) {//校验是否存在该关卡 if (!instance) {//校验是否存在该关卡
res.releaseCallback();//解锁 res.releaseCallback();//解锁
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
} }
let trainSoloReward = getTrainSoloReward(difficulty); let score = isSuccess ? dicWar.winReward.get(TRAIN_REWARD_TYPE.SCORE) : dicWar.failReward.get(TRAIN_REWARD_TYPE.SCORE);
if (!trainSoloReward) {//获得个人奖励信息 let item = isSuccess ? dicWar.winReward.get(TRAIN_REWARD_TYPE.ITEM) : dicWar.failReward.get(TRAIN_REWARD_TYPE.ITEM);
res.releaseCallback();//解锁 let addScore = Math.floor(<number>score);//个人获得积分,也是压制进度
return resResult(STATUS.WRONG_PARMS);
}
let addScore = Math.floor((isSuccess ? trainSoloReward.winScore : trainSoloReward.failScore));//个人获得积分,也是压制进度
//个人功勋奖励 //个人功勋奖励
let goods = await addItems(roleId, roleName, sid, [{ id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.HONOUR), count: Math.floor((isSuccess ? trainSoloReward.winHonour : trainSoloReward.failHonour) * soloRewardRatio) }], ITEM_CHANGE_REASON.TRAIN_BATTLE_END); let goods = await addItems(roleId, roleName, sid, <RewardInter[]>item, ITEM_CHANGE_REASON.TRAIN_BATTLE_END);
let { isComplete, ranks } = guildTrain; let { isComplete, ranks } = guildTrain;
let reports = []; let reports = [];
// let index = findIndex(ranks, { roleId }); // let index = findIndex(ranks, { roleId });
@@ -261,6 +264,11 @@ export class GuildTrainHandler {
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GUILD_TRAIN, 1) await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GUILD_TRAIN, 1)
return resResult(STATUS.SUCCESS, result); return resResult(STATUS.SUCCESS, result);
} catch(e) {
res.releaseCallback();//解锁
return resResult(STATUS.INTERNAL_ERR);
}
} }
/** /**
* 领取练兵场宝箱 hid副本idindex:领取位置 * 领取练兵场宝箱 hid副本idindex:领取位置

View File

@@ -4,7 +4,7 @@ import { GuildModel } from '../../../db/Guild';
import { WishPoolReportModel } from '../../../db/WishPoolReport'; import { WishPoolReportModel } from '../../../db/WishPoolReport';
import { resResult, genCode } from '../../../pubUtils/util'; import { resResult, genCode } from '../../../pubUtils/util';
import { ITEM_CHANGE_REASON, STATUS } from '../../../consts'; import { ITEM_CHANGE_REASON, STATUS } from '../../../consts';
import { getArmyWishPoolBaseByLv, getGoodById } from '../../../pubUtils/data'; import { getArmyWishPoolBaseByLv, getGoodById, getWishPoolReward } from '../../../pubUtils/data';
import { addItems, checkGoods, checkHeroes } from '../../../services/rewardService'; import { addItems, checkGoods, checkHeroes } from '../../../services/rewardService';
import { IT_TYPE } from '../../../consts/constModules/itemConst'; import { IT_TYPE } from '../../../consts/constModules/itemConst';
import { GUILD_STRUCTURE } from '../../../consts/constModules/guildConst'; import { GUILD_STRUCTURE } from '../../../consts/constModules/guildConst';
@@ -15,6 +15,7 @@ import { getRoleOnlineInfo } from '../../../services/redisService';
import { ARMY } from '../../../pubUtils/dicParam'; import { ARMY } from '../../../pubUtils/dicParam';
import { guildInter } from '../../../pubUtils/interface'; import { guildInter } from '../../../pubUtils/interface';
import { getSeconds, getZeroPoint, nowSeconds } from '../../../pubUtils/timeUtil'; import { getSeconds, getZeroPoint, nowSeconds } from '../../../pubUtils/timeUtil';
import { getHonourObject } from '../../../pubUtils/itemUtils';
export default function(app: Application) { export default function(app: Application) {
return new WishPoolHandler(app); return new WishPoolHandler(app);
} }
@@ -97,6 +98,7 @@ export class WishPoolHandler {
let { wishRoleId, id, myUserGuild } = msg; let { wishRoleId, id, myUserGuild } = msg;
const dntRoleId: string = session.get('roleId'); const dntRoleId: string = session.get('roleId');
const dntRoleName: string = session.get('roleName'); const dntRoleName: string = session.get('roleName');
const sid: string = session.get('sid');
if (wishRoleId == dntRoleId) if (wishRoleId == dntRoleId)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
let role = await RoleModel.findByRoleId(wishRoleId); let role = await RoleModel.findByRoleId(wishRoleId);
@@ -118,16 +120,21 @@ export class WishPoolHandler {
return resResult(STATUS.WRONG_PARMS);//没有该许愿 return resResult(STATUS.WRONG_PARMS);//没有该许愿
if (wishGood.receiveCnt >= wishGood.count) if (wishGood.receiveCnt >= wishGood.count)
return resResult(STATUS.HAS_RECEIVE_WISH_GOOD);//已经收到 return resResult(STATUS.HAS_RECEIVE_WISH_GOOD);//已经收到
let dicWishReward = getWishPoolReward(wishGood.goodId);
if(!dicWishReward) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let { wishDntCnt } = await UserGuildModel.donateGoods(dntRoleId, 1, 'wishDntCnt'); let { wishDntCnt } = await UserGuildModel.donateGoods(dntRoleId, 1, 'wishDntCnt');
let { wishGoods: resWishGoods } = await UserGuildModel.donateUpdate(wishRoleId, dntRoleName, id, 'wishGoods'); let { wishGoods: resWishGoods } = await UserGuildModel.donateUpdate(wishRoleId, dntRoleName, id, 'wishGoods');
let hisOnlineInfo = await getRoleOnlineInfo(wishRoleId); let hisOnlineInfo = await getRoleOnlineInfo(wishRoleId);
if(hisOnlineInfo.isOnline && hisOnlineInfo.sid) { if(hisOnlineInfo.isOnline && hisOnlineInfo.sid) {
await addItems(wishRoleId, role.roleName, hisOnlineInfo.sid , [{ id : wishGood.goodId, count: 1 }], ITEM_CHANGE_REASON.WISH_POOL_DONATE); // await addItems(wishRoleId, role.roleName, hisOnlineInfo.sid , [{ id : wishGood.goodId, count: 1 }], ITEM_CHANGE_REASON.WISH_POOL_DONATE);
this.app.channelService.pushMessageByUids('onWishGoodsRecive', resResult(STATUS.SUCCESS, { wishGoods: resWishGoods }), [{uid:wishRoleId, sid: hisOnlineInfo.sid}]); this.app.channelService.pushMessageByUids('onWishGoodsRecive', resResult(STATUS.SUCCESS, { wishGoods: resWishGoods }), [{uid:wishRoleId, sid: hisOnlineInfo.sid}]);
} }
await WishPoolReportModel.addReport(code, wishRoleId, role.roleName , dntRoleId, dntRoleName, wishGood.goodId, 1); await WishPoolReportModel.addReport(code, wishRoleId, role.roleName , dntRoleId, dntRoleName, wishGood.goodId, 1);
return resResult(STATUS.SUCCESS, { wishDntCnt, updateWishGoods: resWishGoods.map(({type, goodId, count, receiveCnt, drawCnt, id})=>{ let goods = await addItems(dntRoleId, dntRoleName, sid, [getHonourObject(dicWishReward.honourReward)], ITEM_CHANGE_REASON.WISH_POOL_DONATE);
return resResult(STATUS.SUCCESS, { wishDntCnt, goods, updateWishGoods: resWishGoods.map(({type, goodId, count, receiveCnt, drawCnt, id})=>{
return { type, goodId, count, receiveCnt, drawCnt, id, roleId: wishRoleId }; return { type, goodId, count, receiveCnt, drawCnt, id, roleId: wishRoleId };
}) })
}); });

View File

@@ -480,7 +480,8 @@ export const FILENAME = {
DIC_PVP_DIFFICULTRATIO: 'dic_zyz_pvp_difficultRatio', DIC_PVP_DIFFICULTRATIO: 'dic_zyz_pvp_difficultRatio',
DIC_PVP_DAILY_TASK: 'dic_zyz_pvp_dailyTask', DIC_PVP_DAILY_TASK: 'dic_zyz_pvp_dailyTask',
DIC_WHITE_IP: 'dic_pay_white_ip', DIC_WHITE_IP: 'dic_pay_white_ip',
FILTER_WORDS: 'filterWords' FILTER_WORDS: 'filterWords',
DIC_GUILD_WISH_REWARD: 'dic_army_wishReward',
} }
export const WAR_RELATE_TABLES = [ export const WAR_RELATE_TABLES = [
@@ -965,4 +966,10 @@ export enum TA_USERSET_TYPE {
SET = 1, SET = 1,
SET_ONCE = 2, SET_ONCE = 2,
ADD = 3 ADD = 3
}
// 试炼奖励类型
export enum TRAIN_REWARD_TYPE {
SCORE = 1, // 练兵场压制积分
ITEM = 2, // 练兵场物品奖励
} }

View File

@@ -188,6 +188,7 @@ export const STATUS = {
NOT_WISH_THE_QUALITY_GOODS: { code: 20931, simStr: '不能够许愿该品质的物品' }, NOT_WISH_THE_QUALITY_GOODS: { code: 20931, simStr: '不能够许愿该品质的物品' },
GUILD_PAY_CONDITION: { code: 20932, simStr: '充值金额不足' }, GUILD_PAY_CONDITION: { code: 20932, simStr: '充值金额不足' },
GUILD_USER_IS_LEADER: { code: 20933, simStr: '该成员已经是团长' }, GUILD_USER_IS_LEADER: { code: 20933, simStr: '该成员已经是团长' },
GUILD_DONATE_LV_NOT_ENOUGH: { code: 20934, simStr: '捐献所等级不足' },
GUILD_SCRIPT_IS_OPENED_TODAY: { code: 20950, simStr: '今日已开启过演武场' }, GUILD_SCRIPT_IS_OPENED_TODAY: { code: 20950, simStr: '今日已开启过演武场' },
GUILD_SCRIPT_NOT_OPENED: { code: 20951, simStr: '演武场未开启' }, GUILD_SCRIPT_NOT_OPENED: { code: 20951, simStr: '演武场未开启' },

View File

@@ -18,7 +18,7 @@ import { dicTowerTask, loadTowerTask } from "./dictionary/DicTowerTask";
import { dicWar, dicWarPvp, dicDailyWarByType, loadWar } from "./dictionary/DicWar"; import { dicWar, dicWarPvp, dicDailyWarByType, loadWar } from "./dictionary/DicWar";
import { dicWarJson, loadWarJson } from "./dictionary/DicWarJson"; import { dicWarJson, loadWarJson } from "./dictionary/DicWarJson";
import { dicXunbao, loadXunbao } from "./dictionary/DicXunbao"; import { dicXunbao, loadXunbao } from "./dictionary/DicXunbao";
import { AUCTION_TIME, SPECIAL_ATTR } from "../consts"; import { AUCTION_TIME, CONSUME_TYPE, ITID, SPECIAL_ATTR } from "../consts";
import { dicFashions, dicFashionsByHeroId, loadFashions } from "./dictionary/DicFashions"; import { dicFashions, dicFashionsByHeroId, loadFashions } from "./dictionary/DicFashions";
import { friendShips, friendShipHidAandIds, loadFriendShip } from "./dictionary/DicFriendShip"; import { friendShips, friendShipHidAandIds, loadFriendShip } from "./dictionary/DicFriendShip";
import { maxFriendShipLv, dicFriendShipLevelMap, loadFriendShipLevel } from "./dictionary/DicFriendShipLevel"; import { maxFriendShipLv, dicFriendShipLevelMap, loadFriendShipLevel } from "./dictionary/DicFriendShipLevel";
@@ -95,6 +95,7 @@ import { dicAuctionPool, loadAuctionReward } from './dictionary/DicAuctionReward
import { dicGuildTrainInfo, loadGuildTrainInfo } from './dictionary/DicGuildTrainInfo'; import { dicGuildTrainInfo, loadGuildTrainInfo } from './dictionary/DicGuildTrainInfo';
import { dicPvpDifficultRatio, loadPvpDifficultRatio } from './dictionary/DicPvpDifficultRatio'; import { dicPvpDifficultRatio, loadPvpDifficultRatio } from './dictionary/DicPvpDifficultRatio';
import { dicWhiteIp, loadWhiteIp } from './dictionary/DicWhiteIp'; import { dicWhiteIp, loadWhiteIp } from './dictionary/DicWhiteIp';
import { dicGuildWishReward, loadGuildWishReward } from './dictionary/DicGuildWishReward';
import { pick } from "underscore"; import { pick } from "underscore";
import _ = require("underscore"); import _ = require("underscore");
@@ -240,6 +241,7 @@ export const gameData = {
auctionPool: dicAuctionPool, auctionPool: dicAuctionPool,
auctionTime: new Map<number, { hour: number, minute: number, seconds: number}>(), auctionTime: new Map<number, { hour: number, minute: number, seconds: number}>(),
whiteip: dicWhiteIp, whiteip: dicWhiteIp,
guildWishReward: dicGuildWishReward,
}; };
// 在此提供一些原先在gamedata中提供的方法以便更方便获取gameData数据 // 在此提供一些原先在gamedata中提供的方法以便更方便获取gameData数据
@@ -756,6 +758,18 @@ export function getQuenchGradeByValue(quality: number, value: number) {
return grade; return grade;
} }
export function getWishPoolReward(id: number) {
let dicGoods = gameData.goods.get(id);
if(!dicGoods) return false;
let dicItid = ITID.get(dicGoods.itid);
let starLevel = 0;
if(dicItid.type == CONSUME_TYPE.PIECE) {
starLevel = dicGoods.equipLvl;
}
console.log('*****', dicGoods.itid, starLevel, dicGoods.quality)
return gameData.guildWishReward.get(`${dicGoods.itid}_${starLevel}_${dicGoods.quality}`);
}
/** /**
* 根绝品质和品相获得上下限当grade为0获取该品质下全阶的上下限 * 根绝品质和品相获得上下限当grade为0获取该品质下全阶的上下限
* @param quality 品质 * @param quality 品质
@@ -975,6 +989,7 @@ function loadDatas() {
loadPvpDifficultRatio(); loadPvpDifficultRatio();
loadWhiteIp(); loadWhiteIp();
treatTaskGroup(); treatTaskGroup();
loadGuildWishReward();
} }
// 重载dicParam // 重载dicParam

View File

@@ -9,8 +9,7 @@ export interface DicArmyDevelopConsume {
readonly id: number; readonly id: number;
// 目标品质 // 目标品质
readonly quality: number; readonly quality: number;
readonly levelMin: number; readonly starLevel: number;
readonly levelMax: number;
readonly prePositions: Array<number>; readonly prePositions: Array<number>;
readonly honourConsume: Array<RewardInter>; readonly honourConsume: Array<RewardInter>;
readonly fundConsume: number; readonly fundConsume: number;
@@ -20,8 +19,7 @@ export interface DicArmyDevelopConsume {
const DicArmyDevelopConsumeKeys: KeysEnum<DicArmyDevelopConsume> = { const DicArmyDevelopConsumeKeys: KeysEnum<DicArmyDevelopConsume> = {
id: true, id: true,
quality: true, quality: true,
levelMin: true, starLevel: true,
levelMax: true,
prePositions: true, prePositions: true,
honourConsume: true, honourConsume: true,
fundConsume: true, fundConsume: true,

View File

@@ -6,12 +6,14 @@ const _ = require('lodash');
export interface DicArmyDonate { export interface DicArmyDonate {
readonly id: number; readonly id: number;
readonly level: number;
readonly fund: number; readonly fund: number;
readonly boxRewards: Array<RewardInter>; readonly boxRewards: Array<RewardInter>;
} }
const DicArmyDonateKeys: KeysEnum<DicArmyDonate> = { const DicArmyDonateKeys: KeysEnum<DicArmyDonate> = {
id: true, id: true,
level: true,
fund: true, fund: true,
boxRewards: true boxRewards: true
}; };

View File

@@ -0,0 +1,30 @@
// 公会权限
import { readFileAndParse } from '../util'
import { FILENAME } from '../../consts'
export interface DicGuildWishReward {
// id
readonly id: number;
// itid
readonly itid: number;
// 装备星级
readonly starLevel: number;
// 品质
readonly quality: number;
// 功勋奖励
readonly honourReward: number;
}
export const dicGuildWishReward = new Map<string, DicGuildWishReward>();
export function loadGuildWishReward() {
dicGuildWishReward.clear();
let arr = readFileAndParse(FILENAME.DIC_GUILD_WISH_REWARD);
arr.forEach(o => {
if(o.starLevel == '&') o.starLevel = 0;
dicGuildWishReward.set(`${o.itid}_${o.starLevel}_${o.quality}`, o);
});
arr = undefined;
}

View File

@@ -116,18 +116,12 @@ export interface DicDonateBase {
readonly level: number; readonly level: number;
// 捐献奖励 // 捐献奖励
readonly donateReward: Map<number, { id: number, rewardGood: RewardInter, rewardFund:number, cosume:RewardInter }>; readonly donateReward: Map<number, { id: number, rewardGood: RewardInter, rewardFund:number, cosume:RewardInter }>;
// 今日捐献宝箱领取奖励系数
readonly boxRewardRatio: number;
readonly requireRewardRatio: number;
} }
const DicDonateKeys: KeysEnum<DicDonateBase> = { const DicDonateKeys: KeysEnum<DicDonateBase> = {
id: true, id: true,
level: true, level: true,
donateReward: true, donateReward: true,
boxRewardRatio: true,
requireRewardRatio: true
}; };
// 许愿池 // 许愿池

View File

@@ -1,7 +1,8 @@
// 关卡表 // 关卡表
import {decodeArrayListStr, decodeArrayStr, parseNumberList, readFileAndParse} from '../util' import {decodeArrayListStr, decodeArrayStr, parseNumberList, readFileAndParse} from '../util'
import { WAR_RELATE_TABLES, WAR_TYPE } from '../../consts'; import { TRAIN_REWARD_TYPE, WAR_RELATE_TABLES, WAR_TYPE } from '../../consts';
import { isString } from 'underscore' import { isString } from 'underscore'
import { RewardInter } from '../interface';
export interface DicWar { export interface DicWar {
// 关卡id // 关卡id
@@ -44,6 +45,10 @@ export interface DicWar {
readonly scriptBefore: string; readonly scriptBefore: string;
// 战后剧本 // 战后剧本
readonly scriptAfter: string; readonly scriptAfter: string;
// 练兵场胜利奖励
readonly winReward: Map<number, number|RewardInter[]>;
// 练兵场失败奖励
readonly failReward: Map<number, number|RewardInter[]>;
} }
export const dicWar = new Map<number, DicWar>(); export const dicWar = new Map<number, DicWar>();
@@ -76,7 +81,6 @@ export function loadWar() {
} }
} }
dicWar.set(o.war_id, o);
if(o.warType == WAR_TYPE.PVP) { if(o.warType == WAR_TYPE.PVP) {
dicWarPvp.push(o); dicWarPvp.push(o);
} else if (o.warType == WAR_TYPE.DAILY) { } else if (o.warType == WAR_TYPE.DAILY) {
@@ -84,7 +88,11 @@ export function loadWar() {
dicDailyWarByType.set(o.dailyType, []); dicDailyWarByType.set(o.dailyType, []);
} }
dicDailyWarByType.get(o.dailyType).push(o); dicDailyWarByType.get(o.dailyType).push(o);
} else if (o.warType == WAR_TYPE.GUILD_TRAIN) {
o.winReward = parseTrainReward(o.winReward);
o.failReward = parseTrainReward(o.failReward);
} }
dicWar.set(o.war_id, o);
}); });
} }
} }
@@ -159,4 +167,29 @@ function parseForbiddenChara(str: string = '') {
result.push({type: parseInt(type), id: parseInt(id)}); result.push({type: parseInt(type), id: parseInt(id)});
} }
return result return result
}
function parseTrainReward(str: string) {
let result = new Map<number, number|RewardInter[]>();
if(!str) return result;
let decodeArr = decodeArrayListStr(str);
for(let [type, str1, str2] of decodeArr) {
if(parseInt(type) == TRAIN_REWARD_TYPE.SCORE) {
if(isNaN(parseInt(str1))) {
throw new Error('data table format wrong');
}
if(!result.has(parseInt(type))) {
result.set(parseInt(type), parseInt(str1));
}
} else if (parseInt(type) == TRAIN_REWARD_TYPE.ITEM) {
if(isNaN(parseInt(str1)) || isNaN(parseInt(str2))) {
throw new Error('data table format wrong');
}
if(!result.has(parseInt(type))) {
result.set(parseInt(type), []);
}
(<RewardInter[]>result.get(parseInt(type))).push({ id: parseInt(str1), count: parseInt(str2) });
}
}
return result
} }

0
shared/resource/jsons/dic_army_developmentConsume.json Executable file → Normal file
View File

220
shared/resource/jsons/dic_army_donateBoxReward.json Executable file → Normal file
View File

@@ -1,21 +1,241 @@
[ [
{ {
"id": 1, "id": 1,
"level": 1,
"fund": 100, "fund": 100,
"boxReward": "40005&1000" "boxReward": "40005&1000"
}, },
{ {
"id": 2, "id": 2,
"level": 1,
"fund": 200, "fund": 200,
"boxReward": "17052&5" "boxReward": "17052&5"
}, },
{ {
"id": 3, "id": 3,
"level": 1,
"fund": 300, "fund": 300,
"boxReward": "17053&1" "boxReward": "17053&1"
}, },
{ {
"id": 4, "id": 4,
"level": 1,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 5,
"level": 2,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 6,
"level": 2,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 7,
"level": 2,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 8,
"level": 2,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 9,
"level": 3,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 10,
"level": 3,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 11,
"level": 3,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 12,
"level": 3,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 13,
"level": 4,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 14,
"level": 4,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 15,
"level": 4,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 16,
"level": 4,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 17,
"level": 5,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 18,
"level": 5,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 19,
"level": 5,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 20,
"level": 5,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 21,
"level": 6,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 22,
"level": 6,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 23,
"level": 6,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 24,
"level": 6,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 25,
"level": 7,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 26,
"level": 7,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 27,
"level": 7,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 28,
"level": 7,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 29,
"level": 8,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 30,
"level": 8,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 31,
"level": 8,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 32,
"level": 8,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 33,
"level": 9,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 34,
"level": 9,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 35,
"level": 9,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 36,
"level": 9,
"fund": 400,
"boxReward": "40005&1000"
},
{
"id": 37,
"level": 10,
"fund": 100,
"boxReward": "40005&1000"
},
{
"id": 38,
"level": 10,
"fund": 200,
"boxReward": "17052&5"
},
{
"id": 39,
"level": 10,
"fund": 300,
"boxReward": "17053&1"
},
{
"id": 40,
"level": 10,
"fund": 400, "fund": 400,
"boxReward": "40005&1000" "boxReward": "40005&1000"
} }

View File

@@ -2,43 +2,298 @@
{ {
"id": 1, "id": 1,
"itid": 25, "itid": 25,
"starLevel": "&",
"quality": 1, "quality": 1,
"honourReward": 1200 "honourReward": 40,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 2, "id": 2,
"itid": 25, "itid": 25,
"starLevel": "&",
"quality": 2, "quality": 2,
"honourReward": 1400 "honourReward": 80,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 3, "id": 3,
"itid": 25, "itid": 25,
"starLevel": "&",
"quality": 3, "quality": 3,
"honourReward": 1800 "honourReward": 200,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 4, "id": 4,
"itid": 40, "itid": 40,
"starLevel": 1,
"quality": 1, "quality": 1,
"honourReward": 800 "honourReward": 20,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 5, "id": 5,
"itid": 40, "itid": 40,
"starLevel": 1,
"quality": 2, "quality": 2,
"honourReward": 1000 "honourReward": 50,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 6, "id": 6,
"itid": 40, "itid": 40,
"starLevel": 1,
"quality": 3, "quality": 3,
"honourReward": 1400 "honourReward": 70,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
}, },
{ {
"id": 7, "id": 7,
"itid": 40, "itid": 40,
"starLevel": 1,
"quality": 4, "quality": 4,
"honourReward": 1800 "honourReward": 80,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 8,
"itid": 40,
"starLevel": 2,
"quality": 1,
"honourReward": 40,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 9,
"itid": 40,
"starLevel": 2,
"quality": 2,
"honourReward": 80,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 10,
"itid": 40,
"starLevel": 2,
"quality": 3,
"honourReward": 90,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 11,
"itid": 40,
"starLevel": 2,
"quality": 4,
"honourReward": 110,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 12,
"itid": 40,
"starLevel": 3,
"quality": 1,
"honourReward": 70,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 13,
"itid": 40,
"starLevel": 3,
"quality": 2,
"honourReward": 100,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": " "
},
{
"id": 14,
"itid": 40,
"starLevel": 3,
"quality": 3,
"honourReward": 130,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 15,
"itid": 40,
"starLevel": 3,
"quality": 4,
"honourReward": 140,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 16,
"itid": 40,
"starLevel": 4,
"quality": 1,
"honourReward": 120,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 17,
"itid": 40,
"starLevel": 4,
"quality": 2,
"honourReward": 160,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 18,
"itid": 40,
"starLevel": 4,
"quality": 3,
"honourReward": 190,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 19,
"itid": 40,
"starLevel": 4,
"quality": 4,
"honourReward": 210,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 20,
"itid": 40,
"starLevel": 5,
"quality": 1,
"honourReward": 150,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 21,
"itid": 40,
"starLevel": 5,
"quality": 2,
"honourReward": 200,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 22,
"itid": 40,
"starLevel": 5,
"quality": 3,
"honourReward": 220,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 23,
"itid": 40,
"starLevel": 5,
"quality": 4,
"honourReward": 240,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 24,
"itid": 40,
"starLevel": 6,
"quality": 1,
"honourReward": 170,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 25,
"itid": 40,
"starLevel": 6,
"quality": 2,
"honourReward": 230,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 26,
"itid": 40,
"starLevel": 6,
"quality": 3,
"honourReward": 260,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
},
{
"id": 27,
"itid": 40,
"starLevel": 6,
"quality": 4,
"honourReward": 330,
"__EMPTY": 0,
"__EMPTY_1": 0,
"__EMPTY_2": 0,
"__EMPTY_3": 0
} }
] ]

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[ [
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -21,7 +21,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -42,7 +42,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -63,7 +63,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -84,7 +84,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -105,7 +105,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -126,7 +126,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -147,7 +147,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -168,7 +168,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -189,7 +189,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "我军", "actorName": "我军",
"actorId": 0, "actorId": 0,
"dataId": 0, "dataId": 0,
@@ -210,7 +210,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2001, "dataId": 2001,
@@ -231,7 +231,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2002, "dataId": 2002,
@@ -252,7 +252,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2003, "dataId": 2003,
@@ -273,7 +273,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2004, "dataId": 2004,
@@ -294,7 +294,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2005, "dataId": 2005,
@@ -315,7 +315,7 @@
"randomEnemy": "320&" "randomEnemy": "320&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2006, "dataId": 2006,
@@ -336,7 +336,7 @@
"randomEnemy": "317&" "randomEnemy": "317&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2007, "dataId": 2007,
@@ -357,7 +357,7 @@
"randomEnemy": "322&" "randomEnemy": "322&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2008, "dataId": 2008,
@@ -378,7 +378,7 @@
"randomEnemy": "331&" "randomEnemy": "331&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2009, "dataId": 2009,
@@ -399,7 +399,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2010, "dataId": 2010,
@@ -420,7 +420,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2011, "dataId": 2011,
@@ -441,7 +441,7 @@
"randomEnemy": "318&" "randomEnemy": "318&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2012, "dataId": 2012,
@@ -462,7 +462,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2013, "dataId": 2013,
@@ -483,7 +483,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2014, "dataId": 2014,
@@ -504,7 +504,7 @@
"randomEnemy": "321&" "randomEnemy": "321&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2015, "dataId": 2015,
@@ -525,7 +525,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2016, "dataId": 2016,
@@ -546,7 +546,7 @@
"randomEnemy": "&" "randomEnemy": "&"
}, },
{ {
"warId": 4505, "warId": 4506,
"actorName": "敌军", "actorName": "敌军",
"actorId": 0, "actorId": 0,
"dataId": 2017, "dataId": 2017,