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
The Dax
385672d797
Add support on the Rust side for resetting the command identifier.
...
-sender was also renamed to command_sender in case we'd like to reserve the word "sender" in the future.
2025-06-26 07:47:05 -04:00
The Dax
0f7e068ba3
Further reduce boilerplate in various scripts
...
-Introduce a printf helper command which can print the sending command's name for you,
and treats the message as a format string if additional params follow
2025-06-26 07:47:05 -04:00
d292e1d676
Fix signedness of scene yield params
...
According to the decompiled Lua code, they sometimes can return
negative numbers (like -1, to indicate an error.) I also improved
the debug display of these in the server log a bit.
2025-06-25 23:28:12 -04:00
476958a054
Move crystal bell script
...
I finally found what client-side script it's calling into, they
call it "BeautySalon" internally.
2025-06-25 23:20:37 -04:00
96aece36cf
Implement more back and forth packets for events
...
I figured out a few of these while figuring out the crystal bell
event, although their purpose is still generally unknown. It doesn't
really affect anything functionally as the event still works as
well as it did before.
I also fixed the crystal bell scenes so they don't finish the event
prematurely, although it looks weird without the hairstyle menu. But
that still isn't figured out yet.
2025-06-25 23:11:49 -04:00
381098b1c5
ClientTrigger Unk2 is actually FinishZoning
2025-06-25 22:12:09 -04:00
b099d0a7f4
Implement the Crystal Bell menu
...
It will start the second scene if you request a summon now, but
we still need to implement the opcodes for bringing up the menu.
2025-06-25 21:50:57 -04:00
58e4e89765
Support toggling displaying your weapon and other flags
...
This is now networked and shown both to you and other players. This
still needs to be persisted for other player spawns.
2025-06-25 21:30:14 -04:00
7d203d1de5
Add documentation about the supported client triggers
2025-06-25 20:58:21 -04:00
ec76d3fb31
Don't allow connecting with an older client
...
I just wasted a few minutes trying to connect, only to realize my
client is too old. I thought we declined in these situations
already, but I guess not?
2025-06-25 20:04:47 -04:00