//Т Е Х Н И К А   П Р О Т И В   П Е Х О Т Ы
        private void PlayVehicleVSInfantry(CombatLib.Offence.Melee.OMVehicle AttackingPlayer, CombatLib.Defence.Melee.DMInfantry DefendingPlayer)
        {
            /*//отладочные выводы
            MessageBox.Show("VehicleVSInfantry");
            MessageBox.Show(AttackingPlayer.ToString(), "AttackingPlayer");
            MessageBox.Show(DefendingPlayer.ToString(), "DefendingPlayer");*/

            //инициализация объектов
            Random RndGenerator = new Random();
            CombatLib.Phases.PhaseHits.PhaseHitsInfantry Hits = new CombatLib.Phases.PhaseHits.PhaseHitsInfantry();
            CombatLib.Phases.PhaseWounds.PhaseWoundsInfantry Wounds = new CombatLib.Phases.PhaseWounds.PhaseWoundsInfantry();
            CombatLib.Phases.PhaseSaves.PhaseSavesInfantry Saves = new CombatLib.Phases.PhaseSaves.PhaseSavesInfantry();

            //указатели на родителей классов
            CombatLib.Offence.Melee.OffenceMelee baseOMVehicle = AttackingPlayer;
            CombatLib.Defence.Melee.DefenceMelee baseDMInfantry = DefendingPlayer;
            CombatLib.Phases.PhaseHits.PhaseHits basePhaseHitsInfantry = Hits;

            ////ПОДГОТОВЛЕНИЯ ПЕРЕД ИГРОЙ
            //вычисление наилучшего спасброска
            Saves.Condition = CombatLib.Addition.AdditionalFuncs.BestSaveThrow(AttackingPlayer.AP, 7, DefendingPlayer.ArmorSave, DefendingPlayer.InvulSave);

            //И Г Р А

            //попадания
            try
            {
                CombatLib.BattleFuncs.PlayHits.PlayMelee(baseOMVehicle, DefendingPlayer, ref basePhaseHitsInfantry, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (Hits.Hits == 0)
            {
                this.DisplayResult(Hits);
                return;
            }

            //раны
            try
            {
                CombatLib.BattleFuncs.PlayWounds.MeleePlay(baseOMVehicle, DefendingPlayer, Hits, ref Wounds, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (Wounds.RowWounds == 0)
            {
                this.DisplayResult(Hits, Wounds);
                return;
            }

            //спасы
            try
            {
                CombatLib.BattleFuncs.PlaySaves.Play(ref Wounds, ref Saves, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            this.DisplayResult(Hits, Wounds, Saves);
        }
        //П Е Х О Т А   П Р О Т И В   П Е Х О Т Ы
        private void PlayInfantryVSInfantry(CombatLib.Offence.Ranged.ORInfantry AttackingPlayer, CombatLib.Defence.Ranged.DRInfantry DefendingPlayer)
        {
            /*//отладочные выводы
            MessageBox.Show("InfantryVSInfantry");
            MessageBox.Show(AttackingPlayer.ToString(), "AttackingPlayer");
            MessageBox.Show(DefendingPlayer.ToString(), "DefendingPlayer");*/

            //инициализация объектов
            Random RndGenerator = new Random(); //генератор рандомных числе - один на все время работы программы со случайной затравкой
            CombatLib.Phases.PhaseHits.PhaseHitsInfantry Hits = new CombatLib.Phases.PhaseHits.PhaseHitsInfantry(); //класс фазы попаданий
            CombatLib.Phases.PhaseWounds.PhaseWoundsInfantry Wounds = new CombatLib.Phases.PhaseWounds.PhaseWoundsInfantry(); //класс фазы ран
            CombatLib.Phases.PhaseSaves.PhaseSavesInfantry Saves = new CombatLib.Phases.PhaseSaves.PhaseSavesInfantry(); //класс фазы спасбросков

            //указатели на родителей классов
            CombatLib.Offence.Ranged.OffenceRanged baseORInfantry = AttackingPlayer; //родитель атакующего игрока
            CombatLib.Phases.PhaseHits.PhaseHits basePhaseHitsInfantry = Hits; //родитель фазы попаданий

            //ПОДГОТОВЛЕНИЯ ПЕРЕД ИГРОЙ
            //вычисление наилучшего спасброска
            Saves.Condition = CombatLib.Addition.AdditionalFuncs.BestSaveThrow(AttackingPlayer.AP, DefendingPlayer.CoverSave, DefendingPlayer.ArmorSave, DefendingPlayer.InvulSave);

            //И Г Р А

            //попадания
            try
            {
                CombatLib.BattleFuncs.PlayHits.PlayRanged(baseORInfantry, ref basePhaseHitsInfantry, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (Hits.Hits == 0)
            {
                this.DisplayResult(Hits);
                return;
            }

            //раны
            try
            {
                CombatLib.BattleFuncs.PlayWounds.RangedPlay(baseORInfantry, DefendingPlayer, Hits, ref Wounds, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (Wounds.RowWounds == 0)
            {
                this.DisplayResult(Hits, Wounds);
                return;
            }

            //спасы
            try
            {
                CombatLib.BattleFuncs.PlaySaves.Play(ref Wounds, ref Saves, ref RndGenerator);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "Ошибка: " + e.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            this.DisplayResult(Hits, Wounds, Saves);
        }