mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-08-04 00:41:56 +02:00
Add door stats & new mini format styles
+ Door runs stat + Door run minutes stat + Door runs MCI + Door run friendly duration MCI + durationHours/Minutes/Seconds mini format styles
This commit is contained in:
parent
9d39e99c5a
commit
22b7fdd65c
6 changed files with 116 additions and 0 deletions
|
@ -8,12 +8,15 @@ const theme = require('./theme.js');
|
|||
const ansi = require('./ansi_term.js');
|
||||
const Events = require('./events.js');
|
||||
const { Errors } = require('./enig_error.js');
|
||||
const StatLog = require('./stat_log.js');
|
||||
const UserProps = require('./user_property.js');
|
||||
|
||||
// deps
|
||||
const async = require('async');
|
||||
const assert = require('assert');
|
||||
const _ = require('lodash');
|
||||
const paths = require('path');
|
||||
const moment = require('moment');
|
||||
|
||||
const activeDoorNodeInstances = {};
|
||||
|
||||
|
@ -149,6 +152,7 @@ exports.getModule = class AbracadabraModule extends MenuModule {
|
|||
}
|
||||
|
||||
runDoor() {
|
||||
StatLog.incrementUserStat(this.client.user, UserProps.DoorRunTotalCount, 1);
|
||||
Events.emit(Events.getSystemEvents().UserRunDoor, { user : this.client.user } );
|
||||
|
||||
this.client.term.write(ansi.resetScreen());
|
||||
|
@ -164,7 +168,15 @@ exports.getModule = class AbracadabraModule extends MenuModule {
|
|||
node : this.client.node,
|
||||
};
|
||||
|
||||
const startTime = moment();
|
||||
|
||||
this.doorInstance.run(exeInfo, () => {
|
||||
const endTime = moment();
|
||||
const runTimeMinutes = Math.floor(moment.duration(endTime.diff(startTime)).asMinutes());
|
||||
if(runTimeMinutes > 0) {
|
||||
StatLog.incrementUserStat(this.client.user, UserProps.DoorRunTotalMinutes, runTimeMinutes);
|
||||
}
|
||||
|
||||
//
|
||||
// Try to clean up various settings such as scroll regions that may
|
||||
// have been set within the door
|
||||
|
|
|
@ -155,6 +155,12 @@ const PREDEFINED_MCI_GENERATORS = {
|
|||
AC : function achievementCount(client) { return userStatAsString(client, UserProps.AchievementTotalCount, 0); },
|
||||
AP : function achievementPoints(client) { return userStatAsString(client, UserProps.AchievementTotalPoints, 0); },
|
||||
|
||||
DR : function doorRuns(client) { return userStatAsString(client, UserProps.DoorRunTotalCount, 0); },
|
||||
DM : function doorFriendlyRunTime(client) {
|
||||
const minutes = client.user.properties[UserProps.DoorRunTotalMinutes] || 0;
|
||||
return moment.duration(minutes, 'minutes').humanize();
|
||||
},
|
||||
|
||||
//
|
||||
// Date/Time
|
||||
//
|
||||
|
|
|
@ -14,6 +14,7 @@ const {
|
|||
|
||||
// deps
|
||||
const _ = require('lodash');
|
||||
const moment = require('moment');
|
||||
|
||||
/*
|
||||
String formatting HEAVILY inspired by David Chambers string-format library
|
||||
|
@ -281,6 +282,10 @@ const transformers = {
|
|||
countWithAbbr : (n) => formatCount(n, true, 0),
|
||||
countWithoutAbbr : (n) => formatCount(n, false, 0),
|
||||
countAbbr : (n) => formatCountAbbr(n),
|
||||
|
||||
durationHours : (h) => moment.duration(h, 'hours').humanize(),
|
||||
durationMinutes : (m) => moment.duration(m, 'minutes').humanize(),
|
||||
durationSeconds : (s) => moment.duration(s, 'seconds').humanize(),
|
||||
};
|
||||
|
||||
function transformValue(transformerName, value) {
|
||||
|
|
|
@ -50,6 +50,9 @@ module.exports = {
|
|||
MessageAreaTag : 'message_area_tag',
|
||||
MessagePostCount : 'post_count',
|
||||
|
||||
DoorRunTotalCount : 'door_run_total_count',
|
||||
DoorRunTotalMinutes : 'door_run_total_minutes',
|
||||
|
||||
AchievementTotalCount : 'achievement_total_count',
|
||||
AchievementTotalPoints : 'achievement_total_points',
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue