Esempio n. 1
0
 public BattleFormationKinds2 AfterAirBattle_RewriteBattleFormation2(BattleBaseData fBaseData)
 {
     if (BattleFormation == BattleFormationKinds2.T_Enemy)
     {
         foreach (var item in fBaseData.SlotData.Select((List <Mst_slotitem> list, int ship_idx) => new
         {
             list,
             ship_idx
         }))
         {
             Mem_ship mem_ship = fBaseData.ShipData[item.ship_idx];
             foreach (var item2 in item.list.Select((Mst_slotitem obj, int slot_idx) => new
             {
                 obj,
                 slot_idx
             }))
             {
                 if (mem_ship.Onslot[item2.slot_idx] > 0 && item2.obj.Id == 54)
                 {
                     BattleFormation = BattleFormationKinds2.Hankou;
                     return(BattleFormation);
                 }
             }
         }
     }
     return(BattleFormation);
 }
Esempio n. 2
0
 public FormationDatas(BattleBaseData fBaseData, BattleBaseData eBaseData, bool practiceFlag)
 {
     F_Formation     = fBaseData.Formation;
     E_Formation     = ((!practiceFlag) ? eBaseData.Formation : selectEnemyFormation(eBaseData.ShipData.Count));
     BattleFormation = selectBattleFormation2();
     setParamater();
 }
