コード例 #1
0
        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);
        }
コード例 #2
0
 public ShienModel_Hou(DeckModel shien_deck, List <ShipModel_BattleAll> ships_f, List <ShipModel_BattleAll> ships_e, SupportAtack data)
 {
     _shien_deck_id = shien_deck.Id;
     _ships_shien   = new List <ShipModel_Attacker>();
     ShipModel[] ships = shien_deck.GetShips();
     for (int i = 0; i < ships.Length; i++)
     {
         _ships_shien.Add(new __ShipModel_Attacker__(ships[i], i));
     }
     _ships_f  = ships_f;
     _ships_e  = ships_e;
     _data     = data;
     _dmg_data = new List <DamageModel>();
     for (int j = 0; j < ships_e.Count; j++)
     {
         ShipModel_BattleAll shipModel_BattleAll = ships_e[j];
         if (shipModel_BattleAll == null)
         {
             _dmg_data.Add(null);
             continue;
         }
         DamageModel       damageModel = new DamageModel(shipModel_BattleAll);
         int               damage      = data.Hourai.Damage[j];
         BattleHitStatus   hitstate    = data.Hourai.Clitical[j];
         BattleDamageKinds dmgkind     = data.Hourai.DamageType[j];
         damageModel.__AddData__(damage, hitstate, dmgkind);
         damageModel.__CalcDamage__();
         _dmg_data.Add(damageModel);
     }
 }
コード例 #3
0
        public static HitState ConvertBattleHitState2HitState(DamageModelBase model)
        {
            HitState result = HitState.Miss;

            if (model == null)
            {
                return(result);
            }
            BattleHitStatus hitState = model.GetHitState();

            if (hitState != BattleHitStatus.Normal)
            {
                if (hitState != BattleHitStatus.Clitical)
                {
                    result = HitState.Miss;
                }
                else
                {
                    if (model.GetGurdEffect())
                    {
                    }
                    result = HitState.CriticalDamage;
                }
            }
            else
            {
                if (model.GetGurdEffect())
                {
                }
                result = HitState.NomalDamage;
            }
            return(result);
        }
コード例 #4
0
 public void SetHp(int num, int maxHp, int nowHp, int toHp, int damage, BattleHitStatus status, bool isFriend)
 {
     if (!(_listHpGauge[num] == null))
     {
         _listHpGauge[num].SetHPGauge(maxHp, nowHp, toHp, damage, status, isFriend);
     }
 }
コード例 #5
0
        protected virtual void PlayHpGaugeDamage(UIBattleShip ship, HitState iState)
        {
            BattleHitStatus status = BattleHitStatus.Normal;

            switch (iState)
            {
            case HitState.Miss:
                status = BattleHitStatus.Miss;
                break;

            case HitState.CriticalDamage:
                status = BattleHitStatus.Clitical;
                break;
            }
            if (this._clsHougekiModel != null)
            {
                UICircleHPGauge circleHPGauge = BattleTaskManager.GetPrefabFile().circleHPGauge;
                circleHPGauge.SetHPGauge(this._clsHougekiModel.Defender.MaxHp, this._clsHougekiModel.Defender.HpBefore, this._clsHougekiModel.Defender.HpAfter, this._clsHougekiModel.GetDamage(), status, this._clsHougekiModel.Defender.IsFriend());
                Vector3 damagePosition = (!this._clsHougekiModel.Defender.IsFriend()) ? new Vector3(280f, -125f, 0f) : new Vector3(-500f, -125f, 0f);
                circleHPGauge.SetDamagePosition(damagePosition);
                circleHPGauge.Play(delegate
                {
                });
            }
        }
コード例 #6
0
ファイル: Hougeki.cs プロジェクト: xiaozhikang0916/FireEmu
        protected virtual int setDamageValue(BattleHitStatus hitType, int atkPow, int defPow, Mem_ship attacker, Mem_ship target)
        {
            if (hitType == BattleHitStatus.Miss)
            {
                return(0);
            }
            if (hitType == BattleHitStatus.Critical)
            {
                atkPow = (int)((double)atkPow * 1.5);
            }
            double def  = (double)r.Next(defPow);
            double num  = (double)atkPow - ((double)defPow * 0.7 + def * 0.6);
            double num2 = 100.0;

            if (num2 < 50.0)
            {
                num = Math.Floor(num * num2 / 50.0);
            }
            int num4 = (int)num;

            if (num4 < 1)
            {
                int num5 = r.Next(target.Nowhp);
                num4 = (int)((double)target.Nowhp * 0.06 + (double)num5 * 0.08);
            }
            return(num4);
        }
