镇念塔:系统参数表

This commit is contained in:
luying
2021-08-18 16:44:54 +08:00
parent 7d1f49e02a
commit a4627b3ac6
7 changed files with 119 additions and 89 deletions

View File

@@ -1,11 +1,11 @@
import { HANG_UP_CONSTS, ROLE_TERAPH, ROLE_SELECT, ABI_TYPE } from './../consts';
import { ROLE_TERAPH, ROLE_SELECT, ABI_TYPE } from './../consts';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, Ref, mongoose } from '@typegoose/typegoose';
import User from './User';
import { shouldRefresh, reduceCe } from '../pubUtils/util';
import { nowSeconds, getTimeFunD } from '../pubUtils/timeUtil';
import { Figure } from '../domain/dbGeneral';
import { BAG, EXTERIOR } from '../pubUtils/dicParam';
import * as dicParam from '../pubUtils/dicParam';
import Hero from './Hero';
// role表属性格式
@@ -135,17 +135,17 @@ export default class Role extends BaseModel {
public get head() { // 虚拟字段head 当前头像
let curHead = this.heads?.find(cur => cur.enable && (!cur.time || cur.time > nowSeconds()));
return curHead ? curHead.id : EXTERIOR.EXTERIOR_FACE;
return curHead ? curHead.id : dicParam.EXTERIOR.EXTERIOR_FACE;
}
public get frame() { // 虚拟字段frame 当前相框
let curFrame = this.frames?.find(cur => cur.enable && (!cur.time || cur.time > nowSeconds()));
return curFrame ? curFrame.id : EXTERIOR.EXTERIOR_FACECASE;
return curFrame ? curFrame.id : dicParam.EXTERIOR.EXTERIOR_FACECASE;
}
public get spine() { // 虚拟字段spine 当前形象
let curSpine = this.spines?.find(cur => cur.enable && (!cur.time || cur.time > nowSeconds()));
return curSpine ? curSpine.id : EXTERIOR.EXTERIOR_APPEARANCE;
return curSpine ? curSpine.id : dicParam.EXTERIOR.EXTERIOR_APPEARANCE;
}
@prop({ required: true, default: 0 })
@@ -210,7 +210,7 @@ export default class Role extends BaseModel {
@prop({ required: true, default: new Date() })
towerUpTime: Date; // 天梯爬到这一层的时间
@prop({ required: true, default: HANG_UP_CONSTS.MAX_SPD_UP_CNT })
@prop({ required: true, default: 0 })
hangUpSpdUpCnt: number; // 挂机加速次数
@prop({ required: true, default: new Date() })
lastSpdUpTime: Date; // 最后一次挂机加速时间
@@ -355,20 +355,6 @@ export default class Role extends BaseModel {
return role;
}
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date, lean = true) {
if (cnt < 0) return null;
const result = await RoleModel.findOne({ roleId }).lean(lean);
const lastSpdUpTime = result?.lastSpdUpTime;
let role: RoleType;
if (!lastSpdUpTime || (shouldRefresh(lastSpdUpTime, curTime) && cnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT)) {
role = await RoleModel.findOneAndUpdate({ roleId }, { hangUpSpdUpCnt: HANG_UP_CONSTS.MAX_SPD_UP_CNT - cnt, lastSpdUpTime: curTime }, { new: true }).lean(lean);
} else {
role = await RoleModel.findOneAndUpdate({ roleId, hangUpSpdUpCnt: { $gte: cnt } }, { $inc: { hangUpSpdUpCnt: -cnt }, lastSpdUpTime: curTime }, { new: true }).lean(lean);
}
return role;
}
public static async increaseExpeditionPoint(roleId: string, point: number, lean = true) {
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { expeditionPoint: point } }, { new: true }).lean(lean);
return role;
@@ -415,11 +401,11 @@ export default class Role extends BaseModel {
}
}
let result: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { gold: addGold, paidGold, giftGold, coin } }, { new: true }).lean();
if(result.gold > BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, gold: { $gte: BAG.BAG_GOODS_UPLIMITED } }, { $set: { gold: BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
if(result.gold > dicParam.BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, gold: { $gte: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { $set: { gold: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
}
if(result.coin > BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, coin: { $gte: BAG.BAG_GOODS_UPLIMITED } }, { $set: { coin: BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
if(result.coin > dicParam.BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, coin: { $gte: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { $set: { coin: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
}
return result;
}
@@ -435,11 +421,11 @@ export default class Role extends BaseModel {
}
}
let result: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { gold: -1 * addGold, paidGold: -1 * paidGold, giftGold: -1 * giftGold, totalCost: addGold, coin: -1 * coin } }, { new: true }).lean();
if(result.gold > BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, gold: { $gte: BAG.BAG_GOODS_UPLIMITED } }, { $set: { gold: BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
if(result.gold > dicParam.BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, gold: { $gte: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { $set: { gold: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
}
if(result.coin > BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, coin: { $gte: BAG.BAG_GOODS_UPLIMITED } }, { $set: { coin: BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
if(result.coin > dicParam.BAG.BAG_GOODS_UPLIMITED) {
result = await RoleModel.findOneAndUpdate({ roleId, coin: { $gte: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { $set: { coin: dicParam.BAG.BAG_GOODS_UPLIMITED } }, { new: true }).lean();
}
return result;
}
@@ -458,6 +444,22 @@ export default class Role extends BaseModel {
return result;
}
public static async hangUpSpdUp(roleId: string, cnt: number, curTime: Date) {
if (cnt < 0) return null;
const result = await RoleModel.findOne({ roleId }).lean();
const lastSpdUpTime = result?.lastSpdUpTime;
let role: RoleType;
if(shouldRefresh(lastSpdUpTime, curTime)) {
role = await RoleModel.findOneAndUpdate({ roleId }, { hangUpSpdUpCnt: 0, lastSpdUpTime: curTime }, { new: true }).lean();
} else {
role = await RoleModel.findOneAndUpdate({ roleId, hangUpSpdUpCnt: { $lte: dicParam.TOWER_BOOST.TOWER_BOOSTTIME - cnt } }, { $inc: { hangUpSpdUpCnt: cnt }, lastSpdUpTime: curTime }, { new: true }).lean();
}
return role;
}
// 重置派遣次数
public static async resetTowerCnt(roleId: string, curTime: Date, lean = true) {
const role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { towerTaskCnt: 0, towerTaskRefTime: curTime, towerTaskReCnt: 0 }, { new: true }).lean(lean);
@@ -713,13 +715,13 @@ function getInitialTeraph() {
function getDefualtFigure(type: string) {
let figures = new Array<Figure>();
if (type == 'head') {
let figure = new Figure(EXTERIOR.EXTERIOR_FACE, true, null, true);
let figure = new Figure(dicParam.EXTERIOR.EXTERIOR_FACE, true, null, true);
figures.push(figure);
} else if (type == 'frame') {
let figure = new Figure(EXTERIOR.EXTERIOR_FACECASE, true, null, true);
let figure = new Figure(dicParam.EXTERIOR.EXTERIOR_FACECASE, true, null, true);
figures.push(figure);
} else if (type == 'spine') {
let figure = new Figure(EXTERIOR.EXTERIOR_APPEARANCE, true, null, true);
let figure = new Figure(dicParam.EXTERIOR.EXTERIOR_APPEARANCE, true, null, true);
figures.push(figure);
}
return figures;