Exemple #1
0
        protected int getBattleAvo(FormationDatas.GetFormationKinds battleState, Mem_ship targetShip)
        {
            double num = (double)targetShip.Kaihi + Math.Sqrt(targetShip.GetBattleBaseParam().Luck * 2);
            BattleFormationKinds1 formation;

            if (!targetShip.IsEnemy())
            {
                formation = F_Data.Formation;
                BattleFormationKinds2 battleFormation = F_Data.BattleFormation;
                BattleFormationKinds1 formation2      = E_Data.Formation;
            }
            else
            {
                formation = E_Data.Formation;
                BattleFormationKinds2 battleFormation2 = E_Data.BattleFormation;
                BattleFormationKinds1 formation3       = F_Data.Formation;
            }
            num *= formationData.GetFormationParamF3(battleState, formation);
            double num2 = (int)num;

            if (num2 >= 65.0)
            {
                double num3 = 55.0 + Math.Sqrt(num2 - 65.0) * 2.0;
                num2 = (int)num3;
            }
            else if (num2 >= 40.0)
            {
                double num4 = 40.0 + Math.Sqrt(num2 - 40.0) * 3.0;
                num2 = (int)num4;
            }
            num2 += getAvoHosei(targetShip);
            if (!targetShip.IsEnemy() && commandParams != null)
            {
                double num5 = (double)commandParams.Rspp / 100.0;
                double num6 = num2 * num5;
                num2 += num6;
            }
            int    num7 = 100;
            double num8 = Mst_DataManager.Instance.Mst_ship[targetShip.Ship_id].Fuel_max;

            if (num8 != 0.0)
            {
                num7 = (int)((double)targetShip.Fuel / num8 * 100.0);
            }
            if (num7 < 75)
            {
                num2 -= (double)(75 - num7);
            }
            return((int)num2);
        }
Exemple #2
0
        protected override double getAvoHosei(Mem_ship target)
        {
            List <Mst_slotitem> source;
            List <int>          list;

            if (target.IsEnemy())
            {
                int deckIdx = E_SubInfo[target.Rid].DeckIdx;
                source = E_Data.SlotData[deckIdx];
                list   = E_Data.SlotLevel[deckIdx];
            }
            else
            {
                int deckIdx2 = F_SubInfo[target.Rid].DeckIdx;
                source = F_Data.SlotData[deckIdx2];
                list   = F_Data.SlotLevel[deckIdx2];
            }
            double num = 0.0;

            foreach (var item in source.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                if (item.obj.Api_mapbattle_type3 == 14 || item.obj.Api_mapbattle_type3 == 40)
                {
                    num += Math.Sqrt(list[item.idx]) * 1.5;
                }
            }
            return(num);
        }
Exemple #3
0
        protected virtual int setDamageValue(BattleHitStatus hitType, int atkPow, int defPow, Mem_ship attacker, Mem_ship target, List <bool> lostFlag)
        {
            switch (hitType)
            {
            case BattleHitStatus.Miss:
                return(0);

            case BattleHitStatus.Clitical:
                atkPow = (int)((double)atkPow * 1.5);
                break;
            }
            double num  = (double)atkPow - ((double)defPow * 0.7 + (double)randInstance.Next(defPow) * 0.6);
            double num2 = 100.0;
            double num3 = Mst_DataManager.Instance.Mst_ship[attacker.Ship_id].Bull_max;

            if (num3 != 0.0)
            {
                num2 = (double)attacker.Bull / num3 * 100.0;
            }
            if (num2 < 50.0)
            {
                num = Math.Floor(num * num2 / 50.0);
            }
            int num4 = (int)num;
            BattleShipSubInfo battleShipSubInfo;
            int deckIdx;

            if (attacker.IsEnemy())
            {
                battleShipSubInfo = E_SubInfo[attacker.Rid];
                int deckIdx2 = battleShipSubInfo.DeckIdx;
                deckIdx = F_SubInfo[target.Rid].DeckIdx;
            }
            else
            {
                battleShipSubInfo = F_SubInfo[attacker.Rid];
                int deckIdx3 = battleShipSubInfo.DeckIdx;
                deckIdx = E_SubInfo[target.Rid].DeckIdx;
            }
            if (num4 < 1)
            {
                int num5 = randInstance.Next(target.Nowhp);
                num4 = (int)((double)target.Nowhp * 0.06 + (double)num5 * 0.08);
            }
            if (num4 >= target.Nowhp && !target.IsEnemy() && deckIdx == 0)
            {
                num4 = (int)((double)target.Nowhp * 0.5 + (double)randInstance.Next(target.Nowhp) * 0.3);
            }
            if (lostFlag != null && num4 >= target.Nowhp && !lostFlag[deckIdx])
            {
                num4 = target.Nowhp - 1;
            }
            double lovHoseiDamageKeisu = getLovHoseiDamageKeisu(target, num4);

            num4 = (int)((double)num4 * lovHoseiDamageKeisu);
            battleShipSubInfo.TotalDamage += num4;
            target.SubHp(num4);
            return(num4);
        }
        protected virtual int getRaigAttackValue(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship)
        {
            int num = 150;
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;
            List <int>            list;

            if (!atk_ship.IsEnemy())
            {
                formation       = this.F_Data.Formation;
                battleFormation = this.F_Data.BattleFormation;
                list            = this.F_Data.SlotLevel.get_Item(this.F_SubInfo.get_Item(atk_ship.Rid).DeckIdx);
                BattleFormationKinds1 formation2 = this.E_Data.Formation;
            }
            else
            {
                formation       = this.E_Data.Formation;
                battleFormation = this.E_Data.BattleFormation;
                list            = this.E_Data.SlotLevel.get_Item(this.E_SubInfo.get_Item(atk_ship.Rid).DeckIdx);
                BattleFormationKinds1 formation2 = this.F_Data.Formation;
            }
            double num2 = 0.0;

            using (var enumerator = Enumerable.Select(atk_slot, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    num2 += this.getSlotPlus_Attack(current.obj, list.get_Item(current.idx));
                }
            }
            double num3 = this.valance1 + (double)atk_ship.Raig + num2;
            double formationParamBattle = this.formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.RAIGEKI, battleFormation);
            double formationParamF      = this.formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.RAIGEKI, formation);

            num3 = num3 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num4        = 1.0;

            if (damageState == DamageState.Tyuuha)
            {
                num4 = 0.8;
            }
            else if (damageState == DamageState.Taiha)
            {
                num4 = 0.0;
            }
            num3 *= num4;
            if (num3 > (double)num)
            {
                num3 = (double)num + Math.Sqrt(num3 - (double)num);
            }
            return((int)num3);
        }
Exemple #5
0
        protected virtual int getRaigAttackValue(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship)
        {
            int num = 150;
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;
            List <int>            list;

            if (!atk_ship.IsEnemy())
            {
                formation       = F_Data.Formation;
                battleFormation = F_Data.BattleFormation;
                list            = F_Data.SlotLevel[F_SubInfo[atk_ship.Rid].DeckIdx];
                BattleFormationKinds1 formation2 = E_Data.Formation;
            }
            else
            {
                formation       = E_Data.Formation;
                battleFormation = E_Data.BattleFormation;
                list            = E_Data.SlotLevel[E_SubInfo[atk_ship.Rid].DeckIdx];
                BattleFormationKinds1 formation3 = F_Data.Formation;
            }
            double num2 = 0.0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                num2 += getSlotPlus_Attack(item.obj, list[item.idx]);
            }
            double num3 = valance1 + (double)atk_ship.Raig + num2;
            double formationParamBattle = formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.RAIGEKI, battleFormation);
            double formationParamF      = formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.RAIGEKI, formation);

            num3 = num3 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num4        = 1.0;

            switch (damageState)
            {
            case DamageState.Tyuuha:
                num4 = 0.8;
                break;

            case DamageState.Taiha:
                num4 = 0.0;
                break;
            }
            num3 *= num4;
            if (num3 > (double)num)
            {
                num3 = (double)num + Math.Sqrt(num3 - (double)num);
            }
            return((int)num3);
        }
        protected override int getRaigHitProb(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, int atk_pow)
        {
            int num = 0;

            using (var enumerator = Enumerable.Select(atk_slot, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    num += current.obj.Houm;
                }
            }
            double num2 = Math.Sqrt((double)atk_ship.GetBattleBaseParam().Luck * 1.5) + Math.Sqrt((double)atk_ship.Level) * 2.0 + (double)num;

            num2 += (double)((int)((double)atk_pow * 0.35));
            num2  = this.valance2 + num2;
            BattleFormationKinds1 formation;
            BattleFormationKinds1 formation2;

            if (!atk_ship.IsEnemy())
            {
                formation  = this.F_Data.Formation;
                formation2 = this.E_Data.Formation;
            }
            else
            {
                formation  = this.E_Data.Formation;
                formation2 = this.F_Data.Formation;
            }
            double formationParamF = this.formationData.GetFormationParamF2(FormationDatas.GetFormationKinds.RAIGEKI, formation, formation2);

            num2 *= formationParamF;
            FatigueState fatigueState = atk_ship.Get_FatigueState();
            double       num3         = 1.0;

            if (fatigueState == FatigueState.Exaltation)
            {
                num3 = 1.3;
            }
            else if (fatigueState == FatigueState.Light)
            {
                num3 = 0.7;
            }
            else if (fatigueState == FatigueState.Distress)
            {
                num3 = 0.35;
            }
            num2 *= num3;
            return((int)num2);
        }
