This commit is contained in:
chenxingzhi
2023-06-09 10:34:00 +08:00
28 changed files with 1678 additions and 77 deletions

View File

@@ -68,6 +68,7 @@ export enum ACTIVITY_TYPE {
REBATE = 53, // 返利
WEBVIEW = 54, // 平台活动页面
DRAGON_BOAT = 55, // 龙舟
ENTERTAIN = 56, // 宴请百家
}
/**

View File

@@ -269,6 +269,7 @@ export const STATUS = {
DIVIDEND_GUILD_PLAYER_ONLY: { code: 21004, simStr: '需要参加军团活动才能领取' },
AUCTION_GUILD_MEMBER_ONLY: { code: 21005, simStr: '不是军团的成员无法出价' },
AUCITON_STAGE_ERR: { code: 21006, simStr: '拍卖超时,请刷新客户端重新进入' },
GUILD_LOT_HAS_SOLD: { code: 21007, simStr: '拍品已售出' },
// 军团活动 21100-21199
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_BUY_COUNT_OVER: { code: 50072, 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_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },

View 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>; // 将所有字段变成可选项

View File

@@ -4,7 +4,7 @@ import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoos
/**
* 自增 ID
*/
@index({ sourceType: 1, time: 1, id: 1 })
@index({ beginTime: 1, id: 1 })
export default class CounterLots extends BaseModel {
@prop({ required: true })

View File

@@ -17,6 +17,7 @@ export abstract class ActivityBase {
hideDayByServer: number = 0;
isEnable: boolean = false;
interval: number = 0;
beginWithoutHideTime: number = 0;
roundIndex: number = 0;//周期活动第几个周期从1开始
nextRefreshTime: number = 0;//周期活动下次刷新时间
@@ -126,8 +127,14 @@ export abstract class ActivityBase {
}
}
if(activityData.hideDayByServer > 0) {
this.beginWithoutHideTime = this.beginTime;
let hidOverTime = moment(serverTime * 1000).add(activityData.hideDayByServer, 'd').startOf('d').add(REFRESH_TIME, 'h').valueOf();
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(),
// '结束:', this.endTime, moment(this.endTime).toDate(),

View 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()),
}
}
}

View File

