Merge branch 'master' of https://gitlab.trgame.cn/zyztech/zyz_server
This commit is contained in:
113
game-server/app/servers/activity/handler/entertainHandler.ts
Normal file
113
game-server/app/servers/activity/handler/entertainHandler.ts
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import { Application, BackendSession, HandlerService, } from 'pinus';
|
||||||
|
import { getRandSingleEelm, parseNumberList, resResult } from '../../../pubUtils/util';
|
||||||
|
import { ITEM_CHANGE_REASON, STATUS } from '../../../consts';
|
||||||
|
import { addReward, stringToConsumeParam, stringToRewardParam } from '../../../services/activity/giftPackageService';
|
||||||
|
import { getPlayerEntertainData, getPlayerEntertainDataShow } from '../../../services/activity/entertainService';
|
||||||
|
import { ActivityEntertainRecModel } from '../../../db/ActivityEntertainRec';
|
||||||
|
import { handleCost } from '../../../services/role/rewardService';
|
||||||
|
|
||||||
|
export default function (app: Application) {
|
||||||
|
new HandlerService(app, {});
|
||||||
|
return new EntertainHandler(app);
|
||||||
|
}
|
||||||
|
|
||||||
|
export class EntertainHandler {
|
||||||
|
constructor(private app: Application) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 获取火神祭祀活动数据
|
||||||
|
* @param {{ activityId: number}} msg
|
||||||
|
* @param {BackendSession} session
|
||||||
|
* @memberof EntertainHandler
|
||||||
|
*/
|
||||||
|
async getData(msg: { activityId: number }, session: BackendSession) {
|
||||||
|
const { activityId } = msg;
|
||||||
|
const roleId = session.get('roleId');
|
||||||
|
const serverId = session.get('serverId');
|
||||||
|
|
||||||
|
let playerData = await getPlayerEntertainDataShow(activityId, serverId, roleId);
|
||||||
|
|
||||||
|
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, playerData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 宴请
|
||||||
|
* @param {{ activityId: number }} msg
|
||||||
|
* @param {BackendSession} session
|
||||||
|
* @memberof EntertainHandler
|
||||||
|
*/
|
||||||
|
async invite(msg: { activityId: number }, session: BackendSession) {
|
||||||
|
const { activityId } = msg;
|
||||||
|
const roleId = session.get('roleId');
|
||||||
|
const roleName = session.get('roleName');
|
||||||
|
const sid = session.get('sid');
|
||||||
|
const serverId = session.get('serverId');
|
||||||
|
|
||||||
|
let playerData = await getPlayerEntertainData(activityId, serverId, roleId);
|
||||||
|
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||||
|
// 挑战次数
|
||||||
|
if(playerData.playCnt >= playerData.freeCnt + playerData.buyCnt) return resResult(STATUS.ACTIVITY_ENTERTAIN_NO_NUM);
|
||||||
|
|
||||||
|
let pool = playerData.heroes.filter(hero => {
|
||||||
|
if(hero.num >= hero.maxNum) return false;
|
||||||
|
for(let condition of hero.conditionArr) {
|
||||||
|
if(condition.type == 1 && playerData.invitedHeroNum < condition.param) return false;
|
||||||
|
if(condition.type == 2 && playerData.invitedHids.indexOf(condition.param) == -1) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
if(pool.length <= 0) return resResult(STATUS.ACTIVITY_ENTERTAIN_NO_NUM);
|
||||||
|
let randResult = getRandSingleEelm(pool);
|
||||||
|
if(!randResult) return resResult(STATUS.ACTIVITY_ENTERTAIN_NO_NUM);
|
||||||
|
|
||||||
|
let rewards = stringToRewardParam(randResult.reward);
|
||||||
|
let playerRecord = await ActivityEntertainRecModel.record(serverId, activityId, playerData.roundIndex, roleId, { todayIndex: playerData.todayIndex, id: randResult.id, hid: randResult.hid, time: new Date(), reward: randResult.reward })
|
||||||
|
let { goods } = await addReward(roleId, roleName, sid, serverId, rewards, ITEM_CHANGE_REASON.ACT_DRAGON_BOAT);
|
||||||
|
randResult.incNum();
|
||||||
|
playerData.updateBuyCnt(playerRecord);
|
||||||
|
return resResult(STATUS.SUCCESS, {
|
||||||
|
activityId,
|
||||||
|
todayPlayCnt: playerData.todayPlayCnt,
|
||||||
|
playCnt: playerData.playCnt,
|
||||||
|
curHero: randResult.getShowResult(),
|
||||||
|
goods
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 购买次数
|
||||||
|
* @param {{ activityId: number, id: number, count: number}} msg
|
||||||
|
* @param {BackendSession} session
|
||||||
|
* @memberof EntertainHandler
|
||||||
|
*/
|
||||||
|
async buyCnt(msg: { activityId: number, count: number }, session: BackendSession) {
|
||||||
|
const { activityId, count } = msg;
|
||||||
|
const roleId = session.get('roleId');
|
||||||
|
const sid = session.get('sid');
|
||||||
|
const serverId = session.get('serverId');
|
||||||
|
|
||||||
|
let playerData = await getPlayerEntertainData(activityId, serverId, roleId);
|
||||||
|
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||||
|
|
||||||
|
// 可购买次数
|
||||||
|
if(playerData.buyCnt + count > playerData.maxBuyCnt) return resResult(STATUS.ACTIVITY_ENTERTAIN_BUY_COUNT_OVER);
|
||||||
|
if(playerData.todayPlayCnt < playerData.freeCnt) return resResult(STATUS.ACTIVITY_DRAGON_BOAT_CANNOT_BUY);
|
||||||
|
// 扣材料
|
||||||
|
let costResult = await handleCost(roleId, sid, stringToConsumeParam(playerData.buyCost), ITEM_CHANGE_REASON.ACT_DRAGON_BOAT_BUY_COST);
|
||||||
|
if(!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
|
||||||
|
|
||||||
|
// 保存数据
|
||||||
|
let buildResult = await ActivityEntertainRecModel.buyCnt(serverId, activityId, playerData.roundIndex, roleId, count);
|
||||||
|
// // 更新数据
|
||||||
|
playerData.updateBuyCnt(buildResult);
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, {
|
||||||
|
activityId,
|
||||||
|
maxBuyCnt: playerData.maxBuyCnt,
|
||||||
|
buyCnt: playerData.buyCnt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -65,7 +65,8 @@ export class GrowthFundHandler {
|
|||||||
if (!growthFundItemData.isComplete) {//未完成任务
|
if (!growthFundItemData.isComplete) {//未完成任务
|
||||||
return resResult(STATUS.ACTIVITY_TASK_UNCOMPLETED);
|
return resResult(STATUS.ACTIVITY_TASK_UNCOMPLETED);
|
||||||
}
|
}
|
||||||
if (playerData.isReceive(pageIndex, cellIndex)) {//已经领取过
|
let hasReceive = await ActivityGrowthFundModel.exists({ roleId, activityId, pageIndex, cellIndex });
|
||||||
|
if (hasReceive) {//已经领取过
|
||||||
return resResult(STATUS.ACTIVITY_REWARDED);
|
return resResult(STATUS.ACTIVITY_REWARDED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,10 +62,14 @@ export class AuctionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const lot = await LotModel.findLot(code);
|
const lot = await LotModel.findLot(code);
|
||||||
if (!lot || lot.status === LOT_STATUS.SOLD || lot.status === LOT_STATUS.MAX) {
|
if (!lot) {
|
||||||
res.releaseCallback();
|
res.releaseCallback();
|
||||||
return resResult(STATUS.GUILD_LOT_NOT_FOUND);
|
return resResult(STATUS.GUILD_LOT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
if (lot.status === LOT_STATUS.SOLD || lot.status === LOT_STATUS.MAX) {
|
||||||
|
res.releaseCallback();
|
||||||
|
return resResult(STATUS.GUILD_LOT_HAS_SOLD);
|
||||||
|
}
|
||||||
|
|
||||||
if (auctionStage === AUCTION_STAGE.GUILD && lot.guildCode !== guildCode) {
|
if (auctionStage === AUCTION_STAGE.GUILD && lot.guildCode !== guildCode) {
|
||||||
res.releaseCallback();
|
res.releaseCallback();
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import { getMonthlyFundData } from './monthlyFundService';
|
|||||||
import { getPlayerRebateDataShow } from './rebateService';
|
import { getPlayerRebateDataShow } from './rebateService';
|
||||||
import { getWebviewDataShow } from './webviewService';
|
import { getWebviewDataShow } from './webviewService';
|
||||||
import { getPlayerDragonBoatDataShow } from './dragonBoatService';
|
import { getPlayerDragonBoatDataShow } from './dragonBoatService';
|
||||||
|
import { getPlayerEntertainDataShow } from './entertainService';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取活动数据
|
* 获取活动数据
|
||||||
@@ -274,6 +275,11 @@ export async function getActivity(serverId: number, roleId: string, uid: number,
|
|||||||
activityData = await getPlayerDragonBoatDataShow(activityId, serverId, roleId);
|
activityData = await getPlayerDragonBoatDataShow(activityId, serverId, roleId);
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
case ACTIVITY_TYPE.ENTERTAIN:
|
||||||
|
{
|
||||||
|
activityData = await getPlayerEntertainDataShow(activityId, serverId, roleId);
|
||||||
|
break
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
console.log('未知活动类型.........', activityType)
|
console.log('未知活动类型.........', activityType)
|
||||||
break;
|
break;
|
||||||
|
|||||||
38
game-server/app/services/activity/entertainService.ts
Normal file
38
game-server/app/services/activity/entertainService.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import { ActivityEntertainRecModel } from "../../db/ActivityEntertainRec";
|
||||||
|
import { EntertainData } from "../../domain/activityField/entertainField";
|
||||||
|
import { getRoleCreateTime, getServerCreateTime } from "../redisService";
|
||||||
|
import { getActivityById } from "./activityService";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家活动数据
|
||||||
|
*
|
||||||
|
* @param {number} serverId 区Id
|
||||||
|
* @param {number} activityId 活动Id
|
||||||
|
* @param {string} roleId 角色Id
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function getPlayerEntertainData(activityId: number, serverId: number, roleId: string) {
|
||||||
|
let activityData = await getActivityById(activityId);
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new EntertainData(activityData, createTime, serverTime);
|
||||||
|
let playerRecord = await ActivityEntertainRecModel.findData(serverId, activityId, playerData.roundIndex, roleId);
|
||||||
|
playerData.setPlayerRecords(playerRecord);
|
||||||
|
return playerData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 玩家活动数据
|
||||||
|
*
|
||||||
|
* @param {number} serverId 区Id
|
||||||
|
* @param {number} activityId 活动Id
|
||||||
|
* @param {string} roleId 角色Id
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function getPlayerEntertainDataShow(activityId: number, serverId: number, roleId: string) {
|
||||||
|
let playerData = await getPlayerEntertainData(activityId, serverId, roleId);
|
||||||
|
if(playerData && playerData.canShow && playerData.canShow()) {
|
||||||
|
return playerData.getShowResult();
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
@@ -545,8 +545,8 @@ export async function checkAuctionStage(auctionStage: number, magicWord: string)
|
|||||||
if(curTime > (await todayWorldBegin()).getTime()) return false
|
if(curTime > (await todayWorldBegin()).getTime()) return false
|
||||||
}
|
}
|
||||||
if(auctionStage == AUCTION_STAGE.WORLD) {
|
if(auctionStage == AUCTION_STAGE.WORLD) {
|
||||||
if(curTime < (await todayWorldBegin()).getTime() - 10 * 60 * 100) return false;
|
if(curTime < (await todayWorldBegin()).getTime()) return false;
|
||||||
if(curTime > (await todayWorldEnd()).getTime() + 10 * 60 * 1000) return false
|
if(curTime > (await todayWorldEnd()).getTime()) return false
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { GVGTeamMem } from "../../domain/battleField/gvgBattle";
|
import { GVGTeamMem } from "../../domain/battleField/gvgBattle";
|
||||||
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
|
import { GVGLeagueModel, GVGLeagueType } from "../../db/GVGLeague";
|
||||||
import { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from "../../db/GVGTeam";
|
import GVGTeam, { GVGTeamModel, GVGTeamType, GVGTeamUpdate } from "../../db/GVGTeam";
|
||||||
import { GVGCityModel, GVGCityType } from "../../db/GVGCity";
|
import { GVGCityModel, GVGCityType } from "../../db/GVGCity";
|
||||||
import { gameData, getGVGBattleRankReward } from "../../pubUtils/data";
|
import { gameData, getGVGBattleRankReward } from "../../pubUtils/data";
|
||||||
import { COUNTER, GVG_AREA_TYPE, GVG_ATTACK_TYPE, GVG_BATTLE_RANK_TYPE, GVG_PERIOD, GVG_POINT_TYPE, GVG_SERVER_TYPE, GVG_TECH_TYPE, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, STATUS } from "../../consts";
|
import { COUNTER, GVG_AREA_TYPE, GVG_ATTACK_TYPE, GVG_BATTLE_RANK_TYPE, GVG_PERIOD, GVG_POINT_TYPE, GVG_SERVER_TYPE, GVG_TECH_TYPE, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, SERVER_GROUP_FUN_TYPE, STATUS } from "../../consts";
|
||||||
import { getTimeFun, nowSeconds } from "../../pubUtils/timeUtil";
|
import { getTimeFun, nowSeconds } from "../../pubUtils/timeUtil";
|
||||||
import { DicGVGAreaPoint } from "../../pubUtils/dictionary/DicGVGAreaPoint";
|
import { DicGVGAreaPoint } from "../../pubUtils/dictionary/DicGVGAreaPoint";
|
||||||
import { getGVGBattleData, getGVGBattleMap } from "../memoryCache/gvgBattleData";
|
import { getGVGBattleData, getGVGBattleMap } from "../memoryCache/gvgBattleData";
|
||||||
@@ -29,6 +29,7 @@ import { HeroModel, HeroType } from "../../db/Hero";
|
|||||||
import { ArtifactModel } from "../../db/Artifact";
|
import { ArtifactModel } from "../../db/Artifact";
|
||||||
import { getHeroesAttributes } from "../playerCeService";
|
import { getHeroesAttributes } from "../playerCeService";
|
||||||
import { CounterModel } from "../../db/Counter";
|
import { CounterModel } from "../../db/Counter";
|
||||||
|
import { getGroupIdOfServer } from "../serverService";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取本联军上周占领的城池
|
* 获取本联军上周占领的城池
|
||||||
@@ -353,12 +354,11 @@ export function checkGVGBattleStart(roleId: string, attackTeam: GVGTeamType, def
|
|||||||
// —————————— 定时器相关 —————————— //
|
// —————————— 定时器相关 —————————— //
|
||||||
// gvg激战期开始定时器
|
// gvg激战期开始定时器
|
||||||
export async function gvgBattleStart() {
|
export async function gvgBattleStart() {
|
||||||
let servers = pinus.app.getServersByType('guild');
|
|
||||||
|
|
||||||
let { configId } = getGVGConfig();
|
let { configId } = getGVGConfig();
|
||||||
let guardCities = await GVGCityModel.findAllGuardCities(configId);
|
let guardCities = await GVGCityModel.findAllGuardCities(configId);
|
||||||
for(let { cityId, groupKey, guardLeague, guardLeagueName } of guardCities) {
|
for(let { cityId, groupKey, guardLeague, guardLeagueName } of guardCities) {
|
||||||
let sid = (await dispatch(redisClient(), cityId.toString(), servers, 'guild'))?.id;
|
let sid = await dispatchTeam(groupKey, cityId);
|
||||||
await pinus.app.rpc.guild.guildRemote.initCatapult.toServer(sid, cityId, groupKey, guardLeague, guardLeagueName);
|
await pinus.app.rpc.guild.guildRemote.initCatapult.toServer(sid, cityId, groupKey, guardLeague, guardLeagueName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -774,9 +774,24 @@ export async function initTeamToMem() {
|
|||||||
let teams = await GVGTeamModel.findByConfigId(configId);
|
let teams = await GVGTeamModel.findByConfigId(configId);
|
||||||
for(let team of teams) {
|
for(let team of teams) {
|
||||||
if(team.isBroken) continue;
|
if(team.isBroken) continue;
|
||||||
if((await dispatch(redisClient(), team.cityId.toString(), servers, 'guild'))?.id == sid) {
|
let dispacthSid = await dispatchTeam(team.groupKey, team.cityId);
|
||||||
|
if(dispacthSid == sid) {
|
||||||
let teamObj = getGVGBattleData(team.groupKey);
|
let teamObj = getGVGBattleData(team.groupKey);
|
||||||
teamObj.enterCity(team);
|
teamObj.enterCity(team);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function dispatchTeam(groupKey: string, cityId: number) {
|
||||||
|
let groupId = '';
|
||||||
|
if(groupKey.startsWith('s')) {
|
||||||
|
let serverId = parseInt(groupKey.slice(1));
|
||||||
|
groupId = (await getGroupIdOfServer(serverId, SERVER_GROUP_FUN_TYPE.GVG)).toString();
|
||||||
|
} else {
|
||||||
|
groupId = groupKey.slice(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
let servers = pinus.app.getServersByType('guild');
|
||||||
|
let sid = (await dispatch(redisClient(), `${groupId}_${cityId}`, servers, 'guild'))?.id;
|
||||||
|
return sid;
|
||||||
|
}
|
||||||
@@ -246,9 +246,10 @@ export class SendMailFun {
|
|||||||
// 生成单人邮件
|
// 生成单人邮件
|
||||||
public async createSingleMails(code: string, roleIds: string[]) {
|
public async createSingleMails(code: string, roleIds: string[]) {
|
||||||
let mapTemp = this.mailTemps.get(code);
|
let mapTemp = this.mailTemps.get(code);
|
||||||
|
if(mapTemp) console.log('#### createSingleMails', mapTemp.getCreateMailParams()?.contentId, roleIds);
|
||||||
if(mapTemp.sendTime < nowSeconds()) return;
|
if(mapTemp.sendTime < nowSeconds()) return;
|
||||||
for(let roleId of roleIds) {
|
for(let roleId of roleIds) {
|
||||||
console.log('#### createSingleMails this.hideMail', this.hideMail, this.hideMail? MAIL_STATUS.HIDE: MAIL_STATUS.CREATE)
|
// console.log('#### createSingleMails this.hideMail', this.hideMail, this.hideMail? MAIL_STATUS.HIDE: MAIL_STATUS.CREATE)
|
||||||
let originMail = await MailModel.addMail({ roleId, status: this.hideMail? MAIL_STATUS.HIDE: MAIL_STATUS.CREATE, ...mapTemp.getCreateMailParams() });
|
let originMail = await MailModel.addMail({ roleId, status: this.hideMail? MAIL_STATUS.HIDE: MAIL_STATUS.CREATE, ...mapTemp.getCreateMailParams() });
|
||||||
this.mails.push(originMail);
|
this.mails.push(originMail);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,14 +342,14 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve
|
|||||||
let curJewel = jewels.find(cur => cur.seqId == jewel);
|
let curJewel = jewels.find(cur => cur.seqId == jewel);
|
||||||
calCe.setJewel(hid, id, stones, curJewel);
|
calCe.setJewel(hid, id, stones, curJewel);
|
||||||
calCe.setStone(hid, id, stones);
|
calCe.setStone(hid, id, stones);
|
||||||
calCe.setTitle(role.title);
|
|
||||||
calCe.setTeraph(role.teraphs);
|
|
||||||
}
|
}
|
||||||
let artifact = artifacts.find(cur => cur.hid == hid);
|
let artifact = artifacts.find(cur => cur.hid == hid);
|
||||||
if(artifact) calCe.setPutArtifact(hid, skinId, job, artifact);
|
if(artifact) calCe.setPutArtifact(hid, skinId, job, artifact);
|
||||||
calCe.setEquipSuit(hid, skinId, ePlace);
|
calCe.setEquipSuit(hid, skinId, ePlace);
|
||||||
calCe.setScroll(hid, scrollStar, scrollQuality, scrollColorStar);
|
calCe.setScroll(hid, scrollStar, scrollQuality, scrollColorStar);
|
||||||
}
|
}
|
||||||
|
calCe.setTitle(role.title);
|
||||||
|
calCe.setTeraph(role.teraphs);
|
||||||
|
|
||||||
for(let { schoolId, hid, } of schools) {
|
for(let { schoolId, hid, } of schools) {
|
||||||
let curHero = heroes.find(cur => cur.hid == hid);
|
let curHero = heroes.find(cur => cur.hid == hid);
|
||||||
|
|||||||
@@ -46,15 +46,15 @@ export class CalCe {
|
|||||||
let lv = this.data.heroLv.get(hid)||1;
|
let lv = this.data.heroLv.get(hid)||1;
|
||||||
for(let attrId = ABI_TYPE.ABI_HP; attrId < ABI_TYPE.ABI_MAX; attrId++) {
|
for(let attrId = ABI_TYPE.ABI_HP; attrId < ABI_TYPE.ABI_MAX; attrId++) {
|
||||||
if(!this.data.heroAttrs.has(`${hid}_${attrId}`) && !this.data.globalAttrs.has(attrId)) continue;
|
if(!this.data.heroAttrs.has(`${hid}_${attrId}`) && !this.data.globalAttrs.has(attrId)) continue;
|
||||||
let { mainBase = 0, mainBaseUp = 0, subBase = 0, job = 0, starUp = 0, connect = 0, talent = 0, equipQuality = 0, equipStrength = 0, equipStar = 0, equipSuit = 0, jewel = 0, stone = 0, artifactLv = 0, artifactQuality = 0, artifactSeid = 0 } = this.data.heroAttrs.get(`${hid}_${attrId}`)||{};
|
let { mainBase = 0, mainBaseUp = 0, subBase = 0, job = 0, starUp = 0, connect = 0, talent = 0, equipQuality = 0, equipStrength = 0, equipStar = 0, equipSuit = 0, jewel = 0, stone = 0, artifactLv = 0, artifactQuality = 0, artifactSeid = 0, jewelBase = 0 } = this.data.heroAttrs.get(`${hid}_${attrId}`)||{};
|
||||||
let { school = 0, teraph = 0, title = 0, scroll = 0, skin = 0 } = this.data.getGlobalAttrById(attrId)||{};
|
let { school = 0, teraph = 0, title = 0, scroll = 0, skin = 0 } = this.data.getGlobalAttrById(attrId)||{};
|
||||||
let val = 0, ceVal = 0, str = '', ceStr = '';
|
let val = 0, ceVal = 0, str = '', ceStr = '';
|
||||||
if(ABI_TYPE_MAIN.indexOf(attrId) != -1) {
|
if(ABI_TYPE_MAIN.indexOf(attrId) != -1) {
|
||||||
// {[ hp1 + lv * hp2 ] * ( 1 + hp5 ) + [( hp6 + hp7 ) * ( 1 + hp8 )]} * ( 1 + hp9 ) + hp10 + hp11 + hp14
|
// {[ hp1 + lv * hp2 ] * ( 1 + hp5 ) + [( hp6 + hp7 ) * ( 1 + hp8 )]} * ( 1 + hp9 ) + hp10 + hp11 + hp14
|
||||||
val = (( mainBase + job + lv * ( starUp + mainBaseUp ) ) * ( 1 + connect/100 ) + (( equipQuality + equipStrength ) * ( 1 + ( equipStar/100 + equipSuit/100 )))) * ( 1 + jewel/100 + school/100 + talent/100 + skin/100 + artifactSeid/100) + stone + teraph + title + scroll + artifactLv + artifactQuality;
|
val = (( mainBase + job + lv * ( starUp + mainBaseUp ) ) * ( 1 + connect/100 ) + (( equipQuality + equipStrength ) * ( 1 + ( equipStar/100 + equipSuit/100 )))) * ( 1 + jewel/100 + school/100 + talent/100 + skin/100 + artifactSeid/100) + stone + teraph + title + scroll + artifactLv + artifactQuality + jewelBase;
|
||||||
ceVal = (( mainBase + job + lv * ( starUp + mainBaseUp ) ) * ( 1 + connect/100 ) + (( equipQuality + equipStrength ) * ( 1 + ( equipStar/100 + equipSuit/100 )))) * ( 1 + jewel/100 + school/100 + talent/100 + skin/100 + artifactSeid/100) + stone + teraph + title + scroll + artifactLv + artifactQuality;
|
ceVal = (( mainBase + job + lv * ( starUp + mainBaseUp ) ) * ( 1 + connect/100 ) + (( equipQuality + equipStrength ) * ( 1 + ( equipStar/100 + equipSuit/100 )))) * ( 1 + jewel/100 + school/100 + talent/100 + skin/100 + artifactSeid/100) + stone + teraph + title + scroll + artifactLv + artifactQuality + jewelBase;
|
||||||
str += `{[${mainBase}+${job}+${lv}*(${starUp}+${mainBaseUp})]* ( 1 + ${connect}/100) + [(${equipQuality}+${equipStrength}) * ( 1 + ${equipStar}/100+${equipSuit}/100)]} * (1+${jewel}/100+${school}/100+${talent}/100+${skin}/100+${artifactSeid}/100)+${stone}+${teraph}+${title}+${scroll}+${artifactLv}+${artifactQuality}`;
|
str += `{[${mainBase}+${job}+${lv}*(${starUp}+${mainBaseUp})]* ( 1 + ${connect}/100) + [(${equipQuality}+${equipStrength}) * ( 1 + ${equipStar}/100+${equipSuit}/100)]} * (1+${jewel}/100+${school}/100+${talent}/100+${skin}/100+${artifactSeid}/100)+${stone}+${teraph}+${title}+${scroll}+${artifactLv}+${artifactQuality}+${jewelBase}`;
|
||||||
ceStr += `{[${mainBase}+${job}+${lv}*(${starUp}+${mainBaseUp})]* ( 1 + ${connect}/100) + [(${equipQuality}+${equipStrength}) * ( 1 + ${equipStar}/100+${equipSuit}/100)]} * (1+${jewel}/100+${school}/100+${talent}/100+${skin}/100+${artifactSeid}/100)+${stone}+${teraph}+${title}+${scroll}+${artifactLv}+${artifactQuality}`;
|
ceStr += `{[${mainBase}+${job}+${lv}*(${starUp}+${mainBaseUp})]* ( 1 + ${connect}/100) + [(${equipQuality}+${equipStrength}) * ( 1 + ${equipStar}/100+${equipSuit}/100)]} * (1+${jewel}/100+${school}/100+${talent}/100+${skin}/100+${artifactSeid}/100)+${stone}+${teraph}+${title}+${scroll}+${artifactLv}+${artifactQuality}+${jewelBase}`;
|
||||||
} else {
|
} else {
|
||||||
// attr1 + attr2 + attr4 + attr5 + attr6 + attr7 + attr9
|
// attr1 + attr2 + attr4 + attr5 + attr6 + attr7 + attr9
|
||||||
val = subBase + job + teraph + school + title + jewel + equipStar;
|
val = subBase + job + teraph + school + title + jewel + equipStar;
|
||||||
@@ -302,6 +302,7 @@ export class CalCe {
|
|||||||
this.data.clearHeroAttrByHid(hid, 'equipStar');
|
this.data.clearHeroAttrByHid(hid, 'equipStar');
|
||||||
this.data.clearEquipAttrByHid(hid, 'equipStar');
|
this.data.clearEquipAttrByHid(hid, 'equipStar');
|
||||||
this.data.clearHeroAttrByHid(hid, 'jewel');
|
this.data.clearHeroAttrByHid(hid, 'jewel');
|
||||||
|
this.data.clearHeroAttrByHid(hid, 'jewelBase');
|
||||||
this.data.clearHeroAttrByHid(hid, 'stone');
|
this.data.clearHeroAttrByHid(hid, 'stone');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,6 +380,8 @@ export class CalCe {
|
|||||||
public setJewel(hid: number, eplaceId: number, stones: Stone[], jewel: JewelType) {
|
public setJewel(hid: number, eplaceId: number, stones: Stone[], jewel: JewelType) {
|
||||||
this.data.clearHeroAttrByHid(hid, 'jewel');
|
this.data.clearHeroAttrByHid(hid, 'jewel');
|
||||||
this.data.clearEquipAttrByHidAndEplace(hid, eplaceId, 'jewel');
|
this.data.clearEquipAttrByHidAndEplace(hid, eplaceId, 'jewel');
|
||||||
|
this.data.clearHeroAttrByHid(hid, 'jewelBase');
|
||||||
|
this.data.clearEquipAttrByHidAndEplace(hid, eplaceId, 'jewelBase');
|
||||||
let seids: number[] = [];
|
let seids: number[] = [];
|
||||||
if(jewel) {
|
if(jewel) {
|
||||||
for(let { id, seid, rand } of jewel.randSe) {
|
for(let { id, seid, rand } of jewel.randSe) {
|
||||||
@@ -389,6 +392,14 @@ export class CalCe {
|
|||||||
for(let { seid, rand } of jewel.rareSe) {
|
for(let { seid, rand } of jewel.rareSe) {
|
||||||
seids.push(seid, rand);
|
seids.push(seid, rand);
|
||||||
}
|
}
|
||||||
|
let dicJewel = gameData.jewel.get(jewel.id);
|
||||||
|
if(dicJewel) {
|
||||||
|
let attrBaseValues = dicJewel.rareEffectBaseAttr||[];
|
||||||
|
for(let { id, num } of attrBaseValues) {
|
||||||
|
let equipAttr = this.data.getEquipAttrByHidAndId(hid, eplaceId, id);
|
||||||
|
equipAttr.jewelBase = num;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let { ratioUp } = this.addSeidEffect(seids);
|
let { ratioUp } = this.addSeidEffect(seids);
|
||||||
let map = new Map<number, number>(); // attrId => val
|
let map = new Map<number, number>(); // attrId => val
|
||||||
@@ -404,9 +415,10 @@ export class CalCe {
|
|||||||
equipAttr.jewel = val;
|
equipAttr.jewel = val;
|
||||||
}
|
}
|
||||||
let equips = this.data.getEquipAttrsByHid(hid);
|
let equips = this.data.getEquipAttrsByHid(hid);
|
||||||
for(let { hid, attrId, jewel } of equips) {
|
for(let { hid, attrId, jewel, jewelBase } of equips) {
|
||||||
let heroAttr = this.data.getHeroAttrByHidAndId(hid, attrId);
|
let heroAttr = this.data.getHeroAttrByHidAndId(hid, attrId);
|
||||||
heroAttr.jewel += jewel;
|
heroAttr.jewel += jewel;
|
||||||
|
heroAttr.jewelBase += jewelBase;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1083,6 +1095,7 @@ abstract class HeroAllAttr {
|
|||||||
artifactLv: number = 0; // hp14 宝物等级(dic_zyz_artifactLvPlan的attr)
|
artifactLv: number = 0; // hp14 宝物等级(dic_zyz_artifactLvPlan的attr)
|
||||||
artifactQuality: number = 0; // hp14 宝物品质(dic_zyz_artifactQualityPlan的attr)
|
artifactQuality: number = 0; // hp14 宝物品质(dic_zyz_artifactQualityPlan的attr)
|
||||||
artifactSeid: number = 0; // hp9 宝物词条(dic_zyz_artifactSeid算出来的)
|
artifactSeid: number = 0; // hp9 宝物词条(dic_zyz_artifactSeid算出来的)
|
||||||
|
jewelBase: number = 0; // hp15 天晶固定属性值(jewel的基础属性)
|
||||||
|
|
||||||
constructor(hid: number, attrId: number, ) {
|
constructor(hid: number, attrId: number, ) {
|
||||||
this.hid = hid;
|
this.hid = hid;
|
||||||
@@ -1139,6 +1152,8 @@ class HeroMainAttr extends HeroAllAttr {
|
|||||||
this.artifactQuality = value; break;
|
this.artifactQuality = value; break;
|
||||||
case HERO_MAIN_ATTR_INDEX.ARTIFACT_SEID:
|
case HERO_MAIN_ATTR_INDEX.ARTIFACT_SEID:
|
||||||
this.artifactSeid = value; break;
|
this.artifactSeid = value; break;
|
||||||
|
case HERO_MAIN_ATTR_INDEX.JEWEL_BASE:
|
||||||
|
this.jewelBase = value; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1196,6 +1211,9 @@ class HeroMainAttr extends HeroAllAttr {
|
|||||||
case HERO_MAIN_ATTR_INDEX.ARTIFACT_SEID:
|
case HERO_MAIN_ATTR_INDEX.ARTIFACT_SEID:
|
||||||
values.push(this.artifactSeid);
|
values.push(this.artifactSeid);
|
||||||
break;
|
break;
|
||||||
|
case HERO_MAIN_ATTR_INDEX.JEWEL_BASE:
|
||||||
|
values.push(this.jewelBase);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return values;
|
return values;
|
||||||
@@ -1257,6 +1275,7 @@ abstract class EquipAllAttr {
|
|||||||
equipStar: number = 0;
|
equipStar: number = 0;
|
||||||
jewel: number = 0;
|
jewel: number = 0;
|
||||||
stone: number = 0;
|
stone: number = 0;
|
||||||
|
jewelBase: number = 0;
|
||||||
|
|
||||||
constructor(hid: number, attrId: number) {
|
constructor(hid: number, attrId: number) {
|
||||||
this.hid = hid;
|
this.hid = hid;
|
||||||
@@ -1290,6 +1309,8 @@ class EquipMainAttr extends EquipAllAttr {
|
|||||||
this.jewel = value; break;
|
this.jewel = value; break;
|
||||||
case EQUIP_MAIN_ATTR_INDEX.STONE:
|
case EQUIP_MAIN_ATTR_INDEX.STONE:
|
||||||
this.stone = value; break;
|
this.stone = value; break;
|
||||||
|
case EQUIP_MAIN_ATTR_INDEX.JEWEL_BASE:
|
||||||
|
this.jewelBase = value; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1314,6 +1335,9 @@ class EquipMainAttr extends EquipAllAttr {
|
|||||||
case EQUIP_MAIN_ATTR_INDEX.STONE:
|
case EQUIP_MAIN_ATTR_INDEX.STONE:
|
||||||
values.push(this.stone);
|
values.push(this.stone);
|
||||||
break;
|
break;
|
||||||
|
case EQUIP_MAIN_ATTR_INDEX.JEWEL_BASE:
|
||||||
|
values.push(this.jewelBase);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return values;
|
return values;
|
||||||
@@ -1388,6 +1412,7 @@ enum HERO_MAIN_ATTR_INDEX {
|
|||||||
ARTIFACT_LV = 13, // hp14, 宝物等级
|
ARTIFACT_LV = 13, // hp14, 宝物等级
|
||||||
ARTIFACT_QUALITY = 14, // hp14, 宝物品质
|
ARTIFACT_QUALITY = 14, // hp14, 宝物品质
|
||||||
ARTIFACT_SEID = 15, // hp9,宝物词条
|
ARTIFACT_SEID = 15, // hp9,宝物词条
|
||||||
|
JEWEL_BASE = 16, // hp15, 天晶基础属性(dic_zyz_jewel的rareEffectBaseAttr)
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1408,6 +1433,7 @@ enum EQUIP_MAIN_ATTR_INDEX {
|
|||||||
EQUIP_STAR = 2, // hp8, 装备(dic_zyz_equipStar)
|
EQUIP_STAR = 2, // hp8, 装备(dic_zyz_equipStar)
|
||||||
JEWEL = 3, // hp9, 天晶洗练出的主属性百分比加成,equipAttr加起来
|
JEWEL = 3, // hp9, 天晶洗练出的主属性百分比加成,equipAttr加起来
|
||||||
STONE = 4, // hp10,地玉石增加的固定值,equipAttr加起来
|
STONE = 4, // hp10,地玉石增加的固定值,equipAttr加起来
|
||||||
|
JEWEL_BASE = 5, // hp15, 天晶基础属性(dic_zyz_jewel的rareEffectBaseAttr)
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -327,15 +327,17 @@ export async function sendSurveyMail(code: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function sendGiftCodeMail(message: string) {
|
export async function sendGiftCodeMail(message: string) {
|
||||||
console.log('***** sendSurveyMail', message);
|
console.log('***** sendGiftCodeMail 1', message);
|
||||||
let [roleId, _giftId] = message.split('|');
|
let [roleId, _giftId] = message.split('|');
|
||||||
let giftId = parseInt(_giftId);
|
let giftId = parseInt(_giftId);
|
||||||
|
console.log('****** sendGiftCodeMail 2', roleId, giftId, isNaN(giftId))
|
||||||
if(isNaN(giftId) || !roleId) return false;
|
if(isNaN(giftId) || !roleId) return false;
|
||||||
let giftCode = await GiftCodeModel.findByGiftId(giftId);
|
let giftCode = await GiftCodeModel.findByGiftId(giftId);
|
||||||
if(!giftCode) {
|
if(!giftCode) {
|
||||||
console.log('***** sendSurveyMail giftId not found', giftId);
|
console.log('***** sendGiftCodeMail giftId not found', giftId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('****** sendGiftCodeMail 3', roleId, giftCode.goods);
|
||||||
await sendMailByContent(MAIL_TYPE.SEND_MAIL, roleId, { goods: giftCode.goods, params: ['尊敬的百家传人,附件为您在平台活动获得的奖励,请查收!'] });
|
await sendMailByContent(MAIL_TYPE.SEND_MAIL, roleId, { goods: giftCode.goods, params: ['尊敬的百家传人,附件为您在平台活动获得的奖励,请查收!'] });
|
||||||
}
|
}
|
||||||
@@ -68,6 +68,7 @@ export enum ACTIVITY_TYPE {
|
|||||||
REBATE = 53, // 返利
|
REBATE = 53, // 返利
|
||||||
WEBVIEW = 54, // 平台活动页面
|
WEBVIEW = 54, // 平台活动页面
|
||||||
DRAGON_BOAT = 55, // 龙舟
|
DRAGON_BOAT = 55, // 龙舟
|
||||||
|
ENTERTAIN = 56, // 宴请百家
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -269,6 +269,7 @@ export const STATUS = {
|
|||||||
DIVIDEND_GUILD_PLAYER_ONLY: { code: 21004, simStr: '需要参加军团活动才能领取' },
|
DIVIDEND_GUILD_PLAYER_ONLY: { code: 21004, simStr: '需要参加军团活动才能领取' },
|
||||||
AUCTION_GUILD_MEMBER_ONLY: { code: 21005, simStr: '不是军团的成员无法出价' },
|
AUCTION_GUILD_MEMBER_ONLY: { code: 21005, simStr: '不是军团的成员无法出价' },
|
||||||
AUCITON_STAGE_ERR: { code: 21006, simStr: '拍卖超时,请刷新客户端重新进入' },
|
AUCITON_STAGE_ERR: { code: 21006, simStr: '拍卖超时,请刷新客户端重新进入' },
|
||||||
|
GUILD_LOT_HAS_SOLD: { code: 21007, simStr: '拍品已售出' },
|
||||||
|
|
||||||
// 军团活动 21100-21199
|
// 军团活动 21100-21199
|
||||||
GUILD_ACTIVITY_NOT_OPEN: { code: 21100, simStr: '活动未开放' },
|
GUILD_ACTIVITY_NOT_OPEN: { code: 21100, simStr: '活动未开放' },
|
||||||
@@ -683,6 +684,8 @@ export const STATUS = {
|
|||||||
ACTIVITY_DRAGON_BOAT_ROUTE_HAS_PASS: { code: 50071, simStr: '该节点已经挑战过了' },
|
ACTIVITY_DRAGON_BOAT_ROUTE_HAS_PASS: { code: 50071, simStr: '该节点已经挑战过了' },
|
||||||
ACTIVITY_DRAGON_BOAT_BUY_COUNT_OVER: { code: 50072, simStr: '购买挑战次数不足' },
|
ACTIVITY_DRAGON_BOAT_BUY_COUNT_OVER: { code: 50072, simStr: '购买挑战次数不足' },
|
||||||
ACTIVITY_DRAGON_BOAT_CANNOT_BUY: { code: 50073, simStr: '不可在免费次数未用完的时候购买次数' },
|
ACTIVITY_DRAGON_BOAT_CANNOT_BUY: { code: 50073, simStr: '不可在免费次数未用完的时候购买次数' },
|
||||||
|
ACTIVITY_ENTERTAIN_NO_NUM: { code: 50074, simStr: '宴请武将次数已满' },
|
||||||
|
ACTIVITY_ENTERTAIN_BUY_COUNT_OVER: { code: 50075, simStr: '购买次数不足' },
|
||||||
|
|
||||||
// GM后台相关状态 60000 - 69999
|
// GM后台相关状态 60000 - 69999
|
||||||
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
|
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
|
||||||
|
|||||||
64
shared/db/ActivityEntertainRec.ts
Normal file
64
shared/db/ActivityEntertainRec.ts
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import BaseModel from './BaseModel';
|
||||||
|
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 宴请百家
|
||||||
|
*/
|
||||||
|
class EntertainRecord {
|
||||||
|
@prop({ required: true })
|
||||||
|
todayIndex: number; // 第几天
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
id: number; // 唯一id
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
hid: number; // 冗余,武将id
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
reward: string; // 冗余,奖励
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
time: Date; // 时间
|
||||||
|
}
|
||||||
|
|
||||||
|
@index({ roleId: 1, activityId: 1 })
|
||||||
|
|
||||||
|
export default class Activity_Entertain_Rec extends BaseModel {
|
||||||
|
@prop({ required: true })
|
||||||
|
serverId: number; // 服Id
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
activityId: number; // 活动Id
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
roundIndex: number; // 第几轮
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
roleId: string; // 用户Id
|
||||||
|
|
||||||
|
@prop({ required: true })
|
||||||
|
buyCnt: number; // 购买次数
|
||||||
|
|
||||||
|
@prop({ required: true, type: EntertainRecord, _id: false })
|
||||||
|
record: EntertainRecord[]; // 宴请记录
|
||||||
|
|
||||||
|
public static async findData(serverId: number, activityId: number, roundIndex: number, roleId: string) {
|
||||||
|
let result: ActivityEntertainRecModelType = await ActivityEntertainRecModel.findOne({ serverId, roleId, activityId, roundIndex }).lean();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async record(serverId: number, activityId: number, roundIndex: number, roleId: string, record: EntertainRecord) {
|
||||||
|
let result: ActivityEntertainRecModelType = await ActivityEntertainRecModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex }, { $push: { record }, $setOnInsert: { buyCnt: 0 } }, { new: true, upsert: true }).lean();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async buyCnt(serverId: number, activityId: number, roundIndex: number, roleId: string, count: number) {
|
||||||
|
let result: ActivityEntertainRecModelType = await ActivityEntertainRecModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex }, { $inc: { buyCnt: count }, $setOnInsert: { record: [] } }, { new: true, upsert: true }).lean();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ActivityEntertainRecModel = getModelForClass(Activity_Entertain_Rec);
|
||||||
|
|
||||||
|
export interface ActivityEntertainRecModelType extends Pick<DocumentType<Activity_Entertain_Rec>, keyof Activity_Entertain_Rec> { }
|
||||||
|
export type ActivityEntertainRecModelTypeParam = Partial<ActivityEntertainRecModelType>; // 将所有字段变成可选项
|
||||||
@@ -4,7 +4,7 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos
|
|||||||
/**
|
/**
|
||||||
* 自增 ID
|
* 自增 ID
|
||||||
*/
|
*/
|
||||||
@index({ sourceType: 1, time: 1, id: 1 })
|
@index({ beginTime: 1, id: 1 })
|
||||||
export default class CounterLots extends BaseModel {
|
export default class CounterLots extends BaseModel {
|
||||||
|
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export abstract class ActivityBase {
|
|||||||
hideDayByServer: number = 0;
|
hideDayByServer: number = 0;
|
||||||
isEnable: boolean = false;
|
isEnable: boolean = false;
|
||||||
interval: number = 0;
|
interval: number = 0;
|
||||||
|
beginWithoutHideTime: number = 0;
|
||||||
|
|
||||||
roundIndex: number = 0;//周期活动第几个周期,从1开始
|
roundIndex: number = 0;//周期活动第几个周期,从1开始
|
||||||
nextRefreshTime: number = 0;//周期活动下次刷新时间
|
nextRefreshTime: number = 0;//周期活动下次刷新时间
|
||||||
@@ -126,8 +127,14 @@ export abstract class ActivityBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(activityData.hideDayByServer > 0) {
|
if(activityData.hideDayByServer > 0) {
|
||||||
|
this.beginWithoutHideTime = this.beginTime;
|
||||||
let hidOverTime = moment(serverTime * 1000).add(activityData.hideDayByServer, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf();
|
let hidOverTime = moment(serverTime * 1000).add(activityData.hideDayByServer, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf();
|
||||||
if(this.beginTime < hidOverTime) this.beginTime = hidOverTime;
|
if(this.beginTime < hidOverTime) this.beginTime = hidOverTime;
|
||||||
|
|
||||||
|
if(activityData.timeType != ACTIVITY_TIME_TYPE.MULT_DATE_TIME) {
|
||||||
|
let startOfBeginDay = moment(this.beginTime).startOf('d').add(REFRESH_TIME, 'h');
|
||||||
|
this.todayIndex = deltaDays(startOfBeginDay.toDate(), new Date) + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// console.log('活动时间数据...', '活动id:', activityData.activityId, '类型:', activityData.timeType, '开始时间:', this.beginTime, moment(this.beginTime).toDate(),
|
// console.log('活动时间数据...', '活动id:', activityData.activityId, '类型:', activityData.timeType, '开始时间:', this.beginTime, moment(this.beginTime).toDate(),
|
||||||
// '结束:', this.endTime, moment(this.endTime).toDate(),
|
// '结束:', this.endTime, moment(this.endTime).toDate(),
|
||||||
|
|||||||
175
shared/domain/activityField/entertainField.ts
Normal file
175
shared/domain/activityField/entertainField.ts
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
// 节日活动 - 划龙舟
|
||||||
|
import { ActivityModelType } from '../../db/Activity';
|
||||||
|
import { ActivityEntertainRecModelType } from '../../db/ActivityEntertainRec';
|
||||||
|
// import { ActivityEntertainRecModelType } from '../../db/ActivityEntertainRec';
|
||||||
|
import { ActivityBase } from './activityField';
|
||||||
|
|
||||||
|
// 后台格式
|
||||||
|
interface HeroNumInDb {
|
||||||
|
id: number;// 第几次拜访
|
||||||
|
reward: string; // 奖励,type&id&count
|
||||||
|
}
|
||||||
|
|
||||||
|
interface HeroInDb {
|
||||||
|
id: number // 编号
|
||||||
|
index: number; // 位置
|
||||||
|
name: string; // 名字
|
||||||
|
imageName: string; // 图片
|
||||||
|
condition: string; // 解锁条件,type1:宴请x名武将,type2:宴请某个人
|
||||||
|
hid: number; // 武将id
|
||||||
|
num: HeroNumInDb[]; // 第几次的奖励是什么
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EntertainDataInDb {
|
||||||
|
buyCost: string; // 购买一次宴请次数的消耗,type&id&count
|
||||||
|
dailyBuyCnt: number; // 每天可以购买的次数
|
||||||
|
freeCnt: number; // 每天可以免费划船的次数
|
||||||
|
heroes: HeroInDb[]; // 可以宴请的武将的次数
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeroData {
|
||||||
|
id: number; // 编号
|
||||||
|
index: number; // 位置
|
||||||
|
name: string; // 名字
|
||||||
|
imageName: string; // 图片
|
||||||
|
condition: string; // 解锁条件,type1:宴请x名武将;type2:宴请某个人
|
||||||
|
conditionArr: {type: number, param: number}[] = [];
|
||||||
|
hid: number; // 武将id
|
||||||
|
numArr: HeroNumInDb[] = []; // 第几次能获得什么奖励
|
||||||
|
|
||||||
|
maxNum: number = 0; // 最大次数
|
||||||
|
num: number = 0; // 玩家当前第几次拜访
|
||||||
|
reward: string = '&'; // 玩家下一次可以获得的奖励
|
||||||
|
|
||||||
|
constructor(data: HeroInDb) {
|
||||||
|
this.id = data.id;
|
||||||
|
this.index = data.index;
|
||||||
|
this.name = data.name;
|
||||||
|
this.imageName = data.imageName;
|
||||||
|
this.condition = data.condition;
|
||||||
|
let arr = data.condition.split('|');
|
||||||
|
for(let str of arr) {
|
||||||
|
let obj = str?.split('&')||[];
|
||||||
|
if(obj[0]) this.conditionArr.push({ type: parseInt(obj[0]), param: parseInt(obj[1]) });
|
||||||
|
}
|
||||||
|
this.hid = data.hid;
|
||||||
|
this.numArr = data.num;
|
||||||
|
this.maxNum = data.num.length;
|
||||||
|
this.calReward();
|
||||||
|
}
|
||||||
|
|
||||||
|
public incNum() {
|
||||||
|
this.num++;
|
||||||
|
this.calReward();
|
||||||
|
}
|
||||||
|
|
||||||
|
public calReward() {
|
||||||
|
// console.log('####', this.numArr, this.num)
|
||||||
|
let nextReward = this.numArr.find(cur => cur.id == this.num + 1);
|
||||||
|
this.reward = nextReward?.reward||'&';
|
||||||
|
}
|
||||||
|
|
||||||
|
public getShowResult() {
|
||||||
|
let { id, index, name, imageName, condition, hid, maxNum, num, reward } = this;
|
||||||
|
return { id, index, name, imageName, condition, hid, maxNum, num, reward }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class EntertainData extends ActivityBase {
|
||||||
|
buyCost: string; // 购买一次划船次数的消耗,type&id&count
|
||||||
|
dailyBuyCnt: number; // 每天可以购买的次数
|
||||||
|
freeCnt: number; // 每天可以免费划船的次数
|
||||||
|
heroes: HeroData[] = []; // 宴请武将
|
||||||
|
|
||||||
|
maxBuyCnt: number = 0; // 累积到现在可以购买的次数
|
||||||
|
buyCnt: number = 0; // 累积到现在已经购买了的次数
|
||||||
|
todayPlayCnt: number = 0; // 今天玩的次数
|
||||||
|
playCnt: number = 0; // 总计玩的次数
|
||||||
|
|
||||||
|
invitedHeroNum: number = 0; // 宴请了的武将的数量
|
||||||
|
invitedHids: number[] = []; // 宴请了的武将的位置
|
||||||
|
|
||||||
|
constructor(activityData: ActivityModelType, createTime: number, serverTime: number) {
|
||||||
|
super(activityData, createTime, serverTime)
|
||||||
|
this.initData(activityData.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
public initData(data: string): void {
|
||||||
|
let dataObj: EntertainDataInDb = JSON.parse(data);
|
||||||
|
if (!dataObj) return;
|
||||||
|
|
||||||
|
this.buyCost = dataObj.buyCost || '&';
|
||||||
|
this.dailyBuyCnt = dataObj.dailyBuyCnt || 0;
|
||||||
|
this.freeCnt = dataObj.freeCnt || 0;
|
||||||
|
this.maxBuyCnt = this.todayIndex * this.dailyBuyCnt;
|
||||||
|
for (let data of (dataObj.heroes || [])) {
|
||||||
|
this.heroes.push(new HeroData(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public findHeroById(id: number) {
|
||||||
|
let hero = this.heroes.find(cur => cur.id == id);
|
||||||
|
return hero;
|
||||||
|
}
|
||||||
|
|
||||||
|
public setPlayerRecords(playerData: ActivityEntertainRecModelType) {
|
||||||
|
if (!playerData) return;
|
||||||
|
this.buyCnt = playerData.buyCnt || 0;
|
||||||
|
this.todayPlayCnt = 0;
|
||||||
|
this.playCnt = 0;
|
||||||
|
let recByDay = new Map<number, number>();
|
||||||
|
for (let { id, hid, todayIndex } of (playerData.record || [])) {
|
||||||
|
if (todayIndex == this.todayIndex) {
|
||||||
|
this.todayPlayCnt++;
|
||||||
|
this.playCnt++;
|
||||||
|
} else {
|
||||||
|
let n = recByDay.get(todayIndex) || 0;
|
||||||
|
if (n >= this.freeCnt) { // 不包含之前免费玩的次数
|
||||||
|
this.playCnt++;
|
||||||
|
}
|
||||||
|
recByDay.set(todayIndex, n + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
let hero = this.findHeroById(id);
|
||||||
|
hero.incNum();
|
||||||
|
if(this.invitedHids.indexOf(hid) == -1) {
|
||||||
|
this.invitedHids.push(hid);
|
||||||
|
this.invitedHeroNum++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public updateBuyCnt(playerData: ActivityEntertainRecModelType) {
|
||||||
|
if (!playerData) return;
|
||||||
|
this.buyCnt = playerData.buyCnt || 0;
|
||||||
|
this.todayPlayCnt = 0;
|
||||||
|
this.playCnt = 0;
|
||||||
|
let recByDay = new Map<number, number>();
|
||||||
|
for (let { todayIndex } of (playerData.record || [])) {
|
||||||
|
if (todayIndex == this.todayIndex) {
|
||||||
|
this.todayPlayCnt++;
|
||||||
|
this.playCnt++;
|
||||||
|
} else {
|
||||||
|
let n = recByDay.get(todayIndex) || 0;
|
||||||
|
if (n >= this.freeCnt) { // 不包含之前免费玩的次数
|
||||||
|
this.playCnt++;
|
||||||
|
}
|
||||||
|
recByDay.set(todayIndex, n + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public getShowResult() {
|
||||||
|
return {
|
||||||
|
...this.getBaseKeys(),
|
||||||
|
buyCost: this.buyCost,
|
||||||
|
dailyBuyCnt: this.dailyBuyCnt,
|
||||||
|
freeCnt: this.freeCnt,
|
||||||
|
maxBuyCnt: this.maxBuyCnt,
|
||||||
|
buyCnt: this.buyCnt,
|
||||||
|
todayPlayCnt: this.todayPlayCnt,
|
||||||
|
playCnt: this.playCnt,
|
||||||
|
heroes: this.heroes.map(route => route.getShowResult()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -121,7 +121,8 @@ export class GrowthFundData extends ActivityBase {
|
|||||||
|
|
||||||
//是否领取过
|
//是否领取过
|
||||||
public isReceive(pageIndex: number, cellIndex: number) {
|
public isReceive(pageIndex: number, cellIndex: number) {
|
||||||
let index = this.receiveRecords.findIndex(obj => { obj && obj.pageIndex == pageIndex && cellIndex == obj.cellIndex })
|
let index = this.receiveRecords.findIndex(obj => { return obj && obj.pageIndex == pageIndex && cellIndex == obj.cellIndex })
|
||||||
|
|
||||||
return (index !== -1);
|
return (index !== -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +131,7 @@ export class GrowthFundData extends ActivityBase {
|
|||||||
for (let i = 0; i < this.list.length; i++) {
|
for (let i = 0; i < this.list.length; i++) {
|
||||||
let page = this.list[i];
|
let page = this.list[i];
|
||||||
for (let item of page.items) {
|
for (let item of page.items) {
|
||||||
let index = this.receiveRecords.findIndex(obj => { obj && obj.pageIndex == page.pageIndex && item.cellIndex == obj.cellIndex })
|
let index = this.receiveRecords.findIndex(obj => { return obj && obj.pageIndex == page.pageIndex && item.cellIndex == obj.cellIndex })
|
||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export class NewHeroGKData extends ActivityBase {
|
|||||||
let dataObj: NewHeroGkDataInDb = JSON.parse(data);
|
let dataObj: NewHeroGkDataInDb = JSON.parse(data);
|
||||||
let arr = dataObj.wars||[];
|
let arr = dataObj.wars||[];
|
||||||
for (let obj of arr) {
|
for (let obj of arr) {
|
||||||
this.wars.push(new NewHeroGachaWar(obj, this.beginTime))
|
this.wars.push(new NewHeroGachaWar(obj, this.beginWithoutHideTime||this.beginTime))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// 天晶石表
|
// 天晶石表
|
||||||
import { readFileAndParse, parseGoodStr, parseNumberList } from '../util'
|
import { readFileAndParse, parseGoodStr, parseNumberList, decodeArrayListStr } from '../util'
|
||||||
import { FILENAME } from '../../consts';
|
import { FILENAME } from '../../consts';
|
||||||
import { RewardInter } from '../interface';
|
import { RewardInter } from '../interface';
|
||||||
|
|
||||||
@@ -22,6 +22,8 @@ export interface DicJewel {
|
|||||||
readonly randomEffect: number[];
|
readonly randomEffect: number[];
|
||||||
// 稀有属性
|
// 稀有属性
|
||||||
readonly rareEffect: number[];
|
readonly rareEffect: number[];
|
||||||
|
// 基础属性
|
||||||
|
readonly rareEffectBaseAttr: {id: number, num: number}[];
|
||||||
// 对应藏宝图id
|
// 对应藏宝图id
|
||||||
readonly mapGoodId: number;
|
readonly mapGoodId: number;
|
||||||
// 淬炼消耗
|
// 淬炼消耗
|
||||||
@@ -43,8 +45,10 @@ export function loadJewel() {
|
|||||||
arr.forEach(o => {
|
arr.forEach(o => {
|
||||||
o.randomEffect = parseNumberList(o.randomEffect);
|
o.randomEffect = parseNumberList(o.randomEffect);
|
||||||
o.rareEffect = parseNumberList(o.rareEffect);
|
o.rareEffect = parseNumberList(o.rareEffect);
|
||||||
|
o.rareEffectBaseAttr = parseAttr(o.rareEffectBaseAttr);
|
||||||
o.quenchConsume = parseGoodStr(o.quenchConsume);
|
o.quenchConsume = parseGoodStr(o.quenchConsume);
|
||||||
o.inheritConsume = parseGoodStr(o.inheritConsume);
|
o.inheritConsume = parseGoodStr(o.inheritConsume);
|
||||||
|
|
||||||
dicJewel.set(o.good_id, o);
|
dicJewel.set(o.good_id, o);
|
||||||
dicBlueprt.set(o.mapGoodId, o.good_id);
|
dicBlueprt.set(o.mapGoodId, o.good_id);
|
||||||
if(!dicBlueprtByLv.has(o.lv)) {
|
if(!dicBlueprtByLv.has(o.lv)) {
|
||||||
@@ -54,3 +58,16 @@ export function loadJewel() {
|
|||||||
});
|
});
|
||||||
arr = undefined;
|
arr = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseAttr(str: string) {
|
||||||
|
let result = new Array<{id: number, num: number}>();
|
||||||
|
if(!str) return result;
|
||||||
|
let decodeArr = decodeArrayListStr(str);
|
||||||
|
for(let [id, num] of decodeArr) {
|
||||||
|
if(isNaN(parseInt(id)) || isNaN(parseInt(num))) {
|
||||||
|
throw new Error('data table format wrong');
|
||||||
|
}
|
||||||
|
result.push({id: parseInt(id), num: parseInt(num)});
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -304,5 +304,11 @@
|
|||||||
"activityType": 55,
|
"activityType": 55,
|
||||||
"name": "DRAGON_BOAT",
|
"name": "DRAGON_BOAT",
|
||||||
"string": "龙舟"
|
"string": "龙舟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 56,
|
||||||
|
"activityType": 56,
|
||||||
|
"name": "ENTERTAIN",
|
||||||
|
"string": "宴请百家"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1234,7 +1234,7 @@
|
|||||||
{
|
{
|
||||||
"id": 210102,
|
"id": 210102,
|
||||||
"skillType": 3,
|
"skillType": 3,
|
||||||
"newId": "2130201011&",
|
"newId": "2230201011&",
|
||||||
"insteadId": "&",
|
"insteadId": "&",
|
||||||
"artifactName": "虎头湛金枪",
|
"artifactName": "虎头湛金枪",
|
||||||
"quality": 2,
|
"quality": 2,
|
||||||
@@ -1267,7 +1267,7 @@
|
|||||||
{
|
{
|
||||||
"id": 210105,
|
"id": 210105,
|
||||||
"skillType": 3,
|
"skillType": 3,
|
||||||
"newId": "2130501011&",
|
"newId": "2230501011&",
|
||||||
"insteadId": "&",
|
"insteadId": "&",
|
||||||
"artifactName": "虎头湛金枪",
|
"artifactName": "虎头湛金枪",
|
||||||
"quality": 5,
|
"quality": 5,
|
||||||
@@ -1460,7 +1460,7 @@
|
|||||||
"quality": 2,
|
"quality": 2,
|
||||||
"jobClass": 0,
|
"jobClass": 0,
|
||||||
"hids": "&",
|
"hids": "&",
|
||||||
"info": "生命、攻击、物防、策防+5%"
|
"info": "生命、攻击、物防、策防+10%"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 250103,
|
"id": 250103,
|
||||||
|
|||||||
@@ -417,14 +417,14 @@
|
|||||||
"des": "专属宝物自选箱",
|
"des": "专属宝物自选箱",
|
||||||
"type": 2,
|
"type": 2,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"reward": "2&83001&1|2&83101&1|2&83201&1|2&83901&1"
|
"reward": "2&83001&1|2&83101&1|2&83201&1|2&83901&1|2&83501&1|2&83601&1|2&83701&1|2&84001&1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 61,
|
"id": 61,
|
||||||
"des": "上品专属宝物箱",
|
"des": "上品专属宝物箱",
|
||||||
"type": 3,
|
"type": 3,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"reward": "2&82101&1|2&82102&1|2&82103&1|2&82106&1|2&82121&1|2&82122&1|2&82123&1|2&82126&1|2&82201&1|2&82202&1|2&82203&1|2&82206&1|2&82221&1|2&82222&1|2&82223&1|2&82226&1|2&82301&1|2&82302&1|2&82303&1|2&82306&1|2&82321&1|2&82322&1|2&82323&1|2&82326&1|2&82401&1|2&82402&1|2&82403&1|2&82406&1|2&82421&1|2&82422&1|2&82423&1|2&82426&1|2&82501&1|2&82502&1|2&82503&1|2&82506&1|2&82521&1|2&82522&1|2&82523&1|2&82526&1|2&82601&1|2&82602&1|2&82603&1|2&82606&1|2&82621&1|2&82622&1|2&82623&1|2&82626&1|2&82701&1|2&82702&1|2&82703&1|2&82706&1|2&82721&1|2&82722&1|2&82723&1|2&82726&1|2&83001&1|2&83101&1|2&83201&1|2&83901&1"
|
"reward": "2&82101&1|2&82102&1|2&82103&1|2&82106&1|2&82121&1|2&82122&1|2&82123&1|2&82126&1|2&82201&1|2&82202&1|2&82203&1|2&82206&1|2&82221&1|2&82222&1|2&82223&1|2&82226&1|2&82301&1|2&82302&1|2&82303&1|2&82306&1|2&82321&1|2&82322&1|2&82323&1|2&82326&1|2&82401&1|2&82402&1|2&82403&1|2&82406&1|2&82421&1|2&82422&1|2&82423&1|2&82426&1|2&82501&1|2&82502&1|2&82503&1|2&82506&1|2&82521&1|2&82522&1|2&82523&1|2&82526&1|2&82601&1|2&82602&1|2&82603&1|2&82606&1|2&82621&1|2&82622&1|2&82623&1|2&82626&1|2&82701&1|2&82702&1|2&82703&1|2&82706&1|2&82721&1|2&82722&1|2&82723&1|2&82726&1|2&83001&1|2&83101&1|2&83201&1|2&83901&1|2&83501&1|2&83601&1|2&83701&1|2&84001&1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 62,
|
"id": 62,
|
||||||
|
|||||||
@@ -12669,13 +12669,53 @@
|
|||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "落英天香弓"
|
"备注": "落英天香弓"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 60005,
|
||||||
|
"giftPackageId": 60,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83501,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 1,
|
||||||
|
"floor": 0,
|
||||||
|
"备注": "恶来铁戟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 60006,
|
||||||
|
"giftPackageId": 60,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83601,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 1,
|
||||||
|
"floor": 0,
|
||||||
|
"备注": "青龙偃月刀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 60007,
|
||||||
|
"giftPackageId": 60,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83701,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 1,
|
||||||
|
"floor": 0,
|
||||||
|
"备注": "霸王枪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 60008,
|
||||||
|
"giftPackageId": 60,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 84001,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 1,
|
||||||
|
"floor": 0,
|
||||||
|
"备注": "软香绫"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": 61001,
|
"id": 61001,
|
||||||
"giftPackageId": 61,
|
"giftPackageId": 61,
|
||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82101,
|
"content": 82101,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色尚方剑"
|
"备注": "蓝色尚方剑"
|
||||||
},
|
},
|
||||||
@@ -12685,7 +12725,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82121,
|
"content": 82121,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色握奇经"
|
"备注": "蓝色握奇经"
|
||||||
},
|
},
|
||||||
@@ -12695,7 +12735,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82201,
|
"content": 82201,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色黄钺斧"
|
"备注": "蓝色黄钺斧"
|
||||||
},
|
},
|
||||||
@@ -12705,7 +12745,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82221,
|
"content": 82221,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色断魂枪"
|
"备注": "蓝色断魂枪"
|
||||||
},
|
},
|
||||||
@@ -12715,7 +12755,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82301,
|
"content": 82301,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色穿龙槊"
|
"备注": "蓝色穿龙槊"
|
||||||
},
|
},
|
||||||
@@ -12725,7 +12765,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82321,
|
"content": 82321,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色铁甲马"
|
"备注": "蓝色铁甲马"
|
||||||
},
|
},
|
||||||
@@ -12735,7 +12775,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82401,
|
"content": 82401,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色龙雀刀"
|
"备注": "蓝色龙雀刀"
|
||||||
},
|
},
|
||||||
@@ -12745,7 +12785,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82421,
|
"content": 82421,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色吞云盾"
|
"备注": "蓝色吞云盾"
|
||||||
},
|
},
|
||||||
@@ -12755,7 +12795,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82501,
|
"content": 82501,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色神臂弓"
|
"备注": "蓝色神臂弓"
|
||||||
},
|
},
|
||||||
@@ -12765,7 +12805,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82521,
|
"content": 82521,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色镇天箭"
|
"备注": "蓝色镇天箭"
|
||||||
},
|
},
|
||||||
@@ -12775,7 +12815,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82601,
|
"content": 82601,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色博浪锥"
|
"备注": "蓝色博浪锥"
|
||||||
},
|
},
|
||||||
@@ -12785,7 +12825,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82621,
|
"content": 82621,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色鱼肠剑"
|
"备注": "蓝色鱼肠剑"
|
||||||
},
|
},
|
||||||
@@ -12795,7 +12835,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82701,
|
"content": 82701,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色神木鼎"
|
"备注": "蓝色神木鼎"
|
||||||
},
|
},
|
||||||
@@ -12805,7 +12845,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82721,
|
"content": 82721,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 224,
|
"weight": 448,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "蓝色太平要术"
|
"备注": "蓝色太平要术"
|
||||||
},
|
},
|
||||||
@@ -12815,7 +12855,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82102,
|
"content": 82102,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色尚方剑"
|
"备注": "紫色尚方剑"
|
||||||
},
|
},
|
||||||
@@ -12825,7 +12865,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82122,
|
"content": 82122,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色握奇经"
|
"备注": "紫色握奇经"
|
||||||
},
|
},
|
||||||
@@ -12835,7 +12875,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82202,
|
"content": 82202,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色黄钺斧"
|
"备注": "紫色黄钺斧"
|
||||||
},
|
},
|
||||||
@@ -12845,7 +12885,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82222,
|
"content": 82222,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色断魂枪"
|
"备注": "紫色断魂枪"
|
||||||
},
|
},
|
||||||
@@ -12855,7 +12895,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82302,
|
"content": 82302,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色穿龙槊"
|
"备注": "紫色穿龙槊"
|
||||||
},
|
},
|
||||||
@@ -12865,7 +12905,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82322,
|
"content": 82322,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色铁甲马"
|
"备注": "紫色铁甲马"
|
||||||
},
|
},
|
||||||
@@ -12875,7 +12915,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82402,
|
"content": 82402,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色龙雀刀"
|
"备注": "紫色龙雀刀"
|
||||||
},
|
},
|
||||||
@@ -12885,7 +12925,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82422,
|
"content": 82422,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色吞云盾"
|
"备注": "紫色吞云盾"
|
||||||
},
|
},
|
||||||
@@ -12895,7 +12935,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82502,
|
"content": 82502,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色神臂弓"
|
"备注": "紫色神臂弓"
|
||||||
},
|
},
|
||||||
@@ -12905,7 +12945,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82522,
|
"content": 82522,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色镇天箭"
|
"备注": "紫色镇天箭"
|
||||||
},
|
},
|
||||||
@@ -12915,7 +12955,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82602,
|
"content": 82602,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色博浪锥"
|
"备注": "紫色博浪锥"
|
||||||
},
|
},
|
||||||
@@ -12925,7 +12965,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82622,
|
"content": 82622,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色鱼肠剑"
|
"备注": "紫色鱼肠剑"
|
||||||
},
|
},
|
||||||
@@ -12935,7 +12975,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82702,
|
"content": 82702,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色神木鼎"
|
"备注": "紫色神木鼎"
|
||||||
},
|
},
|
||||||
@@ -12945,7 +12985,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82722,
|
"content": 82722,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 164,
|
"weight": 328,
|
||||||
"floor": 0,
|
"floor": 0,
|
||||||
"备注": "紫色太平要术"
|
"备注": "紫色太平要术"
|
||||||
},
|
},
|
||||||
@@ -12955,7 +12995,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82103,
|
"content": 82103,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色尚方剑"
|
"备注": "橙色尚方剑"
|
||||||
},
|
},
|
||||||
@@ -12965,7 +13005,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82123,
|
"content": 82123,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色握奇经"
|
"备注": "橙色握奇经"
|
||||||
},
|
},
|
||||||
@@ -12975,7 +13015,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82203,
|
"content": 82203,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色黄钺斧"
|
"备注": "橙色黄钺斧"
|
||||||
},
|
},
|
||||||
@@ -12985,7 +13025,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82223,
|
"content": 82223,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色断魂枪"
|
"备注": "橙色断魂枪"
|
||||||
},
|
},
|
||||||
@@ -12995,7 +13035,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82303,
|
"content": 82303,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色穿龙槊"
|
"备注": "橙色穿龙槊"
|
||||||
},
|
},
|
||||||
@@ -13005,7 +13045,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82323,
|
"content": 82323,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色铁甲马"
|
"备注": "橙色铁甲马"
|
||||||
},
|
},
|
||||||
@@ -13015,7 +13055,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82403,
|
"content": 82403,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色龙雀刀"
|
"备注": "橙色龙雀刀"
|
||||||
},
|
},
|
||||||
@@ -13025,7 +13065,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82423,
|
"content": 82423,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色吞云盾"
|
"备注": "橙色吞云盾"
|
||||||
},
|
},
|
||||||
@@ -13035,7 +13075,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82503,
|
"content": 82503,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色神臂弓"
|
"备注": "橙色神臂弓"
|
||||||
},
|
},
|
||||||
@@ -13045,7 +13085,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82523,
|
"content": 82523,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色镇天箭"
|
"备注": "橙色镇天箭"
|
||||||
},
|
},
|
||||||
@@ -13055,7 +13095,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82603,
|
"content": 82603,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色博浪锥"
|
"备注": "橙色博浪锥"
|
||||||
},
|
},
|
||||||
@@ -13065,7 +13105,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82623,
|
"content": 82623,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色鱼肠剑"
|
"备注": "橙色鱼肠剑"
|
||||||
},
|
},
|
||||||
@@ -13075,7 +13115,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82703,
|
"content": 82703,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色神木鼎"
|
"备注": "橙色神木鼎"
|
||||||
},
|
},
|
||||||
@@ -13085,7 +13125,7 @@
|
|||||||
"contentType": 2,
|
"contentType": 2,
|
||||||
"content": 82723,
|
"content": 82723,
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 10,
|
"weight": 20,
|
||||||
"floor": 1,
|
"floor": 1,
|
||||||
"备注": "橙色太平要术"
|
"备注": "橙色太平要术"
|
||||||
},
|
},
|
||||||
@@ -13129,6 +13169,46 @@
|
|||||||
"floor": 2,
|
"floor": 2,
|
||||||
"备注": "落英天香弓"
|
"备注": "落英天香弓"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 61047,
|
||||||
|
"giftPackageId": 61,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83501,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 7,
|
||||||
|
"floor": 2,
|
||||||
|
"备注": "恶来铁戟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 61048,
|
||||||
|
"giftPackageId": 61,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83601,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 7,
|
||||||
|
"floor": 2,
|
||||||
|
"备注": "青龙偃月刀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 61049,
|
||||||
|
"giftPackageId": 61,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 83701,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 7,
|
||||||
|
"floor": 2,
|
||||||
|
"备注": "霸王枪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 61050,
|
||||||
|
"giftPackageId": 61,
|
||||||
|
"contentType": 2,
|
||||||
|
"content": 84001,
|
||||||
|
"count": 1,
|
||||||
|
"weight": 7,
|
||||||
|
"floor": 2,
|
||||||
|
"备注": "软香绫"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": 62001,
|
"id": 62001,
|
||||||
"giftPackageId": 62,
|
"giftPackageId": 62,
|
||||||
@@ -15827,7 +15907,7 @@
|
|||||||
"count": 1,
|
"count": 1,
|
||||||
"weight": 14,
|
"weight": 14,
|
||||||
"floor": 2,
|
"floor": 2,
|
||||||
"备注": "郭嘉/诸葛亮/周瑜/孙尚香专属宝物自选箱"
|
"备注": "郭嘉/诸葛亮/周瑜/孙尚香/典韦/关羽/孙策/貂蝉专属宝物自选箱"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 71001,
|
"id": 71001,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90401&90601&90901&91101&91201&91301&91601&91701",
|
"randomEffect": "90401&90601&90901&91101&91201&91301&91601&91701",
|
||||||
"rareEffect": "90110&",
|
"rareEffect": "90110&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33001,
|
"mapGoodId": 33001,
|
||||||
"quenchConsume": "17057&2",
|
"quenchConsume": "17057&2",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90402&90602&90902&91102&91202&91302&91602&91702",
|
"randomEffect": "90402&90602&90902&91102&91202&91302&91602&91702",
|
||||||
"rareEffect": "90111&",
|
"rareEffect": "90111&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33002,
|
"mapGoodId": 33002,
|
||||||
"quenchConsume": "17057&4",
|
"quenchConsume": "17057&4",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -44,6 +46,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90403&90603&90903&91103&91203&91303&91603&91703",
|
"randomEffect": "90403&90603&90903&91103&91203&91303&91603&91703",
|
||||||
"rareEffect": "90112&",
|
"rareEffect": "90112&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33003,
|
"mapGoodId": 33003,
|
||||||
"quenchConsume": "17057&6",
|
"quenchConsume": "17057&6",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -61,6 +64,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90404&90604&90904&91104&91204&91304&91604&91704",
|
"randomEffect": "90404&90604&90904&91104&91204&91304&91604&91704",
|
||||||
"rareEffect": "90113&",
|
"rareEffect": "90113&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33004,
|
"mapGoodId": 33004,
|
||||||
"quenchConsume": "17057&8",
|
"quenchConsume": "17057&8",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -78,6 +82,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90405&90605&90905&91105&91205&91305&91605&91705",
|
"randomEffect": "90405&90605&90905&91105&91205&91305&91605&91705",
|
||||||
"rareEffect": "90114&",
|
"rareEffect": "90114&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33005,
|
"mapGoodId": 33005,
|
||||||
"quenchConsume": "17057&12",
|
"quenchConsume": "17057&12",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -95,6 +100,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90406&90606&90906&91106&91206&91306&91606&91706",
|
"randomEffect": "90406&90606&90906&91106&91206&91306&91606&91706",
|
||||||
"rareEffect": "90115&",
|
"rareEffect": "90115&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33006,
|
"mapGoodId": 33006,
|
||||||
"quenchConsume": "17057&16",
|
"quenchConsume": "17057&16",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -112,6 +118,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90407&90607&90907&91107&91207&91307&91607&91707",
|
"randomEffect": "90407&90607&90907&91107&91207&91307&91607&91707",
|
||||||
"rareEffect": "90116&",
|
"rareEffect": "90116&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33007,
|
"mapGoodId": 33007,
|
||||||
"quenchConsume": "17057&20",
|
"quenchConsume": "17057&20",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -129,6 +136,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90408&90608&90908&91108&91208&91308&91608&91708",
|
"randomEffect": "90408&90608&90908&91108&91208&91308&91608&91708",
|
||||||
"rareEffect": "90117&",
|
"rareEffect": "90117&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33008,
|
"mapGoodId": 33008,
|
||||||
"quenchConsume": "17057&24",
|
"quenchConsume": "17057&24",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -146,6 +154,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90409&90609&90909&91109&91209&91309&91609&91709",
|
"randomEffect": "90409&90609&90909&91109&91209&91309&91609&91709",
|
||||||
"rareEffect": "90118&",
|
"rareEffect": "90118&",
|
||||||
|
"rareEffectBaseAttr": "2&50000",
|
||||||
"mapGoodId": 0,
|
"mapGoodId": 0,
|
||||||
"quenchConsume": "17057&30",
|
"quenchConsume": "17057&30",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -163,6 +172,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90401&90601&90801&91001&90901&91101&91401&91601",
|
"randomEffect": "90401&90601&90801&91001&90901&91101&91401&91601",
|
||||||
"rareEffect": "90210&",
|
"rareEffect": "90210&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33010,
|
"mapGoodId": 33010,
|
||||||
"quenchConsume": "17057&2",
|
"quenchConsume": "17057&2",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -180,6 +190,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90402&90602&90802&91002&90902&91102&91402&91602",
|
"randomEffect": "90402&90602&90802&91002&90902&91102&91402&91602",
|
||||||
"rareEffect": "90211&",
|
"rareEffect": "90211&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33011,
|
"mapGoodId": 33011,
|
||||||
"quenchConsume": "17057&4",
|
"quenchConsume": "17057&4",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -197,6 +208,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90403&90603&90803&91003&90903&91103&91403&91603",
|
"randomEffect": "90403&90603&90803&91003&90903&91103&91403&91603",
|
||||||
"rareEffect": "90212&",
|
"rareEffect": "90212&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33012,
|
"mapGoodId": 33012,
|
||||||
"quenchConsume": "17057&6",
|
"quenchConsume": "17057&6",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -214,6 +226,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90404&90604&90804&91004&90904&91104&91404&91604",
|
"randomEffect": "90404&90604&90804&91004&90904&91104&91404&91604",
|
||||||
"rareEffect": "90213&",
|
"rareEffect": "90213&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33013,
|
"mapGoodId": 33013,
|
||||||
"quenchConsume": "17057&8",
|
"quenchConsume": "17057&8",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -231,6 +244,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90405&90605&90805&91005&90905&91105&91405&91605",
|
"randomEffect": "90405&90605&90805&91005&90905&91105&91405&91605",
|
||||||
"rareEffect": "90214&",
|
"rareEffect": "90214&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33014,
|
"mapGoodId": 33014,
|
||||||
"quenchConsume": "17057&12",
|
"quenchConsume": "17057&12",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -248,6 +262,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90406&90606&90806&91006&90906&91106&91406&91606",
|
"randomEffect": "90406&90606&90806&91006&90906&91106&91406&91606",
|
||||||
"rareEffect": "90215&",
|
"rareEffect": "90215&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33015,
|
"mapGoodId": 33015,
|
||||||
"quenchConsume": "17057&16",
|
"quenchConsume": "17057&16",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -265,6 +280,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90407&90607&90807&91007&90907&91107&91407&91607",
|
"randomEffect": "90407&90607&90807&91007&90907&91107&91407&91607",
|
||||||
"rareEffect": "90216&",
|
"rareEffect": "90216&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33016,
|
"mapGoodId": 33016,
|
||||||
"quenchConsume": "17057&20",
|
"quenchConsume": "17057&20",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -282,6 +298,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90408&90608&90808&91008&90908&91108&91408&91608",
|
"randomEffect": "90408&90608&90808&91008&90908&91108&91408&91608",
|
||||||
"rareEffect": "90217&",
|
"rareEffect": "90217&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33017,
|
"mapGoodId": 33017,
|
||||||
"quenchConsume": "17057&24",
|
"quenchConsume": "17057&24",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -299,6 +316,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90409&90609&90809&91009&90909&91109&91409&91609",
|
"randomEffect": "90409&90609&90809&91009&90909&91109&91409&91609",
|
||||||
"rareEffect": "90218&",
|
"rareEffect": "90218&",
|
||||||
|
"rareEffectBaseAttr": "4&50000",
|
||||||
"mapGoodId": 0,
|
"mapGoodId": 0,
|
||||||
"quenchConsume": "17057&30",
|
"quenchConsume": "17057&30",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -316,6 +334,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90401&90601&90801&91001&90901&91101&91201&91501",
|
"randomEffect": "90401&90601&90801&91001&90901&91101&91201&91501",
|
||||||
"rareEffect": "90310&",
|
"rareEffect": "90310&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33019,
|
"mapGoodId": 33019,
|
||||||
"quenchConsume": "17057&2",
|
"quenchConsume": "17057&2",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -333,6 +352,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90402&90602&90802&91002&90902&91102&91202&91502",
|
"randomEffect": "90402&90602&90802&91002&90902&91102&91202&91502",
|
||||||
"rareEffect": "90311&",
|
"rareEffect": "90311&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33020,
|
"mapGoodId": 33020,
|
||||||
"quenchConsume": "17057&4",
|
"quenchConsume": "17057&4",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -350,6 +370,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90403&90603&90803&91003&90903&91103&91203&91503",
|
"randomEffect": "90403&90603&90803&91003&90903&91103&91203&91503",
|
||||||
"rareEffect": "90312&",
|
"rareEffect": "90312&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33021,
|
"mapGoodId": 33021,
|
||||||
"quenchConsume": "17057&6",
|
"quenchConsume": "17057&6",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -367,6 +388,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90404&90604&90804&91004&90904&91104&91204&91504",
|
"randomEffect": "90404&90604&90804&91004&90904&91104&91204&91504",
|
||||||
"rareEffect": "90313&",
|
"rareEffect": "90313&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33022,
|
"mapGoodId": 33022,
|
||||||
"quenchConsume": "17057&8",
|
"quenchConsume": "17057&8",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -384,6 +406,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90405&90605&90805&91005&90905&91105&91205&91505",
|
"randomEffect": "90405&90605&90805&91005&90905&91105&91205&91505",
|
||||||
"rareEffect": "90314&",
|
"rareEffect": "90314&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33023,
|
"mapGoodId": 33023,
|
||||||
"quenchConsume": "17057&12",
|
"quenchConsume": "17057&12",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -401,6 +424,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90406&90606&90806&91006&90906&91106&91206&91506",
|
"randomEffect": "90406&90606&90806&91006&90906&91106&91206&91506",
|
||||||
"rareEffect": "90315&",
|
"rareEffect": "90315&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33024,
|
"mapGoodId": 33024,
|
||||||
"quenchConsume": "17057&16",
|
"quenchConsume": "17057&16",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -418,6 +442,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90407&90607&90807&91007&90907&91107&91207&91507",
|
"randomEffect": "90407&90607&90807&91007&90907&91107&91207&91507",
|
||||||
"rareEffect": "90316&",
|
"rareEffect": "90316&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33025,
|
"mapGoodId": 33025,
|
||||||
"quenchConsume": "17057&20",
|
"quenchConsume": "17057&20",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -435,6 +460,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90408&90608&90808&91008&90908&91108&91208&91508",
|
"randomEffect": "90408&90608&90808&91008&90908&91108&91208&91508",
|
||||||
"rareEffect": "90317&",
|
"rareEffect": "90317&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33026,
|
"mapGoodId": 33026,
|
||||||
"quenchConsume": "17057&24",
|
"quenchConsume": "17057&24",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -452,6 +478,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90409&90609&90809&91009&90909&91109&91209&91509",
|
"randomEffect": "90409&90609&90809&91009&90909&91109&91209&91509",
|
||||||
"rareEffect": "90318&",
|
"rareEffect": "90318&",
|
||||||
|
"rareEffectBaseAttr": "5&50000",
|
||||||
"mapGoodId": 0,
|
"mapGoodId": 0,
|
||||||
"quenchConsume": "17057&30",
|
"quenchConsume": "17057&30",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -469,6 +496,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90501&90701&90901&91101&91301&91401&91501&91701",
|
"randomEffect": "90501&90701&90901&91101&91301&91401&91501&91701",
|
||||||
"rareEffect": "90010&",
|
"rareEffect": "90010&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33028,
|
"mapGoodId": 33028,
|
||||||
"quenchConsume": "17057&2",
|
"quenchConsume": "17057&2",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -486,6 +514,7 @@
|
|||||||
"effectCount": 1,
|
"effectCount": 1,
|
||||||
"randomEffect": "90502&90702&90902&91102&91302&91402&91502&91702",
|
"randomEffect": "90502&90702&90902&91102&91302&91402&91502&91702",
|
||||||
"rareEffect": "90011&",
|
"rareEffect": "90011&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33029,
|
"mapGoodId": 33029,
|
||||||
"quenchConsume": "17057&4",
|
"quenchConsume": "17057&4",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -503,6 +532,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90503&90703&90903&91103&91303&91403&91503&91703",
|
"randomEffect": "90503&90703&90903&91103&91303&91403&91503&91703",
|
||||||
"rareEffect": "90012&",
|
"rareEffect": "90012&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33030,
|
"mapGoodId": 33030,
|
||||||
"quenchConsume": "17057&6",
|
"quenchConsume": "17057&6",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -520,6 +550,7 @@
|
|||||||
"effectCount": 2,
|
"effectCount": 2,
|
||||||
"randomEffect": "90504&90704&90904&91104&91304&91404&91504&91704",
|
"randomEffect": "90504&90704&90904&91104&91304&91404&91504&91704",
|
||||||
"rareEffect": "90013&",
|
"rareEffect": "90013&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33031,
|
"mapGoodId": 33031,
|
||||||
"quenchConsume": "17057&8",
|
"quenchConsume": "17057&8",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -537,6 +568,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90505&90705&90905&91105&91305&91405&91505&91705",
|
"randomEffect": "90505&90705&90905&91105&91305&91405&91505&91705",
|
||||||
"rareEffect": "90014&",
|
"rareEffect": "90014&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33032,
|
"mapGoodId": 33032,
|
||||||
"quenchConsume": "17057&12",
|
"quenchConsume": "17057&12",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -554,6 +586,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90506&90706&90906&91106&91306&91406&91506&91706",
|
"randomEffect": "90506&90706&90906&91106&91306&91406&91506&91706",
|
||||||
"rareEffect": "90015&",
|
"rareEffect": "90015&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33033,
|
"mapGoodId": 33033,
|
||||||
"quenchConsume": "17057&16",
|
"quenchConsume": "17057&16",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -571,6 +604,7 @@
|
|||||||
"effectCount": 3,
|
"effectCount": 3,
|
||||||
"randomEffect": "90507&90707&90907&91107&91307&91407&91507&91707",
|
"randomEffect": "90507&90707&90907&91107&91307&91407&91507&91707",
|
||||||
"rareEffect": "90016&",
|
"rareEffect": "90016&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33034,
|
"mapGoodId": 33034,
|
||||||
"quenchConsume": "17057&20",
|
"quenchConsume": "17057&20",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -588,6 +622,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90508&90708&90908&91108&91308&91408&91508&91708",
|
"randomEffect": "90508&90708&90908&91108&91308&91408&91508&91708",
|
||||||
"rareEffect": "90017&",
|
"rareEffect": "90017&",
|
||||||
|
"rareEffectBaseAttr": "&",
|
||||||
"mapGoodId": 33035,
|
"mapGoodId": 33035,
|
||||||
"quenchConsume": "17057&24",
|
"quenchConsume": "17057&24",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
@@ -605,6 +640,7 @@
|
|||||||
"effectCount": 4,
|
"effectCount": 4,
|
||||||
"randomEffect": "90509&90709&90909&91109&91309&91409&91509&91709",
|
"randomEffect": "90509&90709&90909&91109&91309&91409&91509&91709",
|
||||||
"rareEffect": "90018&",
|
"rareEffect": "90018&",
|
||||||
|
"rareEffectBaseAttr": "1&160000",
|
||||||
"mapGoodId": 0,
|
"mapGoodId": 0,
|
||||||
"quenchConsume": "17057&30",
|
"quenchConsume": "17057&30",
|
||||||
"successConsume": "17057&100",
|
"successConsume": "17057&100",
|
||||||
|
|||||||
@@ -512,6 +512,82 @@
|
|||||||
"vipPurchaseLimit": 0,
|
"vipPurchaseLimit": 0,
|
||||||
"seasonNum": 0
|
"seasonNum": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 2206,
|
||||||
|
"goodId": 83501,
|
||||||
|
"goodName": "恶来铁戟",
|
||||||
|
"num": 1,
|
||||||
|
"shop": 2,
|
||||||
|
"type": 21,
|
||||||
|
"guildLvLimit": 3,
|
||||||
|
"lvLimit": 0,
|
||||||
|
"ranklimit": 0,
|
||||||
|
"purchaseLimit": 1,
|
||||||
|
"refreshType": 2,
|
||||||
|
"money": 40016,
|
||||||
|
"price": "1&100000",
|
||||||
|
"chosen": 0,
|
||||||
|
"indirectId": 0,
|
||||||
|
"vipPurchaseLimit": 0,
|
||||||
|
"seasonNum": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2207,
|
||||||
|
"goodId": 83601,
|
||||||
|
"goodName": "青龙偃月刀",
|
||||||
|
"num": 1,
|
||||||
|
"shop": 2,
|
||||||
|
"type": 21,
|
||||||
|
"guildLvLimit": 3,
|
||||||
|
"lvLimit": 0,
|
||||||
|
"ranklimit": 0,
|
||||||
|
"purchaseLimit": 1,
|
||||||
|
"refreshType": 2,
|
||||||
|
"money": 40016,
|
||||||
|
"price": "1&100000",
|
||||||
|
"chosen": 0,
|
||||||
|
"indirectId": 0,
|
||||||
|
"vipPurchaseLimit": 0,
|
||||||
|
"seasonNum": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2208,
|
||||||
|
"goodId": 83701,
|
||||||
|
"goodName": "霸王枪",
|
||||||
|
"num": 1,
|
||||||
|
"shop": 2,
|
||||||
|
"type": 21,
|
||||||
|
"guildLvLimit": 3,
|
||||||
|
"lvLimit": 0,
|
||||||
|
"ranklimit": 0,
|
||||||
|
"purchaseLimit": 1,
|
||||||
|
"refreshType": 2,
|
||||||
|
"money": 40016,
|
||||||
|
"price": "1&100000",
|
||||||
|
"chosen": 0,
|
||||||
|
"indirectId": 0,
|
||||||
|
"vipPurchaseLimit": 0,
|
||||||
|
"seasonNum": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2209,
|
||||||
|
"goodId": 84001,
|
||||||
|
"goodName": "软香绫",
|
||||||
|
"num": 1,
|
||||||
|
"shop": 2,
|
||||||
|
"type": 21,
|
||||||
|
"guildLvLimit": 3,
|
||||||
|
"lvLimit": 0,
|
||||||
|
"ranklimit": 0,
|
||||||
|
"purchaseLimit": 1,
|
||||||
|
"refreshType": 2,
|
||||||
|
"money": 40016,
|
||||||
|
"price": "1&100000",
|
||||||
|
"chosen": 0,
|
||||||
|
"indirectId": 0,
|
||||||
|
"vipPurchaseLimit": 0,
|
||||||
|
"seasonNum": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": 3002,
|
"id": 3002,
|
||||||
"goodId": 17042,
|
"goodId": 17042,
|
||||||
|
|||||||
@@ -21,7 +21,38 @@
|
|||||||
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 },
|
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 },
|
||||||
{ "id": 8, "desc": "捐赠", "route": "guild.donateHandler.donate", "param": {}, "interval": 200 },
|
{ "id": 8, "desc": "捐赠", "route": "guild.donateHandler.donate", "param": {}, "interval": 200 },
|
||||||
{ "id": 9, "desc": "碾压镇念塔", "route": "battle.towerBattleHandler.skipTower", "param": {}, "interval": 200 },
|
{ "id": 9, "desc": "碾压镇念塔", "route": "battle.towerBattleHandler.skipTower", "param": {}, "interval": 200 },
|
||||||
{ "id": 10, "desc": "商店购买商品", "route": "role.shopHandler.purchase", "param": {}, "interval": 50 }
|
{ "id": 10, "desc": "商店购买商品", "route": "role.shopHandler.purchase", "param": {}, "interval": 50 },
|
||||||
|
{ "id": 11, "desc": "武将升星", "route": "role.heroHandler.starUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 12, "desc": "武将升品", "route": "role.heroHandler.qualityUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 13, "desc": "武将升级", "route": "role.heroHandler.lvUp", "param": {}, "interval": 500 },
|
||||||
|
{ "id": 14, "desc": "武将升彩星", "route": "role.heroHandler.wakeUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 15, "desc": "武将训练", "route": "role.heroHandler.heroJobTrain", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 16, "desc": "武将进阶", "route": "role.heroHandler.heroJobStageUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 17, "desc": "武将升羁绊", "route": "role.heroHandler.heroGiveFavor", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 18, "desc": "解锁天赋", "route": "role.heroHandler.unlockTalent", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 19, "desc": "升级天赋", "route": "role.heroHandler.upgradeTalent", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 20, "desc": "天赋洗点", "route": "role.heroHandler.resetTalent", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 21, "desc": "合成新装备", "route": "role.equipHandler.composeEquip", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 22, "desc": "装备强化", "route": "role.equipHandler.strengthen", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 23, "desc": "装备一键强化", "route": "role.equipHandler.strengthenAll", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 24, "desc": "装备升品", "route": "role.equipHandler.qualityUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 25, "desc": "装备升星", "route": "role.equipHandler.starUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 26, "desc": "锁定随机属性", "route": "role.equipHandler.lockRandSe", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 27, "desc": "装备洗炼预览", "route": "role.equipHandler.previewRandSe", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 28, "desc": "装备洗炼", "route": "role.equipHandler.resetRandSe", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 29, "desc": "装备淬火", "route": "role.equipHandler.quench", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 30, "desc": "宝石合成", "route": "role.equipHandler.composeStone", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 31, "desc": "天晶继承", "route": "role.equipHandler.inheritJewel", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 32, "desc": "宝物升级", "route": "role.artifactHandler.lvUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 33, "desc": "宝物合成", "route": "role.artifactHandler.compose", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 34, "desc": "宝物一键合成", "route": "role.artifactHandler.composeAll", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 35, "desc": "宝物转换形态", "route": "role.artifactHandler.transfer", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 36, "desc": "宝物重铸", "route": "role.artifactHandler.rebuild", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 37, "desc": "升爵位", "route": "role.roleHandler.roleTitleLevelUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 38, "desc": "神像强化", "route": "role.roleHandler.roleTeraphStrengthen", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 39, "desc": "神像进阶", "route": "role.roleHandler.roleTeraphQualityUp", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 40, "desc": "升级名将谱", "route": "role.roleHandler.activeHeroScroll", "param": {}, "interval": 1000 },
|
||||||
|
{ "id": 41, "desc": "战区聊天", "route": "chat.chatHandler.sendGroupMessage", "param": { "channel": "gvg" }, "interval": 30000 }
|
||||||
],
|
],
|
||||||
"TIME_STAMP_OVER": 900000,
|
"TIME_STAMP_OVER": 900000,
|
||||||
"ACCESS_CODE_EXPIRE_TIME": 900000,
|
"ACCESS_CODE_EXPIRE_TIME": 900000,
|
||||||
|
|||||||
Reference in New Issue
Block a user