军团活动:修改诸侯混战城门血量计算公式
This commit is contained in:
@@ -186,7 +186,7 @@ export class CityActivityHandler {
|
||||
const dbCities = await GuildActivityCityModel.getAllCities(serverId);
|
||||
let cityStatus = pubGetCityStatus(guildCode, cityId, dicCity, dbCities);
|
||||
// 全服活跃统计
|
||||
await ServerRecordModel.addActiveGuild(serverId, guildCode);
|
||||
await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
|
||||
|
||||
// 任务
|
||||
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
|
||||
|
||||
@@ -92,7 +92,7 @@ export class GateActivityHandler {
|
||||
let r = new Rank(REDIS_KEY.GATE_ACTIVITY, { serverId }, true);
|
||||
let guildScore = await r.getMyScore({ guildCode });
|
||||
// 全服活跃统计
|
||||
await ServerRecordModel.addActiveGuild(serverId, guildCode);
|
||||
await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
|
||||
|
||||
// 任务
|
||||
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
|
||||
|
||||
@@ -106,7 +106,7 @@ export class RaceActivityHandler {
|
||||
await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.GUILD_RACE_JOIN, { timestamp: Date.now(), woodenHorse });
|
||||
|
||||
// 全服活跃统计
|
||||
await ServerRecordModel.addActiveGuild(serverId, guildCode);
|
||||
await ServerRecordModel.addActiveGuild(serverId, roleId, guildCode);
|
||||
// 任务
|
||||
await checkTask(serverId, roleId, sid, TASK_TYPE.GUILD_ACTIVITY, { aid: this.aid });
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import { ActivePlayer, GuildRecord, ServerRecordModel } from "../../db/ServerRec
|
||||
import { Attack } from "../../domain/battleField/pvp";
|
||||
import { getHonourObject } from "../role/rewardService";
|
||||
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "../pushService";
|
||||
import { saveGuildGateHpLog } from "../../pubUtils/logUtil";
|
||||
|
||||
let gateActivityObj: GateActivityObject;
|
||||
let cityActivityObj: CityActivityObject;
|
||||
@@ -780,12 +781,15 @@ export async function getCityActivityGateHp(serverId: number, cityId: number) {
|
||||
let serverRecord = await ServerRecordModel.findTodayData(serverId);
|
||||
if(!serverRecord) return dicCityActivity.hp;
|
||||
|
||||
let activePlayerCnt = 1, activePlayerCe = 0, activeTopPlayerCnt = 1, activeGuildCnt = 1;
|
||||
let activePlayerCnt = 50; // 前一天参与军团活动的玩家
|
||||
let activeGuildCnt = 5; // 前一天参与军团活动的军团
|
||||
let activePlayerCe = 0; // 前一天前十玩家的最强战力和
|
||||
let activeTopPlayerCnt = 1; // 前一天最强玩家数量
|
||||
if(serverRecord) {
|
||||
if(serverRecord.activePlayerCnt > 0) activePlayerCnt = serverRecord.activePlayerCnt;
|
||||
if(serverRecord.activePlayerCe > 0) activePlayerCe = serverRecord.activePlayerCe;
|
||||
if(serverRecord.activePlayers?.length > 0) activeTopPlayerCnt = serverRecord.activePlayers?.length;
|
||||
if(serverRecord.activeGuildCodes?.length > 0) activeGuildCnt = serverRecord.activeGuildCodes?.length;
|
||||
if(serverRecord.activeGuildMembers?.length > 0) activePlayerCnt = serverRecord.activeGuildMembers?.length;
|
||||
}
|
||||
console.log(`getCityActivityGateHp: activePlayerCnt ${activePlayerCnt}, activePlayerCe ${activePlayerCe}, activeTopPlayerCnt ${activeTopPlayerCnt} activeGuildCnt ${activeGuildCnt}`);
|
||||
|
||||
@@ -803,6 +807,9 @@ export async function getCityActivityGateHp(serverId: number, cityId: number) {
|
||||
let gateHp = Math.floor(gateHpBase * (activePlayerCnt/activeGuildCnt) * N);
|
||||
console.log(`getCityActivityGateHp: gateHp ${gateHp}`);
|
||||
|
||||
|
||||
saveGuildGateHpLog(serverId, cityId, { activePlayerCnt, activePlayerCe, activeTopPlayerCnt, activeGuildCnt, atk, A, hpBase: gateHpBase, N, gateHp });
|
||||
|
||||
if(gateHp <= dicCityActivity.hp) {
|
||||
gateHp = dicCityActivity.hp;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import { GUILDACTIVITY } from '../pubUtils/dicParam';
|
||||
import { ServerRecordModel } from '../db/ServerRecords';
|
||||
import { sendMessageToGuildWithSuc, sendMessageToUsersWithSuc } from './pushService';
|
||||
import { AttributeCal } from '../domain/roleField/attribute';
|
||||
import { saveGuildBossHpLog } from '../pubUtils/logUtil';
|
||||
|
||||
/**
|
||||
* 获得boss界面
|
||||
@@ -231,6 +232,7 @@ export async function getBossHp(serverId: number, guildCode: string, dicBossBase
|
||||
bossHp = minBossHp;
|
||||
}
|
||||
console.log(`getBossHp B ${B}`);
|
||||
saveGuildBossHpLog(serverId, warId, guildCode, { minBossHp, bossHpRatio, hp, activeCe, playerCnt, subCe, B, bossHp })
|
||||
return { ratio: B, bossHp: zoomInDamage(bossHp) };
|
||||
}
|
||||
|
||||
|
||||
@@ -1092,6 +1092,8 @@ export enum LOG_TYPE {
|
||||
PAY = 'pay', // 充值
|
||||
ITEM_CHANGE = 'itemChange', // 道具变动
|
||||
RECEIVE_MAIL = 'receiveMail', // 领取邮件
|
||||
GATE_HP = 'gateHp', // 诸侯混战城门
|
||||
BOSS_HP = 'bossHp', // 演武台boss血量
|
||||
}
|
||||
|
||||
export enum CE_CHANGE_REASON {
|
||||
|
||||
@@ -53,6 +53,9 @@ export default class ServerRecord extends BaseModel {
|
||||
@prop({ required: true, type: String, default: [] })
|
||||
activeGuildCodes: string[]; // 前一天参与军团活动的军团
|
||||
|
||||
@prop({ required: true, type: String, default: [] })
|
||||
activeGuildMembers: string[]; // 前一天参与军团活动的玩家
|
||||
|
||||
@prop({ required: true, type: GuildRecord, _id: false })
|
||||
activeGuilds: GuildRecord[];
|
||||
|
||||
@@ -62,9 +65,9 @@ export default class ServerRecord extends BaseModel {
|
||||
return rec;
|
||||
}
|
||||
|
||||
public static async addActiveGuild(serverId: number, guildCode: string) {
|
||||
public static async addActiveGuild(serverId: number, roleId: string, guildCode: string) {
|
||||
let tomorrow = getZeroPoint() + 86400;
|
||||
let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today: tomorrow }, { $addToSet: { activeGuildCodes: guildCode } }, { new: true, upsert: true }).lean();
|
||||
let rec: ServerRecordType = await ServerRecordModel.findOneAndUpdate({ serverId, today: tomorrow }, { $addToSet: { activeGuildCodes: guildCode, activeGuildMembers: roleId } }, { new: true, upsert: true }).lean();
|
||||
return rec;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,46 @@ class MalReward {
|
||||
count: number;
|
||||
}
|
||||
|
||||
export class GateHpLog {
|
||||
@prop({ required: false })
|
||||
activePlayerCnt: number;
|
||||
@prop({ required: false })
|
||||
activePlayerCe: number;
|
||||
@prop({ required: false })
|
||||
activeTopPlayerCnt: number;
|
||||
@prop({ required: false })
|
||||
activeGuildCnt: number;
|
||||
@prop({ required: false })
|
||||
atk: number;
|
||||
@prop({ required: false })
|
||||
A: number;
|
||||
@prop({ required: false })
|
||||
hpBase: number;
|
||||
@prop({ required: false })
|
||||
N: number;
|
||||
@prop({ required: false })
|
||||
gateHp: number;
|
||||
}
|
||||
|
||||
export class BossHpLog {
|
||||
@prop({ required: false })
|
||||
minBossHp: number;
|
||||
@prop({ required: false })
|
||||
bossHpRatio: number;
|
||||
@prop({ required: false })
|
||||
hp: number;
|
||||
@prop({ required: false })
|
||||
activeCe: number;
|
||||
@prop({ required: false })
|
||||
playerCnt: number;
|
||||
@prop({ required: false })
|
||||
subCe: number;
|
||||
@prop({ required: false })
|
||||
B: number;
|
||||
@prop({ required: false })
|
||||
bossHp: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家充值订单
|
||||
*/
|
||||
@@ -19,16 +59,16 @@ export default class UserLog extends BaseModel {
|
||||
@prop({ required: true })
|
||||
type: string; // 类型 LOG_TYPE
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: false })
|
||||
uid: number; // uid
|
||||
|
||||
@prop({ required: true })
|
||||
serverId: number; // 小区id
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: false })
|
||||
roleId: string; // 角色id
|
||||
|
||||
@prop({ required: true })
|
||||
@prop({ required: false })
|
||||
roleName: string; // 角色名
|
||||
|
||||
@prop({ required: false })
|
||||
@@ -101,6 +141,22 @@ export default class UserLog extends BaseModel {
|
||||
@prop({ required: false })
|
||||
mailSendName: string; // 邮件发件人
|
||||
|
||||
// 诸侯混战城门血条记录
|
||||
@prop({ required: false })
|
||||
cityId: number; // 城id
|
||||
|
||||
@prop({ required: false, type: GateHpLog, _id: false })
|
||||
gateHp: GateHpLog; // 诸侯混战血量参数
|
||||
|
||||
// 军团boss血量记录
|
||||
@prop({ required: false })
|
||||
guildCode: string; // 军团code
|
||||
|
||||
@prop({ required: false })
|
||||
warId: number; // 城id
|
||||
|
||||
@prop({ required: false, type: BossHpLog, _id: false })
|
||||
bossHp: BossHpLog; // 诸侯混战血量参数
|
||||
|
||||
public static async createRecord(params: UserLogModelTypeParam) {
|
||||
const r = await UserLogModel.insertMany(params);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ACTIVITY_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SYSTEM_TYPE, LOG_TYPE } from "../consts";
|
||||
import { RoleModel, RoleType, RoleUpdate } from "../db/Role";
|
||||
import { UserLogModel } from "../db/UserLog";
|
||||
import { UserLogModel, GateHpLog, BossHpLog } from "../db/UserLog";
|
||||
import { UserOrderModelType } from "../db/UserOrder";
|
||||
import { Figure } from "../domain/dbGeneral";
|
||||
import { MailParam } from "../domain/roleField/mail";
|
||||
@@ -109,4 +109,20 @@ export async function saveMailLog(session: any, mails: MailParam[]) {
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
export async function saveGuildGateHpLog(serverId: number, cityId: number, log: GateHpLog) {
|
||||
try {
|
||||
await UserLogModel.createRecord({ type: LOG_TYPE.GATE_HP, serverId, cityId, gateHp: log });
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
export async function saveGuildBossHpLog(serverId: number, warId: number, guildCode: string, log: BossHpLog) {
|
||||
try {
|
||||
await UserLogModel.createRecord({ type: LOG_TYPE.BOSS_HP, serverId, warId, guildCode, bossHp: log });
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user