This both allows staff to lock users that are offline, given they have a previous punishment (globally or in any room)
This also will utilize existing punishment information for handling nameblacklists, making a nameblacklist of a user with a current punishment equivalent to having used /blacklist at the moment of that punishment
When a user is spamming, often times they are doing so under several accounts. When this happens, a staff member has to manually hide each alts messages in the room, which takes up one line of the chat for each alt. This command makes these cases easier and less-spammy for the chat.
The new FS module is an abstraction layer over the built-in fs module.
The main reason it exists is because I need an abstraction layer I can
disable writing from. But that'll be in another commit.
Currently, mine is better because:
- paths are always relative to PS's base directory
- Promises (seriously wtf Node Core what are you thinking)
- PS-style API: FS("foo.txt").write("bar") for easier argument order
- mkdirp
This also increases the minimum supported Node version from v6.0 to
v7.7, because we now use async/await. Sorry for the inconvenience!
This also drops the mock-fs-require-fix dependency
mock-fs-require-fix was always kind of a huge hack. It's no longer
necessary, with an FS API that does everything it used to.
This removes a lot of other hacks from test/main.js, which is nice.
- Allow /expiringblacklists to show the list of blacklists that are expiring within 3 months or less
- Add /nameblacklist as an alias to /blacklistname and document it
- Change /blacklist and /blacklistname modlog text to say "from room title" to mirror roombans modlog UI
Normally when you do /owner it gives 'did you mean /roomowner or /globalowner?' However global room owner doesn't exist as owner is a room owner rank. This PR fixes this issue.
Sorry for the bad pr name, I'm still kinda new to contributing here.
This allows for when the server is in lockdown, and the final battle finishes, for the server to automatically kill itself.
- Setting Config.autolockdown to false will turn this off.
- This also adds a new command to toggle Config.autolockdown
- This also introduces Rooms.global.notifyRooms
This is a surprisingly minor refactor considering how many files it
touches, but most of this is only renames.
In terms of file renames:
- `tools.js` is now `sim/dex.js`
- `battle-engine.js` is now `sim/index.js` and its three classes are
in `sim/battle.js`, `sim/side.js`, and `sim/pokemon.js`
- `prng.js` is now `sim/prng.js`
In terms of variable renames:
- `Tools` is now `Dex`
- `BattleEngine` is now `Sim`
- `BattleEngine.Battle` is now `Sim.Battle`
- `BattleEngine.BattleSide` is now `Sim.Side`
- `BattleEngine.BattlePokemon` is now `Sim.Pokemon`
- tac isn't installed by default on OS X and flavours of BSD, which would
cause /modlog to fail in certain cases, so awk is used instead for them
- running /modlog all or /modlog public with a number of lines to
return rather than a string to query with now replies with an error
instead of treating "all" or "public" as literal rooms and trying to
read their modlog files
This commit removes all timer code from rooms.js, and adds a new
BattleTimer class to room-battle.js which handles timers. In theory,
the timer is able to be used in other roomgames, but several parts may
need to be rewritten for that.
The new BattleTimer has nicer code, and also fixes#3438
* Matchmaking: move battle logging back to Rooms.global
For now, logging should be dealt by the global room until logging can be
abstracted away from it. This makes it simpler to refactor the logic in
Matchmaker#startBattle to be handled by Rooms.createBattle where it belongs.
* Matchmaking: use Matchmaker#cancelSearch format parametre
Optimizes cancelling searches if the format is known
This abstracts matchmaking logic from the global room away to its own
module, allowing the two to be decoupled from each other entirely with
some refactoring.
Related to #3361
No one has reported its brokenness in ever! I guess I'm the only one
who scripts learnset changes with /eval...
Coming up next: A learnset change scripted using /eval!