Beispiel #1
0
 static void Postfix(SmeltingVM __instance, Hero currentCraftingHero, ref SmeltingItemVM ____currentSelectedItem, ref ICraftingCampaignBehavior ____smithingBehavior)
 {
     if (repeating)
     {
         return;
     }
     if (____currentSelectedItem != null && ____smithingBehavior != null && Input.IsKeyDown(InputKey.LeftControl))
     {
         repeating = true;
         int maxfailsafe = 100;
         while (maxfailsafe-- > 0 && ____currentSelectedItem != null && ____smithingBehavior != null)
         {
             __instance.SmeltSelectedItems(currentCraftingHero);
         }
         repeating = false;
     }
 }
 private static bool Prefix(SmeltingVM __instance, Hero currentCraftingHero)
 {
     if (Traverse.Create(__instance).Field("_currentSelectedItem").GetValue() != null &&
         Traverse.Create(__instance).Field("_smithingBehavior").GetValue() != null)
     {
         ICraftingCampaignBehavior smithingBehavior = (ICraftingCampaignBehavior)Traverse.Create(__instance).Field("_smithingBehavior").GetValue();
         var itemRoster = MobileParty.MainParty.ItemRoster;
         if (smithingBehavior != null)
         {
             if (Input.IsKeyDown(InputKey.LeftShift))
             {
                 var stackAmount    = __instance.CurrentSelectedItem.NumOfItems;
                 var charcoalAmount = itemRoster.GetItemNumber(DefaultItems.Charcoal);
                 var energyCost     = Campaign.Current.Models.SmithingModel.GetEnergyCostForSmelting(__instance.CurrentSelectedItem.Item, currentCraftingHero);
                 var heroStamina    = smithingBehavior.GetHeroCraftingStamina(currentCraftingHero);
                 for (int i = 0; i < stackAmount &&
                      heroStamina >= energyCost &&
                      charcoalAmount >= 1; i++)
                 {
                     smithingBehavior.DoSmelting(currentCraftingHero, ((SmeltingItemVM)Traverse.Create(__instance).Field("_currentSelectedItem").GetValue()).Item);
                     __instance.RefreshList();
                     charcoalAmount--;
                     heroStamina -= energyCost;
                 }
             }
             else
             {
                 smithingBehavior.DoSmelting(currentCraftingHero, ((SmeltingItemVM)Traverse.Create(__instance).Field("_currentSelectedItem").GetValue()).Item);
             }
         }
     }
     __instance.RefreshList();
     if (__instance.CurrentSelectedItem != null)
     {
         SmeltingItemVM newItem = __instance.SmeltableItemList.FirstOrDefault((SmeltingItemVM i) => i.Item == __instance.CurrentSelectedItem.Item) ?? __instance.SmeltableItemList.FirstOrDefault <SmeltingItemVM>();
         Traverse.Create(__instance).Method("OnItemSelection", newItem).GetValue();
     }
     Traverse.Create(__instance).Method("_updateYieldValuesAcion").GetValue();
     return(false);
 }