コード例 #7
0
        protected virtual int setDamageValue(BattleHitStatus hitType, int atkPow, int defPow, Mem_ship attacker, Mem_ship target, List <bool> lostFlag)
        {
            switch (hitType)
            {
            case BattleHitStatus.Miss:
                return(0);

            case BattleHitStatus.Clitical:
                atkPow = (int)((double)atkPow * 1.5);
                break;
            }
            double num  = (double)atkPow - ((double)defPow * 0.7 + (double)randInstance.Next(defPow) * 0.6);
            double num2 = 100.0;
            double num3 = Mst_DataManager.Instance.Mst_ship[attacker.Ship_id].Bull_max;

            if (num3 != 0.0)
            {
                num2 = (double)attacker.Bull / num3 * 100.0;
            }
            if (num2 < 50.0)
            {
                num = Math.Floor(num * num2 / 50.0);
            }
            int num4 = (int)num;
            BattleShipSubInfo battleShipSubInfo;
            int deckIdx;

            if (attacker.IsEnemy())
            {
                battleShipSubInfo = E_SubInfo[attacker.Rid];
                int deckIdx2 = battleShipSubInfo.DeckIdx;
                deckIdx = F_SubInfo[target.Rid].DeckIdx;
            }
            else
            {
                battleShipSubInfo = F_SubInfo[attacker.Rid];
                int deckIdx3 = battleShipSubInfo.DeckIdx;
                deckIdx = E_SubInfo[target.Rid].DeckIdx;
            }
            if (num4 < 1)
            {
                int num5 = randInstance.Next(target.Nowhp);
                num4 = (int)((double)target.Nowhp * 0.06 + (double)num5 * 0.08);
            }
            if (num4 >= target.Nowhp && !target.IsEnemy() && deckIdx == 0)
            {
                num4 = (int)((double)target.Nowhp * 0.5 + (double)randInstance.Next(target.Nowhp) * 0.3);
            }
            if (lostFlag != null && num4 >= target.Nowhp && !lostFlag[deckIdx])
            {
                num4 = target.Nowhp - 1;
            }
            double lovHoseiDamageKeisu = getLovHoseiDamageKeisu(target, num4);

            num4 = (int)((double)num4 * lovHoseiDamageKeisu);
            battleShipSubInfo.TotalDamage += num4;
            target.SubHp(num4);
            return(num4);
        }
コード例 #8
0
 public void SetHp(int num, int maxHp, int nowHp, int toHp, int damage, BattleHitStatus status, bool isFriend)
 {
     if (this._listHpGauge.get_Item(num) == null)
     {
         return;
     }
     this._listHpGauge.get_Item(num).SetHPGauge(maxHp, nowHp, toHp, damage, status, isFriend);
 }
コード例 #9
0
 protected int _AddData(int damage, BattleHitStatus hitstate, BattleDamageKinds dmgkind)
 {
     this._calc_damages.Add(damage);
     this._damages.Add(damage);
     this._hitstates.Add(hitstate);
     this._dmgkind.Add(dmgkind);
     return(this._damages.get_Count());
 }
コード例 #10
0
 protected int _AddData(int damage, BattleHitStatus hitstate, BattleDamageKinds dmgkind)
 {
     _calc_damages.Add(damage);
     _damages.Add(damage);
     _hitstates.Add(hitstate);
     _dmgkind.Add(dmgkind);
     return(_damages.Count);
 }