Exemple #7
0
        protected override int getRaigHitProb(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, int atk_pow)
        {
            int num = 0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                num += item.obj.Houm;
            }
            double num2 = Math.Sqrt((double)atk_ship.GetBattleBaseParam().Luck * 1.5) + Math.Sqrt(atk_ship.Level) * 2.0 + (double)num;

            num2 += (double)(int)((double)atk_pow * 0.35);
            num2  = valance2 + num2;
            BattleFormationKinds1 formation;
            BattleFormationKinds1 formation2;

            if (!atk_ship.IsEnemy())
            {
                formation  = F_Data.Formation;
                formation2 = E_Data.Formation;
            }
            else
            {
                formation  = E_Data.Formation;
                formation2 = F_Data.Formation;
            }
            double formationParamF = formationData.GetFormationParamF2(FormationDatas.GetFormationKinds.RAIGEKI, formation, formation2);

            num2 *= formationParamF;
            FatigueState fatigueState = atk_ship.Get_FatigueState();
            double       num3         = 1.0;

            switch (fatigueState)
            {
            case FatigueState.Exaltation:
                num3 = 1.3;
                break;

            case FatigueState.Light:
                num3 = 0.7;
                break;

            case FatigueState.Distress:
                num3 = 0.35;
                break;
            }
            num2 *= num3;
            return((int)num2);
        }
Exemple #8
0
        private bool isValidRaigeki(Mem_ship ship, List <Mst_slotitem> slotitems)
        {
            if (ship.Get_DamageState() > DamageState.Shouha || !ship.IsFight())
            {
                return(false);
            }
            if (ship.GetBattleBaseParam().Raig <= 0)
            {
                return(false);
            }
            if (!ship.IsEnemy() || practiceFlag)
            {
                if (ship.Level >= 10 && Mst_DataManager.Instance.Mst_stype[ship.Stype].IsSubmarine())
                {
                    return(true);
                }
                if (slotitems == null || slotitems.Count == 0)
                {
                    return(false);
                }
                Mst_slotitem item = Mst_DataManager.Instance.Mst_Slotitem[41];
                if (slotitems.Contains(item))
                {
                    return(true);
                }
                return(false);
            }
            if (Mst_DataManager.Instance.Mst_stype[ship.Stype].IsSubmarine())
            {
                Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship[ship.Ship_id];
                return((mst_ship.Yomi.Equals("flagship") || mst_ship.Yomi.Equals("elite")) ? true : false);
            }
            if (slotitems == null || slotitems.Count == 0)
            {
                return(false);
            }
            Mst_slotitem item2 = Mst_DataManager.Instance.Mst_Slotitem[541];

            if (slotitems.Contains(item2))
            {
                return(true);
            }
            return(false);
        }
Exemple #9
0
        private double getLovHoseiDamageKeisu(Mem_ship targetShip, int damage)
        {
            if (targetShip.IsEnemy())
            {
                return(1.0);
            }
            double      randDouble   = Utils.GetRandDouble(1.0, 100.0, 1.0, 1);
            DamageState damageState  = targetShip.Get_DamageState();
            DamageState damageState2 = Mem_ship.Get_DamageState(targetShip.Nowhp - damage, targetShip.Maxhp);

            if (targetShip.Lov >= 330)
            {
                if (randDouble <= 70.0)
                {
                    if (damageState == DamageState.Normal && damageState2 == DamageState.Tyuuha)
                    {
                        return(0.5);
                    }
                    if (damageState == DamageState.Normal && damageState2 == DamageState.Taiha)
                    {
                        return(0.5);
                    }
                }
                return(1.0);
            }
            if (targetShip.Lov >= 200)
            {
                if (randDouble <= 60.0 && damageState == DamageState.Normal && damageState2 == DamageState.Taiha)
                {
                    return(0.55);
                }
                return(1.0);
            }
            if (targetShip.Lov >= 100)
            {
                if (randDouble <= 50.0 && damageState == DamageState.Normal && damageState2 == DamageState.Taiha)
                {
                    return(0.6);
                }
                return(1.0);
            }
            return(1.0);
        }
Exemple #10
0
        protected override int getRaigAttackValue(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship)
        {
            int    num  = 150;
            double num2 = valance1 + (double)atk_ship.Raig;
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;

            if (!atk_ship.IsEnemy())
            {
                formation       = F_Data.Formation;
                battleFormation = F_Data.BattleFormation;
                BattleFormationKinds1 formation2 = E_Data.Formation;
            }
            else
            {
                formation       = E_Data.Formation;
                battleFormation = E_Data.BattleFormation;
                BattleFormationKinds1 formation3 = F_Data.Formation;
            }
            double formationParamBattle = formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.RAIGEKI, battleFormation);
            double formationParamF      = formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.RAIGEKI, formation);

            num2 = num2 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num3        = 1.0;

            switch (damageState)
            {
            case DamageState.Tyuuha:
                num3 = 0.8;
                break;

            case DamageState.Taiha:
                num3 = 0.0;
                break;
            }
            num2 *= num3;
            if (num2 > (double)num)
            {
                num2 = (double)num + Math.Sqrt(num2 - (double)num);
            }
            return((int)num2);
        }
Exemple #11
0
 protected bool IsAirAttackGroup(Mem_ship ship, List <Mst_slotitem> slotData, BattleCommand command)
 {
     if (Mst_DataManager.Instance.Mst_stype[ship.Stype].IsMother() || Mst_DataManager.Instance.Mst_stype[ship.Stype].IsLandFacillity(Mst_DataManager.Instance.Mst_ship[ship.Ship_id].Soku))
     {
         return(true);
     }
     if (ship.Stype == 22)
     {
         if (ship.IsEnemy())
         {
             return(slotData.Any((Mst_slotitem x) => x.Api_mapbattle_type3 == 7 || x.Api_mapbattle_type3 == 8));
         }
         if (command == BattleCommand.Kouku)
         {
             return(true);
         }
     }
     return(false);
 }
Exemple #12
0
        private double getShipTaikuPow(Mem_ship shipData, List <Mst_slotitem> mst_slotData, List <int> slotLevels)
        {
            double num;

            if (shipData.IsEnemy())
            {
                num = Math.Sqrt(shipData.Taiku);
            }
            else
            {
                Ship_GrowValues battleBaseParam = shipData.GetBattleBaseParam();
                num = (double)battleBaseParam.Taiku * 0.5;
            }
            double num2 = 0.0;
            double num3 = 0.0;

            for (int i = 0; i < mst_slotData.Count; i++)
            {
                Mst_slotitem mst_slotitem = mst_slotData[i];
                if (mst_slotitem.Tyku > 0)
                {
                    int slotLevel = slotLevels[i];
                    if (mst_slotitem.Type4 == 16 || mst_slotitem.Type4 == 30)
                    {
                        double a1Plus = getA1Plus(1, mst_slotitem.Tyku, slotLevel);
                        num3 += a1Plus;
                        num2 += (double)mst_slotitem.Tyku * 2.0;
                    }
                    else if (mst_slotitem.Type4 == 15)
                    {
                        double a1Plus2 = getA1Plus(2, mst_slotitem.Tyku, slotLevel);
                        num3 += a1Plus2;
                        num2 += (double)mst_slotitem.Tyku * 3.0;
                    }
                    else if (mst_slotitem.Type4 == 11)
                    {
                        num2 += (double)mst_slotitem.Tyku * 1.5;
                    }
                }
            }
            return(num + num2 + num3);
        }
Exemple #13
0
        protected virtual KeyValuePair <int, int> getSubMarineAtackKeisu(List <Mem_ship> targetShips, Mem_ship attacker, List <Mst_slotitem> attacker_items, bool midnight)
        {
            if (!targetShips.Any((Mem_ship x) => x.IsFight() && Mst_DataManager.Instance.Mst_stype[x.Stype].IsSubmarine()))
            {
                return(new KeyValuePair <int, int>(0, 0));
            }
            if (!practiceFlag && attacker.IsEnemy() && attacker.Stype == 7)
            {
                string yomi = Mst_DataManager.Instance.Mst_ship[attacker.Ship_id].Yomi;
                if (!yomi.Equals("flagship"))
                {
                    return(new KeyValuePair <int, int>(0, 0));
                }
            }
            if (!midnight && attacker.Ship_id == 352)
            {
                DamageState damageState = attacker.Get_DamageState();
                if (isHaveSubmarineAirPlane(attacker_items, attacker.Onslot) && damageState <= DamageState.Tyuuha)
                {
                    return(new KeyValuePair <int, int>(2, 5));
                }
            }
            if (attacker.GetBattleBaseParam().Taisen > 0)
            {
                return(new KeyValuePair <int, int>(1, 10));
            }
            HashSet <int> hashSet = new HashSet <int>();

            hashSet.Add(6);
            hashSet.Add(7);
            hashSet.Add(10);
            hashSet.Add(16);
            hashSet.Add(17);
            HashSet <int> hashSet2 = hashSet;

            if (!midnight && hashSet2.Contains(attacker.Stype) && attacker_items.Count > 0 && isHaveSubmarineAirPlane(attacker_items, attacker.Onslot))
            {
                return(new KeyValuePair <int, int>(2, 5));
            }
            return(new KeyValuePair <int, int>(0, 0));
        }
