public static void Postfix(AbstractActor __instance, ref int __result, StatCollection ___statCollection) { Mod.Log.Trace?.Write("AA:BI - entered."); Mod.Log.Debug?.Write($"Actor:({CombatantUtils.Label(__instance)}) has raw result: {__result}"); if (__instance.Combat.TurnDirector.IsInterleaved) { int baseInit = ___statCollection.GetValue <int>("BaseInitiative"); int phaseMod = ___statCollection.GetValue <int>("PhaseModifier"); int modifiedInit = baseInit + phaseMod; if (modifiedInit < Mod.MinPhase) { Mod.Log.Info?.Write($"Actor:({CombatantUtils.Label(__instance)}) being set to {Mod.MinPhase} due to BaseInit:{baseInit} + PhaseMod:{phaseMod}"); __result = Mod.MinPhase; } else if (modifiedInit > Mod.MaxPhase) { Mod.Log.Info?.Write($"Actor:({CombatantUtils.Label(__instance)}) being set to {Mod.MaxPhase} due to BaseInit:{baseInit} + PhaseMod:{phaseMod}"); __result = Mod.MaxPhase; } else { Mod.Log.Info?.Write($"Actor:({CombatantUtils.Label(__instance)}) has stats BaseInit:{baseInit} + PhaseMod:{phaseMod} = modifiedInit:{modifiedInit}."); __result = modifiedInit; } } else { Mod.Log.Info?.Write($"Actor:({CombatantUtils.Label(__instance)}) is non-interleaved, returning phase: {Mod.MaxPhase}."); __result = Mod.MaxPhase; } }
public static void Postfix(AbstractActor __instance, ref int __result, StatCollection ___statCollection) { CombatGameState ___Combat = (CombatGameState)Traverse.Create(__instance).Property("Combat").GetValue(); if (___Combat.TurnDirector.IsInterleaved) { CombatHUD ___HUD = (CombatHUD)Traverse.Create(__instance).Property("HUD").GetValue(); int baseInit = ___statCollection.GetValue <int>("BaseInitiative"); int phaseMod = ___statCollection.GetValue <int>("PhaseModifier"); int modifiedInit = baseInit + phaseMod; //SkillBasedInit.Logger.LogIfDebug($"Actor:({__instance.DisplayName}_{__instance.GetPilot().Name}) has stats BaseInit:{baseInit} / PhaseMod:{phaseMod}"); if (modifiedInit < Mod.MinPhase) { Mod.Log.Info($"Actor:({CombatantHelper.LogLabel(__instance)}) being set to {Mod.MinPhase} due to BaseInit:{baseInit} + PhaseMod:{phaseMod}"); __result = Mod.MinPhase; } else if (modifiedInit > Mod.MaxPhase) { Mod.Log.Info($"Actor:({CombatantHelper.LogLabel(__instance)}) being set to {Mod.MaxPhase} due to BaseInit:{baseInit} + PhaseMod:{phaseMod}"); __result = Mod.MaxPhase; } else { __result = modifiedInit; //SkillBasedInit.Logger.Log($"Actor:({__instance.DisplayName}_{__instance.GetPilot().Name}) has stats BaseInit:{baseInit} + PhaseMod:{phaseMod} = modifiedInit:{modifiedInit}."); } } }
public static int AdditionalMechSlots() { if (BiggerDrops.settings.allowUpgrades && companyStats != null) { int maxSize = CustomUnitsAPI.Detected() ? BiggerDrops.settings.MAX_CU_ADDITINAL_MECH_SLOTS : MaxAdditionalMechSlots; int val = companyStats.GetValue <int>(AdditionalMechSlotsStat); return(val > maxSize ? maxSize : val); } return(Math.Max(Math.Min(MaxAdditionalMechSlots, BiggerDrops.settings.additinalMechSlots), 0)); }
public static object GetBattleTechFloat(TsEnvironment env, object[] inputs) { int statScope = env.ToInt(inputs[0]); string statName = env.ToString(inputs[1]); Main.Logger.Log($"[GetBattleTechFloat] Triggered with scope {statScope} and statName {statName}."); StatCollection statCollection = SimHelper.GetStatCollection(statScope); if (statCollection == null) // GUARD { Main.Logger.LogError($"[GetBattleTechFloat] StatCollection is null for {statScope}"); return(null); } if (statCollection.ContainsStatistic(statName)) { float stat = statCollection.GetValue <float>(statName); Main.Logger.Log($"[GetBattleTechFloat] Stat {statName} found with value {stat}."); return(stat); } Main.Logger.LogError($"[GetBattleTechFloat] Stat {statName} does not exist for conversation operation."); return(null); }
public static object EvaluateBattleTechString(TsEnvironment env, object[] inputs) { int statScope = env.ToInt(inputs[0]); string statName = env.ToString(inputs[1]); int operation = env.ToInt(inputs[2]); string compareValue = env.ToString(inputs[3]); Main.Logger.Log($"[EvaluateBattleTechString] Triggered with scope '{statScope}', statName '{statName}', operation '{operation}', compareValue '{compareValue}"); StatCollection statCollection = SimHelper.GetStatCollection(statScope); if (statCollection.ContainsStatistic(statName)) { string stat = statCollection.GetValue <string>(statName); switch (operation) { case 1: // equal to return(stat == compareValue); case 2: // not equal to return(stat != compareValue); default: return(false); } } Main.Logger.Log($"[EvaluateBattleTechString] Stat {statName} does not exist for conversation operation."); return(false); }
public void setCompanyStats(StatCollection stats) { companyStats = stats; if (!companyStats.ContainsStatistic(PqMechSkillTracker)) { companyStats.AddStatistic <float>(PqMechSkillTracker, 0.0f); } if (!companyStats.ContainsStatistic(PqMedSkillTracker)) { companyStats.AddStatistic <float>(PqMedSkillTracker, 0.0f); } if (!companyStats.ContainsStatistic(PqMoraleTracker)) { companyStats.AddStatistic <float>(PqMoraleTracker, 0.0f); } Main.modLog.LogMessage($"Tracker Stat: {PqMechSkillTracker}, value: {companyStats.GetValue<float>(PqMechSkillTracker)}"); Main.modLog.LogMessage($"Tracker Stat: {PqMedSkillTracker}, value: {companyStats.GetValue<float>(PqMedSkillTracker)}"); Main.modLog.LogMessage($"Tracker Stat: {PqMoraleTracker}, value: {companyStats.GetValue<float>(PqMoraleTracker)}"); }
private void updateStat(string trackerStat, string cStat, float trackerValue) { int cValue = companyStats.GetValue <int>(cStat); Main.modLog.LogMessage($"possible update to {cStat}, current {cValue}, tracker: {trackerValue}"); int trackerInt = (int)trackerValue; trackerValue -= trackerInt; if (trackerInt != 0) { cValue += trackerInt; } if (trackerValue < 0) { cValue -= 1; trackerValue = 1.0f + trackerValue; } Main.modLog.LogMessage($"Updating: {cStat} => {cValue}, tracker => {trackerValue}"); companyStats.Set <int>(cStat, cValue); companyStats.Set <float>(trackerStat, trackerValue); }
public void UpdateCULances() { if (CustomUnitsAPI.Detected()) { int lanceCount = 1; int mCount = BiggerDrops.settings.additinalMechSlots; while (mCount > 0) { lanceCount++; mCount -= 4; } int vCount = BiggerDrops.settings.vehicleCount; while (vCount > 0) { lanceCount++; vCount -= 4; } int iBayCount = Math.Max(MIN_CU_MECHBAYS, companyStats.GetValue <int>("MechBayPods")); if (debugLanceLoadout) { CustomUnitsAPI.setLancesCount(3); CustomUnitsAPI.setLanceData(0, 6, 5, false); CustomUnitsAPI.setLanceData(1, 4, 4, false); CustomUnitsAPI.setLanceData(2, 4, 2, true); CustomUnitsAPI.setOverallDeployCount(6); CustomUnitsAPI.playerControl(-1, -1); } else { CustomUnitsAPI.setLancesCount(lanceCount); CustomUnitsAPI.setLanceData(0, DEFAULT_MECH_SLOTS, DEFAULT_MECH_SLOTS, false); int vStart = 1; mCount = BiggerDrops.settings.additinalMechSlots; while (mCount > 0) { CustomUnitsAPI.setLanceData(vStart, DEFAULT_MECH_SLOTS, mCount > DEFAULT_MECH_SLOTS ? DEFAULT_MECH_SLOTS : mCount, false); vStart++; mCount -= 4; } vCount = BiggerDrops.settings.vehicleCount; while (vCount > 0) { CustomUnitsAPI.setLanceData(vStart, DEFAULT_MECH_SLOTS, vCount > DEFAULT_MECH_SLOTS ? DEFAULT_MECH_SLOTS : vCount, true); vStart++; vCount -= 4; } CustomUnitsAPI.setOverallDeployCount(System.Math.Min(DEFAULT_MECH_SLOTS + BiggerDrops.settings.additinalMechSlots + BiggerDrops.settings.vehicleCount, MAX_CU_DROP_SIZE)); CustomUnitsAPI.playerControl(DEFAULT_MECH_SLOTS + BiggerDrops.settings.additinalPlayerMechSlots, BiggerDrops.settings.vehicleCount); CustomUnitsAPI.setMechBayCount(iBayCount); } } }
public static string getClientPostId() { if (companyStats == null) { Logger.Log("null company Stats, cannot send data to server!"); return(""); } string clientPostId = $"{companyStats.GetValue<string>(CLIENT_ID_STAT)}{companyStats.GetValue<string>(CAREER_ID_STAT)}{companyStats.GetValue<string>(SEASON_STAT)}"; return(clientPostId); }
public int getCompanyCosts() { if (companyStats == null) { DCECore.modLog.Info?.Write($"CStats is null, race-condition?"); return(0); } long totalCost = 0; for (int i = 0; i < DCECore.settings.averagedDrops; i++) { string statName = $"{DropCostStatPrefix}{i}"; if (companyStats.ContainsStatistic(statName)) { totalCost += companyStats.GetValue <int>(statName); } } DCECore.modLog.Debug?.Write($"TotalCost before averaging: {totalCost}"); totalCost /= DCECore.settings.averagedDrops; DCECore.modLog.Debug?.Write($"TotalCost after averaging: {totalCost}"); dropWorth = (int)totalCost; return(dropWorth); }
public static void setCompanyStats(StatCollection stats, bool init) { companyStats = stats; if (!companyStats.ContainsStatistic(CLIENT_ID_STAT)) { companyStats.AddStatistic(CLIENT_ID_STAT, Fields.settings.ClientID); } ; if (!companyStats.ContainsStatistic(CAREER_ID_STAT) && init) { Guid careerId = Guid.NewGuid(); companyStats.AddStatistic(CAREER_ID_STAT, careerId.ToString()); } else { if (!companyStats.ContainsStatistic(CAREER_ID_STAT)) { companyStats.AddStatistic(CAREER_ID_STAT, ""); } } if (!companyStats.ContainsStatistic(SEASON_STAT)) { companyStats.AddStatistic(SEASON_STAT, Fields.settings.Season); } ; if (!companyStats.ContainsStatistic(MISSION_COUNT_STAT)) { companyStats.AddStatistic(MISSION_COUNT_STAT, 0); } ; if (!companyStats.ContainsStatistic(CONSOLE_COUNT)) { companyStats.AddStatistic(CONSOLE_COUNT, 0); } ; if (!companyStats.ContainsStatistic(BM_TRANSACTION)) { companyStats.AddStatistic(BM_TRANSACTION, ""); } ; Logger.Log($"Career ID Loaded: {companyStats.GetValue<string>(CAREER_ID_STAT)}"); Logger.Log($"Client issue Token: {RtCore.RTCore.rtData}"); Logger.Log($"Client Salt: {RtCore.RTCore.rtSalt}"); Web.forceRefreshServerSettings(); }
// Direct copy of BattleTech.PilotGenerator.GetSpentXPPilot private static int GetSpentXPPilot(StatCollection stats) { return(GetSpentXPPilot(stats.GetValue <int>("Gunnery")) + GetSpentXPPilot(stats.GetValue <int>("Piloting")) + GetSpentXPPilot(stats.GetValue <int>("Guts")) + GetSpentXPPilot(stats.GetValue <int>("Tactics"))); }
internal T Get() { return(StatCollection.GetValue <T>(Key)); }