pvp: 更改pvpdefense结构

This commit is contained in:
luying
2021-10-26 11:23:08 +08:00
parent 4a5e23969b
commit e39b120af4
31 changed files with 1542 additions and 1137 deletions

View File

@@ -1,64 +1,10 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
import Hero, { } from './Hero';
import Role, { } from './Role';
import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts';
import PvpHistoryOpp from './PvpHistoryOpp';
import { reduceCe } from '../pubUtils/util';
export class Heroes {
@prop({ required: true })
actorId: number; // 武将id
@prop({ ref: 'Hero', type: mongoose.Schema.Types.ObjectId })
hero: Ref<Hero>;
@prop({ required: true })
ce: number; // 战斗力
@prop({ required: true })
dataId: number;
@prop({ required: true })
order: number;
}
// 初始化
function getInitialOppPlayers() {
let players = new Array<OppPlayers>();
for(let i = PVP_PLAYER_POS.START; i <= PVP_PLAYER_POS.END; i++) {
let p = new OppPlayers();
p.pos = i;
players.push(p);
}
return players;
}
// 初始化
function getInitialOppHeros() {
let heros = new Array<Heroes>();
for(let i = PVP_HERO_POS.START; i <= PVP_HERO_POS.END; i++) {
let p = new Heroes();
p.dataId = i;
p.order = i;
heros.push(p);
}
return heros;
}
export class OppPlayers {
@prop({ required: true })
roleId: string;
@prop({ ref: 'PvpHistoryOpp', type: mongoose.Schema.Types.ObjectId })
oppDef: Ref<PvpHistoryOpp>;
@prop({ required: true })
pos: number;
@prop({ required: true })
isRobot: boolean;
}
export class HeroScores {
@prop({ required: true })
hid: number;
@prop({ required: true })
score: number;
}
import { Defense, Attack, LineupCe, OppPlayer, HeroScore, } from '../domain/battleField/pvp';
import { CounterModel } from './Counter';
import { COUNTER } from '../consts';
import { PVP } from '../pubUtils/dicParam';
@index({ roleId: 1 })
export default class PvpDefense extends BaseModel {
@@ -68,38 +14,43 @@ export default class PvpDefense extends BaseModel {
roleName: string; // 角色名称
@prop({ ref: 'Role', type: mongoose.Schema.Types.ObjectId })
role: Ref<Role>;
@prop({ required: true, type: Heroes, default: getInitialOppHeros(), _id: false })
heroes: Array<Heroes>;
@prop({ required: true, default: null, _id: false })
defense: Defense;
@prop({ required: true, default: null, _id: false })
attack: Attack;
@prop({ required: true, type: () => LineupCe, default: [], _id: false })
lineupCe: LineupCe[];
@prop({ required: true, type: () => OppPlayer, default: [], _id: false })
oppPlayers: OppPlayer[];
@prop({ required: true, type: () => HeroScore, default: [], _id: false })
heroScores: HeroScore[];
@prop({ required: true, default: 0 })
score: number;
@prop({ required: true, default: 1 })
pLv: number;
@prop({ required: true, default: 0 })
hisScore: number; //历史最高积分
@prop({ required: true, default: 0 })
winStreakNum: number; //连胜次数
@prop({ required: true, default: 0, get: (val: number) => reduceCe(val), set: (val: number) => val })
defCe: number; //防守ce
@prop({ required: true, type: OppPlayers, default: getInitialOppPlayers(), _id: false })
oppPlayers: Array<OppPlayers>;
@prop({ required: true, type: HeroScores, default: [], _id: false })
heroScores: Array<HeroScores>;
@prop({ required: true, default: true })
isDefaultHero: boolean;
@prop({ required: true, default: () => { return new Date() } })
refDaily: Date; // 每日刷新控制refOppCnt和setAttackCnt
@prop({ required: true, default: 0 })
refOppCnt: number; // 刷新对手总次数,消耗可根据消耗表算出
@prop({ required: true, default: new Date() })
refOppTime: Date; // 刷新对手时间
@prop({ required: true, default: 0 })
challengeCnt: number; // 可挑战次数
setAttackCnt: number; // 设置挑战阵容次数
@prop({ required: true, default: 0 })
challengeCnt: number; // 可挑战次数每2小时回复一次
@prop({ required: true, default: 0 })
challengeRefTime: number; // 上一次刷新的时间
@prop({ required: true, type: Number, default: [] })
receivedBox: Array<number>;
@prop({ required: true, default: 0 })
seasonNum: number;
@prop({ required: true, default: true })
isFirstEntry: boolean;
public static async findByRoleId(roleId: string, getters = false) {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).lean({ getters});
return result;
@@ -114,18 +65,12 @@ export default class PvpDefense extends BaseModel {
}
public static async createPvpDefense(params: pvpUpdateInter) {
let seasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
const doc = new PvpDefenseModel();
const update = Object.assign(doc.toJSON(), params);
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true }).lean();
return defense;
}
public static async createPvpDefenseAndPopulate(params: pvpUpdateInter) {
const doc = new PvpDefenseModel();
const update = Object.assign(doc.toJSON(), params);
const update = Object.assign(doc.toJSON(), params, { seasonNum, challengeCnt: PVP.PVP_CHALLENGE_COUNTS });
const defense: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({ roleId: params.roleId }, update, { upsert: true, new: true })
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv pLv title lv defCe heroes')
.populate('role')
.lean();
return defense;
@@ -163,15 +108,15 @@ export default class PvpDefense extends BaseModel {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId })
.populate('role', 'head frame spine topLineupCe roleId roleName lv globalCeAttr')
.populate('heroes.hero')
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes').lean({ getters: true, virtuals: true });
.populate('oppPlayer.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes').lean({ getters: true, virtuals: true });
return result;
}
public static async findByTeamLv(seasonNum: number, min: number, max: number) {
const result: PvpDefenseType[] = await PvpDefenseModel.find({ seasonNum, pLv: { $gte: min, $lte: max } })
const result: PvpDefenseType[] = await PvpDefenseModel.find({ seasonNum, 'defense.pLv': { $gte: min, $lte: max } })
.populate('role', 'head frame spine heads frames spines topLineupCe roleId roleName lv globalCeAttr')
.populate('heroes.hero')
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv pLv title lv defCe heroes')
.populate('oppPlayer.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv pLv title lv defCe heroes')
.lean({ getters: true, virtuals: true });
return result;
}
@@ -180,7 +125,7 @@ export default class PvpDefense extends BaseModel {
delete update._id;
let result: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$set:update}, {new: true})
.populate('role', 'head frame spine heads frames spines topLineupCe roleId roleName lv')
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv pLv title lv defCe heroes').lean({ getters: true, virtuals: true });
.populate('oppPlayer.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv pLv title lv defCe heroes').lean({ getters: true, virtuals: true });
return result;
}
public static async updateInfo(roleId: string, update: pvpUpdateInter, lean = true) {
@@ -201,6 +146,11 @@ export default class PvpDefense extends BaseModel {
return ranks;
}
public static async resetScores(roleId: string, newSeasonNum: number, newScore: number, newHeroScores: HeroScore[]) {
let result: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$set: { seasonNum: newSeasonNum, score: newScore, heroScores: newHeroScores, challengeCnt: PVP.PVP_CHALLENGE_COUNTS, challengeRefTime: 0, winStreakNum: 0 }}, {new: true}).lean();
return result;
}
public static async deleteHero(roleId: string, hid: number) {
let result:PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$pull:{heroes: {actorId:hid}}}, {new: true}).lean();
return result;

