bugfix: reward DT with correct gender items

This commit is contained in:
Robert Paciorek 2023-09-04 09:48:28 +00:00 committed by Spirtix
parent 82d31853ea
commit 645d1f30ad
2 changed files with 21 additions and 4 deletions

View File

@ -1119,7 +1119,8 @@ public class ContentController : Controller {
// - battle backpack items and blueprints // - battle backpack items and blueprints
if (req.LevelRewardType != LevelRewardType.LevelFailure) { if (req.LevelRewardType != LevelRewardType.LevelFailure) {
ItemData rewardItem = itemService.GetDTReward(); Gender gender = XmlUtil.DeserializeXml<AvatarData>(viking.AvatarSerialized).GenderType;
ItemData rewardItem = itemService.GetDTReward(gender);
if (itemService.ItemHasCategory(rewardItem, 651)) { if (itemService.ItemHasCategory(rewardItem, 651)) {
// blueprint // blueprint
CommonInventoryResponseItem blueprintItem = inventoryService.AddItemToInventoryAndGetResponse(viking, rewardItem.ItemID, 1); CommonInventoryResponseItem blueprintItem = inventoryService.AddItemToInventoryAndGetResponse(viking, rewardItem.ItemID, 1);

View File

@ -24,9 +24,14 @@ namespace sodoff.Services {
return items[id]; return items[id];
} }
public ItemData GetDTReward() { public ItemData GetDTReward(Gender gender) {
// TODO: better calculation of reward item - use difficulty of DT level, item rarity, tier, etc int itemID = 12374;
int itemID = itemsRewardForDT[random.Next(0, itemsRewardForDT.Length)]; 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]; return items[itemID];
} }
@ -47,6 +52,17 @@ namespace sodoff.Services {
return null; 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) { public bool ItemHasCategory(ItemData itemData, int categoryId) {
ItemDataCategory? category = itemData.Category?.FirstOrDefault(e => e.CategoryId == categoryId); ItemDataCategory? category = itemData.Category?.FirstOrDefault(e => e.CategoryId == categoryId);
return category != null; return category != null;