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);
        }
Example #2
0
 protected override void battleBakurai(BattleBaseData attacker, BattleBaseData target, Dictionary <Mem_ship, List <FighterInfo> > fighter, ref BakuRaiInfo bakurai)
 {
     base.battleBakurai(attacker, target, fighter, ref bakurai);
 }
Example #3
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;
                            }
                        }
                    }
                }
            }
        }