1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-01 04:07:45 +00:00
Commit graph

58 commits

Author SHA1 Message Date
0b470dc28b Make unlocks persistent, fix player name in chat
The PlayerStatus struct shifted around recently, so I fixed the offsets
yet again. Unlocks should be persistent now, but this as usual requires
a database wipe, sorry!

I also included some refactors of the !unlock debug command that still
had references to the old unlock_action API.
2025-06-27 23:28:56 -04:00
db3166d8b3 Add various things useful for using Kawari downstream
Such as better unknown packet parsing, IPC opcode names and
more stuff exposed as public API.
2025-06-26 20:59:46 -04:00
ddb67383af Fix more easy Clippy warnings 2025-06-23 21:14:38 -04:00
thedax
82e5021979
Implement the //gm teri_info command, and fix a typo (#56)
Implement the `//gm teri_info` command, and fix a typo. Said typo was in gamedata.rs, confusing the FingerL column for the SoulCrystal column.
2025-06-23 13:39:37 -04:00
53a3d5d6a4 Load the actual weather rates for zones instead of using Sunny
This doesn't match up with retail yet (I don't know why.) But this
fixes the appearance of lots of dungeons and other instanced
content that have their own special weather.
2025-06-21 14:55:17 -04:00
01508fd506 Add function to get an action's cast time
For future spell-related stuff.
2025-06-21 10:36:21 -04:00
5accb992a9 Add !equip command to quickly change your equipped item
See USAGE, this is actually extremely useful! No more hunting for item
IDs!
2025-05-12 22:32:03 -04:00
1cdd2d4bff Fix the character currently equipped items not showing in the lobby
We were missing two additional integers in the ClientSelectData work
definition. Once we added those, the equipment now shows up!
2025-05-12 16:11:17 -04:00
94ed036431 Add script for the Teleport action
This makes the Teleport action functional now, although it looks pretty
rough as it warps you instantly instead of waiting for the action to
actually finish.
2025-05-11 10:12:02 -04:00
90a4f4ea0c Switch to new physis sheets name
Nothing changed API-wise apart from that. We also have the ability to
now pin on a game version, which is super helpful.
2025-05-10 09:25:22 -04:00
9787126a1b Replace (most of) the remaining Excel parsing with Physis Sheets
The only one remaining is for Item data, but that can't be ported yet
because the new API only fetches the first page for now.
2025-05-09 18:35:44 -04:00
df789b52c9 Update to latest Physis Sheets API for error handling 2025-05-09 18:11:18 -04:00
99c92d1b67 Update and use the nice, new Physis ColumnData API
Now the GameData::get_warp function looks much closer to how I want it
to!
2025-05-09 18:03:25 -04:00
93923ff7a8 Begin using Physis Sheets, port warp finding code to it
Kawari is starting to have more and more Excel-based code, so having a
nicer way to access it is nice. This only works for simple cases for
now, and easy one is finding a warp.
2025-05-09 17:48:56 -04:00
7f729bfd99 Update dependencies (binrw, physis, bitflags)
This updates three major crates we use to the latest version with all of
their API changes, and the others too. Notably, this removes the Syn v1
dependency thanks to binrw 0.15 switching to Syn v2.
2025-05-09 15:25:57 -04:00
f338530e6d Fix rotations sent to other players
There was two problems I was running into:
1. The move packet changed slightly, using a different way to encode the
rotation. In hindsight, it should seem obvious they would encode it the
same way for CommonSpawn and ActorMove.
2. write_quantized_rotation did it's order of operations wrong, and
it would spit out nonsensical rotations.

Both issues are fixed and you can see the other player's rotation
correctly now!
2025-05-08 21:52:50 -04:00
4c17f28eb0 Add Lua API for commands
This is super simple, you get the player and the args (which you can
choose to split if you so choose.) I reimplemented the !setpos, and will
start doing the rest of the commands.
2025-05-06 21:57:52 -04:00
fec6665d8d Make Limsa Inn warp functional
This was surprisingly easy, so now this works. You can't exit the inn
yet, though!
2025-05-05 22:04:39 -04:00
e7fb661244 Implement Fantasia and remaking your character
Everyone's favorite copying mechanism/purchasable item is now functional
in Kawari. The item doesn't disappear once you use it, because there's
no API for that yet.
2025-05-02 15:36:22 -04:00
5111a38424 Re-organize IPC segments into the ipc module
These were kind of scattered everywhere, instead we should move them
into their own module. Kawari's custom IPC is moved here too.
2025-05-02 00:47:11 -04:00
afed151488 Add "character backup import" feature to the account management page
We have had an import feature for a while, allowing you to easily
recreate your retail character from Auracite backups. But the feature
was implemented *before* we had proper service accounts, and it always
assigned it to ID 1.

