军团活动:修改粮草先行道具分配
This commit is contained in:
@@ -3,7 +3,7 @@ import { SimpleGuildRankParam, SimpleRoleRankParam } from '../rank'
|
||||
import { prop } from "@typegoose/typegoose";
|
||||
import { CITY_STATUS, RACE_ACTIVITY_STATUS, RACE_EVENT } from "../../consts";
|
||||
import { gameData, getRaceEventItems } from "../../pubUtils/data";
|
||||
import { getRandEelm } from "../../pubUtils/util";
|
||||
import { getRandEelm, getRandResultByMember, getRandValueByMinMax, sortArrRandom } from "../../pubUtils/util";
|
||||
import { RewardInter } from "../../pubUtils/interface";
|
||||
|
||||
export class GateMembersRec {
|
||||
@@ -15,13 +15,46 @@ export class GateMembersRec {
|
||||
}
|
||||
}
|
||||
|
||||
class WoodenHorseMember {
|
||||
export class WoodenHorseMember {
|
||||
roleId: string;
|
||||
roleName: string;
|
||||
sid: string;
|
||||
items?: RewardInter[];
|
||||
items: RewardInter[] = [];
|
||||
code?: string;
|
||||
hasReceiveInitItems: boolean = false;
|
||||
|
||||
constructor(roleId: string, roleName: string, sid: string, code: string) {
|
||||
this.roleId = roleId;
|
||||
this.roleName = roleName;
|
||||
this.sid = sid;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
addTempItem(item: RewardInter) {
|
||||
this.items.push(item);
|
||||
}
|
||||
|
||||
addTempItems(items: RewardInter[]) {
|
||||
this.items.push(...items);
|
||||
}
|
||||
|
||||
getTempItems() {
|
||||
return this.items;
|
||||
}
|
||||
|
||||
receiveTempItems() {
|
||||
let items = [...this.items];
|
||||
this.items = [];
|
||||
return items;
|
||||
}
|
||||
|
||||
isReceived() {
|
||||
return this.hasReceiveInitItems;
|
||||
}
|
||||
|
||||
setReceived(hasReceiveInitItems: boolean) {
|
||||
this.hasReceiveInitItems = hasReceiveInitItems;
|
||||
}
|
||||
}
|
||||
|
||||
// 木牛流马
|
||||
@@ -57,6 +90,8 @@ export class WoodenHorse {
|
||||
@prop({required: true})
|
||||
stopContinueTime: number = 0; // 鬼手阴符
|
||||
|
||||
remainItems: Map<number, { total: number, max: number }> = new Map();
|
||||
|
||||
constructor(guildCode: string, guildName: string, guildCe: number, serverId: number) {
|
||||
this.guildCode = guildCode;
|
||||
this.guildName = guildName;
|
||||
@@ -178,13 +213,20 @@ export class WoodenHorse {
|
||||
case RACE_EVENT.ITEM:
|
||||
let ranMember: WoodenHorseMember[] = getRandEelm(this.members, GUILDACTIVITY.RACEACTIVITY_EVENT_MEMBERCNT);
|
||||
if(ranMember.length <= 0) ranMember = this.members;
|
||||
for(let obj of ranMember) {
|
||||
for(let member of ranMember) {
|
||||
let item = gameData.raceEventItems;
|
||||
obj.items = (obj.items||[]).concat(item);
|
||||
member.addTempItems(item);
|
||||
}
|
||||
for(let obj of this.members) {
|
||||
let item = getRaceEventItems();
|
||||
obj.items = (obj.items||[]).concat(item);
|
||||
let normalItems = getRaceEventItems();
|
||||
for(let [id, {total, max}] of normalItems) {
|
||||
let randResult = getRandResultByMember(total, max, this.members.length);
|
||||
for(let i = 0; i < this.members.length; i++) {
|
||||
let count = randResult.arr[i]||0;
|
||||
if(count > 0) {
|
||||
this.members[i].addTempItem({ id, count });
|
||||
normalItems.get(id).total -= count;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -192,14 +234,21 @@ export class WoodenHorse {
|
||||
|
||||
|
||||
public joinMember(roleId: string, roleName: string, sid: string, code: string) {
|
||||
if(this.members.findIndex(cur => cur.roleId == roleId) == -1) {
|
||||
this.members.push({ roleId, roleName, sid, code });
|
||||
let index = this.members.findIndex(cur => cur.roleId == roleId)
|
||||
if(index == -1) {
|
||||
let member = new WoodenHorseMember(roleId, roleName, sid, code);
|
||||
this.members.push(member);
|
||||
this.speed++;
|
||||
this.memberCnt++;
|
||||
return member;
|
||||
} else {
|
||||
return this.members[index];
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public setRemainItem(id: number, remain: number, max: number) {
|
||||
this.remainItems.set(id, { total: remain, max });
|
||||
}
|
||||
}
|
||||
|
||||
export class Event {
|
||||
|
||||
Reference in New Issue
Block a user