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

320 commits

Author SHA1 Message Date
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
d54b4c945e Start informing the player of the consequences of their actions
This doesn't work 100% reliably yet, but I do see the action appear in
my battle log.
2025-03-29 14:15:01 -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
0d95f0d5b8 Return nil when pop range isn't found 2025-03-29 08:34:55 -04:00
227c8c1eb2 Add //gm wireframe command 2025-03-29 00:39:00 -04:00
63bc9031c9 Restore player position and rotation on login 2025-03-29 00:28:49 -04:00
5b7e07642a Commit dynamic character values back to the database
This now saves the current zone id, position and the rotation of your
character to the database when you log out. This isn't restored yet
though.
2025-03-29 00:15:29 -04:00
65747b0632 Add scripting function to change a player's territory 2025-03-28 23:43:27 -04:00
e31d81743f Read rotation from UpdatePositionHandler 2025-03-28 23:29:16 -04:00
6bb6377315 Add stubs for the other two starting City-States
Also document how to access and play these scenes in USAGE.
2025-03-28 23:00:32 -04:00
2bf9385079 Load the starting position from the LGB
It turns out (amazingly) that this data exists client-side, I guess because the
server and the client share the same planevent LGB file. So instead of
hardcoding the starting location in each city, it's now literally like retail*

* Except for the fact that we don't support rotation yet, and positions in pop
ranges are probably randomized too. But it's close!
2025-03-28 23:00:32 -04:00
c4b9ad060b Add basic Event scripting capaibilities
This implements the first event script, going from the first Ul'dah opening
cutscene to the next.
2025-03-28 23:00:32 -04:00
bcbe62af06 Add packets related to playing events and scenes 2025-03-28 23:00:32 -04:00
cb740a2a93 Move LuaPlayer to it's own module 2025-03-28 23:00:32 -04:00
bbbe426617 Improve how the status effect list is sent and created
There is now a dedicated StatusEffects struct that provides a nicer API
to work with these. The list is also sent when needed and only when a
status effect changes, as the client handles the ticking down of
durations itself.
2025-03-28 23:00:32 -04:00
13b24e9cfe Try to fix crash after recieving status list 2025-03-28 23:00:32 -04:00
c5e04ba33f Begin wiring status effect Lua API 2025-03-28 23:00:32 -04:00
652beadaa4 Send the welcome server message in the onBeginLogin Lua function
I finally got a proof-of-concept working, and am somewhat happy with how I can
start building this API now.
2025-03-28 23:00:32 -04:00
a99b0e7c17 Pass PlayerData to onBeginLogin function 2025-03-28 23:00:32 -04:00
4d88f78184 Remove a good bit of log spam 2025-03-28 23:00:32 -04:00
54651d7bcb Add scripts to the artifacts 2025-03-28 23:00:32 -04:00
bbe9215902 Add mlua for server-side scripting support
This isn't hooked up to anything yet, just trying it out.
2025-03-28 23:00:32 -04:00
084a8ea664 Remove leftover debugging, edit README 2025-03-26 19:23:14 -04:00
e7dc83effe Update testdata for 7.2 2025-03-26 19:23:14 -04:00
4142143bc8 Move Zone IPC over to the new JSON opcodes file 2025-03-26 19:23:14 -04:00
d0bb7f4ba9 Start defining IPC opcodes in JSON
This is to make it easier to interpolate with other tools and projects,
and to reduce the mental barrier (of me and other contributors) of
changing these. This only ports the Lobby connection to use JSON so far,
the World connection is next.
2025-03-26 19:23:14 -04:00
7e6b493240 Add a note in the README about branching policy 2025-03-26 19:23:14 -04:00
d11c6ad090 Restore and add the remaining 7.2 opcodes
Now Kawari is back to it's full functionality, save for tests being
broken and out of date and PlayerSetup has the wrong padding. Success!
2025-03-26 19:23:14 -04:00
3a66e4466c More various 7.2 packet fixes, attempt to check recieved packet size 2025-03-26 19:23:14 -04:00