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
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