static void Prefix(SGContractsListItem __instance, Contract contract) { try { if (contract.GUID == null) { contract.SetGuid(Guid.NewGuid().ToString()); } if (!Fields.alreadyRaised.ContainsKey(contract.GUID)) { Settings settings = Helper.LoadSettings(); Thread.Sleep(20); System.Random rnd = new System.Random(); int randMissions = 1; if (Fields.currentMultiMissions < settings.maxMultiMissions) { randMissions = rnd.Next(2, settings.maxNumberOfMissions + 1); contract.Override.difficultyUIModifier += randMissions - 1; Fields.currentMultiMissions++; } Fields.alreadyRaised.Add(contract.GUID, randMissions); } } catch (Exception e) { Logger.LogError(e); } }
public static void Postfix(SGContractsWidget __instance, List <SGContractsListItem> ___listedContracts) { for (int i = 0; i < ___listedContracts.Count; i++) { SGContractsListItem sgContractsListItem = ___listedContracts[i]; // Reset contractDisplayStyle if (opportunityMissionIndexList.Contains(i)) { sgContractsListItem.Contract.Override.contractDisplayStyle = ContractDisplayStyle.BaseCampaignNormal; } } opportunityMissionIndexList.Clear(); }
static void Prefix(SGContractsListItem __instance, Contract contract) { try { if (contract.Override.travelOnly && !Fields.AlreadyRaised.ContainsKey(contract.Name) && !contract.IsPriorityContract) { Settings settings = Helper.LoadSettings(); contract.SetInitialReward(Mathf.RoundToInt(contract.InitialContractValue * settings.DeploymentSalaryMultiplier)); contract.Override.difficultyUIModifier = 2; System.Random rand = new System.Random(); int numberOfMonth = rand.Next(1, settings.MaxMonth + 1); Fields.AlreadyRaised.Add(contract.Name, numberOfMonth); } } catch (Exception e) { Logger.LogError(e); } }
static void Postfix(SGContractsListItem __instance, Contract contract) { try { if (Fields.alreadyRaised[contract.GUID] != 1) { TextMeshProUGUI contractName = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractName"); TextMeshProUGUI contractMaxPay = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractMaxPay"); TextMeshProUGUI contractMaxSalvage = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractMaxSalvage"); ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractName, contract.Override.contractName + " (" + Fields.alreadyRaised[contract.GUID] + " Missions)" }); ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractMaxPay, contractMaxPay.text + " (x" + Fields.alreadyRaised[contract.GUID] + ")" }); ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractMaxSalvage, contractMaxSalvage.text + " (x" + Fields.alreadyRaised[contract.GUID] + ")" }); } } catch (Exception e) { Logger.LogError(e); } }
public static void Postfix(SGContractsListItem __instance, Contract contract, SimGameState sim) { var setFieldText = Traverse.Create(__instance).Method("setFieldText", new[] { typeof(TextMeshProUGUI), typeof(string) }); var maxSalvage = contract.SalvagePotential + sim.Constants.Finances.ContractFloorSalvageBonus; var maxPrioritySalvage = Math.Min(7, Mathf.FloorToInt(maxSalvage * sim.Constants.Salvage.PrioritySalvageModifier)); var contractMaxSalvage = Traverse.Create(__instance).Field("contractMaxSalvage").GetValue <TextMeshProUGUI>(); setFieldText.GetValue(contractMaxSalvage, $"{maxPrioritySalvage} / {maxSalvage}"); var actualSalvage = Mathf.FloorToInt(contract.Override.negotiatedSalvage * contract.SalvagePotential) + sim.Constants.Finances.ContractFloorSalvageBonus; var actualPrioritySalvage = Math.Min(7, Mathf.FloorToInt(actualSalvage * sim.Constants.Salvage.PrioritySalvageModifier)); var contractSalvage = Traverse.Create(__instance).Field("contractSalvage").GetValue <TextMeshProUGUI>(); setFieldText.GetValue(contractSalvage, $"{actualPrioritySalvage} / {actualSalvage}"); }
static void Postfix(SGContractsListItem __instance, Contract contract) { try { if (contract.Override.travelOnly && !contract.IsPriorityContract) { TextMeshProUGUI contractName = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractName"); TextMeshProUGUI contractMaxPay = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractMaxPay"); TextMeshProUGUI contractMaxSalvage = (TextMeshProUGUI)ReflectionHelper.GetPrivateField(__instance, "contractMaxSalvage"); int numberOfMonth = Fields.AlreadyRaised[contract.Name]; ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractName, contract.Override.contractName + " (" + numberOfMonth + " Months)" }); ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractMaxPay, contractMaxPay.text + " (per month)" }); ReflectionHelper.InvokePrivateMethode(__instance, "setFieldText", new object[] { contractMaxSalvage, contractMaxSalvage.text + " (per mission)" }); } } catch (Exception e) { Logger.LogError(e); } }
public static void Prefix(SGContractsWidget __instance, List <SGContractsListItem> ___listedContracts) { try { for (int i = 0; i < ___listedContracts.Count; i++) { SGContractsListItem sgContractsListItem = ___listedContracts[i]; if (sgContractsListItem.Contract.IsOpportunityMission()) { opportunityMissionIndexList.Add(i); Logger.Debug($"[SGContractsWidget_AddContract_PREFIX] Contract at index {i} is an opportunity mission"); // Temporarily set contractDisplayStyle sgContractsListItem.Contract.Override.contractDisplayStyle = ContractDisplayStyle.BaseCampaignStory; } } } catch (Exception e) { Logger.Error(e); } }