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
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)) {
// blueprint
CommonInventoryResponseItem blueprintItem = inventoryService.AddItemToInventoryAndGetResponse(viking, rewardItem.ItemID, 1);

View File

@ -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;