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); }
public FormationDatas(BattleBaseData fBaseData, BattleBaseData eBaseData, bool practiceFlag) { F_Formation = fBaseData.Formation; E_Formation = ((!practiceFlag) ? eBaseData.Formation : selectEnemyFormation(eBaseData.ShipData.Count)); BattleFormation = selectBattleFormation2(); setParamater(); }
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 }; }
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; }
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; }
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; }
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 }; }
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; }
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()); }
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(); }
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 } }; }
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); }
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 }; }
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; }
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; } } } } } }
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); }
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); }
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; }
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; }
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); }
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); }
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); }
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; }
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); } } } } } } }
protected override int getDeckTaikuPow(BattleBaseData battleBase) { return(base.getDeckTaikuPow(battleBase)); }