Exemple #14
0
 private bool isValidRaigeki(Mem_ship ship, List <Mst_slotitem> slotitems)
 {
     if (ship.Get_DamageState() > DamageState.Shouha || !ship.IsFight())
     {
         return(false);
     }
     if (ship.GetBattleBaseParam().Raig <= 0)
     {
         return(false);
     }
     if (!ship.IsEnemy() || this.practiceFlag)
     {
         if (ship.Level >= 10 && Mst_DataManager.Instance.Mst_stype.get_Item(ship.Stype).IsSubmarine())
         {
             return(true);
         }
         if (slotitems == null || slotitems.get_Count() == 0)
         {
             return(false);
         }
         Mst_slotitem mst_slotitem = Mst_DataManager.Instance.Mst_Slotitem.get_Item(41);
         return(slotitems.Contains(mst_slotitem));
     }
     else
     {
         if (Mst_DataManager.Instance.Mst_stype.get_Item(ship.Stype).IsSubmarine())
         {
             Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship.get_Item(ship.Ship_id);
             return(mst_ship.Yomi.Equals("flagship") || mst_ship.Yomi.Equals("elite"));
         }
         if (slotitems == null || slotitems.get_Count() == 0)
         {
             return(false);
         }
         Mst_slotitem mst_slotitem2 = Mst_DataManager.Instance.Mst_Slotitem.get_Item(541);
         return(slotitems.Contains(mst_slotitem2));
     }
 }
        protected override double getAvoHosei(Mem_ship target)
        {
            List <Mst_slotitem> list;
            List <int>          list2;

            if (target.IsEnemy())
            {
                int deckIdx = this.E_SubInfo.get_Item(target.Rid).DeckIdx;
                list  = this.E_Data.SlotData.get_Item(deckIdx);
                list2 = this.E_Data.SlotLevel.get_Item(deckIdx);
            }
            else
            {
                int deckIdx2 = this.F_SubInfo.get_Item(target.Rid).DeckIdx;
                list  = this.F_Data.SlotData.get_Item(deckIdx2);
                list2 = this.F_Data.SlotLevel.get_Item(deckIdx2);
            }
            double num = 0.0;

            using (var enumerator = Enumerable.Select(list, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    if (current.obj.Api_mapbattle_type3 == 14 || current.obj.Api_mapbattle_type3 == 40)
                    {
                        num += Math.Sqrt((double)list2.get_Item(current.idx)) * 1.5;
                    }
                }
            }
            return(num);
        }
        public BattleShipFmt(Mem_ship ship)
        {
            this.Id          = ship.Rid;
            this.ShipId      = ship.Ship_id;
            this.Level       = ship.Level;
            this.NowHp       = ship.Nowhp;
            this.MaxHp       = ship.Maxhp;
            this.BattleParam = ship.GetBattleBaseParam().Copy();
            this.EscapeFlag  = ship.Escape_sts;
            this.Slot        = new List <int>();
            if (!ship.IsEnemy())
            {
                ship.Slot.ForEach(delegate(int x)
                {
                    int num = -1;
                    if (Comm_UserDatas.Instance.User_slot.ContainsKey(x))
                    {
                        num = Comm_UserDatas.Instance.User_slot.get_Item(x).Slotitem_id;
                    }
                    this.Slot.Add(num);
                });
            }
            else
            {
                ship.Slot.ForEach(delegate(int x)
                {
                    this.Slot.Add(x);
                });
            }
            Mst_slotitem mstSlotItemToExSlot = ship.GetMstSlotItemToExSlot();

            if (mstSlotItemToExSlot != null)
            {
                this.ExSlot = mstSlotItemToExSlot.Id;
            }
        }
Exemple #17
0
        public BattleShipFmt(Mem_ship ship)
        {
            Id          = ship.Rid;
            ShipId      = ship.Ship_id;
            Level       = ship.Level;
            NowHp       = ship.Nowhp;
            MaxHp       = ship.Maxhp;
            BattleParam = ship.GetBattleBaseParam().Copy();
            EscapeFlag  = ship.Escape_sts;
            Slot        = new List <int>();
            if (!ship.IsEnemy())
            {
                ship.Slot.ForEach(delegate(int x)
                {
                    int item = -1;
                    if (Comm_UserDatas.Instance.User_slot.ContainsKey(x))
                    {
                        item = Comm_UserDatas.Instance.User_slot[x].Slotitem_id;
                    }
                    Slot.Add(item);
                });
            }
            else
            {
                ship.Slot.ForEach(delegate(int x)
                {
                    Slot.Add(x);
                });
            }
            Mst_slotitem mstSlotItemToExSlot = ship.GetMstSlotItemToExSlot();

            if (mstSlotItemToExSlot != null)
            {
                ExSlot = mstSlotItemToExSlot.Id;
            }
        }