Now it's moved to the user-visible account management page.
2025-05-01 15:35:51 -04:00
ed8ccb86ee Move model id grabbing to Inventory, fixup ClientSelectData
I wanted to make the lobby screen reflect your currently equipped items,
but that doesn't yet for some reason. These are still good refactorings
though!
2025-04-30 23:05:43 -04:00
20030c18c8 Move work definitions to their own module 2025-04-22 16:07:39 -04:00
e5672e91f2 Show the currently equipped weapon on your character
Oops, I was turning u64 model ids into u16 and then changing it to
either a u32/u16. That's stupid, but now it's fixed and we can display
weapons!
2025-04-18 13:20:25 -04:00
ba91ca4291 Fix various Clippy warnings 2025-04-14 16:24:46 -04:00
ca94e26e1c Attempt to fix other player rotations
This doesn't work just yet, but I guess I'm getting closer.
2025-04-11 10:32:52 -04:00
b3b816c511 Use bool in "check if name is free" IPC instead of u8
This doesn't change anything functionally, just works a bit nicer.
2025-04-11 08:41:50 -04:00
e9ef724f05 Make get_primary_model_id return an Option 2025-04-11 08:36:17 -04:00
96bcdf1238 Fix various Clippy warnings 2025-04-11 08:32:55 -04:00
90e5e191e9 Integrate Login<->Lobby servers, remove placeholder service account id
All accounts were sharing the same character list, but now they should
be properly separated. This also modifies the login database to prepare
for multiple service accounts, but there's no way to manage them in the
web interface yet still.
2025-04-05 21:36:56 -04:00
f1b674320e Send existing actors to any newly connecting client 2025-04-01 20:23:23 -04:00
924c5a1530 Fix various warnings 2025-03-31 21:58:51 -04:00
1a7da9d662 Update dependencies, remove Physis chardat workaround 2025-03-31 17:26:56 -04:00
1ed968f71e Remove Item Excel parsing from the hot network path
I seem to have finally restored the reliability back to how it used to
be, it seems the crux of it was the Excel sheet reading for Items. I
moved the parsing to the start-up instead.
2025-03-30 23:48:11 -04:00
eae962cc85 Multiple fixes attempting to fix packet errors
It doesn't unfortunately, there's still a bunch of errors when decoding
packets. These are all decent fixes though.
2025-03-30 21:42:46 -04:00
caf70ea469 Pass GameData into Zone, stop loading the same zone twice on login 2025-03-30 19:13:24 -04:00
243d94c586 Add preliminary support for restoring character backups from Auracite
Not much is importable yet - pretty much just the character's name and
appearance.
2025-03-30 18:52:00 -04:00
ae1ca2f92d Replicate actor spawning and movement to other clients
This now works and Kawari has achieved basic multiplayer! This is of course with
a hundred caveats:
* Previously spawned players are not backfilled
* There is no range or zone detection
* They are carbuncle clones of you, not the other character's data

But it actually WORKS!
2025-03-30 18:03:42 -04:00
37c19ee1b8 Start sharing the Physis GameData instances
Instead of standalone functions in the common module to perform game data tasks,
there is now a shared GameData struct that these functions moved to. This speeds
up a few things, and can take advantage of Physis' built-in index caching.

I know the current solution isn't ideal (each connection has to mutex lock to
access gamedata) but it's at least better than before.
2025-03-30 10:34:42 -04:00
68d3b07acb Load model ids for items instead of hardcoding them
This makes non-female Miqotes load their racial starting gear correctly.
2025-03-30 10:16:40 -04:00
0b1a67fc9c Remove some hardcoded values in ActionResult 2025-03-30 09:35:53 -04:00
ddcfebe289 Add tests for read_string and write_string 2025-03-29 20:12:45 -04:00
ff3313a0f9 Add UpdateHpMpTp packet, make sprint take away debug monster health
This is just for debugging, I want to make attack actions do this
instead.
2025-03-29 12:25:22 -04:00
31c000b823 Calculate base racial attribute stats, send to client 2025-03-29 09:02:31 -04:00
63bc9031c9 Restore player position and rotation on login 2025-03-29 00:28:49 -04:00
bcbe62af06 Add packets related to playing events and scenes 2025-03-28 23:00:32 -04:00
45f92e9e54 Add OnlineStatus and GameMasterRank enums 2025-03-23 11:37:00 -04:00
3f23eea9c7 Add ObjectId and ObjectTypeId structs
This is to make it easier to defaut to INVALID_OBJECT_ID. To test if this works,
the actor from !spawnnpc should target the player.
2025-03-23 10:53:22 -04:00
1acf73c484 Move Position struct to common module 2025-03-22 22:01:32 -04:00
0069196e3c Move some constants to common module 2025-03-22 19:17:01 -04:00