mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 04:03:58 +00:00
Add consumable items
This commit is contained in:
@@ -13,10 +13,12 @@ public class SuppliesExcel : ExcelResource
|
||||
[JsonProperty("Color")] public JToken? ColorRaw { get; set; }
|
||||
[JsonProperty("ProvideExp")] public JToken? ProvideExpRaw { get; set; }
|
||||
[JsonProperty("ConsumeGold")] public JToken? ConsumeGoldRaw { get; set; }
|
||||
[JsonProperty("GMnum")] public JToken? GMnumRaw { get; set; }
|
||||
|
||||
[JsonIgnore] public int Color => ReadInt(ColorRaw);
|
||||
[JsonIgnore] public uint ProvideExp => ReadUInt(ProvideExpRaw);
|
||||
[JsonIgnore] public uint ConsumeGold => ReadUInt(ConsumeGoldRaw);
|
||||
[JsonIgnore] public uint GMnum => ReadUInt(GMnumRaw);
|
||||
|
||||
public override uint GetId()
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MikuSB.Data;
|
||||
using MikuSB.Data.Excel;
|
||||
using MikuSB.Database;
|
||||
using MikuSB.Database.Inventory;
|
||||
using MikuSB.Enums.Item;
|
||||
@@ -136,4 +137,29 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre, detail, particular, level);
|
||||
return InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
}
|
||||
|
||||
public async ValueTask<BaseGameItemInfo?> AddSuppliesItem(SuppliesExcel suppliesData, uint count)
|
||||
{
|
||||
var templateId = GameResourceTemplateId.FromGdpl(suppliesData.Genre, suppliesData.Detail, suppliesData.Particular, suppliesData.Level);
|
||||
|
||||
uint maxCount = suppliesData.GMnum > 0 ? suppliesData.GMnum : 99999;
|
||||
uint giveCount = Math.Min(count, maxCount);
|
||||
|
||||
var existing = InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
if (existing != null)
|
||||
{
|
||||
existing.ItemCount = Math.Min(existing.ItemCount + giveCount, maxCount);
|
||||
return existing;
|
||||
}
|
||||
|
||||
var itemInfo = new BaseGameItemInfo
|
||||
{
|
||||
TemplateId = templateId,
|
||||
UniqueId = InventoryData.NextUniqueUid++,
|
||||
Flag = ItemFlagEnum.FLAG_READED,
|
||||
ItemCount = giveCount
|
||||
};
|
||||
InventoryData.Items[itemInfo.UniqueId] = itemInfo;
|
||||
return itemInfo;
|
||||
}
|
||||
}
|
||||
@@ -69,6 +69,10 @@ public class PlayerInstance(PlayerGameData data)
|
||||
{
|
||||
await CharacterManager.AddCharacter((ItemTypeEnum)card.Genre, card.Detail, card.Particular, card.Level);
|
||||
}
|
||||
foreach (var supplies in GameData.SuppliesData.Values)
|
||||
{
|
||||
await InventoryManager.AddSuppliesItem(supplies, 90000);
|
||||
}
|
||||
|
||||
var selected = CharacterManager.CharacterData.Characters
|
||||
.OrderBy(_ => Guid.NewGuid())
|
||||
|
||||
Reference in New Issue
Block a user