Esempio n. 3
0
 public Exec_Raigeki(int atkType, BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
 {
     _f_Data      = myData;
     _e_Data      = enemyData;
     _f_SubInfo   = mySubInfo;
     _e_SubInfo   = enemySubInfo;
     f_AtkIdxs    = new List <int>();
     e_AtkIdxs    = new List <int>();
     f_startHp    = new List <int>();
     e_startHp    = new List <int>();
     practiceFlag = practice;
     if (atkType == 1 || atkType == 3)
     {
         makeAttackerData(enemyFlag: false);
     }
     if (atkType == 2 || atkType == 3)
     {
         makeAttackerData(enemyFlag: true);
     }
     valance1 = 5.0;
     valance2 = 85.0;
     valance3 = 1.5;
     enableRaigSlotPlusItems = new HashSet <int>
     {
         5,
         22
     };
 }
Esempio n. 4
0
        public BattleCommandParams(BattleBaseData userData)
        {
            this.isEscape     = false;
            this.Fspp         = 0;
            this.Tspp         = 0;
            this.Rspp         = 0;
            this.escapeNum    = 0;
            this.userBaseData = userData;
            IEnumerable <int> enumerable = Enumerable.Select <Mem_ship, int>(this.userBaseData.ShipData, (Mem_ship x) => Mst_DataManager.Instance.Mst_ship.get_Item(x.Ship_id).Soku);

            this.highSpeedFlag = !Enumerable.Any <int>(enumerable, (int x) => x != 10);
            HashSet <BattleCommand> hashSet = new HashSet <BattleCommand>();

            hashSet.Add(BattleCommand.Sekkin);
            hashSet.Add(BattleCommand.Ridatu);
            hashSet.Add(BattleCommand.Kaihi);
            hashSet.Add(BattleCommand.Totugeki);
            hashSet.Add(BattleCommand.Tousha);
            hashSet.Add(BattleCommand.Raigeki);
            this.enableCommand = hashSet;
            hashSet            = new HashSet <BattleCommand>();
            hashSet.Add(BattleCommand.Sekkin);
            hashSet.Add(BattleCommand.Ridatu);
            hashSet.Add(BattleCommand.Kaihi);
            this.enableCommandOpening = hashSet;
            Dictionary <BattleCommand, Func <int, DayBattleProductionFmt> > dictionary = new Dictionary <BattleCommand, Func <int, DayBattleProductionFmt> >();

            dictionary.Add(BattleCommand.Sekkin, new Func <int, DayBattleProductionFmt>(this.Sekkin));
            dictionary.Add(BattleCommand.Ridatu, new Func <int, DayBattleProductionFmt>(this.Ridatsu));
            dictionary.Add(BattleCommand.Kaihi, new Func <int, DayBattleProductionFmt>(this.Kaihi));
            dictionary.Add(BattleCommand.Totugeki, new Func <int, DayBattleProductionFmt>(this.Totsugeki));
            dictionary.Add(BattleCommand.Tousha, new Func <int, DayBattleProductionFmt>(this.Tousha));
            dictionary.Add(BattleCommand.Raigeki, new Func <int, DayBattleProductionFmt>(this.RaigPosture));
            this.commandFunc = dictionary;
        }
Esempio n. 5
0
 public Exec_SupportAirBattle(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
     : base(myData, mySubInfo, enemyData, enemySubInfo, null, practice)
 {
     valance1 = 0.2;
     valance2 = 85.0;
     valance3 = 3.0;
 }
        public Exec_Raigeki(int atkType, BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
        {
            this._f_Data      = myData;
            this._e_Data      = enemyData;
            this._f_SubInfo   = mySubInfo;
            this._e_SubInfo   = enemySubInfo;
            this.f_AtkIdxs    = new List <int>();
            this.e_AtkIdxs    = new List <int>();
            this.f_startHp    = new List <int>();
            this.e_startHp    = new List <int>();
            this.practiceFlag = practice;
            if (atkType == 1 || atkType == 3)
            {
                this.makeAttackerData(false);
            }
            if (atkType == 2 || atkType == 3)
            {
                this.makeAttackerData(true);
            }
            this.valance1 = 5.0;
            this.valance2 = 85.0;
            this.valance3 = 1.5;
            HashSet <int> hashSet = new HashSet <int>();

            hashSet.Add(5);
            hashSet.Add(22);
            this.enableRaigSlotPlusItems = hashSet;
        }
Esempio n. 7
0
 public Exec_SupportRaigeki(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
     : base(1, myData, mySubInfo, enemyData, enemySubInfo, practice)
 {
     valance1 = 8.0;
     valance2 = 54.0;
     valance3 = 1.2;
 }
Esempio n. 8
0
 public Exec_Hougeki(MiddleBattleCallInfo callInfo, int[] seikuValue, BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
 {
     _f_Data           = myData;
     _e_Data           = enemyData;
     _f_SubInfo        = mySubInfo;
     _e_SubInfo        = enemySubInfo;
     practiceFlag      = practice;
     callReferenceInfo = callInfo;
     this.seikuValue   = ((seikuValue != null) ? seikuValue : new int[2]);
     f_AtkIdxs         = new List <int>();
     e_AtkIdxs         = new List <int>();
     makeAttackerData(enemyFlag: false);
     makeAttackerData(enemyFlag: true);
     valance1     = 5.0;
     valance2     = 90.0;
     valance3     = 1.3;
     enableSpType = new HashSet <BattleAtackKinds_Day>
     {
         BattleAtackKinds_Day.Renzoku,
         BattleAtackKinds_Day.Sp1,
         BattleAtackKinds_Day.Sp2,
         BattleAtackKinds_Day.Sp3,
         BattleAtackKinds_Day.Sp4
     };
 }
Esempio n. 9
0
 public Exec_SupportHougeki(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice) : base(null, new int[2], myData, mySubInfo, enemyData, enemySubInfo, practice)
 {
     this.AIR_ATACK_KEISU = 15;
     this.valance1        = 4.0;
     this.valance2        = 64.0;
     this.valance3        = 1.0;
 }
Esempio n. 10
0
        protected virtual AirFireInfo getAntiAirFireAttacker(BattleBaseData baseData)
        {
            List <Mem_ship>             shipData = baseData.ShipData;
            List <List <Mst_slotitem> > slotData = baseData.SlotData;
            List <AirFireInfo>          list     = new List <AirFireInfo>();

            for (int i = 0; i < shipData.Count; i++)
            {
                if (shipData[i].IsFight() && slotData[i].Count != 0)
                {
                    AirFireInfo antifireKind = getAntifireKind(shipData[i], slotData[i]);
                    if (antifireKind != null)
                    {
                        list.Add(antifireKind);
                    }
                }
            }
            if (list.Count == 0)
            {
                return(null);
            }
            IOrderedEnumerable <AirFireInfo> source = from x in list
                                                      orderby x.AirFireKind
                                                      select x;

            return(source.First());
        }
Esempio n. 11
0
        protected virtual void makeAttackerData(bool enemyFlag)
        {
            List <int> list;
            Dictionary <int, BattleShipSubInfo> dictionary;

            if (!enemyFlag)
            {
                list = f_AtkIdxs;
                BattleBaseData f_Datum = F_Data;
                dictionary = F_SubInfo;
            }
            else
            {
                list = e_AtkIdxs;
                BattleBaseData e_Datum = E_Data;
                dictionary = E_SubInfo;
            }
            IOrderedEnumerable <BattleShipSubInfo> orderedEnumerable = from x in dictionary.Values
                                                                       orderby x.AttackNo
                                                                       select x;

            foreach (BattleShipSubInfo item in orderedEnumerable)
            {
                list.Add(item.DeckIdx);
            }
        }
 public FormationDatas(BattleBaseData fBaseData, BattleBaseData eBaseData, bool practiceFlag)
 {
     this.F_Formation     = fBaseData.Formation;
     this.E_Formation     = ((!practiceFlag) ? eBaseData.Formation : this.selectEnemyFormation(eBaseData.ShipData.get_Count()));
     this.BattleFormation = this.selectBattleFormation2();
     this.setParamater();
 }
Esempio n. 13
0
        public BattleCommandParams(BattleBaseData userData)
        {
            isEscape     = false;
            Fspp         = 0;
            Tspp         = 0;
            Rspp         = 0;
            escapeNum    = 0;
            userBaseData = userData;
            IEnumerable <int> source = from x in userBaseData.ShipData
                                       select Mst_DataManager.Instance.Mst_ship[x.Ship_id].Soku;

            highSpeedFlag = ((!source.Any((int x) => x != 10)) ? true : false);
            enableCommand = new HashSet <BattleCommand>
            {
                BattleCommand.Sekkin,
                BattleCommand.Ridatu,
                BattleCommand.Kaihi,
                BattleCommand.Totugeki,
                BattleCommand.Tousha,
                BattleCommand.Raigeki
            };
            enableCommandOpening = new HashSet <BattleCommand>
            {
                BattleCommand.Sekkin,
                BattleCommand.Ridatu,
                BattleCommand.Kaihi
            };
            commandFunc = new Dictionary <BattleCommand, Func <int, DayBattleProductionFmt> >
            {
                {
                    BattleCommand.Sekkin,
                    Sekkin
                },
                {
                    BattleCommand.Ridatu,
                    Ridatsu
                },
                {
                    BattleCommand.Kaihi,
                    Kaihi
                },
                {
                    BattleCommand.Totugeki,
                    Totsugeki
                },
                {
                    BattleCommand.Tousha,
                    Tousha
                },
                {
                    BattleCommand.Raigeki,
                    RaigPosture
                }
            };
        }
Esempio n. 14
0
        protected virtual int getSyokusetuInfo(int seiku, BattleBaseData baseData)
        {
            int num = 0;
            List <Mst_slotitem> list    = new List <Mst_slotitem>();
            HashSet <int>       hashSet = new HashSet <int>();

            hashSet.Add(8);
            hashSet.Add(9);
            hashSet.Add(10);
            hashSet.Add(41);
            HashSet <int> hashSet2 = hashSet;

            foreach (var item in baseData.ShipData.Select((Mem_ship obj, int ship_idx) => new
            {
                obj,
                ship_idx
            }))
            {
                Mem_ship obj2 = item.obj;
                for (int i = 0; i < obj2.Onslot.Count(); i++)
                {
                    if (obj2.Onslot[i] > 0 && obj2.Slot[i] > 0)
                    {
                        Mst_slotitem mst_slotitem = baseData.SlotData[item.ship_idx][i];
                        if (hashSet2.Contains(mst_slotitem.Api_mapbattle_type3))
                        {
                            list.Add(mst_slotitem);
                        }
                        if (mst_slotitem.Api_mapbattle_type3 != 8)
                        {
                            num += (int)((double)mst_slotitem.Saku * Math.Sqrt(obj2.Onslot[i]));
                        }
                    }
                }
            }
            int maxValue = 70 - seiku * 15;

            if (num < randInstance.Next(maxValue))
            {
                return(0);
            }
            int slotid = 0;
            int houm   = -1;

            list.ForEach(delegate(Mst_slotitem x)
            {
                int num2 = randInstance.Next(20 - seiku * 2);
                if (houm < x.Houm && x.Saku > num2)
                {
                    slotid = x.Id;
                    houm   = x.Houm;
                }
            });
            return(slotid);
        }
Esempio n. 15
0
 public Exec_SupportAttack(BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, SearchInfo[] serch, ILookup <int, int> mst_support_type)
 {
     _e_Data          = enemyData;
     _e_SubInfo       = enemySubInfo;
     practiceFlag     = false;
     mst_support_data = mst_support_type;
     serchValues      = new BattleSearchValues[2]
     {
         serch[0].SearchValue,
         serch[1].SearchValue
     };
 }
Esempio n. 16
0
 public Exec_AirBattle(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, SearchInfo[] searchInfo, bool practice)
 {
     _f_Data      = myData;
     _e_Data      = enemyData;
     _f_SubInfo   = mySubInfo;
     _e_SubInfo   = enemySubInfo;
     practiceFlag = practice;
     setSearchData(searchInfo);
     seikuValue = new int[2];
     valance1   = 0.25;
     valance2   = 95.0;
     valance3   = 25.0;
 }
Esempio n. 17
0
        protected virtual void battleBakurai(BattleBaseData attacker, BattleBaseData target, Dictionary <Mem_ship, List <FighterInfo> > fighter, ref BakuRaiInfo bakurai)
        {
            Mst_slotitem    slotitem = (!attacker.ShipData[0].IsEnemy()) ? fTouchPlane : eTouchPlane;
            List <Mem_ship> list     = target.ShipData.ToList();

            list.RemoveAll((Mem_ship x) => (x.Nowhp <= 0) ? true : false);
            foreach (KeyValuePair <Mem_ship, List <FighterInfo> > item in fighter)
            {
                Mem_ship key = item.Key;
                foreach (FighterInfo item2 in item.Value)
                {
                    if (key.Onslot[item2.SlotIdx] > 0 && item2.ValidBakurai())
                    {
                        BattleDamageKinds dKind       = BattleDamageKinds.Normal;
                        Mem_ship          atackTarget = getAtackTarget(key, list, overKill: true, subMarineFlag: false, rescueFlag: true, ref dKind);
                        if (atackTarget != null)
                        {
                            int num           = target.ShipData.IndexOf(atackTarget);
                            int bakuraiAtkPow = getBakuraiAtkPow(item2, key.Onslot[item2.SlotIdx], atackTarget);
                            bakuraiAtkPow = (int)((double)bakuraiAtkPow * getTouchPlaneKeisu(slotitem));
                            int             soukou    = atackTarget.Soukou;
                            int             hitPorb   = getHitPorb();
                            int             battleAvo = getBattleAvo(FormationDatas.GetFormationKinds.AIR, atackTarget);
                            BattleHitStatus hitStatus = getHitStatus(hitPorb, battleAvo, key, atackTarget, 0.2, airAttack: true);
                            int             num2      = setDamageValue(hitStatus, bakuraiAtkPow, soukou, key, atackTarget, target.LostFlag);
                            bakurai.Damage[num] += num2;
                            BattleDamageKinds battleDamageKinds = dKind;
                            if (battleDamageKinds == BattleDamageKinds.Rescue && bakurai.DamageType[num] != BattleDamageKinds.Rescue)
                            {
                                bakurai.DamageType[num] = BattleDamageKinds.Rescue;
                            }
                            if (bakurai.Clitical[num] != BattleHitStatus.Clitical && hitStatus == BattleHitStatus.Clitical)
                            {
                                bakurai.Clitical[num] = hitStatus;
                            }
                            if (item2.Kind == FighterInfo.FighterKinds.BAKU)
                            {
                                bakurai.IsBakugeki[num] = true;
                            }
                            else if (item2.Kind == FighterInfo.FighterKinds.RAIG)
                            {
                                bakurai.IsRaigeki[num] = true;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 18
0
        private Support_HouRai getRaigekiData()
        {
            BattleBaseData  f_Data = F_Data;
            BattleBaseData  e_Data = E_Data;
            List <Mem_ship> list   = E_Data.ShipData.ToList();

            list.RemoveAll(delegate(Mem_ship x)
            {
                if (x.Nowhp <= 0)
                {
                    return(true);
                }
                return(Mst_DataManager.Instance.Mst_stype[x.Stype].IsLandFacillity(Mst_DataManager.Instance.Mst_ship[x.Ship_id].Soku) ? true : false);
            });
            if (list.Count() == 0)
            {
                return(null);
            }
            Support_HouRai support_HouRai = new Support_HouRai();

            foreach (int f_AtkIdx in f_AtkIdxs)
            {
                Mem_ship            mem_ship    = f_Data.ShipData[f_AtkIdx];
                List <Mst_slotitem> atk_slot    = f_Data.SlotData[f_AtkIdx];
                BattleDamageKinds   dKind       = BattleDamageKinds.Normal;
                Mem_ship            atackTarget = getAtackTarget(mem_ship, list, overKill: true, subMarineFlag: false, rescueFlag: true, ref dKind);
                if (atackTarget != null)
                {
                    int             num             = e_Data.ShipData.IndexOf(atackTarget);
                    int             raigAttackValue = getRaigAttackValue(mem_ship, atk_slot, atackTarget);
                    int             soukou          = atackTarget.Soukou;
                    int             raigHitProb     = getRaigHitProb(mem_ship, atk_slot, raigAttackValue);
                    int             battleAvo       = getBattleAvo(FormationDatas.GetFormationKinds.RAIGEKI, atackTarget);
                    BattleHitStatus hitStatus       = getHitStatus(raigHitProb, battleAvo, mem_ship, atackTarget, valance3, airAttack: false);
                    int             num2            = setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, null);
                    support_HouRai.Damage[num] += num2;
                    if (hitStatus != 0 && support_HouRai.Clitical[num] != BattleHitStatus.Clitical)
                    {
                        support_HouRai.Clitical[num] = hitStatus;
                    }
                    if (support_HouRai.DamageType[num] != BattleDamageKinds.Rescue)
                    {
                        support_HouRai.DamageType[num] = dKind;
                    }
                }
            }
            return(support_HouRai);
        }
Esempio n. 19
0
        protected void setPlaneData(BattleBaseData baseData, Dictionary <int, BattleShipSubInfo> subInfo, List <int> planeFrom, out Dictionary <Mem_ship, List <FighterInfo> > fighterData)
        {
            fighterData = null;
            int count = baseData.ShipData.Count;

            if (count > 0)
            {
                Dictionary <Mem_ship, List <FighterInfo> > dictionary = new Dictionary <Mem_ship, List <FighterInfo> >();
                foreach (var item3 in baseData.SlotData.Select((List <Mst_slotitem> items, int idx) => new
                {
                    items,
                    idx
                }))
                {
                    Mem_ship mem_ship = baseData.ShipData[item3.idx];
                    if (mem_ship.IsFight() && isAttackerFromTargetKind(subInfo[mem_ship.Rid]))
                    {
                        bool flag = false;
                        dictionary.Add(mem_ship, new List <FighterInfo>());
                        foreach (var item4 in item3.items.Select((Mst_slotitem item, int slot_pos) => new
                        {
                            item,
                            slot_pos
                        }))
                        {
                            if (mem_ship.Onslot[item4.slot_pos] > 0 && FighterInfo.ValidFighter(item4.item))
                            {
                                FighterInfo item2 = new FighterInfo(item4.slot_pos, item4.item);
                                dictionary[mem_ship].Add(item2);
                                flag = true;
                            }
                        }
                        if (!flag)
                        {
                            dictionary.Remove(mem_ship);
                        }
                        else
                        {
                            planeFrom.Add(mem_ship.Rid);
                        }
                    }
                }
                if (dictionary.Count > 0)
                {
                    fighterData = dictionary;
                }
            }
        }
        private Support_HouRai getRaigekiData()
        {
            BattleBaseData  f_Data = this.F_Data;
            BattleBaseData  e_Data = this.E_Data;
            List <Mem_ship> list   = Enumerable.ToList <Mem_ship>(this.E_Data.ShipData);

            list.RemoveAll((Mem_ship x) => x.Nowhp <= 0 || Mst_DataManager.Instance.Mst_stype.get_Item(x.Stype).IsLandFacillity(Mst_DataManager.Instance.Mst_ship.get_Item(x.Ship_id).Soku));
            if (Enumerable.Count <Mem_ship>(list) == 0)
            {
                return(null);
            }
            Support_HouRai support_HouRai = new Support_HouRai();

            using (List <int> .Enumerator enumerator = this.f_AtkIdxs.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    int                 current           = enumerator.get_Current();
                    Mem_ship            mem_ship          = f_Data.ShipData.get_Item(current);
                    List <Mst_slotitem> atk_slot          = f_Data.SlotData.get_Item(current);
                    BattleDamageKinds   battleDamageKinds = BattleDamageKinds.Normal;
                    Mem_ship            atackTarget       = base.getAtackTarget(mem_ship, list, true, false, true, ref battleDamageKinds);
                    if (atackTarget != null)
                    {
                        int             num             = e_Data.ShipData.IndexOf(atackTarget);
                        int             raigAttackValue = this.getRaigAttackValue(mem_ship, atk_slot, atackTarget);
                        int             soukou          = atackTarget.Soukou;
                        int             raigHitProb     = this.getRaigHitProb(mem_ship, atk_slot, raigAttackValue);
                        int             battleAvo       = base.getBattleAvo(FormationDatas.GetFormationKinds.RAIGEKI, atackTarget);
                        BattleHitStatus hitStatus       = this.getHitStatus(raigHitProb, battleAvo, mem_ship, atackTarget, this.valance3, false);
                        int             num2            = this.setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, null);
                        support_HouRai.Damage[num] += num2;
                        if (hitStatus != BattleHitStatus.Miss && support_HouRai.Clitical[num] != BattleHitStatus.Clitical)
                        {
                            support_HouRai.Clitical[num] = hitStatus;
                        }
                        if (support_HouRai.DamageType[num] != BattleDamageKinds.Rescue)
                        {
                            support_HouRai.DamageType[num] = battleDamageKinds;
                        }
                    }
                }
            }
            return(support_HouRai);
        }
        public Exec_Search(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
        {
            this._f_Data      = myData;
            this._e_Data      = enemyData;
            this._f_SubInfo   = mySubInfo;
            this._e_SubInfo   = enemySubInfo;
            this.practiceFlag = practice;
            this.f_Param      = new SakutekiInfo(this.practiceFlag);
            this.e_Param      = new SakutekiInfo(this.practiceFlag);
            Dictionary <int, int> dictionary = new Dictionary <int, int>();

            dictionary.Add(1, 0);
            dictionary.Add(2, 0);
            dictionary.Add(3, 1);
            dictionary.Add(4, 2);
            dictionary.Add(5, 3);
            dictionary.Add(6, 4);
            this.valanceShipCount = dictionary;
            this.valance1         = 20;
        }
 public BattleFormationKinds2 AfterAirBattle_RewriteBattleFormation2(BattleBaseData fBaseData)
 {
     if (this.BattleFormation == BattleFormationKinds2.T_Enemy)
     {
         using (var enumerator = Enumerable.Select(fBaseData.SlotData, (List <Mst_slotitem> list, int ship_idx) => new
         {
             list,
             ship_idx
         }).GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 var      current  = enumerator.get_Current();
                 Mem_ship mem_ship = fBaseData.ShipData.get_Item(current.ship_idx);
                 using (var enumerator2 = Enumerable.Select(current.list, (Mst_slotitem obj, int slot_idx) => new
                 {
                     obj,
                     slot_idx
                 }).GetEnumerator())
                 {
                     while (enumerator2.MoveNext())
                     {
                         var current2 = enumerator2.get_Current();
                         if (mem_ship.Onslot.get_Item(current2.slot_idx) > 0)
                         {
                             if (current2.obj.Id == 54)
                             {
                                 this.BattleFormation = BattleFormationKinds2.Hankou;
                                 return(this.BattleFormation);
                             }
                         }
                     }
                 }
             }
         }
     }
     return(this.BattleFormation);
 }
Esempio n. 23
0
 public Exec_Search(BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
 {
     _f_Data          = myData;
     _e_Data          = enemyData;
     _f_SubInfo       = mySubInfo;
     _e_SubInfo       = enemySubInfo;
     practiceFlag     = practice;
     f_Param          = new SakutekiInfo(practiceFlag);
     e_Param          = new SakutekiInfo(practiceFlag);
     valanceShipCount = new Dictionary <int, int>
     {
         {
             1,
             0
         },
         {
             2,
             0
         },
         {
             3,
             1
         },
         {
             4,
             2
         },
         {
             5,
             3
         },
         {
             6,
             4
         }
     };
     valance1 = 20;
 }
Esempio n. 24
0
 public Exec_BattleResult(BattleResultBase execBattleData)
 {
     mst_shiplevel  = Mst_DataManager.Instance.Get_MstLevel(shipTable: true);
     _f_Data        = execBattleData.MyData;
     _e_Data        = execBattleData.EnemyData;
     _f_SubInfo     = execBattleData.F_SubInfo;
     _e_SubInfo     = execBattleData.E_SubInfo;
     practiceFlag   = execBattleData.PracticeFlag;
     battleKinds    = execBattleData.ExecKinds;
     clothBrokenIds = new List <int>();
     if (!execBattleData.PracticeFlag)
     {
         mst_enemy = Mst_DataManager.Instance.Mst_mapenemy[_e_Data.Enemy_id];
         string str  = mst_enemy.Maparea_id.ToString();
         string str2 = mst_enemy.Mapinfo_no.ToString();
         int    key  = int.Parse(str + str2);
         mst_mapinfo      = Mst_DataManager.Instance.Mst_mapinfo[key];
         deleteTargetShip = new List <Mem_ship>();
         cleard           = execBattleData.Cleard;
         nowCell          = execBattleData.NowCell;
     }
     isRebellionBattle = execBattleData.RebellionBattle;
     airCellItems      = execBattleData.GetAirCellItems;
 }
Esempio n. 25
0
        private Support_HouRai getHougekiData()
        {
            BattleBaseData  f_Data = this.F_Data;
            BattleBaseData  e_Data = this.E_Data;
            List <Mem_ship> list   = Enumerable.ToList <Mem_ship>(e_Data.ShipData);

            list.RemoveAll((Mem_ship x) => x.Nowhp <= 0 || Mst_DataManager.Instance.Mst_stype.get_Item(x.Stype).IsSubmarine());
            if (Enumerable.Count <Mem_ship>(list) == 0)
            {
                return(null);
            }
            Support_HouRai support_HouRai = new Support_HouRai();
            int            i = 0;

            while (i < this.F_Data.ShipData.get_Count())
            {
                Mem_ship             mem_ship = f_Data.ShipData.get_Item(i);
                List <Mst_slotitem>  list2    = f_Data.SlotData.get_Item(i);
                BattleAtackKinds_Day kind     = BattleAtackKinds_Day.Normal;
                if (base.IsAirAttackGroup(mem_ship, list2, BattleCommand.None))
                {
                    if (base.CanAirAtack_DamageState(mem_ship))
                    {
                        if (base.CanAirAttack(mem_ship, list2))
                        {
                            kind = BattleAtackKinds_Day.AirAttack;
                            goto IL_CA;
                        }
                    }
                }
                else if (base.isValidHougeki(mem_ship))
                {
                    goto IL_CA;
                }
IL_1B3:
                i++;
                continue;
IL_CA:
                BattleDamageKinds battleDamageKinds = BattleDamageKinds.Normal;
                Mem_ship atackTarget = base.getAtackTarget(mem_ship, list, true, false, true, ref battleDamageKinds);
                if (atackTarget == null)
                {
                    goto IL_1B3;
                }
                int             deckIdx         = this.E_SubInfo.get_Item(atackTarget.Rid).DeckIdx;
                int             hougAttackValue = this.getHougAttackValue(kind, mem_ship, list2, atackTarget, 0);
                int             soukou          = atackTarget.Soukou;
                int             hougHitProb     = this.getHougHitProb(kind, mem_ship, list2, 0);
                int             battleAvo       = base.getBattleAvo(FormationDatas.GetFormationKinds.HOUGEKI, atackTarget);
                BattleHitStatus hitStatus       = this.getHitStatus(hougHitProb, battleAvo, mem_ship, atackTarget, this.valance3, false);
                int             num             = this.setDamageValue(hitStatus, hougAttackValue, soukou, mem_ship, atackTarget, e_Data.LostFlag);
                support_HouRai.Damage[deckIdx] += num;
                if (hitStatus != BattleHitStatus.Miss && support_HouRai.Clitical[deckIdx] != BattleHitStatus.Clitical)
                {
                    support_HouRai.Clitical[deckIdx] = hitStatus;
                }
                if (support_HouRai.DamageType[deckIdx] != BattleDamageKinds.Rescue)
                {
                    support_HouRai.DamageType[deckIdx] = battleDamageKinds;
                    goto IL_1B3;
                }
                goto IL_1B3;
            }
            return(support_HouRai);
        }
Esempio n. 26
0
        private BattleSupportKinds Init(ref bool[] undressing)
        {
            if (mst_support_data == null)
            {
                return(BattleSupportKinds.None);
            }
            if (E_Data.ShipData.FirstOrDefault((Mem_ship x) => x.Nowhp > 0) == null)
            {
                return(BattleSupportKinds.None);
            }
            if (supportDeck == null)
            {
                return(BattleSupportKinds.None);
            }
            supportShips = supportDeck.Ship.getMemShip();
            Dictionary <int, int> dictionary  = new Dictionary <int, int>();
            Dictionary <int, int> dictionary2 = new Dictionary <int, int>();

            foreach (IGrouping <int, int> mst_support_datum in mst_support_data)
            {
                int key = mst_support_datum.Key;
                dictionary.Add(key, 0);
                foreach (int item in mst_support_datum)
                {
                    dictionary2.Add(item, key);
                }
            }
            int        num  = 0;
            int        num2 = 0;
            List <int> list = new List <int>();
            List <List <Mst_slotitem> > list2 = new List <List <Mst_slotitem> >();

            foreach (var item2 in supportShips.Select((Mem_ship obj, int ship_idx) => new
            {
                obj,
                ship_idx
            }))
            {
                int num3 = dictionary2[item2.obj.Stype];
                list.Add(item2.obj.Stype);
                Dictionary <int, int> dictionary3;
                Dictionary <int, int> dictionary4 = dictionary3 = dictionary;
                int key2;
                int key3 = key2 = num3;
                key2 = dictionary3[key2];
                dictionary4[key3] = key2 + 1;
                if (item2.obj.Get_FatigueState() == FatigueState.Exaltation)
                {
                    int num4 = (item2.ship_idx != 0) ? 5 : 15;
                    num2 += num4;
                }
                if (item2.obj.Get_DamageState() >= DamageState.Tyuuha)
                {
                    undressing[item2.ship_idx] = true;
                }
                List <Mst_slotitem> list3 = new List <Mst_slotitem>();
                foreach (var item3 in item2.obj.Slot.Select((int rid, int idx) => new
                {
                    rid,
                    idx
                }))
                {
                    if (item3.rid <= 0)
                    {
                        break;
                    }
                    Mst_slotitem value = null;
                    if (!Mst_DataManager.Instance.Mst_Slotitem.TryGetValue(Comm_UserDatas.Instance.User_slot[item3.rid].Slotitem_id, out value))
                    {
                        break;
                    }
                    list3.Add(value);
                    if (item2.obj.Onslot[item3.idx] > 0)
                    {
                        FighterInfo.FighterKinds kind = FighterInfo.GetKind(value);
                        if (kind == FighterInfo.FighterKinds.BAKU || kind == FighterInfo.FighterKinds.RAIG)
                        {
                            num++;
                        }
                    }
                }
                list2.Add(list3);
            }
            int num5 = (supportType != MissionType.SupportForward) ? (num2 + 85) : (50 + num2);

            if (num5 < randInstance.Next(100))
            {
                return(BattleSupportKinds.None);
            }
            _f_Data                 = new BattleBaseData(supportDeck, supportShips, list, list2);
            _f_Data.Formation       = BattleFormationKinds1.TanJuu;
            _f_Data.BattleFormation = E_Data.BattleFormation;
            List <Mem_ship> memShip = _f_Data.Deck.Ship.getMemShip();

            _f_SubInfo = new Dictionary <int, BattleShipSubInfo>();
            for (int i = 0; i < memShip.Count; i++)
            {
                BattleShipSubInfo value2 = new BattleShipSubInfo(i, memShip[i]);
                _f_SubInfo.Add(memShip[i].Rid, value2);
            }
            int num6  = dictionary[1];
            int num7  = dictionary[2];
            int num8  = dictionary[3];
            int num9  = dictionary[4];
            int num10 = dictionary[5];
            int num11 = dictionary[6];

            if (num6 >= 3 && num > 0)
            {
                return(BattleSupportKinds.AirAtack);
            }
            if (num7 >= 2)
            {
                return(BattleSupportKinds.Raigeki);
            }
            if (num8 + num9 >= 4)
            {
                return(BattleSupportKinds.Hougeki);
            }
            if (num10 + num11 >= 4)
            {
                return(BattleSupportKinds.Raigeki);
            }
            return(BattleSupportKinds.Hougeki);
        }
Esempio n. 27
0
        private BattleSupportKinds Init(ref bool[] undressing)
        {
            if (this.mst_support_data == null)
            {
                return(BattleSupportKinds.None);
            }
            if (Enumerable.FirstOrDefault <Mem_ship>(this.E_Data.ShipData, (Mem_ship x) => x.Nowhp > 0) == null)
            {
                return(BattleSupportKinds.None);
            }
            if (this.supportDeck == null)
            {
                return(BattleSupportKinds.None);
            }
            this.supportShips = this.supportDeck.Ship.getMemShip();
            Dictionary <int, int> dictionary  = new Dictionary <int, int>();
            Dictionary <int, int> dictionary2 = new Dictionary <int, int>();

            using (IEnumerator <IGrouping <int, int> > enumerator = this.mst_support_data.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    IGrouping <int, int> current = enumerator.get_Current();
                    int key = current.get_Key();
                    dictionary.Add(key, 0);
                    using (IEnumerator <int> enumerator2 = current.GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            int current2 = enumerator2.get_Current();
                            dictionary2.Add(current2, key);
                        }
                    }
                }
            }
            int        num  = 0;
            int        num2 = 0;
            List <int> list = new List <int>();
            List <List <Mst_slotitem> > list2 = new List <List <Mst_slotitem> >();

            using (var enumerator3 = Enumerable.Select(this.supportShips, (Mem_ship obj, int ship_idx) => new
            {
                obj,
                ship_idx
            }).GetEnumerator())
            {
                while (enumerator3.MoveNext())
                {
                    var current3 = enumerator3.get_Current();
                    int num3     = dictionary2.get_Item(current3.obj.Stype);
                    list.Add(current3.obj.Stype);
                    Dictionary <int, int> dictionary3;
                    Dictionary <int, int> expr_16B = dictionary3 = dictionary;
                    int num4;
                    int expr_170 = num4 = num3;
                    num4 = dictionary3.get_Item(num4);
                    expr_16B.set_Item(expr_170, num4 + 1);
                    if (current3.obj.Get_FatigueState() == FatigueState.Exaltation)
                    {
                        int num5 = (current3.ship_idx != 0) ? 5 : 15;
                        num2 += num5;
                    }
                    if (current3.obj.Get_DamageState() >= DamageState.Tyuuha)
                    {
                        undressing[current3.ship_idx] = true;
                    }
                    List <Mst_slotitem> list3 = new List <Mst_slotitem>();
                    using (var enumerator4 = Enumerable.Select(current3.obj.Slot, (int rid, int idx) => new
                    {
                        rid,
                        idx
                    }).GetEnumerator())
                    {
                        while (enumerator4.MoveNext())
                        {
                            var current4 = enumerator4.get_Current();
                            if (current4.rid <= 0)
                            {
                                break;
                            }
                            Mst_slotitem mst_slotitem = null;
                            if (!Mst_DataManager.Instance.Mst_Slotitem.TryGetValue(Comm_UserDatas.Instance.User_slot.get_Item(current4.rid).Slotitem_id, ref mst_slotitem))
                            {
                                break;
                            }
                            list3.Add(mst_slotitem);
                            if (current3.obj.Onslot.get_Item(current4.idx) > 0)
                            {
                                FighterInfo.FighterKinds kind = FighterInfo.GetKind(mst_slotitem);
                                if (kind == FighterInfo.FighterKinds.BAKU || kind == FighterInfo.FighterKinds.RAIG)
                                {
                                    num++;
                                }
                            }
                        }
                    }
                    list2.Add(list3);
                }
            }
            int num6;

            if (this.supportType == MissionType.SupportForward)
            {
                num6 = 50 + num2;
            }
            else
            {
                num6 = num2 + 85;
            }
            if (num6 < this.randInstance.Next(100))
            {
                return(BattleSupportKinds.None);
            }
            this._f_Data                 = new BattleBaseData(this.supportDeck, this.supportShips, list, list2);
            this._f_Data.Formation       = BattleFormationKinds1.TanJuu;
            this._f_Data.BattleFormation = this.E_Data.BattleFormation;
            List <Mem_ship> memShip = this._f_Data.Deck.Ship.getMemShip();

            this._f_SubInfo = new Dictionary <int, BattleShipSubInfo>();
            for (int i = 0; i < memShip.get_Count(); i++)
            {
                BattleShipSubInfo battleShipSubInfo = new BattleShipSubInfo(i, memShip.get_Item(i));
                this._f_SubInfo.Add(memShip.get_Item(i).Rid, battleShipSubInfo);
            }
            int num7  = dictionary.get_Item(1);
            int num8  = dictionary.get_Item(2);
            int num9  = dictionary.get_Item(3);
            int num10 = dictionary.get_Item(4);
            int num11 = dictionary.get_Item(5);
            int num12 = dictionary.get_Item(6);

            if (num7 >= 3 && num > 0)
            {
                return(BattleSupportKinds.AirAtack);
            }
            if (num8 >= 2)
            {
                return(BattleSupportKinds.Raigeki);
            }
            if (num9 + num10 >= 4)
            {
                return(BattleSupportKinds.Hougeki);
            }
            if (num11 + num12 >= 4)
            {
                return(BattleSupportKinds.Raigeki);
            }
            return(BattleSupportKinds.Hougeki);
        }
Esempio n. 28
0
        public Exec_Midnight(int type, int[] seikuValue, BattleBaseData myData, Dictionary <int, BattleShipSubInfo> mySubInfo, BattleBaseData enemyData, Dictionary <int, BattleShipSubInfo> enemySubInfo, bool practice)
        {
            this._f_Data      = myData;
            this._e_Data      = enemyData;
            this._f_SubInfo   = mySubInfo;
            this._e_SubInfo   = enemySubInfo;
            this.practiceFlag = practice;
            this.exec_type    = type;
            this.f_AtkIdxs    = null;
            this.makeAttackerData(this._f_Data.ShipData, out this.f_AtkIdxs);
            this.e_AtkIdxs = null;
            this.makeAttackerData(this._e_Data.ShipData, out this.e_AtkIdxs);
            if (seikuValue != null)
            {
                this.seikuValue = seikuValue;
            }
            else if (this.exec_type == 2)
            {
                this.seikuValue = new int[]
                {
                    1,
                    1
                };
            }
            else
            {
                this.seikuValue = new int[2];
            }
            this.makeSpSlotItem(this._f_Data, this.seikuValue[0]);
            this.makeSpSlotItem(this._e_Data, this.seikuValue[1]);
            this.fValance1 = (this.eValance1 = 0.0);
            this.fValance2 = (this.eValance2 = 69.0);
            this.fValance3 = (this.eValance3 = 1.5);
            if (this.exec_type == 1 || this.exec_type == 2)
            {
                Dictionary <BattleAtackKinds_Night, double> dictionary = new Dictionary <BattleAtackKinds_Night, double>();
                dictionary.Add(BattleAtackKinds_Night.Normal, 1.0);
                dictionary.Add(BattleAtackKinds_Night.Syu_Rai, 1.2);
                dictionary.Add(BattleAtackKinds_Night.Rai_Rai, 1.3);
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Fuku, 1.5);
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Syu, 1.75);
                dictionary.Add(BattleAtackKinds_Night.Renzoku, 2.0);
                this.spAttackKeisu = dictionary;
                dictionary         = new Dictionary <BattleAtackKinds_Night, double>();
                dictionary.Add(BattleAtackKinds_Night.Normal, 1.0);
                dictionary.Add(BattleAtackKinds_Night.Syu_Rai, 1.1);
                dictionary.Add(BattleAtackKinds_Night.Rai_Rai, 1.5);
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Fuku, 1.65);
                dictionary.Add(BattleAtackKinds_Night.Syu_Syu_Syu, 1.5);
                dictionary.Add(BattleAtackKinds_Night.Renzoku, 2.0);
                this.spHitProbKeisu = dictionary;
            }
            HashSet <int> hashSet = new HashSet <int>();

            hashSet.Add(12);
            hashSet.Add(13);
            hashSet.Add(21);
            hashSet.Add(14);
            hashSet.Add(40);
            hashSet.Add(16);
            hashSet.Add(27);
            hashSet.Add(28);
            hashSet.Add(17);
            hashSet.Add(15);
            this.disableSlotPlusAttackItems = hashSet;
            hashSet = new HashSet <int>();
            hashSet.Add(21);
            hashSet.Add(14);
            hashSet.Add(40);
            hashSet.Add(16);
            hashSet.Add(27);
            hashSet.Add(28);
            hashSet.Add(17);
            hashSet.Add(15);
            this.disableSlotPlusHitItems = hashSet;
            hashSet = new HashSet <int>();
            hashSet.Add(12);
            hashSet.Add(13);
            this.enableSlotPlusHitDentan = hashSet;
        }
Esempio n. 29
0
        private void makeSpSlotItem(BattleBaseData baseData, int seiku)
        {
            List <int> list = null;
            Dictionary <Mst_slotitem, HashSet <Mem_ship> > dictionary = null;
            List <int> list2 = null;

            if (baseData.ShipData.get_Item(0).IsEnemy())
            {
                list       = this.eSerchLightIdxs;
                dictionary = this.eTouchPlane;
                list2      = this.eFlareIdxs;
            }
            else
            {
                list       = this.fSerchLightIdxs;
                dictionary = this.fTouchPlane;
                list2      = this.fFlareIdxs;
            }
            List <List <Mst_slotitem> > slotData = baseData.SlotData;
            List <Mem_ship>             shipData = baseData.ShipData;

            using (var enumerator = Enumerable.Select(shipData, (Mem_ship obj, int ship_idx) => new
            {
                obj,
                ship_idx
            }).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.get_Current();
                    if (current.obj.IsFight())
                    {
                        using (var enumerator2 = Enumerable.Select(slotData.get_Item(current.ship_idx), (Mst_slotitem obj, int slot_idx) => new
                        {
                            obj,
                            slot_idx
                        }).GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                var current2 = enumerator2.get_Current();
                                if (current.obj.Onslot.get_Item(current2.slot_idx) > 0 && current2.obj.Id == 102)
                                {
                                    if (!dictionary.ContainsKey(current2.obj))
                                    {
                                        Dictionary <Mst_slotitem, HashSet <Mem_ship> > arg_150_0 = dictionary;
                                        Mst_slotitem       arg_150_1 = current2.obj;
                                        HashSet <Mem_ship> hashSet   = new HashSet <Mem_ship>();
                                        hashSet.Add(current.obj);
                                        arg_150_0.Add(arg_150_1, hashSet);
                                    }
                                    else
                                    {
                                        dictionary.get_Item(current2.obj).Add(current.obj);
                                    }
                                }
                                if (current2.obj.Api_mapbattle_type3 == 29)
                                {
                                    if (!list.Contains(current.ship_idx))
                                    {
                                        list.Add(current.ship_idx);
                                    }
                                }
                                else if (current2.obj.Api_mapbattle_type3 == 33 && !list2.Contains(current.ship_idx))
                                {
                                    list2.Add(current.ship_idx);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 30
0
 protected override int getDeckTaikuPow(BattleBaseData battleBase)
 {
     return(base.getDeckTaikuPow(battleBase));
 }