1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-04-23 23:57:46 +00:00
Commit graph

299 commits

Author SHA1 Message Date
4f8f0d1fe2 Add !spawnclone command, rename !spawnactor
Curiously the spawned clone shows up as a player, despite not using the
NPCSpawn packet. This might be a suitable workaround for the
PlayerSpawn packet being buggy from our side.
2025-04-01 19:15:08 -04:00
b1653f0808 Commit and restore inventory from the World databse 2025-04-01 18:49:42 -04:00
fed21b3617 Make various packet dumping optional, turned off by default
This creates a lot of clutter, and only really interesting to
developers.
2025-04-01 16:58:39 -04:00
cbbeccb782 Fix README formatting 2025-03-31 23:31:52 -04:00
822d1f5139 Add GM command to give items, support equipping from inventory
Now with this command and support for *one* inventory slot, you can
now freely equip items to your character for testing.
2025-03-31 23:23:29 -04:00
32b6840e38 Don't include a copy of unused HTML pages in each binary
This reduces the size of the binary a little.
2025-03-31 22:03:33 -04:00
924c5a1530 Fix various warnings 2025-03-31 21:58:51 -04:00
0c76d847d5 Allow unequipping items, add packet for updating equipped model ids
The unequipped item currently disappears into the aether, but this
works now!
2025-03-31 21:49:12 -04:00
bc8535cce2 Fix chat message packet size 2025-03-31 21:16:52 -04:00
fbf8212f8f Fix logout for 7.20h 2025-03-31 21:16:52 -04:00
a5a9e49667 Initial update for 7.20h
This updates the set of opcodes and patch version for today's patch. Not
everything is working yet and there's a few missing ones, but overall it
looks good.
2025-03-31 21:16:52 -04:00
1bdacaaede Add inventory modification packet
The size isn't quite right yet, but whatever.
2025-03-31 20:05:37 -04:00
1a7da9d662 Update dependencies, remove Physis chardat workaround 2025-03-31 17:26:56 -04:00
b04fd6e8e1 Update README to new description 2025-03-30 23:51:22 -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
88edc0b27e Some Tokio tasks cleanup 2025-03-30 23:17:11 -04:00
a5ed126853 Improve Oodle buffer correctness
This does not fix the network bugs, but it's better I guess.
2025-03-30 22:54:30 -04:00
fccd752246 More misc packet size fixes 2025-03-30 22:29:17 -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
b01ec22950 Fix and check more packet sizes 2025-03-30 19:50:31 -04:00
55c1e84cc5 Remove some unnessecary copies in Oodle 2025-03-30 19:43:30 -04:00
d844eef2f3 Extract some Oodle constants 2025-03-30 19:37:53 -04:00
767a288e12 Fix Disconnected opcode 2025-03-30 19:34:38 -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
e4870762eb Fix various Clippy warnings 2025-03-30 18:03:42 -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
9cb7cd9abd Add initial stuffs for actor replication 2025-03-30 18:03:42 -04:00
4bacc35551 Remove separate InternalMsg enum
I think the current way I'll accomplish this for now is to use the other
task to send all messages from the global server state back into the
main connection loop.
2025-03-30 18:03:42 -04:00
ae2a75e1af Initial support for multiplayer
This is quite the architecture change, and I started working on the
first Tokio actor tutorial I could find. This actually works though,
and you can now chat between two characters on the server.

The next steps are to clean up my mess, and send actors over the wire.
2025-03-30 18:03:42 -04:00
7efbc5fd02 Move StatusEffects struct to it's own module 2025-03-30 10:51:36 -04:00
fe318cbc65 Move some more connection tasks into ZoneConnection
Notably part of the initialization and actor control self calls.
2025-03-30 10:49:33 -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
7f75a378f4 Create EffectKind enum to hold the different effect kinds 2025-03-30 10:01:41 -04:00
3d128c8fab Apply the actual applied damage from the action script 2025-03-30 09:44:37 -04:00
0b1a67fc9c Remove some hardcoded values in ActionResult 2025-03-30 09:35:53 -04:00
e8581cdaba Add script for Fast Blade action
This adds the necessary infrastructure to add actions that deal damage to
enemies, and tests this through the new effects builder exposed through Lua.
2025-03-30 09:31:50 -04:00
d8627c646e Add a more extensible way to add actions
You now reigster actions with registerAction under Global.lua. This should make
it extremely easy to add new actions later.
2025-03-30 09:02:52 -04:00
da431cbb02 Add FFXIVClientStructs mention in the README 2025-03-30 08:43:08 -04:00
3bd0d64aa7 Add relevant remake fields to ClientSelectData
This documents a few fields interesting to Fantasia, such as the flag needed to
enable the "Re-edit Character" menu item.
2025-03-30 08:36:01 -04:00
7495f88dd5 Add various lobby character flags
This is based off existing work in FFXIVClientStructs, but I did make
sure to double-check what these actually did as well. These also can be
a combination of flags, but FFXIVClientStructs doesn't consider it one
yet.
2025-03-30 08:32:46 -04:00
ddcfebe289 Add tests for read_string and write_string 2025-03-29 20:12:45 -04:00
f5c23f8bf5 Shorten the server startup text 2025-03-29 20:05:20 -04:00
89db2ce920 Fix crash when entering certain zones, remove stuff doesn't work
There's some fadein/fadeout nonsense that isn't really doing anything right now,
and can be killed.
2025-03-29 16:43:06 -04:00
f961d7a78e Disable default features for mlua 2025-03-29 16:43:06 -04:00
0085b1f4bf Add missing testdata 2025-03-29 16:42:33 -04:00
88c7d2ee77 Fix sending status effects setting the player HP/MP to 0
For some reason we send some of the player's stats in this packet, and
we can't keep them as 0 because the client will just kill the player.
2025-03-29 14:52:27 -04:00
5a358dd1b6 Don't extract game data each time an action is recieved
This makes sending actions waaay more reliable, and shouldn't crash the
server as often.
2025-03-29 14:42:38 -04:00
1ef4078ec1 Fixes and workarounds for battling 2025-03-29 14:38:40 -04:00