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
69e8e4055e
Finish implementing currency
...
I made various mistakes in the initial implementation, which
are now fixed.
2025-06-25 17:02:19 -04:00
thedax
75993bf933
Update to Lua 5.4, adjust scripts accordingly ( #64 )
2025-06-25 15:21:09 -04:00
thedax
6d99bef66c
Refactor and reorganize numerous Lua systems: ( #63 )
...
-Global.lua is no longer a catch-all dumping ground for registering actions and events
Instead, Global.lua will actually contain useful global constants and functions
-Init.lua will take over the role of being the initial script run when doing reloads or booting the servers
-Actions.lua will take over registering all actions
-Items.lua will take over registering all items
-Commands.lua will take over registering all text commands
-Events.lua will take over registering all warps, openings/quests, aetherytes, etc.
To this end, event ids now live in organized tables to reduce error-prone copy paste clutter
If we get enough actions, items or commands, we can move those to tables too.
2025-06-25 13:25:48 -04:00
3c9eeec7b1
Fix another broken GitHub link
2025-06-25 13:06:40 -04:00
thedax
d73ab383e8
Document the previously unknown parameter for the ServerChatMessage opcode ( #62 )
...
Document the previously unknown parameter for the ServerChatMessage opcode
Credit goes to Sapphire as usual (see comments)
2025-06-25 10:05:34 -04:00
The Dax
c926ceb17b
Implement a generic lift operator in Eulmore
2025-06-24 19:17:18 -04:00
The Dax
feb0ffb869
Implement the aethernet for aetherytes and ensure both aetherytes and aethernet shards
...
do better about not yeeting you into invalid zones, crashing the client, or softlocking
2025-06-24 19:17:18 -04:00
01697c8f62
Begin implementing currency, add //gm gil command and more
...
This doesn't work yet though , and I'm not sure why. I also fixed a bug
where new characters doesn't get their inventories initialized properly.
2025-06-24 19:16:32 -04:00
03609fb8c1
Add a comment to rename EventHandlerReturn
2025-06-24 18:31:19 -04:00
cc5d9ae7bc
Return both parameters in EventHandlerReturn
...
This allows scripting things like Aetherytes in the future.
2025-06-24 18:30:22 -04:00
thedax
9d01a5d595
Update opcodes for 7.25h2 ( #60 )
...
* Attempt to update opcodes for 7.25h2, but it's possible I missed some
* Disconnect might be 370
* Edit README.md to reflect the new update
2025-06-24 16:21:25 -04:00
thedax
1a5f80482f
Partially implement more actors ( #59 )
...
- Summoning bell now tells you you're not authorized
- Armoire shows prompt but "remove items" option softlocks
- Crystal Bell cutscenes work slightly better but still default to not authorized
- Bed now plays cutscenes with proper fade to black, and dreamfitting works when forced in onTalk
2025-06-24 14:38:16 -04:00
d612a95be9
Move restoring character backup to it's own page
2025-06-23 21:42:30 -04:00
ddb67383af
Fix more easy Clippy warnings
2025-06-23 21:14:38 -04:00
a76de282c9
Add Matrix channel to README
...
For quicker/informal discussion outside of GitHub.
2025-06-23 20:53:50 -04:00
The Dax
86310c7c22
Address warnings:
...
warning: usage of `contains_key` followed by `insert` on a `HashMap`
warning: you seem to want to iterate on the values of a map
2025-06-23 15:28:24 -04:00
The Dax
5b5e998286
Address warning: "deref which would be done by auto-deref"
2025-06-23 15:28:24 -04:00
The Dax
efb7a7e126
Address warning: "empty line after outer attribute"
2025-06-23 15:28:24 -04:00
The Dax
ab3bcfc365
Address warning: "name NPC
contains a capitalized acronym"
2025-06-23 15:28:24 -04:00
The Dax
75b34cb959
Address warning: "struct update has no effect, all the fields in the struct have already been specified"
2025-06-23 15:28:24 -04:00