private List <DamageModelBase> _CreateRaigekiData(BakuRaiInfo Bakurai, List <ShipModel_BattleAll> ships) { List <DamageModelBase> list = new List <DamageModelBase>(); for (int i = 0; i < ships.get_Count(); i++) { ShipModel_BattleAll shipModel_BattleAll = ships.get_Item(i); if (shipModel_BattleAll == null || Bakurai == null) { list.Add(null); } else { bool is_raigeki = Bakurai.IsRaigeki[i]; bool is_bakugeki = Bakurai.IsBakugeki[i]; BakuRaiDamageModel bakuRaiDamageModel = new BakuRaiDamageModel(shipModel_BattleAll, is_raigeki, is_bakugeki); int damage = Bakurai.Damage[i]; BattleHitStatus hitstate = Bakurai.Clitical[i]; BattleDamageKinds dmgkind = Bakurai.DamageType[i]; bakuRaiDamageModel.__AddData__(damage, hitstate, dmgkind); list.Add(bakuRaiDamageModel); } } return(list); }
protected override void battleBakurai(BattleBaseData attacker, BattleBaseData target, Dictionary <Mem_ship, List <FighterInfo> > fighter, ref BakuRaiInfo bakurai) { base.battleBakurai(attacker, target, fighter, ref bakurai); }
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; } } } } } }