Exemple #18
0
        private void setSlotData(int attackerIdx, Mem_ship attacker, List <Mst_slotitem> atk_slot, Mem_ship target, Hougeki <BattleAtackKinds_Night> setData)
        {
            Mst_stype mst_stype = Mst_DataManager.Instance.Mst_stype.get_Item(target.Stype);

            if (mst_stype.IsSubmarine())
            {
                setData.Slot_List.Add(0);
                setData.SpType = BattleAtackKinds_Night.Normal;
                return;
            }
            if (atk_slot == null || atk_slot.get_Count() == 0)
            {
                setData.Slot_List.Add(0);
                setData.SpType = BattleAtackKinds_Night.Normal;
                return;
            }
            int luck = attacker.GetBattleBaseParam().Luck;
            int num  = (int)((double)(luck + 15) + Math.Sqrt((double)attacker.Level) * 0.75);

            if (luck >= 50)
            {
                num = (int)(65.0 + (Math.Sqrt((double)luck) - 50.0) + Math.Sqrt((double)attacker.Level) * 0.8);
            }
            if (Enumerable.Any <Mst_slotitem>(atk_slot, (Mst_slotitem x) => x.Id == 129))
            {
                num += 5;
            }
            List <int> list;
            List <int> list2;
            List <int> list3;
            List <int> list4;

            if (attacker.IsEnemy())
            {
                list  = this.eSerchLightIdxs;
                list2 = this.fSerchLightIdxs;
                list3 = this.eFlareIdxs;
                list4 = this.fFlareIdxs;
            }
            else
            {
                list  = this.fSerchLightIdxs;
                list2 = this.eSerchLightIdxs;
                list3 = this.fFlareIdxs;
                list4 = this.eFlareIdxs;
            }
            if (list3.get_Count() > 0)
            {
                num += 4;
            }
            if (list4.get_Count() > 0)
            {
                num -= 10;
            }
            if (list.get_Count() > 0)
            {
                num += 7;
            }
            if (list2.get_Count() > 0)
            {
                num -= 5;
            }
            if (attacker.Get_DamageState() == DamageState.Tyuuha)
            {
                num += 18;
            }
            if (attackerIdx == 0)
            {
                num += 15;
            }
            List <int> list5 = new List <int>();

            list5.Add(1);
            list5.Add(2);
            list5.Add(3);
            List <int> list6 = list5;

            list5 = new List <int>();
            list5.Add(4);
            List <int> list7 = list5;

            list5 = new List <int>();
            list5.Add(5);
            list5.Add(32);
            List <int>          list8  = list5;
            List <Mst_slotitem> list9  = new List <Mst_slotitem>();
            List <Mst_slotitem> list10 = new List <Mst_slotitem>();
            List <Mst_slotitem> list11 = new List <Mst_slotitem>();
            List <Mst_slotitem> list12 = new List <Mst_slotitem>();
            int soku = Mst_DataManager.Instance.Mst_ship.get_Item(target.Ship_id).Soku;

            using (List <Mst_slotitem> .Enumerator enumerator = atk_slot.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Mst_slotitem current = enumerator.get_Current();
                    if (list6.Contains(current.Api_mapbattle_type3))
                    {
                        list9.Add(current);
                        list12.Add(current);
                    }
                    else if (list7.Contains(current.Api_mapbattle_type3))
                    {
                        list10.Add(current);
                        list12.Add(current);
                    }
                    else if (list8.Contains(current.Api_mapbattle_type3) && !mst_stype.IsLandFacillity(soku))
                    {
                        list11.Add(current);
                        list12.Add(current);
                    }
                }
            }
            if (list12.get_Count() == 0)
            {
                setData.Slot_List.Add(0);
                setData.SpType = BattleAtackKinds_Night.Normal;
                return;
            }
            List <BattleAtackKinds_Night> list13 = new List <BattleAtackKinds_Night>();
            Dictionary <BattleAtackKinds_Night, List <int> > dictionary = new Dictionary <BattleAtackKinds_Night, List <int> >();

            if (list9.get_Count() >= 3)
            {
                list13.Add(BattleAtackKinds_Night.Syu_Syu_Syu);
                list5 = new List <int>();
                list5.Add(list9.get_Item(0).Id);
                list5.Add(list9.get_Item(1).Id);
                list5.Add(list9.get_Item(2).Id);
                List <int> list14 = list5;
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Syu, list14);
            }
            if (list9.get_Count() >= 2 && list10.get_Count() >= 1)
            {
                list13.Add(BattleAtackKinds_Night.Syu_Syu_Fuku);
                list5 = new List <int>();
                list5.Add(list9.get_Item(0).Id);
                list5.Add(list9.get_Item(1).Id);
                list5.Add(list10.get_Item(0).Id);
                List <int> list15 = list5;
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Fuku, list15);
            }
            if (list11.get_Count() >= 2)
            {
                list13.Add(BattleAtackKinds_Night.Rai_Rai);
                list5 = new List <int>();
                list5.Add(list11.get_Item(0).Id);
                list5.Add(list11.get_Item(1).Id);
                List <int> list16 = list5;
                dictionary.Add(BattleAtackKinds_Night.Rai_Rai, list16);
            }
            if (list11.get_Count() >= 1 && list9.get_Count() >= 1)
            {
                list13.Add(BattleAtackKinds_Night.Syu_Rai);
                list5 = new List <int>();
                list5.Add(list9.get_Item(0).Id);
                list5.Add(list11.get_Item(0).Id);
                List <int> list17 = list5;
                dictionary.Add(BattleAtackKinds_Night.Syu_Rai, list17);
            }
            if (list12.get_Count() >= 2)
            {
                list13.Add(BattleAtackKinds_Night.Renzoku);
                list5 = new List <int>();
                list5.Add(list12.get_Item(0).Id);
                list5.Add(list12.get_Item(1).Id);
                List <int> list18 = list5;
                dictionary.Add(BattleAtackKinds_Night.Renzoku, list18);
            }
            setData.SpType = BattleAtackKinds_Night.Normal;
            setData.Slot_List.Add(list12.get_Item(0).Id);
            Dictionary <BattleAtackKinds_Night, int> dictionary2 = new Dictionary <BattleAtackKinds_Night, int>();

            dictionary2.Add(BattleAtackKinds_Night.Syu_Syu_Syu, 140);
            dictionary2.Add(BattleAtackKinds_Night.Syu_Syu_Fuku, 130);
            dictionary2.Add(BattleAtackKinds_Night.Rai_Rai, 122);
            dictionary2.Add(BattleAtackKinds_Night.Syu_Rai, 115);
            dictionary2.Add(BattleAtackKinds_Night.Renzoku, 110);
            Dictionary <BattleAtackKinds_Night, int> dictionary3 = dictionary2;

            using (List <BattleAtackKinds_Night> .Enumerator enumerator2 = list13.GetEnumerator())
            {
                while (enumerator2.MoveNext())
                {
                    BattleAtackKinds_Night current2 = enumerator2.get_Current();
                    int num2 = this.randInstance.Next(dictionary3.get_Item(current2));
                    if (num > num2)
                    {
                        setData.SpType    = current2;
                        setData.Slot_List = dictionary.get_Item(current2);
                        break;
                    }
                }
            }
        }
Exemple #19
0
        private int getMidnightHitProb(BattleAtackKinds_Night kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, List <int> deckSearchLight)
        {
            List <int> list;

            if (atk_ship.IsEnemy())
            {
                int deckIdx = this.E_SubInfo.get_Item(atk_ship.Rid).DeckIdx;
                list = this.E_Data.SlotLevel.get_Item(deckIdx);
            }
            else
            {
                int deckIdx2 = this.F_SubInfo.get_Item(atk_ship.Rid).DeckIdx;
                list = this.F_Data.SlotLevel.get_Item(deckIdx2);
            }
            double num  = 0.0;
            int    num2 = 0;

            using (var enumerator = Enumerable.Select(atk_slot, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    num2 += current.obj.Houm;
                    num  += this.getSlotPlus_HitProb(current.obj, list.get_Item(current.idx));
                }
            }
            double num3 = Math.Sqrt((double)atk_ship.GetBattleBaseParam().Luck * 1.5) + Math.Sqrt((double)atk_ship.Level) * 2.0 + (double)num2;
            double num4 = (!atk_ship.IsEnemy()) ? this.fValance2 : this.eValance2;

            num3 = num4 + num3;
            BattleFormationKinds1 formation;
            BattleFormationKinds1 formation2;

            if (!atk_ship.IsEnemy())
            {
                formation  = this.F_Data.Formation;
                formation2 = this.E_Data.Formation;
            }
            else
            {
                formation  = this.E_Data.Formation;
                formation2 = this.F_Data.Formation;
            }
            double formationParamF = this.formationData.GetFormationParamF2(FormationDatas.GetFormationKinds.MIDNIGHT, formation, formation2);

            num3 = num3 * this.spHitProbKeisu.get_Item(kind) * formationParamF;
            FatigueState fatigueState = atk_ship.Get_FatigueState();
            double       num5         = 1.0;

            if (fatigueState == FatigueState.Exaltation)
            {
                num5 = 1.2;
            }
            else if (fatigueState == FatigueState.Light)
            {
                num5 = 0.8;
            }
            else if (fatigueState == FatigueState.Distress)
            {
                num5 = 0.5;
            }
            num3 *= num5;
            if (atk_ship.Stype == 5 || atk_ship.Stype == 6)
            {
                int num6 = 0;
                if (atk_slot.Contains(Mst_DataManager.Instance.Mst_Slotitem.get_Item(6)))
                {
                    num6 = 10;
                }
                else if (atk_slot.Contains(Mst_DataManager.Instance.Mst_Slotitem.get_Item(50)))
                {
                    num6 = 15;
                }
                num3 += (double)num6;
            }
            if (deckSearchLight.get_Count() > 0)
            {
                num3 += 7.0;
            }
            num3 = this.getMidnightHitProbUpValue(num3, atk_ship, atk_slot);
            return((int)num3);
        }
Exemple #20
0
        private int getMidnightAttackValue(BattleAtackKinds_Night kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship)
        {
            int        num = 300;
            List <int> list;

            if (atk_ship.IsEnemy())
            {
                int deckIdx = this.E_SubInfo.get_Item(atk_ship.Rid).DeckIdx;
                list = this.E_Data.SlotLevel.get_Item(deckIdx);
            }
            else
            {
                int deckIdx2 = this.F_SubInfo.get_Item(atk_ship.Rid).DeckIdx;
                list = this.F_Data.SlotLevel.get_Item(deckIdx2);
            }
            double num2 = 0.0;
            int    num3 = 0;

            using (var enumerator = Enumerable.Select(atk_slot, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var          current = enumerator.get_Current();
                    Mst_slotitem obj2    = current.obj;
                    if (base.IsAtapSlotItem(obj2.Api_mapbattle_type3))
                    {
                        num3++;
                    }
                    num2 += this.getSlotPlus_Attack(obj2, list.get_Item(current.idx));
                }
            }
            double num4 = atk_ship.IsEnemy() ? this.eValance1 : this.fValance1;
            bool   flag = Mst_DataManager.Instance.Mst_stype.get_Item(def_ship.Stype).IsLandFacillity(Mst_DataManager.Instance.Mst_ship.get_Item(def_ship.Ship_id).Soku);
            double num5;

            if (flag)
            {
                num5  = num4 + (double)atk_ship.Houg + num2;
                num5 *= this.getLandFacciilityKeisu(atk_slot);
                num5 += (double)base.getAtapKeisu(num3);
            }
            else
            {
                num5 = num4 + (double)atk_ship.Houg + (double)atk_ship.Raig + num2;
            }
            num5 *= this.spAttackKeisu.get_Item(kind);
            DamageState damageState = atk_ship.Get_DamageState();
            double      num6        = 1.0;

            if (damageState == DamageState.Tyuuha)
            {
                num6 = 0.7;
            }
            else if (damageState == DamageState.Taiha)
            {
                num6 = 0.4;
            }
            num5 *= num6;
            if (num5 > (double)num)
            {
                num5 = (double)num + Math.Sqrt(num5 - (double)num);
            }
            return((int)num5);
        }
