The penultimate1 release to improve room scripting before I finally feel I can move on to other things for a while.
This time, I’ve tackled a big one. A lot of hours spent (and quite a bit of mental crowbarring and a near total rewrite of the command parsing system), I’ve finally got it to work in a way I am satisfied with.
So, let’s welcome custom commands!
1. Next release, I hope to wrap things up with more GUI, better documentation, private describes, messaging with external scripts, and making room scripting available for everyone, not just supporters.
Features
Custom commands
It is now possible for room scripts to add commands that will be available for characters in the room:
The following script instruction:
Room.addCommand(
"addBulletin",
new Command("add bulletin <Title> = <Message>", "Add an entry to the _bulletin board_.")
.field("Title", new Field.Text("Title of bulletin entry")
.setMaxLength(20)
)
.field("Message", new Field.Text("Message of bulletin entry")
.setSpanLines(true)
.setFormatText(true)
),
);
Will result in a new command listed under the Room info panel:
To list room commands in the chat log, type:
list commands
To show help for a single command, refer to the words it contains (not <Fields> or symbols like “=”):
help add bulletin
Custom commands enable us to send parsed, structured, and validated input from characters to our scripts, without having to listen to other room communication.
For anyone wanting to try scripting with custom commands, look at the following resources:
- Mucklet Script - Quick start
- Mucklet Script - Script examples (intercom_inside.ts and lock_inside.ts uses custom commands)
- Writing scripts - Custom Commands
More resource will come. For now, this is what we have.
Console mode setting
A toggle option has been added under Player Settings (Click the cog-icon at the bottom of the far left panel) that allows setting the Console input mode:
The default Auto setting has also been improved to detect mobile devices by using device info (navigator.userAgent) rather than the previous way of checking if the device was touch-capable (which caused unwanted behaviour for laptops with touch screens).
Account recovery without verified email address
It is now possible to recover an account even if the e-mail address isn’t verified.
In case of non-verified email addresses, the username is not included in the account recovery email:
The Reset password page that follows requires you to know either Account name or a Character owned by the account:
In case of using Realm / Character as identification, you will be shown your username, and your email address will be marked as verified:
GitHub issue #351 - PasswordReset with proof
Improvements
Report deleted characters
It is now possible to report deleted characters through the Report message log menu. This is meant to counter abuse where players create a character, sends messages, and then deletes their character to avoid being reported.
Thanks to @Aoineko13 for bringing up the issue in this thread!
GitHub issue #349 - Snapshots of deleted characters
Using mucklet-script as compiler
The server now uses the mucklet-script npm package to build scripts instead of directly using AssemblyScript’s compiler.
Auto-update geo location database
Geo location info, used to geo locate payments from supporters in order to determine which tax laws applies, are now updated on a regular basis from ip2location.com.
Auto-update IP proxy database
In a similar way, the IP proxy information used to help moderators by flagging characters on new accounts that are connected through VPNs or similar, is now updated on a regular basis.
It is configured to use multiple sources for different types of proxies such as, VPNs, Public proxies, or Tor exit nodes.
It is prepared to work with ip2proxy.com, but that database is far to expensive for us right now.
Stop lead and stop follow hints
The help text for the lead
and follow
commands has been improved by adding info on how to stop lead/follow. See:
help lead
help follow
Thanks to @Chiaroscuro (right? I lost my notes on this) for pointing it out!
GitHub issue #355 - Stop lead and stop follow hints