战力:替换新方法
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
//武将养成系统分类
|
||||
export enum HERO_SYSTEM_TYPE {
|
||||
INIT = 0, // 初始武将
|
||||
STAR = 1, // 升星
|
||||
LVUP = 2, // 升级
|
||||
LVUP = 1, // 升级
|
||||
STAR = 2, // 升星
|
||||
COLORSTAR = 3, // 觉醒
|
||||
QUALITY = 4, // 升品
|
||||
TRAIN = 5, // (职业)训练
|
||||
|
||||
@@ -166,8 +166,6 @@ export default class Hero extends BaseModel {
|
||||
ce: number; // 武将战力
|
||||
@prop({ required: false, set: (val: boolean) => val, get: () => true })
|
||||
isReducedCe: boolean; // 如果战力没有缩过就会返回false,缩过了就会返回true
|
||||
@prop({ required: true, default: 0 })
|
||||
historyCe: number; // 武将历史最高战力
|
||||
@prop({ required: true, type: CeAttrData, default: [], _id: false })
|
||||
attr: CeAttrData[]; // 影响战力的属性
|
||||
|
||||
@@ -300,16 +298,6 @@ export default class Hero extends BaseModel {
|
||||
return <HeroType[]>insertInfos;
|
||||
}
|
||||
|
||||
public static async sumTopHeroCe(roleId: string, num: number) {
|
||||
let ce: Array<{ historyCe: number }> = await HeroModel.aggregate([
|
||||
{ $match: { roleId } },
|
||||
{ $sort: { historyCe: -1 } },
|
||||
{ $limit: num },
|
||||
{ $group: { _id: null, historyCe: { $sum: '$historyCe' } } }
|
||||
]);
|
||||
return ce.length > 0 ? ce[0].historyCe : 0;
|
||||
}
|
||||
|
||||
public static async sumHeroCe(roleId: string) {
|
||||
let ce: Array<{ ce: number }> = await HeroModel.aggregate([
|
||||
{ $match: { roleId } },
|
||||
@@ -323,13 +311,6 @@ export default class Hero extends BaseModel {
|
||||
return heroes;
|
||||
}
|
||||
|
||||
public static async updateCe(roleId: string, hid: number, ce: number, oldCe: number, historyCe: number, lean = true) {
|
||||
let distance = ce - oldCe;
|
||||
let historyDistance = ce > historyCe ? ce - historyCe : 0;
|
||||
let result: HeroType = await HeroModel.findOneAndUpdate({ roleId, hid }, { $inc: { ce: distance, historyCe: historyDistance } }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string) {
|
||||
let result = await HeroModel.deleteMany({ roleId });
|
||||
return result;
|
||||
|
||||
@@ -17,6 +17,10 @@ export class HeroAttr {
|
||||
lv: number;
|
||||
@prop({ required: true, type: () => AttrCell, _id: false })
|
||||
attrs: AttrCell[];
|
||||
@prop({ required: true })
|
||||
historyCe: number;
|
||||
@prop({ required: true })
|
||||
objectId: string;
|
||||
}
|
||||
|
||||
export class EquipAttr {
|
||||
@@ -78,7 +82,7 @@ export default class RoleCe extends BaseModel {
|
||||
scrollAttrs: ScrollAttr[];
|
||||
|
||||
public static async findByRoleId(roleId: string) {
|
||||
let result: RoleCeType = await RoleCeModel.findOne({ roleId }).lean();
|
||||
let result: RoleCeType = await RoleCeModel.findOneAndUpdate({ roleId }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ export class HeroParam {
|
||||
exp: number; // 经验值
|
||||
lv: number; // 武将等级
|
||||
ce: number; // 武将战力
|
||||
historyCe: number; // 武将历史最高战力
|
||||
star: number; // 星级
|
||||
starStage: number; // 星级六维阶段
|
||||
colorStar: number; // 觉醒, 彩星
|
||||
@@ -76,10 +75,8 @@ export class HeroParam {
|
||||
this.lv = hero.lv;
|
||||
if(hero.isReducedCe) {
|
||||
this.ce = hero.ce;
|
||||
this.historyCe = hero.historyCe;
|
||||
} else {
|
||||
this.ce = reduceCe(hero.ce);
|
||||
this.historyCe = reduceCe(hero.historyCe);
|
||||
}
|
||||
this.star = hero.star;
|
||||
this.starStage = hero.starStage;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,8 @@ import { Floor } from '../domain/activityField/gachaField';
|
||||
import { WhiteListModel } from '../db/RegionWhiteList';
|
||||
import { RewardInter } from './interface';
|
||||
import { RoleType } from '../db/Role';
|
||||
import { RoleCeModel } from '../db/RoleCe';
|
||||
import { CalCe } from '../services/role/calCe';
|
||||
const randomName = require("chinese-random-name");
|
||||
const moment = require('moment');
|
||||
const crypto = require('crypto');
|
||||
@@ -115,18 +117,6 @@ export function decodeIdCntArrayStr(str: string, multi: number) {
|
||||
return strMap;
|
||||
}
|
||||
|
||||
// 计算当前武将战力
|
||||
export async function calculateSumCE(roleId: string, type: number, param: { num?: number, heroes?: Array<number> }) {
|
||||
let sum: number;
|
||||
if (type == 1) { // 最高num人历史最高战力和
|
||||
sum = await HeroModel.sumTopHeroCe(roleId, param.num || 0);
|
||||
} else if (type == 2) { // 所有人战力和
|
||||
sum = await HeroModel.sumHeroCe(roleId);
|
||||
}
|
||||
sum = reduceCe(sum);
|
||||
return sum;
|
||||
}
|
||||
|
||||
/**
|
||||
* 传入两个时间,返回按照时间差计算,第二个时间比第一个晚几天
|
||||
* @param preTime 之前的时间
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
"turnLimted": 20,
|
||||
"forcedCharactor": "&",
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "1.消灭所有敌军\r\n2.死亡的村民数量≤2\r\n3.剩下的村民都到达洞口",
|
||||
"loseInfoInUI": "1.我方全部阵亡\r\n2.死亡的村民数量≥3\r\n3.20回合内未能胜利",
|
||||
"victoryInfoInUI": "1.消灭所有敌军\n2.死亡的村民数量≤2\n3.剩下的村民都到达洞口",
|
||||
"loseInfoInUI": "1.我方全部阵亡\n2.死亡的村民数量≥3\n3.20回合内未能胜利",
|
||||
"starInfoInUI": "1.在20回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&qingnian",
|
||||
@@ -30,7 +30,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 循着不详的气息,赵云一行人来到了一座神秘的小村庄。老人们说,他们是为了躲避连年战乱才来此地。\r\n 想不到即使是在这里,也藏着不为人知的阴谋……\r\n 这些阴兵,究竟由谁招来?山林里还有恶兽蠢蠢欲动……\r\n",
|
||||
"gkInfo": " 循着不详的气息,赵云一行人来到了一座神秘的小村庄。老人们说,他们是为了躲避连年战乱才来此地。\n 想不到即使是在这里,也藏着不为人知的阴谋……\n 这些阴兵,究竟由谁招来?山林里还有恶兽蠢蠢欲动……\n",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "1&0|2&0",
|
||||
"progressDesc": "已逃走的百姓数量&被击杀的百姓数量",
|
||||
@@ -52,8 +52,8 @@
|
||||
"turnLimted": 20,
|
||||
"forcedCharactor": "&",
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "1.消灭所有敌军\r\n2.解救所有被绑架的村民\r\n",
|
||||
"loseInfoInUI": "1.我方全部阵亡\r\n2.20回合内未能胜利",
|
||||
"victoryInfoInUI": "1.消灭所有敌军\n2.解救所有被绑架的村民\n",
|
||||
"loseInfoInUI": "1.我方全部阵亡\n2.20回合内未能胜利",
|
||||
"starInfoInUI": "1.在20回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&yinbingdao&1",
|
||||
@@ -67,7 +67,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 赵云一行人刚将村中的百姓带入山洞避难,一位急急忙忙寻找妻子的青年便找上门来。\r\n 洞内仍有不少以往百姓为了躲避战乱设下的陷阱,可务必要当心!\r\n 也许在这昏暗的洞穴里,点燃火炬一路小心前行,才是上策。",
|
||||
"gkInfo": " 赵云一行人刚将村中的百姓带入山洞避难,一位急急忙忙寻找妻子的青年便找上门来。\n 洞内仍有不少以往百姓为了躲避战乱设下的陷阱,可务必要当心!\n 也许在这昏暗的洞穴里,点燃火炬一路小心前行,才是上策。",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "1&0|6&0",
|
||||
"progressDesc": "已解救的百姓数量&待解救的百姓数量",
|
||||
@@ -104,7 +104,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 诡异的阴兵,神秘的阴珠,残忍的血法……从巨鹿废墟到山林小村,一个巨大的阴谋似乎一直笼罩在冀州的上空。\r\n 现在赵云一行人终于来到了最后的祭坛,即将揭开这一切的始作俑者……",
|
||||
"gkInfo": " 诡异的阴兵,神秘的阴珠,残忍的血法……从巨鹿废墟到山林小村,一个巨大的阴谋似乎一直笼罩在冀州的上空。\n 现在赵云一行人终于来到了最后的祭坛,即将揭开这一切的始作俑者……",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "&",
|
||||
"progressDesc": "&",
|
||||
@@ -128,7 +128,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "\r\n1.在20回合内获得胜利",
|
||||
"starInfoInUI": "\n1.在20回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&qingnian",
|
||||
"iconName": "井底世界",
|
||||
@@ -141,7 +141,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 在枯井的周围,一群宫女装扮的幽鬼盘亘。\r\n 原来,这些是洛阳被焚毁时,惨死于皇宫中的宫女,因为长久以来的怨气而化为幽鬼,她们憎恨一切活着的人类。\r\n 小心!她们来了!",
|
||||
"gkInfo": " 在枯井的周围,一群宫女装扮的幽鬼盘亘。\n 原来,这些是洛阳被焚毁时,惨死于皇宫中的宫女,因为长久以来的怨气而化为幽鬼,她们憎恨一切活着的人类。\n 小心!她们来了!",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "&",
|
||||
"progressDesc": "&",
|
||||
@@ -178,7 +178,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 枯井的尽头是一条大门,出于好奇,赵云一行人穿越幽暗的隧道,来到大门前。\r\n 吱呀——推开大门,原来这里是一片墓室。\r\n 在昏黄的烛火中,他们看到了一群没有意识的侍卫,还有一个没有头颅的巨大身影……",
|
||||
"gkInfo": " 枯井的尽头是一条大门,出于好奇,赵云一行人穿越幽暗的隧道,来到大门前。\n 吱呀——推开大门,原来这里是一片墓室。\n 在昏黄的烛火中,他们看到了一群没有意识的侍卫,还有一个没有头颅的巨大身影……",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "&",
|
||||
"progressDesc": "&",
|
||||
@@ -202,7 +202,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在30回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在30回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&zhangjiao",
|
||||
"iconName": "何后废陵",
|
||||
@@ -215,7 +215,7 @@
|
||||
"needPrepare": 1,
|
||||
"spineInBigMap": "&",
|
||||
"HeroNum": "6&6",
|
||||
"gkInfo": " 何太后身材窈窕,风流妩媚,进宫之后更是凭借自身的心计一步步征服了汉灵帝的心。然其天性善妒,刘协出生后,感到自身地位动摇的何太后用鸩酒毒杀了王美人。\r\n 天道有轮回,外戚与宦官相争,何进身死,董卓进京,何太后也被逼饮下毒酒。\r\n 陵墓尽头,彼岸花开,何太后已超脱生死,可千万别停留在这里!",
|
||||
"gkInfo": " 何太后身材窈窕,风流妩媚,进宫之后更是凭借自身的心计一步步征服了汉灵帝的心。然其天性善妒,刘协出生后,感到自身地位动摇的何太后用鸩酒毒杀了王美人。\n 天道有轮回,外戚与宦官相争,何进身死,董卓进京,何太后也被逼饮下毒酒。\n 陵墓尽头,彼岸花开,何太后已超脱生死,可千万别停留在这里!",
|
||||
"HeroNum_1": "1&6",
|
||||
"progress": "&",
|
||||
"progressDesc": "&",
|
||||
@@ -239,7 +239,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&guanhai",
|
||||
"iconName": 0,
|
||||
@@ -276,7 +276,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&caosong",
|
||||
"iconName": 0,
|
||||
@@ -313,7 +313,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&zhangrang",
|
||||
"iconName": 0,
|
||||
@@ -350,7 +350,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&qingnian",
|
||||
"iconName": 0,
|
||||
@@ -387,7 +387,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&yinbingdao",
|
||||
"iconName": 0,
|
||||
@@ -424,7 +424,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&zhangjiao",
|
||||
"iconName": 0,
|
||||
@@ -461,7 +461,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&qingnian",
|
||||
"iconName": 0,
|
||||
@@ -498,7 +498,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&yinbingdao",
|
||||
"iconName": 0,
|
||||
@@ -535,7 +535,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&zhangjiao",
|
||||
"iconName": 0,
|
||||
@@ -572,7 +572,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&wangcan",
|
||||
"iconName": 0,
|
||||
@@ -609,7 +609,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&yanshi",
|
||||
"iconName": 0,
|
||||
@@ -646,7 +646,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&sengren",
|
||||
"iconName": 0,
|
||||
@@ -683,7 +683,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&qingnian",
|
||||
"iconName": "武陵顽猴",
|
||||
@@ -720,7 +720,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 10,
|
||||
"iconInMap": "spine&yinbingdao",
|
||||
"iconName": "桃源疫民",
|
||||
@@ -757,7 +757,7 @@
|
||||
"fobiddenCharactor": "&",
|
||||
"victoryInfoInUI": "消灭所有敌军",
|
||||
"loseInfoInUI": "我方全部阵亡",
|
||||
"starInfoInUI": "1.我方无人阵亡;\r\n2.在5回合内获得胜利",
|
||||
"starInfoInUI": "1.我方无人阵亡;\n2.在5回合内获得胜利",
|
||||
"cost": 30,
|
||||
"iconInMap": "spine&zhangjiao",
|
||||
"iconName": "西夷疫魔",
|
||||
|
||||
Reference in New Issue
Block a user