private static void RespecAndRefresh(SGBarracksMWDetailPanel __instance, Pilot pilot) { Logger.Log($"==============================================================="); Logger.Log($"Before:\t{pilot.pilotDef.ExperienceSpent}, {pilot.pilotDef.ExperienceUnspent}"); Logger.Log($"Skill:\t{pilot.pilotDef.SkillGunnery}, {pilot.pilotDef.SkillPiloting}, {pilot.pilotDef.SkillGuts}, {pilot.pilotDef.SkillTactics}"); Logger.Log($"Base:\t{pilot.pilotDef.BaseGunnery}, {pilot.pilotDef.BasePiloting}, {pilot.pilotDef.BaseGuts}, {pilot.pilotDef.BaseTactics}"); Logger.Log($"Bonus:\t{pilot.pilotDef.BonusGunnery}, {pilot.pilotDef.BonusPiloting}, {pilot.pilotDef.BonusGuts}, {pilot.pilotDef.BonusTactics}"); SimGameState sim = UnityGameInstance.BattleTechGame.Simulation; int cost = GetRespecCost(sim, pilot); int days = GetRespecInjuryDays(sim, pilot) + sim.GetPilotTimeoutTimeRemaining(pilot); RespecPilot(pilot); sim.AddFunds(-cost); // currently bugged: AddInjuryDays(sim, pilot, days); pilot.pilotDef.SetTimeoutTime(days); pilot.pilotDef.PilotTags.Add("pilot_lightinjury"); sim.RefreshInjuries(); pilot.pilotDef.PilotTags.Add("HasRetrained"); __instance.DisplayPilot(pilot); __instance.ForceRefreshImmediate(); sim.RoomManager.RefreshDisplay(); Logger.Log($"==============================================================="); Logger.Log($"cost: {cost}, days: {days}"); Logger.Log($"==============================================================="); Logger.Log($"After:\t{pilot.pilotDef.ExperienceSpent}, {pilot.pilotDef.ExperienceUnspent}"); Logger.Log($"Skill:\t{pilot.pilotDef.SkillGunnery}, {pilot.pilotDef.SkillPiloting}, {pilot.pilotDef.SkillGuts}, {pilot.pilotDef.SkillTactics}"); Logger.Log($"Base:\t{pilot.pilotDef.BaseGunnery}, {pilot.pilotDef.BasePiloting}, {pilot.pilotDef.BaseGuts}, {pilot.pilotDef.BaseTactics}"); Logger.Log($"Bonus:\t{pilot.pilotDef.BonusGunnery}, {pilot.pilotDef.BonusPiloting}, {pilot.pilotDef.BonusGuts}, {pilot.pilotDef.BonusTactics}"); //invoking private method: sim.RespecPilot(pilot); // bugged method!!! //typeof(ToHit).GetMethod("RespecPilot", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(sim, new object[] { pilot }); //pilot.AddExperience(0, "respec", experienceSpent); }