1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-20 19:57:47 +00:00
Commit graph

282 commits

Author SHA1 Message Date
c339c89c41 Fix various issues with the Lobby packets
Everything should be more consistent now, in regards to "tickets"
and actor ids.
2025-07-13 09:52:00 -04:00
7cfa20052d Remove appearance updates from ZoneConnection::send_inventory
This isn't needed anymore.
2025-07-13 08:47:53 -04:00
fe4d0d2344 Inform client about some unimplemented inventory containers
As seen in a retail capture, we should be sending these I guess.
2025-07-13 08:38:28 -04:00
c0daf7b06b Skip sending empty UpdateItems on first login
There's no reason to do this, the client has no pre-existing
inventory state so we're just wasting bytes.
2025-07-13 08:29:45 -04:00
fac241ce7b Fix the wrong classjob being set when creating a character 2025-07-12 18:56:00 -04:00
c86a5f70a6 Add command, actor control to unlock instanced content 2025-07-12 18:33:52 -04:00
thedax
45ee95318c
Rename inventory-related opcodes to match Karashiiro/FFXIVOpcodes (#112)
-Implement keyboard turning packet as a no-op so it'll stop clogging server logs

-Finish implementing inventory actions
2025-07-12 17:40:22 -04:00
c688e93f7c Stop panicking when walking into unused zones lines
Fixes #87
2025-07-12 09:10:17 -04:00
d58025e415 Use COMPLETED_QUEST_BITMASK_SIZE in QuestCompleteList 2025-07-12 08:36:01 -04:00
6a08ae4b0f Add CLASSJOB_ARRAY_SIZE constant for various classjob arrays 2025-07-12 08:36:00 -04:00
thedax
eb2e7a9987
Refactor large portions of database.rs, and fix the remaining clippy warnings (#111)
* Address warning "warning: very complex type used. Consider factoring parts into `type` definitions"
-But instead of making a new type we just create PlayerData directly

* Address "warning: this expression creates a reference which is immediately dereferenced by the compiler"


* Address "warning: calling .bytes() is very inefficient when data is not in memory"
2025-07-09 22:59:39 -04:00
edf0643990 Grab navimesh paths from LVB, warn when navimesh is missing
Of course we don't even generate the navimeshes to begin with, but
it's a start.
2025-07-08 23:21:34 -04:00
7b6605b018 Update Icarus, switch to the new Physis Resource system
While there isn't a functional difference in Kawari yet, this is
paving the way to allow loading unpacked game files.
2025-07-08 21:54:42 -04:00
The Dax
c72526a34d Address two of "warning: this expression creates a reference which is immediately dereferenced by the compiler" 2025-07-08 21:54:10 -04:00
thedax
22dc1dbaaa
Refactor lua.rs: (#109)
-The match has been moved into src/ipc/zone/event_scene.rs and slimmed down
-EventScene now provides a function to decide the opcode based on how many params it has
-The tests for EventScene were updated to acommodate the new changes
2025-07-08 17:18:30 -04:00
thedax
17967c9d6a
Attempt to improve the accuracy of a couple things (#105)
Attempt to improve the accuracy of:
-ItemOperation: Now sends back ItemAcknowledgeAck as well as InventorySlotDiscard and *Fin when discarding items
-ClientTrigger::EventRelatedUnk -> send back commonly observed ActorControlSelf responses
2025-07-05 19:05:43 -04:00
The Dax
7801398590 Fix a small issue with the !equip command
-It wasn't setting the item's condition, causing the game UI to behave strangely when looking at the item's tooltip
-Added a constant for the maximum item durability
2025-07-04 13:39:48 -04:00
7291863481 Move scrambler module to packet
This is to make WebAssembly builds work again, because the world
module isn't compiled there.
2025-07-04 12:22:49 -04:00
thedax
ca90d8b787
Move the login message from Lua scripts into the config file. (#100)
-Provide a new API function: getLoginMessage which will fetch it from the config file.
2025-07-04 11:42:52 -04:00
The Dax
9532abcaa6 Address "warning: you should consider adding a Default implementation for ScramblerKeyGenerator" 2025-07-04 11:42:08 -04:00
The Dax
4cae9a649a Address two of "warning: casting to the same type is unnecessary (i32 -> i32)" 2025-07-04 11:42:08 -04:00
c65e413900 Make loading zone LGBs more accurate
The game actually has a list of LGBs for the territory/zone in a
LVB file, so we don't have to hardcode a list of names.
2025-07-04 11:33:01 -04:00
5035dcab82 Begin implementing more packet obsfucation
It's not complete yet, notably the correct model IDs don't show up.

See #9
2025-07-03 17:00:55 -04: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
thedax
01b396a656
Refactor gamedata to use a more general get_item_info function (#96)
-You can search for items by id or name
-The logic is all centrally located, eliminating all of the duplicated loops everywhere
2025-07-02 17:30:48 +00: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
The Dax
3b6fcb7ba1 Extend the Lua API:
-Implement GM command collect (subtracts gil from player), but the ingame command's params are unknown, Lua only
-Implement GM command inspect, but the IPC opcode for it is different than GMCommand and is thus far unimplemented, Lua only
-The Lua API can now access all of the player's inventory (read-only)
2025-07-01 13:06:49 -04:00
The Dax
d14dd3ccd9 Address: "warning: the variable sequence is used as a loop counter" 2025-06-30 21:55:11 -04:00
The Dax
b0282eb6bc Address "warning: you seem to be trying to use match for destructuring a single pattern. Consider using if let" 2025-06-30 21:55:11 -04:00
The Dax
1fe3e3e81d Address "warning: using clone on type [u32; 10] which implements the Copy trait" 2025-06-30 21:55:11 -04:00
The Dax
1f065472d0 Address "warning: casting to the same type is unnecessary (u32 -> u32)" 2025-06-30 21:55:11 -04:00
The Dax
3fc863616c Address "warning: unneeded return statement" 2025-06-30 21:55:11 -04:00
f778f9a571 Support sending an arbitrary amount of event params
This ended up as a giant, disgusting match statement but I don't
really have anything better right now.
2025-06-28 16:17:54 -04:00
ff3a7d6835 Remove more leftover debugging code 2025-06-28 15:10:57 -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
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
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
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
dfac7702fa Expose a zone's intended use ID in the Lua API 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
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
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