军团优化:拍卖行基础奖励

This commit is contained in:
luying
2022-07-21 10:02:44 +08:00
parent 1f8674b443
commit 3c5c1cd2ae
15 changed files with 143 additions and 159 deletions

View File

@@ -233,6 +233,7 @@ export enum GUILD_POINT_WAYS {
TRAIN = 2, // 训练场
BOSS_WAR = 3, // 演武台
ACTIVITY = 4, // 军团活动
WISH_POOL = 5, // 许愿池
}
// 军团活动id
@@ -313,4 +314,8 @@ export enum RACE_ACTIVITY_STATUS {
BREAK = 3, // 爆破
}
export const CITY_ACTIVITY_DOOR = 1047;
export const CITY_ACTIVITY_DOOR = 1047;
export enum WISH_POOL_TYPE {
SOUL = 1, // 将魂
}

View File

@@ -210,6 +210,7 @@ export const STATUS = {
GUILD_DONATE_LV_NOT_ENOUGH: { code: 20934, simStr: '捐献所等级不足' },
GUILD_EQUIP_PRODUCE_LV_NOT_ENOUGH: { code: 20935, simStr: '炼器堂等级不足' },
GUILD_DONATE_CAN_NOT_SEND: { code: 20936, simStr: '此物品数量不足,不可捐赠' },
GUILD_WISH_POOL_CAN_NOT_WISH: { code: 20937, simStr: '不能许愿该类型物品' },
GUILD_SCRIPT_IS_OPENED_TODAY: { code: 20950, simStr: '今日已开启过演武场' },
GUILD_SCRIPT_NOT_OPENED: { code: 20951, simStr: '演武场未开启' },

View File

@@ -105,7 +105,7 @@ export default class GuildActivityRecord extends BaseModel {
}
public static async findBySourceCode(guildCode: string, sourceType: number, sourceCode: string) {
const rec = await GuildActivityRecordModel.findOne({ guildCode, auctionType: sourceType, code: sourceCode }).select('members').lean();
const rec = await GuildActivityRecordModel.findOne({ guildCode, auctionType: sourceType, code: sourceCode }).select('members aid rank cityId').lean();
return rec;
}
}

View File

