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

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

@@ -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
}