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!
- 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!
This was planned from the beginning, but I gave it a few months to make
sure people who accidentally used the wrong one wouldn't be confused in
the interim.
No one should have the reflex to use /ban for global bans by now, so
this should be a safe time to do the rename.