private static void CompleteCraftedItem(ItemObject item, Crafting.OverrideData overrideData = null)
 {
     ItemObject.InitAsPlayerCraftedItem(ref item);
     MBObjectManager.Instance.RegisterObject(item);
     #if e159 || e1510
     AccessTools.Method(typeof(CampaignEventDispatcher), "OnNewItemCrafted")
     .Invoke(CampaignEventDispatcher.Instance, new object[] { item, overrideData });
     #else
     CampaignEventDispatcher.Instance.OnNewItemCrafted(item, overrideData, false);
     #endif
 }
Exemple #2
0
 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;
 }
        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);
        }
Exemple #5
0
        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;
            }
        }