- Added /time12
- Added /ddroll, /ddrollp for rolls with modifiers
- Added 'rp_getarea(s)' attributes to restrict /getarea(s)
- Added /toggle_rpgetarea(s) to change the above attribute
- Added /st for staff-only chat
- /g now includes OOC usernames as opposed to charname
- Added reachable areas support with
- /unilock
- /bilock
- /delete_areareachlock
- /restore_areareachlock
- Added proper support for spectators (can talk OOC/use commands/change music&areas/use judge buttons now)
- Added support for IC locking with /iclock
- OOC usernames may no longer include the hostname or global message prefixe
- Fixed /kick crash on unrecognized parameters
- Added AFK kicks
- Added user-initiated timers with
- /timer start
- /timer get
- /timer cancel
- Area lists now only list reachable areas
- Added inter-area OOC communication with /scream
- Added debugging tool /exec
- Added inter-area music setting with /rplay
- Renamed /ddroll -> /roll, /ddrollp -> /rollp
- Added sneak support with /sneak and /reveal
- Added inter-area IC announcements with /globalic, /unglobalic
- Added server custom shownames with /shownames
- Added soundproof area attribute
- Expanded inter-area OOC communication with /knock
- Added support for custom music lists with /music_list
- Added area list reloading with /area_list
- Added character restriction on a per-area basis with /char_restrict
- Added scream ranges on a per-area basis (deprecating soundproof attribute)
- Default server configuration now uses DRO standards
- Added automatic passing messages with /autopass
- Added passage lock transientness with /transient
- Added showname moderation tools
- /showname_freeze
- /showname_history
- /showname_list
- /showname_nuke
- /showname_set
- Enforced showname uniqueness per area
- Fixed /area_kick crash on unrecognized parameters
- Fixed /getareas listing an empty area if only people there are sneaking
- Players on server select no longer count in online playercount, nor in /getarea[s] and /area
- Added movement handicaps with /handicap, /unhandicap
- Added area lights with /lights
- Added blood trails with
- /bloodtrail
- /bloodtrail_clean
- /bloodtrail_list
- /bloodtrail_set
- Added /toggle_shownames to disable receiving server shownames
- Allowed for more DRO client effects being used
- Fixed /autopass not sending messages from or for staff
- Added area descriptions with /look, /look_set
- Console now displays server opening/closing/reconnecting messages.
- Python errors now show additional debugging info on server log+client if error came as a result of command
- Renamed some commands
- allow_iniswap -> /can_iniswap
- delete_areareachlock -> /passage_clear
- restore_areareachlock -> /passage_restore
- toggle_areareachlock -> /can_passagelock
- toggleglobal -> /toggle_global
- toggle_rollp -> /can_rollp
- toggle_rpgetarea -> /can_rpgetarea
- toggle_rpgetareas -> /can_rpgetareas
- Reworked /area_kick so that it now allows area names as parameter
- Reworked /discord so that it now shows the server's Discord server invite link
- Fixed /autopass sending old character name in case of forced char switch on area change
- Fixed /bloodtrail_set not enforcing staff member rank
- Fixed /disemconsonant and /remove_h not working/crashing
- Fixed /follow allowing to follow yourself
- Fixed "Knock" client effect not being sent
- Added support for user initiated day cycles with
- /clock
- /clock_cancel
- /clock_pause
- /clock_unpause
- Added various moderation tools
- /judgelog
- /shoutlog
- /version
- /whereis
- Added 'has_lights' parameters to areas to allow/disallow using /lights
- Enforced different staff passwords on server configuration
- Shouts now show character used as opposed to OOC name
- Turning lights on reveals who is bleeding and not sneaking
- Fixed area lists allowing for empty parameters
- Fixed blood announcements sent to wrong areas occasionally
- Fixed /kick requiring no arguments
- Fixed music flood guard crash
- Fixed server ghosting on master server list on incorrect server closing
- Fixed pre2.2.5 clients being unable to join
- Added various moderation/debugging tools
- /lasterror
- /multiclients
- /whois
- Added area parameters to allow for non-staff use of custom backgrounds/music
- Added /toggle_allrolls so staff get roll notifications from other areas
- Day cycle notifications now send 'CL' packets to clients
- GMs can no longer /area_kick users from lobby areas
- Renamed timer commands
- /timer start -> /timer
- /timer get -> /timer_get
- /timer cancel -> /timer_cancel
- Fixed a player not unfollowing a player who disconnects and then crashing on area change
- Fixed /roll crashing on too many arguments
- Added global IC prefixes with /globalic_pre
- Added first person mode with /toggle_fp
- Banned players now receive 'You are banned from this server' notifications on attempting to join+Notifies mods of this attempt
- Global IC messages now send notifications on each use
- Made daily gmpasses optional
- Multiple players may now follow the same player
- Renamed some commands from /toggle to /can
- Fixed clients being able to join too quickly on server select and crashing
- Added party support so players move with one another automatically with
- /party
- /party_disband
- /party_id
- /party_invite
- /party_join
- /party_kick
- /party_lead
- /party_list
- /party_members
- /party_uninvite
- /party_unlead
- Added HDID bans with /banhdid, /unbanhdid
- CMs now get IPIDs in /getarea(s), /showname_list and /whois, as well as HDID in /whois
- Iniswapped folders are now shown with /whois
- Fixed security issue with webAO
- TsuserverDR now uses semantic versioning.
- Introduced CI testing on Travis
- Fixed server player limit not being enforced
- Fixed invalid characters crash with /area_list and /music_list
- Fixed logging in to a second rank making you keep the first one
- Added sense block support with
- /blind
- /deaf
- /gag
- Added /bloodtrail_smear to smear blood trails in the area
- If player is blind or area lights are out, /bloodtrail_clean effectively runs this instead
- Added /ping to check for lost connection
- Added /showname_area to list shownames just in the current area
- CMs now receive Call Mod notifications
- Renamed /mutepm -> /toggle_pm, /showname_list -> /showname_areas
- Started including additional marks to certain staff privileged RP notifications
- Minor changes to messages sent on area change
- Staff now receive autopass messages if lights are off instead of regular lights off messages
- Reworded messages sent if someone arrives/leaves while bleeding/lights off and sneaking
- Players now receive special notification if there is blood in the area and lights are off
- Fixed global IC OOC notifications showing message went one area past the last area actually sent to
- Fixed IPIDs on rare occasions being non-trivially not unique
- Fixed /pm not sending complete character names to recipient
- Minor bugfixes with respect to bleeding
- Blood cleaning notifications will no longer be sent with lights off
- Blood will now automatically be spilled on the area as soon as /bloodtrail is executed, not only on area change
- Added special marks to more staff privileged RP notifications
- Reworded global IC notification messages
- Added more special marks to more staff privileged RP notifications
- Normal players now get who cleaned/smeared blood in area if they are not blind and the lights are on
- Renamed repository to TsuserverDR
- Added more special marks to more staff only RP notifications
- Fixed /multiclients failing for GMs/CMs on non-staff targets while in RP mode
- Gagged messages are now randomly generated
- Staff get new messages when using /bloodtrail, with privilege marks added where needed
- Added zones. Zones are groups of areas such that any privileged server notifications that come from a player action within the zone will be sent only to "watchers", who are people who watch the zone. They come with the following commands:
- /zone
- /zone_add
- /zone_delete
- /zone_global (alias /zg)
- /zone_list
- /zone_play
- /zone_remove
- /zone_unwatch
- /zone_watch
- Zones will send notifications to all zone watchers for standard RP notifications as well as the following:
- Players coming IN and OUT of the zone (with their shownames)
- Players coming in a zone while having other clients open in the zone
- Players in the zone disconnecting
- Players in the zone changing character
- Players in the zone changing showname
- Added poison through /poison. Poisoned targets will be inflicted an assortment of effects at the end of a timer (currently a selection of blindness, deafness and gagged). Targets can have their poison removed before it affects them by having /cure run on them
- /cure will also remove effects if they have been already applied
- Improved password-less process of GM logins:
- Added /make_gm so CMs and mods can log in other players as GMs
- Added /gmself so GMs can log in all other clients they opened as GMs
- Custom shownames now appear if set in server notifications instead of character folders
- Improved /help
- It can now take a command name and it will show a brief description and expected syntax, as well as the minimum required rank if the player is not authorized to use it
- Improved roll management mechanics
- Added dice log commands to retrieve roll history through /dicelog (for one player) and /dicelog_area (for one area)
- Roll options are now modifiable from server configurations
- Improved information sent to moderators on mod actions
- /ban, /banhdid and /kick notifications are now sent to all mods and CMs in the server, as well as appropiate information on the targets.
- Reworded notifications for the following mechanics
- Rolls failing
- Enabling/disabling IC locks
- Setting your own showname, or someone else's showname
- Characters becoming restricted in an area
- Revoking/restoring DJ permissions
- The following actions now send an IC message in conjunction with an OOC notification:
- /knock (which has been restricted to non-lobby areas only)
- /scream
- Private servers will now include the masterserver name when showing the server IP in the terminal
- Fixed clients with same HDID but different IPID not being recognized as multiclients. This fixes the following:
- Players getting a new IP can now kick ghosting clients under their old IP with /kickself
- Staff can now recognize such situations with /whois or /multiclients
- Fixed /play and /rplay not looping music tracks that appear in the server music list
- Fixed daily GM passwords switching at 3 pm incorrectly, they now switch correctly and at midnight
- Fixed day cycles not canceling on area list reload
- Fixed single space messages sent by gagged players not blankposting but being converted to jumbled text
- Fixed GMs receiving IPID information through /multiclients
- Explicitly allowed Python 3.8 support for server owners
- Fixed uncaught ValueError if server files do not contain a valid README.md when attempting to generate help text for commands
- Fixed zones being able to obtain duplicate zone ID values
- Fixed /multiclients not considering same HDID users as multiclients
- Fixed /unban considering the unbanning of an already unbanned person as an invalid IPID
- Reorganized /ban and /unban text to include backticks surrounding argument
- Made /unban notify all other mods and CMs in the server whenever executed
- Fixed /narrate crashing on use
- Fixed changelog listing incorrect dates for 4.2.0 releases
- Fixed /zone_watch and /zone_delete raising an uncaught KeyError if an invalid zone name was passed as an argument
- Fixed rare issue with new AWS instances raising a certificate error when pinging api.ipify.org on server boot-up
- Made unrecoverable server errors expect an operator Enter input on console before finishing the program so that they can see the error message if they launched the server by double-clicking
start_server.py
- Made error log files be created if the server crashes on bootup, which would normally happen if some files are missing or have some parsing errors
- Fixed master server connection not being closed automatically on server shutdown, which displayed ignored exception messages if running Python 3.8
- Added deprecation warnings to the following commands
- allow_iniswap: Same as /can_iniswap.
- delete_areareachlock: Same as /passage_clear.
- mutepm: Same as /toggle_pm.
- restore_areareachlock: Same as /passage_restore.
- showname_list: Same as /showname_areas.
- toggleglobal: Same as /toggle_global.
- toggle_areareachlock: Same as /can_passagelock.
- toggle_rollp: Same as /can_rollp.
- toggle_rpgetarea: Same as /can_rpgetarea.
- toggle_rpgetareas: Same as /can_rpgetareas.
- Added /files and /files_set for custom file linking
- Added logging messages to the server logs when the server starts up, shuts down, or it crashes and the server can manage to save the log
- Server logs files are now separated by month. Logging information will go to the file associated with the month and year the server was last launched on (so if in one session the server was launched December 2019 and was shut down January 2020, all logs for that session would go in
logs/server-2019-12.log
).logs/server.log
will now go unused, but server owners may keep this file for their archives.
- Improved cross-compatibility between multiple AO-like clients. For client-exclusive features, a best-effort-like approach will be taken to adapt to clients that do not have said features.
- Improved /help message so that it suggests to use the extended syntax (/help "command name") to get help with a particular command
- Improved README.md instructions so that server installation steps are more clear
- Fixed minor typos in
config_sample/config.yaml
- Fixed /area_kick'ing someone off a locked area under special circumstances allowing the target to rejoin the locked area
- Fixed /help not showing extended syntax (/help "command name") when running /help help
- Fixed /narrate messages being replaced for deafened players
- Fixed /poison effects kicking in being notified to all players in the server as opposed to zone watchers or staff members if target is in an area not in a zone
- Added /whisper for IC private communications between players (meant to be used for RPs, as staff members can read the contents of the message)
- Added /guide for providing personalized guidance specific to a particular player
- Made /invite be a public command as opposed to GM+
- Added helpful commands-to-run-next suggestions for the following actions
- Setting files.
- Setting up global IC messages
- Creating/being invited to a party.
- Entering a zone you that a GM+ is not watching/leaving a zone a GM+ is watching.
- Logging in in an area part of a zone.
- Being in an area when a zone is created involving that area, or that area is added to a zone.
- Being in an area that is removed from the player's zone.
- The following commands can now take character name, edited-to character, showname or OOC name as identifiers, provided the target is in the same area
- /files
- /guide
- /invite
- /party_invite
- /party_kick
- /party_uninvite
- /pm
- /uninvite
- /whisper
- Fixed normal players being able to use /uninvite with IPID.
- Added /toggle_allpasses to be able to receive autopass notifications from players that do not have autopass on
- Added optional argument to /coinflip to call coin flip results
- Added optional argument to /8ball to directly ask questions to the magic 8 ball
- Added optional argument to /getarea and /showname_area to obtain details from a particular area
- Added source and destination areas to zone entry/exit notification sent to watchers when a player enters/leaves a zone
- Added anti-bullet tag as an area parameter
- Allowed /whois to take HDID as an identifier (CM and mod only)
- Removed leftover ability of GMs to use commands with IPID
- Reworked responses of the magic 8 ball so it now chooses from a pool of 25 answers as opposed to 8
- Fixed documentation of /unban not listing it can unban by IP address
- Fixed GMs not receiving privileged staff notifications for autopass when players leave/enter an area whose lights are off or they enter/leave an area while sneaking
- Fixed unsupported webAO clients lingering for too long and taking server spots away
- Fixed wrong messages being sent when a client is bleeding and they are sneaking or the area lights are out
- Fixed non-numerical HDIDs not being recognized with /whois
- Fixed players in first person mode being unable to talk after a server-initiated IC message
- Aligned wording of music list loading outputs with the ones from area list loading outputs
- Fixed players/server being able to load music lists with invalid syntax. An informative error message will be returned to assist in fixing the music list
- Fixed players/server being able to load any YAML files with invalid YAML syntax. An informative error message will be returned to assist in fixing said file
- Fixed /showname_freeze and /showname_nuke causing errors when notifying other users
- Fixed /bg turning on lights in previously dark rooms.
- Fixed players/server being able to load music lists with non-numerical track lengths. An informative error message will be returned to assist in fixing the music list
- Fixed duplicate /look_set output messages being sent to other zone watchers in the same area
- Fixed typo in /passage_restore: 'statue'->'state'
- Fixed clients who do not/cannot update their music list crashing when they attempt to join an area that no longer exists.
- Readded description of /login to README.md
- Fixed incorrect error messages being sent in case the server's system fails to open an area list or music list file.
- Reverted backwards incompatible change that prevented music lists that did not list length for a track (meaning they did not want them to be looped) from being loaded.
- Fixed /lights not turning lights back on if the background wasn't changed
- Enforced Python 3.6+ requirement on server launch
- Server owners running Python 3.6 will now be warned on server launch of pending deprecation of support for Python 3.6 with the upcoming major release of TsuserverDR
- All asset files in
config_sample
now come with instructions as to how to use them and what parameters they recognize - Added /cid to get your (or someone else's) client ID
- Added /spectate to switch to spectator
- Added client version to /whois
- Warnings are now sent to players in once-locked rooms that were reloaded via /area_list
- /whisper messages from private rooms are no longer sent to staff members
- GMs may now /make_gm their multiclients, and their multiclients only
- Login/logout notifications are now sent to other staff members
- Staff login+passwords messages are now censored both in IC and OOC
- Added /zone_lights to turn the lights of every area in your zone on or off
- Added command aliases:
- /sa (Alias for /showname_area)
- /sas (Alias for /showname_areas)
- /shout (Alias for /scream)
- /unsneak (Alias for /reveal)
- /yell (Alias for /scream)
- Added server configuration setting to disable ms2-prober connections being logged in server logs
- Added server configuration setting to set a custom UTC offset to use for the output of /time and /time12
- Public servers now properly reject webAO connections, and log any other abnormal connections.
- Fixed potential DoS attack on clients
- Fixed /toggle_allrolls giving roll results from outside watched zones if the roller was in an area not part of a zone
- Fixed /multiclients failing to output results if target client was not staff and their area did not satisfy criteria for being printed in /getareas from the perspective of the /multiclients sender
- Undeprecated /showname_list in favor of making it a command alias
- Added best-effort support for (upcoming) Attorney Online 2.7
- Fixed server not discarding repeated messages
- Increased length of abnormal connection log for better inspection
- Fixed compatibility with the KFO client
- Fixed turning lights on in an area before a party disbands raising a silent error
- Fixed /toggle_allpasses and /gmlock having broken documentation in README.md (/gmlock is now pending deprecation and should not be used anymore)
- Improved server error messages for the following situations: missing config folder, unrecognized characters/reachable areas
- For non-local servers, console now indicates alternative IP to join to if attempting to join the server from the host machine
- All use cases of /charselect now display status messages
- Improved client termination messages for abnormal connections and packets
- Added best-effort support for (upcoming) Attorney Online 2.8 and similar clients. Unrecognized clients will now be warned in OOC when they join
- Fixed servers not launching if they did not set some daily gmpasses
- config.yaml now shows instructions on how to make daily gmpasses optional, as well as indications on password requirements
- Fixed situation where players that started a clock, paused it and disconnected did not have the clocks properly cleared
- Added /party_whisper (aliases /pw and /huddle) so players in the same party may whisper to one another
- Added /zone_info (alias /zi) so zone watchers may quickly obtain details about their zone and a list of players in their zone.
- Added /logingm, alias to /loginrp.
- /play, /rplay, /zone_lights and /zone_play now send status messages to both the player executing the command as well as any player watching the zone if appropriate
- /play, /rplay and /zone_play now warn the player executing the command if the track name is not a recognized one and that it will not loop
- /scream now displays the scream in IC to the screamer
- Raised character limit in commands from 256 to 1024, except for IC-related commands (these remain at 256)
- (Temporarily) patched /globalic_pre so that GMs using /globalic with prefixes would have their client IC chatboxes and effects cleared once their message was sent
- All staff-privileged commands now send displayname and client ID rather than some combination of names
- /party_members and /zone_list now list client ID of members and zone watchers respectively
- Servers no longer stop launch if they are unable to obtain their public IP
- Improved wording in README
- Fixed /rplay failing if the reachable areas of an area was just the keyword ''
- Fixed launching servers via double clicking start_server.py being unable to find configuration files and crashing immediately afterwards
- Fixed Attorney Online 2.8 not handling music and area list updates
- Fixed global IC areas and prefixes, as well as day cycle clocks not being canceled on /logout and /cleargm
- Fixed /cleargm not forcing GMs who were in an area that restricted some characters off their character if they were using one of those restricted characters
- Fixed global IC areas and prefixes not being reset on area list reloads, even when it would not make too much sense to keep them around
- /whois now shows global IC and global IC prefix status
- Fixed accidental uses of /logingm in IC or in OOC surrounded by spaces not filtering out server passwords like other login commands do
- Fixed /scream not showing default or custom shownames in IC for non-deaf players
- Reworded the /scream OOC notification so it is more in line with other OOC/IC notifications
- Deaf players now only see an IC notification for screams
- Fixed allowing zero-width characters in OOC names and shownames
- Fixed illegal OOC names being associated with clients, even after being notified they are invalid
- Backported 4.3.0 recognition of DRO 1.0.0 protocol and clearing of IC on area changes/blinding
- Enforced stricter file validation before attempting to open files
- Enforced file names not referencing current or parent directories in the name
- Improved error message if ban, IPID or HDID list JSON files are missing
- Fixed validation introduced in 4.2.5-post6 not working in Python 3.7
- Fixed regression where if ip_ids.json or hd_ids.json did not exist, the server would not launch
- Fixed server not recognizing the new DRO 1.0.0 colors
- Fixed server not accepting the SP packet
- Fixed server not accepting the new DRO splash buttons
- Fixed clients with letters included in their minor version throwing an error when joining a server
- Fixed server creating an ip_ids.json or hd_ids.json file with the wrong structure
- Fixed server accepting ip_ids.json or hd_ids.json files with wrong structure
- Fixed AO clients sending IC messages presenting with no evidence selected throwing an error
- Community managers now have access to /area_list and /area_lists
- Added /ignore and /unignore to toggle ignoring IC messages from players
- Added /glock to lock the global and zone chats
- Moderators and community managers now see the IPID of players using /g or /zone_global
- Updated TsuserverDR so it uses travis-ci.com
- Fixed servers not accepting IC messages if they did not set some daily gmpasses
- Fixed some special characters not being accepted properly
- Fixed various commands not loading server YAML files with UTF-8 encoding
- Tied in to Danganronpa Online v1.0.0, although support for the previous Danganronpa Online version will be kept for 4.3.0
- Explicitly allowed Python 3.9 support for server owners
- Added basic DR-style trials (confront readme for command instructions):
- /trial
- /trial_add
- /trial_end
- /trial_focus
- /trial_influence
- /trial_info
- /trial_join
- /trial_lead
- /trial_leave
- /trial_kick
- /trial_unlead
- Added basic DR-style nonstop debates that run within trials and can loop automatically until a player shoots an appropriate bullet (confront readme for command instructions):
- /nsd
- /nsd_add
- /nsd_end
- /nsd_join
- /nsd_lead
- /nsd_leave
- /nsd_kick
- /nsd_unlead
- /nsd_pause
- /nsd_loop
- /nsd_accept
- /nsd_reject
- /nsd_resume
- Added perjury bullet support: only the person using the perjury bullet and the NSD leaders (or GMs if not part of an NSD) receive the perjury animation, everyone else receives a counter animation.
- Added area lurk callouts to name players who have been idle some amount of time in an area via
- /lurk
- /lurk_cancel (to cancel a lurk callout in an area)
- Players may now set and see custom status, which will send an IC notification to every player that subsequently sees them:
- /status
- /status_set <new_status>
- /status_set_other <new_status> (GM+ command)
- Areas may now be marked as noteworthy, which will also trigger a similar IC notification on arrival or visibility change.
- /noteworthy
- /look now shows a list of players in the area like /getarea, with the following additions
- Players are listed by showname, if unavailable edited to character, and if unavailable character folder
- Players in the same party now show a (P)
- Players with a custom status now show a (!)
- Added /bilockh and /unilockh GM commands. They have the effect /bilock and /unilock formerly had of showing/hiding areas from the area list. /bilock and /unilock for all ranks now does not change passage visibility for all ranks.
- Passage visibility changes are immediately reported in the affected players' area lists
- System blankposts are now sent on area change or when blinded to clear the last character on screen for compatible clients.
- Added support for new colors available in DRO as well as the set position SP packet
- Music playing notifications now show the server showname of the player in DRO if the player set a showname
- Last sender sprites no longer show in first person mode if the player with first person mode talks and the last sender
- Disconnected
- Is in a different area
- Changed characters
- Has sneaked, and it is not the case the player is sneaking and they are both in a party
- Added explicit 'forwards sprite mode' via /toggle_fs. When a player has forwards sprites disabled, all recipients of their IC message will not see the player's sprite, but the last one they saw (or blank if any of the conditions described for first person mode blanks applies). By default it is on.
- Day cycle clocks are now more linked with DRO 1.0.0 by supporting time of day periods. Players in the clock range playing with compatible clients will automatically change to their time of day's version of their theme when entering a custom period or unknown time:
- /clock_period
- /clock_unknown
- Day cycle clocks can now have their hour length and current hour be modified via /clock_set
- Day cycle clock unpauses now take place as soon as processed rather than at most 1 second after being processed
- Added /zone_mode to set up the gamemode of a zone. Players part of an area in that zone with compatible clients will automatically change to their gamemode's version of their theme.
- Players in a party that are sneaking may now see each other via /getarea and similar. Players in the party not sneaking, or players sneaking not part of the party may not see these players
- Non-GM players that are spectators may now follow players.
- Players that were GM and not spectators who then logged out, or non-GMs who were spectators and switched to a character stop following whoever they were following.
- Changed wording of GM login notifications, /minimap, attempting to access a locked passage, talking in an area whose IC chat is locked, following and unfollowing
- Notifications are now sent if a mod via /switch forces a target off their character (e.g. mod using /switch) to the mod, the target, and other officers in the server
- Clients with compatible clients now no longer see auxiliary extra spaces in IC if deafened nor their own messages with global IC prefixes if they have them on
- Improved README description of /switch to account for GMs being able to switch to restricted characters, and mods being able to force a player off their character
- Added area parameter that allows only CMs and mods to send global messages in an area (by default false)
- Improved type checking of areas, background, config, music and character lists (they now hopefully fail earlier and more clearly if they have subtle errors)
- If a character list is changed via /refresh, all clients are switched to spectator and prompted to rejoin the server
- /banhdid now reports, if a player was already banned, what IPID was banned
- Judge buttons are now disallowed in lobby areas
- Removed support for AO1 style packets. The server will now respond only to DRO and AO2-style packets
- Server now logs 100 most recent sent and received packets in error logs
- Players that successfully call mod now receive an OOC notification acknowledging that
- Removed the limit on number of different judge buttons accepted
- Running /showname with no arguments with no showname set, or attempting to set the same showname as the one previously had, now returns an error instead of running successfully
- Added /dump to generate a server dump on request
- Added /slit, alias to /bloodtrail
- Clients sending syntactically correct but otherwise unidentifiable packets now silently log to console and server log rather than propagating an uncaught KeyError
- Allowed /cleargm to take a client ID to log out a particular client from their GM rank
- Improved output of /cleargm and /kickself for the user running the commands: they now see who they logged out or kicked respectively
- Added config/gimp.yaml so server owners can customize the output of gimped players
- Improved output of error messages if the port the server tries to use is already in use or that is beyond the range of available ports
- IC and OOC messages, as well as arguments to OOC commands, now have leading and trailing whitespace characters removed (except a chain of only spaces)
- The following server asset files may now be validated without launching a server by opening the appropriate file in server/validate, and dragging the file to check in there:
- Areas
- Backgrounds
- Characters
- Config
- Gimp
- Music
- /scream_set_range now allows as an argument to indicate all areas should be able to receive a scream coming from the area the person running the command
- Added /iclock_bypass, allowing GM+ to let non-GMs in an area whose IC chat is locked to talk in IC. The effect disappears as soon as the target moves area or their area has their IC chat unlocked
- Improved output of /blind, /deafen, /gag if no arguments are passed
- Made /blind, /deafen, /gag, /bloodtrail echo the ID of the affected target as part of output message
- GMs are no longer subject to the server music flood guard
- Added /randommusic, which plays a randomly chosen track from the player's current music list
- Added /exit, which lets you exit the server from OOC
- Server initiated messages will now attempt to include desks wherever possible
- Added /zone_handicap and /zone_unhandicap. Players who enter an area part of a zone with a handicap will be subject to the imposed movement handicap automatically
- Also added /zone_handicap_affect, which makes a player be subject to a zone handicap if their handicap was removed
- Running /sneak on an already sneaked player will now fail. Similarly, running /reveal on an already not sneaked player will now fail
- All commands that require a specific number of arguments now validate that the correct number of arguments was passed
- Zones that lose all their watchers but still have players in areas part of the zone will no longer be automatically deleted
- If an area is made part of a zone via /zone or /zone_add, all players are now notified about it. A similar behavior occurs now with /zone_remove
- All /showname_set notifications now include the old showname of the affected user if applicable
- Clients may now send empty sound effects
- Made /showname_history be available to all staff members (previously it was for moderators only)
- Added /charlog, which lists all character changes a player has gone through in a session (including character showname or iniswap changes)
- Made /whois identifiers follow the same identifier type lookup logic as other commands
- RP notifications that typically show player shownames will now try to use character shownames if available before defaulting to the character folder name
- Added /zone_tick and /zone_tick_remove to set the chat tick rate of a zone, so all players in an area part of the zone see messages with the same chat tick rate, or their own chat tick rate
- Made /switch indicate the target character, regardless of whether the switch was successful or not
- Made /zone_watch return a more specific error if the player is already watching the target zone
- Renamed certain commands that end certain features so they have a standard format:
- /clock_cancel -> /clock_end
- /party_disband -> /party_end
- /timer_cancel -> /timer_end
- /zone_delete -> /zone_end
- Added
background_tod
as an area parameter. Subparameters defined within it will indicate compatible clients to switch to a given background according to the current time of day present in the client's area - Added /files_area (command alias /fa), which returns all visible players in the area who have set their files
- Added command alias /l for /look
- Made /whois also return the files the target player set for their character, if they set them
- Added support for incoming client packet "CharsCheck", which if received forwards the sender the list of characters their client is meant to see, so they can update their available characters list
- Added /zone_iclock, which applies the same lock/unlock status to all areas part of your zone
- Removed the AttributeError warning from console when a player inputs a command that does not exist
- Added the command name that was used whenever an "Invalid command" error message is triggered
- Made /sneak and /reveal (/unsneak) with no arguments affect the player using it rather than raising an error
- Added
source
optional parameter to music list files, which would indicate the source of the currently played music via /currentmusic - Made /area with no parameters return an area list for non-staff players only if
announce_areas
was set to true in the server configuration - Fixed scream_range in area list yaml files not supporting the keyword to indicate all areas should be able to receive a scream coming from a particular area
- Fixed scream_range in area list yaml files not checking if the areas a scream can reach to from a particular area exist
- Fixed /scream, /whisper and /party_whisper raising errors if a message was sent to a deafened player with a bypass message starter. They now sent messages but filtered
- Fixed /scream bypassing moderation mutes or client mutes
- Fixed /scream bypassing IC chat locks, or being rendered in scream-reachable areas whose IC chats are locked
- Fixed /charselect sending the proper area background to blind clients
- Fixed blankposts or double empty spaces being filtered out for deafened players
- Fixed wrongly formatted OOC notifications being sent if a player moves to an area where there are players bleeding and sneaking, and players bleeding but not sneaking
- Fixed GMs blinding, deafening or gagging themselves receiving two notifications
- Fixed area lists containing as an area name loading without raising errors
- Fixed /whisper, /blind, /deafen, /gag not showing client ID of target for GMs+
- Fixed /party_whisper not showing party ID of target for GMs+
- Fixed situation where if a player was in first person mode and was blinded, talked themselves but heard no one else talk, and after being unblinded started talking, they would see the sprite of the last person they last saw talked
- Fixed attempting to load non-YAML files or files with unusual encoding raising an uncaught UnicodeDecode error
- Fixed /refresh not undoing changes if either the background, character or music list raised errors when loading
- Fixed /sneak and /reveal not showing the client ID of target players to zone watchers
- Fixed /zone_add, /zone_lights, /zone_play, /zone_watch not showing the area ID of the command sender to zone watchers
- Fixed filtering out global IC prefixes if a prefix was set and a message that started with that prefix was sent while global IC was turned off
- Fixed players in first person mode not seeing the last sender' sprites if the last sender was a GM that was sneaking
- Fixed /scream going to screamable areas if area is marked as private
- Fixed the server not failing early if a server YAML file was empty
- Fixed /charselect (either as mod or not) not running all spectator actions, like restarting AFK kick timers, updating character folder or notifying zone watchers
- Fixed the server silently accepting a YAML mapping file (like an area list) with duplicate keys in an item. A helpful error message is now raised
- Fixed the server indicating the wrong directory for the configuration file if the passwords were incorrect (previously showed server/config.yaml, now shows 'configuration file')
- Fixed the server disallowing all IC messages if a daily password was deliberately left empty rather than removed from the configuration file
- Fixed /party_leave not having short documentation for /help party_leave
- Fixed the server attempting to send packets to clients without checking if the client is still online.
- Fixed /poison, /cure and notifications for effects kicking in not showing the target's ID to the command runner and zone watchers
- Fixed /charselect notifying of the wrong person running the command to officers
- Fixed output of /scream_range being formatted different from /minimap. It now lists areas in order by ID with the format number-name
- Fixed /scream, /whisper and /party_whisper not sending character folder information, which prevented rendering of showname images
- Fixed /play bypassing IC mutes, blockdj and the server music flood guard
- Fixed /showname_set stopping early if multiple targets needed to be updated but an early one failed
- Fixed the default config.yaml listing 'announce_areas' as an unused parameter (it is actively used)
- Fixed /showname_set being listed as a moderator only command in the README (it was always staff only)
- Removed deprecated AO commands, and deprecated packets opKICK and opBAN
- Dropped Python 3.6 support, and added indication of future Python 3.8 support drop
- Fixed issue preventing launching servers in Python 3.10
- Fixed issue where if a player was following another player who was part of a trial and that player left to an area not part of the trial, an error would be raised
- Fixed output of /look having extraneous spaces
- Removed leftover timer creation code
- Fixed passwords in
config.yaml
being erroneously casted to wrong types when possible
- Fixed /help message adding a trailing period to the URL
- Updated copyright notice for year to 2022
- IPIDs are no longer generated and stored for clients that do not properly follow the AO protocol when logging in
- Fixed issue that allowed some handshake commands to be accepted out of order
- Fixed issue that allowed area or music lists that allowed some clients to send improper requests
- Added
visible_areas
support toareas.yaml
. If included in an area, it will set the areas visible to a player in the area. By default it is the same as the reachable areas - Added /peek, which allows players to gather information about an area nearby, potentially warning users in the target area of the peek
- Added the concept of player paranoia and zone paranoia, which sends fake indications of a player being peeked roughly every 300 seconds with probability equal to the sum of both paranoias (by default 2% and 0% respectively) via commands
- /paranoia
- /paranoia_info
- /zone_paranoia
- /zone_paranoia_info
- Added /pos_force (alias /forcepos), which changes the IC position to a given position of a target player if given, or all players in the current area otherwise
- Added notecards, which allows players to store private text and allows GMs+ to simultaneously reveal contents and authors for all players in a current area via commands
- /notecard
- /notecard_check
- /notecard_clear
- /notecard_clear_area
- /notecard_info
- /notecard_list
- /notecard_reveal
- /notecard_reveal_count
- Added /help_more, which lists extended help for a command
- Added support for the
showname
,video
,hide_character
, andclient_id
fields in IC messages from and for Danganronpa Online 1.1.0 - Added support for day cycles of arbitrary number of hours via a new optional argument to /clock (default 24 hours), and /clock_set_hours
- Players with clients with clientside looping (including Danganronpa Online 1.1.0) will now hear music from the start when they enter an area playing a different music from their current one
- Players with clients with clientside looping (including Danganronpa Online 1.1.0) will now hear music from the start from their current area when they first choose a character (most typically, this will be the music from the default area of the server)
- Reworded the warning for /play, /rplay, /zone_play, indicating that "the server will not loop the music" as opposed to "[the music] will not loop"
- Players with clients without clientside looping will now be ordered to play any music that matches the requested music name no matter the file extension, allowing a transition period to change file types of music
- The
length
parameter in music files is no longer considered to provide server-sided looping to clients with clientside looping, but if provided, the server will use that information to provide server-sided looping to clients without clientside looping - Added a lockout that prevents messages being sent the first 5 seconds of a nonstop debate in pre-recording or intermission mode
- Added brief prefixes to shownames whenever an OOC command that generates an IC message with a showname is run, such that it indicates the nature of the message (e.g. [W] for whispers)
- Added a copy of the message to OOC whenever an OOC command that generates an IC message with a showname is run
- Added /zone_autopass, which changes the zone autopass status. If turned on, turns autopass on for players in an area part of a zone and players that later join; otherwise, it turns it off for players in an area part of a zone
- Added support for an extra argument for /autopass for GMs+. If given, and is a client ID, it will change the autopass status of the target client
- Added /think, which allows players to send thoughts in IC that only them and zone watchers/GM+ can see
- Changed double quotation marks to backticks when forwarding a screamed message in OOC
- Increased the numbers of messages that must occur during a nonstop debate intermission before reminding the leaders to advance stage if necessary from 5 to 20
- Sending a whisper while sneaked to a nonsneaked player that is not a member of the same party now displays the player's showname to the sneaked player (but still only question marks to the recipient)
- Fixed some compatibility issues with AO 2.9
- Added list of tracks for which server should strive to send ".mp3" versions of for DRO 1.0.2 players
- Restored old behavior of music in a new area that makes it only start playing for a newcomer player in DRO 1.1.0 once a "loop" of it is done
- Servers now advertise using the AO MS3 protocol standard
- WARNING: this requires server owners, before launching, install a new library, as well as updating the master server IP (available in
config_sample/config.yaml
)
- WARNING: this requires server owners, before launching, install a new library, as well as updating the master server IP (available in
- Made /area_kick no longer trigger autopass notifications on the kicked player
- Made players using /follow to follow another player who is /area_kick'd move to new area of the followee, even if there was no passage from the original area
- Made /getarea and /getareas show the shownames of the players listed if they have set it
- Made /showname_area, /ga, /sa aliases of /getarea; and /showname_areas, /gas, /sas aliases of /getareas
- Made /logingm the primary command to log in as GM and /loginrp an alias of it, rather than the other way around
- Made /lights accept optionally for GMs+ area IDs after the "on" or "off" indication to change the lights status in a specific set of areas rather than just the current area
- Server now recognizes the "FS" inbound packet from players to set their files.
- Migrated continuous integration from Travis to Github Actions
- Deprecated /rpmode (pending removal in 4.4). All servers will now start with the effects of RP mode on, and in 4.4 will continuously assume the effects of RP mode on
- Deprecated the following fields in
config.yaml
(changing or keeping them will no longer have any effect):masterserver_port
show-ms2_prober
- Removed Fantacrypt, DistrictClient, and several other ts3 and AO1 leftovers
- Fixed /zone_global displaying area numbers to nonGMs
- Fixed sending "ackMS" packets to clients that didn't need it, delaying the rendering of self-sent messages for such clients
- Added ambient sound effects for areas. Players entering areas with such sound effects set up (and with Danganronpa Online 1.2.0 or higher) will start listening to the sound effect. These are the commands (all GM+ only except ambient_info, which is available for all):
- /ambient
- /ambient_end
- /ambient_info
- /zone_ambient
- /zone_ambient_end
- Added support for Danganronpa Online 1.2.0 incoming packet
joined_area
, by sending such packet when a player joins an area rather than manually sending a blankpost - Fixed /zone_tick_remove expecting 1 argument, when it should have expected no arguments
- Fixed some information about the default area (e.g. ambient sound effects) not being sent for players joining a server
- Fixed /zone_ambient not allowing tracks with spaces
- Added /sneakself, which sneaks all of your active multiclients that are not currently sneaked but can be sneaked
- GMs and zone watchers now see thoughts in IC if the thinker is in the same area
- Added /mindreader, which allows GMs to let mind readers to see players using /think just like GMs now do
- GMs are no longer subject to the duplicate showname checks
- Players using Danganronpa Online 1.2.2 now properly adjust to new character lists if the server is refreshed and the character list is changed
- Added an extra parameter to /clock_period, allowing GMs to set the hour length of all hours within a period
- Added an explicit /clock_period_end to delete a clock period, rather than relying on an undocumented 1-parameter call to /clock_period
- Ding sound effects are no longer included with "Something catches your attention" IC messages, except those that are triggered because an area was marked as noteworthy
- Fixed area validator not properly handling areas with empty names or backgrounds
- Fixed typo in area_templates.yaml field
- Fixed /think messages not showing the last sent sprite
- Fixed IC-via-OOC commands sending an empty position if the sender never spoke IC before sending the command
- Fixed area list reloads crashing
- Fixed clients sending legitimate split packets being abnormally disconnected
- Fixed character list reloads crashing when someone is in server select
- Added client version and server version consistently to printed server error messages
- Added support for loading custom background lists without changing
config/backgrounds.yaml
via theconfig/background_lists
folder and commands- /bg_list
- /bg_list_info
- Added support for loading custom character lists without changing
config/characters.yaml
via theconfig/character_lists
folder and commands- /char_list
- /char_list_info
- Updated wording of /area_list and /music_list so that it matches the wording of /bg_list and /char_list on success or failure
- Added /area_list_info and /music_list_info, which returns the name of the current area list and music list respectively
- Added support for changing backgrounds in an area associated with periods via commands
- /bg_period
- /bg_period_end
- Changed console message indicating server address and port to reflect DRO no longer using the old syntax
- Fixed /lasterror providing duplicate error information
- Fixed /clock_period erroring out if a non-numerical invalid hour start or hour length was given.
- Fixed area list loading failing if there was a player in the process of joining a server
- Increased minimum Python version required to 3.9, added support for Python 3.11
- Added hubs. Each hub has a unique numerical ID and may have its own areas, backgrounds, characters, music, zones and trials. Changes to any of these in a particular hub do not affect other hubs. Commands associated include
- /hub_create
- /hub_end
- /hub_info
- /hub_rename
- All commands that are run that involve IDs or names of players, areas, backgrounds, characters, music, zones and trials as arguments (either explicitly or implicitly) now assume those IDs or names are IDs or names within the current hub
- Added a first-list-item to switch between areas in hub view and hubs view in the area list
- A player may change between hubs by running /hub followed by the hub ID, or by double-clicking their hub of interest in the hubs view. Changing hub is equivalent to changing to the default area of a hub
- Players may now log in as GMs of a hub if they put in the hub password after /logingm. Hubs generate a random password when created that can be distributed and changed. Commands associated include
- /hub_password
- /hub_password_info
- GMs are now tied to the hub they logged in at. GMs that change hubs will lose their GM status automatically
- Server dumps now also include background, character, and DJ list information for each hub, including current file, previous file, and file contents
- Introduced the concept of participant and non-participant characters (currently a "character provided in a character list" and one that is not respectively)
- Redid trial and nonstop debates
- Json files within
storage
now use indents and new lines for better human readability (this is backwards compatible with 4.3.x) - Removed leftover concepts of an area casing status and area ownership
- Added text in change area message indicating whether the area seems populated or not. Populated means being able to see at least one player othen than yourself in /look
- Added commands to automatically get area descriptions if possible when moving to a new area (all off by default) via
- /autoglance
- /zone_autoglance
- Added /pm_gms, which sends a personal message to all other GMs in the hub that have not muted PMs
- Added commands to modify the IC text that appears if an area is marked as noteworthy via
- /noteworthy_set
- /noteworthy_info
- Added additional restrictions to the range of allowed values for "afk_sendto" and "afk_delay"
- Made /refresh a GM+ command rather than a mod command (but it only affects your current hub)
- Made /area_kick with a single argument move the target to your area rather than the hub default area
- Renamed /area_kick to /summon, and replaced all "kicking" indications it generated with "summoning" indications
- Renamed the folders
config/background_lists
andconfig/character_lists
toconfig/bg_lists
andconfig/char_lists
respectively to maintain consistency with several existing commands - Improved README installation instructions so that it prompts users to try and test whether Python was properly set up in path
- Fixed timer end notification showing the OOC name of the timer initiator as the timer name rather than the actual name
- Fixed all notecard commands having an inconsistent output when used with /help_more
- Fixed /showname_set erroring out if it attempted to show an error message
- Fixed /paranoia showing an error message with wrong valid percentage boundaries if an out of bounds paranoia level was input
- Fixed /zone_paranoia having an inconsistent parameter description when used with /help_more
- Fixed server dumps not attempting to show more information about remaining objects in some object list if it failed to display some object
- Fixed players with client versions that do not allow character list reloading not being forced to spectator after a different character list was loaded
- Fixed AO 2.10 being marked as not supporting character list reloading
- Fixed /clock_unpause not sending current clock details to non-GM players
- Removed unused
server/area_manager_revamp.py
andserver/steptimer_manager.py
- Removed the old names of the following commands. Please use the new ones:
- /clock_cancel: /clock_end
- /lurk_cancel: /lurk_end
- /party_disband: /party_end
- /timer_cancel: /timer_end
- /zone_delete: /zone_end
- Removed RP mode: It is now assumed always on
- Removed /gmlock and /gmunlock (different from /lock and /unlock)
- Removed unused configuration settings from
config/config.yaml
- Removed the following configuration files:
- The allowed iniswaps override file
config/iniswaps.yaml
. - The compatibility bridge file
config/110_new_music.yaml
. - The area lists file
config/area_lists.yaml
- The music lists file
config/music_lists.yaml
- The area templates file
config/area_templates.yaml
- The allowed iniswaps override file
- Fixed players being unable to play a track via the music list if it is a track of their hub music list but not of their personal music list
- Fixed /randommusic failing halfway through
- Fixed games not asserting properties of player groups after mutator calls
- Fixed trials being internally initialized incorrectly, which prevented commands such as /nsd_accept and /nsd_reject from running properly
- Fixed players using clients that do not have a HIDE_CHARACTER argument in inbound IC messages (e.g. AO 2.10) occassionally failing to receive messages if they are in first person mode or not in forward sprites mode
- Server logs now include the hub of the player that triggered the log message
- Server logs now explicitly show when players change hubs
- Fixed adding periods to a clock while the time is unknown failing halfway through
- Updated network protocol to DRO 1.3.0
- Extended /play, /rplay and /zone_play to include fade options. Refer to README.md for more details.
- Music behavior has been changed. When entering an area, music will immediately switch rather than wait for an internal timer. The old behavior may be restored by using the following commands:
- /toggle_legacy_jukebox: will toggle on and off the behavior in the area you're currently in. (Staff+ only)
- /zone_set_legacy_jukebox <true/1/false/0>: will set on or off depending on the value provided. (Staff+ only)