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

829 commits

Author SHA1 Message Date
thedax
468ca97257
Implement walk-in trigger events in S9 (#133)
Implement walk-in trigger events, and more specifically, the teleporter pads in Solution Nine.

Include a buildfix in kawari-world.rs as well.
2025-07-22 23:30:01 -04:00
2acbfe6df8 Fix various social list related IPC opcodes
These aren't perfect yet, I need to fix some of the wrong padding
inside of them.
2025-07-21 23:25:51 -04:00
de645008c7 Add support for the CrossworldLinkshells IPC opcode 2025-07-21 22:15:32 -04:00
f2cbc5a14c Add support for the StatusEffect3 IPC opcode 2025-07-21 21:47:00 -04:00
36686d1a84 Add generic gil shops seen in Chocobo Square 2025-07-20 20:18:26 -04:00
thedax
8c88c863d8
Add additional logic for the inn wakeup so it doesn't play every time, nor when you log in from elsewhere. (#132)
Add additional logic for the inn wakeup so it doesn't play every time, nor when you log in from elsewhere.
2025-07-20 18:26:40 +00:00
The Dax
f441cf38bc Document CreateStorage and EquipMannequin
-EquipMannequin is still a mystery though...
2025-07-20 14:02:59 -04:00
The Dax
05f3f7586a Fix "Unknown" data in some InventoryTransaction packets (for Packet Analyzer) 2025-07-20 14:02:59 -04:00
thedax
408f002593
Map out the client EquipGearset opcode (for Packet Analyzer) (#130)
Map out the client EquipGearset opcode
2025-07-20 14:02:16 -04:00
743e2b9b65 Play the inn bed wakeup animation on login
Currently this is hardcoded to The Roost because I ran out of time,
but it's easy to add support for other inn rooms. I had to extend
the Lua scene API quite a bit, hence a bunch of unrelated changes
so it doesn't break every other event script.
2025-07-20 10:22:19 -04:00
bfbd4ff8bc Remove branching policy, add documentation about tags
I think I want branches to be used for new expansions - for example
once Dawntrail is superseded then it will be moved to a branch
called 7.0.

Major/minor patch versions are now treated equally, basically
every time the game version is bumped a new tag is created. I have
created tags for the previously supported patches now. I also
clarified that these are moreso for "historical" purposes and
you shouldn't have any expectations of it building or working. If
you're determined enough, I'm sure you can make it work.
2025-07-20 08:40:16 -04:00
aa6ec03ffc Make //gm lv print a chat message on success 2025-07-20 08:17:52 -04:00
9a188e1e7a Make //gm exp functional again
Not sure where it went, I guess it got lost in the Lua transition.
2025-07-20 08:16:28 -04:00
bcff4cd957 Auto focus the username fields for the login and register webpages 2025-07-20 08:03:15 -04:00
7c3675aa99 Warn if the game directory is empty or invalid
Currently if you don't have it configured (or it's invalid for
wahtever other reason) you get an unhelpful "failed to read Item
EXH" error. Now there is a clearer warning message, which also
prints out the current configuration value.

This is a warning, not an error - in case someone is intentionally
trying to run Kawari without a game path specified.
2025-07-20 07:59:19 -04:00
a39a7c7e38 Remove quotes in YAML config example from USAGE
This was invalid YAML and was causing confusion, apparently YAML
needs backslashes escaped but only in quotes. Since this doesn't
really need to be quoted, I just removed them.
2025-07-20 06:52:57 -04:00
thedax
9d106c7050
Fix GM commands aetheryte and item (#128)
* Fix //gm item and //gm aetheryte
-Aetheryte's command opcode changed some time in the last few weeks apparently
-Item wasn't working, now it does, and additionally supports a quantity value now
-Aetheryte's on value is properly inverted from the Lua side
2025-07-20 06:52:01 -04:00
thedax
fbb144f84b
Fix the size of ItemObtainedLogMessage (#127)
Fix padding size of ItemObtainedLogMessage
2025-07-19 13:36:09 -04:00
234e804953 Store various content unlock & clear flags in database
I ended up sticking all of the unlock-relate information in a JSON
object, instead of putting in more columns.
2025-07-18 20:12:57 -04:00
7d3deb8685 Fix location and sizes of various content bitmasks
These aren't used by us yet, but I think I have the correct
bitmasks for content unlock & clear in PlayerStatus now.
2025-07-18 20:12:57 -04:00
thedax
cae01b3a35
Fix the InitResponse fix (#125)
-It's 16, not 14.
2025-07-18 21:42:36 +00:00
2149244670 Properly pass the actual content id in more CF packets
This now allows you to visit something *other* than Satasha!
2025-07-18 17:00:31 -04:00
60fcac80c2 Implement more of the Content Finder
Now it can put you in the zone properly (just Satasha, really.)
The "checking member status" window doesn't go away yet.
2025-07-18 16:53:40 -04:00
thedax
b608d32590
Fix size and opcode value of InitResponse (#123)
* Fix size of InitResponse opcode

* Fix opcode value for InitResponse
2025-07-18 16:10:37 -04:00
thedax
aa54da2b03
Rename GilShopTransactionAck to ShopLogMessage and outline the ItemObtainedLogMessage opcode (#124)
* Rename GilShopTransactionAck to ShopLogMessage and outline the ItemObtainedLogMessage opcode
-IOLM is not implemented yet, we just have the struct defined for now.

* Add the forgotten size test

* Update comment for InventoryTransactionFinish
2025-07-18 16:10:21 -04:00
ba2632ebd3 Figure out more of ContentFinderRegister 2025-07-18 00:07:14 -04:00
2b49c877b3 Move send_custom_world_packet to send_helpers module
Instead of things importing it from lobby which doesn't make a ton
of sense.
2025-07-17 23:27:53 -04:00
efbf45deea Use IPC_HEADER_SIZE constant in encryption module 2025-07-17 23:22:16 -04:00
271c888887 Add ZLib compression mode
Just the variant in the CompressionType enum, it's probably going
to stay unimplemented.
2025-07-17 23:20:56 -04:00
d98a9e4f9c Move inventory iterators to their own file 2025-07-17 23:17:48 -04:00
b679158dfc Small inventory cleanups
Mostly just removing some dynamic allocation and mutability.
2025-07-17 23:14:49 -04:00
4993ae5f38 Replace INVALID_ACTOR_ID with INVALID_OBJECT_ID
These duplicate the same underlying constant value.
2025-07-17 23:05:35 -04:00
64fc99d7a9 Consolidate constants used for ever-changing inventory actions
They seem to be in order (Sapphire and other sources suggest this
as well.) So they are now derived from a BASE_INVENTORY_ACTION
constant to make it easier to update in the future.
2025-07-17 23:03:18 -04:00
1e015db2f7 Fill out player stats in EffectResult 2025-07-17 22:49:00 -04:00
thedax
49f7b584b9
Implement basic support for item levels and start working on migrating to using Item instead of BuyBackItem (#122) 2025-07-17 21:45:30 -04:00
747844e07e Add note about looking at Unscrambler updates 2025-07-16 22:24:43 -04:00
The Dax
090c996bf6 Update GilShopkeeper comments slightly 2025-07-16 21:58:50 -04:00
The Dax
5d2ba057d7 Implement selling to NPC shops, and its sibling feature, buybacks.
-These had to be co-developed simultaneously. You can't have one without the other, they're that intertwined.

-The Lua API was extended extensively to allow for us to pull this off.
Some changes include support omitting sending forced client updates for gil and items, and
allowing access to the buyback list and queueing updates for it.

-Added various enums to reduce the amount of magic numbers everywhere.
-The buyback list API is put into its own new file: buyback.rs.
-Refactored more portions of the buy and sell code into connection.rs to reduce ipc boilerplate everywhere.
-More will be refactored in the future.
-The generic shopkeeper has changed so much that it is now its own dedicated script, GilshopKeeper.lua.
2025-07-16 21:58:50 -04:00
c6035f563b Add missing test files 2025-07-14 22:15:10 -04:00
916f7e30e6 Make sure to send Initialize on zone change 2025-07-14 22:09:26 -04:00
166e8024e0 Fill out more fields in PrepareZoning IPC
This fixes the loading screen between zones (as it now displays
text.) How we do things isn't very accurate still.
2025-07-14 21:35:32 -04:00
e4342d04b8 Fix size of the ChatMessage IPC 2025-07-14 20:54:21 -04:00
58af029ae5 Fix tests compilation 2025-07-14 20:52:47 -04:00
d70b559037 Fix Recast build 2025-07-14 20:47:46 -04:00
ac785365d3 Begin implementing pathfinding, all NPCs now converge to you
This is incredibly simple behavior, and navimesh generation is
currently manually done. But it's progress!

See #38
2025-07-14 20:31:02 -04:00
099dfbd134 Remove most of the hardcoded effect durations and params 2025-07-14 20:26:13 -04:00
f54fc126b3 Add support for manually removing effects 2025-07-14 19:58:12 -04:00
3d81d1ed01 Implement enough status effect handling to make Sprint work
This includes making Sprint degrade into Jog, and now status
effects start to be scripted.
2025-07-14 19:52:50 -04:00
404681f395 Begin laying infrastructure for status effect scripting 2025-07-14 19:19:21 -04:00
e7bda4c5e4 unk3 in GainEffect/LostEffect is the source actor 2025-07-14 19:01:17 -04:00