寻宝:奖励

This commit is contained in:
luying
2022-07-27 18:08:26 +08:00
parent 1cb41f2733
commit e1dc6307d2
11 changed files with 285 additions and 193 deletions

View File

@@ -1,8 +1,8 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { EXTERIOR } from '../pubUtils/dicParam';
import { ItemReward } from '../domain/dbGeneral';
import { nowSeconds } from '../pubUtils/timeUtil';
import { RoleUpdate } from './Role';
export class ComRoleStatusHero {
@prop({ required: true })
@@ -33,12 +33,23 @@ export class ComRoleStatusHero {
}
}
export class ComBattleReward {
@prop({ required: true })
type: number;
@prop({ required: true })
id: number;
@prop({ required: true })
count: number;
}
export class RoleStatus {
@prop({ required: true })
roleId: string;
@prop({ required: true })
roleName: string;
@prop({ required: true })
guildCode: string;
@prop({ required: true })
isCap: boolean;
@prop({ required: true, default: 0 })
totalDmg: number;
@@ -79,30 +90,30 @@ export class RoleStatus {
@prop({ required: true, default: false })
gotReward: boolean;
// 队长奖励
@prop({ required: true, default: [], type: ItemReward })
fixReward: ItemReward[];
// 队友奖励
@prop({ required: true, default: [], type: ItemReward })
teammateReward: ItemReward[];
@prop({ required: true, default: [], type: ComBattleReward, _id: false })
rewards: ComBattleReward[];
// 好友间伤害加成
@prop({ required: true, default: 0 })
frdRatio: number = 0;
constructor(roleId: string, roleName: string, isCap: boolean, isFrd: boolean, head: number, frame: number, spine: number, topLineupCe: number, lv: number, heroes: ComRoleStatusHero[] = [], isRobot = false) {
this.roleId = roleId;
this.roleName = roleName;
constructor(role: RoleUpdate, isCap: boolean, isFrd: boolean, heroes: ComRoleStatusHero[] = [], isRobot = false) {
if(role) {
this.roleId = role.roleId||'';
this.roleName = role.roleName||'';
this.guildCode = role.guildCode||'';
this.head = role.head||EXTERIOR.EXTERIOR_FACE;
this.frame = role.frame||EXTERIOR.EXTERIOR_FACECASE;
this.spine = role.spine||EXTERIOR.EXTERIOR_APPEARANCE;
this.topLineupCe = role.topLineupCe||0;
this.lv = role.lv||1;
}
this.isCap = isCap;
this.totalDmg = 0;
this.isFrd = isFrd;
this.head = head;
this.frame = frame;
this.spine = spine;
this.topLineupCe = topLineupCe;
this.lv = lv;
this.heroes = heroes;
this.killed = [];
this.isRobot = isRobot;
this.fixReward = [];
this.rewards = [];
}
addFrdRatio(frdRatio: number) {
@@ -162,7 +173,7 @@ export default class ComBattleTeam extends BaseModel {
@prop({ required: true, default: 0 })
status: number;
@prop({ required: true, type: RoleStatus, default: [] })
@prop({ required: true, type: RoleStatus, default: [], _id: false })
roleStatus: RoleStatus[];
// 队长 roleId
@@ -178,7 +189,7 @@ export default class ComBattleTeam extends BaseModel {
roleCnt: number;
// 单个 boss 血量状态
@prop({ required: false, type: BossHp, default: [] })
@prop({ required: false, type: BossHp, default: [], _id: false })
bossHpArr: BossHp[];
// 队伍是否开放加入
@@ -188,6 +199,14 @@ export default class ComBattleTeam extends BaseModel {
// 黑名单
blacklist: string[] = [];
// 开始时间
@prop({ required: true, default: 0 })
startTime: number = 0;
// 是否有特殊时间奖励
@prop({ required: true, default: 0 })
hasTimeExtraReward: boolean = false;
// 结束时间
@prop({ required: true, default: 0 })
endTime: number = 0;
@@ -255,8 +274,8 @@ export default class ComBattleTeam extends BaseModel {
return team;
}
public static async updateStatusByCode(teamCode: string, status: number, lean = true) {
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamCode }, {status}, {new: true}).lean(lean);
public static async updateStatusByCode(teamCode: string, status: number, startTime: number, endTime: number, hasTimeExtraReward: boolean) {
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamCode }, { $set: {status, startTime, endTime, hasTimeExtraReward }}, {new: true}).lean();
return team;
}

View File

@@ -17,6 +17,8 @@ export default class FriendPoint extends BaseModel {
@prop({ required: true, default: 0 })
sendCnt: number; // 当天赠送的点数
@prop({ required: true, default: 0 })
comBattleCnt: number; // 今天在寻宝上获得的友情点
@prop({ required: true, default: 0 })
type: number; // 情谊点统计的类型,不同功能都可能有每日获取上限
/**