コード例 #11
0
        private void _setHpGauge(FleetType type)
        {
            int       num  = (type != 0) ? _fBattleship.Count : _eBattleship.Count;
            bool      flag = (type == FleetType.Friend) ? true : false;
            FleetType key  = flag ? FleetType.Enemy : FleetType.Friend;
            List <ShipModel_Defender> defenders = _clsKoukuu.GetDefenders((!flag) ? true : false, all: true);

            for (int i = 0; i < _dicBakuraiModel[type].Length; i++)
            {
                if (_dicBakuraiModel[type][i] == null)
                {
                    continue;
                }
                ShipModel_Defender defender = _dicBakuraiModel[type][i].Defender;
                switch (_dicBakuraiModel[type][i].GetHitState())
                {
                case BattleHitStatus.Normal:
                    if (_dicHitState[key][defender.Index] != HpHitState.Critical)
                    {
                        _dicHitState[key][defender.Index] = HpHitState.Hit;
                    }
                    break;

                case BattleHitStatus.Clitical:
                    _dicHitState[key][defender.Index] = HpHitState.Critical;
                    break;

                case BattleHitStatus.Miss:
                    if (_dicHitState[key][defender.Index] == HpHitState.None)
                    {
                        _dicHitState[key][defender.Index] = HpHitState.Miss;
                    }
                    break;
                }
            }
            for (int j = 0; j < num; j++)
            {
                int             damage = _clsKoukuu.GetAttackDamage(defenders[j].TmpId)?.GetDamage() ?? (-1);
                BattleHitStatus status = (_dicHitState[key][j] != HpHitState.Miss) ? ((_dicHitState[key][j] != HpHitState.Critical) ? BattleHitStatus.Normal : BattleHitStatus.Clitical) : BattleHitStatus.Miss;
                _battleHpGauges.Init();
                _battleHpGauges.SetGauge(j, flag, isLight: true, isT: false, isNumber: false);
                if (flag)
                {
                    _battleHpGauges.SetHp(j, defenders[j].MaxHp, defenders[j].HpBefore, defenders[j].HpAfter, damage, status, isFriend: false);
                }
                else
                {
                    _battleHpGauges.SetHp(j, defenders[j].MaxHp, defenders[j].HpBefore, defenders[j].HpAfter, damage, status, isFriend: false);
                }
            }
        }
コード例 #12
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;
                            }
                        }
                    }
                }
            }
        }
コード例 #13
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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
ファイル: Hougeki.cs プロジェクト: xiaozhikang0916/FireEmu
        public HougekiData getAttackData(Mem_ship attacker, List <Mst_slotitem> attackerSlot, List <int> attackerSlotLevel, Mem_ship atackTarget)
        {
            HougekiData hougeki = new HougekiData();
            int         num2;
            int         num3;

            num2       = this.getHougAttackValue(attacker, attackerSlot, attackerSlotLevel, atackTarget);
            num3       = this.getHougHitProb(attacker, attackerSlot, attackerSlotLevel);
            calHitProb = num3;

            int battleAvo = getBattleAvo(atackTarget);

            calAvoProb = battleAvo;
            BattleHitStatus battleHitStatus = this.getHitStatus(num3, battleAvo, attacker, atackTarget, this.valance3);
            int             num4            = this.setDamageValue(battleHitStatus, num2, atackTarget.Soukou, attacker, atackTarget);

            hougeki.Damage   = (num4);
            hougeki.Critical = (battleHitStatus);
            return(hougeki);
        }
コード例 #16
0
        public void SetHPGauge(int maxHP, int beforeHP, int afterHP, int damage, BattleHitStatus status, bool isFriend)
        {
            _uiHPLabel.textInt           = beforeHP;
            _nMaxHP                      = maxHP;
            _nFromHP                     = beforeHP;
            _nToHP                       = ((afterHP > 0) ? afterHP : 0);
            _nDamage                     = ((damage < 100000) ? damage : 99999);
            _hitType                     = ((_nDamage <= 0) ? status : status);
            base.transform.localPosition = ((!isFriend) ? (Vector3.left * 200f) : (Vector3.right * 200f));
            if (_hitType == BattleHitStatus.Miss)
            {
                _nDamage = -1;
            }
            int now = (int)Math.Floor((float)_nFromHP);

            _uiHPLabel.textInt       = _nFromHP;
            _uiForeground.color      = Util.HpGaugeColor2(_nMaxHP, now);
            _uiHPLabel.color         = Util.HpLabelColor(_nMaxHP, now);
            _uiForeground.fillAmount = Mathe.Rate(0f, _nMaxHP, _nFromHP);
            setDamageLabelPos();
        }
