public static void DisplayChargeToFormationMessage(MBReadOnlyList <Formation> selectedFormations, Formation targetFormation) { // From MissionOrderVM.OnOrder var formationNames = new List <TextObject>(); foreach (var formation in selectedFormations) { formationNames.Add(GameTexts.FindText("str_formation_class_string", formation.PrimaryClass.GetName())); } if (!formationNames.IsEmpty()) { var message = new TextObject("{=ApD0xQXT}{STR1}: {STR2}"); message.SetTextVariable("STR1", GameTexts.MergeTextObjectsWithComma(formationNames, false)); message.SetTextVariable("STR2", GameTexts.FindText("str_formation_ai_sergeant_instruction_behavior_text", nameof(BehaviorTacticalCharge)) .SetTextVariable("TARGET_FORMATION", GameTexts.FindText("str_troop_group_name", ((int)targetFormation.PrimaryClass).ToString()))); MissionSharedLibrary.Utilities.Utility.DisplayMessage(message.ToString()); } }