public Weapon(WeaponDesign design, EquipmentMaterial material) : base(design, material) { element = design.element; ammoType = design.ammoType; style = design.style; minRange = design.minRange; maxRange = design.maxRange; damage = design.damage * material.attack[element]; attribute = design.attribute; }
public CraftedItemInfo(ItemObject item , WeaponDesign design , CultureObject culture , TaleWorlds.Localization.TextObject itemName , Crafting.OverrideData overrideData) { this.item = item; this.design = design; this.culture = culture; this.itemName = itemName; this.overrideData = overrideData; }
public static void GetSmithingCostsForWeaponDesign(WeaponDesign weaponDesign, ref int[] __result) { if (BannerlordCheatsSettings.Instance.SmithingCostPercentage < 100) { var factor = BannerlordCheatsSettings.Instance.SmithingCostPercentage / 100f; for (var i = 0; i < __result.Length; i++) { var newValue = (int)Math.Round(factor * __result[i]); __result[i] = newValue; } } }
/// <summary> /// Replace custom crafting pieces with the default ones /// </summary> public static void GenerateCraftedItemPrefix(WeaponDesign craftedData) { var validPieces = new List <WeaponDesignElement>(); foreach (var weaponDesignElement in craftedData.UsedPieces) { if (weaponDesignElement.IsValid && !craftedData.Template.Pieces.Contains(weaponDesignElement.CraftingPiece)) { var replacementCraftingPiece = craftedData.Template.Pieces.First(p => p.PieceType == weaponDesignElement.CraftingPiece.PieceType); validPieces.Add(WeaponDesignElement.CreateUsablePiece(replacementCraftingPiece)); } else { validPieces.Add(weaponDesignElement); } } UsedPiecesFieldRef(craftedData) = validPieces.ToArray(); }
public static void GetSmithingCostsForWeaponDesign(WeaponDesign weaponDesign, ref int[] __result) { try { if (BannerlordCheatsSettings.Instance?.SmithingCostPercentage < 100f) { var factor = BannerlordCheatsSettings.Instance.SmithingCostPercentage / 100f; for (var i = 0; i < __result.Length; i++) { var newValue = (int)Math.Round(factor * __result[i]); __result[i] = newValue; } } } catch (Exception e) { SubModule.LogError(e, typeof(SmithingCostPercentage)); } }
private static ItemObject InitializePreCraftedWeaponOnLoad(ItemObject itemObject, WeaponDesign craftedData, TaleWorlds.Localization.TextObject itemName, BasicCultureObject culture, Crafting.OverrideData overrideData) { Crafting crafting1 = new Crafting(craftedData.Template, culture); crafting1.CraftedWeaponName = itemName.ToString(); crafting1.GetType().GetProperty("CurrentWeaponDesign", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty).SetValue(crafting1, craftedData); crafting1.GetType().GetProperty("_history", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty).SetValue(crafting1, new System.Collections.Generic.List <WeaponDesign> { craftedData }); crafting1.GetType().GetMethod("SetItemObject", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.InvokeMethod).Invoke(crafting1, new Object[] { overrideData, itemObject }); return(itemObject); }
public static int GetMaxCounts(ref CraftingCampaignBehavior instance, Hero hero, WeaponDesign weaponDesign, int modifierTier, Crafting.OverrideData overrideData) { ItemRoster itemRoster = MobileParty.MainParty.ItemRoster; int[] smithingCostsForWeaponDesign = Campaign.Current.Models.SmithingModel.GetSmithingCostsForWeaponDesign(weaponDesign); //Taleworlds may fix "9" in following days CraftingState craftingState; ItemObject currentCraftedItemObject; if ((craftingState = (GameStateManager.Current.ActiveState as CraftingState)) != null) { //false == don't force recreate. shall this effect item creation? currentCraftedItemObject = craftingState.CraftingLogic.GetCurrentCraftedItemObject(false, null); } else { return(0); } int energyCostForSmithing = Campaign.Current.Models.SmithingModel.GetEnergyCostForSmithing(currentCraftedItemObject, hero); int result; if (energyCostForSmithing <= 0) { result = 2147483647; } else { result = instance.GetHeroCraftingStamina(hero) / energyCostForSmithing; } for (int i = 0; i < 9; i++) { if (smithingCostsForWeaponDesign[i] < 0) { result = Math.Min(result, MaxForInput(itemRoster, Campaign.Current.Models.SmithingModel.GetCraftingMaterialItem((CraftingMaterials)i), smithingCostsForWeaponDesign[i])); } } return(result); }
public static void Postfix(ref CraftingCampaignBehavior __instance, Hero hero, WeaponDesign weaponDesign, int modifierTier, Crafting.OverrideData overrideData) { ScreenBase topScreen = ScreenManager.TopScreen; if (topScreen != null && Input.IsKeyDown(InputKey.LeftShift) && !TLSmithingFasterOperationCounts.Flag) { TLSmithingFasterOperationCounts.Flag = true; int maxcounts = TLSmithingFasterOperationCounts.GetMaxCounts(ref __instance, hero, weaponDesign, modifierTier, overrideData); maxcounts = Math.Min(maxcounts, 4); for (int i = 0; i < maxcounts; i++) { __instance.CreateCraftedWeapon(hero, weaponDesign, modifierTier, overrideData); } TLSmithingFasterOperationCounts.Flag = false; } if (topScreen != null && Input.IsKeyDown(InputKey.LeftControl) && !TLSmithingFasterOperationCounts.Flag) { TLSmithingFasterOperationCounts.Flag = true; int maxcounts = TLSmithingFasterOperationCounts.GetMaxCounts(ref __instance, hero, weaponDesign, modifierTier, overrideData); for (int i = 0; i < maxcounts; i++) { __instance.CreateCraftedWeapon(hero, weaponDesign, modifierTier, overrideData); } TLSmithingFasterOperationCounts.Flag = false; } }