战力:替换新方法

This commit is contained in:
陆莹
2022-03-26 19:19:51 +08:00
parent 68e4d2232d
commit f35af70adc
18 changed files with 1294 additions and 1249 deletions

View File

@@ -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, // (职业)训练

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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 之前的时间

View File

@@ -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": "西夷疫魔",