Exemple #21
0
        private Hougeki <BattleAtackKinds_Night> getHougekiData(int atk_idx, Mem_ship attacker)
        {
            if (attacker.Get_DamageState() == DamageState.Taiha || !attacker.IsFight())
            {
                return(null);
            }
            Func <int, bool> func = null;
            BattleBaseData   battleBaseData;
            Dictionary <int, BattleShipSubInfo> dictionary;
            BattleBaseData battleBaseData2;
            Dictionary <int, BattleShipSubInfo> dictionary2;
            List <int> list;
            double     cliticalKeisu;

            if (attacker.IsEnemy())
            {
                battleBaseData  = this.E_Data;
                dictionary      = this.E_SubInfo;
                battleBaseData2 = this.F_Data;
                dictionary2     = this.F_SubInfo;
                func            = new Func <int, bool>(base.RecoveryShip);
                list            = this.fSerchLightIdxs;
                double num  = this.eValance1;
                double num2 = this.eValance2;
                cliticalKeisu = this.eValance3;
            }
            else
            {
                battleBaseData  = this.F_Data;
                dictionary      = this.F_SubInfo;
                battleBaseData2 = this.E_Data;
                dictionary2     = this.E_SubInfo;
                list            = this.eSerchLightIdxs;
                double num  = this.fValance1;
                double num2 = this.fValance2;
                cliticalKeisu = this.fValance3;
            }
            if (!this.isAttackerFromTargetKind(dictionary.get_Item(attacker.Rid)))
            {
                return(null);
            }
            Hougeki <BattleAtackKinds_Night> hougeki             = new Hougeki <BattleAtackKinds_Night>();
            KeyValuePair <int, int>          subMarineAtackKeisu = this.getSubMarineAtackKeisu(battleBaseData2.ShipData, attacker, battleBaseData.SlotData.get_Item(atk_idx), true);
            bool flag = false;

            if (subMarineAtackKeisu.get_Key() != 0)
            {
                hougeki.SpType = ((subMarineAtackKeisu.get_Key() != 1) ? BattleAtackKinds_Night.AirAttack : BattleAtackKinds_Night.Bakurai);
                hougeki.Slot_List.Add(0);
                flag = true;
            }
            BattleDamageKinds battleDamageKinds = BattleDamageKinds.Normal;
            Mem_ship          atackTarget       = base.getAtackTarget(attacker, battleBaseData2.ShipData, false, flag, true, ref battleDamageKinds);

            if (atackTarget == null)
            {
                return(null);
            }
            int deckIdx = dictionary2.get_Item(atackTarget.Rid).DeckIdx;

            if (atackTarget.Nowhp > 1 && list.get_Count() > 0 && list.get_Item(0) == deckIdx)
            {
                battleDamageKinds = BattleDamageKinds.Normal;
                atackTarget       = base.getAtackTarget(attacker, battleBaseData2.ShipData, false, flag, true, ref battleDamageKinds);
                deckIdx           = dictionary2.get_Item(atackTarget.Rid).DeckIdx;
            }
            if (!flag)
            {
                this.setSlotData(atk_idx, attacker, battleBaseData.SlotData.get_Item(atk_idx), atackTarget, hougeki);
            }
            hougeki.Attacker = attacker.Rid;
            int num3 = (hougeki.SpType != BattleAtackKinds_Night.Renzoku) ? 1 : 2;
            HashSet <BattleAtackKinds_Night> hashSet = new HashSet <BattleAtackKinds_Night>();

            hashSet.Add(BattleAtackKinds_Night.Rai_Rai);
            hashSet.Add(BattleAtackKinds_Night.Renzoku);
            hashSet.Add(BattleAtackKinds_Night.Syu_Rai);
            hashSet.Add(BattleAtackKinds_Night.Syu_Syu_Fuku);
            hashSet.Add(BattleAtackKinds_Night.Syu_Syu_Syu);
            HashSet <BattleAtackKinds_Night> hashSet2 = hashSet;

            for (int i = 0; i < num3; i++)
            {
                int soukou = atackTarget.Soukou;
                List <Mst_slotitem> list2 = battleBaseData.SlotData.get_Item(atk_idx);
                int atkPow;
                int hitProb;
                FormationDatas.GetFormationKinds battleState;
                if (flag)
                {
                    atkPow      = this.getSubmarineAttackValue(subMarineAtackKeisu, attacker, list2, battleBaseData.SlotLevel.get_Item(atk_idx));
                    hitProb     = base.getSubmarineHitProb(attacker, battleBaseData.SlotData.get_Item(atk_idx), battleBaseData.SlotLevel.get_Item(atk_idx));
                    battleState = FormationDatas.GetFormationKinds.SUBMARINE;
                }
                else
                {
                    atkPow      = this.getMidnightAttackValue(hougeki.SpType, attacker, list2, atackTarget);
                    hitProb     = this.getMidnightHitProb(hougeki.SpType, attacker, list2, list);
                    battleState = FormationDatas.GetFormationKinds.MIDNIGHT;
                }
                int             battleAvo_Midnight = base.getBattleAvo_Midnight(battleState, atackTarget, list.Contains(deckIdx));
                BattleHitStatus battleHitStatus    = this.getHitStatus(hitProb, battleAvo_Midnight, attacker, atackTarget, cliticalKeisu, false);
                if (battleHitStatus == BattleHitStatus.Miss && hashSet2.Contains(hougeki.SpType))
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
                hougeki.Target.Add(atackTarget.Rid);
                int num4 = this.setDamageValue(battleHitStatus, atkPow, soukou, attacker, atackTarget, battleBaseData2.LostFlag);
                hougeki.Damage.Add(num4);
                hougeki.Clitical.Add(battleHitStatus);
                hougeki.DamageKind.Add(battleDamageKinds);
            }
            if (func != null)
            {
                bool flag2 = func.Invoke(deckIdx);
            }
            return(hougeki);
        }
