diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 14e8d76..3145392 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -1119,7 +1119,8 @@ public class ContentController : Controller { // - battle backpack items and blueprints if (req.LevelRewardType != LevelRewardType.LevelFailure) { - ItemData rewardItem = itemService.GetDTReward(); + Gender gender = XmlUtil.DeserializeXml(viking.AvatarSerialized).GenderType; + ItemData rewardItem = itemService.GetDTReward(gender); if (itemService.ItemHasCategory(rewardItem, 651)) { // blueprint CommonInventoryResponseItem blueprintItem = inventoryService.AddItemToInventoryAndGetResponse(viking, rewardItem.ItemID, 1); diff --git a/src/Services/ItemService.cs b/src/Services/ItemService.cs index 84b79ae..ff5ddf3 100644 --- a/src/Services/ItemService.cs +++ b/src/Services/ItemService.cs @@ -24,9 +24,14 @@ namespace sodoff.Services { return items[id]; } - public ItemData GetDTReward() { - // TODO: better calculation of reward item - use difficulty of DT level, item rarity, tier, etc - int itemID = itemsRewardForDT[random.Next(0, itemsRewardForDT.Length)]; + public ItemData GetDTReward(Gender gender) { + int itemID = 12374; + for (int i=0; i<8; ++i) { + // TODO: better calculation of reward item - use difficulty of DT level, item rarity, tier, etc + itemID = itemsRewardForDT[random.Next(0, itemsRewardForDT.Length)]; + if (CheckItemGender(items[itemID], gender)) + return items[itemID]; + } return items[itemID]; } @@ -47,6 +52,17 @@ namespace sodoff.Services { return null; } + public bool CheckItemGender(ItemData itemData, Gender gender) { + string? itemGender = itemData.Attribute?.FirstOrDefault(e => e.Key == "Gender")?.Value; + if (itemGender != null) { + if (gender == Gender.Male && itemGender == "F") + return false; + if (gender == Gender.Female && itemGender == "M") + return false; + } + return true; + } + public bool ItemHasCategory(ItemData itemData, int categoryId) { ItemDataCategory? category = itemData.Category?.FirstOrDefault(e => e.CategoryId == categoryId); return category != null;