diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
index 7f5f9e68..99ceaa98 100644
--- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
+++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj
@@ -146,7 +146,7 @@
-
+
diff --git a/FFXIVClassic Map Server/WorldManager.cs b/FFXIVClassic Map Server/WorldManager.cs
index daba1e69..db1eacfc 100644
--- a/FFXIVClassic Map Server/WorldManager.cs
+++ b/FFXIVClassic Map Server/WorldManager.cs
@@ -1073,6 +1073,8 @@ namespace FFXIVClassic_Map_Server
buyer.GetItemPackage(Inventory.CURRENCY_CRYSTALS).RemoveItem(1000001, cost);
}
+ bazaar.CheckBazaarFlags();
+
return true;
}
diff --git a/FFXIVClassic Map Server/actors/chara/Character.cs b/FFXIVClassic Map Server/actors/chara/Character.cs
index 3e0c1cb8..e89cd8b6 100644
--- a/FFXIVClassic Map Server/actors/chara/Character.cs
+++ b/FFXIVClassic Map Server/actors/chara/Character.cs
@@ -5,6 +5,7 @@ using FFXIVClassic_Map_Server.actors.group;
using FFXIVClassic_Map_Server.Actors.Chara;
using FFXIVClassic_Map_Server.dataobjects;
using FFXIVClassic_Map_Server.packets.send.actor;
+using FFXIVClassic_Map_Server.packets.send.actor.inventory;
using FFXIVClassic_Map_Server.utils;
using System.Collections.Generic;
@@ -125,6 +126,16 @@ namespace FFXIVClassic_Map_Server.Actors
#region Inventory
+ public void SendItemPackage(Player player, uint id)
+ {
+ if (!itemPackages.ContainsKey((ushort)id))
+ return;
+
+ player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true));
+ itemPackages[(ushort)id].SendFullInventory(player);
+ player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId));
+ }
+
public void AddItem(uint catalogID)
{
AddItem(catalogID, 1);
diff --git a/FFXIVClassic Map Server/actors/chara/player/Player.cs b/FFXIVClassic Map Server/actors/chara/player/Player.cs
index f38dd81c..08fc70d2 100644
--- a/FFXIVClassic Map Server/actors/chara/player/Player.cs
+++ b/FFXIVClassic Map Server/actors/chara/player/Player.cs
@@ -552,7 +552,7 @@ namespace FFXIVClassic_Map_Server.Actors
//GetSpawnPackets(actorId, spawnType).DebugPrintPacket();
#region Inventory & Equipment
- QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId));
+ QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true));
itemPackages[Inventory.NORMAL].SendFullInventory(this);
itemPackages[Inventory.CURRENCY_CRYSTALS].SendFullInventory(this);
itemPackages[Inventory.KEYITEMS].SendFullInventory(this);
@@ -1630,7 +1630,9 @@ namespace FFXIVClassic_Map_Server.Actors
public void SendMyTradeToPlayer(Player player)
{
Inventory tradeInventory = new Inventory(this, 4, Inventory.TRADE);
+ player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId, true));
tradeInventory.SendFullInventory(player);
+ player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId));
}
public void SendDataPacket(params object[] parameters)
@@ -1817,16 +1819,6 @@ namespace FFXIVClassic_Map_Server.Actors
chocoboAppearance = appearanceId;
}
- public void SendItemPackage(Player player, uint id)
- {
- if (!itemPackages.ContainsKey((ushort)id))
- return;
-
- player.QueuePacket(InventoryBeginChangePacket.BuildPacket(actorId));
- itemPackages[(ushort)id].SendFullInventory(player);
- player.QueuePacket(InventoryEndChangePacket.BuildPacket(actorId));
- }
-
public Retainer SpawnMyRetainer(Npc bell, int retainerIndex)
{
Retainer retainer = Database.LoadRetainer(this, retainerIndex);
diff --git a/FFXIVClassic Map Server/dataobjects/InventoryItem.cs b/FFXIVClassic Map Server/dataobjects/InventoryItem.cs
index 50d570a0..879cdaa9 100644
--- a/FFXIVClassic Map Server/dataobjects/InventoryItem.cs
+++ b/FFXIVClassic Map Server/dataobjects/InventoryItem.cs
@@ -236,12 +236,9 @@ namespace FFXIVClassic_Map_Server.dataobjects
public void RefreshPositioning(Character owner, ushort itemPackage, ushort slot)
{
- lock (owner.GetItemPackage(itemPackage))
- {
- this.owner = owner;
- this.itemPackage = itemPackage;
- this.slot = slot;
- }
+ this.owner = owner;
+ this.itemPackage = itemPackage;
+ this.slot = slot;
}
public void SetExclusive(bool isExclusive)
diff --git a/FFXIVClassic Map Server/packets/send/Actor/inventory/InventoryBeginChangePacket.cs b/FFXIVClassic Map Server/packets/send/Actor/inventory/InventoryBeginChangePacket.cs
index 6f423d78..1601fe33 100644
--- a/FFXIVClassic Map Server/packets/send/Actor/inventory/InventoryBeginChangePacket.cs
+++ b/FFXIVClassic Map Server/packets/send/Actor/inventory/InventoryBeginChangePacket.cs
@@ -7,16 +7,13 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory
public const ushort OPCODE = 0x016D;
public const uint PACKET_SIZE = 0x28;
- public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId)
+ public static SubPacket BuildPacket(uint playerActorID, bool clearItemPackage = false)
{
byte[] data = new byte[8];
- data[0] = 2;
- return new SubPacket(OPCODE, sourceActorId, data);
- }
- public static SubPacket BuildPacket(uint playerActorID)
- {
- byte[] data = new byte[8];
+ if (clearItemPackage)
+ data[0] = 2;
+
return new SubPacket(OPCODE, playerActorID, data);
}
}