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
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
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
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
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
e31d81743f
Read rotation from UpdatePositionHandler
2025-03-28 23:29:16 -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
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
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
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
4142143bc8
Move Zone IPC over to the new JSON opcodes file
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
c29f8ad7df
Run Clippy auto-fix, disable large enum size warning
2025-03-23 18:14:14 -04:00
70ec1b99c9
Fill inventory with racial starting gear
2025-03-23 17:49:53 -04:00
8a03c82480
Create Inventory struct, move inventory filling logic to ZoneConnection
...
This still uses hardcoded item ids, but this should much more extensible.
2025-03-23 17:43:06 -04:00
a36c6dff90
Send a (currently hardcoded) list of equipped items to the client
2025-03-23 17:10:47 -04:00
90a78fcaa8
ActorControl and ActorMove packet fixes, add support for //gm invis
...
I don't think this is the right kind of invisibility, but it's more of a test of
ActorControlSelf really. I have also been trying (and failing) to make the
client show another player.
2025-03-23 15:28:53 -04:00
d47779c8d6
Add display flags
...
This is based off of the display flags from Sapphire, and the weird UNK one that
I see in game.
2025-03-23 13:03:58 -04:00
37dbef99db
More CommonSpawn, PlayerSpawn and NPCSpawn struct improvements
...
This is just a barrage of random stuff I needed to fix, along with finally
figuring out what subkinds are.
2025-03-23 12:16:15 -04:00
45f92e9e54
Add OnlineStatus and GameMasterRank enums
2025-03-23 11:37:00 -04:00
9111ef6a82
Add debug command to spawn a monster (Tiny Mandragora), various fixes
...
This fixes various problems in CommonSpawn, adds a test for an enemy NPC spawn,
and an unkwon packet I get when entering some zones.
2025-03-23 10:33:49 -04:00
b3f5500d2f
Check user-agent in Patch server
2025-03-23 07:25:23 -04:00
d8971b09cc
Remove erroneous Position import
2025-03-23 06:34:47 -04:00
fb05caaa31
Store zone id and position in the World database
...
This isn't updated by the server yet, but will be soon in the future.
2025-03-22 19:05:29 -04:00
4b740068d4
Remove hardcoded initial zone, derive it from selected City-State
...
This currently might spawn you in the ground in Ul'dah and probably Limsa too,
until I determine the correct spawn location.
2025-03-22 18:53:53 -04:00
15ed586fd0
Fix CharaMake structure, derive City-State from class picked in creation
2025-03-22 18:34:27 -04:00
107a00aa92
Move lobby character actions to LobbyConnection, support deleting characters
2025-03-22 17:32:00 -04:00
6190001caa
Remove more hardcoded values for character
...
Since we are now backed by a database, the remaining usages are erroneous and
should be removed.
2025-03-22 17:06:16 -04:00
a91c59aaaa
Remove hardcoded world id & name, make it configurable
...
Now the world isn't hardcoded to Gilgamesh, and is configurable. It's also now
the "Dev" server listed in the excel sheet which makes a more sensible default.
2025-03-22 17:00:21 -04:00
3f27d2b3df
Change configuration format to YAML, allow configuring the address and ports
...
This removes all of the hardcoded localhost stuff, and allows changing the ports
of various services.
2025-03-22 16:47:21 -04:00
f523aa189f
Move login & world database code/logic to their own modules and structs
...
This should remove some of the pollution I added while working on these
features.
2025-03-22 16:15:29 -04:00
4b67b22c9f
Show the actual character list on the lobby screen
...
This doesn't do any actual account checking yet, but it works pretty well.
2025-03-21 21:26:32 -04:00