试炼调试数据

This commit is contained in:
mamengke01
2021-02-01 14:08:45 +08:00
parent 8770fd9ea7
commit 67668097d6
16 changed files with 206 additions and 97 deletions

View File

@@ -4,7 +4,6 @@ import { resResult } from '../../../pubUtils/util';
import { STATUS, GUILD_OPERATE } from '../../../consts';
import { GuildRefineModel } from '../../../db/GuildRefine';
import { getArmyDevelopConsumeById, getGoodById } from '../../../pubUtils/data';
import { EquipModel } from '../../../db/Equip';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { handleCost, addItems } from '../../../services/rewardService';
import { GuildModel } from '../../../db/Guild';
@@ -15,7 +14,6 @@ import { checkAuth } from '../../../services/guildService';
import { ARMY } from '../../../pubUtils/dicParam';
import { CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/constModules/itemConst';
import { openGuildRefine } from '../../../services/guildRefineService';
import { now } from 'moment';
export default function (app: Application) {
return new GuildRefineHandler(app);
}

View File

@@ -33,7 +33,7 @@ export class GuildTrainHandler {
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild;
let { trainId } = await GuildModel.findGuild(code, serverId, 'trainId');
let { trainId, trainLv } = await GuildModel.findGuild(code, serverId, 'trainId trainLv');
let guildTrain = await GuildTrainModel.findTrainByTrainIdNotLock(code, trainId);
if (!guildTrain ) {
guildTrain = await unlockTrain(code, trainId);
@@ -41,6 +41,7 @@ export class GuildTrainHandler {
let { trainCount, trainRewards, buyTrainCount } = userGuild;
let result:any = getGuildTrainInfo(guildTrain, roleId, trainCount, trainRewards);
result.buyTrainCount = buyTrainCount;
result.trainLv = trainLv;
return resResult(STATUS.SUCCESS, result);
}
//获得试炼战报
@@ -65,7 +66,7 @@ export class GuildTrainHandler {
}
reports.push(...resReports);
});
return resResult(STATUS.SUCCESS, {reports});
return resResult(STATUS.SUCCESS, { reports });
}
//获得试炼宝箱
@@ -199,7 +200,7 @@ export class GuildTrainHandler {
ranks.push({score: addScore, roleId});
}
let needLockNext = false;
let report = {roleName, trainId, hid, score: addScore, time: nowSeconds(), isSuccessed: isSuccess, type: 1};//1表示普通战报 2表示系统战报即被成功压制
let report = {roleName, trainId, hid, score: addScore, time: nowSeconds(), type: isSuccess?2:1, difficulty: battleRecord.record.difficulty};//1表示普通战报 2表示系统战报即被成功压制
reports.push(report);
if (trainInstance.progress < instance.progress ) {
if (trainInstance.progress + addScore >= instance.progress) {
@@ -217,7 +218,7 @@ export class GuildTrainHandler {
let progress = instance.progress;
guildTrain = await GuildTrainModel.updateGuildTrainProgress(code, trainId, hid, progress, ranks, isComplete);
if (needLockNext) { //
reports.push({ isSuccessed: true, type: 2, time:nowSeconds(), score: addScore, roleName, trainId, hid });
reports.push({ type: 3, time:nowSeconds(), score: addScore, roleName, trainId, hid, difficulty: battleRecord.record.difficulty });
guildTrain = await unlockTrain(code, trainId + 1);
}
res.releaseCallback();//解锁

View File

@@ -1,16 +1,17 @@
import { Application, BackendSession } from 'pinus';
import { UserGuildModel } from '../../../db/UserGuild';
import { GuildModel } from '../../../db/Guild';
import { resResult } from '../../../pubUtils/util';
import { WishPoolReportModel } from '../../../db/WishPoolReport';
import { resResult, genCode } from '../../../pubUtils/util';
import { STATUS } from '../../../consts';
import { DonationModel } from '../../../db/Donation';
import { nowSeconds } from '../../../pubUtils/timeUtil';
import { getArmyDonateBaseByLv, getArmyDonateBoxBaseById } from '../../../pubUtils/data';
import { getArmyWishPoolBaseByLv, getGoodById } from '../../../pubUtils/data';
import { handleCost, addItems } from '../../../services/rewardService';
import { CHAT_SERVER } from '../../../consts';
import { getDonation } from '../../../services/donateService';
import { GUILD_STRUCTURE } from '../../../consts/constModules/guildConst';
import { getUserGuildWithRefActive } from '../../../services/guildService';
import { ARMY } from '../../../pubUtils/dicParam';
import { findIndex, findWhere } from 'underscore';
export default function(app: Application) {
return new WishPoolHandler(app);
}
@@ -29,23 +30,92 @@ export class WishPoolHandler {
let userGuilds = await UserGuildModel.getWishPoolGoods(code, ' wishDntCnt wishGoods');
let list = [];
userGuilds.map(({ wishGoods })=>{
// wishGoods.map(({ type, goodId, count, receiveCnt, drawCnt, _id })=>{
// list.push({ type, goodId, count, receiveCnt, drawCnt, id: _id })
// });
wishGoods.map(({ type, goodId, count, receiveCnt, drawCnt, id })=>{
list.push({ type, goodId, count, receiveCnt, drawCnt, id })
});
});
return resResult(STATUS.SUCCESS, { list, wishDntCnt, wishGoods });
}
async wishGoods(msg: {roleId: string, id: number}, session: BackendSession) {
// 许愿
async wishGoods(msg: {goodId: number, type: number}, session: BackendSession) {
const { goodId, type } = msg;
const roleId: string = session.get('roleId');
const serverId: number = parseInt(session.get('serverId'));
let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode');
let count;
let goodInfo = getGoodById(goodId)
if (!goodInfo)
return resResult(STATUS.WRONG_PARMS);
let userGuild = await getUserGuildWithRefActive(roleId, ' wishDntCnt wishGoods guildCode wishGoods');
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code, wishDntCnt, wishGoods } = userGuild;
const { wishPoolLv } = await GuildModel.findGuild(code, serverId);
let { structure } = await GuildModel.findGuild(code, serverId, 'structure');
let { lv } = findWhere(structure, {id: GUILD_STRUCTURE.DONATE});
let { wishGoodsEquips, wishGoodsHeros } = getArmyWishPoolBaseByLv(lv);
let len = wishGoods.length;
if (len >= 1) //今日已经许愿过
return resResult(STATUS.WRONG_PARMS);
if (type == 1) {
let wishGoodsEquip = findWhere(wishGoodsEquips, { quality: goodInfo.quality});
count = wishGoodsEquip.count;
} else {
let wishGoodsHero = findWhere(wishGoodsHeros, { quality: goodInfo.quality});
count = wishGoodsHero.count;
}
const id = genCode(6);
let { wishGoods : resWishGoods } = await UserGuildModel.pushAndUpdate(roleId, { wishGoods }, { wishGoods: { type, goodId, count, receiveCnt: 0, drawCnt: 0, id} }, 'wishGoods');
return resResult(STATUS.SUCCESS, { wishDntCnt, wishGoods: resWishGoods });
}
// 捐赠
async donateGoods(msg: {wishRoleId: string, id: string}, session: BackendSession) {
let { wishRoleId, id } = msg;
const dntRoleId: string = session.get('roleId');
const serverId: number = parseInt(session.get('serverId'));
const dntRoleName: string = session.get('roleName');
let wishUserGuild = await getUserGuildWithRefActive(wishRoleId, ' wishDntCnt wishGoods guildCode wishGoods');
if (!wishUserGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code, wishGoods } = wishUserGuild;
const { } = await GuildModel.findGuild(code, serverId);
let wishGood = findWhere(wishGoods, { id });
if (wishGood) {
}
// WishPoolReportModel.addReport(code, roleId: wishRoleId, roleName: , dntRoleId, dntRoleName, goodId, 1);
}
async receiveGoods(msg: { id: string }, session: BackendSession) {
let { id } = msg;
const roleId: string = session.get('roleId');
const roleName: string = session.get('roleName');
const sid: string = session.get('sid');
let userGuild = await getUserGuildWithRefActive(roleId, 'donateCnt receiveBoxs guildCode');
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code, wishGoods } = userGuild;
let index = findIndex(wishGoods, { id });
if (index == -1)
return resResult(STATUS.WRONG_PARMS);
let { drawCnt, goodId } = wishGoods[index];
if (drawCnt <= 0)
return resResult(STATUS.WRONG_PARMS);
let goods = await addItems(roleId, roleName, sid, [{ id : goodId, count: drawCnt }]);
wishGoods[index].drawCnt = 0;
await UserGuildModel.updateInfo(code, { wishGoods }, {});
return resResult(STATUS.SUCCESS, { goods, wishGoods });
}
async getReports(msg: {}, session: BackendSession) {
const roleId: string = session.get('roleId');
let userGuild = await getUserGuildWithRefActive(roleId, ' guildCode');
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild;
const reports = await WishPoolReportModel.getReportsByTime(code, 1);
return resResult(STATUS.SUCCESS, { reports });
}
}

View File

@@ -89,9 +89,6 @@ export default class Guild extends BaseModel {
@prop({ required: true, default: 0 })
resetTrainTime: number;//上次刷新挑战训练场次数的时间
@prop({ required: true, default: 1 })
wishPoolLv: number; // 许愿池等级
public static async createGuild(params: { name: string, icon: number, notice: string }, role: RoleType, serverId: number) {
const doc = new GuildModel();
@@ -204,7 +201,7 @@ export default class Guild extends BaseModel {
public static async resetGuildTrain(code: string, serverId: number, trainLv: number, lean = true) {
const time = getCurWeekTime(1, 5);//每周一5点刷新
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId, resetTrainTime:{$ne:time}},{$set: {trainId: 1, resetTrainTime: time, trainLv}}).lean(lean);
const result = await GuildModel.findOneAndUpdate({ code, status: GUILD_STATUS.RUNNING, serverId, resetTrainTime:{$ne:time}},{$set: {trainId: 1, resetTrainTime: time, trainLv}}, {new: true}).lean(lean);
return result;
}
}

View File

@@ -13,7 +13,7 @@ class Report {
@prop({ required: true })
time: number;
@prop({ required: true })
isSuccessed: boolean;
difficulty: number;
@prop({ required: true })
type: number;//1表示普通战报 2表示系统战报即被成功压制
}

View File

@@ -12,6 +12,8 @@ class ActiveRecord {
}
class WishGood {
@prop({ required: true })
id: string;
@prop({ required: true })
type: number;
@prop({ required: true })
@@ -76,16 +78,16 @@ export default class UserGuild extends BaseModel {
trainRewards: Array<number>;//领取过的进阶等级
@prop({ required: true, default: [], type: WishGood, _id: false })
wishGoods:Array<WishGood>;
wishGoods: Array<WishGood>;
@prop({ required: true, default: [], type: Number })
receiveBoxs:Array<number>;
receiveBoxs: Array<number>;
@prop({ required: true })
wishDntCnt:number;//今天许愿池捐献次数
wishDntCnt: number;//今天许愿池捐献次数
@prop({ required: true })
donateCnt:number;//今天捐献所次数
donateCnt: number;//今天捐献所次数
public static async getMyAuth(roleId: string, guildCode?: string, userGuild?: UserGuildType) {
let myGuild: UserGuildType;
@@ -186,6 +188,10 @@ export default class UserGuild extends BaseModel {
return userGuilds;
}
public static async pushAndUpdate(roleId: string, update: UserGuildUpdateParam, pushData:{wishGoods?: WishGood}, select?: string, lean = true) {
const result: UserGuildType = await UserGuildModel.findOneAndUpdate({ roleId, status: USER_GUILD_STATUS.ON }, { $set: update, $push: pushData }, { new: true }).select(select).lean();
return result;
}
}
export const UserGuildModel = getModelForClass(UserGuild);

View File

@@ -38,7 +38,7 @@ export default class WishPoolReport extends BaseModel {
//获得day天之前的许愿池战报
public static async getReportsByTime(guildCode: string, day: number, lean = true) {
let time = getTodayZeroPoint() - day * 24 * 60;
const reports = await WishPoolReportModel.find({ guildCode, dntTime: {$gte: time}});
const reports = await WishPoolReportModel.find({ guildCode, dntTime: {$gte: time}}).sort({ dntTime : -1 });
return reports;
}
}

View File

@@ -121,7 +121,7 @@ export const gameData = {
bossBase: dicBossBase,
trainBase: dicTrainBase,
donateBase: dicDonateBase,
wishPoolBase: dicWishPoolBase,
armyWishPool: dicWishPoolBase,
storeBase: dicStoreBase,
structureConsume: dicStructureConsume,
guildActiveDayReward: dicGuildActiveDayReward,
@@ -133,7 +133,7 @@ export const gameData = {
guildActiveWays: dicGuildActiveWays,
armyDevelopConsume: dicArmyDevelopConsume,
armyBossRank: dicArmyBossRank,
armyDonateBox: dicArmyDonate
armyDonateBox: dicArmyDonate,
};
// 在此提供一些原先在gamedata中提供的方法以便更方便获取gameData数据
@@ -395,4 +395,6 @@ export function getArmyDonateBaseByLv(lv: number) {
export function getArmyDonateBoxBaseById(id: number) {
return gameData.armyDonateBox.get(id);
}
export function getArmyWishPoolBaseByLv(lv: number) {
return gameData.armyWishPool.get(lv);
}

View File

@@ -0,0 +1,29 @@
import { readJsonFile, parseGoodStr } from '../util'
import { FILENAME } from '../../consts'
type KeysEnum<T> = { [P in keyof Required<T>]: true };
import { RewardInter } from '../interface';
const _ = require('lodash');
export interface DicArmyBossRank {
readonly id: number;
readonly rankMin: number;
readonly rankMax: number;
readonly reward: Array<RewardInter>;
}
const DicArmyBossRankKeys: KeysEnum<DicArmyBossRank> = {
id: true,
rankMin: true,
rankMax: true,
reward: true,
};
const str = readJsonFile(FILENAME.DIC_ARMY_BOSS_RANK_REWARD);
let arr = JSON.parse(str);
export const dicArmyBossRank = new Array<DicArmyBossRank>();
arr.forEach(o => {
o.reward = parseGoodStr(o.reward);
dicArmyBossRank.push(_.pick(o, Object.keys(DicArmyBossRankKeys)));
});
arr = undefined;

View File

@@ -1,35 +0,0 @@
import { readJsonFile } from '../util'
import { FILENAME } from '../../consts'
type KeysEnum<T> = { [P in keyof Required<T>]: true };
const _ = require('lodash');
export interface DicArmyWishPool {
readonly id: number;
readonly wishGoodsEquips: Array<{quality: number, count: number}>;
readonly wishGoodsHeros: Array<{quality: number, count: number}>;
readonly consume: number;
}
const DicArmyWishPoolKeys: KeysEnum<DicArmyWishPool> = {
id: true,
wishGoodsEquips: true,
wishGoodsHeros: true,
consume: true,
};
const str = readJsonFile(FILENAME.DIC_ARMY_BOSS_RANK_REWARD);
let arr = JSON.parse(str);
export const dicArmyWishPool = new Array<DicArmyWishPool>();
arr.forEach(o => {
o.wishGoodsEquips = o.wishGoodsEquip.split('|').map(wishGoodsEquip=>{
let wishGoodsEquips = wishGoodsEquip.split('&');
return {quality: parseInt(wishGoodsEquips[0]), count: parseInt(wishGoodsEquips[1])};
});
o.wishGoodsHeros = o.wishGoodsHero.split('|').map(wishGoodsHero=>{
let wishGoodsHeros = wishGoodsHero.split('&');
return {quality: parseInt(wishGoodsHeros[0]), count: parseInt(wishGoodsHeros[1])};
});
dicArmyWishPool.push(_.pick(o, Object.keys(DicArmyWishPoolKeys)));
});
arr = undefined;

View File

@@ -121,19 +121,18 @@ export interface DicWishPoolBase {
readonly id: number;
// 等级
readonly level: number;
// 许愿物品
readonly wishGoodsEquip: { quality: number, count: number }[];
// 许愿将魂
readonly wishGoodsHero: { quality: number, count: number }[];
readonly wishGoodsEquips: Array<{quality: number, count: number}>;
readonly wishGoodsHeros: Array<{quality: number, count: number}>;
readonly consume: number;
}
const DicWishPoolKeys: KeysEnum<DicWishPoolBase> = {
id: true,
level: true,
wishGoodsEquip: true,
wishGoodsHero: true
wishGoodsEquips: true,
wishGoodsHeros: true,
consume: true,
};
// 商店
export interface DicStoreBase {
// id
@@ -221,8 +220,14 @@ const strWishPool = readJsonFile(FILENAME.DIC_GUILD_WISH_POOL_BASE);
let arrWishPool = JSON.parse(strWishPool);
arrWishPool.forEach(o => {
setStructureConsume(o);
o.wishGoodsEquip = parseWishGoods(o.wishgoodsEquip);
o.wishGoodsHero = parseWishGoods(o.wishgoodsHero);
o.wishGoodsEquips = o.wishgoodsEquip.split('|').map(wishGoodsEquip=>{
let wishGoodsEquips = wishGoodsEquip.split('&');
return {quality: parseInt(wishGoodsEquips[0]), count: parseInt(wishGoodsEquips[1])};
});
o.wishGoodsHeros = o.wishgoodsHero.split('|').map(wishGoodsHero=>{
let wishGoodsHeros = wishGoodsHero.split('&');
return {quality: parseInt(wishGoodsHeros[0]), count: parseInt(wishGoodsHeros[1])};
});
dicWishPoolBase.set(o.level, _.pick(o, Object.keys(DicWishPoolKeys)));
});
arrWishPool = undefined;

View File

@@ -58,7 +58,7 @@ export function getWeekDate(now: Date, day: number, hour: number){ //获得本
export function getCurWeekTime(day: number, hour: number) {
let data = getWeekDate(new Date(), day, hour);
return data.getTime();
return Math.floor(data.getTime()/PER_SECOND);
}
export function getHourPoint(hour: number) {

View File

@@ -17,7 +17,7 @@
"preposition": "1&",
"honourConsume": "40005&3000",
"fundConsume": 500,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 3,
@@ -27,7 +27,7 @@
"preposition": "1&",
"honourConsume": "40005&6000",
"fundConsume": 1000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 4,
@@ -37,7 +37,7 @@
"preposition": "1&",
"honourConsume": "40005&13500",
"fundConsume": 2000,
"timeConsume": 1200
"timeConsume": 72000
},
{
"id": 5,
@@ -57,7 +57,7 @@
"preposition": "5&2",
"honourConsume": "40005&4500",
"fundConsume": 1000,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 7,
@@ -67,7 +67,7 @@
"preposition": "5&3",
"honourConsume": "40005&9000",
"fundConsume": 2000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 8,
@@ -77,7 +77,7 @@
"preposition": "5&4",
"honourConsume": "40005&20250",
"fundConsume": 4000,
"timeConsume": 1200
"timeConsume": 72000
},
{
"id": 9,
@@ -97,7 +97,7 @@
"preposition": "9&6",
"honourConsume": "40005&6000",
"fundConsume": 1500,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 11,
@@ -107,7 +107,7 @@
"preposition": "9&7",
"honourConsume": "40005&12000",
"fundConsume": 3000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 12,
@@ -117,7 +117,7 @@
"preposition": "9&8",
"honourConsume": "40005&27000",
"fundConsume": 6000,
"timeConsume": 1200
"timeConsume": 72000
},
{
"id": 13,
@@ -137,7 +137,7 @@
"preposition": "13&10",
"honourConsume": "40005&7500",
"fundConsume": 2000,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 15,
@@ -147,7 +147,7 @@
"preposition": "13&11",
"honourConsume": "40005&15000",
"fundConsume": 4000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 16,
@@ -157,7 +157,7 @@
"preposition": "13&12",
"honourConsume": "40005&33750",
"fundConsume": 8000,
"timeConsume": 1200
"timeConsume": 72000
},
{
"id": 17,
@@ -177,7 +177,7 @@
"preposition": "17&14",
"honourConsume": "40005&9000",
"fundConsume": 2500,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 19,
@@ -187,7 +187,7 @@
"preposition": "17&15",
"honourConsume": "40005&18000",
"fundConsume": 5000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 20,
@@ -197,7 +197,7 @@
"preposition": "17&16",
"honourConsume": "40005&40500",
"fundConsume": 10000,
"timeConsume": 1200
"timeConsume": 72000
},
{
"id": 21,
@@ -217,7 +217,7 @@
"preposition": "21&18",
"honourConsume": "40005&10500",
"fundConsume": 3000,
"timeConsume": 270
"timeConsume": 16200
},
{
"id": 23,
@@ -227,7 +227,7 @@
"preposition": "21&19",
"honourConsume": "40005&21000",
"fundConsume": 6000,
"timeConsume": 530
"timeConsume": 31800
},
{
"id": 24,
@@ -237,6 +237,6 @@
"preposition": "21&20",
"honourConsume": "40005&47250",
"fundConsume": 12000,
"timeConsume": 1200
"timeConsume": 72000
}
]

View File

@@ -1,6 +1,7 @@
[
{
"id": 1,
"id_1": 1,
"name": "试炼1-初出茅庐",
"count": 4,
"heroid": "1&3&5&4",
@@ -11,6 +12,7 @@
},
{
"id": 2,
"id_1": 2,
"name": "试炼2-过关斩将",
"count": 4,
"heroid": "2&3&5&7",
@@ -21,6 +23,7 @@
},
{
"id": 3,
"id_1": 3,
"name": "试炼3-黄巾起义",
"count": 4,
"heroid": "7&8&9&10",
@@ -31,6 +34,7 @@
},
{
"id": 4,
"id_1": 4,
"name": "试炼4-火烧赤壁",
"count": 4,
"heroid": "11&12&13&14",
@@ -41,6 +45,7 @@
},
{
"id": 5,
"id_1": 5,
"name": "试炼5-官渡之战",
"count": 4,
"heroid": "7&8&9&11",
@@ -51,6 +56,7 @@
},
{
"id": 6,
"id_1": 6,
"name": "试炼6- 后起之秀",
"count": 4,
"heroid": "11&12&13&15",
@@ -61,6 +67,7 @@
},
{
"id": 7,
"id_1": 7,
"name": "试炼7- 分庭抗礼",
"count": 4,
"heroid": "7&8&9&12",
@@ -71,6 +78,7 @@
},
{
"id": 8,
"id_1": 8,
"name": "试炼8- 群雄逐鹿",
"count": 4,
"heroid": "11&12&13&16",
@@ -81,6 +89,7 @@
},
{
"id": 9,
"id_1": 9,
"name": "试炼9-三足鼎立",
"count": 4,
"heroid": "7&8&9&13",
@@ -91,6 +100,7 @@
},
{
"id": 10,
"id_1": 10,
"name": "试炼10-封金挂印",
"count": 4,
"heroid": "11&12&13&17",

View File

@@ -0,0 +1,14 @@
[
{
"id": 1,
"str": "%d挑战%d难度据点【%d】失败压制值+0"
},
{
"id": 2,
"str": "%d挑战%d难度据点【%d】成功压制值+%d"
},
{
"id": 3,
"str": "军团据点%d被压制成功对应试炼宝藏已成功开启请各位成为前往领取奖励"
}
]

View File

@@ -16847,6 +16847,18 @@
"spineName": "&",
"rangeSeid": "0&"
},
{
"id": 5018,
"name": "墨家拳",
"img": 1,
"type": 520,
"isShow": 1,
"gainvalue": "3&",
"maxOnlyNum": 1,
"info": "一下打三下",
"spineName": "&",
"rangeSeid": "0&"
},
{
"id": 5020,
"name": "三箭齐发1",
@@ -17043,7 +17055,7 @@
"id": 5040,
"name": "蛮劲1",
"img": 1,
"type": 101,
"type": 102,
"isShow": 1,
"gainvalue": "10&1000&18&10000",
"maxOnlyNum": 1,
@@ -17309,9 +17321,9 @@
"img": 1,
"type": 254,
"isShow": 1,
"gainvalue": "3&9&2",
"gainvalue": "3&10&2",
"maxOnlyNum": 1,
"info": "自身周围格内所有吴国武将暴击率提升2%",
"info": "自身周围5格内所有吴国武将暴击率提升2%",
"spineName": "guanghuan_huang",
"rangeSeid": "1&10&0"
},
@@ -17321,9 +17333,9 @@
"img": 1,
"type": 254,
"isShow": 1,
"gainvalue": "3&9&5",
"gainvalue": "3&10&5",
"maxOnlyNum": 1,
"info": "自身周围格内所有吴国武将暴击率提升5%",
"info": "自身周围5格内所有吴国武将暴击率提升5%",
"spineName": "guanghuan_huang",
"rangeSeid": "1&10&0"
},