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
1c2b757359
Begin adding support for EffectResult IPC opcode
...
And other stuff I saw in my sprint retail capture.
2025-07-14 19:00:26 -04:00
3f55df789e
Add Cooldown ActorControl category
2025-07-14 18:28:37 -04:00
dbfe3d542d
Rename ChatMessage's player_id to actor_id
...
This is a more accurate name for this field.
2025-07-14 18:19:34 -04:00
0399930ec7
Add UpdateRestedExp, LoseEffect and GainEffect ACs
2025-07-14 18:17:57 -04:00
The Dax
4f5f204507
Redundancy nit.
2025-07-14 17:27:45 -04:00
The Dax
9a60faa15d
Hook up an equipment sales NPC for testing non-stackable items
2025-07-14 17:27:45 -04:00
The Dax
421a24aa6f
When adding items to the inventory, prefer existing stacks first before selecting empty slots.
...
-This works for adding items to the inventory in any capacity, including debug and GM commands!
2025-07-14 17:27:45 -04:00
thedax
a5120bb9d6
Fix client-side crashes when discarding items. ( #117 )
...
-Various things were wrong in InventoryTransaction, but they should now be fixed.
2025-07-13 20:11:54 -04:00
bfca1605d5
Document !replay debug command
2025-07-13 20:11:05 -04:00
a4c8466088
Move packet replay to the global server state
...
This makes it way more stable, and can actually work now.
2025-07-13 20:09:50 -04:00
06debd5eb0
Begin implementing packet replay
...
It doesn't work fantastic yet, I need to move it to the global
server state to truly work as intended.
2025-07-13 18:01:59 -04:00
The Dax
ba1a92c9bc
Rename GilShopRelatedUnk to UpdateInventorySlot
...
-This now matches Karashiiro/FFXIVOpcodes.
2025-07-13 15:22:44 -04:00
The Dax
eb9d08866e
Implement better support for buying from gil shops
...
-You can now purchase multiple things in a row
-It shows the proper log messages
-For the moment all items go to the very first inventory slot, and overwrite each other
2025-07-13 15:22:44 -04:00
efa07bb87f
Add new actor control categories
2025-07-13 13:49:27 -04:00
c3291b1e47
Add support for the LevequestCompleteList IPC opcode
...
We also tell the client it completed every levequest in the game,
to showcase this works.
2025-07-13 11:59:56 -04:00
2cc562de38
Add support for the QuestActiveList IPC opcode
2025-07-13 11:24:14 -04:00
8be1fefa53
Add support for sending the title list, when requested
...
This doesn't allow you to set them yet, just show them in the menu.
2025-07-13 10:15:40 -04:00
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
822f693f8c
Add XiCharacterInfo IPC opcode
...
I don't know what this is, I got the name from Sapphire.
2025-07-13 09:10:32 -04:00
49003a4d89
Add FreeCompanyInfo IPC opcode
2025-07-13 09:05:22 -04:00
8083be24c7
Add UpdateSearchInfo IPC opcode
2025-07-13 09:03:02 -04:00
46cf7d4200
Add ActorGauge IPC opcode
2025-07-13 08:58:46 -04:00
c04cfdf5da
Add ObjectSpawn IPC opcode
...
The struct itself is all kinds of wrong as I blindly copied it from
Sapphire, so I wouldn't depend on it just yet.
2025-07-13 08:56:15 -04:00
7cfa20052d
Remove appearance updates from ZoneConnection::send_inventory
...
This isn't needed anymore.
2025-07-13 08:47:53 -04:00
b84462fd6f
Send equip item updates again
...
This was lost in the inventory refactoring because it was only
handled by ZoneConnection::send_inventory, but it needs to happen
elsewhere now.
2025-07-13 08:42:56 -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
cca0f8c0e5
Add remaining inventory container types
...
Most of these will remain unimplemented, but we need the enum to
be complete for Packet Analyzer to not trip over unknown ones.
2025-07-13 08:14:35 -04:00
f88d62b80f
Remove comment in lobby to investigate other server's KeepAlive
...
I checked a retail capture, and I think we're doing it correctly
for the chat and zone connection already. They wait until Setup to
send it (so the client is authorized, of course.)
2025-07-13 08:07:25 -04:00
67d01513b1
Begin figuring out various content finder thingies
2025-07-12 20:53:59 -04:00