コード例 #17
0
        public BattleHitStatus GetHitState()
        {
            if (this._hitstates.get_Count() == 0)
            {
                return(BattleHitStatus.Miss);
            }
            BattleHitStatus battleHitStatus = this._hitstates.get_Item(0);

            for (int i = 1; i < this._hitstates.get_Count(); i++)
            {
                if (this._hitstates.get_Item(i) == BattleHitStatus.Clitical)
                {
                    return(BattleHitStatus.Clitical);
                }
                if (this._hitstates.get_Item(i) == BattleHitStatus.Normal && battleHitStatus == BattleHitStatus.Miss)
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
            }
            return(battleHitStatus);
        }
コード例 #18
0
        public void SetHPGauge(int maxHP, int beforeHP, int afterHP, int damage, BattleHitStatus status, bool isFriend)
        {
            this._uiHPLabel.textInt = beforeHP;
            this._nMaxHP            = maxHP;
            this._nFromHP           = beforeHP;
            this._nToHP             = ((afterHP <= 0) ? 0 : afterHP);
            this._nDamage           = ((damage < 100000) ? damage : 99999);
            this._hitType           = ((this._nDamage <= 0) ? status : status);
            base.get_transform().set_localPosition((!isFriend) ? (Vector3.get_left() * 200f) : (Vector3.get_right() * 200f));
            if (this._hitType == BattleHitStatus.Miss)
            {
                this._nDamage = -1;
            }
            int now = (int)Math.Floor((double)((float)this._nFromHP));

            this._uiHPLabel.textInt       = this._nFromHP;
            this._uiForeground.color      = Util.HpGaugeColor2(this._nMaxHP, now);
            this._uiHPLabel.color         = Util.HpLabelColor(this._nMaxHP, now);
            this._uiForeground.fillAmount = Mathe.Rate(0f, (float)this._nMaxHP, (float)this._nFromHP);
            this.setDamageLabelPos();
        }
コード例 #19
0
        public BattleHitStatus GetHitState()
        {
            if (_hitstates.Count == 0)
            {
                return(BattleHitStatus.Miss);
            }
            BattleHitStatus battleHitStatus = _hitstates[0];

            for (int i = 1; i < _hitstates.Count; i++)
            {
                if (_hitstates[i] == BattleHitStatus.Clitical)
                {
                    return(BattleHitStatus.Clitical);
                }
                if (_hitstates[i] == BattleHitStatus.Normal && battleHitStatus == BattleHitStatus.Miss)
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
            }
            return(battleHitStatus);
        }
コード例 #20
0
        private void _setHpGauge()
        {
            BattleCutInCamera cutInCamera = BattleTaskManager.GetBattleCameras().cutInCamera;
            bool flag = false;

            _eHpPos    = _setHpGaugePosition(_eBattleship.Count);
            _eHitState = new HpHitState[_eBattleship.Count];
            UIPanel uIPanel = Resources.Load <UIPanel>("Prefabs/Battle/UI/UICircleHpPanel");

            _uiHpGaugePanel = Util.Instantiate(uIPanel.gameObject, cutInCamera.transform.gameObject).GetComponent <UIPanel>();
            for (int i = 0; i < _defenders.Count; i++)
            {
                DamageModel attackDamage = _clsShelling.GetAttackDamage(_defenders[i].TmpId);
                if (attackDamage.GetHitState() == BattleHitStatus.Clitical)
                {
                    _eHitState[attackDamage.Defender.Index] = HpHitState.Critical;
                }
                else if (attackDamage.GetHitState() == BattleHitStatus.Miss)
                {
                    if (_eHitState[attackDamage.Defender.Index] == HpHitState.None)
                    {
                        _eHitState[attackDamage.Defender.Index] = HpHitState.Miss;
                    }
                }
                else if (attackDamage.GetHitState() == BattleHitStatus.Normal && _eHitState[attackDamage.Defender.Index] != HpHitState.Critical)
                {
                    _eHitState[attackDamage.Defender.Index] = HpHitState.Hit;
                }
                BattleHitStatus status = (_eHitState[i] != HpHitState.Miss) ? ((_eHitState[i] != HpHitState.Critical) ? BattleHitStatus.Normal : BattleHitStatus.Clitical) : BattleHitStatus.Miss;
                _battleHpGauges.SetGauge(i, isFriend: false, isLight: true, isT: false, isNumber: false);
                _battleHpGauges.SetHp(i, _defenders[i].MaxHp, _defenders[i].HpBefore, _defenders[i].HpAfter, attackDamage.GetDamage(), status, isFriend: false);
                if (attackDamage.GetProtectEffect() && !flag)
                {
                    flag       = true;
                    _isProtect = true;
                    _rescueCutIn.AddShipList(_eBattleship[0], _eBattleship[i]);
                }
            }
        }
