diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index faf53acce..29ba07cf0 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -1,7 +1,7 @@ import { Application, BackendSession } from "pinus"; import { STATUS, EQUIP_STRENGTHEN_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SYSTEM_TYPE, CONSUME_TYPE, GOOD_TYPE, HERO_GROW_MAX } from "../../../consts"; import { ItemInter } from "../../../pubUtils/interface"; -import { resResult, parseReward, getRandomByLen, deepCopy } from "../../../pubUtils/util"; +import { resResult, parseGoodStr, getRandomByLen, deepCopy } from "../../../pubUtils/util"; import { addItems, handleCost } from "../../../services/rewardService"; import { EquipModel, RandSe } from "../../../db/Equip"; import { HeroModel, EPlace } from "../../../db/Hero"; @@ -228,11 +228,11 @@ export class EquipHandler { let lockNum = randSe.filter(cur => cur.locked).length; let consumes: Array<{ id: number, count: number }> = []; if (lockNum == 0) { - consumes = parseReward(EQUIP.EQUIP_ONE_LOCKED); + consumes = parseGoodStr(EQUIP.EQUIP_ONE_LOCKED); } else if (lockNum == 1) { - consumes = parseReward(EQUIP.EQUIP_TWO_LOCKED); + consumes = parseGoodStr(EQUIP.EQUIP_TWO_LOCKED); } else if (lockNum == 2) { - consumes = parseReward(EQUIP.EQUIP_THREE_LOCKED); + consumes = parseGoodStr(EQUIP.EQUIP_THREE_LOCKED); } else { return resResult(STATUS.ROLE_ALL_SE_LOCK); } @@ -295,13 +295,13 @@ export class EquipHandler { // 消耗 let consumes: Array<{ id: number, count: number }> = []; if (lockNum == 0) { - consumes = parseReward(EQUIP.EQUIP_ONE_REFORGED); + consumes = parseGoodStr(EQUIP.EQUIP_ONE_REFORGED); } else if (lockNum == 1) { - consumes = parseReward(EQUIP.EQUIP_TWO_REFORGED); + consumes = parseGoodStr(EQUIP.EQUIP_TWO_REFORGED); } else if (lockNum == 2) { - consumes = parseReward(EQUIP.EQUIP_THREE_REFORGED); + consumes = parseGoodStr(EQUIP.EQUIP_THREE_REFORGED); } else { - consumes = parseReward(EQUIP.EQUIP_FOUR_REFORGED); + consumes = parseGoodStr(EQUIP.EQUIP_FOUR_REFORGED); } let result = await handleCost(roleId, sid, consumes); @@ -352,6 +352,7 @@ export class EquipHandler { let { eid, hid, type } = msg; let roleId: string = session.get('roleId'); let equip = await EquipModel.getEquip(eid); + let sid: string = session.get('sid'); let goodInfo = getGoodById(equip.id); let obj = ITID.get(goodInfo.itid); let id = obj.type; @@ -378,6 +379,7 @@ export class EquipHandler { curEquips.push({ seqId, hid, ePlaceId }); } await HeroModel.addEquip(roleId, hid, id, equip._id); + await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.EQUIP, []); curEquips.push({ seqId: eid, hid, ePlaceId:id}); } else if (type == 2) { if (!equip.hid) @@ -386,8 +388,9 @@ export class EquipHandler { if (index < 0) return resResult(STATUS.WRONG_PARMS); hero.ePlace[index].equip = null; - await HeroModel.updateHeroInfo(roleId, hid, { ePlace: hero.ePlace }); + //await HeroModel.updateHeroInfo(roleId, hid, { ePlace: hero.ePlace }); let {seqId, ePlaceId} = await EquipModel.updateEquipInfo(eid, { hid: 0, ePlaceId: 0 }); + await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.EQUIP, []); curEquips.push({ seqId, hid, ePlaceId }); } return resResult(STATUS.SUCCESS, { curEquips: curEquips }); @@ -406,11 +409,11 @@ export class EquipHandler { return resResult(STATUS.EQUIP_HOLE_IS_DUG); let consumes: Array<{ id: number, count: number }> = []; if (id == 1) { - consumes = parseReward(EQUIP.EQUIP_ONE_HOLE); + consumes = parseGoodStr(EQUIP.EQUIP_ONE_HOLE); } else if (id == 2) { - consumes = parseReward(EQUIP.EQUIP_TWO_HOLE); + consumes = parseGoodStr(EQUIP.EQUIP_TWO_HOLE); } else if (id == 3) { - consumes = parseReward(EQUIP.EQUIP_THREE_HOLE); + consumes = parseGoodStr(EQUIP.EQUIP_THREE_HOLE); } let result = await handleCost(roleId, sid, consumes); if (!result) @@ -438,8 +441,9 @@ export class EquipHandler { return resResult(STATUS.EQUIP_HOLE_NOT_FIND); if (!equip.holes[index].isOpen) return resResult(STATUS.EQUIP_HOLE_IS_NOT_DUG); - if (!!equip.holes[index].jewel) - goods.push({id: equip.holes[index].jewel, count:1}); + let oldJewel = equip.holes[index].jewel; + if (!!oldJewel) + goods.push({id: oldJewel, count:1}); consumes.push({ id: jewel, count: 1 }); let result = await handleCost(roleId, sid, consumes); if (!result) @@ -449,6 +453,10 @@ export class EquipHandler { let roleName: string = session.get('roleName'); if (goods.length) await addItems(roleId, roleName, sid, goods); + if (!!equip.hid) { + let hero = await HeroModel.findByHidAndRole(equip.hid, roleId); + await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.JEWEL_ON, [jewel, oldJewel]); + } return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); } @@ -514,12 +522,17 @@ export class EquipHandler { let index = _.findIndex(equip.holes, { id }); if (index > 0) return resResult(STATUS.EQUIP_HOLE_NOT_FIND); - if (!equip.holes[index].jewel) + let jewel = equip.holes[index].jewel; + if (!jewel) return resResult(STATUS.EQUIP_NOT_FILL_HOLE); - goods.push({ id: equip.holes[index].jewel, count: 1 }); + goods.push({ id: jewel, count: 1 }); equip.holes[index].jewel = 0; await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); await addItems(roleId, roleName, sid, goods); + if (!!equip.hid) { + let hero = await HeroModel.findByHidAndRole(equip.hid, roleId); + await calPlayerCeAndSave(sid, roleId, [hero], HERO_SYSTEM_TYPE.JEWEL_OFF, [jewel]); + } return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); } } \ No newline at end of file diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 77cf1ba4a..09f6ca6d2 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -10,6 +10,7 @@ import { ItemModel } from '../../../db/Item'; import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById } from '../../../pubUtils/data'; import { RewardInter } from '../../../pubUtils/interface'; import { getAllAttrStage } from '../../../pubUtils/playerCe'; +import { Stats } from 'fs'; export default function(app: Application) { return new HeroHandler(app); @@ -404,6 +405,8 @@ export class HeroHandler { let exp:number = 0; for (let item of items) { let itemInfo = gameData.goods.get(item.id); + if (!itemInfo) + return resResult(STATUS.DIC_DATA_NOT_FOUND) let dicItid = ITID.get(itemInfo.itid); if (dicItid.type == CONSUME_TYPE.FAVOUR) { exp += itemInfo.value; diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index cd2f954cb..68b84001d 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -1,6 +1,6 @@ import { ITID, CONSUME_TYPE, getCurNameById, ITEM_TABLE } from './../consts'; import { EquipModel } from './../db/Equip'; -import { resResult, parseReward } from '../pubUtils/util'; +import { resResult, parseGoodStr } from '../pubUtils/util'; import { getGoodById } from '../pubUtils/gamedata'; import { RoleModel } from '../db/Role'; import { setAp } from './actionPointService'; @@ -14,7 +14,7 @@ import { gameData } from '../pubUtils/data'; const _ = require('underscore'); export async function handleFixedReward(roleId: string, roleName: string, sid: string, rewardStr: string, multi: number) { - let reward = parseReward(rewardStr); + let reward = parseGoodStr(rewardStr); let rewards = []; for(let obj of reward) rewards.push({ ...obj, count: Math.ceil(obj.count * multi)}); diff --git a/shared/consts/constModules/abilityConst.ts b/shared/consts/constModules/abilityConst.ts index a05edbcd9..9af27bda9 100644 --- a/shared/consts/constModules/abilityConst.ts +++ b/shared/consts/constModules/abilityConst.ts @@ -117,6 +117,15 @@ export const HERO_ATTR = { 17: "ap" // 怒气 }; +export const JEWEL_ATTR = { + 1: "hp", + 2: "atk", + 3: "def", + 4: "mdef", + 5: "agi", + 6: "luk" +} + export const ABI_TYPE_TO_STAGE = new Map number)>([ [ABI_STAGE.HP, ABI_TYPE.ABI_HP], [ABI_STAGE.ATK, (jobType:number) => { return jobType == JOB_TYPE.PHYSIC?ABI_TYPE.ABI_ATK: ABI_TYPE.ABI_MATK}], @@ -136,4 +145,5 @@ export function getAttrCeRatio(attr: string):number { export function getAttrNameByJobStage(jobStage: number) { return HEROTARIN[jobStage]; -}; \ No newline at end of file +}; + diff --git a/shared/consts/constModules/heroConst.ts b/shared/consts/constModules/heroConst.ts index 950bc65e2..dce66e9b8 100644 --- a/shared/consts/constModules/heroConst.ts +++ b/shared/consts/constModules/heroConst.ts @@ -8,7 +8,9 @@ export const HERO_SYSTEM_TYPE = { CONNECT:9, EQUIP: 10, EQUIP_BASE: 11, - RESTRENGTHEN: 12 + RESTRENGTHEN: 12, + JEWEL_ON: 13, + JEWEL_OFF: 14 }; // 武将上限 diff --git a/shared/pubUtils/dictionary/DicEvent.ts b/shared/pubUtils/dictionary/DicEvent.ts index 49a187ad6..e667e6ff3 100644 --- a/shared/pubUtils/dictionary/DicEvent.ts +++ b/shared/pubUtils/dictionary/DicEvent.ts @@ -1,5 +1,5 @@ // 奇遇表 -import { parseReward, decodeArrayStr, readJsonFile, parseNumberList } from '../util' +import { parseGoodStr, decodeArrayStr, readJsonFile, parseNumberList } from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../../pubUtils/interface'; @@ -37,8 +37,8 @@ let arr = JSON.parse(str); export const dicEvent = new Map(); arr.forEach(o => { - o.winReward = parseReward(o.winReward); - o.loseReward = parseReward(o.loseReward); + o.winReward = parseGoodStr(o.winReward); + o.loseReward = parseGoodStr(o.loseReward); o.suitLevel = parseSuitLevel(o.suitLevel); o.movePointArray = parseNumberList(o.movePointArray); diff --git a/shared/pubUtils/dictionary/DicExpeditionPoint.ts b/shared/pubUtils/dictionary/DicExpeditionPoint.ts index ee8f0fdb6..8d88735bb 100644 --- a/shared/pubUtils/dictionary/DicExpeditionPoint.ts +++ b/shared/pubUtils/dictionary/DicExpeditionPoint.ts @@ -1,5 +1,5 @@ // 远征点数奖励表 -import { parseReward, readJsonFile } from '../util'; +import { parseGoodStr, readJsonFile } from '../util'; import { FILENAME } from '../../consts'; import { RewardInter } from '../interface'; @@ -16,6 +16,6 @@ let arr = JSON.parse(str); export const dicExpeditionPoint = new Map(); arr.forEach(o => { - o.reward = parseReward(o.reward); + o.reward = parseGoodStr(o.reward); dicExpeditionPoint.set(o.point, o); }); \ No newline at end of file diff --git a/shared/pubUtils/dictionary/DicGoods.ts b/shared/pubUtils/dictionary/DicGoods.ts index 939cbe391..e531ae43c 100644 --- a/shared/pubUtils/dictionary/DicGoods.ts +++ b/shared/pubUtils/dictionary/DicGoods.ts @@ -1,5 +1,5 @@ // 物品表 -import {decodeArrayListStr, readJsonFile, parseReward, parseNumberList, decodeArrayStr} from '../util' +import {decodeArrayListStr, readJsonFile, parseGoodStr, parseNumberList, decodeArrayStr} from '../util' import { FILENAME, IT_TYPE, ABI_TYPE , GOOD_TYPE} from '../../consts' import { RewardInter } from '../interface'; const _ = require('lodash'); @@ -90,8 +90,8 @@ export const blueprt = new Map>(); arr.forEach(o => { o.goodsAbility = parseAbility(o); o.goodsAbilityUp = parseAbilityUp(o); - o.composeMaterial = parseReward(o.composeMaterial); - o.decomposeItem = parseReward(o.decomposeItem); + o.composeMaterial = parseGoodStr(o.composeMaterial); + o.decomposeItem = parseGoodStr(o.decomposeItem); o.specialAttr = parseSpecialAttr(o.specialAttr); o.specialMaterial = parseSpecialMaterial(o.specialMaterial); o.randomEffect = parseNumberList(o.randomEffect); diff --git a/shared/pubUtils/dictionary/DicHeroQualityUp.ts b/shared/pubUtils/dictionary/DicHeroQualityUp.ts index 9169cc155..f88fa3d86 100644 --- a/shared/pubUtils/dictionary/DicHeroQualityUp.ts +++ b/shared/pubUtils/dictionary/DicHeroQualityUp.ts @@ -1,5 +1,5 @@ // 武将技能表 -import {parseReward, readJsonFile} from '../util' +import {parseGoodStr, readJsonFile} from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../interface'; @@ -21,6 +21,6 @@ let arr = JSON.parse(str); export const dicHeroQualityUp = new Map(); arr.forEach(o => { - o.consume = parseReward(o.consume); + o.consume = parseGoodStr(o.consume); dicHeroQualityUp.set(o.quality, o); }); diff --git a/shared/pubUtils/dictionary/DicHeroWake.ts b/shared/pubUtils/dictionary/DicHeroWake.ts index 2c423e04e..24e4e56f4 100644 --- a/shared/pubUtils/dictionary/DicHeroWake.ts +++ b/shared/pubUtils/dictionary/DicHeroWake.ts @@ -1,5 +1,5 @@ // 武将觉醒表 -import { readJsonFile, parseReward } from '../util' +import { readJsonFile, parseGoodStr } from '../util' import { ABI_STAGE, FILENAME } from '../../consts'; import { RewardInter } from '../interface'; const _ = require('lodash'); @@ -29,7 +29,7 @@ const DicHeroWakeKeys: KeysEnum = {id: true, quality: true, star: t export const dicHeroWake = new Map(); arr.forEach(o => { - o.consume = parseReward(o.consume); + o.consume = parseGoodStr(o.consume); o.ceAttr = parseCeAttr(o); dicHeroWake.set(`${o.quality}_${o.star}`, _.pick(o, Object.keys(DicHeroWakeKeys))); }); diff --git a/shared/pubUtils/dictionary/DicJob.ts b/shared/pubUtils/dictionary/DicJob.ts index 5e15cbeb3..7ed2a6749 100644 --- a/shared/pubUtils/dictionary/DicJob.ts +++ b/shared/pubUtils/dictionary/DicJob.ts @@ -1,5 +1,5 @@ // 兵种表 -import {readJsonFile, parseNumberList, parseReward} from '../util' +import {readJsonFile, parseNumberList, parseGoodStr} from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../interface'; const _ = require('lodash'); @@ -50,8 +50,8 @@ export const jobClassAndgrades = new Map { o.seid = parseNumberList(o.seid); - o.trainingConsume = parseReward(o.trainingConsume); - o.upGradeConsume = parseReward(o.upGradeConsume); + o.trainingConsume = parseGoodStr(o.trainingConsume); + o.upGradeConsume = parseGoodStr(o.upGradeConsume); dicJob.set(o.jobid, _.pick(o, Object.keys(DicJobKeys))); let jobClass = jobClassMaxGrades.get(o.job_class); if (!!jobClass && jobClass.grade < o.grade) { diff --git a/shared/pubUtils/dictionary/DicRefine.ts b/shared/pubUtils/dictionary/DicRefine.ts index 64c59ce34..c2357ec93 100644 --- a/shared/pubUtils/dictionary/DicRefine.ts +++ b/shared/pubUtils/dictionary/DicRefine.ts @@ -1,5 +1,5 @@ // 武将特技表 -import { readJsonFile, parseReward } from '../util' +import { readJsonFile, parseGoodStr } from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../interface'; @@ -25,7 +25,7 @@ let arr = JSON.parse(str); export const dicRefine = new Map(); arr.forEach(o => { - o.material = parseReward(o.material) + o.material = parseGoodStr(o.material) dicRefine.set(o.level, o); }); diff --git a/shared/pubUtils/dictionary/DicTower.ts b/shared/pubUtils/dictionary/DicTower.ts index 25d4fd71d..e14b1f0a8 100644 --- a/shared/pubUtils/dictionary/DicTower.ts +++ b/shared/pubUtils/dictionary/DicTower.ts @@ -1,5 +1,5 @@ // 镇念塔表 -import {parseReward, decodeArrayListStr, readJsonFile, parseNumberList} from '../util' +import {parseGoodStr, decodeArrayListStr, readJsonFile, parseNumberList} from '../util' import { FILENAME } from '../../consts'; import { RewardInter } from '../../pubUtils/interface'; @@ -21,12 +21,12 @@ export const dicTower = new Map(); arr.forEach(o => { o.warArray = parseNumberList(o.warArray); - o.reward = parseReward(o.reward); - o.rewardOfcollect = parseRewardOfCollect(o.rewardOfcollect); + o.reward = parseGoodStr(o.reward); + o.rewardOfcollect = parseGoodStrOfCollect(o.rewardOfcollect); dicTower.set(o.towerFloor, o); }); -function parseRewardOfCollect(str: string) { +function parseGoodStrOfCollect(str: string) { let result = new Array<{id: number, count: number}>(); if(!str) return result; let decodeArr = decodeArrayListStr(str); diff --git a/shared/pubUtils/dictionary/DicTowerTask.ts b/shared/pubUtils/dictionary/DicTowerTask.ts index 8bed36e1c..2d357e40b 100644 --- a/shared/pubUtils/dictionary/DicTowerTask.ts +++ b/shared/pubUtils/dictionary/DicTowerTask.ts @@ -1,5 +1,5 @@ // 镇念塔派遣任务表 -import {parseReward, decodeArrayListStr, decodeArrayStr, readJsonFile} from '../util' +import {parseGoodStr, decodeArrayListStr, decodeArrayStr, readJsonFile} from '../util' import { FILENAME } from '../../consts'; import { RewardInter } from '../interface'; @@ -38,8 +38,8 @@ let arr = JSON.parse(str); export const dicTowerTask = new Map(); arr.forEach(o => { - o.reward = parseReward(o.reward); - o.additionalReward = parseReward(o.additionalReward); + o.reward = parseGoodStr(o.reward); + o.additionalReward = parseGoodStr(o.additionalReward); o.termsForAdd = parseTermsForAdd(o.termsForAdd); o.suitFloor = parseSuitFloor(o.suitFloor as string); dicTowerTask.set(o.taskId, o); diff --git a/shared/pubUtils/playerCe.ts b/shared/pubUtils/playerCe.ts index ce73599b5..41de689e0 100644 --- a/shared/pubUtils/playerCe.ts +++ b/shared/pubUtils/playerCe.ts @@ -14,6 +14,8 @@ import { Attributes } from './interface'; import { DicSe } from './dictionary/DicSe'; import { EquipType } from '../db/Equip'; import { DicRandomEffectPool } from './dictionary/DicRandomEffectPool'; +import { getGoodById } from './gamedata'; +import { JEWEL_ATTR } from '../consts/constModules/abilityConst'; const HERO_CE_RATIO = 100; const _ = require('underscore'); @@ -44,6 +46,10 @@ export function calPlayerCe(globalCeAttr: CeAttr, hero: HeroType, type: number, reIncAttr = calHeroEquipIncAttr(hero); } else if (type == HERO_SYSTEM_TYPE.RESTRENGTHEN) { reIncAttr = calRestrengthenIncAttr(hero, args.shift(), args, addSeidList, removeSeidList); + } else if (type == HERO_SYSTEM_TYPE.JEWEL_ON) {//宝石穿戴 + reIncAttr = calHeroCeWhenJewelOn(hero, args); + } else if (type == HERO_SYSTEM_TYPE.JEWEL_OFF) {//宝石卸下 + reIncAttr = calHeroCeWhenJewelOff(hero, args); } addSeidEffect(reIncAttr, hero.ceAttr, addSeidList, removeSeidList); // 处理加值 @@ -431,6 +437,38 @@ function addSeid(effectList: Array, seidId:number, rand: number, seidValue } effectList.push(seid); } + +function calHeroCeWhenJewelOn(hero: HeroType, args: Array) { + let res: CeAttr = {}; + let id = args[0]; + let oldId = args[1]; + let goodInfo = getGoodById(id); + let oldGoodInfo; + if (!!oldId) + oldGoodInfo = getGoodById(oldId); + for (let attrName in JEWEL_ATTR) { + if (!!goodInfo[attrName]) { + res[attrName] = {fixUp: hero.ceAttr[attrName].fixUp, base: hero.ceAttr[attrName].base, ratioUp: hero.ceAttr[attrName].ratioUp}; + res[attrName].fixUp += goodInfo[attrName]; + if (oldGoodInfo) + res[attrName].fixUp -= oldGoodInfo[attrName]; + } + } + return res; +} +function calHeroCeWhenJewelOff(hero: HeroType, args: Array) { + let res: CeAttr = {}; + for (let id of args) { + let goodInfo = getGoodById(id); + for (let attrName in JEWEL_ATTR) { + if (!!goodInfo[attrName]) { + res[attrName] = {fixUp: hero.ceAttr[attrName].fixUp, base: hero.ceAttr[attrName].base, ratioUp: hero.ceAttr[attrName].ratioUp}; + res[attrName].fixUp -= goodInfo[attrName]; + } + } + } + return res; +} //全局属性加成 export async function reCalAllHeroCe(roleId: string, type: number, args:Array) { let reIncAttr: CeAttr = {}; @@ -470,8 +508,9 @@ function calHeroAddSkin(args:Array, ceAttr: CeAttr){ for (let attr of addSkin.globalAttr) { attrName = getAtrrNameById(attr.id); res[attrName] = {fixUp: ceAttr[attrName].fixUp, ratioUp: ceAttr[attrName].ratioUp}; - res[attrName].fixUp += attr.number * HERO_CE_RATIO; + res[attrName].fixUp += attr.number * HERO_CE_RATIO; } } return res; } + diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index 12b7086ce..3243495b0 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -466,7 +466,7 @@ export function readWarJsonFileList() { // 字典表常用解析方法 // 解析物品 {"id": number, "count": number} 格式 -export function parseReward(str: string) { +export function parseGoodStr(str: string) { let result = new Array<{id: number, count: number}>(); if(!str) return result; let decodeArr = decodeArrayListStr(str); diff --git a/shared/resource/jsons/dic_goods.json b/shared/resource/jsons/dic_goods.json index ccd14ab1a..4ef53fbb3 100644 --- a/shared/resource/jsons/dic_goods.json +++ b/shared/resource/jsons/dic_goods.json @@ -23338,7 +23338,7 @@ "pieces": 0, "pieceId": 0, "composeMaterial": "60006&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23374,7 +23374,7 @@ "pieces": 0, "pieceId": 0, "composeMaterial": "60007&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23410,7 +23410,7 @@ "pieces": 0, "pieceId": 0, "composeMaterial": "60008&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23441,7 +23441,7 @@ "lvLimited": 1, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23477,7 +23477,7 @@ "lvLimited": 2, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23513,7 +23513,7 @@ "lvLimited": 3, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23549,7 +23549,7 @@ "lvLimited": 4, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23585,7 +23585,7 @@ "lvLimited": 5, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23621,7 +23621,7 @@ "lvLimited": 6, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23657,12 +23657,12 @@ "lvLimited": 7, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60016&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23693,12 +23693,12 @@ "lvLimited": 8, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60017&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23729,12 +23729,12 @@ "lvLimited": 9, "quality": 5, "image_id": 1, - "itid": 42, + "itid": 43, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60018&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -23765,7 +23765,7 @@ "lvLimited": 1, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23801,7 +23801,7 @@ "lvLimited": 2, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23837,7 +23837,7 @@ "lvLimited": 3, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23873,7 +23873,7 @@ "lvLimited": 4, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23909,7 +23909,7 @@ "lvLimited": 5, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23945,7 +23945,7 @@ "lvLimited": 6, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -23981,12 +23981,12 @@ "lvLimited": 7, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60026&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24017,12 +24017,12 @@ "lvLimited": 8, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60027&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24053,12 +24053,12 @@ "lvLimited": 9, "quality": 5, "image_id": 1, - "itid": 42, + "itid": 44, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60028&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24089,7 +24089,7 @@ "lvLimited": 1, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24125,7 +24125,7 @@ "lvLimited": 2, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24161,7 +24161,7 @@ "lvLimited": 3, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24197,7 +24197,7 @@ "lvLimited": 4, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24233,7 +24233,7 @@ "lvLimited": 5, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24269,7 +24269,7 @@ "lvLimited": 6, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24305,12 +24305,12 @@ "lvLimited": 7, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60036&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24341,12 +24341,12 @@ "lvLimited": 8, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60037&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24377,12 +24377,12 @@ "lvLimited": 9, "quality": 5, "image_id": 1, - "itid": 42, + "itid": 45, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60038&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24413,7 +24413,7 @@ "lvLimited": 1, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24449,7 +24449,7 @@ "lvLimited": 2, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24485,7 +24485,7 @@ "lvLimited": 3, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24521,7 +24521,7 @@ "lvLimited": 4, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24557,7 +24557,7 @@ "lvLimited": 5, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24593,7 +24593,7 @@ "lvLimited": 6, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24629,12 +24629,12 @@ "lvLimited": 7, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60046&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24665,12 +24665,12 @@ "lvLimited": 8, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60047&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24701,12 +24701,12 @@ "lvLimited": 9, "quality": 5, "image_id": 1, - "itid": 42, + "itid": 46, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60048&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24737,7 +24737,7 @@ "lvLimited": 1, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24773,7 +24773,7 @@ "lvLimited": 2, "quality": 1, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24809,7 +24809,7 @@ "lvLimited": 3, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24845,7 +24845,7 @@ "lvLimited": 4, "quality": 2, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24881,7 +24881,7 @@ "lvLimited": 5, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24917,7 +24917,7 @@ "lvLimited": 6, "quality": 3, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, @@ -24953,12 +24953,12 @@ "lvLimited": 7, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60056&3", - "specialMaterial": "&", + "specialMaterial": "60060&1", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -24989,12 +24989,12 @@ "lvLimited": 8, "quality": 4, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60057&3", - "specialMaterial": "&", + "specialMaterial": "60060&3", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -25025,12 +25025,12 @@ "lvLimited": 9, "quality": 5, "image_id": 1, - "itid": 42, + "itid": 47, "goodType": 5, "pieces": 0, "pieceId": 0, "composeMaterial": "60058&3", - "specialMaterial": "&", + "specialMaterial": "60060&9", "decomposeItem": "&", "hole": 0, "randomEffect": "&", @@ -25054,5 +25054,41 @@ "getWays": "1&0", "value": 0, "info": "&" + }, + { + "good_id": 60060, + "name": "灵玄石", + "lvLimited": 1, + "quality": 5, + "image_id": 1, + "itid": 48, + "goodType": 5, + "pieces": 0, + "pieceId": 0, + "composeMaterial": "&", + "specialMaterial": "&", + "decomposeItem": "&", + "hole": 0, + "randomEffect": "&", + "hid": 0, + "hp": 0, + "atk": 0, + "matk": 0, + "def": 0, + "mdef": 100, + "agi": 0, + "luk": 0, + "hp_up": 0, + "atk_up": 0, + "matk_up": 0, + "def_up": 0, + "mdef_up": 0, + "agi_up": 0, + "luk_up": 0, + "specialAttr": "&", + "suitId": 0, + "getWays": "1&0", + "value": 0, + "info": "&" } ] \ No newline at end of file diff --git a/shared/resource/jsons/dic_zyz_fashions.json b/shared/resource/jsons/dic_zyz_fashions.json index 27a993e86..f391492f6 100644 --- a/shared/resource/jsons/dic_zyz_fashions.json +++ b/shared/resource/jsons/dic_zyz_fashions.json @@ -3,7 +3,7 @@ "id": 41001, "name": "漂亮衣服1", "rSpine": "LH_jiaxu", - "sSpine": "jiaxu", + "sSpine": "caocao", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500", @@ -102,7 +102,7 @@ "id": 41010, "name": "漂亮衣服10", "rSpine": "LH_jiaxu", - "sSpine": "jiaxu", + "sSpine": "dengai", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500", @@ -124,7 +124,7 @@ "id": 41012, "name": "漂亮衣服12", "rSpine": "LH_xuchu", - "sSpine": "xuchu", + "sSpine": "caoren", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500", @@ -146,7 +146,7 @@ "id": 41014, "name": "漂亮衣服14", "rSpine": "LH_jiaxu", - "sSpine": "jiaxu", + "sSpine": "caiyan", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500", @@ -410,7 +410,7 @@ "id": 41038, "name": "漂亮衣服38", "rSpine": "LH_xuchu", - "sSpine": "xuchu", + "sSpine": "ganning", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500", @@ -465,7 +465,7 @@ "id": 41043, "name": "漂亮衣服43", "rSpine": "LH_xuchu", - "sSpine": "xuchu", + "sSpine": "bulianshi", "skill": "1&12|2&13", "seid": "1001&1005&1025", "globalAttr": "1&2000|2&500",