Exemplo n.º 1
0
        /// <summary>
        /// 砲撃戦での対潜威力を求めます。
        /// </summary>
        /// <param name="engagementForm">交戦形態。既定値は 1 (同航戦) です。</param>
        private int CalculateAntiSubmarinePower(int engagementForm = 1)
        {
            if (!Calculator.CanAttackSubmarine(this))
            {
                return(0);
            }

            double eqpower = 0;

            foreach (var slot in SlotInstance)
            {
                if (slot == null)
                {
                    continue;
                }

                switch (slot.MasterEquipment.CategoryType)
                {
                case 7:                                 //艦爆
                case 8:                                 //艦攻
                case 11:                                //水爆
                case 14:                                //ソナー
                case 15:                                //爆雷
                case 25:                                //オートジャイロ
                case 26:                                //対潜哨戒機
                case 40:                                //大型ソナー
                    eqpower += slot.MasterEquipment.ASW;
                    break;
                }
            }

            double basepower = Math.Sqrt(ASWBase) * 2 + eqpower * 1.5 + GetAntiSubmarineEquipmentLevelBonus();

            if (Calculator.GetDayAttackKind(SlotMaster.ToArray(), ShipID, 126, false) == 7)                             //126=伊168; 対潜攻撃が空撃なら
            {
                basepower += 8;
            }
            else                        //爆雷攻撃なら
            {
                basepower += 13;
            }


            basepower *= GetHPDamageBonus() * GetEngagementFormDamageRate(engagementForm);

            //対潜シナジー
            if (SlotInstanceMaster.Where(s => s != null && (s.CategoryType == 14 || s.CategoryType == 40)).Any() &&             //ソナー or 大型ソナー
                SlotInstanceMaster.Where(s => s != null && s.CategoryType == 15).Any())                                         //爆雷
            {
                basepower *= 1.15;
            }

            //キャップ
            basepower = Math.Floor(CapDamage(basepower, 100));

            return((int)(basepower * GetAmmoDamageRate()));
        }
 public SlotModel ConvertDBToModelObject(SlotMaster slot)
 {
     return new SlotModel()
     {
         IsAcquired = slot.IsAcquired,
         IsActive = slot.IsActive,
         ParkingID = slot.ParkingID,
         SlotID = slot.SlotID,
         SlotNumber = slot.SlotNumber
     };
 }
Exemplo n.º 3
0
 void Start()
 {
     runes       = GameObject.FindGameObjectsWithTag(runeTag);
     runesParent = GameObject.Find("Runes").transform;
     SlotMaster.RunesAvailable += OnRunesAvailable;
     Player.TookDamage         += OnPlayerTookDamage;
     slotMaster    = GameObject.Find("Slots").GetComponent <SlotMaster>();
     combatTimer   = GameObject.Find("Timer").GetComponent <CombatTimer>();
     runeInventory = FindObjectOfType <RuneInventory>();
     enemy         = FindObjectOfType <Enemy>();
     player        = FindObjectOfType <Player>();
     Player.Died  += OnPlayerDied;
     Enemy.Died   += OnEnemyDied;
 }
Exemplo n.º 4
0
        /// <summary>
        /// 砲撃戦での空撃威力を求めます。
        /// </summary>
        /// <param name="engagementForm">交戦形態。既定値は 1 (同航戦) です。</param>
        private int CalculateAircraftPower(int engagementForm = 1)
        {
            if (Calculator.GetDayAttackKind(SlotMaster.ToArray(), ShipID, -1, false) != 7)
            {
                return(0);                              //空撃以外は除外
            }
            double basepower = Math.Floor((FirepowerTotal + TorpedoTotal + Math.Floor(BomberTotal * 1.3) + GetAircraftEquipmentLevelBonus() + GetCombinedFleetShellingDamageBonus()) * 1.5) + 55;

            basepower *= GetHPDamageBonus() * GetEngagementFormDamageRate(engagementForm);

            //キャップ
            basepower = Math.Floor(CapDamage(basepower, 150));

            return((int)(basepower * GetAmmoDamageRate()));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 砲撃戦での砲撃威力を求めます。
        /// </summary>
        /// <param name="engagementForm">交戦形態。既定値は 1 (同航戦) です。</param>
        private int CalculateShellingPower(int engagementForm = 1)
        {
            if (Calculator.GetDayAttackKind(SlotMaster.ToArray(), ShipID, -1, false) != 0)
            {
                return(0);                              //砲撃以外は除外
            }
            double basepower = FirepowerTotal + GetDayBattleEquipmentLevelBonus() + GetCombinedFleetShellingDamageBonus() + 5;

            basepower *= GetHPDamageBonus() * GetEngagementFormDamageRate(engagementForm);

            basepower += GetLightCruiserDamageBonus();

            //キャップ
            basepower = Math.Floor(CapDamage(basepower, 150));

            //弾着
            switch (Calculator.GetDayAttackKind(SlotMaster.ToArray(), ShipID, -1))
            {
            case 2:                             //連撃
            case 4:                             //主砲/電探
                basepower *= 1.2;
                break;

            case 3:                             //主砲/副砲
                basepower *= 1.1;
                break;

            case 5:                             //主砲/徹甲弾
                basepower *= 1.3;
                break;

            case 6:                             //主砲/主砲
                basepower *= 1.5;
                break;
            }

            return((int)(basepower * GetAmmoDamageRate()));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 夜戦での威力を求めます。
        /// </summary>
        private int CalculateNightBattlePower()
        {
            double basepower = FirepowerTotal + TorpedoTotal + GetNightBattleEquipmentLevelBonus();

            basepower *= GetHPDamageBonus();

            switch (Calculator.GetNightAttackKind(SlotMaster.ToArray(), ShipID, -1))
            {
            case 1:                     //連撃
                basepower *= 1.2;
                break;

            case 2:                     //主砲/魚雷
                basepower *= 1.3;
                break;

            case 3:                     //魚雷x2
                basepower *= 1.5;
                break;

            case 4:                     //主砲x2/副砲
                basepower *= 1.75;
                break;

            case 5:                     //主砲x3
                basepower *= 2.0;
                break;
            }

            basepower += GetLightCruiserDamageBonus();

            //キャップ
            basepower = Math.Floor(CapDamage(basepower, 300));


            return((int)(basepower * GetAmmoDamageRate()));
        }
        public bool PostSlotMaster(SlotModel slot)
        {
            bool result = false;
            using (SmartParkingEntities context = new SmartParkingEntities())
            {
                SlotMaster parlSlot = new SlotMaster()
                {
                    ParkingID = slot.ParkingID,
                    SlotNumber = slot.SlotNumber,
                    IsAcquired = slot.IsAcquired,
                    IsActive = slot.IsActive
                };

                context.SlotMasters.Add(parlSlot);
                context.SaveChanges();
                result = true;
            }
            return result;
        }