コード例 #21
0
		private void _setHpGauge()
		{
			bool flag = false;
			_eHitState = new HpHitState[_eBattleship.Count];
			List<ShipModel_Defender> defenders = _clsTorpedo.GetDefenders(is_friend: false);
			for (int i = 0; i < defenders.Count; i++)
			{
				DamageModel attackDamage = _clsTorpedo.GetAttackDamage(defenders[i].TmpId);
				switch (attackDamage.GetHitState())
				{
				case BattleHitStatus.Normal:
					if (_eHitState[i] != HpHitState.Critical)
					{
						_eHitState[i] = HpHitState.Hit;
					}
					break;
				case BattleHitStatus.Clitical:
					_eHitState[i] = HpHitState.Critical;
					break;
				case BattleHitStatus.Miss:
					if (_eHitState[i] == HpHitState.None)
					{
						_eHitState[i] = HpHitState.Miss;
					}
					break;
				}
				BattleHitStatus status = (_eHitState[i] != HpHitState.Miss) ? ((_eHitState[i] != HpHitState.Critical) ? BattleHitStatus.Normal : BattleHitStatus.Clitical) : BattleHitStatus.Miss;
				_battleHpGauges.SetGauge(i, isFriend: false, isLight: false, isT: true, isNumber: false);
				_battleHpGauges.SetHp(i, defenders[i].MaxHp, defenders[i].HpBefore, defenders[i].HpAfter, attackDamage.GetDamage(), status, isFriend: false);
				if (attackDamage.GetProtectEffect() && !flag)
				{
					flag = true;
					_isProtect = true;
					_rescueCutIn.AddShipList(_eBattleship[0], _eBattleship[i]);
				}
			}
		}
コード例 #22
0
        private void _setHpGauge()
        {
            _eHpPos = new Vector3[_eBattleship.Count];
            _eHpPos = _setHpPosition(FleetType.Enemy, _eBattleship.Count);
            List <ShipModel_Defender> defenders = _clsAerial.GetDefenders(is_friend: false, all: true);

            for (int i = 0; i < _fBakuraiModel.Length; i++)
            {
                if (_fBakuraiModel[i] == null)
                {
                    continue;
                }
                ShipModel_Defender defender = _fBakuraiModel[i].Defender;
                if (_fBakuraiModel[i].GetHitState() == BattleHitStatus.Clitical)
                {
                    _eHitState[defender.Index] = HpHitState.Critical;
                }
                else if (_fBakuraiModel[i].GetHitState() == BattleHitStatus.Miss)
                {
                    if (_eHitState[defender.Index] == HpHitState.None)
                    {
                        _eHitState[defender.Index] = HpHitState.Miss;
                    }
                }
                else if (_fBakuraiModel[i].GetHitState() == BattleHitStatus.Normal && _eHitState[defender.Index] != HpHitState.Critical)
                {
                    _eHitState[defender.Index] = HpHitState.Hit;
                }
            }
            for (int j = 0; j < _eBattleship.Count; j++)
            {
                BattleHitStatus status = (_eHitState[j] != HpHitState.Miss) ? ((_eHitState[j] != HpHitState.Critical) ? BattleHitStatus.Normal : BattleHitStatus.Clitical) : BattleHitStatus.Miss;
                _battleHpGauges.SetGauge(j, isFriend: false, isLight: true, isT: false, isNumber: false);
                _battleHpGauges.SetHp(j, defenders[j].MaxHp, defenders[j].HpBefore, defenders[j].HpAfter, _clsAerial.GetAttackDamage(defenders[j].TmpId).GetDamage(), status, isFriend: false);
            }
        }
