军团活动:粮草先行事件计算
This commit is contained in:
@@ -133,12 +133,15 @@ export class RaceActivityObject {
|
||||
this.events.set(toGuild, events);
|
||||
}
|
||||
let { guildRank, myGuildRank, myIndex } = await this.getRanks(serverId, toGuild);
|
||||
console.log('####', myIndex)
|
||||
if(myGuildRank) {
|
||||
let woodenHorseList = await this.getScreenHorses(serverId, guildRank, myIndex, true, Date.now() - event.startTime);
|
||||
for(let woodenHorse of woodenHorseList||[]) {
|
||||
if(woodenHorse) await sendMessageToGuildWithSuc(woodenHorse.guildCode, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
let ranks = this.getScreenHorseRanks(guildRank, myIndex);
|
||||
for(let rank of ranks||[]) {
|
||||
if(rank) await sendMessageToGuildWithSuc(rank.code, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
let timeout = setTimeout(async () => {
|
||||
await this.getScreenHorses(serverId, guildRank, myIndex, true);
|
||||
clearTimeout(timeout);
|
||||
}, event.startTime - Date.now())
|
||||
} else {
|
||||
await sendMessageToGuildWithSuc(toGuild, PUSH_ROUTE.GUILD_RACE_EVENT, { timestamp: Date.now(), events: [event] });
|
||||
}
|
||||
@@ -279,42 +282,50 @@ export class RaceActivityObject {
|
||||
|
||||
}
|
||||
|
||||
private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean, time = 0) {
|
||||
private getScreenHorseRanks(ranks: RaceActivityRankParam[], i: number) {
|
||||
let curRank = ranks[i];
|
||||
if(curRank.durability == 0) return;
|
||||
if(!curRank || curRank.durability == 0) return;
|
||||
|
||||
let beforeHorses: WoodenHorse[] = [], afterHorses: WoodenHorse[] = [], beforeCnt = 0, afterCnt = 0;
|
||||
let beforeHorses: RaceActivityRankParam[] = [], afterHorses: RaceActivityRankParam[] = [], beforeCnt = 0, afterCnt = 0;
|
||||
for(let j = i - 1; j >= 0; j--) {
|
||||
if(ranks[j]) {
|
||||
let wh = await this.getWoodenHorse(ranks[j].code, serverId);
|
||||
if(wh) {
|
||||
beforeHorses.push(wh);
|
||||
if(ranks[j].durability > 0) beforeCnt ++
|
||||
}
|
||||
beforeHorses.push(ranks[j]);
|
||||
if(ranks[j].durability > 0) beforeCnt ++
|
||||
}
|
||||
if(beforeCnt >= 2) break;
|
||||
}
|
||||
for(let j = i + 1; j < ranks.length; j++) {
|
||||
if(ranks[j]) {
|
||||
let wh = await this.getWoodenHorse(ranks[j].code, serverId);
|
||||
if(wh) {
|
||||
afterHorses.push(wh);
|
||||
if(ranks[j].durability > 0) afterCnt++;
|
||||
}
|
||||
afterHorses.push(ranks[j]);
|
||||
if(ranks[j].durability > 0) afterCnt++;
|
||||
}
|
||||
if(afterCnt >= 2) break;
|
||||
}
|
||||
// 发送
|
||||
// console.log('send', woodenHorseList.length);
|
||||
return [...beforeHorses.reverse(), curRank, ...afterHorses]
|
||||
}
|
||||
|
||||
private async getScreenHorses(serverId: number, ranks: RaceActivityRankParam[], i: number, needSend: boolean) {
|
||||
let curRank = ranks[i];
|
||||
if(curRank.durability == 0) return;
|
||||
// 发送
|
||||
// console.log('send', woodenHorseList.length);
|
||||
let wh = await this.getWoodenHorse(curRank.code, serverId);
|
||||
let woodenHorseList = wh? [...beforeHorses.reverse(), wh, ...afterHorses]: [...beforeHorses.reverse(), ...afterHorses];
|
||||
let screenRank = this.getScreenHorseRanks(ranks, i);
|
||||
let woodenHorseList: WoodenHorse[] = [];
|
||||
for(let rank of screenRank) {
|
||||
if(rank.code == curRank.code) {
|
||||
woodenHorseList.push(wh);
|
||||
} else {
|
||||
let wh = await this.getWoodenHorse(rank.code, serverId);
|
||||
woodenHorseList.push(wh);
|
||||
}
|
||||
}
|
||||
|
||||
if(needSend) {
|
||||
let timeout = setTimeout(async () => {
|
||||
let events = this.getEvents(curRank.code, wh ? wh.distance : 0);
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events });
|
||||
clearTimeout(timeout);
|
||||
}, time);
|
||||
let events = this.getEvents(curRank.code, wh ? wh.distance : 0);
|
||||
await sendMessageToGuildWithSuc(curRank.code, PUSH_ROUTE.GUILD_RACE_UPDATE, { timestamp: Date.now(), woodenHorseList, guildRank: ranks, myGuildRank: curRank, events });
|
||||
}
|
||||
return woodenHorseList
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ export const GUILDACTIVITY = {
|
||||
GATEACTIVITY_GATEHP: 2000000, // 城门血量
|
||||
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&200&20|3&50&10|5&50&10', // 粮草先行普通道具
|
||||
RACEACTIVITY_NORMAL_ITEMS: '1&2000&200|3&500&100|5&500&100', // 粮草先行普通道具
|
||||
RACEACTIVITY_EVENT_MEMBERCNT: 5, // 粮草先行随机道具获得人数
|
||||
RACEACTIVITY_EVENT_ITEMS: '2&1|4&1|6&1', // 粮草先行根据事件随机人可获得道具
|
||||
RACE_INIT_SPEED: 2, // 粮草先行军团初始速度
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"info": "每个造成0.2%的耐久度伤害",
|
||||
"type": 0,
|
||||
"effectType": 0,
|
||||
"effect": "100&",
|
||||
"effect": "10&",
|
||||
"continueTime": 0,
|
||||
"continueDistance": 0,
|
||||
"effecttime": 1,
|
||||
|
||||
Reference in New Issue
Block a user