Skip to content

Commit 2838f47

Browse files
Support change for Smith Forever (#4)
fix a crash when energyCost is Zero in other mods. Add support to Smith Forever
1 parent ac94013 commit 2838f47

2 files changed

Lines changed: 21 additions & 6 deletions

File tree

TLSmithingFasterMod/TLSmithingFasterOperationCounts.cs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,12 @@ public static int GetMaxCounts(ref CraftingCampaignBehavior instance, Hero hero,
1313
{
1414
ItemRoster itemRoster = MobileParty.MainParty.ItemRoster;
1515
int energyCostForRefining = Campaign.Current.Models.SmithingModel.GetEnergyCostForRefining(ref refineFormula, hero);
16-
int result = instance.GetHeroCraftingStamina(hero) / energyCostForRefining;
16+
int result;
17+
if (energyCostForRefining <= 0)
18+
{
19+
result = 2147483647;
20+
}
21+
else result = instance.GetHeroCraftingStamina(hero) / energyCostForRefining;
1722
if (refineFormula.Input1Count > 0)
1823
{
1924
ItemObject craftingMaterialItem1;
@@ -36,12 +41,17 @@ public static int GetMaxCounts(ref CraftingCampaignBehavior instance, Hero hero,
3641
{
3742
ItemRoster itemRoster = MobileParty.MainParty.ItemRoster;
3843
int energyCostForSmelting = Campaign.Current.Models.SmithingModel.GetEnergyCostForSmelting(equipmentElement.Item, hero);
39-
int result = instance.GetHeroCraftingStamina(hero) / energyCostForSmelting;
44+
int result;
45+
if (energyCostForSmelting <= 0)
46+
{
47+
result = 2147483647;
48+
}
49+
else result = instance.GetHeroCraftingStamina(hero) / energyCostForSmelting;
4050

4151
int[] smeltingOutputForItem = Campaign.Current.Models.SmithingModel.GetSmeltingOutputForItem(equipmentElement.Item);
4252
for (int i = 0; i < 9; i++)
4353
{
44-
if (smeltingOutputForItem[i] != 0)
54+
if (smeltingOutputForItem[i] < 0)
4555
{
4656
result = Math.Min(result, MaxForInput(itemRoster, Campaign.Current.Models.SmithingModel.GetCraftingMaterialItem((CraftingMaterials)i), smeltingOutputForItem[i]));
4757
}
@@ -61,10 +71,15 @@ public static int GetMaxCounts(ref CraftingCampaignBehavior instance, Hero hero,
6171
currentCraftedItemObject = craftingState.CraftingLogic.GetCurrentCraftedItemObject(false, null);
6272
else return 0;
6373
int energyCostForSmithing = Campaign.Current.Models.SmithingModel.GetEnergyCostForSmithing(currentCraftedItemObject, hero);
64-
int result = instance.GetHeroCraftingStamina(hero) / energyCostForSmithing;
74+
int result;
75+
if (energyCostForSmithing <= 0)
76+
{
77+
result = 2147483647;
78+
}
79+
else result = instance.GetHeroCraftingStamina(hero) / energyCostForSmithing;
6580
for (int i = 0; i < 9; i++)
6681
{
67-
if (smithingCostsForWeaponDesign[i] != 0)
82+
if (smithingCostsForWeaponDesign[i] < 0)
6883
{
6984
result = Math.Min(result, MaxForInput(itemRoster, Campaign.Current.Models.SmithingModel.GetCraftingMaterialItem((CraftingMaterials)i), smithingCostsForWeaponDesign[i]));
7085
}

TLSmithingFasterMod/TLSmithingFasterSubModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ protected override void OnSubModuleLoad()
1515
protected override void OnBeforeInitialModuleScreenSetAsRoot()
1616
{
1717
base.OnBeforeInitialModuleScreenSetAsRoot();
18-
InformationManager.DisplayMessage(new InformationMessage("TLSmithingFasterMod e1.3.0.0 is successfully loaded."));
18+
InformationManager.DisplayMessage(new InformationMessage("TLSmithingFasterMod e1.3.0.1 is successfully loaded."));
1919
}
2020
}
2121
}

0 commit comments

Comments
 (0)