军团活动:修改粮草先行道具分配
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
|
||||
// 军团活动蛮夷入侵城门血量等数据存储
|
||||
|
||||
import { Member, GateMembersRec, WoodenHorse, Event } from "../../domain/battleField/guildActivity";
|
||||
import { Member, GateMembersRec, WoodenHorse, Event, WoodenHorseMember } from "../../domain/battleField/guildActivity";
|
||||
import { RewardInter } from "../../pubUtils/interface";
|
||||
import { getRaceEventItems, gameData } from "../../pubUtils/data";
|
||||
import { GuildModel } from "../../db/Guild";
|
||||
@@ -9,7 +9,7 @@ import { sendSingleRaceActEndMsg } from "./guildActivityService";
|
||||
import { REDIS_KEY, RACE_EVENT_TYPE, RACE_EVENT_EFFECT_TYPE, RACE_EVENT, STATUS, RACE_ACTIVITY_STATUS } from "../../consts";
|
||||
import { getGuildChannelSid } from "../chatService";
|
||||
import { pinus } from "pinus";
|
||||
import { getRandEelm, sortArrRandom, resResult } from "../../pubUtils/util";
|
||||
import { getRandEelm, sortArrRandom, resResult, getRandResultByMember } from "../../pubUtils/util";
|
||||
import { Rank } from "../rankService";
|
||||
import { getTimeFun } from "../../pubUtils/timeUtil";
|
||||
|
||||
@@ -52,12 +52,11 @@ export class RaceActivityObject {
|
||||
public async joinWoodenHorse(guildCode: string, roleId: string, roleName: string, serverId: number, sid: string, job: number, code: string) {
|
||||
let woodenHorse = await this.getWoodenHorse(guildCode, serverId);
|
||||
if(!woodenHorse) return false;
|
||||
woodenHorse.joinMember(roleId, roleName, sid, code)
|
||||
let member = woodenHorse.joinMember(roleId, roleName, sid, code)
|
||||
this.pushMember(guildCode, roleId, job, code);
|
||||
|
||||
if(this.status == RACE_ACTIVITY_STATUS.START) {
|
||||
let item = getRaceEventItems();
|
||||
this.handleItems(roleId, sid, item);
|
||||
this.sendRandItemsToMembers([member], woodenHorse, woodenHorse.remainItems);
|
||||
this.woodenHorseStartRace(woodenHorse);
|
||||
}
|
||||
return await this.getWoodenHorse(guildCode, serverId);
|
||||
@@ -126,9 +125,31 @@ export class RaceActivityObject {
|
||||
woodenHorse.time = Date.now();
|
||||
woodenHorse.startTime = Date.now();
|
||||
let members = woodenHorse.members;
|
||||
for(let { roleId, sid } of members) {
|
||||
let item = getRaceEventItems();
|
||||
this.handleItems(roleId, sid, item);
|
||||
let normalItems = getRaceEventItems();
|
||||
this.sendRandItemsToMembers(members, woodenHorse, normalItems);
|
||||
}
|
||||
|
||||
private sendRandItemsToMembers(members: WoodenHorseMember[], woodenHorse: WoodenHorse, items: Map<number, { total: number, max: number}>) {
|
||||
let notReceiveMembers = members.filter(member => !member.isReceived());
|
||||
let memberCnt = notReceiveMembers.length;
|
||||
let addItems: Map<string, { member: WoodenHorseMember, items: {id: number, count: number}[] }> = new Map();
|
||||
for(let [id, {total, max}] of items) {
|
||||
let randResult = getRandResultByMember(total, max, memberCnt);
|
||||
for(let i = 0; i < memberCnt; i++) {
|
||||
let member = notReceiveMembers[i];
|
||||
let count = randResult.arr[i]||0;
|
||||
if(count > 0) {
|
||||
if(!addItems.has(member.roleId)) {
|
||||
addItems.set(member.roleId, { member: member, items: [] });
|
||||
}
|
||||
addItems.get(member.roleId).items.push({ id, count });
|
||||
}
|
||||
}
|
||||
woodenHorse.setRemainItem(id, randResult.remain, max);
|
||||
}
|
||||
for(let [_roleId, {member, items}] of addItems) {
|
||||
member.setReceived(true);
|
||||
this.handleItems(member.roleId, member.sid, items);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user