Commit graph

223 commits

Author SHA1 Message Date
Nirrudn
38c6efe5be Fix Migration Syntax for Postgres
Corrects two problems that cause migration errors on Postgres, as pointed out by SirArren.
2026-07-29 17:05:33 -04:00
Nirrudn
1525f022ee Feature: Serverside Localization
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.
2026-07-07 11:26:47 -04:00
Nirrudn
07723c423a Update schema_sqlite.sql
Update DB schema to match migration changes in PR #1080 so new databases don't throw errors on character creation and hang the client.
2026-07-04 10:01:26 -04:00
Jun
60851f63c7 Sealed orange chests in BBM can drop BBM jewelry, configurable in JSON, also add isPaidReset to database for tracking 2026-06-21 22:18:58 -04:00
Paul Campbell
3c19970df0 refactor: Improve Job Training
- Extracted season 3.2 updates for default config file from donutland.jp
- Made server more tolerant to json changes so admin can change json
  without needing to update database per character.
- Updated json to use the UIID name directly instead of converting enemy
  id to UUID.
- Added missing enemy ids
2026-05-09 15:34:07 -04:00
Paul Campbell
fcff123fd4 feat: Add support for partial deliveries
Allow a player to trade in x/y items and remember that x was traded next
time they log in.

- Added checkpoints to
  - q20000017.json
  - q20000017_1.json
  - q20000017_2.json

Database Version 61 -> 62
2026-05-09 08:57:52 -04:00
Paul Campbell
dce9495e37 code review: Fix issues reported
- High: persisted instanced rewards are cloned as non-instanced.
- High: instanced reward UIDs are cached on quest definition objects.
- Medium: legacy reward-box materialization inserts instanced box rows without staged rows.
- Medium: missing staged data is treated as success and destroys the reward.
- Low/Medium: JSON crest level default disagrees with the schema.

Additionally:
- Removed support for wrongly spelled json keys in rewards
- Updated generic_quest_state_machine.md
- Cleaned up reward syntax while making it backwards compat.
2026-05-03 22:02:47 -04:00
Paul Campbell
d98008c97d feat: Add support for instanced item rewards
- Quests can now define rewards which have crests, color, etc. as part of
  the item reward.
- Quests can define items with random crests rolled when claimed.

