1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-10 16:07:45 +00:00
Commit graph

30 commits

Author SHA1 Message Date
cd55653077 Implement necessary packets for the Unending Journey event
This doesn't make cutscenes play *yet*, but stops the client from
getting stuck waiting for a cutscene to begin. Now the event script
continues, and ends the event.
2025-07-04 16:18:39 -04:00
thedax
68f6747598
Fix size of InventoryActionAck (#104)
-If it's 16 bytes, there can't be 12 bytes of padding, 4 bytes of u32 and 2 bytes of u16. :)
2025-07-04 19:48:03 +00:00
fb46a44e18 Begin correctly implementing packet obsfucation
I re-implemented Unscrambler, but in reverse! This currently only
affects names in the PlayerSpawn packet, it needs to be extended
into others to be considered complete.

See #9
2025-07-03 16:12:19 -04:00
927c093915 Send your completed quests list
We aren't going to be adding quests ever or anytime soon, so all you
can do right now is force every quest to unlock with the aptly named
!completeallquests.
2025-07-01 19:51:33 -04:00
thedax
5a580149b4
Document some opcodes related to shops and implement a generic gil shopkeeper script (#85)
Document some opcodes related to shops and implement a generic gil shopkeeper script
* You can now interact with shopkeepers, and if you have enough gil, you can attempt to purchase items
* Upon trying to buy items the event will auto-cancel for now, because we're missing implementations of several opcodes related to inventory management
2025-06-30 15:21:08 -04:00
5b8a61c1ce Add the various sizes of EventScene
This isn't hooked up to the Lua API yet, it's just the
needed opcode bits.
2025-06-28 16:05:36 -04:00
2762407585 Rename EventReturnHandler to EventYieldHandler, make generic
This also makes EventScene generic for use in the future.
2025-06-28 15:57:45 -04:00
41d8424615 Read unknown packet data in more places 2025-06-28 15:15:45 -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
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
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
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
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
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
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
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
82e5021979
Implement the //gm teri_info command, and fix a typo (#56)
Implement the `//gm teri_info` command, and fix a typo. Said typo was in gamedata.rs, confusing the FingerL column for the SoulCrystal column.
2025-06-23 13:39:37 -04:00
fbe6862c7b Begin implementing EXP
This doesn't actually do things like level you up, but if you use the
GM EXP command then it will update the UI.
2025-06-22 09:19:06 -04:00
thedax
e1b261c7d8
Implement several actors/entities (#49)
* Implement the following actors/entities:
-Inn Toy Chest actor, which simply says you haven't unlocked mini-games
-Inn Glamour Dresser actor, which simply says you haven't unlocked the GD yet
-Orchestrion, which is fully functional as long as you have songs unlocked

Accompanying the orchestrion is the GM orchestrion command, with a caveat:
-It allows you to learn one song at a time, but id 0 (aka "all) doesn't learn a single
song for some unknown reason, so I've disabled it for now.

* Run cargo fmt

* Update USAGE.md
How many times will I forget...
2025-06-22 08:46:11 -04:00
The Dax
1edcdf3de6 Implement GM speed command, and make GM invis command actually toggle invis status 2025-06-19 10:09:07 -04:00
1914531d89 Add commands to unlock actions, and aetherytes
This doesn't mean teleporting works *yet*, as it needs to be scripted.
The unlocked action/aetheryte is also not persisted yet.
2025-05-11 09:27:29 -04:00
fd1fbe7188 Start adding support for propagating actor control state
This begins figuring out how we are going to be propagating actor
control state: e.g. targets, poses, and other misc effects. I ended up
sending client triggers to the global server state, who then creates the
needed actor control packet for the other players.

Now players can see what other players are targeting!
2025-05-08 22:53:36 -04:00
3139d63b91 Begin scripting the inn NPCs
This kinda works, you can now talk to them without locking up your
character but you aren't warped yet. I also need to clean up the mess of
the Lua API.
2025-05-05 20:51:49 -04:00
ff33bd446a Update IPC struct names and filenames to match their opcode name 2025-05-02 23:24:31 -04:00
11156ea43c Fix GM commands 2025-05-02 16:17:29 -04:00
8d384c4bd0 Overhaul how we send inventory packets again
I wanted to add armory chest support but the current state of the
inventory was a little frustrating. Adding new containers was too
difficult, so I made the system *even more* generic and easier to use. I
have also split it up into it's own module with a nicer file layout.

Oh yeah, and armory chest works too now.
2025-05-02 16:15:54 -04:00
5111a38424 Re-organize IPC segments into the ipc module
These were kind of scattered everywhere, instead we should move them
into their own module. Kawari's custom IPC is moved here too.
2025-05-02 00:47:11 -04:00
Renamed from src/world/ipc/mod.rs (Browse further)