View File

@@ -1,94 +1,54 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
class Reward {
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
}
import { Reward, HeroReward, HeroScore } from '../domain/battleField/pvp';
class HeroReward {
@index({ roleId: 1, seasonNum: 1 })
export default class PvpSeasonResult extends BaseModel {
@prop({ required: true })
hid: number;
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
}
export class HeroScores {
@prop({ required: true })
hid: number;
@prop({ required: true })
score: number;
@prop({ required: true })
goodId: number;
@prop({ required: true })
count: number;
}
export interface pvpUpdate {
rankGoods?:Array<Reward>;
oldSeasonData?: SeasonData;
show?: boolean;
heroGoods?:Array<HeroReward>;
}
class SeasonData {
@prop({ required: true })
score: number;
@prop({ required: true })
pLv: number;
@prop({ required: true, type:HeroScores, default:[] })
heroScores: HeroScores[];
roleId: string;
@prop({ required: true })
seasonNum: number;
@prop({ required: true })
challengeCnt: number;
@prop({ required: true })
challengeRefTime: number;
@prop({ required: true })
seasonEndTime: number;
@prop({ required: true })
score: number;
@prop({ required: true, type: () => HeroScore, default:[] })
heroScores: HeroScore[];
@prop({ required: true })
rankLv: number;
@prop({ required: true })
refOppCnt:number;
}
@index({ roleId: 1 })
export default class PvpSeasonResult extends BaseModel {
@prop({ required: true })
roleId: string;
@prop({ required: true, type: SeasonData, _id: false})
oldSeasonData: SeasonData;
@prop({ required: true, default: true })
show: boolean;
@prop({ required: true, type: HeroReward, default: [], _id: false})
heroGoods: Array<HeroReward>;
@prop({ required: true, type: () => HeroReward, default: [], _id: false})
heroGoods: HeroReward[];
@prop({ required: true, type: Reward, default: [], _id: false})
rankGoods: Array<Reward>;
rankGoods: Reward[];
public static async updatePvpSeasonResult(roleId: string, update: pvpUpdate , lean = true) {
let result: PvpSeasonResultType = await PvpSeasonResultModel.findOneAndUpdate({roleId}, {$set: update}, {upsert: true, new: true}).lean(lean);
@prop({ required: true })
newScore: number;
@prop({ required: true, type: () => HeroScore, default:[] })
newHeroScores: HeroScore[];
public static async updatePvpSeasonResult(roleId: string, seasonNum: number, update: PvpSeasonResultUpdate , lean = true) {
let result: PvpSeasonResultType = await PvpSeasonResultModel.findOneAndUpdate({roleId, seasonNum}, {$set: update}, {upsert: true, new: true}).lean(lean);
return result;
}
public static async getPvpSeasonResult(roleId: string, lean = true) {
let result: PvpSeasonResultType = await PvpSeasonResultModel.findOne({roleId}).lean(lean);
public static async getPvpSeasonResult(roleId: string, seasonNum: number, lean = true) {
let result: PvpSeasonResultType = await PvpSeasonResultModel.findOne({ roleId, seasonNum }).lean(lean);
return result;
}
}
export const PvpSeasonResultModel = getModelForClass(PvpSeasonResult);
export interface PvpSeasonResultType extends Pick<DocumentType<PvpSeasonResult>, keyof PvpSeasonResult> { };
export interface PvpSeasonResultType extends Pick<DocumentType<PvpSeasonResult>, keyof PvpSeasonResult> { };
export type PvpSeasonResultUpdate = Partial<PvpSeasonResultType>;

View File

@@ -732,6 +732,14 @@ export default class Role extends BaseModel {
const role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $addToSet: { guide: { $each: ids } } }, { new: true }).lean();
return role;
}
// 用于远征匹配
public static async findByCeScale(min: number, max: number) {
const result: RoleType[] = await RoleModel.find({ topLineupCe: { $lte: max, $gte: min } })
.populate('topLineup.hero')
.sort({ updatedAt: -1 }).limit(100).lean({ getters: true, virtuals: true });
return result;
}
}
export const RoleModel = getModelForClass(Role);

View File

