protected virtual RaigekiInfo getRaigekiData(bool enemyFlag) { RaigekiInfo raigekiInfo = new RaigekiInfo(); List <int> list; BattleBaseData battleBaseData; Dictionary <int, BattleShipSubInfo> dictionary; BattleBaseData battleBaseData2; Dictionary <int, BattleShipSubInfo> dictionary2; if (enemyFlag) { list = e_AtkIdxs; battleBaseData = E_Data; dictionary = E_SubInfo; battleBaseData2 = F_Data; dictionary2 = F_SubInfo; } else { list = f_AtkIdxs; battleBaseData = F_Data; dictionary = F_SubInfo; battleBaseData2 = E_Data; dictionary2 = E_SubInfo; } int num = list.Count(); if (num == 0) { return(raigekiInfo); } List <Mem_ship> list2 = battleBaseData2.ShipData.ToList(); Dictionary <int, Mst_stype> mst_stype = Mst_DataManager.Instance.Mst_stype; Dictionary <int, Mst_ship> mst_ship = Mst_DataManager.Instance.Mst_ship; list2.RemoveAll(delegate(Mem_ship x) { if (x.Nowhp <= 0) { return(true); } return(mst_stype[x.Stype].IsLandFacillity(mst_ship[x.Ship_id].Soku) ? true : false); }); if (list2.Count == 0) { return(raigekiInfo); } for (int i = 0; i < num; i++) { int num2 = list[i]; Mem_ship mem_ship = battleBaseData.ShipData[num2]; List <Mst_slotitem> atk_slot = battleBaseData.SlotData[num2]; if (isAttackerFromTargetKind(dictionary[mem_ship.Rid])) { BattleDamageKinds dKind = BattleDamageKinds.Normal; Mem_ship atackTarget = getAtackTarget(mem_ship, list2, overKill: true, subMarineFlag: false, rescueFlag: true, ref dKind); if (atackTarget != null) { int deckIdx = dictionary2[atackTarget.Rid].DeckIdx; 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 num3 = setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, battleBaseData2.LostFlag); raigekiInfo.Damage[num2] = num3; raigekiInfo.Target[num2] = deckIdx; raigekiInfo.DamageKind[num2] = dKind; raigekiInfo.Clitical[num2] = hitStatus; } } } return(raigekiInfo); }
private Dictionary <int, DamageModelBase> _CreateRaigekiDamageModel(List <ShipModel_BattleAll> a_ships, List <ShipModel_BattleAll> d_ships, List <DamageModelBase> data, RaigekiInfo rInfo) { Dictionary <int, DamageModelBase> dictionary = new Dictionary <int, DamageModelBase>(); for (int i = 0; i < d_ships.get_Count(); i++) { ShipModel_BattleAll shipModel_BattleAll = d_ships.get_Item(i); if (shipModel_BattleAll != null) { data.Add(new RaigekiDamageModel(shipModel_BattleAll)); } else { data.Add(null); } } for (int j = 0; j < rInfo.Target.Length; j++) { int num = rInfo.Target[j]; if (num != -1) { ShipModel_BattleAll shipModel_BattleAll2 = a_ships.get_Item(j); DamageModelBase damageModelBase = data.get_Item(num); if (damageModelBase == null) { ShipModel_BattleAll defender = d_ships.get_Item(num); damageModelBase = new RaigekiDamageModel(defender); data.set_Item(num, damageModelBase); } ((RaigekiDamageModel)damageModelBase).__AddData__(shipModel_BattleAll2, rInfo.Damage[j], rInfo.Clitical[j], rInfo.DamageKind[j]); dictionary.set_Item(shipModel_BattleAll2.TmpId, damageModelBase); } } return(dictionary); }
protected virtual RaigekiInfo getRaigekiData(bool enemyFlag) { RaigekiInfo raigekiInfo = new RaigekiInfo(); List <int> list; BattleBaseData battleBaseData; Dictionary <int, BattleShipSubInfo> dictionary; BattleBaseData battleBaseData2; Dictionary <int, BattleShipSubInfo> dictionary2; if (enemyFlag) { list = this.e_AtkIdxs; battleBaseData = this.E_Data; dictionary = this.E_SubInfo; battleBaseData2 = this.F_Data; dictionary2 = this.F_SubInfo; } else { list = this.f_AtkIdxs; battleBaseData = this.F_Data; dictionary = this.F_SubInfo; battleBaseData2 = this.E_Data; dictionary2 = this.E_SubInfo; } int num = Enumerable.Count <int>(list); if (num == 0) { return(raigekiInfo); } List <Mem_ship> list2 = Enumerable.ToList <Mem_ship>(battleBaseData2.ShipData); Dictionary <int, Mst_stype> mst_stype = Mst_DataManager.Instance.Mst_stype; Dictionary <int, Mst_ship> mst_ship = Mst_DataManager.Instance.Mst_ship; list2.RemoveAll((Mem_ship x) => x.Nowhp <= 0 || mst_stype.get_Item(x.Stype).IsLandFacillity(mst_ship.get_Item(x.Ship_id).Soku)); if (list2.get_Count() == 0) { return(raigekiInfo); } for (int i = 0; i < num; i++) { int num2 = list.get_Item(i); Mem_ship mem_ship = battleBaseData.ShipData.get_Item(num2); List <Mst_slotitem> atk_slot = battleBaseData.SlotData.get_Item(num2); if (this.isAttackerFromTargetKind(dictionary.get_Item(mem_ship.Rid))) { BattleDamageKinds battleDamageKinds = BattleDamageKinds.Normal; Mem_ship atackTarget = base.getAtackTarget(mem_ship, list2, true, false, true, ref battleDamageKinds); if (atackTarget != null) { int deckIdx = dictionary2.get_Item(atackTarget.Rid).DeckIdx; 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 num3 = this.setDamageValue(hitStatus, raigAttackValue, soukou, mem_ship, atackTarget, battleBaseData2.LostFlag); raigekiInfo.Damage[num2] = num3; raigekiInfo.Target[num2] = deckIdx; raigekiInfo.DamageKind[num2] = battleDamageKinds; raigekiInfo.Clitical[num2] = hitStatus; } } } return(raigekiInfo); }