static void Postfix(SimGameState __instance, PilotDef def) { Mod.Log.Info?.Write($"Adding new pilot def: {def} to roster."); CrewDetails details = ModState.GetCrewDetails(def); // Add any mechtech, medtech, or aerospace points if (details.IsAerospaceCrew) { // Track our skill points Mod.Log.Info?.Write($" -- crew is aerospace, adding: {details.Value} aerospace skill"); __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.Aerospace_Skill, StatCollection.StatOperation.Int_Add, details.Value); // Track the crew count __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.CrewCount_Aerospace, StatCollection.StatOperation.Int_Add, 1); } else if (details.IsMechTechCrew) { Mod.Log.Info?.Write($" -- crew is mechtech, adding: {details.Value} mechtech skill"); __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.HBS_Company_MechTech_Skill, StatCollection.StatOperation.Int_Add, details.Value); // Track the crew count __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.CrewCount_MechTechs, StatCollection.StatOperation.Int_Add, 1); } else if (details.IsMechWarrior) { // Track the crew count __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.CrewCount_MechWarriors, StatCollection.StatOperation.Int_Add, 1); } else if (details.IsMedTechCrew) { Mod.Log.Info?.Write($" -- crew is medtech, adding: {details.Value} medtech skill"); __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.HBS_Company_MedTech_Skill, StatCollection.StatOperation.Int_Add, details.Value); // Track the crew count __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.CrewCount_MedTechs, StatCollection.StatOperation.Int_Add, 1); } else if (details.IsVehicleCrew) { // Track the crew count __instance.CompanyStats.ModifyStat <int>(null, -1, ModStats.CrewCount_VehicleCrews, StatCollection.StatOperation.Int_Add, 1); } if (ModState.IsHiringFlow) { // We are a real hire, not from initial spawn Mod.Log.Debug?.Write(" -- performing hiring checks."); // An actual hire versus start-of-game initialization. Revert the costs previously applied in HirePilot int purchaseCostAfterReputationModifier = __instance.CurSystem.GetPurchaseCostAfterReputationModifier(__instance.GetMechWarriorHiringCost(def)); __instance.AddFunds(purchaseCostAfterReputationModifier, null, true, true); // Apply their hiring bonus Mod.Log.Info?.Write($"Hiring crew for bonus: {details.AdjustedBonus}"); __instance.AddFunds(-details.AdjustedBonus, null, true, true); // Only refresh if we're actually in game __instance.RoomManager.RefreshTimeline(false); __instance.RoomManager.RefreshDisplay(); } // DEBUG Mod.Log.Debug?.Write($"ITERATING TAGS ON DEF"); foreach (string tag in def.PilotTags) { Mod.Log.Debug?.Write($" -- tag: {tag}"); } }