Exemplo n.º 1
0
        private void HitOneRandomRoomWithPeople(byte probability)
        {
            var targetRoom = RoomsWithPeople.RandomOrDefault();

            Model.SendRoomHit(targetRoom, probability, HitType.Random);
        }
Exemplo n.º 2
0
        public void DamageShip(byte damage)
        {
            ShipSubsystemStatus subSystemToDamage;

            //Выбираем какую подсистему поразить
            if (ShipIsUnderFrontLineProtection)   //Если "передние" системы попрежнему держатся, то выбираем из них
            {
                subSystemToDamage = _subsystems.Where(a => a.IsFirstLineOfDefence == true).Random();
            }
            else                                //Ну а если нет - то выбираем из любых
            {
                subSystemToDamage = _subsystems.Random();
            }

            byte reducedDamage = damage;

            if (!subSystemToDamage.IsFirstLineOfDefence)  //Если мы мочим "прикрытые" системы, то damage равен самой пробитой системе из передних
            {
                reducedDamage = Math.Min(damage, _subsystems.Where(a => a.IsFirstLineOfDefence == true).Select(a => (byte)a.ResultSeverity).Max());
            }

            byte finalDamage = Math.Max(reducedDamage, (byte)subSystemToDamage.Severity);

            subSystemToDamage.Severity = (RanmaRepairSeverity)finalDamage;
            SendSeverityToRanmaPlate(subSystemToDamage);



            var targetRoom = RoomsWithPeople.RandomOrDefault();

            if (targetRoom != 0)
            {
                byte hitProbability = 0;
                if (damage == 1)
                {
                    hitProbability = 10;
                }
                if (damage == 2)
                {
                    hitProbability = 20;
                }
                if (damage == 3)
                {
                    hitProbability = 50;
                }
                Model.SendRoomHit(targetRoom, hitProbability, HitType.Random);
            }

            var shipPeople = PeopleOnThisShip.ToArray();

            if (shipPeople.Any())
            {
                foreach (var armletInfo in shipPeople)
                {
                    Model.SendShowMessage(armletInfo,
                                          "Ощутимо тряхнуло! Кажется в корабль влетела ракета!");
                }
            }

            SaveToSimulator();
        }