NotFound switched to ConcurrentDictionary and utilizes AddOrUpdate to accept hotloaded changes.
Removed attempted error correction for string formatting, switched to a try/catch block to log format errors and display the localized "NotFound" error string instead.
Locale command updated to pull from the loaded assets instead of needing manually adjusted. Its output is also localized.
Switched to using an enum for translation keys instead of string keys.
Adding error logging during asset loading if the asset is missing any keys from the enum. Error messages for missing keys will also be logged during gameplay as they happen.
Localization assets now additionally require a meta "NotFound" key in addition to the locale key before they are loaded. This is used to print a localized error string when no suitable string can be found due to missing keys.
BitterblackMazeRewards file converted to the new enum setup.
Removed Bitterblack JSON files that were used for testing and created one en-US file instead.
Adds serverside translation based on a player-set locale. See DispelGetLockSettingsHandler for example usage.
Accounts now have a locale field, which is set via a new /locale command.
A new server asset has been created, allowing for JSON files in the localization folder to be used to translate text sent by the server into the account's language of choice. See Files/Assets/localization/BitterblackSealing.en-US.json as an example of the format.
- Renames IsSubstoryStateBit21 to DoExtremeSynthesis
- Adds IsSearchClan and TouchClanBoard to .csx command list
- Adds the personal quests: Gathering in the Clan Tavern (Continued) and Banging the Gates of the Clan Hall
- Updates event execution flow for several quests
- Adds banner announces for two S3 trials
- Updates Isaac's quests with proper quest checks directly from the dumps
- Updates wallet rewards for several personal quests
- Breya Coast Request: Troubled Shores 1 order conditions removed, but no longer shows up before completing Crafting Token of the Heart (info straight from the dumps)
- Rathnite Foothills Trial: Captives in the Hills: updated enemy spawns, improved quest logic (circle marker now vanishes if you go to the wrong spot, general announces added, a checkpoint was added)
- Updates several Hidell Plains world quest banner images, rewards for some also updated, all from the dumps
- A Malice in the Dark: enemies now only spawn at night, announces now show in the proper order
- The Perilous Labyrinth: quest marker now shows up properly
Adds the following quests to the disabled folder:
Megadosys Plateau Trial: Material Procurement
Megadosys Plateau: Rescue Request
Megadosys Plateau: Liberation Army Support
Megadosys Plateau: Pursue and Defeat Enemies
Megadosys Plateau: Prevent Enemy Attack
Adds caution spots for Megadosys Plateau and the remaining spot for Urteca Mountains. Firefall spot was split into two files and Nilviris was split into three.
- Adds EventExecCont to .csx command list, adds quest blocks AddEventExecContBlock and AddEventAfterJumpContinueBlock.
- Adds the following quests to the disabled folder:
Megadosys Plateau Trial: Shadow of Heresy
The Ruler Overwhelmed by Power
Urteca Mountains Trial: A Trickle in the Darkness
Magick Called to the Deepest Depths
- Adds the world quest Flames of Darkness.
- Adds several Urteca caution spots.
- Adds several flags to QuestFlags.cs, fixes a typo with one entry, fixes some quest entries checking the wrong flag, deletes a duplicate entry (Q70020001Unk0 is the same as Julia0)
- Added the virtual function IsUnlocked to IOfficialPawnScript
- By default, if no implementation is supplied, it returns true
- Updated README.md on how to use this new feature
- Added support for server admin to define offical pawns.
- Added support for dynamically defined official pawns which change
based on the hiring player level.
- Added a new settings file official_pawns.csx
- Added new official pawns
- Annuate, Puala, Rumi and WhiteKnight
- Updated deps to stable implementation with no security issues.
- Updated code to address backwards breaking changes due to deps update.
- Fixed an issue introduced with WebServer 1.1.8 which has different
semantics for "/", causing the "Welcome - Index Page!" to be returned
for everything.
- Renames check command 220 to MonsterGatheringSpotState, check command 223 to QuestOmEndAnimation and check command 224 to QuestOmEndAnimationNoMarker
- The Prince's Whereabouts MSQ now uses QuestOmEndAnimation for the lever. Cannons on Rathnite Foothills also now show markers.
- Created a new folder for disabled .csx quests. Added four quests to this folder (Restored Medal of the Royal Family I-IV)
- Fixed an issue where DB state was only peristeted if the leader
delivered an item.
- Fixed an issue where the DB state was only updated for the leader in
shared quests.
- Fixed an issue with /giveitem which happens when you ask for too many
items.
- Added support for first time ever, in period and helping rewards.
- New quest rewards will no longer be tied to the quest file
implementation after being rewarded.
- Quests now support partial reward claims.
- Added a new daily reset task for extreme missions.
- Fixed an issue with the next time being calculated on the same day as
the reset for newly added tasks.
Database version 59 -> 60
* Fix bug where appraising certain items in BBM while you had a copy of that item in your regular character's storage chest would throw an error. Fix bugs where SQLite would occasionally have a DB lock conflict due to poor connection management.
* Be more aggressive when clearing out invalid priority quests.
* Fix bug where the Beauty Shop would sometimes complain about PRICE_NO_MATCH when trying to pay with Silver Tickets.
* Fix bugs where pawn search wouldn't display craft levels, and didn't support filtering by craft level.
* Migrate 58 > 59. Store character_id in the connections table so we can use it for player tracking. Adjust player tracking to be driven by the DB.
* Fix bugs where bazaar processes could sometimes delete items if the storage was full.
* Add feature where you can sell special items (like PP crystals) to consume them, instead of having to spam use them.
* Fix bug where deleting pawns would badly mangle the equipment entries of other pawns owned by the same character.
* Add support for LightQuestRepeatsPerDay, limiting the number of times a board quest can be offered to a single player per day.
* Research for EquipStatId.
* Maybe fix bug where base game augments were secretly applying even in BBM? Maybe fix bug where certain alt-pallet skills wouldn't work in multiplayer due to missing context information.
* Update database migration version.
* Automatically promote localhost players to admin when running in debug mode. Adjust /finishquesttype to clear progress when finishing quests.
* Fix bug where hired pawns wearing job emblems weren't benefiting from the stats on them. Hired pawns now reflect the hiring character's job emblems entirely.
- Fix null pointer exception when weekly chest is opened.
- Play around with enabling 0 timeout in the dungeon.
- Add support for random layout in the dungeon.
* Adds packet structures, handlers, and server support for Player Mail, Blacklists, Group Chats and Message Sets.
Implements rudimentary GM features via chat command.
Adds support for IP Bans and muted players.
Simplifies how login stamps are handled.
Cleans up and modernizes some old packet handlers.
* Rebase. Fix CommandRoute and AccountRoute. Cleanup and response to PR comments. Rearrange some of the schedule_next stuff in the DB creation schema for clarity.