@@ -6,17 +6,23 @@ import { COUNTER } from '../consts';
@index({ id: 1 })
@index({ seasonNum: 1 })
export default class PVPConfig extends BaseModel {
@prop({ required: true, default: 1 })
id: number;
@prop({ required: true })
warId: number; // 地图
@prop({ required: true, default: 1 })
seasonNum: number; // 赛季
@prop({ required: true })
seasonEndTime: number; //赛季结束的时间
@prop({ required: false })
settleGuildWeeklyTime: number;
@prop({ required: true })
seasonStartTime: number; // 赛季开始时间
@prop({ required: true })
seasonRewardTime: number; // 结算奖励时间
@prop({ required: true })
seasonEndTime: number; // 赛季结束的时间
@prop({ required: true })
hasSettleReward: boolean; // 赛季结束的时间
public static async findCurPVPConfig() {
let seasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
const result: PVPConfigType = await PVPConfigModel.findOne({ seasonNum }).lean(true);
@@ -28,13 +34,19 @@ export default class PVPConfig extends BaseModel {
return result;
}
public static async createPVPConfig(seasonNum: number, seasonEndTime: number, warId: number) {
const result: PVPConfigType = await PVPConfigModel.findOneAndUpdate({ seasonNum }, { warId, seasonEndTime }, { upsert: true, new: true }).lean(true);
public static async createPVPConfig(seasonNum: number, seasonStartTime: number, seasonRewardTime: number, seasonEndTime: number) {
const result: PVPConfigType = await PVPConfigModel.findOneAndUpdate({ seasonNum }, { seasonStartTime, seasonRewardTime, seasonEndTime, hasSettleReward: false }, { upsert: true, new: true }).lean(true);
return result;
}
public static async updatePVPConfig(seasonNum: number, update: { warId?: number, settleGuildWeeklyTime?: number }) {
const result: PVPConfigType = await PVPConfigModel.findOneAndUpdate({ seasonNum }, update, { new: true }).lean(true);
public static async setReward(seasonNum: number) {
const result: PVPConfigType = await PVPConfigModel.findOneAndUpdate({ seasonNum }, { hasSettleReward: true }, { new: true }).lean(true);
return result;
}
public static async setCurPvpConfig(update: PVPConfigUpdate) {
let seasonNum = await CounterModel.getCounter(COUNTER.PVP_SEASON_NUM);
const result: PVPConfigType = await PVPConfigModel.findOneAndUpdate({ seasonNum }, update).lean(true);
return result;
}
}
@@ -43,4 +55,5 @@ export const PVPConfigModel = getModelForClass(PVPConfig);
export interface PVPConfigType extends Pick<DocumentType<PVPConfig>, keyof PVPConfig> {
id: number;
};
};
export type PVPConfigUpdate = Partial<PVPConfigType>; // 将所有字段变成可选项

View File

@@ -0,0 +1,214 @@
import { prop, Ref, mongoose } from '@typegoose/typegoose';
import Hero, { } from '../../db/Hero';
import { PvpDefenseType } from '../../db/PvpDefense';
import PvpHistoryOpp from '../../db/PvpHistoryOpp';
import { PvpSeasonResultType } from '../../db/PvpSeasonResult';
import { RewardInter } from '../../pubUtils/interface';
// 防守阵容武将
export class DefenseHero {
@prop({ required: true })
actorId: number; // 武将id
@prop({ required: true })
ai: number; // ai逻辑1-进攻型 2-防守型
@prop({ required: true })
dataId: number;
@prop({ required: true })
order: number;
@prop({ ref: 'Hero', type: mongoose.Schema.Types.ObjectId })
hero: Ref<Hero>;
}
// 防守阵容
export class Defense {
@prop({ required: true })
warId: number;
@prop({ required: true })
buff: number;
@prop({ required: true, type: DefenseHero, _id: false })
heroes: DefenseHero[];
@prop({ required: true })
score: number; // 防守阵容的总军功
@prop({ required: true })
pLv: number; // 防守阵容的等级
}
// 挑战阵容武将
export class AttackHero {
@prop({ required: true })
actorId: number; // 武将id
@prop({ required: true })
order: number;
}
// 挑战阵容
export class Attack {
@prop({ required: true, type: AttackHero, _id: false })
heroes: AttackHero[];
@prop({ required: true })
score: number; // 防守阵容的总军功
@prop({ required: true })
pLv: number; // 防守阵容的等级
}
// 两个阵容中的武将的分别的战力
export class LineupCe {
@prop({ required: true })
hid: number; // 武将id
@prop({ required: true })
ce: number; // 战力
}
export class OppPlayer {
@prop({ required: true })
roleId: string;
@prop({ ref: 'PvpHistoryOpp', type: mongoose.Schema.Types.ObjectId })
oppDef: Ref<PvpHistoryOpp>;
@prop({ required: true })
pos: number;
@prop({ required: true })
isRobot: boolean;
}
export class HeroScore {
@prop({ required: true })
hid: number;
@prop({ required: true })
score: number;
}
export class Reward {
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
}
export class HeroReward {
@prop({ required: true })
hid: number;
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
}
export class OppPlayerReturn {
pos: number;
roleId: string;
roleName: string;
head: number;
frame: number;
spine: number;
lv: number;
pLv: number;
defCe: number;
rankLv: number;
addScore: number;
plusScore: number;
}
// 防守阵容武将
export class DefenseHeroReturn {
actorId: number; // 武将id
ai: number; // ai逻辑1-进攻型 2-防守型
dataId: number;
order: number;
}
export class DefenseLineupReturn {
warId: number;
buff: number;
heroes: DefenseHeroReturn[];
score: number;
pLv: number;
ce: number;
}
export class AttackLineupReturn {
warId: number;
buff: number;
heroes: AttackHero[];
score: number;
pLv: number;
ce: number;
}
export class heroScoreReturn extends HeroScore {
isDefense: boolean;
}
export class SeasonDataReturn {
score: number;
heroScores: HeroScore[];
seasonNum: number;
seasonEndTime: number;
rankLv: number;
constructor(pvpSeasonResult: PvpSeasonResultType) {
this.score = pvpSeasonResult.score;
this.heroScores = pvpSeasonResult.heroScores;
this.seasonNum = pvpSeasonResult.seasonNum;
this.seasonEndTime = pvpSeasonResult.seasonEndTime;
this.rankLv = pvpSeasonResult.rankLv;
}
}
export class PvpSeasonResultRecord {
oldSeasonData: SeasonDataReturn;
heroGoods: HeroReward[];
rankGoods: RewardInter[];
constructor(pvpSeasonResult: PvpSeasonResultType) {
this.oldSeasonData = new SeasonDataReturn(pvpSeasonResult);
this.heroGoods = pvpSeasonResult.heroGoods;
this.rankGoods = pvpSeasonResult.rankGoods;
}
}
export class PvpDataReturn {
seasonNum: number;
seasonEndTime: number;
myRank: number = 0;
oppPlayers: OppPlayerReturn[] = [];
defense: DefenseLineupReturn = null;
attack: AttackLineupReturn = null;
score: number = 0;
winStreakNum: number = 0;
refOppCnt: number;
setAttackCnt: number;
challengeCnt: number;
challengeRefTime: number;
receiveBox: number[] = [];
hisScore: number = 0;
heroScores: heroScoreReturn[] = [];
isFirstEntry: boolean = false;
resultRecord: PvpSeasonResultRecord;
constructor(pvpDefense: PvpDefenseType) {
this.score = pvpDefense.score;
this.winStreakNum = pvpDefense.winStreakNum;
this.receiveBox = pvpDefense.receivedBox;
this.hisScore = pvpDefense.hisScore;
// this.oppPlayers
// this.heroScores
}
setOppPlayers(oppPlayers: OppPlayerReturn[]) {
this.oppPlayers = oppPlayers;
}
setMyRank(rankLv: number) {
this.myRank = rankLv;
}
setPvpConfig(seasonNum: number, seasonEndTime: number) {
this.seasonNum = seasonNum;
this.seasonEndTime = seasonEndTime;
}
setPvpSeasonResult(pvpSeasonResult: PvpSeasonResultType) {
this.resultRecord = new PvpSeasonResultRecord(pvpSeasonResult);
}
}

View File

@@ -41,8 +41,8 @@ export class PvpHeroInfo {
this.quality = hero.quality;
}
setRobotInfo(warjson: DicWarJson, lv: number, initialStar: number, quality: number) {
this.actorId = warjson.actorId;
setRobotInfo(warjson: DicWarJson, actorId: number, lv: number, initialStar: number, quality: number) {
this.actorId = actorId;
this.skinId = warjson.actorId;
this.actorName = warjson.actorName;
this.star = initialStar;

View File

@@ -1,4 +1,4 @@
import { HeroScores } from "../../db/PvpHistoryOpp";
import { HeroScore } from "../../domain/battleField/pvp";
export class TaskParam {
star?: number;
@@ -17,7 +17,7 @@ export class TaskParam {
dailyType?: number;
point?: number;
gid?: number;
heroScores?: HeroScores[];
heroScores?: HeroScore[];
rankLv?: number;
title?: number;
job?: number;

View File

@@ -38,7 +38,6 @@ import { dicHeroScroll, preHeroScroll, loadHeroScroll } from './dictionary/DicHe
import { dicPvpOpponent, loadPvpOpponent } from './dictionary/DicPvpOpponent';
import { dicPvpTeamLevel, loadPvpTeamLevel } from './dictionary/DicPvpTeamLevel';
import { dicPvpRefreshConsume, maxPvpRefreshCnt, loadPvpRefreshConsume } from './dictionary/DicPvpRefreshConsume';
import { dicGkPvp, dicGkPvps, loadGkPvp } from './dictionary/DicGkPvp';
import { dicHeroRewads, loadPvpHeroReward } from './dictionary/DicPvpHeroReward';
import { dicRankRewads, dicRankMax, loadPvpRankReward } from './dictionary/DicPvpRankReward';
import { dicPvpBoxs, loadPvpBox } from './dictionary/DicPvpBox';
@@ -153,8 +152,6 @@ export const gameData = {
pvpWar: dicWarPvp,
pvpRefreshConsume: dicPvpRefreshConsume,
maxPvpRefreshCnt: maxPvpRefreshCnt,
pvpGk: dicGkPvp,
pvpGks: dicGkPvps,
pvpHeroRewards: dicHeroRewads,
pvpRankRewards: dicRankRewads,
pvpBoxs: dicPvpBoxs,
@@ -450,21 +447,22 @@ export function getPLvByScore(score: number) {
return lv;
}
export function getPvpGkByWarId(warId: number) {
return gameData.pvpGk.get(warId);
export function getPvpHeroRewardsByScore(score: number) {
for (let item of gameData.pvpHeroRewards) {
if ((item.max >= score || item.max == -1) && score >= item.min) {
return item;
}
}
return null
}
export function getPvpGkWarIds() {
let warIds = gameData.pvpGks;
return warIds;
}
export function getPvpHeroRewards() {
return gameData.pvpHeroRewards;
}
export function getPvpRankRewards() {
return gameData.pvpRankRewards;
export function getPvpRankRewardsByRank(rankLv: number) {
for (let item of gameData.pvpRankRewards) {
if ((item.max >= rankLv || item.max == -1) && rankLv >= item.min) {
return item;
}
}
return gameData.pvpRankMax.max;
}
export function getPvpBoxs() {
@@ -876,7 +874,6 @@ function loadDatas() {
loadPvpOpponent();
loadPvpTeamLevel();
loadPvpRefreshConsume();
loadGkPvp();
loadPvpHeroReward();
loadPvpRankReward();
loadPvpBox();

View File

@@ -1,23 +0,0 @@
import { readFileAndParse } from '../util'
import { FILENAME } from '../../consts'
export interface DicGkPvp {
readonly war_id: number;
readonly dispatchJsonId: number;
readonly bg_img_id: number;
readonly warType: number;
}
export const dicGkPvp = new Map<number, DicGkPvp>();
export const dicGkPvps = new Array<number>();
export function loadGkPvp() {
dicGkPvp.clear();
dicGkPvps.splice(0, dicGkPvps.length);
let arr = readFileAndParse(FILENAME.DIC_GK_PVP);
arr.forEach(o => {
dicGkPvp.set(o.war_id, o);
dicGkPvps.push(o.war_id);
});
arr = undefined;
}

View File

@@ -1,5 +1,5 @@
// 关卡表
import {decodeArrayListStr, readWarJsonFileAndParse} from '../util'
import {decodeArrayListStr, parseNumberList, readWarJsonFileAndParse} from '../util'
export interface DicWarJson {
@@ -47,6 +47,8 @@ export interface DicWarJson {
readonly callSkillData: string;
// 敌军数量
readonly enemyCount: number;
// pvp中随机敌军
readonly randomEnemy: number[];
}
export const dicWarJson = new Map<number, Array<DicWarJson>>();
@@ -63,6 +65,7 @@ export function loadWarJson() {
if(o.relation == 2) enemyCount++;
});
arr.forEach(o => {
o.randomEnemy = parseNumberList(o.randomEnemy);
o.enemyCount = enemyCount;
warjson.push(o);
});

View File

@@ -29,20 +29,6 @@ export interface SclResultInter {
position: SclPosInter[]
}
// pvp对手返回
export interface oppPlayersInter {
pos: number; // 对手位置
roleId: string; // 对手玩家id
roleName: string; // 对手玩家名
head: number; // 头像
frame: number; // 相框
spine: number; // 形象
pLv: number; // 对手队伍等级
defCe: number; // 防守阵容战力
addScore: number; // 战胜后可获军功
plusScore: number; // 连胜加成军功
rankLv: number;
}
export interface pvpEndParamInter {
hid: number;

View File

@@ -0,0 +1,44 @@
[
{
"id": 1,
"teamLineupMin": 0,
"teamLineupMax": 500,
"value": 10000,
"enemyLv": 10
},
{
"id": 2,
"teamLineupMin": 501,
"teamLineupMax": 1020,
"value": 15000,
"enemyLv": 15
},
{
"id": 3,
"teamLineupMin": 1021,
"teamLineupMax": 1560,
"value": 20000,
"enemyLv": 20
},
{
"id": 4,
"teamLineupMin": 1561,
"teamLineupMax": 2120,
"value": 25000,
"enemyLv": 25
},
{
"id": 5,
"teamLineupMin": 2121,
"teamLineupMax": 2700,
"value": 30000,
"enemyLv": 30
},
{
"id": 6,
"teamLineupMin": 2701,
"teamLineupMax": 3000,
"value": 35000,
"enemyLv": 35
}
]

View File

@@ -17,7 +17,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -37,7 +38,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -57,7 +59,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -77,7 +80,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -97,7 +101,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -117,7 +122,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -137,7 +143,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -157,7 +164,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -177,12 +185,13 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
"actorName": "曹操",
"actorId": 301,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
@@ -193,16 +202,17 @@
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3000|2&600|4&250|5&250|9&0|10&25000|11&20000|12&0|13&10000|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "301&306&307"
},
{
"warId": 4501,
"actorName": "郭嘉",
"actorId": 305,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
@@ -213,16 +223,17 @@
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&5000|2&400|4&600|5&600|9&0|10&10000|11&30000|12&10000|13&0|14&20000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4501,
"actorName": "张飞",
"actorId": 317,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
@@ -233,16 +244,17 @@
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&2500|2&700|4&200|5&200|9&0|10&20000|11&10000|12&0|13&10000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4501,
"actorName": "黄忠",
"actorId": 321,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
@@ -253,16 +265,17 @@
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&4000|2&500|4&300|5&300|9&10000|10&0|11&0|12&0|13&5000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4501,
"actorName": "华佗",
"actorId": 346,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
@@ -273,11 +286,12 @@
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3500|2&500|4&400|5&400|9&0|10&0|11&0|12&0|13&0|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "346&"
},
{
"warId": 4501,
@@ -297,7 +311,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -317,7 +332,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4501,
@@ -337,7 +353,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4501,
@@ -357,6 +374,7 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
}
]

View File

@@ -7,9 +7,9 @@
"relation": 0,
"outIndex": 0,
"dirction": 2,
"x": 6,
"y": 8,
"var": 0,
"x": 4,
"y": 6,
"var": 501,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -17,7 +17,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -27,9 +28,9 @@
"relation": 0,
"outIndex": 1,
"dirction": 2,
"x": 7,
"y": 8,
"var": 1,
"x": 5,
"y": 6,
"var": 502,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -37,7 +38,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -47,9 +49,9 @@
"relation": 0,
"outIndex": 2,
"dirction": 2,
"x": 7,
"y": 7,
"var": 2,
"x": 5,
"y": 5,
"var": 503,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -57,7 +59,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -67,9 +70,9 @@
"relation": 0,
"outIndex": 3,
"dirction": 2,
"x": 6,
"y": 6,
"var": 3,
"x": 4,
"y": 4,
"var": 504,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -77,7 +80,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -87,9 +91,9 @@
"relation": 0,
"outIndex": 4,
"dirction": 2,
"x": 7,
"y": 6,
"var": 4,
"x": 5,
"y": 4,
"var": 505,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -97,7 +101,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -107,9 +112,9 @@
"relation": 0,
"outIndex": 5,
"dirction": 2,
"x": 5,
"y": 8,
"var": 5,
"x": 3,
"y": 6,
"var": 506,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -117,7 +122,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -127,9 +133,9 @@
"relation": 0,
"outIndex": 6,
"dirction": 2,
"x": 5,
"y": 7,
"var": 6,
"x": 3,
"y": 5,
"var": 507,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -137,7 +143,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -147,9 +154,9 @@
"relation": 0,
"outIndex": 7,
"dirction": 2,
"x": 6,
"y": 7,
"var": 7,
"x": 4,
"y": 5,
"var": 508,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -157,7 +164,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -167,9 +175,9 @@
"relation": 0,
"outIndex": 8,
"dirction": 2,
"x": 5,
"y": 6,
"var": 8,
"x": 3,
"y": 4,
"var": 509,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -177,107 +185,113 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
"actorName": "曹操",
"actorId": 301,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
"dirction": 1,
"x": 13,
"y": 8,
"var": 2001,
"x": 12,
"y": 6,
"var": 1501,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3000|2&600|4&250|5&250|9&0|10&25000|11&20000|12&0|13&10000|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
"actorName": "郭嘉",
"actorId": 305,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
"dirction": 1,
"x": 14,
"y": 8,
"var": 2002,
"x": 13,
"y": 6,
"var": 1502,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&5000|2&400|4&600|5&600|9&0|10&10000|11&30000|12&10000|13&0|14&20000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4502,
"actorName": "张飞",
"actorId": 317,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
"dirction": 1,
"x": 13,
"y": 7,
"var": 2003,
"y": 5,
"var": 1503,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&2500|2&700|4&200|5&200|9&0|10&20000|11&10000|12&0|13&10000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4502,
"actorName": "黄忠",
"actorId": 321,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
"dirction": 1,
"x": 12,
"y": 6,
"var": 2004,
"x": 11,
"y": 4,
"var": 1504,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&4000|2&500|4&300|5&300|9&10000|10&0|11&0|12&0|13&5000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4502,
"actorName": "华佗",
"actorId": 346,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
"dirction": 1,
"x": 13,
"y": 6,
"var": 2005,
"x": 12,
"y": 4,
"var": 1505,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3500|2&500|4&400|5&400|9&0|10&0|11&0|12&0|13&0|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -287,9 +301,9 @@
"relation": 2,
"outIndex": 5,
"dirction": 1,
"x": 12,
"y": 8,
"var": 2006,
"x": 13,
"y": 4,
"var": 1506,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -297,7 +311,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4502,
@@ -307,9 +322,9 @@
"relation": 2,
"outIndex": 6,
"dirction": 1,
"x": 12,
"y": 7,
"var": 2007,
"x": 11,
"y": 6,
"var": 1507,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -317,7 +332,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4502,
@@ -327,9 +343,9 @@
"relation": 2,
"outIndex": 7,
"dirction": 1,
"x": 14,
"y": 7,
"var": 2008,
"x": 11,
"y": 5,
"var": 1508,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -337,7 +353,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4502,
@@ -347,9 +364,9 @@
"relation": 2,
"outIndex": 8,
"dirction": 1,
"x": 14,
"y": 6,
"var": 2009,
"x": 12,
"y": 5,
"var": 1509,
"lv": 0,
"hide": 0,
"initial_ai": 1,
@@ -357,6 +374,7 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "301&306&307"
}
]

View File

@@ -7,8 +7,8 @@
"relation": 0,
"outIndex": 0,
"dirction": 2,
"x": 2,
"y": 6,
"x": 6,
"y": 8,
"var": 0,
"lv": 0,
"hide": 0,
@@ -17,7 +17,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -27,8 +28,8 @@
"relation": 0,
"outIndex": 1,
"dirction": 2,
"x": 3,
"y": 6,
"x": 7,
"y": 8,
"var": 1,
"lv": 0,
"hide": 0,
@@ -37,7 +38,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -47,8 +49,8 @@
"relation": 0,
"outIndex": 2,
"dirction": 2,
"x": 4,
"y": 6,
"x": 7,
"y": 7,
"var": 2,
"lv": 0,
"hide": 0,
@@ -57,7 +59,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -67,8 +70,8 @@
"relation": 0,
"outIndex": 3,
"dirction": 2,
"x": 2,
"y": 5,
"x": 6,
"y": 6,
"var": 3,
"lv": 0,
"hide": 0,
@@ -77,7 +80,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -87,8 +91,8 @@
"relation": 0,
"outIndex": 4,
"dirction": 2,
"x": 3,
"y": 5,
"x": 7,
"y": 6,
"var": 4,
"lv": 0,
"hide": 0,
@@ -97,7 +101,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -107,8 +112,8 @@
"relation": 0,
"outIndex": 5,
"dirction": 2,
"x": 4,
"y": 5,
"x": 5,
"y": 8,
"var": 5,
"lv": 0,
"hide": 0,
@@ -117,7 +122,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -127,8 +133,8 @@
"relation": 0,
"outIndex": 6,
"dirction": 2,
"x": 2,
"y": 4,
"x": 5,
"y": 7,
"var": 6,
"lv": 0,
"hide": 0,
@@ -137,7 +143,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -147,8 +154,8 @@
"relation": 0,
"outIndex": 7,
"dirction": 2,
"x": 3,
"y": 4,
"x": 6,
"y": 7,
"var": 7,
"lv": 0,
"hide": 0,
@@ -157,7 +164,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -167,8 +175,8 @@
"relation": 0,
"outIndex": 8,
"dirction": 2,
"x": 4,
"y": 4,
"x": 5,
"y": 6,
"var": 8,
"lv": 0,
"hide": 0,
@@ -177,107 +185,113 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
"actorName": "曹操",
"actorId": 301,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
"dirction": 1,
"x": 11,
"y": 6,
"x": 13,
"y": 8,
"var": 2001,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3000|2&600|4&250|5&250|9&0|10&25000|11&20000|12&0|13&10000|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "301&306&307"
},
{
"warId": 4503,
"actorName": "郭嘉",
"actorId": 305,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
"dirction": 1,
"x": 12,
"y": 6,
"x": 14,
"y": 8,
"var": 2002,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&5000|2&400|4&600|5&600|9&0|10&10000|11&30000|12&10000|13&0|14&20000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4503,
"actorName": "张飞",
"actorId": 317,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
"dirction": 1,
"x": 13,
"y": 6,
"y": 7,
"var": 2003,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&2500|2&700|4&200|5&200|9&0|10&20000|11&10000|12&0|13&10000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4503,
"actorName": "黄忠",
"actorId": 321,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
"dirction": 1,
"x": 11,
"y": 5,
"x": 12,
"y": 6,
"var": 2004,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&4000|2&500|4&300|5&300|9&10000|10&0|11&0|12&0|13&5000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4503,
"actorName": "华佗",
"actorId": 346,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
"dirction": 1,
"x": 12,
"y": 5,
"x": 13,
"y": 6,
"var": 2005,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3500|2&500|4&400|5&400|9&0|10&0|11&0|12&0|13&0|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "346&"
},
{
"warId": 4503,
@@ -287,8 +301,8 @@
"relation": 2,
"outIndex": 5,
"dirction": 1,
"x": 13,
"y": 5,
"x": 12,
"y": 8,
"var": 2006,
"lv": 0,
"hide": 0,
@@ -297,7 +311,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -307,8 +322,8 @@
"relation": 2,
"outIndex": 6,
"dirction": 1,
"x": 11,
"y": 4,
"x": 12,
"y": 7,
"var": 2007,
"lv": 0,
"hide": 0,
@@ -317,7 +332,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4503,
@@ -327,8 +343,8 @@
"relation": 2,
"outIndex": 7,
"dirction": 1,
"x": 12,
"y": 4,
"x": 14,
"y": 7,
"var": 2008,
"lv": 0,
"hide": 0,
@@ -337,7 +353,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4503,
@@ -347,8 +364,8 @@
"relation": 2,
"outIndex": 8,
"dirction": 1,
"x": 13,
"y": 4,
"x": 14,
"y": 6,
"var": 2009,
"lv": 0,
"hide": 0,
@@ -357,6 +374,7 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
}
]

View File

@@ -7,8 +7,8 @@
"relation": 0,
"outIndex": 0,
"dirction": 2,
"x": 4,
"y": 7,
"x": 6,
"y": 8,
"var": 0,
"lv": 0,
"hide": 0,
@@ -17,7 +17,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -27,8 +28,8 @@
"relation": 0,
"outIndex": 1,
"dirction": 2,
"x": 5,
"y": 7,
"x": 7,
"y": 8,
"var": 1,
"lv": 0,
"hide": 0,
@@ -37,7 +38,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -47,8 +49,8 @@
"relation": 0,
"outIndex": 2,
"dirction": 2,
"x": 5,
"y": 6,
"x": 7,
"y": 7,
"var": 2,
"lv": 0,
"hide": 0,
@@ -57,7 +59,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -67,8 +70,8 @@
"relation": 0,
"outIndex": 3,
"dirction": 2,
"x": 4,
"y": 5,
"x": 6,
"y": 6,
"var": 3,
"lv": 0,
"hide": 0,
@@ -77,7 +80,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -87,8 +91,8 @@
"relation": 0,
"outIndex": 4,
"dirction": 2,
"x": 5,
"y": 5,
"x": 7,
"y": 6,
"var": 4,
"lv": 0,
"hide": 0,
@@ -97,7 +101,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -107,8 +112,8 @@
"relation": 0,
"outIndex": 5,
"dirction": 2,
"x": 3,
"y": 6,
"x": 5,
"y": 8,
"var": 5,
"lv": 0,
"hide": 0,
@@ -117,7 +122,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -127,8 +133,8 @@
"relation": 0,
"outIndex": 6,
"dirction": 2,
"x": 4,
"y": 6,
"x": 5,
"y": 7,
"var": 6,
"lv": 0,
"hide": 0,
@@ -137,7 +143,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -147,7 +154,7 @@
"relation": 0,
"outIndex": 7,
"dirction": 2,
"x": 3,
"x": 6,
"y": 7,
"var": 7,
"lv": 0,
@@ -157,7 +164,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -167,8 +175,8 @@
"relation": 0,
"outIndex": 8,
"dirction": 2,
"x": 3,
"y": 5,
"x": 5,
"y": 6,
"var": 8,
"lv": 0,
"hide": 0,
@@ -177,107 +185,113 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
"actorName": "曹操",
"actorId": 301,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
"dirction": 1,
"x": 13,
"y": 7,
"y": 8,
"var": 2001,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3000|2&600|4&250|5&250|9&0|10&25000|11&20000|12&0|13&10000|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
"actorName": "郭嘉",
"actorId": 305,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
"dirction": 1,
"x": 14,
"y": 7,
"y": 8,
"var": 2002,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&5000|2&400|4&600|5&600|9&0|10&10000|11&30000|12&10000|13&0|14&20000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4504,
"actorName": "张飞",
"actorId": 317,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
"dirction": 1,
"x": 14,
"y": 6,
"x": 13,
"y": 7,
"var": 2003,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&2500|2&700|4&200|5&200|9&0|10&20000|11&10000|12&0|13&10000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4504,
"actorName": "黄忠",
"actorId": 321,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
"dirction": 1,
"x": 13,
"y": 5,
"x": 12,
"y": 6,
"var": 2004,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&4000|2&500|4&300|5&300|9&10000|10&0|11&0|12&0|13&5000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4504,
"actorName": "华佗",
"actorId": 346,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
"dirction": 1,
"x": 12,
"y": 5,
"x": 13,
"y": 6,
"var": 2005,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3500|2&500|4&400|5&400|9&0|10&0|11&0|12&0|13&0|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -288,7 +302,7 @@
"outIndex": 5,
"dirction": 1,
"x": 12,
"y": 7,
"y": 8,
"var": 2006,
"lv": 0,
"hide": 0,
@@ -297,7 +311,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4504,
@@ -308,7 +323,7 @@
"outIndex": 6,
"dirction": 1,
"x": 12,
"y": 6,
"y": 7,
"var": 2007,
"lv": 0,
"hide": 0,
@@ -317,7 +332,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4504,
@@ -327,8 +343,8 @@
"relation": 2,
"outIndex": 7,
"dirction": 1,
"x": 13,
"y": 6,
"x": 14,
"y": 7,
"var": 2008,
"lv": 0,
"hide": 0,
@@ -337,7 +353,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4504,
@@ -348,7 +365,7 @@
"outIndex": 8,
"dirction": 1,
"x": 14,
"y": 5,
"y": 6,
"var": 2009,
"lv": 0,
"hide": 0,
@@ -357,6 +374,7 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "301&306&307"
}
]

View File

@@ -7,7 +7,7 @@
"relation": 0,
"outIndex": 0,
"dirction": 2,
"x": 3,
"x": 2,
"y": 6,
"var": 0,
"lv": 0,
@@ -17,7 +17,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -27,7 +28,7 @@
"relation": 0,
"outIndex": 1,
"dirction": 2,
"x": 4,
"x": 3,
"y": 6,
"var": 1,
"lv": 0,
@@ -37,7 +38,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -48,7 +50,7 @@
"outIndex": 2,
"dirction": 2,
"x": 4,
"y": 5,
"y": 6,
"var": 2,
"lv": 0,
"hide": 0,
@@ -57,7 +59,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -67,8 +70,8 @@
"relation": 0,
"outIndex": 3,
"dirction": 2,
"x": 3,
"y": 4,
"x": 2,
"y": 5,
"var": 3,
"lv": 0,
"hide": 0,
@@ -77,7 +80,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -87,8 +91,8 @@
"relation": 0,
"outIndex": 4,
"dirction": 2,
"x": 4,
"y": 4,
"x": 3,
"y": 5,
"var": 4,
"lv": 0,
"hide": 0,
@@ -97,7 +101,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -107,8 +112,8 @@
"relation": 0,
"outIndex": 5,
"dirction": 2,
"x": 2,
"y": 6,
"x": 4,
"y": 5,
"var": 5,
"lv": 0,
"hide": 0,
@@ -117,7 +122,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -128,7 +134,7 @@
"outIndex": 6,
"dirction": 2,
"x": 2,
"y": 5,
"y": 4,
"var": 6,
"lv": 0,
"hide": 0,
@@ -137,7 +143,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -148,7 +155,7 @@
"outIndex": 7,
"dirction": 2,
"x": 3,
"y": 5,
"y": 4,
"var": 7,
"lv": 0,
"hide": 0,
@@ -157,7 +164,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -167,7 +175,7 @@
"relation": 0,
"outIndex": 8,
"dirction": 2,
"x": 2,
"x": 4,
"y": 4,
"var": 8,
"lv": 0,
@@ -177,107 +185,113 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
"actorName": "曹操",
"actorId": 301,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
"dirction": 1,
"x": 14,
"x": 11,
"y": 6,
"var": 2001,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3000|2&600|4&250|5&250|9&0|10&25000|11&20000|12&0|13&10000|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "301&306&307"
},
{
"warId": 4505,
"actorName": "郭嘉",
"actorId": 305,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
"dirction": 1,
"x": 15,
"x": 12,
"y": 6,
"var": 2002,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&5000|2&400|4&600|5&600|9&0|10&10000|11&30000|12&10000|13&0|14&20000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4505,
"actorName": "张飞",
"actorId": 317,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
"dirction": 1,
"x": 15,
"y": 5,
"x": 13,
"y": 6,
"var": 2003,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&2500|2&700|4&200|5&200|9&0|10&20000|11&10000|12&0|13&10000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4505,
"actorName": "黄忠",
"actorId": 321,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
"dirction": 1,
"x": 14,
"y": 4,
"x": 11,
"y": 5,
"var": 2004,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&4000|2&500|4&300|5&300|9&10000|10&0|11&0|12&0|13&5000|14&0|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4505,
"actorName": "华佗",
"actorId": 346,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
"dirction": 1,
"x": 15,
"y": 4,
"x": 12,
"y": 5,
"var": 2005,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "1&3500|2&500|4&400|5&400|9&0|10&0|11&0|12&0|13&0|14&10000|18&0",
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "346&"
},
{
"warId": 4505,
@@ -288,7 +302,7 @@
"outIndex": 5,
"dirction": 1,
"x": 13,
"y": 6,
"y": 5,
"var": 2006,
"lv": 0,
"hide": 0,
@@ -297,7 +311,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -307,8 +322,8 @@
"relation": 2,
"outIndex": 6,
"dirction": 1,
"x": 13,
"y": 5,
"x": 11,
"y": 4,
"var": 2007,
"lv": 0,
"hide": 0,
@@ -317,7 +332,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4505,
@@ -327,8 +343,8 @@
"relation": 2,
"outIndex": 7,
"dirction": 1,
"x": 14,
"y": 5,
"x": 12,
"y": 4,
"var": 2008,
"lv": 0,
"hide": 0,
@@ -337,7 +353,8 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4505,
@@ -357,6 +374,7 @@
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0
"spine": 0,
"randomEnemy": "&"
}
]

View File

@@ -0,0 +1,380 @@
[
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 0,
"dirction": 2,
"x": 2,
"y": 6,
"var": 0,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 1,
"dirction": 2,
"x": 3,
"y": 6,
"var": 1,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 2,
"dirction": 2,
"x": 4,
"y": 6,
"var": 2,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 3,
"dirction": 2,
"x": 2,
"y": 5,
"var": 3,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 4,
"dirction": 2,
"x": 3,
"y": 5,
"var": 4,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 5,
"dirction": 2,
"x": 4,
"y": 5,
"var": 5,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 6,
"dirction": 2,
"x": 2,
"y": 4,
"var": 6,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 7,
"dirction": 2,
"x": 3,
"y": 4,
"var": 7,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "我军",
"actorId": 0,
"dataId": 0,
"relation": 0,
"outIndex": 8,
"dirction": 2,
"x": 4,
"y": 4,
"var": 8,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2001,
"relation": 2,
"outIndex": 0,
"dirction": 1,
"x": 11,
"y": 6,
"var": 2001,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2002,
"relation": 2,
"outIndex": 1,
"dirction": 1,
"x": 12,
"y": 6,
"var": 2002,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "305&312"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2003,
"relation": 2,
"outIndex": 2,
"dirction": 1,
"x": 13,
"y": 6,
"var": 2003,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "317&314&318&320&321"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2004,
"relation": 2,
"outIndex": 3,
"dirction": 1,
"x": 11,
"y": 5,
"var": 2004,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2005,
"relation": 2,
"outIndex": 4,
"dirction": 1,
"x": 12,
"y": 5,
"var": 2005,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2006,
"relation": 2,
"outIndex": 5,
"dirction": 1,
"x": 13,
"y": 5,
"var": 2006,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "321&333&334&335"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2007,
"relation": 2,
"outIndex": 6,
"dirction": 1,
"x": 11,
"y": 4,
"var": 2007,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "&"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2008,
"relation": 2,
"outIndex": 7,
"dirction": 1,
"x": 12,
"y": 4,
"var": 2008,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "340&341&342"
},
{
"warId": 4506,
"actorName": "敌军",
"actorId": 0,
"dataId": 2009,
"relation": 2,
"outIndex": 8,
"dirction": 1,
"x": 13,
"y": 4,
"var": 2009,
"lv": 0,
"hide": 0,
"initial_ai": 1,
"attribute": "&",
"skill": 0,
"seid": "&",
"star": 0,
"spine": 0,
"randomEnemy": "301&306&307"
}
]