diff --git a/Cargo.lock b/Cargo.lock index 95cb2817..9de1ff50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "kawari" -version = "7.51.1" +version = "7.51.2" dependencies = [ "binrw", "bitflags", @@ -769,7 +769,7 @@ dependencies = [ [[package]] name = "kawari-admin" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -786,7 +786,7 @@ dependencies = [ [[package]] name = "kawari-core-macro" -version = "7.51.1" +version = "7.51.2" dependencies = [ "proc-macro2", "quote", @@ -795,7 +795,7 @@ dependencies = [ [[package]] name = "kawari-frontier" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -809,7 +809,7 @@ dependencies = [ [[package]] name = "kawari-launcher" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -823,7 +823,7 @@ dependencies = [ [[package]] name = "kawari-lobby" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -838,7 +838,7 @@ dependencies = [ [[package]] name = "kawari-login" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "axum-extra", @@ -861,7 +861,7 @@ dependencies = [ [[package]] name = "kawari-navimesh" -version = "7.51.1" +version = "7.51.2" dependencies = [ "icarus", "kawari", @@ -874,7 +874,7 @@ dependencies = [ [[package]] name = "kawari-patch" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -887,7 +887,7 @@ dependencies = [ [[package]] name = "kawari-run" -version = "7.51.1" +version = "7.51.2" dependencies = [ "nu-ansi-term", "tokio", @@ -895,7 +895,7 @@ dependencies = [ [[package]] name = "kawari-web" -version = "7.51.1" +version = "7.51.2" dependencies = [ "axum", "kawari", @@ -908,7 +908,7 @@ dependencies = [ [[package]] name = "kawari-world" -version = "7.51.1" +version = "7.51.2" dependencies = [ "async-trait", "axum", diff --git a/Cargo.toml b/Cargo.toml index 084e2a27..ef7c3189 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ members = [ resolver = "3" [workspace.package] -version = "7.51.1" +version = "7.51.2" edition = "2024" [workspace.lints.clippy] diff --git a/README.md b/README.md index bd66c9f4..936830de 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Modern server emulator for FFXIV. Updates for on the project can be found [on my ![](.github/main.png) -Kawari currently supports patch **7.51h1** (2026.06.10.0000.0000). We only support the Windows client. If you're looking for a 1.x server, check out our sister project [Kodama](https://codeberg.org/redstrate/Kodama). +Kawari currently supports patch **7.51h2** (2026.06.18.0000.0000). We only support the Windows client. If you're looking for a 1.x server, check out our sister project [Kodama](https://codeberg.org/redstrate/Kodama). To get started, there is a guide to [running Kawari in our documentation](https://docs.xiv.zone/kawari/setup/overview.html). diff --git a/docs/src/update_ingame_checklist.md b/docs/src/update_ingame_checklist.md index 50323475..4b9fbf39 100644 --- a/docs/src/update_ingame_checklist.md +++ b/docs/src/update_ingame_checklist.md @@ -93,6 +93,7 @@ Test Moogle Mail: - [ ] Once the duty begins, play through it as normal or use debug/GM commands to speed things up if desired. - [ ] Also test that Abandon Duty works. - [ ] Open a treasure chest. +- [ ] Enter Eden's Verse: Reflugence (`!unlockcontent 30094`) and ensure falling off the arena KOs your character. ## Housing - [ ] Enter a housing ward and ensure the zone loads correctly. @@ -117,7 +118,8 @@ The following tests should also be visible to others in the zone upon completion - [ ] Set a title for your character. These should be visible to other players. - [ ] Visit the market board and ensure you can view items. - [ ] Open the party finder and ensure you see the test entries. +- [ ] Trading: attempt to trade with another player, and ensure the client tells you that the other player is unable trade. +- [ ] Run the `/playtime` command and ensure it displays your character's total play time. For the following, ensure the following items display their correct unimplemented messages when trying to do them. - [ ] Fellowships & Fellowship Finder -- [ ] Trading - [ ] Set a friend group/marker on a friend in the friend list diff --git a/resources/data/constants.yml b/resources/data/constants.yml index 8861052b..d95b7db1 100644 --- a/resources/data/constants.yml +++ b/resources/data/constants.yml @@ -4,7 +4,7 @@ AETHERYTE_UNLOCK_BITMASK_SIZE: 30 AETHER_CURRENT_BITMASK_SIZE: 56 AETHER_CURRENT_COMP_FLG_SET_BITMASK_SIZE: 4 AVAILABLE_CLASSJOBS: 42 -BASE_INVENTORY_ACTION: 191 +BASE_INVENTORY_ACTION: 110 BEAST_TRIBE_ARRAY_SIZE: 20 BEGINNER_TRAINING_ARRAY_SIZE: 4 BUDDY_EQUIP_BITMASK_SIZE: 13 @@ -24,22 +24,22 @@ GRIDANIA_POS_START: 2213211 GUILDHEST_ARRAY_SIZE: 10 LIMSA_POS_START: 4101800 LOBBY_GAME_VERSION: 7500 -MAIL_DELETE_RESULT: 136 -MAIL_SEND_RESULT: 967 -MAIL_TAKE_ATTACHMENTS_RESULT: 227 +MAIL_DELETE_RESULT: 431 +MAIL_SEND_RESULT: 769 +MAIL_TAKE_ATTACHMENTS_RESULT: 912 MASKED_CARNIVALE_ARRAY_SIZE: 4 MINION_BITMASK_SIZE: 75 MISC_CONTENT_ARRAY_SIZE: 4 MOUNT_BITMASK_SIZE: 45 -OBFUSCATION_ENABLED_MODE: 240 +OBFUSCATION_ENABLED_MODE: 72 OBFUSCATION_TABLE_MAX: -- 68 -- 197 -- 219 +- 86 +- 72 +- 152 OBFUSCATION_TABLE_RADIXES: -- 107 -- 118 -- 97 +- 119 +- 119 +- 104 ORCHESTRION_ROLL_BITMASK_SIZE: 112 ORNAMENT_BITMASK_SIZE: 8 RAID_ARRAY_SIZE: 28 @@ -48,10 +48,10 @@ SUPPORTED_BOOT_VERSION: 2026.04.10.0000.0001 SUPPORTED_EXPAC_VERSIONS: - 2026.05.15.0000.0000 - 2026.05.25.0000.0000 -- 2026.06.10.0000.0000 -- 2026.06.10.0000.0000 -- 2026.06.10.0000.0000 -SUPPORTED_GAME_VERSION: 2026.06.10.0000.0000 +- 2026.06.18.0000.0000 +- 2026.06.18.0000.0000 +- 2026.06.18.0000.0000 +SUPPORTED_GAME_VERSION: 2026.06.18.0000.0000 TITLE_UNLOCK_BITMASK_SIZE: 112 TRIAL_ARRAY_SIZE: 14 TRIPLE_TRIAD_CARDS_BITMASK_SIZE: 60 diff --git a/resources/data/opcodes.yml b/resources/data/opcodes.yml index f9ec1214..e1fa20e7 100644 --- a/resources/data/opcodes.yml +++ b/resources/data/opcodes.yml @@ -1,387 +1,387 @@ ServerZoneIpcType: - name: ZoneInit comment: Inform the client which zone to load, along with some other miscellaneous information. - opcode: 139 + opcode: 823 size: 136 - name: ActorControlSelf comment: Control player actor state, from playing emotes to making them invisible. - opcode: 866 + opcode: 356 size: 40 - name: PlayerStats comment: Contains various character statistics like Strength and HP. - opcode: 279 + opcode: 590 size: 144 - name: PlayerSetup comment: Lots of useful and persistent information like which dungeons are unlocked. - opcode: 936 + opcode: 272 size: 2954 - name: UpdateClassInfo comment: Updates class-specific information, like your currently synced level. - opcode: 940 + opcode: 916 size: 16 - name: SpawnPlayer comment: Used to spawn players actors in. - opcode: 948 + opcode: 736 size: 664 - name: InitResponse comment: Sent by the server as response to ZoneInitRequest. - opcode: 215 + opcode: 632 size: 16 - name: LogOutComplete comment: Informs the client that the server-side log out preparations are complete, and it's safe to disconnect. - opcode: 529 + opcode: 760 size: 8 - name: ActorSetPos comment: Teleport to another position in the current zone. - opcode: 305 + opcode: 830 size: 24 - name: ServerNoticeMessage comment: Display a purple server notice message in the chat window, or in some cases, on-screen. Usually used for login messages and imminent maintenance notices. - opcode: 865 + opcode: 320 size: 776 - name: PrepareZoning comment: Inform the client to display next loading screen, how long it should last and other information. - opcode: 486 + opcode: 549 size: 16 - name: ActorControl comment: Control another actor's state, from playing emotes to making them invisible. - opcode: 639 + opcode: 415 size: 24 - name: ActorMove comment: Move actors other than the current player. The client animates the actor to this new position. - opcode: 870 + opcode: 462 size: 16 - name: Blacklist comment: Sent by the server in response to RequestBlacklist. - opcode: 153 + opcode: 492 size: 968 - name: SocialList comment: Sent by the server in response to SocialListRequest. - opcode: 968 + opcode: 933 size: 1136 - name: SpawnNpc comment: Used to spawn friendly or battle NPCs. - opcode: 275 + opcode: 888 size: 656 - name: StatusEffectList comment: Update an actor's status effect list. - opcode: 299 + opcode: 306 size: 384 - name: WeatherId comment: Change the weather in the current zone. - opcode: 606 + opcode: 429 size: 8 - name: UpdateItem comment: Update a specific inventory slot. - opcode: 788 + opcode: 380 size: 64 - name: ContainerInfo comment: Update the status of one container, for example the amount of items contained within. - opcode: 257 + opcode: 777 size: 16 - name: EventResume2 comment: Start a scene for the current event. - opcode: 385 + opcode: 857 size: 16 - name: EventResume4 comment: Unknown, seen in Out on a Limb. - opcode: 707 + opcode: 181 size: 24 - name: EventResume8 comment: Unknown, seen in Out on a Limb. - opcode: 230 + opcode: 585 size: 40 - name: EventScene2 comment: Start a scene for the current event. - opcode: 667 + opcode: 318 size: 40 - name: EventScene4 comment: Start a scene for the current event. - opcode: 680 + opcode: 491 size: 48 - name: EventScene8 comment: Start a scene for the current event. - opcode: 542 + opcode: 693 size: 64 - name: EventScene16 comment: Start a scene for the current event. - opcode: 781 + opcode: 584 size: 96 - name: EventScene32 comment: Start a scene for the current event. - opcode: 397 + opcode: 138 size: 160 - name: EventScene64 comment: Start a scene for the current event. - opcode: 621 + opcode: 498 size: 288 - name: EventScene128 comment: Start a scene for the current event. - opcode: 586 + opcode: 684 size: 544 - name: EventScene255 comment: Start a scene for the current event. - opcode: 734 + opcode: 366 size: 1052 - name: EventStart comment: Have the client to load this event. - opcode: 854 + opcode: 514 size: 24 - name: UpdateHpMpTp comment: Update an actor's HP & MP values. - opcode: 916 + opcode: 342 size: 8 - name: ActionResult comment: Results of an action, in response to ActionRequest. - opcode: 473 + opcode: 893 size: 124 - name: Equip comment: List of model IDs to apply to yourself or another actor. - opcode: 452 + opcode: 819 size: 72 - name: DeleteActor comment: Free up the specified spawn index of an actor. - opcode: 893 + opcode: 190 size: 8 - name: EventFinish comment: Stop an event that was previously playing. - opcode: 994 + opcode: 114 size: 16 - name: Condition comment: List of networked conditions applied to the player. - opcode: 427 + opcode: 244 size: 16 - name: ActorControlTarget comment: Unknown purpose. - opcode: 827 + opcode: 721 size: 32 - name: CurrencyCrystalInfo comment: Update the player's currencies, used instead of UpdateItem. - opcode: 359 + opcode: 315 size: 24 - name: Config comment: Update an actor's equip display flags. - opcode: 668 + opcode: 362 size: 8 - name: PingSyncReply comment: Sent by the server in response to PingReply. - opcode: 915 + opcode: 103 size: 32 - name: InventoryActionAck comment: Acknowledging when the client is updating their inventory in some way (typically when interacting with shops.) - opcode: 198 + opcode: 537 size: 16 - name: QuestCompleteList comment: List of already completed quests. - opcode: 975 + opcode: 737 size: 816 - name: UnkResponse2 comment: Unsure the true purpose of this, but it's needed for the Unending Journey to function. - opcode: 367 + opcode: 807 size: 8 - name: InventoryTransaction comment: Informs the client of when the inventory is being updated (typically when interacting with shops.) - opcode: 847 + opcode: 675 size: 48 - name: InventoryTransactionFinish comment: Sent at the end of a sequence of InventoryTransaction packets. - opcode: 620 + opcode: 353 size: 16 - name: ContentFinderUpdate comment: Update the duty finder state. - opcode: 118 + opcode: 885 size: 40 - name: ContentFinderFound comment: Show a dialog that the duty finder content was found. - opcode: 253 + opcode: 587 size: 40 - name: SpawnObject comment: Used to spawn objects in. - opcode: 424 + opcode: 866 size: 64 - name: ActorGauge comment: Contains classjob-specific gauge information. - opcode: 189 + opcode: 928 size: 16 - name: FreeCompanyInfo comment: Presumably contains information about the current free company. - opcode: 589 + opcode: 377 size: 80 - name: TitleList comment: Contains the acquired title list. - opcode: 826 + opcode: 108 size: 112 - name: QuestActiveList comment: Contains the list of active (or in-progress quests. - opcode: 252 + opcode: 410 size: 480 - name: LevequestCompleteList comment: Contains the list of completed levequests. - opcode: 914 + opcode: 349 size: 232 - name: ShopLogMessage comment: Sent by the server when an item is obtained from shops that accept gil. - opcode: 378 + opcode: 883 size: 32 - name: UpdateInventorySlot comment: Sent by the server typically when a shop transaction takes place, usually to update currency. - opcode: 226 + opcode: 291 size: 64 - name: EffectResult comment: Unknown purpose. - opcode: 176 + opcode: 751 size: 96 - name: LogMessage comment: Sent by the server to send a predefined log message in chat. - opcode: 852 + opcode: 524 size: 24 - name: ContentFinderCommencing comment: Sent to give you the green checkmark before entering a CF zone. - opcode: 481 + opcode: 269 size: 24 - name: StatusEffectList3 comment: Unknown purpose. - opcode: 239 + opcode: 651 size: 360 - name: CrossworldLinkshells comment: Unknown purpose. - opcode: 426 + opcode: 595 size: 456 - name: SetSearchInfo comment: Updates the search info for the client in response to RequestOwnSearchInfo. - opcode: 838 + opcode: 399 size: 216 - name: WalkInEvent comment: Sent by the server when walking over a trigger (e.g. the teleport pads in Solution Nine.) - opcode: 219 + opcode: 238 size: 24 - name: GrandCompanyInfo comment: Unknown purpose. - opcode: 771 + opcode: 913 size: 8 - name: CraftingLog comment: Unknown purpose. - opcode: 722 + opcode: 833 size: 808 - name: GatheringLog comment: Unknown purpose. - opcode: 222 + opcode: 741 size: 104 - name: Fellowships comment: The fellowships you have joined. - opcode: 795 + opcode: 995 size: 808 - name: DailyQuests comment: Sent shortly after the server sends InitZone, this with UnkZoneLoad2 it makes everything load faster. - opcode: 281 + opcode: 724 size: 56 - name: DailyQuestRepeatFlags comment: Sent shortly after the server sends InitZone, this with UnkZoneLoad1 it makes everything load faster. - opcode: 259 + opcode: 859 size: 8 - name: Linkshells comment: Sent to inform the client about server-local Linkshells, not to be confused with cross-world ones. - opcode: 296 + opcode: 767 size: 448 - name: ChatMessage comment: Sent to nearby clients when a client sends a chat message in the say, yell, or shout channels. - opcode: 227 + opcode: 912 size: 1080 - name: LocationDiscovered comment: Sent by the server in response to NewDiscovery. - opcode: 921 + opcode: 755 size: 8 - name: Mount comment: Sent by the server to mount the player. - opcode: 624 + opcode: 846 size: 16 - name: SetOnlineStatus comment: Sent by the server to update your online status. - opcode: 525 + opcode: 875 size: 8 - name: FreeCompanyHierarchy comment: Sent by the server to inform clients about their free company's hierarchy info. - opcode: 271 + opcode: 155 size: 1440 - name: FreeCompanyGreeting comment: Sent by the server to inform clients about their free company's message of the day. - opcode: 817 + opcode: 321 size: 200 - name: FreeCompanyShortMessage comment: Sent by the server to inform clients about a short message from a character (including their own) in their free company. - opcode: 349 + opcode: 710 size: 120 - name: FreeCompanyHeader comment: Sent by the server to inform clients about the free company's header (top portion of the free company UI). - opcode: 294 + opcode: 892 size: 80 - name: FreeCompanyActivityList comment: Sent by the server to inform clients about the free company's recent activity history. - opcode: 884 + opcode: 700 size: 528 - name: CharaInfoFromContentIds comment: Sent by the server in response to RequestCharaInfoFromContentIds. - opcode: 808 + opcode: 372 size: 568 - name: InviteCharacterResult comment: Sent by the server to inform the client about their own new invite to another character. This can display a pre-defined log message if anything goes wrong, like the recipient going offline. - opcode: 241 + opcode: 458 size: 48 - name: InviteUpdate comment: Sent by the server to inform the client of an invitation changing state. - opcode: 301 + opcode: 357 size: 72 - name: PartyUpdate comment: Sent by the server when the party needs to be updated. - opcode: 576 + opcode: 388 size: 104 - name: PartyList comment: Sent by the server when the party list needs to be updated. - opcode: 844 + opcode: 988 size: 3672 - name: InviteReplyResult comment: Sent by the server to inform the client about its own invite reply. - opcode: 320 + opcode: 765 size: 48 - name: PartyMemberPositions comment: Sent by the server to inform the client about the party's positions in the world. - opcode: 145 + opcode: 224 size: 64 - name: AcceptQuest comment: Sent by the server to add a quest to your journal, I think. - opcode: 740 + opcode: 745 size: 8 - name: UpdateQuest comment: Sent by the server to update a quest. - opcode: 492 + opcode: 216 size: 24 - name: FinishQuest comment: Sent by the server when finshing a quest. - opcode: 186 + opcode: 137 size: 8 - name: UpdateMapMarkers8 comment: Unknown purpose. - opcode: 423 + opcode: 335 size: 112 - name: UpdateMapMarkers16 comment: Unknown purpose. - opcode: 648 + opcode: 827 size: 216 - name: UpdateMapMarkers32 comment: Unknown purpose. - opcode: 133 + opcode: 470 size: 424 - name: QuestTracker comment: A list of active or pinned quests, shows up under the duty list. - opcode: 232 + opcode: 203 size: 24 - name: HouseList comment: A list of basic house information. - opcode: 125 + opcode: 784 size: 1216 - name: HousingWardInfo comment: Sent by the server in response to the client requesting housing ward info on the residential aetheryte menu. - opcode: 132 + opcode: 905 size: 2416 - name: SupportDeskNotification comment: Sent by the server to indicate you have a support desk notification(?) !! Out of date as of 7.40. @@ -389,420 +389,420 @@ ServerZoneIpcType: size: 16 - name: ScenarioGuide comment: Sent by the server to update the scenario guide UI. - opcode: 433 + opcode: 762 size: 32 - name: LegacyQuestList comment: Sent by the server to send a list of completed FFXIV 1.x quests. - opcode: 789 + opcode: 600 size: 40 - name: DirectorVars comment: Unknown purpose. - opcode: 361 + opcode: 208 size: 24 - name: UnkDirector1 comment: Unknown purpose. - opcode: 703 + opcode: 504 size: 32 - name: PartyMemberPortraits comment: Displays the party member portraits for this duty. - opcode: 355 + opcode: 634 size: 184 - name: FieldMarkerPreset comment: A player in the client's party has applied a waymark preset. - opcode: 683 + opcode: 384 size: 104 - name: DeleteObject comment: Sent to the client to free up an object spawn index. - opcode: 175 + opcode: 484 size: 8 - name: GoldSaucerInformation comment: Sent to the client when opening the Gold Saucer window. - opcode: 143 + opcode: 219 size: 40 - name: UnkContentFinder comment: Unknown purpose, but it clears the currently operating content finder. - opcode: 651 + opcode: 329 size: 16 - name: TrustInformation comment: Sent to the client to initialize the Trust window. - opcode: 857 + opcode: 227 size: 728 - name: DutySupportInformation comment: Sent to the client to initialize the Duty Support window. - opcode: 713 + opcode: 509 size: 80 - name: PortraitsInformation comment: Sent to the client to initialize the Portraits window. - opcode: 657 + opcode: 759 size: 56 - name: InitializeObfuscation comment: Initialize the packet obfuscation system. - opcode: 464 + opcode: 215 size: 16 - name: BeginStrategyBoardSession comment: A client starts a strategy board sharing session with their party. - opcode: 381 + opcode: 466 size: 16 - name: StrategyBoard comment: The content id of the real-time sharing host, and the actual strategy board data to be shared. - opcode: 245 + opcode: 168 size: 1184 - name: StrategyBoardReceivedAck comment: The server informs the sharing client that a client in the party has received a strategy board. - opcode: 400 + opcode: 122 size: 16 - name: StrategyBoardUpdate comment: The client updates their strategy board during real-time sharing, and other party members are informed. - opcode: 992 + opcode: 828 size: 64 - name: EndStrategyBoardSession comment: The client stopped sharing their strategy board, or if it wasn't real-time, the transfer has completed. - opcode: 130 + opcode: 743 size: 16 - name: WaymarkUpdate comment: A client updated a waymark, and now their party needs to be informed. - opcode: 597 + opcode: 288 size: 16 - name: UnkContentFinder2 comment: Unknown purpose, but it controls something like hiding the Join button. - opcode: 436 + opcode: 728 size: 16 - name: Playtime comment: A client requested their playtime, and now they need to be informed. - opcode: 559 + opcode: 953 size: 8 - name: Countdown comment: A client initiated a countdown from the Party menu, and now their party needs to be informed. - opcode: 694 + opcode: 805 size: 64 - name: DirectorPopupMessage comment: Shows a popup message (usually reserved for NPCs and bosses.) Not sure if it's the only thing this does. - opcode: 664 + opcode: 332 size: 40 - name: DirectorSetupMapEffects64 comment: Seems to animate stuff like the train moving in the Tower of Babil. Unsure of its purpose elsewhere. - opcode: 565 + opcode: 977 size: 136 - name: DirectorSetupMapEffects128 comment: Seems to animate stuff like the train moving in the Tower of Babil. Unsure of its purpose elsewhere. - opcode: 461 + opcode: 649 size: 264 - name: DirectorMapEffect comment: Updates a map effect. - opcode: 980 + opcode: 128 size: 16 - name: FurnitureList comment: Sent by the server to inform the client about furniture (both indoor & outdoor) that exists in this ward or housing interior. - opcode: 701 + opcode: 980 size: 2416 - name: OwnedHousing comment: Sent to inform you of which housing you own/have access to. - opcode: 785 + opcode: 639 size: 136 - name: UpdateFittingShop comment: Sent to inform the client which items are listed under Latest Trends in Dreamfitting. - opcode: 439 + opcode: 682 size: 16 - name: UnkSocialResponse comment: Unknown purpose, but allows you to load in while sending the search info packet. - opcode: 802 + opcode: 255 size: 80 - name: UnkClassRelated comment: Seems to control the client's hotbars. - opcode: 666 + opcode: 395 size: 8 - name: EnmityList comment: Sent to update the enemity of the party. - opcode: 780 + opcode: 201 size: 72 - name: HaterList comment: Sent to update the people who hate you. - opcode: 182 + opcode: 442 size: 264 - name: DuelInformation comment: Information about an upcoming duel. - opcode: 217 + opcode: 810 size: 64 - name: MarketBoardItems comment: Sent to fill out the list of items on the Market Board. - opcode: 923 + opcode: 719 size: 176 - name: EffectResultBasic comment: Unknown purpose. - opcode: 120 + opcode: 764 size: 24 - name: AoeEffect8 comment: Unknown purpose. - opcode: 321 + opcode: 848 size: 636 - name: ActorCast comment: Unknown purpose. - opcode: 760 + opcode: 457 size: 32 - name: SearchPlayersResult comment: Sent to inform the client about how many search results were found. - opcode: 750 + opcode: 518 size: 8 - name: FriendGroupIcon comment: Sent to inform the client that SetFriendGroupIcon request has been acknowledged. - opcode: 787 + opcode: 198 size: 16 - name: DeepDungeonParty comment: Unknown purpose. - opcode: 762 + opcode: 910 size: 20 - name: DeepDungeonChests comment: Unknown purpose. - opcode: 328 + opcode: 941 size: 32 - name: DeepDungeonSetup comment: Unknown purpose. - opcode: 270 + opcode: 993 size: 24 - name: DeepDungeonMap comment: Unknown purpose. - opcode: 715 + opcode: 337 size: 56 - name: ExamineCharacterInformation comment: Sent to show character information in the Examine window. - opcode: 443 + opcode: 812 size: 944 - name: OtherSearchInfo comment: Used when the player requests someone else's search info. - opcode: 332 + opcode: 664 size: 424 - name: SetPlayerCustomizeData comment: Unknown purpose. - opcode: 794 + opcode: 522 size: 26 - name: CrossworldLinkshellsEx comment: Sent in response to the client opening the Crossworld Linkshell menu. It has additional information the login list does not. - opcode: 684 + opcode: 251 size: 520 - name: CrossworldLinkshellMemberList comment: Sent in response to CrossworldLinkshellMemberList. Sends the member list of this CWLS. - opcode: 859 + opcode: 582 size: 464 - name: SpawnTreasure comment: Unknown purpose. - opcode: 496 + opcode: 966 size: 112 - name: OpenedTreasure comment: Unknown purpose. - opcode: 476 + opcode: 172 size: 24 - name: TreasureFadeOut comment: Unknown purpose. - opcode: 208 + opcode: 641 size: 8 - name: FirstAttack comment: Unknown purpose. - opcode: 172 + opcode: 849 size: 16 - name: UnkFate comment: Seen while fates were initializing. - opcode: 631 + opcode: 558 size: 24 - name: CrossRealmListings comment: Sent to fill out the Party Finder. - opcode: 910 + opcode: 752 size: 1616 - name: CrossRealmListingsOverview comment: Sent to fill out the information for Party Finder tabs and other overview information. - opcode: 581 + opcode: 792 size: 48 - name: CrossRealmListingInformation comment: Sent in response to ViewCrossRealmListing - opcode: 210 + opcode: 730 size: 464 - name: CWLinkshellNameAvailability comment: The server responds to CheckCWLinkshellNameAvailability, informing the client if the desired name was available or not. - opcode: 894 + opcode: 508 size: 40 - name: NewCrossworldLinkshell comment: The server responds to NewCrossworldLinkshellInfoRequest, providing some information on the newly created/joined cwls. - opcode: 185 + opcode: 150 size: 64 - name: RetainerInfo comment: Sent when the client requests retainer information through the bell. - opcode: 671 + opcode: 825 size: 80 - name: RetainerInfoEnd comment: Seen after a sequence of RetainerInfo packets. - opcode: 459 + opcode: 221 size: 24 - name: CrossworldLinkshellDisbanded comment: The server informs the client that the linkshell has been disbanded. - opcode: 434 + opcode: 943 size: 40 - name: CrossworldLinkshellMemberLeft comment: The server informs the client that a member in the linkshell has left (including themself if it was them). - opcode: 627 + opcode: 515 size: 64 - name: CrossworldLinkshellRenamed comment: The server informs the client that the linkshell has been renamed. - opcode: 266 + opcode: 687 size: 88 - name: CrossworldLinkshellMemberRank comment: The server informs the client that a member in the linkshell has had their rank changed. - opcode: 949 + opcode: 774 size: 64 - name: CrossworldLinkshellInvite comment: The server informs the client about an invitation to a cross-world linkshell. - opcode: 551 + opcode: 233 size: 128 - name: CrossworldLinkshellJoinedSelf comment: The server informs the client about the linkshell they just joined. - opcode: 886 + opcode: 616 size: 48 - name: CrossworldLinkshellJoined2 comment: The server informs the rest of the linkshell about the member that just joined. - opcode: 330 + opcode: 279 size: 56 - name: MailboxStatus comment: Upon login, the server informs the client of how many letters they have in their mailbox, along with any that are from support/GMs. - opcode: 774 + opcode: 991 size: 16 - name: MailboxPreview comment: The server sends the client previews of letters they have received. - opcode: 895 + opcode: 354 size: 1168 - name: ShowLinkshellError comment: The server sends the client an error message due to something going wrong with a linkshell. - opcode: 200 + opcode: 247 size: 24 - name: HousingInteriorDetails comment: The server sends the client exhaustive information (wall/floor textures, window models, etc.) about the housing interior they entered. - opcode: 420 + opcode: 709 size: 56 - name: ApartmentList comment: The server sends the client a list of apartments in the current apartment building. - opcode: 110 + opcode: 565 size: 1584 - name: FriendRemoved comment: The server informs the client about the result of their RemoveFriend request. - opcode: 563 + opcode: 915 size: 48 - name: Letter comment: The server sends the full contents of a letter to the client. - opcode: 285 + opcode: 118 size: 616 - name: LetterUpdate comment: The server informs the client about a letter being sent or deleted. - opcode: 807 + opcode: 432 size: 144 - name: HousingOccupiedLandInfo comment: Contains owner information of an occupied housing plot. This packet is sent when clicking a placard of an occupied plot, when clicking an occupied plot in the house list, or when viewing FC estate information. - opcode: 608 + opcode: 900 size: 280 - name: HousingVacantLandInfo comment: Contains lottery information of a vacant housing plot. This packet is sent when clicking the placard of a vacant plot. - opcode: 543 + opcode: 546 size: 40 - name: HousingEstateGreeting comment: Contains the greeting text for a specific housing plot. This packet is sent when hovering the greeting text bubble in the house list. - opcode: 249 + opcode: 113 size: 208 - name: NpcYell comment: Seen during Gold Saucer GATE announcements. - opcode: 179 + opcode: 438 size: 32 - name: InteriorFurniturePlaced comment: The server informs the client about a piece of furniture that was placed in the current housing interior. - opcode: 925 + opcode: 697 size: 32 - name: Mogpendium comment: Contains character specific Mogpendium progress data. - opcode: 183 + opcode: 862 size: 144 - name: PlayerName comment: Sent in response to the RequestPlayerName client trigger. - opcode: 250 + opcode: 654 size: 40 - name: ExteriorFurniturePlaced comment: The server informs the client about a piece of furniture that was placed in the current housing ward. - opcode: 547 + opcode: 834 size: 32 - name: EorzeanTimeOffset comment: Probably a GM-only opcode, it sets the time of day in the current zone. - opcode: 653 + opcode: 521 size: 8 - name: FurnitureTranslatedForObserver comment: The server informs the client about a piece of furniture being moved/rotated indoors or outdoors. This is only sent to observing clients. - opcode: 636 + opcode: 391 size: 24 - name: SharedFATEInformation comment: Unknown purpose. - opcode: 134 + opcode: 135 size: 16 - name: UnkDirector2 comment: Unknown purpose. - opcode: 583 + opcode: 795 size: 24 - name: StatusEffectListDouble comment: Unknown purpose, seen in instanced content. - opcode: 997 + opcode: 343 size: 720 - name: StatusEffectListPlayerDouble comment: Unknown purpose, seen in instanced content. - opcode: 165 + opcode: 569 size: 720 - name: UnkJobGauge comment: Seen while dying in instanced content. - opcode: 229 + opcode: 871 size: 8 - name: UpdateRecastTimes comment: Supposedly, from FFXIVOpcodes. - opcode: 152 + opcode: 836 size: 640 ClientZoneIpcType: - name: InitRequest comment: Sent by the client when they successfully initialize with the server, and they need several bits of information (e.g. what zone to load.) - opcode: 793 + opcode: 984 size: 120 - name: FinishLoading comment: Sent by the client when they're done loading and they need to be spawned in. - opcode: 986 + opcode: 886 size: 72 - name: ClientTrigger comment: Sent for a variety of actions from the client, e.g. sheathing a weapon. - opcode: 294 + opcode: 892 size: 32 - name: SocialListRequest comment: Sent by the client when it requests the friends list and other related info. - opcode: 169 + opcode: 725 size: 16 - name: UpdatePositionHandler comment: Contains the client's new position after the player moves their character. - opcode: 349 + opcode: 710 size: 24 - name: LogOut comment: Sent by the client when the user requests to log out. - opcode: 436 + opcode: 728 size: 8 - name: Disconnected comment: Sent by the client when it's actually disconnecting. - opcode: 400 + opcode: 122 size: 8 - name: SendChatMessage comment: Sent by the client when they send a chat message. - opcode: 495 + opcode: 300 size: 1056 - name: GMCommand comment: Sent by the client when they send a GM command. This can only be sent by the client if they are sent a GM rank. - opcode: 702 + opcode: 218 size: 32 - name: ZoneJump comment: Sent by the client when the character walks into a zone transistion. - opcode: 950 + opcode: 603 size: 24 - name: ActionRequest comment: Sent by the client when a character performs an action. - opcode: 884 + opcode: 700 size: 32 - name: PingSync comment: Occasionally sent by the client, purpose is unknown. - opcode: 878 + opcode: 899 size: 32 - name: UnkSocialEvent comment: Unknown purpose. @@ -810,31 +810,31 @@ ClientZoneIpcType: size: 8 - name: ItemOperation comment: Unknown purpose. - opcode: 190 + opcode: 109 size: 48 - name: StartTalkEvent comment: Unknown purpose. - opcode: 991 + opcode: 601 size: 16 - name: EventReturnHandler2 comment: Unknown purpose. - opcode: 304 + opcode: 969 size: 16 - name: EventReturnHandler8 comment: Unknown purpose. - opcode: 866 + opcode: 356 size: 40 - name: Config comment: Unknown purpose. - opcode: 867 + opcode: 239 size: 8 - name: EventYieldHandler2 comment: Unknown purpose, but seen when trying to play a Gold Saucer arcade machine. - opcode: 401 + opcode: 638 size: 16 - name: EventYieldHandler4 comment: Unknown purpose. - opcode: 639 + opcode: 415 size: 24 - name: EventYieldHandler16 comment: Unknown purpose. @@ -846,23 +846,23 @@ ClientZoneIpcType: size: 520 - name: UnkCall2 comment: Unsure the true purpose of this, but it's needed for the Unending Journey to function. - opcode: 223 + opcode: 281 size: 8 - name: StandardControlsPivot comment: This packet is sent by the client when they pivot left or right on standard controls. It is sent once when beginning to pivot, and once when pivoting ends. - opcode: 103 + opcode: 473 size: 8 - name: QueueDuties comment: Queue for the selected duties. - opcode: 800 + opcode: 593 size: 40 - name: ContentFinderAction comment: Unknown purpose. - opcode: 805 + opcode: 906 size: 8 - name: EquipGearset comment: Unknown purpose. - opcode: 488 + opcode: 816 size: 72 - name: EquipGearset2 comment: Unknown purpose, and also unsure why it's different from EquipGearset. @@ -870,43 +870,43 @@ ClientZoneIpcType: size: 128 - name: StartWalkInEvent comment: Unknown purpose. - opcode: 989 + opcode: 908 size: 24 - name: NewDiscovery comment: Sent by the client when they discover a new location on the map. - opcode: 817 + opcode: 321 size: 16 - name: GMCommandName comment: Sent by the client when they send a GM command. This can only be sent by the client if they are sent a GM rank. - opcode: 440 + opcode: 439 size: 52 - name: GMCommandName2 comment: Sent by the client when they send a GM command. This can only be sent by the client if they are sent a GM rank. Seen in //gm buddy_name. - opcode: 641 + opcode: 107 size: 40 - name: RequestBlacklist comment: Seems to happen when opening the Blacklist window. - opcode: 973 + opcode: 472 size: 8 - name: RequestFellowships comment: Seems to happen when opening the Fellowships window. - opcode: 886 + opcode: 616 size: 8 - name: RequestCrossworldLinkshells comment: Seems to happen when opening the Cross-world Linkshells window. This requests the extended version of the list, CrossworldLinkshellsEx. - opcode: 200 + opcode: 247 size: 8 - name: SearchFellowships comment: Seems to happen when opening the Fellowship Finder. - opcode: 244 + opcode: 929 size: 112 - name: StartCountdown comment: Happens when starting a countdown through the Countdown window. - opcode: 895 + opcode: 354 size: 40 - name: RequestPlaytime comment: Happens when the client requests the playtime using the /playtime command. - opcode: 162 + opcode: 217 size: 8 - name: SetFreeCompanyGreeting comment: Happens when the client sets their free company's message of the day. May have additional uses? @@ -914,91 +914,91 @@ ClientZoneIpcType: size: 200 - name: SetClientLanguage comment: Happens during initialization, informs the server what the client's language is set to. - opcode: 915 + opcode: 103 size: 8 - name: RequestCharaInfoFromContentIds comment: Happens when the client requests more information about other characters, and only has their content id. - opcode: 465 + opcode: 435 size: 80 - name: PartyLeave comment: Happens when the client leaves their party. - opcode: 403 + opcode: 798 size: 8 - name: PartyDisband comment: Happens when the client disbands their party. - opcode: 444 + opcode: 448 size: 8 - name: InviteCharacter comment: Happens when the client invites another player to a party, adds them to their friend list, etc. - opcode: 291 + opcode: 557 size: 48 - name: InviteReply comment: Happens when the client responds to another player's party invitation. - opcode: 602 + opcode: 707 size: 16 - name: InviteReply2 comment: Happens when the client responds to another player's friend invitation. - opcode: 396 + opcode: 530 size: 48 - name: PartyMemberKick comment: Sent by the client to remove another player from their party. - opcode: 142 + opcode: 512 size: 48 - name: PartyChangeLeader comment: Sent by the client to relinquish leadership to another player in their party. - opcode: 795 + opcode: 995 size: 48 - name: RequestSearchInfo comment: Happens when the client requests search info for any player. - opcode: 813 + opcode: 701 size: 24 - name: RequestAdventurerPlate comment: Happens when the client requests the adventurer plate for any player. - opcode: 573 + opcode: 677 size: 16 - name: SearchPlayers comment: Happens when the client searches for players under the Social window. - opcode: 610 + opcode: 225 size: 176 - name: EditSearchInfo comment: Happens when the client wants to update the search info of the player. - opcode: 978 + opcode: 400 size: 216 - name: RequestOwnSearchInfo comment: Seems to happen when the client wants to know its own search info. - opcode: 974 + opcode: 496 size: 8 - name: WalkOutsideEvent comment: Sent by the client when walking outside a trigger (e.g. exiting Ul'dah in the opening.) - opcode: 720 + opcode: 333 size: 24 - name: EnterTerritoryEvent comment: Sent by the client when requesting to play an event (because we entered a territory.) - opcode: 120 + opcode: 764 size: 8 - name: Trade comment: Sent by the client while trading. - opcode: 550 + opcode: 863 size: 16 - name: ShareStrategyBoard comment: The client wishes to share a strategy board with their party. - opcode: 480 + opcode: 731 size: 1184 - name: StrategyBoardReceived comment: The client acknowledges receipt of a strategy board from another player. - opcode: 769 + opcode: 192 size: 16 - name: StrategyBoardUpdate comment: The client updates their strategy board during real-time sharing. - opcode: 376 + opcode: 161 size: 64 - name: RealtimeStrategyBoardFinished comment: The client finishes their real-time sharing session. - opcode: 747 + opcode: 245 size: 8 - name: ApplyFieldMarkerPreset comment: The client wants to apply a waymarker preset for their party. - opcode: 172 + opcode: 849 size: 104 - name: RequestFreeCompanyShortMessage comment: The client requests a character's short message in their free company. @@ -1006,135 +1006,135 @@ ClientZoneIpcType: size: 16 - name: QueueRoulette comment: The client queues into a roulette. - opcode: 490 + opcode: 539 size: 24 - name: InitiateReadyCheck comment: The client initiates a ready check for their party. - opcode: 750 + opcode: 518 size: 8 - name: ReadyCheckResponse comment: The client responds to an ongoing ready check from their party. - opcode: 633 + opcode: 486 size: 8 - name: RequestMarketBoardItems comment: When the client requests a list of specific items on the Market Board. - opcode: 438 + opcode: 425 size: 136 - name: SetFriendGroupIcon comment: When the client assigns a friend group icon to someone on their friend list. - opcode: 560 + opcode: 851 size: 16 - name: CreateLocalLinkshellRequest comment: The client requests the creation of a local linkshell. - opcode: 145 + opcode: 224 size: 40 - name: CrossworldLinkshellMemberListRequest comment: The client requests the member list for this cross-world linkshell. - opcode: 260 + opcode: 588 size: 16 - name: OpenTreasure comment: Unknown purpose. - opcode: 997 + opcode: 343 size: 8 - name: CrossRealmListingsRequest1 comment: Seen while opening the Party Finder. - opcode: 502 + opcode: 631 size: 56 - name: CrossRealmListingsRequest2 comment: Seen while opening the Party Finder. - opcode: 992 + opcode: 828 size: 40 - name: ViewCrossRealmListing comment: Seen while viewing information for a specific Party Finder listing. - opcode: 910 + opcode: 752 size: 16 - name: CheckCWLinkshellNameAvailability comment: The client requests if this name is available for use with a new cross-world linkshell. - opcode: 339 + opcode: 720 size: 40 - name: CreateNewCrossworldLinkshell comment: The client requests for the server to commence with creating the new cross-world linkshell after confirming its name's availability. - opcode: 593 + opcode: 982 size: 32 - name: DisbandCrossworldLinkshell comment: The client requests the deletion of a cross-world linkshell. - opcode: 836 + opcode: 452 size: 8 - name: LeaveCrossworldLinkshell comment: The client requests to leave a cross-world linkshell. Masters cannot do this, they first have to appoint a new Master or disband the linkshell entirely. - opcode: 268 + opcode: 336 size: 8 - name: RenameCrossworldLinkshell comment: The client requests to rename a cross-world linkshell. Only Masters can do this. - opcode: 648 + opcode: 827 size: 40 - name: SetCWLSMemberRank comment: The client promotes a member in their linkshell to a higher rank. Only Masters can do this if the target is another player, and only Leaders can target themselves to resign. Masters resign when they leave the linkshell. - opcode: 151 + opcode: 149 size: 24 - name: RemoveCWLSMember comment: The client kicks a member from one of their cross-world Linkshells. Only Leaders and Masters can do this. - opcode: 846 + opcode: 206 size: 16 - name: InviteCharacterToCWLS comment: The client invites another character to join their cross-world linkshell. Only Leaders and Masters can do this. - opcode: 498 + opcode: 234 size: 24 - name: LinkshellInviteReply comment: The client replies to a cross-world linkshell invite. - opcode: 764 + opcode: 157 size: 16 - name: RequestMailbox comment: The client requests the contents of their mailbox from the server. - opcode: 469 + opcode: 668 size: 8 - name: SendLetter comment: The client sends a letter to a friend. - opcode: 967 + opcode: 769 size: 688 - name: RemoveFriend comment: The client removes a player from their friend list. - opcode: 254 + opcode: 791 size: 48 - name: ViewLetter comment: The client opens a letter in their mailbox. - opcode: 392 + opcode: 643 size: 16 - name: DeleteLetter comment: The client deletes a letter in their mailbox. - opcode: 136 + opcode: 431 size: 16 - name: RewardDeliveryRequest comment: The client requests that any pending reward letters be sent to them. - opcode: 382 + opcode: 371 size: 8 - name: TakeLetterAttachments comment: The client requests that any attachments in this letter be given to them. - opcode: 227 + opcode: 912 size: 64 - name: Dive comment: The client dives underwater. - opcode: 305 + opcode: 830 size: 32 - name: WorldInteraction comment: The client interacts with the world in some way. - opcode: 271 + opcode: 155 size: 32 - name: PlaceFurniture comment: The client places furniture on their property (indoors or outdoors), or into the relevant storeroom (the furniture is not spawned in that case). - opcode: 587 + opcode: 552 size: 40 - name: TranslateFurniture comment: The client moves or rotates a piece of furniture. - opcode: 981 + opcode: 369 size: 32 - name: UpdatePositionHandlerInstance comment: Used for client updating their position in instances. Unsure why it's separate. - opcode: 256 + opcode: 689 size: 40 - name: FallFromArena comment: Happens when you fall off the edge of an arena. - opcode: 515 + opcode: 230 size: 24 ServerLobbyIpcType: - name: NackReply diff --git a/resources/data/scrambler/daytable.bin b/resources/data/scrambler/daytable.bin index d456c068..a18c2686 100644 Binary files a/resources/data/scrambler/daytable.bin and b/resources/data/scrambler/daytable.bin differ diff --git a/resources/data/scrambler/midtable.bin b/resources/data/scrambler/midtable.bin index a9bee709..a8867610 100644 Binary files a/resources/data/scrambler/midtable.bin and b/resources/data/scrambler/midtable.bin differ diff --git a/resources/data/scrambler/opcodekeytable.bin b/resources/data/scrambler/opcodekeytable.bin index 38a2d052..6398787f 100644 Binary files a/resources/data/scrambler/opcodekeytable.bin and b/resources/data/scrambler/opcodekeytable.bin differ diff --git a/resources/data/scrambler/table0.bin b/resources/data/scrambler/table0.bin index 3854c4e9..edd850b0 100644 Binary files a/resources/data/scrambler/table0.bin and b/resources/data/scrambler/table0.bin differ diff --git a/resources/data/scrambler/table1.bin b/resources/data/scrambler/table1.bin index b92bfe85..0dd5028b 100644 Binary files a/resources/data/scrambler/table1.bin and b/resources/data/scrambler/table1.bin differ diff --git a/resources/data/scrambler/table2.bin b/resources/data/scrambler/table2.bin index 1b8a8d98..6ea7eb10 100644 Binary files a/resources/data/scrambler/table2.bin and b/resources/data/scrambler/table2.bin differ diff --git a/resources/data/tests/zone/client/inventory_modify.bin b/resources/data/tests/zone/client/inventory_modify.bin index 0f51435f..e640e850 100644 Binary files a/resources/data/tests/zone/client/inventory_modify.bin and b/resources/data/tests/zone/client/inventory_modify.bin differ