合成装备

This commit is contained in:
luying
2020-12-17 20:07:53 +08:00
parent b5b7d071c1
commit b3ec0c85da
15 changed files with 31874 additions and 780 deletions

View File

@@ -1,7 +1,11 @@
import { Application, BackendSession } from "pinus";
import { resResult } from "../../../pubUtils/util";
import { STATUS } from "../../../consts";
import { addItems } from "../../../services/rewardService";
import { addItems, handleCost } from "../../../services/rewardService";
import { gameData } from "../../../pubUtils/data";
import { ItemInter } from "../../../pubUtils/interface";
import { EquipModel } from "../../../db/Equip";
import { GOOD_TYPE } from "../../../consts/consts";
export default function(app: Application) {
return new EquipHandler(app);
@@ -19,7 +23,35 @@ export class EquipHandler {
let sid: string = session.get('sid');
// 消耗材料
// 获得装备
let {gid, } = msg;
let {gid, originalEquip} = msg;
let targetGood = gameData.goods.get(gid);
if(!targetGood) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
let cost = new Array<ItemInter>();
if(targetGood.suitId > 0) { // 套装
cost.concat(targetGood.composeMaterial);
let specialMaterial = targetGood.specialMaterial;
let costCount = 0;
let equips = await EquipModel.getEquips(roleId, originalEquip);
for(let {id, seqId} of equips) {
if(specialMaterial.ids.includes(id)) {
costCount++;
cost.push({id, seqId, count: 1, type: GOOD_TYPE.EQUIP });
}
}
if(specialMaterial.count > costCount) {
return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
}
} else { // 普通装备
cost.push({
id: targetGood.pieceId,
count: targetGood.pieces
});
}
console.log(JSON.stringify(cost))
let result = await handleCost(roleId, sid, cost);
if(!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let items = [{id: gid, count: 1}];
let goods = await addItems(roleId, roleName, sid, items);

View File

@@ -1,6 +1,5 @@
import { GOOD_TYPE, ITID, CURRENCY, CURRENCY_TYPE, COUNTER, CONSUME_TYPE, getCurNameById } from './../consts/consts';
import { GOOD_TYPE, ITID, CURRENCY, CURRENCY_TYPE, CONSUME_TYPE, getCurNameById } from './../consts/consts';
import { EquipModel } from './../db/Equip';
import { CounterModel } from './../db/Counter';
import { decodeStr, resResult } from '../pubUtils/util';
import { getGoodById } from '../pubUtils/gamedata';
import { RoleModel } from '../db/Role';
@@ -9,7 +8,7 @@ import { ItemModel } from '../db/Item';
import { STATUS } from '../consts/statusCode';
import { pinus } from 'pinus';
import { addEquips, addBags, addSkins } from '../pubUtils/itemUtils';
import { EquipInter } from '../pubUtils/interface';
import { EquipInter, ItemInter, BagInter } from '../pubUtils/interface';
import { gameData } from '../pubUtils/data';
const _ = require('underscore');
@@ -126,9 +125,8 @@ async function rewardCurrency (roleId: string, dicGood: any, data: {id:number,cn
});
return goods;
}
interface Item {id?: number, count?: number, seqId?: number, type?: number};
interface Bag {id: number, itemName: string, count: number, type: number, hid:number};
export async function handleCost(roleId: string, sid: string, goods: Array<Item>) {
export async function handleCost(roleId: string, sid: string, goods: Array<ItemInter>) {
let currencysMap: any = {};
let equips: Array<number> = [];
let bags: Array<{id: number, count: number}> = [];
@@ -173,7 +171,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<Item>
return true;
}
function sortConsumes(goods: Array<Item>, bags: Array<Item>, currencysMap: any, equips: Array<number>) {
function sortConsumes(goods: Array<ItemInter>, bags: Array<ItemInter>, currencysMap: any, equips: Array<number>) {
for (let good of goods) {
if (good.type == GOOD_TYPE.EQUIP) { // 装备
if (!!good.seqId) {
@@ -206,11 +204,11 @@ function sortConsumes(goods: Array<Item>, bags: Array<Item>, currencysMap: any,
return true;
}
export async function addItems(roleId: string, roleName: string, sid: string, goods: Array<Item>) {
let showItems: Array<Item> = [];
export async function addItems(roleId: string, roleName: string, sid: string, goods: Array<ItemInter>) {
let showItems: Array<ItemInter> = [];
let currencysMap: any = {};
let equips: Array<EquipInter> = [];
let bags: Array<Bag> = [];
let bags: Array<BagInter> = [];
let skins: Array<number> = [];
let uids = [{uid: roleId, sid}];
sortItems(goods, bags, skins, currencysMap, equips, showItems);
@@ -263,7 +261,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
return showItems;
}
function sortItems (goods: Array<Item>, bags: Array<Bag>, skins: Array<number>, currencysMap: any, equips: Array<EquipInter>, showItems: Array<Item>) {
function sortItems (goods: Array<ItemInter>, bags: Array<BagInter>, skins: Array<number>, currencysMap: any, equips: Array<EquipInter>, showItems: Array<ItemInter>) {
for (let good of goods) {
let goodInfo = gameData.goods.get(good.id);
if (goodInfo.goodType == GOOD_TYPE.EQUIP) { // 装备

View File

@@ -19,6 +19,7 @@ export const CONSUME_TYPE = {
EXP: 5, // 经验书
FAVOUR: 6, // 好感度道具
SKIN: 7, // 时装
PIECE: 8 // 装备碎片
};
export enum EQUIP_TYPE {
@@ -76,7 +77,8 @@ const itid_array = [
{ id: 32, name: '典籍', goodType: GOOD_TYPE.EQUIP, type: EQUIP_TYPE.BOOK },
{ id: 33, name: '神兵', goodType: GOOD_TYPE.EQUIP, type: EQUIP_TYPE.WEAPON },
{ id: 34, name: '代币', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.POINT },
{ id: 39, name: '时装', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.SKIN }
{ id: 39, name: '时装', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.SKIN },
{ id: 40, name: '装备碎片', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.PIECE }
];
export const ITID = new Map<number, {id: number, name: string, goodType: number, type?: number, isCurrency?: boolean}>();

View File

@@ -58,7 +58,8 @@ export const CONSUME_TYPE = {
POINT: 4, // 远征币等
EXP: 5, // 经验书
FAVOUR: 6, // 好感度道具
SKIN: 7 // 好感度道具
SKIN: 7, // 好感度道具
PIECE: 8 // 装备碎片
};
@@ -98,7 +99,8 @@ const itid_array = [
{ id: 32, name: '典籍', goodType: GOOD_TYPE.EQUIP },
{ id: 33, name: '神兵', goodType: GOOD_TYPE.EQUIP },
{ id: 34, name: '代币', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.POINT },
{ id: 39, name: '时装', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.SKIN }
{ id: 39, name: '时装', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.SKIN },
{ id: 40, name: '装备碎片', goodType: GOOD_TYPE.CONSUMES, type: CONSUME_TYPE.PIECE }
];
export const ITID = new Map<number, {id: number, name: string, goodType: number, type?: number, isCurrency?: boolean}>();

View File

@@ -143,6 +143,8 @@ export const STATUS = {
HERO_CONECTION_IS_NOT_EXIT: {code: 30307, simStr: '羁绊不存在'},
ROLE_SHORT_HERO_CONECTION:{code: 30308, simStr: '未拥有羁绊武将'},
HERO_FAVOUR_LEVEL_REACH_MAXT:{code: 30308, simStr: '武将好感等级以达到最大'},
// 社交相关状态 40000 - 49999
// 运营模块相关状态 50000 - 59999
// GM后台相关状态 60000 - 69999

View File

@@ -43,8 +43,8 @@ function getInitialEplace() {
let p = new EPlace();
p.id = i;
p.equip = null;
p.lv = 1;
p.refineLv = 1;
p.lv = 0;
p.refineLv = 0;
p.refineCount = 0;
ePlace.push(p);

View File

@@ -4,6 +4,11 @@ import { FILENAME, IT_TYPE, ABI_TYPE } from '../../consts'
import { RewardInter } from '../interface';
const _ = require('lodash');
export interface SpecialMaterial {
readonly ids: number[];
readonly count: number;
}
export interface DicGoods {
// 物品id
readonly good_id: number;
@@ -13,10 +18,12 @@ export interface DicGoods {
readonly lvLimted: number;
// 合成装备需要的碎片数
readonly pieces: number;
// 对应的碎片id
readonly pieceId: number;
// 合成材料
readonly composeMaterial: Array<RewardInter>;
// 特殊材料
readonly specialMaterial: Array<{id: number[], count: number}>;
readonly specialMaterial: SpecialMaterial;
// 分解所得
readonly decomposeItem: Array<RewardInter>;
// 物品品质
@@ -67,7 +74,8 @@ const DicGoodsKeys: KeysEnum<DicGoods> = {
goodsAbilityUp: true,
suitId: true,
specialAttr: true,
value: true
value: true,
pieceId: true
}
export const dicGoods = new Map<number, DicGoods>();
@@ -133,15 +141,16 @@ function parseAbilityUp(json) {
}
function parseSpecialMaterial(str: string) {
let specialAttr = new Array<{id: number[], count: number}>();
if(str) {
let decodeArr = decodeArrayStr(str);
if(decodeArr.length >= 2) {
let ids = parseNumberList(decodeArr[0]);
let count = parseInt(decodeArr[0]);
if(isNaN(count)) return specialAttr;
specialAttr.push({id: ids, count});
}
let specialAttr = {ids: new Array<number>(), count: 0}
if(!str) return specialAttr;
let decodeArr = decodeArrayStr(str);
if(decodeArr.length >= 2) {
let ids = parseNumberList(decodeArr[0]);
let count = parseInt(decodeArr[0]);
if(isNaN(count)) return specialAttr;
specialAttr.ids = ids;
specialAttr.count = count;
}
return specialAttr;
}

View File

@@ -37,4 +37,5 @@ export interface EquipInter {
};
export interface BagInter {id: number, itemName: string, count: number, type: number, hid:number};
export interface BagInter {id: number, itemName: string, count: number, type: number, hid:number};
export interface ItemInter {id?: number, count?: number, seqId?: number, type?: number};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,402 @@
[
{
"level": 1,
"costCoin": 100
},
{
"level": 2,
"costCoin": 200
},
{
"level": 3,
"costCoin": 300
},
{
"level": 4,
"costCoin": 400
},
{
"level": 5,
"costCoin": 500
},
{
"level": 6,
"costCoin": 600
},
{
"level": 7,
"costCoin": 700
},
{
"level": 8,
"costCoin": 800
},
{
"level": 9,
"costCoin": 900
},
{
"level": 10,
"costCoin": 1000
},
{
"level": 11,
"costCoin": 1100
},
{
"level": 12,
"costCoin": 1200
},
{
"level": 13,
"costCoin": 1300
},
{
"level": 14,
"costCoin": 1400
},
{
"level": 15,
"costCoin": 1500
},
{
"level": 16,
"costCoin": 1600
},
{
"level": 17,
"costCoin": 1700
},
{
"level": 18,
"costCoin": 1800
},
{
"level": 19,
"costCoin": 1900
},
{
"level": 20,
"costCoin": 2000
},
{
"level": 21,
"costCoin": 2100
},
{
"level": 22,
"costCoin": 2200
},
{
"level": 23,
"costCoin": 2300
},
{
"level": 24,
"costCoin": 2400
},
{
"level": 25,
"costCoin": 2500
},
{
"level": 26,
"costCoin": 2600
},
{
"level": 27,
"costCoin": 2700
},
{
"level": 28,
"costCoin": 2800
},
{
"level": 29,
"costCoin": 2900
},
{
"level": 30,
"costCoin": 3000
},
{
"level": 31,
"costCoin": 3100
},
{
"level": 32,
"costCoin": 3200
},
{
"level": 33,
"costCoin": 3300
},
{
"level": 34,
"costCoin": 3400
},
{
"level": 35,
"costCoin": 3500
},
{
"level": 36,
"costCoin": 3600
},
{
"level": 37,
"costCoin": 3700
},
{
"level": 38,
"costCoin": 3800
},
{
"level": 39,
"costCoin": 3900
},
{
"level": 40,
"costCoin": 4000
},
{
"level": 41,
"costCoin": 4100
},
{
"level": 42,
"costCoin": 4200
},
{
"level": 43,
"costCoin": 4300
},
{
"level": 44,
"costCoin": 4400
},
{
"level": 45,
"costCoin": 4500
},
{
"level": 46,
"costCoin": 4600
},
{
"level": 47,
"costCoin": 4700
},
{
"level": 48,
"costCoin": 4800
},
{
"level": 49,
"costCoin": 4900
},
{
"level": 50,
"costCoin": 5000
},
{
"level": 51,
"costCoin": 5100
},
{
"level": 52,
"costCoin": 5200
},
{
"level": 53,
"costCoin": 5300
},
{
"level": 54,
"costCoin": 5400
},
{
"level": 55,
"costCoin": 5500
},
{
"level": 56,
"costCoin": 5600
},
{
"level": 57,
"costCoin": 5700
},
{
"level": 58,
"costCoin": 5800
},
{
"level": 59,
"costCoin": 5900
},
{
"level": 60,
"costCoin": 6000
},
{
"level": 61,
"costCoin": 6100
},
{
"level": 62,
"costCoin": 6200
},
{
"level": 63,
"costCoin": 6300
},
{
"level": 64,
"costCoin": 6400
},
{
"level": 65,
"costCoin": 6500
},
{
"level": 66,
"costCoin": 6600
},
{
"level": 67,
"costCoin": 6700
},
{
"level": 68,
"costCoin": 6800
},
{
"level": 69,
"costCoin": 6900
},
{
"level": 70,
"costCoin": 7000
},
{
"level": 71,
"costCoin": 7100
},
{
"level": 72,
"costCoin": 7200
},
{
"level": 73,
"costCoin": 7300
},
{
"level": 74,
"costCoin": 7400
},
{
"level": 75,
"costCoin": 7500
},
{
"level": 76,
"costCoin": 7600
},
{
"level": 77,
"costCoin": 7700
},
{
"level": 78,
"costCoin": 7800
},
{
"level": 79,
"costCoin": 7900
},
{
"level": 80,
"costCoin": 8000
},
{
"level": 81,
"costCoin": 8100
},
{
"level": 82,
"costCoin": 8200
},
{
"level": 83,
"costCoin": 8300
},
{
"level": 84,
"costCoin": 8400
},
{
"level": 85,
"costCoin": 8500
},
{
"level": 86,
"costCoin": 8600
},
{
"level": 87,
"costCoin": 8700
},
{
"level": 88,
"costCoin": 8800
},
{
"level": 89,
"costCoin": 8900
},
{
"level": 90,
"costCoin": 9000
},
{
"level": 91,
"costCoin": 9100
},
{
"level": 92,
"costCoin": 9200
},
{
"level": 93,
"costCoin": 9300
},
{
"level": 94,
"costCoin": 9400
},
{
"level": 95,
"costCoin": 9500
},
{
"level": 96,
"costCoin": 9600
},
{
"level": 97,
"costCoin": 9700
},
{
"level": 98,
"costCoin": 9800
},
{
"level": 99,
"costCoin": 9900
},
{
"level": 100,
"costCoin": 10000
}
]

View File

@@ -1 +1,292 @@
[{"id":41001,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&234","globalAttr":"1&2000|2&500","actorAttr":"3&200|4&100","actorId":1},{"id":41002,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&235","globalAttr":"1&2000|2&501","actorAttr":"3&200|4&101","actorId":1},{"id":41003,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&236","globalAttr":"1&2000|2&502","actorAttr":"3&200|4&102","actorId":1},{"id":41004,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&237","globalAttr":"1&2000|2&503","actorAttr":"3&200|4&103","actorId":1},{"id":41005,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&238","globalAttr":"1&2000|2&504","actorAttr":"3&200|4&104","actorId":2},{"id":41006,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&239","globalAttr":"1&2000|2&505","actorAttr":"3&200|4&105","actorId":3},{"id":41007,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&240","globalAttr":"1&2000|2&506","actorAttr":"3&200|4&106","actorId":4},{"id":41008,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&241","globalAttr":"1&2000|2&507","actorAttr":"3&200|4&107","actorId":5},{"id":41009,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&242","globalAttr":"1&2000|2&508","actorAttr":"3&200|4&108","actorId":6},{"id":41010,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&243","globalAttr":"1&2000|2&509","actorAttr":"3&200|4&109","actorId":7},{"id":41011,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&244","globalAttr":"1&2000|2&510","actorAttr":"3&200|4&110","actorId":8},{"id":41012,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&245","globalAttr":"1&2000|2&511","actorAttr":"3&200|4&111","actorId":9},{"id":41013,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&246","globalAttr":"1&2000|2&512","actorAttr":"3&200|4&112","actorId":10},{"id":41014,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&247","globalAttr":"1&2000|2&513","actorAttr":"3&200|4&113","actorId":11},{"id":41015,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&248","globalAttr":"1&2000|2&514","actorAttr":"3&200|4&114","actorId":12},{"id":41016,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&249","globalAttr":"1&2000|2&515","actorAttr":"3&200|4&115","actorId":13},{"id":41017,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&250","globalAttr":"1&2000|2&516","actorAttr":"3&200|4&116","actorId":14},{"id":41018,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&251","globalAttr":"1&2000|2&517","actorAttr":"3&200|4&117","actorId":15},{"id":41019,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&252","globalAttr":"1&2000|2&518","actorAttr":"3&200|4&118","actorId":16},{"id":41020,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&253","globalAttr":"1&2000|2&519","actorAttr":"3&200|4&119","actorId":17},{"id":41021,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&254","globalAttr":"1&2000|2&520","actorAttr":"3&200|4&120","actorId":18},{"id":41022,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&255","globalAttr":"1&2000|2&521","actorAttr":"3&200|4&121","actorId":19},{"id":41023,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&256","globalAttr":"1&2000|2&522","actorAttr":"3&200|4&122","actorId":20},{"id":41024,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&257","globalAttr":"1&2000|2&523","actorAttr":"3&200|4&123","actorId":21},{"id":41025,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&258","globalAttr":"1&2000|2&524","actorAttr":"3&200|4&124","actorId":22},{"id":41026,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&259","globalAttr":"1&2000|2&525","actorAttr":"3&200|4&125","actorId":23},{"id":41027,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&260","globalAttr":"1&2000|2&526","actorAttr":"3&200|4&126","actorId":24},{"id":41028,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&261","globalAttr":"1&2000|2&527","actorAttr":"3&200|4&127","actorId":25},{"id":41029,"rSpine":"LH_jiaxu","sSpine":"jiaxu","skill":"1&12|2&13","seid":"344&456&262","globalAttr":"1&2000|2&528","actorAttr":"3&200|4&128","actorId":26}]
[
{
"id": 41001,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&500",
"actorAttr": "3&200|4&100",
"actorId": 1
},
{
"id": 41002,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&501",
"actorAttr": "3&200|4&101",
"actorId": 1
},
{
"id": 41003,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&502",
"actorAttr": "3&200|4&102",
"actorId": 1
},
{
"id": 41004,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&503",
"actorAttr": "3&200|4&103",
"actorId": 1
},
{
"id": 41005,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&504",
"actorAttr": "3&200|4&104",
"actorId": 2
},
{
"id": 41006,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&505",
"actorAttr": "3&200|4&105",
"actorId": 3
},
{
"id": 41007,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&506",
"actorAttr": "3&200|4&106",
"actorId": 4
},
{
"id": 41008,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&507",
"actorAttr": "3&200|4&107",
"actorId": 5
},
{
"id": 41009,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&508",
"actorAttr": "3&200|4&108",
"actorId": 6
},
{
"id": 41010,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&509",
"actorAttr": "3&200|4&109",
"actorId": 7
},
{
"id": 41011,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&510",
"actorAttr": "3&200|4&110",
"actorId": 8
},
{
"id": 41012,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&511",
"actorAttr": "3&200|4&111",
"actorId": 9
},
{
"id": 41013,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&512",
"actorAttr": "3&200|4&112",
"actorId": 10
},
{
"id": 41014,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&513",
"actorAttr": "3&200|4&113",
"actorId": 11
},
{
"id": 41015,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&514",
"actorAttr": "3&200|4&114",
"actorId": 12
},
{
"id": 41016,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&515",
"actorAttr": "3&200|4&115",
"actorId": 13
},
{
"id": 41017,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&516",
"actorAttr": "3&200|4&116",
"actorId": 14
},
{
"id": 41018,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&517",
"actorAttr": "3&200|4&117",
"actorId": 15
},
{
"id": 41019,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&518",
"actorAttr": "3&200|4&118",
"actorId": 16
},
{
"id": 41020,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&519",
"actorAttr": "3&200|4&119",
"actorId": 17
},
{
"id": 41021,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&520",
"actorAttr": "3&200|4&120",
"actorId": 18
},
{
"id": 41022,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&521",
"actorAttr": "3&200|4&121",
"actorId": 19
},
{
"id": 41023,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&522",
"actorAttr": "3&200|4&122",
"actorId": 20
},
{
"id": 41024,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&523",
"actorAttr": "3&200|4&123",
"actorId": 21
},
{
"id": 41025,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&524",
"actorAttr": "3&200|4&124",
"actorId": 22
},
{
"id": 41026,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&525",
"actorAttr": "3&200|4&125",
"actorId": 23
},
{
"id": 41027,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&526",
"actorAttr": "3&200|4&126",
"actorId": 24
},
{
"id": 41028,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&527",
"actorAttr": "3&200|4&127",
"actorId": 25
},
{
"id": 41029,
"rSpine": "LH_jiaxu",
"sSpine": "jiaxu",
"skill": "1&12|2&13",
"seid": "1001&1005&1025",
"globalAttr": "1&2000|2&528",
"actorAttr": "3&200|4&128",
"actorId": 26
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,107 @@
[
{
"id": 1,
"level": 1,
"upPercent": 5,
"material": "17035&100",
"successRate": 100
},
{
"id": 2,
"level": 2,
"upPercent": 10,
"material": "17035&200",
"successRate": 100
},
{
"id": 3,
"level": 3,
"upPercent": 15,
"material": "17035&300",
"successRate": 100
},
{
"id": 4,
"level": 4,
"upPercent": 20,
"material": "17035&400",
"successRate": 90
},
{
"id": 5,
"level": 5,
"upPercent": 25,
"material": "17035&500",
"successRate": 80
},
{
"id": 6,
"level": 6,
"upPercent": 30,
"material": "17035&600",
"successRate": 70
},
{
"id": 7,
"level": 7,
"upPercent": 35,
"material": "17035&700",
"successRate": 60
},
{
"id": 8,
"level": 8,
"upPercent": 40,
"material": "17035&800",
"successRate": 50
},
{
"id": 9,
"level": 9,
"upPercent": 45,
"material": "17035&900",
"successRate": 40
},
{
"id": 10,
"level": 10,
"upPercent": 50,
"material": "17035&1000",
"successRate": 30
},
{
"id": 11,
"level": 11,
"upPercent": 55,
"material": "17035&1100",
"successRate": 20
},
{
"id": 12,
"level": 12,
"upPercent": 60,
"material": "17035&1200",
"successRate": 20
},
{
"id": 13,
"level": 13,
"upPercent": 70,
"material": "17035&2000|17034&100",
"successRate": 20
},
{
"id": 14,
"level": 14,
"upPercent": 80,
"material": "17035&3000|17034&200",
"successRate": 20
},
{
"id": 15,
"level": 15,
"upPercent": 100,
"material": "17035&5000|17034&400",
"successRate": 20
}
]

View File

@@ -10,7 +10,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1701&",
"effect": "eff_503",
"info": "步兵系1级。擅长防御的步兵部队。适合守卫城。虽然优于远距离攻击部队但却劣于骑兵部队。",
"trainingConsume": "17002&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -33,7 +33,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1701&1703",
"effect": "eff_503",
"info": "步兵系2级。擅长防御的步兵部队。比起上一阶段防御增强有着很强的守卫能力。",
"trainingConsume": "17003&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -56,7 +56,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1702&1703",
"effect": "eff_503",
"info": "步兵系3级。擅长防御的步兵部队。比起上一阶段移动力增强能更妥善运用。",
"trainingConsume": "17004&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -79,7 +79,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1702&1704",
"effect": "eff_502",
"info": "步兵系4级。擅长防御的步兵部队。比起上一阶段对间接攻击的防御增强防御能力更强。",
"trainingConsume": "17005&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -102,7 +102,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1702&1704&1705",
"effect": "eff_501",
"info": "步兵系5级。擅长防御的步兵部队。比起上一阶段攻击力增强许多可全方位活用攻击与防御。",
"trainingConsume": "&",
@@ -125,7 +125,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1706&",
"effect": "eff_500",
"info": "枪兵系1级。擅长攻击的步兵部队。在城内与森林较有优势。与步兵系类似但是在与骑兵部队战斗时较有优势。",
"trainingConsume": "17002&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -148,7 +148,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1706&1708",
"effect": "eff_504",
"info": "枪兵系2级。擅长攻击的步兵部队。比起上一阶段攻击范围增加可让敌人的反击无效。",
"trainingConsume": "17003&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -171,7 +171,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1707&1708",
"effect": "eff_500",
"info": "枪兵系3级。擅长攻击的步兵部队。比起上一阶段移动力增强可快速追击敌人。",
"trainingConsume": "17004&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -194,7 +194,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1707&1709",
"effect": "eff_500",
"info": "枪兵系4级。擅长攻击的步兵部队。比起上一阶段对于骑兵的伤害加强可以迅速的消灭骑兵部队。",
"trainingConsume": "17005&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -217,7 +217,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1707&1709&1710",
"effect": "eff_505",
"info": "枪兵系5级。擅长攻击的步兵部队。比起上一阶段攻击力增强许多是消灭骑兵的杀手。",
"trainingConsume": "&",
@@ -240,7 +240,7 @@
"spe": 4,
"atkid": 3,
"move": 2,
"seid": "0&",
"seid": "1711&",
"effect": "eff_500",
"info": "轻骑兵系1级。移动力优秀的骑兵部队。不擅长艰险的地形对步兵部队的攻击较强但对远距离攻击部队较弱。",
"trainingConsume": "17002&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -263,7 +263,7 @@
"spe": 4,
"atkid": 3,
"move": 2,
"seid": "0&",
"seid": "1711&1713",
"effect": "eff_500",
"info": "轻骑兵系2级。移动力优秀的骑兵部队。比起上一阶段攻击力增强更有威胁性。",
"trainingConsume": "17003&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -286,7 +286,7 @@
"spe": 4,
"atkid": 3,
"move": 2,
"seid": "0&",
"seid": "1712&1713",
"effect": "eff_500",
"info": "轻骑兵系3级。移动力优秀的骑兵部队。比起上一阶段攻击范围与移动力增强活用性与运用性较好。",
"trainingConsume": "17004&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -309,7 +309,7 @@
"spe": 4,
"atkid": 3,
"move": 2,
"seid": "0&",
"seid": "1712&1714",
"effect": "eff_500",
"info": "轻骑兵系4级。移动力优秀的骑兵部队。比起上一阶段强化了攻击力平原战的主力。",
"trainingConsume": "17005&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -332,7 +332,7 @@
"spe": 5,
"atkid": 3,
"move": 2,
"seid": "0&",
"seid": "1712&1714&1715",
"effect": "eff_500",
"info": "轻骑兵系5级。移动力优秀的骑兵部队。比起上一阶段战斗力进一步强化是可以依赖的主力部队。",
"trainingConsume": "&",
@@ -355,7 +355,7 @@
"spe": 3,
"atkid": 7,
"move": 1,
"seid": "0&",
"seid": "1716&",
"effect": "eff_505",
"info": "弓兵系1级。命中率高的远距离攻击部队。以远距离攻击为特征虽然优于骑兵部队但却劣于步兵。",
"trainingConsume": "17002&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -378,7 +378,7 @@
"spe": 3,
"atkid": 7,
"move": 1,
"seid": "0&",
"seid": "1716&1718",
"effect": "eff_500",
"info": "弓兵系2级。命中率高的远距离攻击部队。比起上一阶段增强了爆发力拥有更高的命中率。",
"trainingConsume": "17003&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -401,7 +401,7 @@
"spe": 3,
"atkid": 7,
"move": 1,
"seid": "0&",
"seid": "1717&1718",
"effect": "eff_504",
"info": "弓兵系3级。命中率高的远距离攻击部队。比起上一阶段增加了攻击范围移动力也增强因此也可在艰险的地形使用。",
"trainingConsume": "17004&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -424,7 +424,7 @@
"spe": 3,
"atkid": 7,
"move": 1,
"seid": "0&",
"seid": "1717&1719",
"effect": "eff_505",
"info": "弓兵系4级。命中率高的远距离攻击部队。比起上一阶段加强了物理攻击可给予敌人大伤害。",
"trainingConsume": "17005&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -447,7 +447,7 @@
"spe": 3,
"atkid": 8,
"move": 1,
"seid": "0&",
"seid": "1717&1719&1720",
"effect": "eff_505",
"info": "弓兵系5级。命中率高的远距离攻击部队。比起上一阶段加强了物理攻击。可趁敌人接近前击杀。",
"trainingConsume": "&",
@@ -470,7 +470,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1721&",
"effect": "eff_500",
"info": "武斗家系1级。爆发力强的特殊部队也能使用妨害系的策略。虽然比起步兵部队防御力较弱但是敏捷性与攻击力较高。",
"trainingConsume": "17002&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -493,7 +493,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1721&1723",
"effect": "eff_500",
"info": "武斗家系2级。爆发力强的特殊部队比起上一阶段提升了物理攻击的防御率是近身肉搏的高手。",
"trainingConsume": "17003&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -516,7 +516,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1722&1723",
"effect": "eff_500",
"info": "武斗家系3级。爆发力强的特殊部队比起上一阶段移动力增强适合当战斗的前锋。",
"trainingConsume": "17004&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -539,7 +539,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1722&1724",
"effect": "eff_500",
"info": "武斗家系4级。爆发力强的特殊部队比起上一阶段全防御率进一步提升是我军的中坚力量。",
"trainingConsume": "17005&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -562,7 +562,7 @@
"spe": 3,
"atkid": 1,
"move": 1,
"seid": "0&",
"seid": "1722&1724&1725",
"effect": "eff_500",
"info": "武斗家系5级。爆发力强的特殊部队。比起上一阶段妨害系策略变强战斗时可站在前锋或在后方支援。",
"trainingConsume": "&",
@@ -585,7 +585,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1726&",
"effect": "eff_500",
"info": "策士系1级。使用攻击策略的文官部队。火系、水系、地系等策略是其专长。",
"trainingConsume": "17006&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -608,7 +608,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1726&1728",
"effect": "eff_500",
"info": "策士系2级。使用攻击策略的文官部队。比起上一阶段火系策略较强变得更强悍。对精神力较差的敌人来说是个恐怖的对象。",
"trainingConsume": "17007&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -631,7 +631,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1727&1728",
"effect": "eff_500",
"info": "策士系3级。使用攻击策略的文官部队。比起上一阶段移动力增强可快速支援策略。",
"trainingConsume": "17008&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -654,7 +654,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1727&1729",
"effect": "eff_500",
"info": "策士系4级。使用攻击策略的文官部队。比起上一阶段精神力增强用策略给予敌人致命的打击。",
"trainingConsume": "17009&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -677,7 +677,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1727&1729&1730",
"effect": "eff_500",
"info": "策士系5级。使用攻击策略的文官部队。比起上一阶段精神力变得更强。达到极限的策略破坏力实际上非常惊人是个令人恐惧的部队。",
"trainingConsume": "&",
@@ -700,7 +700,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1731&",
"effect": "eff_500",
"info": "道士系1级。使用妨害策略的文官部队。不受气候或地形影响可以使用各种策略。",
"trainingConsume": "17006&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -723,7 +723,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1731&1733",
"effect": "eff_500",
"info": "道士系2级。使用妨害策略的文官部队。比起上一阶段妨害系策略增强可使用更多的策略妨害敌人。",
"trainingConsume": "17007&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -746,7 +746,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1732&1733",
"effect": "eff_500",
"info": "道士系3级。使用妨害策略的文官部队。比起上一阶段HP增强生存能力得以提高。",
"trainingConsume": "17008&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -769,7 +769,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1732&1734",
"effect": "eff_500",
"info": "道士系4级。使用妨害策略的文官部队。比起上一阶段士气增强策略的暴击几率得到提高。",
"trainingConsume": "17009&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -792,7 +792,7 @@
"spe": 2,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1732&1734&1735",
"effect": "eff_500",
"info": "道士系5级。使用妨害策略的文官部队。比起上一阶段获得拥有特殊力量的策略在战场上给敌人制造各种各样的困难。",
"trainingConsume": "&",
@@ -815,7 +815,7 @@
"spe": 3,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1736&",
"effect": "eff_500",
"info": "风水师系1级。使用回复策略的文官部队。后方支援部队在大战中能大放异彩。",
"trainingConsume": "17006&5|17010&5|17014&5|17018&5|17022&5|17026&5",
@@ -838,7 +838,7 @@
"spe": 3,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1736&1738",
"effect": "eff_500",
"info": "风水师系2级。使用回复策略的文官部队。比起上一阶段移动力增强可快速提供后方支援。",
"trainingConsume": "17007&5|17011&5|17015&5|17019&5|17023&5|17027&5",
@@ -861,7 +861,7 @@
"spe": 3,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1737&1738",
"effect": "eff_500",
"info": "风水师系3级。使用回复策略的文官部队。比起上一阶段对间接伤害的防御增强可快速提供后方支援。",
"trainingConsume": "17008&5|17012&5|17016&5|17020&5|17024&5|17028&5",
@@ -884,7 +884,7 @@
"spe": 3,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1737&1739",
"effect": "eff_500",
"info": "风水师系4级。使用回复策略的文官部队。比起上一阶段MP增加可提供更多的支援给我军。",
"trainingConsume": "17009&5|17013&5|17017&5|17021&5|17025&5|17029&5",
@@ -907,7 +907,7 @@
"spe": 3,
"atkid": 2,
"move": 1,
"seid": "0&",
"seid": "1737&1739&1740",
"effect": "eff_500",
"info": "风水师系5级。使用回复策略的文官部队。比起上一阶段学会更多治疗的策略是我军赖以生存的保障力量。",
"trainingConsume": "&",