Database version 60 -> 61
2026-05-03 22:02:46 -04:00
Paul Campbell
49845889d8 feat: Improve quest rewards
- 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
2026-05-03 22:02:46 -04:00
Ryan Yappert
c8a28972aa
Fix: General Bugfixes, April 2026 (#1031)
* 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.
2026-04-30 21:28:52 -07:00
Paul Campbell
7200ef02f0 feat: World Quest Rewards
- Added support to handle randomization of quest rewards on repeat
  clears.
- Added support to configure reduction of point rewards on repeat
  clears.
- Once the world quest stask fires, full rewards will be available until
  first clear for that period again.
2026-04-24 20:07:16 -04:00
Paul Campbell
0bd7bcd404 feat: Add Sub Story Quest Handlers
Added handlers and required packets for:
- QuestAddPackageQuestPointHandler
- QuestGetPackageQuestInfoDetailHandler
- QuestGetPackageQuestInfoHandler

Added new quests
- q10300102.csx
- q60300030.csx

Added a new settings file substory.csx to describe the mission
requirements.

Database 56 -> 57

Co-authored-by: @hankhotspur
2026-04-21 23:02:46 -04:00
Ryan Yappert
a7c1100ebe
Fix migration, again. (#1029) 2026-04-18 19:14:03 -07:00
Ryan Yappert
53c3f59f68
Fix migration. (#1028) 2026-04-18 01:41:32 -07:00
Ryan Yappert
0e865d30cf
Feature: Communication Features (#983)
* 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.
2026-04-18 01:27:57 -07:00
Paul Campbell
8849b28e09 feat: Implement World Quest Rotation
Implemented the world quest rotation as it was in the original game.
Added a setting which allows this version or the reset every instance
version to be used. Added a setting which toggles filtering world quests
by party leader area rank or not.
2026-04-05 08:02:02 -04:00
alborrajo
35b11cce3e Fix latest db migration 2026-03-19 01:31:45 +01:00
Ashley
33e06fa12e
Comma fix. I hate commas. 2026-03-18 23:15:44 +01:00
Ashley
35800d266a
Little Adjustments for the Pawn ID. 2026-03-18 23:12:03 +01:00
Ashley
e13eda6a9a
SQL Fixes 2026-03-17 16:54:42 +01:00
Ashley
3589a53f7b
Fix Partner Pawn Rewards - by Bunie 2026-03-17 16:16:43 +01:00
Ashley
c7ad825033
Merged Migrations and minor adjustments. Final PR. 2026-03-17 00:28:39 +01:00
Ashley
53f47f8b40
In-Memory Caching, RPC Synchronization & more. 2026-03-15 14:36:44 +01:00
Ashley
99bd9cceac
Reworked code a bit more based on Feedback and moved CraftManager Operations to RAM. 2026-03-15 00:31:38 +01:00
Ashley
3f05443de7
Code Cleanup, Comments & Migration 2026-03-14 19:24:33 +01:00
Ryan Yappert
52efa51fa6
Fix: Bugfix Stack 08-21 ~ 09-02 (#958)
* Improve /godmode to also heal to full.
Add the moon phase name to /time.
Address edge bug in /fashion.
Fix bugs in /il and /sl chat commands.

Fix bug involving leftover invite records when joining an EntryBoard.
Fix bug when selling the materials gained from recycling equipment.
Fix BBM mangling inventory sort data.
Fix null reference edge case in InstanceGatheringItemManager::EmptySpots.
Fix key doors not properly sharing their state with party members.
Fix missing profile information when examining potential pawn hires.
Fix issue where certain pawn data handlers didn't properly return all the sub-notices they should.

When embodying BBM items that can stack (in unusual circumstances), attempt to merge stacks when possible.
Identify Seabell as the Extreme Mission Group 3.
Move the base stats from CharacterManager to CharacterCommon so they're a bit more convenient to access for CData conversions.

Add Megado Craft Room to safe stages.

Fix missing furniture crafting recipes that would normally be unlocked by achievements. Fix mis-attributed node for hunt board quests.
Expose the training room monsters as a new asset.
Fix missing Num for slayer stone crafting recipes.
Fix illegal items being handed out as part of S3 area supply rewards.

Cache the last LobbyLobbyDataMsg and gather it alongside contexts when you move into a hub to prevent players who were doing emotes from being invisible.
Don't allow writing the transient PawnState.Party to the DB; always write PawnState.None instead.
Make sure hub memory is wiped when changing game modes, to prevent ghost characters from standing around.
Be more consistent about only providing the clan short namein certain spots?

* Packet research: C2SConnectionPingReq, S2C_GET_CHEAT_INFO_REQ, C2S_GET_CHEAT_INFO_RES, CDataCycleContentsNews.

* Review comments.

* Expose BBM GG reset cost as setting at request.
2025-09-17 02:17:30 -07:00
Ryan Yappert
0c689e2a33 Review comments. Implement GG limit on resetting BBM. 2025-09-11 15:33:34 -07:00
Ryan Yappert
9d9f39f788 Implement BBM reset tickets, with proper tracking for seals earned and limited treasure (bracelets, earrings) taken. 2025-09-11 15:33:34 -07:00
Ryan Yappert
4a32358133 Migrate DB 51 -> 52. Implement BBM Red Mark Sealing of effects. Expose earring roll math to a mixin. Clean up some code duplication regarding rolling crests for BBM jewelry. 2025-09-11 15:33:34 -07:00
Ryan Yappert
48d9146eac Fix Postgres migration... again. 2025-08-27 01:38:28 -07:00
Ryan Yappert
4763c024a5 Fix Postgres migration. 2025-08-25 21:18:16 -07:00
Ryan Yappert
593d8ec123 Migrate DB 50->51. Clean up unused AdditionalStatus DB methods. Add support for Slayer Stones / "Add Status" when crafting. Implement EquipGetCraftLockedElementListHandler. Adjust the data structure of the limit break table and the corresponding CData. Add crafting recipes for remaining slayer stones. 2025-08-24 23:12:54 -07:00
Ryan Yappert
c9ec9272ed Increase usage of AbilityId and CustomSkillId when possible. Move skill/ability data into an asset so Visual Studio screams less about that file. Pawns learn EX skills when their Arisen learns them. Newly created pawns inherit these. Migrate DB 49 -> 50. Fix bug with secret augment UI. 2025-08-24 22:58:16 -07:00
Nirrudn
ae1e86bee1 Update Empty String in Migration Script
Postgres does not like using double quotes for empty strings so this migration was throwing an error.
2025-07-21 15:50:49 -04:00
Ryan Yappert
b360534cc4 Migrate DB -> v49. Remove GameStructure.cs and distribute its functionality. Refactor TimerManager and PartnerPawnManager. Implement proper persistence for rental pawns and pawn profile functionality. Implement rental points. Implement additional handling for support pawns losing their anchoring main pawn. 2025-07-20 19:31:51 -07:00
Paul Campbell
013a3d7426 feat: Season 3.1 main story quests
- Implemented the main story quest "The Royal Family Sacrament"
- Implemented the main story quest "The Approaching Demon Army"
- Implemented the main story quest "Portent of Despair"
- Implemented the main story quest "Diversionary Tactics"
- Implemented the main story quest "The Secret Entrance"
- Implemented the main story quest "A Desperate Infiltration"
- Implemented the main story quest "The Battle of Lookout Castle"
2025-06-15 11:31:35 -04:00
Paul Campbell
965478519d fix: Fix issues reported 6/13/2025
- Fixed an issue with HIBO orb unlocks not applied to player on login
- Fixed an issue where some HighOrb nodes were labeled as blood orbs
- Fixed migration key issue
2025-06-13 08:50:37 -04:00
Paul Campbell
1fecb64ac3 feat: Implement 3.0 HiBO tree and enable Epitaph Road (Rathnite)
- Added support for the 3.0 HiBO tree.
- Enabled Epitaph Road (Rathnite)
  - Updated q60300020.json
  - Moved unlock from MSQ to personal quest
- Reorganized scripts for job orb tree
  - Delete old ones if copy+paste
2025-06-11 21:00:20 -04:00
Paul Campbell
28345f1192 fix: Add migration files
Add migration files that should've been added to previous commit.
2025-06-07 21:32:55 -04:00
Ryan Yappert
49a6221d75 Remove skiptutorial. Add /ql for quest lookup due to ID changes.
Decayed quest cancellation notice on area reset.
Clean up EnemyId/EnemyUIId/ClientItemInfos implementation; use ItemId, EnemyId, and EnemyUIId when possible instead of uints
Light quest DB stuff, adjustments to handle variant ids, removing decayed quests when returning to town, rotation task and RPC for child servers.
Fix some tasks announcing to the non-head servers on the wrong route.
Migration 43 -> 44; add support for new quest_id + variant_index scheme for decoupling quest and schedule id.
Cleanup inconsistent packet id naming; add some new quest cancellation packets.
Light quest generation, mixin for light quest rewards, and asset.
Add DeliveryItemsLight and KillTargetEnemies block support to QuestBlockExtension. Add explicit support for DistributionStart/End in the quest asset and quest system.
Remove existing board quests.
2025-06-06 20:50:28 -07:00
Paul Campbell
c594b0dc0c feat: Add pawn favorites
Added the ability to save pawn favorites.
2025-05-31 16:31:48 -04:00
Sehkah
c369bf3998 Produce PSQL&SQLite compatible, safe minimum dates for stamp bonus. 2025-05-25 15:53:51 -04:00
Paul Campbell
a3316815af feat: Job Emblems
- Added support for job emblems
- Created new personal quests to unlock emblems.
- Added support for emblems using the menus at Renton.
- Created new handlers and packets for the new menus.
2025-05-23 23:00:13 -04:00
Paul Campbell
f5905e8e7d feat: Add support for "Skill Augmentation"
- Add new scripting module for "Skill Augmentation"
- Locked EM4 skills behind completion of EM4
- Implemented tree layouts for all jobs
- Implemented new REQ, RES and handlers for Skill Augmentation
- Implemented the quest Skill Augmentation Guidance of a Renewed White Dragon
- Implemented augmentation trials for all jobs
- Updated adventure guide logic to handle when to present quests better.
- Adjusted how personal quests for vocation are distributed to remove
  the need to change areas or log out to get them to show.

Thanks for help from multiple players to help us collect the skill tree
data.

Co-authored-by: 𝔢𝔪𝔪𝔞 𝔢𝔳𝔢𝔯𝔤𝔞𝔯𝔡
Co-authored-by: Cold Blood
Co-authored-by: Genzyuro
Co-authored-by: あゆふぁ
Co-authored-by: 鬼頭オパーリン
Co-authored-by: GaethanT
Co-authored-by: Sapphiratelaemara
Co-authored-by: King Flipsta
2025-05-10 15:19:53 -04:00
Sehkah
d35c67b2ab Handle Postgres-specific autoincrement failures. 2025-05-05 00:15:55 +02:00
Sehkah
5a61567a5b Add new primary key & efficient upsert to ddon_job_master_active_orders_progress; migrates DB from v39->v40. 2025-04-27 22:39:40 +02:00
Sehkah
a0eef2ec3c Add new UUIDv7 based item UID approach; migrates DB to v39. 2025-04-27 17:33:55 +02:00
Paul Campbell
af5490f51a fixes: Add fixes found while testing
- Added a primary key to ddon_completed_quests
- Fix pawn rewards crash
2025-04-25 20:17:41 -04:00
Sehkah
48d97e8af8 Reintroduce "IF NOT EXISTS" in base schema now that MariaDB is no longer a concern. 2025-04-20 22:38:19 +02:00
Sehkah
6520d83f1a Add convenience script to convert SQLite schema without having to start up the application.
Avoid "if not exists" in base schema as this is only expected to run once anyway, otherwise mariadb is not happy about conditional indexes.
2025-04-20 22:10:55 +02:00