private static IEnumerable <ItemRosterElement> LootCasualties(ICollection <TroopRosterElement> shareFromCasualties, float lootFactor, bool playerWin = false) { EquipmentElement equipmentElement; ItemModifier randomModifierWithTarget; ItemModifier itemModifier; ItemRoster itemRosters = new ItemRoster(); List <EquipmentElement> equipmentElements = new List <EquipmentElement>(); foreach (TroopRosterElement shareFromCasualty in shareFromCasualties) { //for (int i = 0; i < 1; i++) { Equipment randomEquipment = GetRandomEquipment(shareFromCasualty.Character); equipmentElements.Clear(); int num = MBRandom.RoundRandomized(lootFactor); float lootSkill = lootFactor / .25f; for (int j = 0; j < num; j++) { float expectedLootedItemValue = 30f; if (playerWin) { float valLevel = (float)Math.Max(CharacterObject.PlayerCharacter.Level, shareFromCasualty.Character.Level); expectedLootedItemValue = 0.8f * ((30f * lootFactor) + (float)(valLevel * valLevel)); } else { expectedLootedItemValue = ItemHelper.GetExpectedLootedItemValue(shareFromCasualty.Character); } List <EquipmentElement> randomItems = GetRandomItems(randomEquipment, expectedLootedItemValue); foreach (EquipmentElement randomItem in randomItems) { if (randomItem.Item != null && !randomItem.Item.NotMerchandise && equipmentElements.Count <EquipmentElement>((EquipmentElement x) => x.Item.Type == randomItem.Item.Type) == 0) { equipmentElements.Add(randomItem); } } } for (int k = 0; k < equipmentElements.Count; k++) { EquipmentElement item = equipmentElements[k]; ItemRosterElement itemRosterElement = new ItemRosterElement(item.Item, 1, null); float single = 30f; // ItemHelper.GetExpectedLootedItemValue(shareFromCasualty.Character); if (playerWin) { float valLevel = (float)Math.Max(CharacterObject.PlayerCharacter.Level, shareFromCasualty.Character.Level); single = 0.8f * (30f * lootFactor) + (float)(valLevel * valLevel); } else { single = ItemHelper.GetExpectedLootedItemValue(shareFromCasualty.Character); } EquipmentElement equipmentElement1 = itemRosterElement.EquipmentElement; if (!equipmentElement1.Item.HasHorseComponent) { equipmentElement1 = itemRosterElement.EquipmentElement; if (equipmentElement1.Item.HasArmorComponent) { equipmentElement1 = itemRosterElement.EquipmentElement; equipmentElement = itemRosterElement.EquipmentElement; ItemModifierGroup itemModifierGroup = equipmentElement.Item.ArmorComponent.ItemModifierGroup; if (itemModifierGroup != null) { equipmentElement = itemRosterElement.EquipmentElement; randomModifierWithTarget = itemModifierGroup.GetRandomModifierWithTarget(single / (float)equipmentElement.GetBaseValue(), 1f); } else { randomModifierWithTarget = null; } equipmentElement1.SetModifier(randomModifierWithTarget); } } else { equipmentElement1 = itemRosterElement.EquipmentElement; equipmentElement = itemRosterElement.EquipmentElement; ItemModifierGroup itemModifierGroup1 = equipmentElement.Item.HorseComponent.ItemModifierGroup; if (itemModifierGroup1 != null) { equipmentElement = itemRosterElement.EquipmentElement; itemModifier = itemModifierGroup1.GetRandomModifierWithTarget(single / (float)equipmentElement.GetBaseValue(), 1f); } else { itemModifier = null; } equipmentElement1.SetModifier(itemModifier); } itemRosters.Add(itemRosterElement); } } } return(itemRosters); }
private IEnumerable <ItemRosterElement> LootCasualties(ICollection <TroopRosterElement> shareFromCasualties, float lootFactor) { EquipmentElement equipmentElement; ItemModifier randomModifierWithTarget; ItemModifier itemModifier; ItemRoster itemRosters = new ItemRoster(); List <EquipmentElement> equipmentElements = new List <EquipmentElement>(); foreach (TroopRosterElement shareFromCasualty in shareFromCasualties) { for (int i = 0; i < 1; i++) { Equipment randomEquipment = LootCollector.GetRandomEquipment(shareFromCasualty.Character); equipmentElements.Clear(); int num = MBRandom.RoundRandomized(lootFactor); for (int j = 0; j < num; j++) { float expectedLootedItemValue = ItemHelper.GetExpectedLootedItemValue(shareFromCasualty.Character); EquipmentElement randomItem = randomEquipment.GetRandomItem(expectedLootedItemValue); if (randomItem.Item != null && !randomItem.Item.NotMerchandise && equipmentElements.Count <EquipmentElement>((EquipmentElement x) => x.Item.Type == randomItem.Item.Type) == 0) { equipmentElements.Add(randomItem); } } for (int k = 0; k < equipmentElements.Count; k++) { EquipmentElement item = equipmentElements[k]; ItemRosterElement itemRosterElement = new ItemRosterElement(item.Item, 1, null); float single = ItemHelper.GetExpectedLootedItemValue(shareFromCasualty.Character); EquipmentElement equipmentElement1 = itemRosterElement.EquipmentElement; if (!equipmentElement1.Item.HasHorseComponent) { equipmentElement1 = itemRosterElement.EquipmentElement; if (equipmentElement1.Item.HasArmorComponent) { equipmentElement1 = itemRosterElement.EquipmentElement; equipmentElement = itemRosterElement.EquipmentElement; ItemModifierGroup itemModifierGroup = equipmentElement.Item.ArmorComponent.ItemModifierGroup; if (itemModifierGroup != null) { equipmentElement = itemRosterElement.EquipmentElement; randomModifierWithTarget = itemModifierGroup.GetRandomModifierWithTarget(single / (float)equipmentElement.GetBaseValue(), 1f); } else { randomModifierWithTarget = null; } equipmentElement1.SetModifier(randomModifierWithTarget); } } else { equipmentElement1 = itemRosterElement.EquipmentElement; equipmentElement = itemRosterElement.EquipmentElement; ItemModifierGroup itemModifierGroup1 = equipmentElement.Item.HorseComponent.ItemModifierGroup; if (itemModifierGroup1 != null) { equipmentElement = itemRosterElement.EquipmentElement; itemModifier = itemModifierGroup1.GetRandomModifierWithTarget(single / (float)equipmentElement.GetBaseValue(), 1f); } else { itemModifier = null; } equipmentElement1.SetModifier(itemModifier); } itemRosters.Add(itemRosterElement); } } } return(itemRosters); }