コード例 #23
0
 public void __AddData__(int damage, BattleHitStatus hitstate, BattleDamageKinds dmgkind)
 {
     base._AddData(damage, hitstate, dmgkind);
 }
コード例 #24
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);
        }
コード例 #25
0
        private Hougeki <BattleAtackKinds_Day> getAttackData(Mem_ship attacker, List <Mst_slotitem> attackerSlot, List <int> attackerSlotLevel, BattleAtackKinds_Day attackType, bool submarine_flag, KeyValuePair <int, int> submarine_keisu, List <Mem_ship> targetShips, List <bool> targetLostFlags, Dictionary <int, BattleShipSubInfo> targetSubInfo, int powerDownType)
        {
            BattleDamageKinds dKind       = BattleDamageKinds.Normal;
            Mem_ship          atackTarget = getAtackTarget(attacker, targetShips, overKill: false, submarine_flag, rescueFlag: true, ref dKind);

            if (atackTarget == null)
            {
                return(null);
            }
            int deckIdx = targetSubInfo[atackTarget.Rid].DeckIdx;
            Hougeki <BattleAtackKinds_Day> hougeki = new Hougeki <BattleAtackKinds_Day>();

            hougeki.Attacker = attacker.Rid;
            hougeki.SpType   = attackType;
            int num = (attackType != BattleAtackKinds_Day.Renzoku) ? 1 : 2;

            for (int i = 0; i < num; i++)
            {
                int soukou = atackTarget.Soukou;
                hougeki.Target.Add(atackTarget.Rid);
                int num2;
                int num3;
                FormationDatas.GetFormationKinds battleState;
                if (submarine_flag)
                {
                    num2        = getSubmarineAttackValue(submarine_keisu, attacker, attackerSlot, attackerSlotLevel);
                    num3        = getSubmarineHitProb(attacker, attackerSlot, attackerSlotLevel);
                    battleState = FormationDatas.GetFormationKinds.SUBMARINE;
                }
                else
                {
                    int tekkouKind = getTekkouKind(atackTarget.Stype, attackerSlot);
                    num2        = getHougAttackValue(attackType, attacker, attackerSlot, atackTarget, tekkouKind);
                    num3        = getHougHitProb(attackType, attacker, attackerSlot, tekkouKind);
                    battleState = FormationDatas.GetFormationKinds.HOUGEKI;
                }
                int battleAvo = getBattleAvo(battleState, atackTarget);
                switch (powerDownType)
                {
                case 1:
                    num2 = (int)((double)num2 * 0.55);
                    num3 = (int)((double)num3 * 0.55);
                    break;

                case 2:
                    num3 = (int)((double)num3 * 0.55);
                    break;
                }
                bool            airAttack       = (attackType == BattleAtackKinds_Day.AirAttack) ? true : false;
                BattleHitStatus battleHitStatus = getHitStatus(num3, battleAvo, attacker, atackTarget, valance3, airAttack);
                if (battleHitStatus == BattleHitStatus.Miss && enableSpType.Contains(attackType))
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
                int item = setDamageValue(battleHitStatus, num2, soukou, attacker, atackTarget, targetLostFlags);
                hougeki.Damage.Add(item);
                hougeki.Clitical.Add(battleHitStatus);
                hougeki.DamageKind.Add(dKind);
            }
            if (attacker.IsEnemy())
            {
                RecoveryShip(deckIdx);
            }
            return(hougeki);
        }
コード例 #26
0
 public int __AddData__(int damage, BattleHitStatus hitstate, BattleDamageKinds dmgkind)
 {
     _attackers.Add(null);
     return(_AddData(damage, hitstate, dmgkind));
 }
