726d351f8b
Add documentation for the different modules, move patchlist code
2025-03-16 15:42:46 -04:00
23050e7b95
Move more structs out of the root src/ folder and into their respective server
2025-03-16 15:39:44 -04:00
bdef7752b0
Add comments explaining the use of each dependency
2025-03-16 15:24:01 -04:00
f8a28e45c9
Add helper function to send lobby errors
...
This isn't used yet, but implemented for future use.
2025-03-16 15:20:55 -04:00
22acdc4a3b
Print IP address when lobby & world servers are started
2025-03-16 14:51:18 -04:00
053730017f
Remove unused code & imports
2025-03-16 14:50:40 -04:00
b1b0d9ac9f
Only send the welcome server message on initial login, not for every zone change
2025-03-16 14:49:18 -04:00
a72199e5af
Use the same nameday/deity/etc information everywhere, add tests for PlayerSpawn
...
This doesn't really fix anything functionally, but makes the Character window
look nicer. The same (currently unchangable) data is now reflected in the lobby.
2025-03-16 14:43:30 -04:00
0bf4cd1264
Create CharacterMode enum
2025-03-16 14:13:26 -04:00
3bbf345cd6
Run Clippy auto-fix
2025-03-16 14:09:12 -04:00
51f6ad6744
Grab bag of various fixes
...
I have unsuccessfully tried to spawn another actor, the game recieves it (and
adds it to the object table) but they are marked invisible. Besises, this also
contains various field improvements and initial support for social lists.
2025-03-16 14:07:56 -04:00
1cbc5c72b9
Remove Gridania hack, allow changing between any zone
...
This now properly translates territory types using the Excel sheet, making it
possible to move between any zone (you can walk through.)
2025-03-15 21:41:39 -04:00
3aaa8ae3eb
Move zone changing into ZoneConnection's purview
...
I suspect that we have to rigidly control the fade in/out or whatever
PrepareZoning is, and it's just a good idea in general.
2025-03-15 20:49:07 -04:00
f372f3173d
Create dedicated Connection implementations to handle future server work
...
The current situation of throw-every-piece-of-logic-into-one-file for each
server isn't working out. So now there is a new ZoneConnection/LobbyConnection
struct that will be delegating tasks to their own Handlers (for example, there
could be a ChatHandler.)
I'm not sure how well this architecture will scale, but it's better than what
we have right now.
2025-03-15 20:38:10 -04:00
059becf55f
Detect when players enter exit zones, and transistion them to the correct place
...
It's a hack and only really works going from New -> Old Gridania, but this does
work! It also means Kawari now actually requires a valid game installation,
since it has to read layer group information.
2025-03-15 19:34:29 -04:00
dbe1ef208c
Initialize the weather correctly, add test for InitZone packet
...
This makes the lighting not a horrible dark mess!
2025-03-14 20:47:36 -04:00
ff3305b3e0
Update documentation
2025-03-14 17:00:40 -04:00
640aeb797c
Fix a few problems with ClientSelectData, use the same character in both servers
...
I apparently had a few fields missing here. Also just some general clean up,
make it the same looking character in both the Lobby and World server. I also
chose Gridania as the test zone.
2025-03-14 00:30:37 -04:00
5c22532474
Add Lobby IPC packets for character creation
...
This adds the packets required for name confirmation, character creation etc so
you can actually go through the process now!
2025-03-13 23:30:48 -04:00
4d4720b192
Add new character name rejection
...
Next is being able to create a new character (but not really, because there is
no persistent.) This is a good first step, though.
2025-03-13 22:22:02 -04:00
45be3835bb
Add more init IPC packets
...
This doesn't improve the loading situation unfortunately, but I guess it's more
"correct". Unk7/Unk11 is still a complete mystery to me, though.
2025-03-13 21:49:03 -04:00
8bfc6cafb3
Send a message when logging in
2025-03-13 21:11:20 -04:00
151117baef
Specify the patch version in the README
2025-03-13 19:56:56 -04:00
2d991e8fe9
Add the player spawn packet test file
2025-03-13 19:54:43 -04:00
1141f6fb35
Add !setpos debug command to forcefully move the player
...
This is useful in some territories where you might not spawn in the correct
position. It currently locks up movement afterwards, but it's still useful.
2025-03-13 19:52:01 -04:00
74f7554aa8
Support the GM command for changing territories
2025-03-13 00:41:16 -04:00
d1139b4618
Extract maximum char name length into a const
2025-03-13 00:18:00 -04:00
34aa046b21
Fix padding in Player Spawn IPC data
...
I spent HOURS fixing this, only to realize that it was all offset by 16 bytes. I
hate myself.
2025-03-13 00:02:37 -04:00
7c1a3944e9
Add more fields to ChatMessage IPC
2025-03-12 19:45:15 -04:00
a448df65b4
Handle chat messages
...
This makes the server not panic and exit when recieving chat messages from the
client, but we only extract the message for now.
2025-03-12 19:34:15 -04:00
b52ff724ab
Allow logging out of the client without destroying the world server
...
This adds support for the IPC packets sent between the client & server when
using the log out feature.
2025-03-12 18:44:05 -04:00
181d127fb5
Spawn the player with at least SOME health
2025-03-12 18:22:25 -04:00
60e4713b96
Add more IPC data types to the size test
...
It doesn't pass for some, but it's a start.
2025-03-12 18:17:22 -04:00
29954be1a6
Move out most of the large IPC structures
2025-03-12 18:05:41 -04:00
aa6e818bfb
Begin moving IPC structures to their own files
2025-03-12 17:47:58 -04:00
4b409e4417
Don't use default features in binrw
2025-03-12 16:58:21 -04:00
68d87c3a42
Add the remaining IPC opcodes to allow you to join a world
2025-03-12 00:32:37 -04:00
7b0c41a478
Fix numerous issues with the client<->zone communication and Oodle
...
Yet again TemporalStasis is awesome, and it shows that we need two separate
compressors (one for clientbound packets, one for serverbound ones.) I also
updated some opcodes for the latest patch, and support for compressing with
Oodle when sending packets.
2025-03-11 23:52:55 -04:00
7cd5233598
Begin testing IPC packet size
2025-03-11 22:02:49 -04:00
37ae4a63d8
Add more segment types to the size test
2025-03-11 21:56:29 -04:00
7116389afe
Fix size of initalization encryption packet, start testing for that
2025-03-11 21:52:46 -04:00
632342c1f0
Rename some fields in packet header
2025-03-11 21:33:43 -04:00
2b5e0a7a48
Add more fields & actions for LobbyCharacterAction
...
Thanks to TemporalStasis, again.
2025-03-11 21:31:52 -04:00
5bcdadf058
Replace Blowfish implementation with a Rust one
...
This is a slightly modified version of the one in Physis, with the required
modifications inspired from WorkingRobot's TemporalStatis fork. Thanks so much!
2025-03-11 21:20:47 -04:00
47216153b3
Dummy out Oodle support on the CI
2025-03-10 22:19:31 -04:00
660e12c597
Start implementing some world IPC
...
This doesn't work yet, but whatever it's a start.
2025-03-10 21:31:21 -04:00
e3886e69da
Removing funding information
2025-03-10 21:23:31 -04:00
51c66a4a14
Add support for decompressing Oodle-compressed packets
2025-03-09 12:00:58 -04:00
e5d143d2c6
Add world server, fix reading compression type
...
This doesn't work yet as we don't implement Oodle decompression, but we at least
start recieving the packets.
2025-03-09 11:07:01 -04:00
1cd68ee1a3
Store session id, handle world join requests
...
We have yet to implement the world server, so the client gets kicked back to the
main menu immediately right now.
2025-03-09 11:01:06 -04:00