-
-
Notifications
You must be signed in to change notification settings - Fork 27
Automatic dodo online session restoring
SysBot.ACNHOrders includes a mode that restores the online sessions after a network crash (eg after someone leaves quietly or crashes during their arrival animation). It is best used with endless treasure islands, you may freeze your island's items such that they replenish on fly-in for other users while using the orderbot, so that no input is required from you.
It also allows the dropping of any item, as well as villager injections. Please see the bottom of this page for commands.
Watch this video to see this functionality in action.
To do this, you must set up the OrderBot like usual, with all anchors in place. Your drop position anchor (anchor 1) should be where you want to be teleported after the session is restored: https://github.com/berichan/SysBot.ACNHOrders/wiki/Discord-bot-setup
Once you have setup the bot, follow the instructions below.
Prior to starting, ensure you have frozen your island's items/villagers/turnip prices using ACNHMobileSpawner and my modified sys-botbase if you are using this functionality.
- Start your game, wait either somewhere on your map (not in the airport or in a building!).
- In your config.json, change the "LimitedDodoRestoreOnlyMode" value to true. See below for customization
- The bot will automatically create an online session for you by talking to Orville and fetching a dodo code.
From this point on, if the online session ends then then bot will try to get a new one (endlessly, until it succeeds)
The dodo code will be saved to a file called "Dodo.txt" and the villager list in "Villagers.txt" in the executable folder, unless you decide to change the path.
These config values can be found in the config.json under "DodoRestoreConfig":
-
LimitedDodoRestoreOnlyMode: Set this to true to turn on the automatic dodo mode restoration.
- Orders will not work in this mode, the bot will try to fetch a new dodo code if the online session crashes.
-
DodoRestoreFilename: The filename where the new dodo code will be written to.
- Hook this to your OBS window or whatever else you want to keep the dodo code updates for your viewers/visitors.
-
VisitorFilename: The filename where the visitor count will be written to.
- As above, hook in when needed.
-
MinimizeDetails: Whether or not we should minimize the amount of text written to the dodo/visitor files.
- This will also remove the town name for the dodo code file.
-
EchoDodoChannels: Channel IDs where the new dodo code will be posted. Can be left blank.
- Use Discord developer mode to view channel IDs.
-
EchoArrivalChannels: Channel IDs where new arrivals will be posted. Can be left blank.
- Use Discord developer mode to view channel IDs.
-
EchoIslandUpdateChannels: Channel IDs where island updates (such as NHL cycles) will be posted. Can be left blank.
- Use Discord developer mode to view channel IDs.
-
RefreshMap: Turning this on will refresh the map manually on fly-in of new visitors.
- There's no need to turn this on if you've already frozen your map using ACNHMS
-
FreezeMap: Turning this on will freeze the layer 1 (item layer) of your map perpetually.
- Freeze will remain even after the application quits, use the
unfreezeAll
discord command to remove it. This will NOT work alongside RefreshMap for obvious reasons, nor will it work with the drop functionality.
- Freeze will remain even after the application quits, use the
-
RefreshTerrainData: When set to true, restore mode will also refresh the terrain + elevation.
- Requires refresh map to be set to true.
-
AllowDrop: When set to true, and while accepting commands, allow the use of the item dropper.
- This is NOT the same item dropper as SysBot.AnimalCrossing. Bugs, fish, flowers, almost anything can be dropped.
-
PostDodoCodeWithNewArrivals: Whether to append the dodo code to arrival messages. Set to true if you'd like this.
- Only really useful if chat is going fast and the dodo gets lost in the sea of people.
-
SetStatusAsDodoCode: Set this to true to have the bot's status update whenever there's a dodo code update/restore
- Everyone who can see the bot will be able to see the dodo code, so use this functionality wisely.
- ReinjectMovedOutVillagers: When set to true, the bot will reinject lost villagers while running from the bot's own villager database.
-
DodoFontPercentageSize: Change the percentage of the dodo code font size if using the fancy dodo code renderer.
- Scroll to the bottom of this page to view usage.
-
MashB: Set this to true if you'd like to encertain that the bot processes any dialogue or events (such as morning announcements).
- You may manually toggle this on/off using $toggleMashB if you need to take control of your bot manually. Mash B automatically turns off during normal functionality (eg while dropping items or talking to orville to fetch a dodo code)
-
AutoNewDodoTimeMinutes: When set to anything above -1, the bot will automatically fetch a new dodo every x minutes if the island has no visitors.
- If you have one person on your island at a time, set this to your island time limit and you'll get a new dodo code every time your visitor leaves.
- CycleNHLs: When set to true this will cycle through item layers using the below interval.
- CycleNHLMinutes: The amount of time in minutes to wait between cycles. Set this to -1 to cycle through NHLs daily at midnight local time.
- $visitorList: Prints the current list of visitors currently on the island.
- $sendDodo: DMs the user the current dodo code.
- $toggleMashB: (sudo only) toggles whether or not the bot should mash the B button (useful if you get stuck on Isabelle's morning announcement) Mash B automatically turns off during normal functionality (eg while dropping items or talking to orville to fetch a dodo code)
- $newDodo: Restarts the game and gets a new dodo code
- $drop: Similar to the SysBot.AnimalCrossing $drop command, but allows the drop of any item (wrapping not required)
-
$injectVillager: Similar to the SysBot.AnimalCrossing $injectVillager command but allows you to optionally select the injection slot. For example,
$injectVillager 3 cat23
. - $mvi: As above, but allows injecting multiple villagers in one command.
- $speak: During idle time, this will open up the keyboard and say a message, only guaranteed to work while someone is on your island. Supports all languages.
-
$dodo: Will print the dodo code in the current channel.
- I've implemented dodo-code image rendering if you want fancier dodo notifications, create a base for your dodo image (ideally 8x5), convert/name it dodo.png, then find a ttf font, name it dodo.ttf and put them both in the exe folder. Every time you call $dodo it'll upload the rendered dodo image, an example for my treasure island is below.