军团活动:粮草先行部分计算逻辑
This commit is contained in:
@@ -65,6 +65,10 @@ import { getCutDay } from "./timeUtil";
|
||||
import { dicCityActivity } from "./dictionary/DicCityActivity";
|
||||
import { dicChatAccuse } from "./dictionary/DicChatAccuse";
|
||||
import { dicCityActivityReward } from "./dictionary/DicCityActivityReward";
|
||||
import { dicRaceActivity, dicRaceTypes } from './dictionary/DicRaceActivity';
|
||||
import { GUILDACTIVITY } from "./dicParam";
|
||||
import { decodeIdCntArrayStr } from "./util";
|
||||
import { GUILD_SELECT, RACE_EVENT_TYPE } from "../consts";
|
||||
|
||||
export const gameData = {
|
||||
blurprtCompose: dicBlueprtCompose,
|
||||
@@ -152,7 +156,10 @@ export const gameData = {
|
||||
guildAuction: dicGuildAuction,
|
||||
cityActivity: dicCityActivity,
|
||||
chatAccuse: dicChatAccuse,
|
||||
cityActivityReward: dicCityActivityReward
|
||||
cityActivityReward: dicCityActivityReward,
|
||||
raceActivityEvents: dicRaceActivity,
|
||||
raceTypes: dicRaceTypes,
|
||||
raceActivityEncounter: decodeRaceActivityEncounter(),
|
||||
};
|
||||
|
||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||
@@ -490,4 +497,16 @@ export function getCityActivityRewards(type: number, guildRank: number, rank: nu
|
||||
return cur.guildRank == guildRank && (rank >= cur.min && (rank <= cur.max || cur.max == 0));
|
||||
});
|
||||
return dic?dic.honour: 0;
|
||||
}
|
||||
|
||||
function decodeRaceActivityEncounter() {
|
||||
let str = GUILDACTIVITY.RACEACTIVITY_ENCOUNTER;
|
||||
let map = decodeIdCntArrayStr(str, 1);
|
||||
let newMap = new Map<number, number>();
|
||||
let eventNum = 0;
|
||||
for(let [key, value] of map) {
|
||||
if(value == RACE_EVENT_TYPE.EVENT) eventNum ++;
|
||||
newMap.set(parseInt(key), parseInt(value));
|
||||
}
|
||||
return { events: newMap, eventNum };
|
||||
}
|
||||
@@ -98,13 +98,19 @@ export const GUILDACTIVITY = {
|
||||
GATEACTIVITY_GATEHP: 10000, // 城门血量
|
||||
GATEACTIVITY_BOSS_DIFFICULT: '1&1.2|2&1.5', // boss类型&难度系数|boss类型&难度系数(1:小boss,2:大boss)
|
||||
RACEACTIVITY_DURABILITY_REWARD: 2, // 每剩余1%耐久度给予X点功勋
|
||||
RACEACTIVITY_NORMAL_ITEMS: '1&8&15|3&5&10|5&0&1', // 粮草先行普通道具
|
||||
RACEACTIVITY_EVENT_MEMBERCNT: 3, // 粮草先行随机道具获得人数
|
||||
RACEACTIVITY_EVENT_ITEMS: '2&1|4&1|6&1', // 粮草先行根据事件随机人可获得道具
|
||||
};
|
||||
export const GUILDAUCTION = {
|
||||
DIVIDENDRATE: 1, // 分红比例,1表示总金额 100% 分红
|
||||
DIVIDENDWEEKENDRATE: 0.2, // 额外分红,周末加成,0.2表示周围额外加成 20% 分红
|
||||
export const GUILD_AUCTION = {
|
||||
DIVIDEND_RATE: 1, // 总金额分红比例,1表示总金额 100% 分红
|
||||
DIVIDEND_WEEKEND_RATE: 0.2, // 额外分红,周末加成,0.2表示周围额外加成 20% 分红
|
||||
AUCTION_PRICE_RISE: 1.1, // 单次竞价价格上涨幅度,1.1表示竞拍每次价格上涨10%
|
||||
AUCTION_BOSSEXPECT_MAX: 1000, // 演武台预期分红上限
|
||||
AUCTION_BOSSEXPECT_MIN: 200, // 演武台预期分红下限
|
||||
AUCTION_ACTIVITYEXPECT_MAX: 2000, // 军团活动预期分红上限
|
||||
AUCTION_ACTIVITYEXPECT_MIN: 500, // 军团活动预期分红下限
|
||||
AUCTION_BOSS_EXPECT_MAX: 1000, // 演武台预期分红上限
|
||||
AUCTION_BOSS_EXPECT_MIN: 200, // 演武台预期分红下限
|
||||
AUCTION_ACTIVITY_EXPECT_MAX: 2000, // 军团活动预期分红上限
|
||||
AUCTION_ACTIVITY_EXPECT_MIN: 500, // 军团活动预期分红下限
|
||||
};
|
||||
export const BROWSER_DEBUG = {
|
||||
UNLIMITED_MOVEMENT: 0, // 无限行动
|
||||
};
|
||||
|
||||
46
shared/pubUtils/dictionary/DicRaceActivity.ts
Normal file
46
shared/pubUtils/dictionary/DicRaceActivity.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
// 粮草先行道具
|
||||
import { readJsonFile, parseNumberList } from '../util'
|
||||
import { FILENAME } from '../../consts'
|
||||
const _ = require('lodash');
|
||||
|
||||
export interface DicRaceActivity {
|
||||
|
||||
// 粮草先行道具id
|
||||
readonly id: number;
|
||||
// 类型 1-道具 2-事件
|
||||
readonly type: number;
|
||||
// 事件类型 1-好事件 2-坏事件
|
||||
readonly effectType: number;
|
||||
// 效果值
|
||||
readonly effect: number[];
|
||||
// 持续时间
|
||||
readonly continueTime: number;
|
||||
// 持续距离
|
||||
readonly continueDistance: number;
|
||||
// 生效时间
|
||||
readonly effectTime: number;
|
||||
|
||||
}
|
||||
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_RACE_ACTIVITY);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||||
const DicRaceKeys: KeysEnum<DicRaceActivity> = {id: true, type: true, effectType: true, effect: true, continueTime: true, continueDistance: true, effectTime: true};
|
||||
|
||||
export const dicRaceActivity = new Map<number, DicRaceActivity>();
|
||||
export const dicRaceTypes = new Map<number, Map<number, number[]>>();
|
||||
|
||||
arr.forEach(o => {
|
||||
o.effectTime = o.effecttime;
|
||||
o.effect = parseNumberList(o.effect);
|
||||
dicRaceActivity.set(o.id, _.pick(o, Object.keys(DicRaceKeys)));
|
||||
if(!dicRaceTypes.has(o.type)) {
|
||||
dicRaceTypes.set(o.type, new Map<number, number[]>());
|
||||
}
|
||||
if(!dicRaceTypes.get(o.type).has(o.effectType)) {
|
||||
dicRaceTypes.get(o.type).set(o.effectType, []);
|
||||
}
|
||||
dicRaceTypes.get(o.type).get(o.effectType).push(o.id);
|
||||
});
|
||||
Reference in New Issue
Block a user