@@ -121,7 +121,8 @@ export class GrowthFundData extends ActivityBase {
//是否领取过
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);
}
@@ -130,7 +131,7 @@ export class GrowthFundData extends ActivityBase {
for (let i = 0; i < this.list.length; i++) {
let page = this.list[i];
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) {
return false
}

View File

@@ -42,7 +42,7 @@ export class NewHeroGKData extends ActivityBase {
let dataObj: NewHeroGkDataInDb = JSON.parse(data);
let arr = dataObj.wars||[];
for (let obj of arr) {
this.wars.push(new NewHeroGachaWar(obj, this.beginTime))
this.wars.push(new NewHeroGachaWar(obj, this.beginWithoutHideTime||this.beginTime))
}
}

View File

@@ -1,5 +1,5 @@
// 天晶石表
import { readFileAndParse, parseGoodStr, parseNumberList } from '../util'
import { readFileAndParse, parseGoodStr, parseNumberList, decodeArrayListStr } from '../util'
import { FILENAME } from '../../consts';
import { RewardInter } from '../interface';
@@ -22,6 +22,8 @@ export interface DicJewel {
readonly randomEffect: number[];
// 稀有属性
readonly rareEffect: number[];
// 基础属性
readonly rareEffectBaseAttr: {id: number, num: number}[];
// 对应藏宝图id
readonly mapGoodId: number;
// 淬炼消耗
@@ -43,8 +45,10 @@ export function loadJewel() {
arr.forEach(o => {
o.randomEffect = parseNumberList(o.randomEffect);
o.rareEffect = parseNumberList(o.rareEffect);
o.rareEffectBaseAttr = parseAttr(o.rareEffectBaseAttr);
o.quenchConsume = parseGoodStr(o.quenchConsume);
o.inheritConsume = parseGoodStr(o.inheritConsume);
dicJewel.set(o.good_id, o);
dicBlueprt.set(o.mapGoodId, o.good_id);
if(!dicBlueprtByLv.has(o.lv)) {
@@ -53,4 +57,17 @@ export function loadJewel() {
dicBlueprtByLv.get(o.lv).push(o.mapGoodId);
});
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

View File

@@ -304,5 +304,11 @@
"activityType": 55,
"name": "DRAGON_BOAT",
"string": "龙舟"
},
{
"id": 56,
"activityType": 56,
"name": "ENTERTAIN",
"string": "宴请百家"
}
]

View File

@@ -1234,7 +1234,7 @@
{
"id": 210102,
"skillType": 3,
"newId": "2130201011&",
"newId": "2230201011&",
"insteadId": "&",
"artifactName": "虎头湛金枪",
"quality": 2,
@@ -1267,7 +1267,7 @@
{
"id": 210105,
"skillType": 3,
"newId": "2130501011&",
"newId": "2230501011&",
"insteadId": "&",
"artifactName": "虎头湛金枪",
"quality": 5,
@@ -1460,7 +1460,7 @@
"quality": 2,
"jobClass": 0,
"hids": "&",
"info": "生命、攻击、物防、策防+5%"
"info": "生命、攻击、物防、策防+10%"
},
{
"id": 250103,

View File

@@ -417,14 +417,14 @@
"des": "专属宝物自选箱",
"type": 2,
"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,
"des": "上品专属宝物箱",
"type": 3,
"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,

View File

@@ -12669,13 +12669,53 @@
"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,
"giftPackageId": 61,
"contentType": 2,
"content": 82101,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色尚方剑"
},
@@ -12685,7 +12725,7 @@
"contentType": 2,
"content": 82121,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色握奇经"
},
@@ -12695,7 +12735,7 @@
"contentType": 2,
"content": 82201,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色黄钺斧"
},
@@ -12705,7 +12745,7 @@
"contentType": 2,
"content": 82221,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色断魂枪"
},
@@ -12715,7 +12755,7 @@
"contentType": 2,
"content": 82301,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色穿龙槊"
},
@@ -12725,7 +12765,7 @@
"contentType": 2,
"content": 82321,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色铁甲马"
},
@@ -12735,7 +12775,7 @@
"contentType": 2,
"content": 82401,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色龙雀刀"
},
@@ -12745,7 +12785,7 @@
"contentType": 2,
"content": 82421,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色吞云盾"
},
@@ -12755,7 +12795,7 @@
"contentType": 2,
"content": 82501,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色神臂弓"
},
@@ -12765,7 +12805,7 @@
"contentType": 2,
"content": 82521,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色镇天箭"
},
@@ -12775,7 +12815,7 @@
"contentType": 2,
"content": 82601,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色博浪锥"
},
@@ -12785,7 +12825,7 @@
"contentType": 2,
"content": 82621,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色鱼肠剑"
},
@@ -12795,7 +12835,7 @@
"contentType": 2,
"content": 82701,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色神木鼎"
},
@@ -12805,7 +12845,7 @@
"contentType": 2,
"content": 82721,
"count": 1,
"weight": 224,
"weight": 448,
"floor": 0,
"备注": "蓝色太平要术"
},
@@ -12815,7 +12855,7 @@
"contentType": 2,
"content": 82102,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色尚方剑"
},
@@ -12825,7 +12865,7 @@
"contentType": 2,
"content": 82122,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色握奇经"
},
@@ -12835,7 +12875,7 @@
"contentType": 2,
"content": 82202,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色黄钺斧"
},
@@ -12845,7 +12885,7 @@
"contentType": 2,
"content": 82222,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色断魂枪"
},
@@ -12855,7 +12895,7 @@
"contentType": 2,
"content": 82302,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色穿龙槊"
},
@@ -12865,7 +12905,7 @@
"contentType": 2,
"content": 82322,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色铁甲马"
},
@@ -12875,7 +12915,7 @@
"contentType": 2,
"content": 82402,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色龙雀刀"
},
@@ -12885,7 +12925,7 @@
"contentType": 2,
"content": 82422,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色吞云盾"
},
@@ -12895,7 +12935,7 @@
"contentType": 2,
"content": 82502,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色神臂弓"
},
@@ -12905,7 +12945,7 @@
"contentType": 2,
"content": 82522,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色镇天箭"
},
@@ -12915,7 +12955,7 @@
"contentType": 2,
"content": 82602,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色博浪锥"
},
@@ -12925,7 +12965,7 @@
"contentType": 2,
"content": 82622,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色鱼肠剑"
},
@@ -12935,7 +12975,7 @@
"contentType": 2,
"content": 82702,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色神木鼎"
},
@@ -12945,7 +12985,7 @@
"contentType": 2,
"content": 82722,
"count": 1,
"weight": 164,
"weight": 328,
"floor": 0,
"备注": "紫色太平要术"
},
@@ -12955,7 +12995,7 @@
"contentType": 2,
"content": 82103,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色尚方剑"
},
@@ -12965,7 +13005,7 @@
"contentType": 2,
"content": 82123,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色握奇经"
},
@@ -12975,7 +13015,7 @@
"contentType": 2,
"content": 82203,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色黄钺斧"
},
@@ -12985,7 +13025,7 @@
"contentType": 2,
"content": 82223,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色断魂枪"
},
@@ -12995,7 +13035,7 @@
"contentType": 2,
"content": 82303,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色穿龙槊"
},
@@ -13005,7 +13045,7 @@
"contentType": 2,
"content": 82323,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色铁甲马"
},
@@ -13015,7 +13055,7 @@
"contentType": 2,
"content": 82403,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色龙雀刀"
},
@@ -13025,7 +13065,7 @@
"contentType": 2,
"content": 82423,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色吞云盾"
},
@@ -13035,7 +13075,7 @@
"contentType": 2,
"content": 82503,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色神臂弓"
},
@@ -13045,7 +13085,7 @@
"contentType": 2,
"content": 82523,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色镇天箭"
},
@@ -13055,7 +13095,7 @@
"contentType": 2,
"content": 82603,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色博浪锥"
},
@@ -13065,7 +13105,7 @@
"contentType": 2,
"content": 82623,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色鱼肠剑"
},
@@ -13075,7 +13115,7 @@
"contentType": 2,
"content": 82703,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色神木鼎"
},
@@ -13085,7 +13125,7 @@
"contentType": 2,
"content": 82723,
"count": 1,
"weight": 10,
"weight": 20,
"floor": 1,
"备注": "橙色太平要术"
},
@@ -13129,6 +13169,46 @@
"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,
"giftPackageId": 62,
@@ -15827,7 +15907,7 @@
"count": 1,
"weight": 14,
"floor": 2,
"备注": "郭嘉/诸葛亮/周瑜/孙尚香专属宝物自选箱"
"备注": "郭嘉/诸葛亮/周瑜/孙尚香/典韦/关羽/孙策/貂蝉专属宝物自选箱"
},
{
"id": 71001,

View File

@@ -10,6 +10,7 @@
"effectCount": 1,
"randomEffect": "90401&90601&90901&91101&91201&91301&91601&91701",
"rareEffect": "90110&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33001,
"quenchConsume": "17057&2",
"successConsume": "17057&100",
@@ -27,6 +28,7 @@
"effectCount": 1,
"randomEffect": "90402&90602&90902&91102&91202&91302&91602&91702",
"rareEffect": "90111&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33002,
"quenchConsume": "17057&4",
"successConsume": "17057&100",
@@ -44,6 +46,7 @@
"effectCount": 2,
"randomEffect": "90403&90603&90903&91103&91203&91303&91603&91703",
"rareEffect": "90112&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33003,
"quenchConsume": "17057&6",
"successConsume": "17057&100",
@@ -61,6 +64,7 @@
"effectCount": 2,
"randomEffect": "90404&90604&90904&91104&91204&91304&91604&91704",
"rareEffect": "90113&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33004,
"quenchConsume": "17057&8",
"successConsume": "17057&100",
@@ -78,6 +82,7 @@
"effectCount": 3,
"randomEffect": "90405&90605&90905&91105&91205&91305&91605&91705",
"rareEffect": "90114&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33005,
"quenchConsume": "17057&12",
"successConsume": "17057&100",
@@ -95,6 +100,7 @@
"effectCount": 3,
"randomEffect": "90406&90606&90906&91106&91206&91306&91606&91706",
"rareEffect": "90115&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33006,
"quenchConsume": "17057&16",
"successConsume": "17057&100",
@@ -112,6 +118,7 @@
"effectCount": 3,
"randomEffect": "90407&90607&90907&91107&91207&91307&91607&91707",
"rareEffect": "90116&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33007,
"quenchConsume": "17057&20",
"successConsume": "17057&100",
@@ -129,6 +136,7 @@
"effectCount": 4,
"randomEffect": "90408&90608&90908&91108&91208&91308&91608&91708",
"rareEffect": "90117&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33008,
"quenchConsume": "17057&24",
"successConsume": "17057&100",
@@ -146,6 +154,7 @@
"effectCount": 4,
"randomEffect": "90409&90609&90909&91109&91209&91309&91609&91709",
"rareEffect": "90118&",
"rareEffectBaseAttr": "2&50000",
"mapGoodId": 0,
"quenchConsume": "17057&30",
"successConsume": "17057&100",
@@ -163,6 +172,7 @@
"effectCount": 1,
"randomEffect": "90401&90601&90801&91001&90901&91101&91401&91601",
"rareEffect": "90210&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33010,
"quenchConsume": "17057&2",
"successConsume": "17057&100",
@@ -180,6 +190,7 @@
"effectCount": 1,
"randomEffect": "90402&90602&90802&91002&90902&91102&91402&91602",
"rareEffect": "90211&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33011,
"quenchConsume": "17057&4",
"successConsume": "17057&100",
@@ -197,6 +208,7 @@
"effectCount": 2,
"randomEffect": "90403&90603&90803&91003&90903&91103&91403&91603",
"rareEffect": "90212&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33012,
"quenchConsume": "17057&6",
"successConsume": "17057&100",
@@ -214,6 +226,7 @@
"effectCount": 2,
"randomEffect": "90404&90604&90804&91004&90904&91104&91404&91604",
"rareEffect": "90213&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33013,
"quenchConsume": "17057&8",
"successConsume": "17057&100",
@@ -231,6 +244,7 @@
"effectCount": 3,
"randomEffect": "90405&90605&90805&91005&90905&91105&91405&91605",
"rareEffect": "90214&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33014,
"quenchConsume": "17057&12",
"successConsume": "17057&100",
@@ -248,6 +262,7 @@
"effectCount": 3,
"randomEffect": "90406&90606&90806&91006&90906&91106&91406&91606",
"rareEffect": "90215&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33015,
"quenchConsume": "17057&16",
"successConsume": "17057&100",
@@ -265,6 +280,7 @@
"effectCount": 3,
"randomEffect": "90407&90607&90807&91007&90907&91107&91407&91607",
"rareEffect": "90216&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33016,
"quenchConsume": "17057&20",
"successConsume": "17057&100",
@@ -282,6 +298,7 @@
"effectCount": 4,
"randomEffect": "90408&90608&90808&91008&90908&91108&91408&91608",
"rareEffect": "90217&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33017,
"quenchConsume": "17057&24",
"successConsume": "17057&100",
@@ -299,6 +316,7 @@
"effectCount": 4,
"randomEffect": "90409&90609&90809&91009&90909&91109&91409&91609",
"rareEffect": "90218&",
"rareEffectBaseAttr": "4&50000",
"mapGoodId": 0,
"quenchConsume": "17057&30",
"successConsume": "17057&100",
@@ -316,6 +334,7 @@
"effectCount": 1,
"randomEffect": "90401&90601&90801&91001&90901&91101&91201&91501",
"rareEffect": "90310&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33019,
"quenchConsume": "17057&2",
"successConsume": "17057&100",
@@ -333,6 +352,7 @@
"effectCount": 1,
"randomEffect": "90402&90602&90802&91002&90902&91102&91202&91502",
"rareEffect": "90311&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33020,
"quenchConsume": "17057&4",
"successConsume": "17057&100",
@@ -350,6 +370,7 @@
"effectCount": 2,
"randomEffect": "90403&90603&90803&91003&90903&91103&91203&91503",
"rareEffect": "90312&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33021,
"quenchConsume": "17057&6",
"successConsume": "17057&100",
@@ -367,6 +388,7 @@
"effectCount": 2,
"randomEffect": "90404&90604&90804&91004&90904&91104&91204&91504",
"rareEffect": "90313&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33022,
"quenchConsume": "17057&8",
"successConsume": "17057&100",
@@ -384,6 +406,7 @@
"effectCount": 3,
"randomEffect": "90405&90605&90805&91005&90905&91105&91205&91505",
"rareEffect": "90314&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33023,
"quenchConsume": "17057&12",
"successConsume": "17057&100",
@@ -401,6 +424,7 @@
"effectCount": 3,
"randomEffect": "90406&90606&90806&91006&90906&91106&91206&91506",
"rareEffect": "90315&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33024,
"quenchConsume": "17057&16",
"successConsume": "17057&100",
@@ -418,6 +442,7 @@
"effectCount": 3,
"randomEffect": "90407&90607&90807&91007&90907&91107&91207&91507",
"rareEffect": "90316&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33025,
"quenchConsume": "17057&20",
"successConsume": "17057&100",
@@ -435,6 +460,7 @@
"effectCount": 4,
"randomEffect": "90408&90608&90808&91008&90908&91108&91208&91508",
"rareEffect": "90317&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33026,
"quenchConsume": "17057&24",
"successConsume": "17057&100",
@@ -452,6 +478,7 @@
"effectCount": 4,
"randomEffect": "90409&90609&90809&91009&90909&91109&91209&91509",
"rareEffect": "90318&",
"rareEffectBaseAttr": "5&50000",
"mapGoodId": 0,
"quenchConsume": "17057&30",
"successConsume": "17057&100",
@@ -469,6 +496,7 @@
"effectCount": 1,
"randomEffect": "90501&90701&90901&91101&91301&91401&91501&91701",
"rareEffect": "90010&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33028,
"quenchConsume": "17057&2",
"successConsume": "17057&100",
@@ -486,6 +514,7 @@
"effectCount": 1,
"randomEffect": "90502&90702&90902&91102&91302&91402&91502&91702",
"rareEffect": "90011&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33029,
"quenchConsume": "17057&4",
"successConsume": "17057&100",
@@ -503,6 +532,7 @@
"effectCount": 2,
"randomEffect": "90503&90703&90903&91103&91303&91403&91503&91703",
"rareEffect": "90012&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33030,
"quenchConsume": "17057&6",
"successConsume": "17057&100",
@@ -520,6 +550,7 @@
"effectCount": 2,
"randomEffect": "90504&90704&90904&91104&91304&91404&91504&91704",
"rareEffect": "90013&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33031,
"quenchConsume": "17057&8",
"successConsume": "17057&100",
@@ -537,6 +568,7 @@
"effectCount": 3,
"randomEffect": "90505&90705&90905&91105&91305&91405&91505&91705",
"rareEffect": "90014&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33032,
"quenchConsume": "17057&12",
"successConsume": "17057&100",
@@ -554,6 +586,7 @@
"effectCount": 3,
"randomEffect": "90506&90706&90906&91106&91306&91406&91506&91706",
"rareEffect": "90015&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33033,
"quenchConsume": "17057&16",
"successConsume": "17057&100",
@@ -571,6 +604,7 @@
"effectCount": 3,
"randomEffect": "90507&90707&90907&91107&91307&91407&91507&91707",
"rareEffect": "90016&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33034,
"quenchConsume": "17057&20",
"successConsume": "17057&100",
@@ -588,6 +622,7 @@
"effectCount": 4,
"randomEffect": "90508&90708&90908&91108&91308&91408&91508&91708",
"rareEffect": "90017&",
"rareEffectBaseAttr": "&",
"mapGoodId": 33035,
"quenchConsume": "17057&24",
"successConsume": "17057&100",
@@ -605,6 +640,7 @@
"effectCount": 4,
"randomEffect": "90509&90709&90909&91109&91309&91409&91509&91709",
"rareEffect": "90018&",
"rareEffectBaseAttr": "1&160000",
"mapGoodId": 0,
"quenchConsume": "17057&30",
"successConsume": "17057&100",

View File

@@ -512,6 +512,82 @@
"vipPurchaseLimit": 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,
"goodId": 17042,

View File

@@ -21,7 +21,38 @@
{ "id": 7, "desc": "刷新信息", "route": "connector.entryHandler.refresh", "param": {}, "interval": 1000 },
{ "id": 8, "desc": "捐赠", "route": "guild.donateHandler.donate", "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,
"ACCESS_CODE_EXPIRE_TIME": 900000,