Exemple #22
0
        protected Mem_ship getAtackTarget(Mem_ship attacker, List <Mem_ship> targetShips, bool overKill, bool subMarineFlag, bool rescueFlag, ref BattleDamageKinds dKind)
        {
            Dictionary <int, Mst_stype> stypes = Mst_DataManager.Instance.Mst_stype;
            IEnumerable <Mem_ship>      enumerable;

            if (!overKill)
            {
                enumerable = Enumerable.Select(Enumerable.Where(Enumerable.Select(targetShips, (Mem_ship target) => new
                {
                    target         = target,
                    submarineCheck = (subMarineFlag == stypes.get_Item(target.Stype).IsSubmarine())
                }), <> __TranspIdent7 => < > __TranspIdent7.target.IsFight() && < > __TranspIdent7.submarineCheck), <> __TranspIdent7 => < > __TranspIdent7.target);
            }
            else
            {
                enumerable = Enumerable.Select(Enumerable.Where(Enumerable.Select(targetShips, (Mem_ship target) => new
                {
                    target         = target,
                    submarineCheck = (subMarineFlag == stypes.get_Item(target.Stype).IsSubmarine())
                }), <> __TranspIdent8 => ! < > __TranspIdent8.target.Escape_sts && < > __TranspIdent8.submarineCheck), <> __TranspIdent8 => < > __TranspIdent8.target);
            }
            dKind = BattleDamageKinds.Normal;
            if (enumerable == null || Enumerable.Count <Mem_ship>(enumerable) == 0)
            {
                return(null);
            }
            if (Enumerable.Count <Mem_ship>(enumerable) == 1)
            {
                return(Enumerable.First <Mem_ship>(enumerable));
            }
            List <Mem_ship> list;

            if (attacker.IsEnemy())
            {
                list = this.targetFillter(this.E_SubInfo.get_Item(attacker.Rid).DeckIdx, enumerable, this.F_SubInfo);
            }
            else
            {
                list = this.targetFillter(this.F_SubInfo.get_Item(attacker.Rid).DeckIdx, enumerable, this.E_SubInfo);
            }
            Mem_ship mem_ship;

            if (list.get_Count() == 0)
            {
                mem_ship = Enumerable.First <Mem_ship>(Enumerable.OrderBy <Mem_ship, Guid>(Enumerable.ToArray <Mem_ship>(enumerable), (Mem_ship x) => Guid.NewGuid()));
            }
            else
            {
                mem_ship = Enumerable.First <Mem_ship>(Enumerable.OrderBy <Mem_ship, Guid>(list, (Mem_ship x) => Guid.NewGuid()));
            }
            if (Enumerable.Count <Mem_ship>(enumerable) <= 1)
            {
                return(mem_ship);
            }
            Mem_ship flagShip = (!attacker.IsEnemy()) ? this.E_Data.ShipData.get_Item(0) : this.F_Data.ShipData.get_Item(0);

            if (!rescueFlag || mem_ship.Rid != flagShip.Rid)
            {
                return(mem_ship);
            }
            Dictionary <int, Mst_ship>  mShipDict  = Mst_DataManager.Instance.Mst_ship;
            Dictionary <int, Mst_stype> mStypeDict = Mst_DataManager.Instance.Mst_stype;

            if (mStypeDict.get_Item(mem_ship.Stype).IsLandFacillity(mShipDict.get_Item(mem_ship.Ship_id).Soku))
            {
                return(mem_ship);
            }
            IEnumerable <Mem_ship> enumerable2 = Enumerable.Select(Enumerable.Where(Enumerable.Where(Enumerable.Where(Enumerable.Select(Enumerable.Select(enumerable, (Mem_ship re_target) => new
            {
                re_target = re_target,
                mShipObj  = mShipDict.get_Item(re_target.Ship_id)
            }), <> __TranspIdent9 => new
            {
Exemple #23
0
        protected override int getHougAttackValue(BattleAtackKinds_Day kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship, int tekkouKind)
        {
            int num  = 150;
            int num2 = 0;
            int num3 = 0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                num2 += item.obj.Baku;
                num3 += item.obj.Raig;
            }
            double num4 = valance1 + (double)atk_ship.Houg;

            if (Mst_DataManager.Instance.Mst_stype[def_ship.Stype].IsLandFacillity(Mst_DataManager.Instance.Mst_ship[def_ship.Ship_id].Soku))
            {
                num4 *= getLandFacciilityKeisu(atk_slot);
                num3  = 0;
            }
            if (kind == BattleAtackKinds_Day.AirAttack)
            {
                int airAtackPow = getAirAtackPow(num2, num3);
                num4 += (double)airAtackPow;
                num4  = 25.0 + (double)(int)(num4 * 1.5);
            }
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;

            if (!atk_ship.IsEnemy())
            {
                formation       = F_Data.Formation;
                battleFormation = F_Data.BattleFormation;
                BattleFormationKinds1 formation2 = E_Data.Formation;
            }
            else
            {
                formation       = E_Data.Formation;
                battleFormation = E_Data.BattleFormation;
                BattleFormationKinds1 formation3 = F_Data.Formation;
            }
            double formationParamBattle = formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.HOUGEKI, battleFormation);
            double formationParamF      = formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.HOUGEKI, formation);

            num4 = num4 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num5        = 1.0;

            switch (damageState)
            {
            case DamageState.Tyuuha:
                num5 = 0.7;
                break;

            case DamageState.Taiha:
                num5 = 0.4;
                break;
            }
            num4 *= num5;
            if (num4 > (double)num)
            {
                num4 = (double)num + Math.Sqrt(num4 - (double)num);
            }
            return((int)num4);
        }
Exemple #24
0
        protected KeyValuePair <BattleAtackKinds_Day, List <int> > getSpAttackKind(Mem_ship ship, List <Mst_slotitem> slotitems)
        {
            if (slotitems.Count == 0)
            {
                return(new KeyValuePair <BattleAtackKinds_Day, List <int> >(BattleAtackKinds_Day.Normal, new List <int>
                {
                    0
                }));
            }
            BattleAtackKinds_Day battleAtackKinds_Day = BattleAtackKinds_Day.Normal;
            List <int>           ret_slotitem         = new List <int>();
            Func <List <Mst_slotitem>, KeyValuePair <BattleAtackKinds_Day, List <int> > > func = delegate(List <Mst_slotitem> x)
            {
                int hougSlotData = getHougSlotData(x);
                ret_slotitem.Add(hougSlotData);
                return(new KeyValuePair <BattleAtackKinds_Day, List <int> >(BattleAtackKinds_Day.Normal, ret_slotitem));
            };
            int            num;
            BattleBaseData battleBaseData;
            Dictionary <int, BattleShipSubInfo> dictionary;

            if (ship.IsEnemy())
            {
                num            = seikuValue[1];
                battleBaseData = E_Data;
                dictionary     = E_SubInfo;
            }
            else
            {
                num            = seikuValue[0];
                battleBaseData = F_Data;
                dictionary     = F_SubInfo;
            }
            if (num <= 1)
            {
                return(func(slotitems));
            }
            if (ship.Get_DamageState() >= DamageState.Taiha)
            {
                return(func(slotitems));
            }
            Dictionary <int, List <Mst_slotitem> > dictionary2 = new Dictionary <int, List <Mst_slotitem> >();

            dictionary2.Add(1, new List <Mst_slotitem>());
            dictionary2.Add(12, new List <Mst_slotitem>());
            dictionary2.Add(10, new List <Mst_slotitem>());
            dictionary2.Add(19, new List <Mst_slotitem>());
            dictionary2.Add(4, new List <Mst_slotitem>());
            Dictionary <int, List <Mst_slotitem> > dictionary3 = dictionary2;
            double num2 = 0.0;

            foreach (var item in slotitems.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                int api_mapbattle_type = item.obj.Api_mapbattle_type3;
                num2 += (double)item.obj.Saku;
                switch (api_mapbattle_type)
                {
                case 1:
                case 2:
                case 3:
                    dictionary3[1].Add(item.obj);
                    continue;

                case 12:
                case 13:
                    dictionary3[12].Add(item.obj);
                    continue;

                case 10:
                case 11:
                    if (ship.Onslot[item.idx] > 0)
                    {
                        dictionary3[10].Add(item.obj);
                        continue;
                    }
                    break;
                }
                if (api_mapbattle_type == 19 || api_mapbattle_type == 4)
                {
                    dictionary3[api_mapbattle_type].Add(item.obj);
                }
            }
            if (dictionary3[10].Count == 0 || dictionary3[1].Count == 0)
            {
                return(func(slotitems));
            }
            double num3 = 0.0;

            foreach (var item2 in battleBaseData.ShipData.Select((Mem_ship obj, int ship_idx) => new
            {
                obj,
                ship_idx
            }))
            {
                if (item2.obj.IsFight())
                {
                    num3 += (double)item2.obj.GetBattleBaseParam().Sakuteki;
                    List <Mst_slotitem> list = battleBaseData.SlotData[item2.ship_idx];
                    if (list.Count != 0)
                    {
                        foreach (var item3 in list.Select((Mst_slotitem obj, int slot_idx) => new
                        {
                            obj,
                            slot_idx
                        }))
                        {
                            int num4 = item2.obj.Onslot[item3.slot_idx];
                            if ((item3.obj.Api_mapbattle_type3 == 10 || item3.obj.Api_mapbattle_type3 == 11) && num4 > 0)
                            {
                                int num5 = item3.obj.Saku * (int)Math.Sqrt(num4);
                                num3 += (double)num5;
                            }
                        }
                    }
                }
            }
            double num6 = (int)(Math.Sqrt(num3) + num3 * 0.1);
            int    num7 = (int)(Math.Sqrt(ship.GetBattleBaseParam().Luck) + 10.0);

            switch (num)
            {
            case 3:
                num7 = (int)((double)num7 + 10.0 + (num6 + num2 * 1.6) * 0.7);
                break;

            case 2:
                num7 = (int)((double)num7 + (num6 + num2 * 1.2) * 0.6);
                break;
            }
            if (dictionary[ship.Rid].DeckIdx == 0)
            {
                num7 += 15;
            }
            Dictionary <BattleAtackKinds_Day, int> dictionary4 = new Dictionary <BattleAtackKinds_Day, int>();

            dictionary4.Add(BattleAtackKinds_Day.Sp4, 150);
            dictionary4.Add(BattleAtackKinds_Day.Sp3, 140);
            dictionary4.Add(BattleAtackKinds_Day.Sp2, 130);
            dictionary4.Add(BattleAtackKinds_Day.Sp1, 120);
            dictionary4.Add(BattleAtackKinds_Day.Renzoku, 130);
            Dictionary <BattleAtackKinds_Day, int> dictionary5 = dictionary4;

            if (dictionary3[1].Count >= 2 && dictionary3[19].Count >= 1 && num7 > randInstance.Next(dictionary5[BattleAtackKinds_Day.Sp4]))
            {
                ret_slotitem.Add(dictionary3[10][0].Id);
                ret_slotitem.Add(dictionary3[1][0].Id);
                ret_slotitem.Add(dictionary3[1][1].Id);
                battleAtackKinds_Day = BattleAtackKinds_Day.Sp4;
            }
            else if (dictionary3[4].Count >= 1 && dictionary3[19].Count >= 1 && num7 > randInstance.Next(dictionary5[BattleAtackKinds_Day.Sp3]))
            {
                ret_slotitem.Add(dictionary3[10][0].Id);
                ret_slotitem.Add(dictionary3[1][0].Id);
                ret_slotitem.Add(dictionary3[19][0].Id);
                battleAtackKinds_Day = BattleAtackKinds_Day.Sp3;
            }
            else if (dictionary3[4].Count >= 1 && dictionary3[12].Count >= 1 && num7 > randInstance.Next(dictionary5[BattleAtackKinds_Day.Sp2]))
            {
                ret_slotitem.Add(dictionary3[10][0].Id);
                ret_slotitem.Add(dictionary3[12][0].Id);
                ret_slotitem.Add(dictionary3[1][0].Id);
                battleAtackKinds_Day = BattleAtackKinds_Day.Sp2;
            }
            else if (dictionary3[4].Count >= 1 && num7 > randInstance.Next(dictionary5[BattleAtackKinds_Day.Sp1]))
            {
                ret_slotitem.Add(dictionary3[10][0].Id);
                ret_slotitem.Add(dictionary3[1][0].Id);
                ret_slotitem.Add(dictionary3[4][0].Id);
                battleAtackKinds_Day = BattleAtackKinds_Day.Sp1;
            }
            else if (dictionary3[1].Count >= 2 && num7 > randInstance.Next(dictionary5[BattleAtackKinds_Day.Renzoku]))
            {
                ret_slotitem.Add(dictionary3[1][0].Id);
                ret_slotitem.Add(dictionary3[1][1].Id);
                battleAtackKinds_Day = BattleAtackKinds_Day.Renzoku;
            }
            if (battleAtackKinds_Day == BattleAtackKinds_Day.Normal)
            {
                return(func(slotitems));
            }
            return(new KeyValuePair <BattleAtackKinds_Day, List <int> >(battleAtackKinds_Day, ret_slotitem));
        }
Exemple #25
0
        protected virtual int getHougHitProb(BattleAtackKinds_Day kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, int tekkouKind)
        {
            double num = 0.0;
            BattleFormationKinds1 formation;
            BattleFormationKinds1 formation2;
            List <int>            list;

            if (!atk_ship.IsEnemy())
            {
                formation  = F_Data.Formation;
                formation2 = E_Data.Formation;
                int deckIdx = F_SubInfo[atk_ship.Rid].DeckIdx;
                list = F_Data.SlotLevel[deckIdx];
                num  = (double)commandParams.Fspp / 100.0;
            }
            else
            {
                formation  = E_Data.Formation;
                formation2 = F_Data.Formation;
                int deckIdx2 = E_SubInfo[atk_ship.Rid].DeckIdx;
                list = E_Data.SlotLevel[deckIdx2];
            }
            double num2 = 0.0;
            int    num3 = 0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                num3 += item.obj.Houm;
                num2 += getHougSlotPlus_Hit(item.obj, list[item.idx]);
            }
            double num4            = Math.Sqrt((double)atk_ship.GetBattleBaseParam().Luck * 1.5) + Math.Sqrt(atk_ship.Level) * 2.0 + (double)num3;
            double num5            = valance2 + num4 + num2;
            double formationParamF = formationData.GetFormationParamF2(FormationDatas.GetFormationKinds.HOUGEKI, formation, formation2);

            num5 *= formationParamF;
            FatigueState fatigueState = atk_ship.Get_FatigueState();
            double       num6         = 1.0;

            switch (fatigueState)
            {
            case FatigueState.Exaltation:
                num6 = 1.2;
                break;

            case FatigueState.Light:
                num6 = 0.8;
                break;

            case FatigueState.Distress:
                num6 = 0.5;
                break;
            }
            num5 *= num6;
            num5  = getHougHitProbUpValue(num5, atk_ship, atk_slot);
            Dictionary <BattleAtackKinds_Day, double> dictionary = new Dictionary <BattleAtackKinds_Day, double>();

            dictionary.Add(BattleAtackKinds_Day.Renzoku, 1.1);
            dictionary.Add(BattleAtackKinds_Day.Sp1, 1.3);
            dictionary.Add(BattleAtackKinds_Day.Sp2, 1.5);
            dictionary.Add(BattleAtackKinds_Day.Sp3, 1.3);
            dictionary.Add(BattleAtackKinds_Day.Sp4, 1.2);
            Dictionary <BattleAtackKinds_Day, double> dictionary2 = dictionary;

            if (dictionary2.ContainsKey(kind))
            {
                num5 *= dictionary2[kind];
            }
            num5 *= getTekkouKeisu_Hit(tekkouKind);
            double num7 = num5 * num;

            num5 += num7;
            return((int)num5);
        }
Exemple #26
0
        protected virtual int battleTaiku(List <Mem_ship> taikuHaveShip, int deckTyku, AirFireInfo antifire)
        {
            IEnumerable <KeyValuePair <Mem_ship, List <FighterInfo> > > enumerable;
            Dictionary <int, int[]>     slotExperience;
            List <Mem_ship>             shipData;
            List <List <Mst_slotitem> > slotData;
            List <List <int> >          slotLevel;
            double num;

            if (taikuHaveShip[0].IsEnemy())
            {
                enumerable = from item in e_FighterInfo
                             where taikuHaveShip.Contains(item.Key)
                             select item;
                slotExperience = E_Data.SlotExperience;
                shipData       = F_Data.ShipData;
                slotData       = F_Data.SlotData;
                slotLevel      = F_Data.SlotLevel;
                num            = 0.75;
            }
            else
            {
                enumerable = from item in f_FighterInfo
                             where taikuHaveShip.Contains(item.Key)
                             select item;
                slotExperience = F_Data.SlotExperience;
                shipData       = E_Data.ShipData;
                slotData       = E_Data.SlotData;
                slotLevel      = E_Data.SlotLevel;
                num            = 0.8;
            }
            int num2 = 0;
            IEnumerable <Mem_ship> enumerable2 = from x in shipData
                                                 where x.IsFight()
                                                 select x;

            if (enumerable2 == null || enumerable2.Count() == 0)
            {
                return(num2);
            }
            foreach (KeyValuePair <Mem_ship, List <FighterInfo> > item in enumerable)
            {
                Mem_ship key = item.Key;
                foreach (FighterInfo item2 in item.Value)
                {
                    if (key.Onslot[item2.SlotIdx] > 0 && item2.ValidTaiku())
                    {
                        Mem_ship taikuShip = (from x in enumerable2
                                              orderby Guid.NewGuid()
                                              select x).First();
                        int      index         = shipData.FindIndex((Mem_ship x) => x.Rid == taikuShip.Rid);
                        double   shipTaikuPow  = getShipTaikuPow(taikuShip, slotData[index], slotLevel[index]);
                        double   num3          = valance1;
                        double   num4          = (shipTaikuPow + (double)deckTyku) * num3 * num;
                        double[] antifireParam = getAntifireParam(antifire);
                        if (antifire == null && taikuShip.IsEnemy())
                        {
                            antifireParam[0] = 0.0;
                        }
                        int num5 = (int)(num4 * (double)randInstance.Next(2) * antifireParam[2] + antifireParam[0]);
                        int num6 = (int)((double)key.Onslot[item2.SlotIdx] * 0.02 * shipTaikuPow * num3 * (double)randInstance.Next(2) + antifireParam[1]);
                        int num7 = num5 + num6;
                        if (num7 > key.Onslot[item2.SlotIdx])
                        {
                            num7 = key.Onslot[item2.SlotIdx];
                        }
                        int[] value = null;
                        if (slotExperience.TryGetValue(key.Slot[item2.SlotIdx], out value))
                        {
                            int slotExpSubValueToTaiku = getSlotExpSubValueToTaiku(key.Onslot[item2.SlotIdx], num7, value[0]);
                            value[1] += slotExpSubValueToTaiku;
                        }
                        List <int> onslot;
                        List <int> list = onslot = key.Onslot;
                        int        slotIdx;
                        int        index2 = slotIdx = item2.SlotIdx;
                        slotIdx      = onslot[slotIdx];
                        list[index2] = slotIdx - num7;
                        num2        += num7;
                    }
                }
            }
            return(num2);
        }
Exemple #27
0
        private Hougeki <BattleAtackKinds_Day> getAttackData(Mem_ship attacker, List <Mst_slotitem> attackerSlot, List <int> attackerSlotLevel, BattleAtackKinds_Day attackType, bool submarine_flag, KeyValuePair <int, int> submarine_keisu, List <Mem_ship> targetShips, List <bool> targetLostFlags, Dictionary <int, BattleShipSubInfo> targetSubInfo, int powerDownType)
        {
            BattleDamageKinds dKind       = BattleDamageKinds.Normal;
            Mem_ship          atackTarget = getAtackTarget(attacker, targetShips, overKill: false, submarine_flag, rescueFlag: true, ref dKind);

            if (atackTarget == null)
            {
                return(null);
            }
            int deckIdx = targetSubInfo[atackTarget.Rid].DeckIdx;
            Hougeki <BattleAtackKinds_Day> hougeki = new Hougeki <BattleAtackKinds_Day>();

            hougeki.Attacker = attacker.Rid;
            hougeki.SpType   = attackType;
            int num = (attackType != BattleAtackKinds_Day.Renzoku) ? 1 : 2;

            for (int i = 0; i < num; i++)
            {
                int soukou = atackTarget.Soukou;
                hougeki.Target.Add(atackTarget.Rid);
                int num2;
                int num3;
                FormationDatas.GetFormationKinds battleState;
                if (submarine_flag)
                {
                    num2        = getSubmarineAttackValue(submarine_keisu, attacker, attackerSlot, attackerSlotLevel);
                    num3        = getSubmarineHitProb(attacker, attackerSlot, attackerSlotLevel);
                    battleState = FormationDatas.GetFormationKinds.SUBMARINE;
                }
                else
                {
                    int tekkouKind = getTekkouKind(atackTarget.Stype, attackerSlot);
                    num2        = getHougAttackValue(attackType, attacker, attackerSlot, atackTarget, tekkouKind);
                    num3        = getHougHitProb(attackType, attacker, attackerSlot, tekkouKind);
                    battleState = FormationDatas.GetFormationKinds.HOUGEKI;
                }
                int battleAvo = getBattleAvo(battleState, atackTarget);
                switch (powerDownType)
                {
                case 1:
                    num2 = (int)((double)num2 * 0.55);
                    num3 = (int)((double)num3 * 0.55);
                    break;

                case 2:
                    num3 = (int)((double)num3 * 0.55);
                    break;
                }
                bool            airAttack       = (attackType == BattleAtackKinds_Day.AirAttack) ? true : false;
                BattleHitStatus battleHitStatus = getHitStatus(num3, battleAvo, attacker, atackTarget, valance3, airAttack);
                if (battleHitStatus == BattleHitStatus.Miss && enableSpType.Contains(attackType))
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
                int item = setDamageValue(battleHitStatus, num2, soukou, attacker, atackTarget, targetLostFlags);
                hougeki.Damage.Add(item);
                hougeki.Clitical.Add(battleHitStatus);
                hougeki.DamageKind.Add(dKind);
            }
            if (attacker.IsEnemy())
            {
                RecoveryShip(deckIdx);
            }
            return(hougeki);
        }
Exemple #28
0
        protected virtual int getRaigHitProb(Mem_ship atk_ship, List <Mst_slotitem> atk_slot, int atk_pow)
        {
            double                num = 0.0;
            List <int>            list;
            BattleFormationKinds1 formation;
            BattleFormationKinds1 formation2;

            if (!atk_ship.IsEnemy())
            {
                list       = F_Data.SlotLevel[F_SubInfo[atk_ship.Rid].DeckIdx];
                formation  = F_Data.Formation;
                formation2 = E_Data.Formation;
                num        = (double)commandParams.Tspp / 100.0;
            }
            else
            {
                list       = E_Data.SlotLevel[E_SubInfo[atk_ship.Rid].DeckIdx];
                formation  = E_Data.Formation;
                formation2 = F_Data.Formation;
            }
            double num2 = 0.0;
            int    num3 = 0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                num3 += item.obj.Houm;
                num2 += getSlotPlus_HitProb(item.obj, list[item.idx]);
            }
            int    raim = Mst_DataManager.Instance.Mst_ship[atk_ship.Ship_id].Raim;
            double num4 = Math.Sqrt((double)atk_ship.GetBattleBaseParam().Luck * 1.5) + Math.Sqrt(atk_ship.Level) * 2.0 + (double)num3;

            num4 = num4 + (double)(int)((double)atk_pow * 0.2) + (double)raim;
            num4 = valance2 + num4 + num2;
            double formationParamF = formationData.GetFormationParamF2(FormationDatas.GetFormationKinds.RAIGEKI, formation, formation2);

            num4 *= formationParamF;
            FatigueState fatigueState = atk_ship.Get_FatigueState();
            double       num5         = 1.0;

            switch (fatigueState)
            {
            case FatigueState.Exaltation:
                num5 = 1.3;
                break;

            case FatigueState.Light:
                num5 = 0.7;
                break;

            case FatigueState.Distress:
                num5 = 0.35;
                break;
            }
            num4 *= num5;
            double num6 = num4 * num;

            num4 += num6;
            return((int)num4);
        }
Exemple #29
0
        protected override int getHougAttackValue(BattleAtackKinds_Day kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship, int tekkouKind)
        {
            int num  = 150;
            int num2 = 0;
            int num3 = 0;

            using (var enumerator = Enumerable.Select(atk_slot, (Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    num2 += current.obj.Baku;
                    num3 += current.obj.Raig;
                }
            }
            double num4 = this.valance1 + (double)atk_ship.Houg;
            bool   flag = Mst_DataManager.Instance.Mst_stype.get_Item(def_ship.Stype).IsLandFacillity(Mst_DataManager.Instance.Mst_ship.get_Item(def_ship.Ship_id).Soku);

            if (flag)
            {
                num4 *= this.getLandFacciilityKeisu(atk_slot);
                num3  = 0;
            }
            if (kind == BattleAtackKinds_Day.AirAttack)
            {
                int airAtackPow = this.getAirAtackPow(num2, num3);
                num4 += (double)airAtackPow;
                num4  = 25.0 + (double)((int)(num4 * 1.5));
            }
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;

            if (!atk_ship.IsEnemy())
            {
                formation       = this.F_Data.Formation;
                battleFormation = this.F_Data.BattleFormation;
                BattleFormationKinds1 formation2 = this.E_Data.Formation;
            }
            else
            {
                formation       = this.E_Data.Formation;
                battleFormation = this.E_Data.BattleFormation;
                BattleFormationKinds1 formation2 = this.F_Data.Formation;
            }
            double formationParamBattle = this.formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.HOUGEKI, battleFormation);
            double formationParamF      = this.formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.HOUGEKI, formation);

            num4 = num4 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num5        = 1.0;

            if (damageState == DamageState.Tyuuha)
            {
                num5 = 0.7;
            }
            else if (damageState == DamageState.Taiha)
            {
                num5 = 0.4;
            }
            num4 *= num5;
            if (num4 > (double)num)
            {
                num4 = (double)num + Math.Sqrt(num4 - (double)num);
            }
            return((int)num4);
        }
Exemple #30
0
        protected virtual int getHougAttackValue(BattleAtackKinds_Day kind, Mem_ship atk_ship, List <Mst_slotitem> atk_slot, Mem_ship def_ship, int tekkouKind)
        {
            int                   num = 150;
            List <int>            list;
            BattleFormationKinds1 formation;
            BattleFormationKinds2 battleFormation;

            if (atk_ship.IsEnemy())
            {
                int deckIdx = E_SubInfo[atk_ship.Rid].DeckIdx;
                list            = E_Data.SlotLevel[deckIdx];
                formation       = E_Data.Formation;
                battleFormation = E_Data.BattleFormation;
                BattleFormationKinds1 formation2 = F_Data.Formation;
            }
            else
            {
                int deckIdx2 = F_SubInfo[atk_ship.Rid].DeckIdx;
                list            = F_Data.SlotLevel[deckIdx2];
                formation       = F_Data.Formation;
                battleFormation = F_Data.BattleFormation;
                BattleFormationKinds1 formation3 = E_Data.Formation;
            }
            double num2 = 0.0;
            int    num3 = 0;
            int    num4 = 0;
            int    num5 = 0;

            foreach (var item in atk_slot.Select((Mst_slotitem obj, int idx) => new
            {
                obj,
                idx
            }))
            {
                Mst_slotitem obj2 = item.obj;
                if (IsAtapSlotItem(obj2.Api_mapbattle_type3))
                {
                    num5++;
                }
                num3 += obj2.Baku;
                num4 += obj2.Raig;
                num2 += getHougSlotPlus_Attack(obj2, list[item.idx]);
            }
            double num6 = valance1 + (double)atk_ship.Houg + num2;

            if (Mst_DataManager.Instance.Mst_stype[def_ship.Stype].IsLandFacillity(Mst_DataManager.Instance.Mst_ship[def_ship.Ship_id].Soku))
            {
                num6 *= getLandFacciilityKeisu(atk_slot);
                num6 += (double)getAtapKeisu(num5);
                num4  = 0;
            }
            if (kind == BattleAtackKinds_Day.AirAttack)
            {
                int airAtackPow = getAirAtackPow(num3, num4);
                num6 += (double)airAtackPow;
                num6  = 25.0 + (double)(int)(num6 * 1.5);
            }
            double formationParamBattle = formationData.GetFormationParamBattle(FormationDatas.GetFormationKinds.HOUGEKI, battleFormation);
            double formationParamF      = formationData.GetFormationParamF1(FormationDatas.GetFormationKinds.HOUGEKI, formation);

            num6 = num6 * formationParamBattle * formationParamF;
            DamageState damageState = atk_ship.Get_DamageState();
            double      num7        = 1.0;

            switch (damageState)
            {
            case DamageState.Tyuuha:
                num7 = 0.7;
                break;

            case DamageState.Taiha:
                num7 = 0.4;
                break;
            }
            num6 *= num7;
            num6 += getHougItemAtackHosei(atk_ship, atk_slot);
            if (num6 > (double)num)
            {
                num6 = (double)num + Math.Sqrt(num6 - (double)num);
            }
            Dictionary <BattleAtackKinds_Day, double> dictionary = new Dictionary <BattleAtackKinds_Day, double>();

            dictionary.Add(BattleAtackKinds_Day.Renzoku, 1.2);
            dictionary.Add(BattleAtackKinds_Day.Sp1, 1.1);
            dictionary.Add(BattleAtackKinds_Day.Sp2, 1.2);
            dictionary.Add(BattleAtackKinds_Day.Sp3, 1.3);
            dictionary.Add(BattleAtackKinds_Day.Sp4, 1.5);
            Dictionary <BattleAtackKinds_Day, double> dictionary2 = dictionary;

            if (dictionary2.ContainsKey(kind))
            {
                num6 *= dictionary2[kind];
            }
            num6 *= getTekkouKeisu_Attack(tekkouKind);
            return((int)num6);
        }