Skip to content

Commit

Permalink
Crafting/consuming items hotfix
Browse files Browse the repository at this point in the history
  • Loading branch information
alborrajo committed Apr 28, 2024
1 parent 4bf9eee commit 47cc5c7
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
13 changes: 7 additions & 6 deletions Arrowgene.Ddon.GameServer/Characters/ItemManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,12 +135,13 @@ public List<CDataItemUpdateResult> ConsumeItemByUIdFromMultipleStorages(DdonServ
}
private CDataItemUpdateResult ConsumeItem(DdonServer<GameClient> server, Character character, StorageType fromStorageType, ushort slotNo, Item item, uint itemNum, uint consuneNum)
{
itemNum = (uint) Math.Max(0, (int)itemNum - (int)consuneNum);
uint finalItemNum = (uint) Math.Max(0, (int)itemNum - (int)consuneNum);
int finalConsumeNum = (int)itemNum - (int)finalItemNum;

CDataItemUpdateResult ntcData = new CDataItemUpdateResult();
ntcData.ItemList.ItemUId = item.UId;
ntcData.ItemList.ItemId = item.ItemId;
ntcData.ItemList.ItemNum = itemNum;
ntcData.ItemList.ItemNum = finalItemNum;
ntcData.ItemList.Unk3 = item.Unk3;
ntcData.ItemList.StorageType = fromStorageType;
ntcData.ItemList.SlotNo = slotNo;
Expand All @@ -153,18 +154,18 @@ private CDataItemUpdateResult ConsumeItem(DdonServer<GameClient> server, Charact
ntcData.ItemList.WeaponCrestDataList = item.WeaponCrestDataList;
ntcData.ItemList.ArmorCrestDataList = item.ArmorCrestDataList;
ntcData.ItemList.EquipElementParamList = item.EquipElementParamList;
ntcData.UpdateItemNum = -(int)consuneNum;
ntcData.UpdateItemNum = -finalConsumeNum;

if(itemNum == 0)
if(finalItemNum == 0)
{
// Delete item when ItemNum reaches 0 to free up the slot
character.Storage.setStorageItem(null, 0, fromStorageType, slotNo);
server.Database.DeleteStorageItem(character.CharacterId, fromStorageType, slotNo);
}
else
{
character.Storage.setStorageItem(item, itemNum, fromStorageType, slotNo);
server.Database.ReplaceStorageItem(character.CharacterId, fromStorageType, slotNo, item.UId, itemNum);
character.Storage.setStorageItem(item, finalItemNum, fromStorageType, slotNo);
server.Database.ReplaceStorageItem(character.CharacterId, fromStorageType, slotNo, item.UId, finalItemNum);
}

return ntcData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public override void Handle(GameClient client, StructurePacket<C2SCraftStartCraf
try
{
List<CDataItemUpdateResult> updateResults = _itemManager.ConsumeItemByUIdFromMultipleStorages(Server, client.Character, STORAGE_TYPES, craftMaterial.ItemUId, craftMaterial.ItemNum);
updateCharacterItemNtc.UpdateItemList.AddRange(updateResults);
}
catch (NotEnoughItemsException e)
{
Expand Down

0 comments on commit 47cc5c7

Please sign in to comment.