コード例 #27
0
        private Hougeki <BattleAtackKinds_Night> getHougekiData(int atk_idx, Mem_ship attacker)
        {
            if (attacker.Get_DamageState() == DamageState.Taiha || !attacker.IsFight())
            {
                return(null);
            }
            Func <int, bool> func = null;
            BattleBaseData   battleBaseData;
            Dictionary <int, BattleShipSubInfo> dictionary;
            BattleBaseData battleBaseData2;
            Dictionary <int, BattleShipSubInfo> dictionary2;
            List <int> list;
            double     cliticalKeisu;

            if (attacker.IsEnemy())
            {
                battleBaseData  = this.E_Data;
                dictionary      = this.E_SubInfo;
                battleBaseData2 = this.F_Data;
                dictionary2     = this.F_SubInfo;
                func            = new Func <int, bool>(base.RecoveryShip);
                list            = this.fSerchLightIdxs;
                double num  = this.eValance1;
                double num2 = this.eValance2;
                cliticalKeisu = this.eValance3;
            }
            else
            {
                battleBaseData  = this.F_Data;
                dictionary      = this.F_SubInfo;
                battleBaseData2 = this.E_Data;
                dictionary2     = this.E_SubInfo;
                list            = this.eSerchLightIdxs;
                double num  = this.fValance1;
                double num2 = this.fValance2;
                cliticalKeisu = this.fValance3;
            }
            if (!this.isAttackerFromTargetKind(dictionary.get_Item(attacker.Rid)))
            {
                return(null);
            }
            Hougeki <BattleAtackKinds_Night> hougeki             = new Hougeki <BattleAtackKinds_Night>();
            KeyValuePair <int, int>          subMarineAtackKeisu = this.getSubMarineAtackKeisu(battleBaseData2.ShipData, attacker, battleBaseData.SlotData.get_Item(atk_idx), true);
            bool flag = false;

            if (subMarineAtackKeisu.get_Key() != 0)
            {
                hougeki.SpType = ((subMarineAtackKeisu.get_Key() != 1) ? BattleAtackKinds_Night.AirAttack : BattleAtackKinds_Night.Bakurai);
                hougeki.Slot_List.Add(0);
                flag = true;
            }
            BattleDamageKinds battleDamageKinds = BattleDamageKinds.Normal;
            Mem_ship          atackTarget       = base.getAtackTarget(attacker, battleBaseData2.ShipData, false, flag, true, ref battleDamageKinds);

            if (atackTarget == null)
            {
                return(null);
            }
            int deckIdx = dictionary2.get_Item(atackTarget.Rid).DeckIdx;

            if (atackTarget.Nowhp > 1 && list.get_Count() > 0 && list.get_Item(0) == deckIdx)
            {
                battleDamageKinds = BattleDamageKinds.Normal;
                atackTarget       = base.getAtackTarget(attacker, battleBaseData2.ShipData, false, flag, true, ref battleDamageKinds);
                deckIdx           = dictionary2.get_Item(atackTarget.Rid).DeckIdx;
            }
            if (!flag)
            {
                this.setSlotData(atk_idx, attacker, battleBaseData.SlotData.get_Item(atk_idx), atackTarget, hougeki);
            }
            hougeki.Attacker = attacker.Rid;
            int num3 = (hougeki.SpType != BattleAtackKinds_Night.Renzoku) ? 1 : 2;
            HashSet <BattleAtackKinds_Night> hashSet = new HashSet <BattleAtackKinds_Night>();

            hashSet.Add(BattleAtackKinds_Night.Rai_Rai);
            hashSet.Add(BattleAtackKinds_Night.Renzoku);
            hashSet.Add(BattleAtackKinds_Night.Syu_Rai);
            hashSet.Add(BattleAtackKinds_Night.Syu_Syu_Fuku);
            hashSet.Add(BattleAtackKinds_Night.Syu_Syu_Syu);
            HashSet <BattleAtackKinds_Night> hashSet2 = hashSet;

            for (int i = 0; i < num3; i++)
            {
                int soukou = atackTarget.Soukou;
                List <Mst_slotitem> list2 = battleBaseData.SlotData.get_Item(atk_idx);
                int atkPow;
                int hitProb;
                FormationDatas.GetFormationKinds battleState;
                if (flag)
                {
                    atkPow      = this.getSubmarineAttackValue(subMarineAtackKeisu, attacker, list2, battleBaseData.SlotLevel.get_Item(atk_idx));
                    hitProb     = base.getSubmarineHitProb(attacker, battleBaseData.SlotData.get_Item(atk_idx), battleBaseData.SlotLevel.get_Item(atk_idx));
                    battleState = FormationDatas.GetFormationKinds.SUBMARINE;
                }
                else
                {
                    atkPow      = this.getMidnightAttackValue(hougeki.SpType, attacker, list2, atackTarget);
                    hitProb     = this.getMidnightHitProb(hougeki.SpType, attacker, list2, list);
                    battleState = FormationDatas.GetFormationKinds.MIDNIGHT;
                }
                int             battleAvo_Midnight = base.getBattleAvo_Midnight(battleState, atackTarget, list.Contains(deckIdx));
                BattleHitStatus battleHitStatus    = this.getHitStatus(hitProb, battleAvo_Midnight, attacker, atackTarget, cliticalKeisu, false);
                if (battleHitStatus == BattleHitStatus.Miss && hashSet2.Contains(hougeki.SpType))
                {
                    battleHitStatus = BattleHitStatus.Normal;
                }
                hougeki.Target.Add(atackTarget.Rid);
                int num4 = this.setDamageValue(battleHitStatus, atkPow, soukou, attacker, atackTarget, battleBaseData2.LostFlag);
                hougeki.Damage.Add(num4);
                hougeki.Clitical.Add(battleHitStatus);
                hougeki.DamageKind.Add(battleDamageKinds);
            }
            if (func != null)
            {
                bool flag2 = func.Invoke(deckIdx);
            }
            return(hougeki);
        }
