670d25a980
Disable sending exp again
2025-06-28 15:27:53 -04:00
fd4436db01
Fix a few more fields in PlayerStatus
...
Class is determined correctly now, and we now set the expansion
level too.
2025-06-28 15:23:56 -04:00
41d8424615
Read unknown packet data in more places
2025-06-28 15:15:45 -04:00
ff3a7d6835
Remove more leftover debugging code
2025-06-28 15:10:57 -04:00
d230a86844
Fix leftover test debugging thing
2025-06-28 15:01:26 -04:00
f46b62ad9e
Store classjob EXP
...
This isn't sent in the PlayerStatus packet *yet*, only on
UpdateClassInfo. For some reason, passing it makes the client freak
out and I'm not sure why yet.
2025-06-28 14:57:21 -04:00
0a740198f8
Initial support for item glamours and condition
...
The only way to glamour items is to import them from Auracite, same
with condition. But these are actually sent to the client now!
2025-06-28 14:57:21 -04:00
thedax
9d4f1eeb93
Small Events.lua nits. ( #84 )
2025-06-28 14:45:08 -04:00
Jules
fe234920f2
Use raw-dylib
when linking to Oodle on Windows ( #83 )
...
This means that the static .lib is no longer required at compile time, but
the .dll is still required at runtime. On Linux, the .so is still
required at both compile time and runtime, because linking works
differently there.
2025-06-28 14:45:01 -04:00
66da9abc90
Fix bad assumption with EXP/Level array indices
...
They don't always correspond to their classjob id, because jobs share
the same EXP/Levels as their base classes.
2025-06-28 14:15:46 -04:00
8f61fc36bd
Support importing even more data from Auracite
...
This includes unlocked class jobs, levels, your inventory and unlock
flags.
2025-06-28 14:15:46 -04:00
thedax
72bff848b5
Document more currently broken warp NPCs ( #82 )
2025-06-28 14:07:56 -04:00
thedax
77dc945381
Implement 3 more generic warp NPCs, including an out of bounds one ( #81 )
2025-06-28 13:27:44 -04:00
thedax
7d5e9e3c57
Account for the user pressing escape/cancel on controller to exit the bed menu ( #80 )
...
Yes, it's different than hitting Nothing on the menu!
2025-06-28 11:50:01 -04:00
thedax
2c159f591a
Enable some more ferry skippers now that they work ( #79 )
2025-06-28 11:44:57 -04:00
b2f14dffee
Add the !item debug command to give items by name
...
Compared to the //gm item command which only accepts IDs.
Fixes #50
2025-06-28 11:22:21 -04:00
f1b9461eb2
Add the //gm item command back
...
I never actually finished the Lua version, oops.
2025-06-28 11:18:17 -04:00
99a165e405
When changing equip display flags, store that for new spawns
...
See #50
2025-06-28 11:13:11 -04:00
9a3652fb42
When equipping items, network that to other players
...
See #50
2025-06-28 11:13:11 -04:00
thedax
ad4edf801d
Implement skeleton levemete script ( #78 )
...
Like all the others this needs special handling but the menu at least opens and reports no available leves.
2025-06-28 11:06:28 -04:00
554d42a904
Equip the correct starting weapon for your selected classjob
...
This prevents all sorts of oopsies because the client will refuse
to equip certain items, if you happen to be using a Gladiator
weapon on an Archer or vice-versa.
See #50
2025-06-28 10:44:25 -04:00
61f0ccdacd
Fix deleting characters in the lobby not working
...
This statement broke at some point, and the size of the custom IPC
was wrong too.
2025-06-28 10:43:53 -04:00
thedax
58eb154ae4
Inn bed: do player:begin_log_out() so the server-side hangs up properly ( #77 )
...
The client doesn't send that it disconnected, perhaps a bug on SE's end.
2025-06-28 10:33:02 -04:00
dfac7702fa
Expose a zone's intended use ID in the Lua API
2025-06-28 10:27:56 -04:00
e6536da9dd
Split up the command arguments on the Rust side
...
This removes some boilerplate code we need in every command to do
this ourselves.
See #65
2025-06-28 10:27:56 -04:00
ed1263d587
Pass all four arguments to GM command scripts
...
No GM command we have implemented currently uses these, but just
a little bit of future-proofing.
2025-06-28 10:27:56 -04:00
776bac9463
Add padding to the GMCommand IPC packet
...
This fixes the warning that the sizes don't match, because I think
there's padding at the end.
2025-06-28 10:27:56 -04:00
6951f9448d
Port GM commands to Lua
...
This removes a ton of implementation overlap between the two
command systems. For example, we had two different implementations
of unlocking aetherytes which is just unnecessary.
On the flipside, this makes implementing new GM commands just as
easy as writing debug ones. I moved the existing debug Lua
implementations into their GM counterparts and updated the USAGE
accordingly.
2025-06-28 10:27:56 -04:00
2cbf70fbe5
Fix tests
2025-06-28 10:02:09 -04:00
6ecdae840c
Continue parsing when encountering unknown packets
...
This reads the unknown packet data, just throwing it in a byte
buffer. This allows us to read the rest of the segmenets in
the packet, and fixes parsing.
Note that this still log spams with "wrong size" as we can't
determine the size of the unknown packet ahead of time. This is
easy to fix, but it's not a high priority yet.
Fixes #73
2025-06-28 08:48:59 -04:00
db2ee114a9
Fix the size of the aetheryte unlock bitmask
...
This should really be calculated instead of guessed, because I already
made a mistake. I didn't do that, only added a TODO for it.
Fixes #74
2025-06-28 08:22:01 -04:00
d3647a4b3b
Fix unlocking all aetherytes
...
I also made it possible to toggle them off properly, that should be
saved now too.
2025-06-28 00:07:56 -04:00
db0bdd511c
Fix the !unlockaetheryte command not working as expected
2025-06-27 23:59:09 -04:00
02b8e92d6b
Reduce the amount of unlocks to what's actually possible
...
This stops the !unlock all debug command from crashing the server.
There's only 511 possible unlocks in the game, I guess.
2025-06-27 23:40:19 -04:00
74f32121ef
Make size of bitmasks constants so they're easier to change, fix tests
2025-06-27 23:28:56 -04:00
5272439bca
Store aetherytes in the database
...
This requires yet another database wipe, but this is worth it as you no
longer have to aetheryte unlock spam on login.
2025-06-27 23:28:56 -04:00
0b470dc28b
Make unlocks persistent, fix player name in chat
...
The PlayerStatus struct shifted around recently, so I fixed the offsets
yet again. Unlocks should be persistent now, but this as usual requires
a database wipe, sorry!
I also included some refactors of the !unlock debug command that still
had references to the old unlock_action API.
2025-06-27 23:28:56 -04:00
thedax
1fa861a35a
Rewrite the inn bed logic for hopefully the final time ( #71 )
...
It is now ~99% accurate. If we need to adjust the player's positioning after the cutscenes, we can do that at some other point
2025-06-27 22:40:40 -04:00
The Dax
ee3a7c54bb
Update event scripts to use tables, since passing params now gets dropped into a Vec<u32> on the rust side.
2025-06-27 21:26:10 -04:00
The Dax
53748c33f0
Document the EventScene struct more: We'll support only two params for now.
...
We'll have a generic version soon™️ , though.
2025-06-27 21:26:10 -04:00
2075da0c5e
Fix tests and Cargo warnings
2025-06-27 17:59:40 -04:00
7b8177b27b
Allow building for WebAssembly
...
This really only allows you to access the packet parsing bits, starting
the servers isn't possible for a variety of reasons.
2025-06-27 17:58:14 -04:00
05f909497c
More unknown IPC handling fixes
2025-06-26 21:06:54 -04:00
thedax
a3d32b67aa
Rename forgotten variable in Events.lua ( #70 )
2025-06-26 21:02:15 -04:00
db3166d8b3
Add various things useful for using Kawari downstream
...
Such as better unknown packet parsing, IPC opcode names and
more stuff exposed as public API.
2025-06-26 20:59:46 -04:00
thedax
b560642978
Implement Gold Saucer lift operators, aethernet shards, and every MGP vendor ( #69 )
...
Except for the mahjong vendor. He needs something different apparently.
2025-06-26 20:48:09 -04:00
4f364ae330
Don't make packet parsing async
...
This doesn't need to be marked as async, the code isn't.
2025-06-26 19:09:13 -04:00
thedax
c5695f5ed7
Parially implement Gemstone Traders and Hunt currency exchangers ( #67 )
2025-06-26 08:04:13 -04:00
The Dax
94e13fa281
Remove commented testing log output
2025-06-26 07:47:05 -04:00
The Dax
2c60e4f8fa
Fix a typo in Events.lua
2025-06-26 07:47:05 -04:00