78 lines
5.1 KiB
Markdown
78 lines
5.1 KiB
Markdown
---
|
|
title: "Kawari Progress Report 9 - Patch 7.21"
|
|
date: 2025-05-01
|
|
draft: false
|
|
tags:
|
|
- FFXIV
|
|
- Reverse Engineering
|
|
series:
|
|
- Kawari Progress Report
|
|
summary: "Here is a new progress report, mostly smaller things but I managed to complete another patch update!"
|
|
---
|
|
|
|
Here is a new progress report, mostly smaller things but I managed to complete another patch update! I have begun working on my other FFXIV projects again, so Kawari has taken a bit of a back-burner.
|
|
|
|
# Equipped Weapons
|
|
|
|
Your equipped weapon is now displayed (subweapons are not yet, so some weapons will look broken.) It turns out I was truncating the model IDs, which was easy to fix:
|
|
|
|

|
|
|
|
More importantly, this fixes the broken-looking animations when you attacked enemies! (Or rather, the lack of animation...)
|
|
|
|
# Launcher
|
|
|
|
[Sapphire](https://github.com/SapphireServer/Sapphire) - _the_ alternative server for FFXIV - uses a completely bespoke launcher. Other projects expect you to know how to launch the game manually. Kawari isn't any better: [Astra](https://github.com/redstrate/Astra) has first-class support, but I shouldn't expect you to use it. I want Kawari to be approachable to the average FFXIV player!
|
|
|
|
What if we just re-used the _existing_ program SqEx ships, which is already very capable of launching the game?
|
|
|
|

|
|
|
|
This is now possible with [LauncherTweaks](https://github.com/redstrate/LauncherTweaks), and Kawari is now equipped to serve a launcher page that's compatible with the latest boot executable (and possibly older versions too!) We can do this too without modifying any game files, users just have to copy two files into their boot directory.
|
|
|
|
I don't know enough about [the launcher API](https://wiki.xiv.zone/Launcher#Native_Communication) to launch the game _yet_, but it can already read `FFXIV_BOOT.cfg`, open the config backup tool and more. Once that's done though I'll modify our usage guide accordingly!
|
|
|
|
# Patch 7.21
|
|
|
|
This patch was released since the last report, so it's time to update those IPC opcodes! This is actually quite a fun one, so I've been busy playing the retail game again instead of working on Kawari 😄
|
|
|
|
Anyway, Kawari should now work with this version[^1]. There's a few tidbits left such as events, but I think 7.22 will release soon - I don't want to waste too much time on 7.21.
|
|
|
|
# China Region
|
|
|
|
A special interest of mine recently is exploring the [Chinese](https://wiki.xiv.zone/China_Region) and [Korean](https://wiki.xiv.zone/Korea_Region) versions of the game (well, as much as an I can without being a citizen of either country.) I have implemented the bare minimum so a Chinese client to connect to the Kawari lobby server. They use a specialized login packet that was trivial to add:
|
|
|
|

|
|

|
|
|
|
This doesn't mean Chinese clients can load into a zone, unfortunately. Their client is too old and it predates any supported game version in Kawari. I suspect that even when they update, their IPC opcodes might still be different to their Global counterpart.
|
|
|
|
# Packet Obfuscation
|
|
|
|
[This is a new packet-related mess from SqEx](https://www.pcgamer.com/games/final-fantasy/i-cant-really-say-what-they-were-thinking-says-whistleblowing-modder-as-final-fantasy-14s-attempt-to-thwart-stalkers-falls-terribly-short-of-the-mark/), but fortunately doesn't require Kawari to implement it. I'm still worried will become mandatory in the future, so I'm going to work on supporting it anyway.
|
|
|
|
I have now added a toggle to the world config to tell the client we are sending obfuscated packets, but let me reiterate there's _no point_ in doing this. We don't actually obfuscate anything yet, so all it does is crash the game. If the server happens to send invalid data, I guess the client doesn't know how to handle it? Good thing that network errors don't exist!!
|
|
|
|
If you're interested in how the obfuscation works on the client, see [Perchbird's Unscrambler](https://github.com/perchbirdd/Unscrambler) which goes into a _ton_ of detail about the algorithm.
|
|
|
|
# Scripting
|
|
|
|
I have filled out more `ActionResult` fields for attacks. This is now exposed in the Lua API, and action scripts can specify whether they deal magical/physical damage, their aspect and more:
|
|
|
|
```lua
|
|
-- FastBlade.lua
|
|
function doAction(player)
|
|
effects = EffectsBuilder()
|
|
effects:damage("Normal", "Slashing", "Unaspected", 20)
|
|
|
|
return effects
|
|
end
|
|
```
|
|
|
|
# Character Backups
|
|
|
|
As I mentioned in a previous report, you could place character backups from [Auracite](https://auracite.xiv.zone/) into the server's `backups` folder to load them. This doesn't really work anymore now that we have accounts and such. Now this functionality is exposed on the account management website, where it makes more sense:
|
|
|
|

|
|
|
|
[^1]: With that, Kawari now works against four different patches: 7.21, 7.20h, 7.20 and 7.18h! With [iolite](https://github.com/0xbbadbeef/iolite), we can use an alternative server with 7.16.
|