コード例 #28
0
        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);
        }
コード例 #29
0
 public int __AddData__(ShipModel_BattleAll attacker, int damage, BattleHitStatus hitstate, BattleDamageKinds dmgkind)
 {
     this._attackers.Add(attacker.__CreateAttacker__());
     return(base._AddData(damage, hitstate, dmgkind));
 }
コード例 #30
0
        private Support_HouRai getHougekiData()
        {
            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].IsSubmarine() ? true : false);
            });
            if (list.Count() == 0)
            {
                return(null);
            }
            Support_HouRai support_HouRai = new Support_HouRai();

            for (int i = 0; i < F_Data.ShipData.Count; i++)
            {
                Mem_ship             mem_ship = f_Data.ShipData[i];
                List <Mst_slotitem>  list2    = f_Data.SlotData[i];
                BattleAtackKinds_Day kind     = BattleAtackKinds_Day.Normal;
                if (IsAirAttackGroup(mem_ship, list2, BattleCommand.None))
                {
                    if (!CanAirAtack_DamageState(mem_ship) || !CanAirAttack(mem_ship, list2))
                    {
                        continue;
                    }
                    kind = BattleAtackKinds_Day.AirAttack;
                }
                else if (!isValidHougeki(mem_ship))
                {
                    continue;
                }
                BattleDamageKinds dKind       = BattleDamageKinds.Normal;
                Mem_ship          atackTarget = getAtackTarget(mem_ship, list, overKill: true, subMarineFlag: false, rescueFlag: true, ref dKind);
                if (atackTarget != null)
                {
                    int             deckIdx         = E_SubInfo[atackTarget.Rid].DeckIdx;
                    int             hougAttackValue = getHougAttackValue(kind, mem_ship, list2, atackTarget, 0);
                    int             soukou          = atackTarget.Soukou;
                    int             hougHitProb     = getHougHitProb(kind, mem_ship, list2, 0);
                    int             battleAvo       = getBattleAvo(FormationDatas.GetFormationKinds.HOUGEKI, atackTarget);
                    BattleHitStatus hitStatus       = getHitStatus(hougHitProb, battleAvo, mem_ship, atackTarget, valance3, airAttack: false);
                    int             num             = setDamageValue(hitStatus, hougAttackValue, soukou, mem_ship, atackTarget, e_Data.LostFlag);
                    support_HouRai.Damage[deckIdx] += num;
                    if (hitStatus != 0 && support_HouRai.Clitical[deckIdx] != BattleHitStatus.Clitical)
                    {
                        support_HouRai.Clitical[deckIdx] = hitStatus;
                    }
                    if (support_HouRai.DamageType[deckIdx] != BattleDamageKinds.Rescue)
                    {
                        support_HouRai.DamageType[deckIdx] = dKind;
                    }
                }
            }
            return(support_HouRai);
        }