@@ -286,6 +286,8 @@ export class DividendRec {
@prop({ required: true, default: '' })
roleId: string;
@prop({ required: true, default: 0 })
baseNum: number; // 职位分红
@prop({ required: true, default: 0 })
posNum: number; // 职位分红
@prop({ required: true, default: 0 })
weekendNum: number; // 额外分红,周末

View File

@@ -32,7 +32,7 @@ import { dicHeroRewads, loadPvpHeroReward } from './dictionary/DicPvpHeroReward'
import { dicRankRewads, dicRankMax, loadPvpRankReward, DicRankRewads } from './dictionary/DicPvpRankReward';
import { DicPvpBox, dicPvpBoxesBySeasonNum, dicPvpBoxs, loadPvpBox } from './dictionary/DicPvpBox';
import { dicGuildAuth, loadGuildAuth } from './dictionary/DicGuildAuth';
import { dicCenterBase, dicEquipPriduceBase, dicBossBase, dicTrainBase, dicDonateBase, dicWishPoolBase, dicStoreBase, dicStructureConsume, dicBossBaseByBossLv, loadStructure } from "./dictionary/DicStructure";
import { dicCenterBase, dicEquipPriduceBase, dicBossBase, dicTrainBase, dicDonateBase, dicStructureConsume, dicBossBaseByBossLv, loadStructure } from "./dictionary/DicStructure";
import { dicGuildActiveDayReward, loadGuildActiveDayReward } from './dictionary/DicGuildActiveDayReward';
import { dicGuildActiveWeekReward, loadGuildActiveWeekReward } from './dictionary/DicGuildActiveWeekReward';
import { dicGuildActiveWays, loadGuildActiveWays } from './dictionary/DicGuildActiveWays';
@@ -169,8 +169,6 @@ export const gameData = {
bossBaseByBossLv: dicBossBaseByBossLv,
trainBase: dicTrainBase,
donateBase: dicDonateBase,
armyWishPool: dicWishPoolBase,
storeBase: dicStoreBase,
guildTrainInfo: dicGuildTrainInfo,
structureConsume: dicStructureConsume,
guildActiveDayReward: dicGuildActiveDayReward,
@@ -603,10 +601,6 @@ export function getArmyDonateBaseByLv(lv: number) {
export function getArmyDonateBoxBaseById(id: number) {
return gameData.armyDonateBox.get(id);
}
export function getArmyWishPoolBaseByLv(lv: number) {
return gameData.armyWishPool.get(lv);
}
export function getFriendLvByExp(exp: number) {
let resultLv = 1;
for (let [lv, { sum }] of gameData.roleFriendLv.entries()) {
@@ -651,11 +645,15 @@ export function getTodayGuildActivity() {
* @param aid 活动id
* @param rank 排名
*/
export function getGuildAuctionRewards(aid: number, rank: number, cityId: number = 0) {
function getGuildAuction(aid: number, rank: number, cityId: number = 0) {
let ranksReward = gameData.guildAuction.get(`${aid}_${cityId}`) || [];
let dic = ranksReward.find(cur => {
return ranksReward.find(cur => {
return rank >= cur.min && (rank <= cur.max || cur.max == 0);
});
}
export function getGuildAuctionRewards(aid: number, rank: number, cityId: number = 0) {
let dic = getGuildAuction(aid, rank, cityId);
if(dic) {
return getAuctionRewardByPoolId(dic.rewards);
} else {
@@ -663,6 +661,12 @@ export function getGuildAuctionRewards(aid: number, rank: number, cityId: number
}
}
export function getGuildAuctionBasicNum(aid: number, rank: number, cityId: number = 0) {
console.log('###### getGuildAuctionBasicNum', aid, rank, cityId)
let dic = getGuildAuction(aid, rank, cityId);
return dic?.basicDividend||0;
}
export function getAuctionRewardByPoolId(poolId: number) {
let pools = gameData.auctionPool.get(poolId);
let rewards: { goods: RewardInter, basePrice: number, maxPrice: number, sort: number }[] = [];

View File

@@ -14,6 +14,8 @@ export interface DicGuildAuction {
readonly rewards: number;
// 城池
readonly cityId: number;
// 基础分红
readonly basicDividend: number;
}
export const dicGuildAuction = new Map<string, DicGuildAuction[]>();

View File

@@ -17,6 +17,8 @@ export interface DicCentreBase {
readonly managerNum: number;
// 每日最大可获得资金
readonly maxFund: number;
// 许愿的品质
readonly wishgoodsHero: { quality: number, count: number }[]
}
const DicCenterKeys: KeysEnum<DicCentreBase> = {
@@ -25,6 +27,7 @@ const DicCenterKeys: KeysEnum<DicCentreBase> = {
peopleNum: true,
managerNum: true,
maxFund: true,
wishgoodsHero: true
};
// 炼器堂
@@ -69,6 +72,8 @@ export interface DicBossBase {
readonly ratio: number;
// 鼓舞次数
readonly encourageSum: number;
// 基础分红
readonly basicDividend: number;
}
const DicBossKeys: KeysEnum<DicBossBase> = {
@@ -83,7 +88,8 @@ const DicBossKeys: KeysEnum<DicBossBase> = {
basicReward: true,
damageRewardTotal: true,
ratio: true,
encourageSum: true
encourageSum: true,
basicDividend: true,
};
// 练兵场
@@ -124,34 +130,6 @@ const DicDonateKeys: KeysEnum<DicDonateBase> = {
donateReward: true,
};
// 许愿池
export interface DicWishPoolBase {
// id
readonly id: number;
// 等级
readonly level: number;
readonly wishgoodsDrawings: Array<{quality: number, count: number}>;
readonly wishGoodsHeros: Array<{quality: number, count: number}>;
readonly consume: number;
}
const DicWishPoolKeys: KeysEnum<DicWishPoolBase> = {
id: true,
level: true,
wishgoodsDrawings: true,
wishGoodsHeros: true,
consume: true,
};
// 商店
export interface DicStoreBase {
// id
readonly id: number;
// 等级
readonly level: number;
// 许愿物品
readonly storeGoods: {id: number, count: number, num: number}[];
}
export const dicStructureConsume = new Map<number, Map<number, number>>(); // 升级消耗 structureId => level => consume
export const dicCenterBase = new Map<number, DicCentreBase>(); // 中军大帐
@@ -160,8 +138,6 @@ export const dicBossBase = new Map<number, DicBossBase>(); // 演武台
export const dicBossBaseByBossLv = new Map<number, DicBossBase>(); // 演武台 boss等级=>dic
export const dicTrainBase = new Map<number, DicTrainBase>(); // 练兵场
export const dicDonateBase = new Map<number, DicDonateBase>(); // 捐献所
export const dicWishPoolBase = new Map<number, DicWishPoolBase>(); // 许愿池
export const dicStoreBase = new Map<number, DicWishPoolBase>(); // 许愿池
export const maxMemberCnt = { max: 0 }; // 满配最大人数
export function loadStructure() {
@@ -172,21 +148,15 @@ export function loadStructure() {
dicBossBaseByBossLv.clear();
dicTrainBase.clear();
dicDonateBase.clear();
dicWishPoolBase.clear();
dicStoreBase.clear();
maxMemberCnt.max = 0;
const DicStoreKeys: KeysEnum<DicStoreBase> = {
id: true,
level: true,
storeGoods: true
};
// 中军大帐
let arrCenter = readFileAndParse(FILENAME.DIC_GUILD_STRUCTURE_CENTER);
arrCenter.forEach(o => {
setStructureConsume(o);
if(o.peopleNum > maxMemberCnt.max) maxMemberCnt.max = o.peopleNum;
o.maxFund = o.feeLimit;
o.wishgoodsHero = parseWishGoods(o.wishgoodsHero)
dicCenterBase.set(o.level, _.pick(o, Object.keys(DicCenterKeys)));
});
arrCenter = undefined;
@@ -235,31 +205,6 @@ export function loadStructure() {
});
arrDonate = undefined;
// 许愿池
let arrWishPool = readFileAndParse(FILENAME.DIC_GUILD_WISH_POOL_BASE);
arrWishPool.forEach(o => {
setStructureConsume(o);
o.wishgoodsDrawings = o.wishgoodsDrawing.split('|').map(wishgoodsDrawing=>{
let wishgoodsDrawings = wishgoodsDrawing.split('&');
return {quality: parseInt(wishgoodsDrawings[0]), count: parseInt(wishgoodsDrawings[1])};
});
o.wishGoodsHeros = o.wishgoodsHero.split('|').map(wishGoodsHero=>{
let wishGoodsHeros = wishGoodsHero.split('&');
return {quality: parseInt(wishGoodsHeros[0]), count: parseInt(wishGoodsHeros[1])};
});
dicWishPoolBase.set(o.level, _.pick(o, Object.keys(DicWishPoolKeys)));
});
arrWishPool = undefined;
// 商店
let arrStore = readFileAndParse(FILENAME.DIC_GUILD_STORE_BASE);
arrStore.forEach(o => {
setStructureConsume(o);
o.storeGoods = parseStoreGoods(o.storeGoods);
dicStoreBase.set(o.level, _.pick(o, Object.keys(DicStoreKeys)));
});
arrStore = undefined;
// 升级消耗
function setStructureConsume(o) {
let map = dicStructureConsume.get(o.structureId);
@@ -312,18 +257,4 @@ export function parseWishGoods(str: string) {
result.push({ quality: parseInt(quality), count: parseInt(count) });
}
return result
}
// {"id": number, "count": number, "num": number}
export function parseStoreGoods(str: string) {
let result = new Array<{ id: number, count: number, num: number }>();
if (!str) return result;
let decodeArr = decodeArrayListStr(str);
for (let [id, count, num] of decodeArr) {
if (isNaN(parseInt(id)) || isNaN(parseInt(count))|| isNaN(parseInt(num))) {
throw new Error('data table format wrong');
}
result.push({ id: parseInt(id), count: parseInt(count), num: parseInt(num) });
}
return result
}

View File

@@ -3,24 +3,40 @@
"id": 1,
"name": "捐献所",
"cout": 10,
"activePoint": "1&5|2&10|3&20"
"activePoint": "1&5|2&10|3&20",
"icon": "juanxiansuo",
"structureId": 7
},
{
"id": 2,
"name": "练兵场",
"cout": 4,
"activePoint": "1&10"
"activePoint": "1&10",
"icon": "lianbingchang",
"structureId": 4
},
{
"id": 3,
"name": "演武台",
"cout": 1,
"activePoint": "1&15"
"activePoint": "1&15",
"icon": "yanwutai",
"structureId": 3
},
{
"id": 4,
"name": "军团活动",
"cout": 2,
"activePoint": "1&20"
"cout": 1,
"activePoint": "1&20",
"icon": "juntuanhuodong",
"structureId": 9
},
{
"id": 5,
"name": "许愿池",
"cout": 3,
"activePoint": "1&5",
"icon": "juanxiansuo",
"structureId": 5
}
]

View File

@@ -4,7 +4,8 @@
"structureId": 3,
"level": 1,
"bossLevel": 10,
"warIdHP": "8001&10000000&10|8008&10000000&10",
"basicDividend": 500,
"warIdHP": "8001&10000000&60|8008&10000000&60",
"rewards": 1,
"consume": 50000,
"buildWords": "&",
@@ -22,7 +23,8 @@
"structureId": 3,
"level": 2,
"bossLevel": 20,
"warIdHP": "8009&20000000&20|8010&20000000&20|8016&20000000&20",
"basicDividend": 700,
"warIdHP": "8009&20000000&60|8010&20000000&60|8016&20000000&60",
"rewards": 1,
"consume": 125000,
"buildWords": "&",
@@ -40,7 +42,8 @@
"structureId": 3,
"level": 3,
"bossLevel": 30,
"warIdHP": "8017&30000000&30|8018&30000000&30|8024&30000000&30",
"basicDividend": 900,
"warIdHP": "8017&30000000&60|8018&30000000&60|8024&30000000&60",
"rewards": 2,
"consume": 350000,
"buildWords": "&",
@@ -58,7 +61,8 @@
"structureId": 3,
"level": 4,
"bossLevel": 40,
"warIdHP": "8025&40000000&40|8026&40000000&40|8027&40000000&40|8032&40000000&40",
"basicDividend": 1000,
"warIdHP": "8025&40000000&60|8026&40000000&60|8027&40000000&60|8032&40000000&60",
"rewards": 2,
"consume": 800000,
"buildWords": "&",
@@ -76,7 +80,8 @@
"structureId": 3,
"level": 5,
"bossLevel": 50,
"warIdHP": "8033&50000000&50|8034&50000000&50|8035&50000000&50|8040&50000000&50",
"basicDividend": 1100,
"warIdHP": "8033&50000000&60|8034&50000000&60|8035&50000000&60|8040&50000000&60",
"rewards": 2,
"consume": 1700000,
"buildWords": "&",
@@ -94,6 +99,7 @@
"structureId": 3,
"level": 6,
"bossLevel": 60,
"basicDividend": 1200,
"warIdHP": "8041&60000000&60|8042&60000000&60|8043&60000000&60|8044&60000000&60|8048&60000000&60",
"rewards": 2,
"consume": 3500000,
@@ -112,7 +118,8 @@
"structureId": 3,
"level": 7,
"bossLevel": 70,
"warIdHP": "8049&70000000&65|8050&70000000&65|8051&70000000&65|8052&70000000&65|8056&70000000&65",
"basicDividend": 1300,
"warIdHP": "8049&70000000&60|8050&70000000&60|8051&70000000&60|8052&70000000&60|8056&70000000&60",
"rewards": 3,
"consume": 6125000,
"buildWords": "&",
@@ -130,7 +137,8 @@
"structureId": 3,
"level": 8,
"bossLevel": 80,
"warIdHP": "8057&80000000&70|8058&80000000&70|8059&80000000&70|8060&80000000&70|8061&80000000&70|8064&80000000&70",
"basicDividend": 1400,
"warIdHP": "8057&80000000&60|8058&80000000&60|8059&80000000&60|8060&80000000&60|8061&80000000&60|8064&80000000&60",
"rewards": 3,
"consume": 9125000,
"buildWords": "&",
@@ -148,7 +156,8 @@
"structureId": 3,
"level": 9,
"bossLevel": 90,
"warIdHP": "8065&90000000&75|8066&90000000&75|8067&90000000&75|8068&90000000&75|8069&90000000&75|8070&90000000&75|8072&90000000&75",
"basicDividend": 1500,
"warIdHP": "8065&90000000&60|8066&90000000&60|8067&90000000&60|8068&90000000&60|8069&90000000&60|8070&90000000&60|8072&90000000&60",
"rewards": 3,
"consume": 13625000,
"buildWords": "&",
@@ -166,7 +175,8 @@
"structureId": 3,
"level": 10,
"bossLevel": 100,
"warIdHP": "8073&100000000&80|8074&100000000&80|8075&100000000&80|8076&100000000&80|8077&100000000&80|8078&100000000&80|8079&100000000&80|8080&100000000&80",
"basicDividend": 1600,
"warIdHP": "8073&100000000&60|8074&100000000&60|8075&100000000&60|8076&100000000&60|8077&100000000&60|8078&100000000&60|8079&100000000&60|8080&100000000&60",
"rewards": 3,
"consume": 0,
"buildWords": "&",

View File

@@ -5,6 +5,7 @@
"level": 1,
"peopleNum": 30,
"managerNum": 3,
"wishgoodsHero": "&",
"consume": 100000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -16,6 +17,7 @@
"level": 2,
"peopleNum": 35,
"managerNum": 3,
"wishgoodsHero": "&",
"consume": 250000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -27,6 +29,7 @@
"level": 3,
"peopleNum": 40,
"managerNum": 3,
"wishgoodsHero": "&",
"consume": 700000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -38,6 +41,7 @@
"level": 4,
"peopleNum": 45,
"managerNum": 4,
"wishgoodsHero": "1&2",
"consume": 1600000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -49,6 +53,7 @@
"level": 5,
"peopleNum": 50,
"managerNum": 4,
"wishgoodsHero": "1&2",
"consume": 3400000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -60,6 +65,7 @@
"level": 6,
"peopleNum": 55,
"managerNum": 4,
"wishgoodsHero": "1&2|2&1",
"consume": 7000000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -71,6 +77,7 @@
"level": 7,
"peopleNum": 60,
"managerNum": 5,
"wishgoodsHero": "1&2|2&1",
"consume": 12250000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -82,6 +89,7 @@
"level": 8,
"peopleNum": 60,
"managerNum": 5,
"wishgoodsHero": "1&2|2&1",
"consume": 18250000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -93,6 +101,7 @@
"level": 9,
"peopleNum": 60,
"managerNum": 5,
"wishgoodsHero": "1&3|2&1|3&1",
"consume": 27250000,
"buildWords": "&",
"imageName": "jttubiao_1",
@@ -104,6 +113,7 @@
"level": 10,
"peopleNum": 60,
"managerNum": 5,
"wishgoodsHero": "1&3|2&1|3&1",
"consume": 0,
"buildWords": "&",
"imageName": "jttubiao_1",

View File

@@ -5,7 +5,8 @@
"min": 1,
"max": 1,
"rewards": 4,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 1000
},
{
"id": 1,
@@ -13,7 +14,8 @@
"min": 2,
"max": 10,
"rewards": 5,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 800
},
{
"id": 1,
@@ -21,7 +23,8 @@
"min": 11,
"max": 0,
"rewards": 6,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 500
},
{
"id": 2,
@@ -29,7 +32,8 @@
"min": 1,
"max": 1,
"rewards": 7,
"cityId": "10&"
"cityId": "10&",
"basicDividend": 2000
},
{
"id": 2,
@@ -37,7 +41,8 @@
"min": 2,
"max": 10,
"rewards": 7,
"cityId": "10&"
"cityId": "10&",
"basicDividend": 1500
},
{
"id": 2,
@@ -45,7 +50,8 @@
"min": 11,
"max": 0,
"rewards": 3,
"cityId": "10&"
"cityId": "10&",
"basicDividend": 1200
},
{
"id": 3,
@@ -53,7 +59,8 @@
"min": 1,
"max": 1,
"rewards": 10,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 1000
},
{
"id": 3,
@@ -61,7 +68,8 @@
"min": 2,
"max": 10,
"rewards": 11,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 800
},
{
"id": 3,
@@ -69,7 +77,8 @@
"min": 11,
"max": 0,
"rewards": 12,
"cityId": "0&"
"cityId": "0&",
"basicDividend": 500
},
{
"id": 2,
@@ -77,7 +86,8 @@
"min": 1,
"max": 1,
"rewards": 8,
"cityId": "7&8&9"
"cityId": "7&8&9",
"basicDividend": 1200
},
{
"id": 2,
@@ -85,7 +95,8 @@
"min": 2,
"max": 10,
"rewards": 8,
"cityId": "7&8&9"
"cityId": "7&8&9",
"basicDividend": 1000
},
{
"id": 2,
@@ -93,7 +104,8 @@
"min": 11,
"max": 0,
"rewards": 8,
"cityId": "7&8&9"
"cityId": "7&8&9",
"basicDividend": 800
},
{
"id": 2,
@@ -101,7 +113,8 @@
"min": 1,
"max": 1,
"rewards": 9,
"cityId": "1&2&3&4&5&6"
"cityId": "1&2&3&4&5&6",
"basicDividend": 1000
},
{
"id": 2,
@@ -109,7 +122,8 @@
"min": 2,
"max": 10,
"rewards": 9,
"cityId": "1&2&3&4&5&6"
"cityId": "1&2&3&4&5&6",
"basicDividend": 800
},
{
"id": 2,
@@ -117,6 +131,7 @@
"min": 11,
"max": 0,
"rewards": 9,
"cityId": "1&2&3&4&5&6"
"cityId": "1&2&3&4&5&6",
"basicDividend": 500
}
]