private IEnumerator PlaySkill(AffectEffectProperty affectEffectProperty, List <CharacterStateControl> targetList)
 {
     SubStatePlayHitAnimationAction.Data data = new SubStatePlayHitAnimationAction.Data();
     foreach (CharacterStateControl characterStateControl in targetList)
     {
         if (!characterStateControl.isDied)
         {
             SkillResults skillResults;
             if (AffectEffectProperty.IsDamage(affectEffectProperty.type))
             {
                 skillResults = SkillStatus.GetStageDamageSkillResult(affectEffectProperty, null, characterStateControl);
                 if (!skillResults.onMissHit)
                 {
                     if (characterStateControl.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountBarrier))
                     {
                         this.sufferStatePropertyCounter.AddCountDictionary(SufferStateProperty.SufferType.CountBarrier, characterStateControl, null);
                     }
                     else if (characterStateControl.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountEvasion))
                     {
                         this.sufferStatePropertyCounter.AddCountDictionary(SufferStateProperty.SufferType.CountEvasion, characterStateControl, null);
                     }
                     else if (skillResults.isGuard)
                     {
                         this.sufferStatePropertyCounter.AddCountDictionary(SufferStateProperty.SufferType.CountGuard, characterStateControl, skillResults.damageRateResult.dataList.Select((SufferStateProperty.Data item) => item.id).ToArray <string>());
                     }
                 }
             }
             else if (Tolerance.OnInfluenceToleranceAffectEffect(affectEffectProperty.type))
             {
                 skillResults = base.stateManager.skillDetails.GetToleranceSkillResult(affectEffectProperty, null, characterStateControl);
                 if (!skillResults.onMissHit)
                 {
                     if (characterStateControl.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountBarrier))
                     {
                         this.sufferStatePropertyCounter.AddCountDictionary(SufferStateProperty.SufferType.CountBarrier, characterStateControl, null);
                     }
                     else if (characterStateControl.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountEvasion))
                     {
                         this.sufferStatePropertyCounter.AddCountDictionary(SufferStateProperty.SufferType.CountEvasion, characterStateControl, null);
                     }
                 }
             }
             else
             {
                 skillResults = base.stateManager.skillDetails.GetOtherSkillResult(affectEffectProperty, null, characterStateControl);
             }
             data.AddHitIcon(characterStateControl, skillResults.hitIconAffectEffect, skillResults.attackPower, skillResults.onWeakHit, skillResults.onMissHit, skillResults.onCriticalHit, false, false, false, skillResults.extraEffectType);
         }
     }
     data.time = base.stateManager.stateProperty.multiHitIntervalWaitSecond;
     data.affectEffectProperty = affectEffectProperty;
     data.cameraKey            = this.cameraKey;
     this.subStatePlayHitAnimationAction.Init(data);
     base.SetState(this.subStatePlayHitAnimationAction.GetType());
     while (base.isWaitState)
     {
         yield return(null);
     }
     yield break;
 }
    private static bool CheckSkillAttribute(AffectEffectProperty skillEffect, bool isPublicAttack, string targetSubType, string targetValue, string targetValue2, string effectTriggerValue)
    {
        if (effectTriggerValue.ToInt32() == 0)
        {
            return(true);
        }
        if (targetSubType.ToInt32() != 9)
        {
            global::Attribute attribute = ServerToBattleUtility.IntToAttribute(effectTriggerValue.ToInt32());
            return(skillEffect.attribute == attribute);
        }
        global::Attribute attribute2 = ServerToBattleUtility.IntToAttribute(targetValue.ToInt32());
        bool flag = skillEffect.attribute == attribute2;

        if (targetValue2 == "0")
        {
            return(flag);
        }
        if (targetValue2 == "1")
        {
            return(flag && isPublicAttack);
        }
        if (targetValue2 == "2")
        {
            return(flag && !isPublicAttack);
        }
        return(flag);
    }
Ejemplo n.º 3
0
 public void AddAffectEffect(AffectEffectProperty addAffectEffect)
 {
     this._addAffectEffect.Add(addAffectEffect);
     this._returnAffectEffect.Clear();
     this._returnAffectEffect.AddRange(this._affectEffect);
     this._returnAffectEffect.AddRange(this._addAffectEffect);
 }
    private static CharacterStateControl[] GetTargets(CharacterStateControl actor, AffectEffectProperty skillEffect)
    {
        List <CharacterStateControl> list = new List <CharacterStateControl>();

        if (actor == null || skillEffect == null)
        {
            return(list.ToArray());
        }
        CharacterStateControl[] skillTargetList = BattleStateManager.current.targetSelect.GetSkillTargetList(actor, skillEffect.target);
        if (skillTargetList.Length == 0)
        {
            return(list.ToArray());
        }
        if (skillEffect.effectNumbers == EffectNumbers.Simple)
        {
            if (skillTargetList.Where((CharacterStateControl item) => item == actor.targetCharacter).Any <CharacterStateControl>())
            {
                list.Add(actor.targetCharacter);
            }
            else
            {
                list.Add(skillTargetList[0]);
            }
        }
        else
        {
            list.AddRange(skillTargetList);
        }
        return(list.ToArray());
    }
 private IEnumerator PlaySkill(SkillStatus status, List <CharacterStateControl> targetList)
 {
     foreach (CharacterStateControl characterStateControl in this.GetTotalCharacters())
     {
         characterStateControl.OnChipTrigger(EffectStatusBase.EffectTriggerType.DamagePossibility);
     }
     foreach (AffectEffectProperty affectEffectProperty in status.affectEffect)
     {
         int hitNumber = 1;
         if (AffectEffectProperty.IsDamage(affectEffectProperty.type))
         {
             hitNumber = affectEffectProperty.hitNumber;
         }
         for (int i = 0; i < hitNumber; i++)
         {
             IEnumerator playSkill = this.PlaySkill(affectEffectProperty, targetList);
             while (playSkill.MoveNext())
             {
                 yield return(null);
             }
         }
     }
     foreach (CharacterStateControl characterStateControl2 in this.GetTotalCharacters())
     {
         characterStateControl2.ClearGutsData();
     }
     this.sufferStatePropertyCounter.UpdateCount(SufferStateProperty.SufferType.CountGuard, null);
     this.sufferStatePropertyCounter.UpdateCount(SufferStateProperty.SufferType.CountBarrier, null);
     this.sufferStatePropertyCounter.UpdateCount(SufferStateProperty.SufferType.CountEvasion, null);
     yield break;
 }
Ejemplo n.º 6
0
    private int HpSettingPercentage(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        int num    = Mathf.FloorToInt((float)target.extraMaxHp * affectEffectProperty.revivalPercent);
        int result = num - target.hp;

        target.hp = num;
        return(result);
    }
Ejemplo n.º 7
0
    public SkillResults GetToleranceSkillResult(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter)
    {
        SkillResults skillResults = new SkillResults();

        skillResults.useAffectEffectProperty = affectEffectProperty;
        skillResults.hitIconAffectEffect     = affectEffectProperty.type;
        skillResults.attackCharacter         = attackerCharacter;
        skillResults.targetCharacter         = targetCharacter;
        if (!affectEffectProperty.OnHit(attackerCharacter, targetCharacter))
        {
            skillResults.onMissHit = true;
            return(skillResults);
        }
        Strength affectEffectStrength = targetCharacter.tolerance.GetAffectEffectStrength(affectEffectProperty.type);

        if (affectEffectStrength == Strength.Invalid)
        {
            skillResults.hitIconAffectEffect = AffectEffect.Invalid;
            skillResults.onWeakHit           = Strength.Invalid;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnBarrier))
        {
            skillResults.hitIconAffectEffect = AffectEffect.TurnBarrier;
            skillResults.onWeakHit           = Strength.None;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountBarrier))
        {
            skillResults.hitIconAffectEffect = AffectEffect.CountBarrier;
            skillResults.onWeakHit           = Strength.None;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnEvasion))
        {
            skillResults.hitIconAffectEffect = AffectEffect.TurnEvasion;
            skillResults.onWeakHit           = Strength.None;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountEvasion))
        {
            skillResults.hitIconAffectEffect = AffectEffect.CountEvasion;
            skillResults.onWeakHit           = Strength.None;
            skillResults.onMissHit           = false;
        }
        else
        {
            skillResults.hitIconAffectEffect = affectEffectProperty.type;
            skillResults.onWeakHit           = Strength.None;
            skillResults.onMissHit           = false;
            if (affectEffectProperty.type == AffectEffect.Stun)
            {
                targetCharacter.currentSufferState.RemoveSufferState(SufferStateProperty.SufferType.Escape, false);
            }
            this.AddSufferStateOthers(targetCharacter, affectEffectProperty);
        }
        return(skillResults);
    }
Ejemplo n.º 8
0
    private int HpSettingFixable(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        int num = affectEffectProperty.revivalPower;

        num = Mathf.Min(num, target.extraMaxHp);
        int result = num - target.hp;

        target.hp = num;
        return(result);
    }
Ejemplo n.º 9
0
    private HitEffectParams[] GetHitEffectParams()
    {
        List <HitEffectParams> list = new List <HitEffectParams>();

        string[] array = new string[]
        {
            "EFF_COM_HIT_NORMAL",
            "EFF_COM_HIT_WEAK",
            "EFF_COM_HIT_CRITICAL",
            "EFF_COM_S_HEAL",
            "EFF_COM_HIT_WEAK"
        };
        for (int i = 0; i < this.data.hitIconList.Count; i++)
        {
            if (this.data.hitIconList[i].affectEffect == AffectEffect.Invalid)
            {
                HitEffectParams item = BattleEffectManager.Instance.GetEffect("EFF_COM_HIT_WEAK") as HitEffectParams;
                list.Add(item);
            }
            else if (AffectEffectProperty.IsDamage(this.data.hitIconList[i].affectEffect))
            {
                if (this.data.hitIconList[i].isMiss)
                {
                    HitEffectParams item2 = BattleEffectManager.Instance.GetEffect(array[0]) as HitEffectParams;
                    list.Add(item2);
                }
                else if (!base.stateManager.onEnableTutorial && this.data.hitIconList[i].extraEffectType == ExtraEffectType.Up)
                {
                    HitEffectParams item3 = BattleEffectManager.Instance.GetEffect(AffectEffect.gimmickSpecialAttackUp.ToString()) as HitEffectParams;
                    list.Add(item3);
                }
                else if (!base.stateManager.onEnableTutorial && this.data.hitIconList[i].extraEffectType == ExtraEffectType.Down)
                {
                    HitEffectParams item4 = BattleEffectManager.Instance.GetEffect(AffectEffect.gimmickSpecialAttackDown.ToString()) as HitEffectParams;
                    list.Add(item4);
                }
                else
                {
                    HitEffectParams item5 = BattleEffectManager.Instance.GetEffect(array[(int)this.data.hitIconList[i].strength]) as HitEffectParams;
                    list.Add(item5);
                }
            }
            else
            {
                HitEffectParams item6 = BattleEffectManager.Instance.GetEffect(this.data.hitIconList[i].affectEffect.ToString()) as HitEffectParams;
                list.Add(item6);
            }
        }
        return(list.ToArray());
    }
Ejemplo n.º 10
0
    private void ApUp(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        int num;

        if (affectEffectProperty.powerType == PowerType.Fixable)
        {
            num = affectEffectProperty.upPower;
        }
        else
        {
            num = Mathf.FloorToInt((float)target.maxAp * affectEffectProperty.upPercent);
        }
        target.ap += num;
    }
Ejemplo n.º 11
0
    private void ShowAttributeTolerance(HitIcon.Data data, AffectEffectProperty affectEffectProperty, bool up)
    {
        int    num   = 0;
        float  num2  = 0f;
        string text  = "HitIconAttributeToleranceUp";
        string text2 = "HitIconStateToleranceUp";
        string text3 = "HitIconAttributeToleranceDown";
        string text4 = "HitIconStateToleranceDown";

        for (int i = 0; i < affectEffectProperty.toleranceValue.Length; i++)
        {
            if (affectEffectProperty.toleranceValue[i] > 0f)
            {
                num  = i;
                num2 = affectEffectProperty.toleranceValue[i];
                break;
            }
        }
        if (num2 == 100f)
        {
            if (num <= 6)
            {
                data.middleMesh.text = this.GetString("HitIconAttributeAbsorption");
            }
        }
        else if (num2 == 101f)
        {
            if (num <= 6)
            {
                data.middleMesh.text = this.GetString("HitIconInvalidAttribute");
            }
            else if (num > 6 && num < 100)
            {
                data.middleMesh.text = this.GetString("HitIconInvalidState");
            }
        }
        else if (num <= 6)
        {
            data.middleMesh.text = this.GetString((!up) ? text3 : text);
        }
        else if (num > 6 && num < 100)
        {
            data.middleMesh.text = this.GetString((!up) ? text4 : text2);
        }
        this.ChangeFontTexture((!up) ? this.standardEffectFontTexture.blue : this.standardEffectFontTexture.red, new TextMeshPro[]
        {
            data.middleMesh
        });
    }
Ejemplo n.º 12
0
    private int HpRevival(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        int num;

        if (affectEffectProperty.powerType == PowerType.Fixable)
        {
            num = affectEffectProperty.revivalPower;
        }
        else
        {
            num = Mathf.FloorToInt((float)target.extraMaxHp * affectEffectProperty.revivalPercent);
        }
        target.hp += num;
        return(num);
    }
Ejemplo n.º 13
0
 public int GetHate()
 {
     if (AffectEffectProperty.IsDamage(this.type))
     {
         return(20);
     }
     if (Tolerance.OnInfluenceToleranceAffectEffect(this.type))
     {
         return(10);
     }
     if (this.type == AffectEffect.HpRevival || this.type == AffectEffect.Regenerate)
     {
         return(15);
     }
     return(5);
 }
    public SufferStateProperty.DamageRateResult GetCaseDamageRate(AffectEffectProperty affectEffectProperty, CharacterStateControl characterStateControl)
    {
        SufferStateProperty.DamageRateResult damageRateResult = new SufferStateProperty.DamageRateResult();
        bool flag = affectEffectProperty.skillId.ToString() == BattleStateManager.PublicAttackSkillId;

        foreach (List <SufferStateProperty.Data> list in this.dataDictionary.Values)
        {
            foreach (SufferStateProperty.Data data in list)
            {
                if (data.isActive)
                {
                    if (data.recieveSkillType == 0 || (data.recieveSkillType == 1 && flag) || (data.recieveSkillType == 2 && !flag))
                    {
                        bool    flag2 = data.recieveSkillTargetSubType == 1;
                        bool    flag3 = data.recieveSkillTargetSubType == 2;
                        float[] array = new float[]
                        {
                            data.damagePercent,
                            data.damageRateForPhantomStudents,
                            data.damageRateForHeatHaze,
                            data.damageRateForGlacier,
                            data.damageRateForElectromagnetic,
                            data.damageRateForEarth,
                            data.damageRateForShaftOfLight,
                            data.damageRateForAbyss
                        };
                        int num = 0;
                        if (flag2)
                        {
                            num = (int)(affectEffectProperty.attribute + 1);
                        }
                        else if (flag3)
                        {
                            num = ((!(characterStateControl != null)) ? 0 : characterStateControl.characterDatas.tribe.ToInt32());
                        }
                        damageRateResult.damageRate += ((!affectEffectProperty.canUseAttribute) ? 0f : array[num]);
                        if (array[num] != 0f)
                        {
                            damageRateResult.dataList.Add(data);
                        }
                    }
                }
            }
        }
        return(damageRateResult);
    }
Ejemplo n.º 15
0
    public SkillResults GetDestructTargetSkillResult(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter)
    {
        SkillResults skillResults = new SkillResults();

        skillResults.useAffectEffectProperty = affectEffectProperty;
        skillResults.hitIconAffectEffect     = affectEffectProperty.type;
        skillResults.attackCharacter         = attackerCharacter;
        skillResults.targetCharacter         = targetCharacter;
        if (!affectEffectProperty.OnHit(attackerCharacter, targetCharacter))
        {
            skillResults.onMissHit = true;
            return(skillResults);
        }
        targetCharacter.OnHitDestruct();
        skillResults.onMissHit = false;
        return(skillResults);
    }
Ejemplo n.º 16
0
    private void ClearTolerance(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        Dictionary <SufferStateProperty.SufferType, float> dictionary = null;

        if (affectEffectProperty.toleranceClearType == 0)
        {
            dictionary = new Dictionary <SufferStateProperty.SufferType, float>
            {
                {
                    SufferStateProperty.SufferType.ChangeToleranceUp,
                    affectEffectProperty.clearPoisonIncidenceRate
                },
                {
                    SufferStateProperty.SufferType.ChangeToleranceDown,
                    affectEffectProperty.clearPoisonIncidenceRate
                }
            };
        }
        else if (affectEffectProperty.toleranceClearType == 73)
        {
            dictionary = new Dictionary <SufferStateProperty.SufferType, float>
            {
                {
                    SufferStateProperty.SufferType.ChangeToleranceUp,
                    affectEffectProperty.clearPoisonIncidenceRate
                }
            };
        }
        else if (affectEffectProperty.toleranceClearType == 74)
        {
            dictionary = new Dictionary <SufferStateProperty.SufferType, float>
            {
                {
                    SufferStateProperty.SufferType.ChangeToleranceDown,
                    affectEffectProperty.clearPoisonIncidenceRate
                }
            };
        }
        foreach (KeyValuePair <SufferStateProperty.SufferType, float> keyValuePair in dictionary)
        {
            if (RandomExtension.Switch(keyValuePair.Value) && target.currentSufferState.FindSufferState(keyValuePair.Key))
            {
                target.currentSufferState.RemoveSufferState(keyValuePair.Key, false);
            }
        }
    }
 private void GetSkillDetailViewData(out GameWebAPI.RespDataMA_GetSkillDetailM.SkillDetailM dest, List <GameWebAPI.RespDataMA_GetSkillDetailM.SkillDetailM> source)
 {
     dest = null;
     for (int i = 0; i < source.Count; i++)
     {
         if (dest == null)
         {
             dest = source[i];
         }
         AffectEffect affectEffect = ServerToBattleUtility.IntToAffectEffect(source[i].effectType);
         if (AffectEffectProperty.IsDamage(affectEffect))
         {
             dest = source[i];
             break;
         }
     }
 }
Ejemplo n.º 18
0
    public SkillResults GetApDrainSkillResult(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter)
    {
        SkillResults skillResults = new SkillResults();

        skillResults.useAffectEffectProperty = affectEffectProperty;
        skillResults.hitIconAffectEffect     = affectEffectProperty.type;
        skillResults.attackCharacter         = attackerCharacter;
        skillResults.targetCharacter         = targetCharacter;
        if (!affectEffectProperty.OnHit(attackerCharacter, targetCharacter))
        {
            skillResults.onMissHit = true;
            return(skillResults);
        }
        if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnBarrier))
        {
            skillResults.hitIconAffectEffect = AffectEffect.TurnBarrier;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountBarrier))
        {
            skillResults.hitIconAffectEffect = AffectEffect.CountBarrier;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnEvasion))
        {
            skillResults.hitIconAffectEffect = AffectEffect.TurnEvasion;
            skillResults.onMissHit           = false;
        }
        else if (targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountEvasion))
        {
            skillResults.hitIconAffectEffect = AffectEffect.CountEvasion;
            skillResults.onMissHit           = false;
        }
        else
        {
            skillResults.hitIconAffectEffect = AffectEffect.ApDown;
            skillResults.onMissHit           = false;
            int ap = targetCharacter.ap;
            targetCharacter.ap      -= affectEffectProperty.apDrainPower;
            skillResults.attackPower = ap - targetCharacter.ap;
        }
        return(skillResults);
    }
Ejemplo n.º 19
0
    public void InitializeSkillExtraStatus()
    {
        List <ExtraEffectStatus> extraEffectStatus = BattleStateManager.current.battleStateData.extraEffectStatus;
        List <ExtraEffectStatus> invocationList    = ExtraEffectStatus.GetInvocationList(extraEffectStatus, EffectStatusBase.EffectTriggerType.Usually);

        if (this.skillStatus.Length > 1)
        {
            AffectEffectProperty affectEffectFirst = this.skillStatus[1].GetAffectEffectFirst();
            if (affectEffectFirst != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst.type))
                {
                    this.m_extraDeathblowSkillPower = ExtraEffectStatus.GetSkillPowerCorrectionValue(invocationList, affectEffectFirst, this);
                }
                this.m_extraDeathblowSkillHitRate = ExtraEffectStatus.GetSkillHitRateCorrectionValue(invocationList, affectEffectFirst, this);
            }
        }
        if (this.skillStatus.Length > 2)
        {
            AffectEffectProperty affectEffectFirst2 = this.skillStatus[2].GetAffectEffectFirst();
            if (affectEffectFirst2 != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst2.type))
                {
                    this.m_extraInheritanceSkillPower = ExtraEffectStatus.GetSkillPowerCorrectionValue(invocationList, affectEffectFirst2, this);
                }
                this.m_extraInheritanceSkillHitRate = ExtraEffectStatus.GetSkillHitRateCorrectionValue(invocationList, affectEffectFirst2, this);
            }
        }
        if (this.skillStatus.Length > 3)
        {
            AffectEffectProperty affectEffectFirst3 = this.skillStatus[3].GetAffectEffectFirst();
            if (affectEffectFirst3 != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst3.type))
                {
                    this.m_extraInheritanceSkillPower2 = ExtraEffectStatus.GetSkillPowerCorrectionValue(invocationList, affectEffectFirst3, this);
                }
                this.m_extraInheritanceSkillHitRate2 = ExtraEffectStatus.GetSkillHitRateCorrectionValue(invocationList, affectEffectFirst3, this);
            }
        }
    }
Ejemplo n.º 20
0
    private void SufferStatusClear(CharacterStateControl target, AffectEffectProperty affectEffectProperty)
    {
        Dictionary <SufferStateProperty.SufferType, float> dictionary = new Dictionary <SufferStateProperty.SufferType, float>
        {
            {
                SufferStateProperty.SufferType.Poison,
                affectEffectProperty.clearPoisonIncidenceRate
            },
            {
                SufferStateProperty.SufferType.Confusion,
                affectEffectProperty.clearConfusionIncidenceRate
            },
            {
                SufferStateProperty.SufferType.Paralysis,
                affectEffectProperty.clearParalysisIncidenceRate
            },
            {
                SufferStateProperty.SufferType.Sleep,
                affectEffectProperty.clearSleepIncidenceRate
            },
            {
                SufferStateProperty.SufferType.Stun,
                affectEffectProperty.clearStunIncidenceRate
            },
            {
                SufferStateProperty.SufferType.SkillLock,
                affectEffectProperty.clearSkillLockIncidenceRate
            }
        };

        foreach (KeyValuePair <SufferStateProperty.SufferType, float> keyValuePair in dictionary)
        {
            if (RandomExtension.Switch(keyValuePair.Value) && target.currentSufferState.FindSufferState(keyValuePair.Key))
            {
                target.currentSufferState.RemoveSufferState(keyValuePair.Key, false);
            }
        }
    }
Ejemplo n.º 21
0
    private static SufferStateProperty.DamageRateResult GetReduceDamageRate(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter)
    {
        HaveSufferState currentSufferState = targetCharacter.currentSufferState;

        SufferStateProperty.DamageRateResult damageRateResult = new SufferStateProperty.DamageRateResult();
        damageRateResult.damageRate = 1f;
        if (affectEffectProperty.powerType == PowerType.Percentage && currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountGuard))
        {
            SufferStateProperty sufferStateProperty             = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.CountGuard);
            SufferStateProperty.DamageRateResult caseDamageRate = sufferStateProperty.GetCaseDamageRate(affectEffectProperty, attackerCharacter);
            if (BattleStateManager.current.battleStateData.IsChipSkill())
            {
                CharacterStateControl autoCounterCharacter = BattleStateManager.current.battleStateData.GetAutoCounterCharacter();
                if (autoCounterCharacter.chipSkillId == SkillStatus.COUNTER_ATTACK_SKILL_ID)
                {
                    caseDamageRate.damageRate = 0f;
                }
            }
            float damageRate = Mathf.Max(1f - caseDamageRate.damageRate, 0f);
            damageRateResult.damageRate = damageRate;
            damageRateResult.dataList.AddRange(caseDamageRate.dataList);
        }
        return(damageRateResult);
    }
    private bool checkUseSkill(SkillStatus status, CharacterStateControl currentCharacter, CharacterStateControl tg)
    {
        bool isProtectEnableSkill = false;

        foreach (AffectEffectProperty affectEffectProperty in status.affectEffect)
        {
            if (AffectEffectProperty.IsDamage(affectEffectProperty.type))
            {
                isProtectEnableSkill = true;
                break;
            }
        }
        List <SubStateSkillDetailsFunction.TargetData> list = new List <SubStateSkillDetailsFunction.TargetData>();
        int num = 0;

        for (int i = 0; i < status.affectEffect.Count; i++)
        {
            AffectEffectProperty affectEffectProperty2 = status.affectEffect[i];
            if (AffectEffectProperty.IsDamage(affectEffectProperty2.type))
            {
                num += affectEffectProperty2.hitNumber;
            }
        }
        bool flag = true;
        AffectEffectProperty affectEffectProperty3 = null;
        bool         flag2        = false;
        bool         result       = false;
        bool         flag3        = false;
        EffectTarget effectTarget = EffectTarget.Enemy;

        for (int j = 0; j < status.affectEffect.Count; j++)
        {
            DkLog.W("↓↓↓↓↓↓", false);
            AffectEffectProperty affectEffectProperty4 = status.affectEffect[j];
            if (j == 0)
            {
                effectTarget = affectEffectProperty4.target;
            }
            if (affectEffectProperty3 != null && affectEffectProperty3.target != affectEffectProperty4.target)
            {
                CharacterStateControl[] skillTargetList = base.stateManager.targetSelect.GetSkillTargetList(currentCharacter, affectEffectProperty4.target);
                if (skillTargetList != null && skillTargetList.Length > 0)
                {
                    currentCharacter.targetCharacter = skillTargetList[0];
                }
                if (effectTarget == affectEffectProperty4.target)
                {
                    currentCharacter.targetCharacter = tg;
                }
            }
            list = this.CreateTargetData(list, currentCharacter, affectEffectProperty4, isProtectEnableSkill, ref flag);
            affectEffectProperty3 = affectEffectProperty4;
            if (this.SwitchAffectEffect(affectEffectProperty4, currentCharacter, tg, list, ref flag3, ref flag2))
            {
                DkLog.W(string.Format("targetDataList {0} : currentSuffer.type {1} : tg {2} : skip {3}", new object[]
                {
                    list.Count,
                    affectEffectProperty4.type,
                    string.Empty,
                    flag2
                }), false);
                if (!flag2)
                {
                    result = true;
                    DkLog.W(string.Format("targetDataList.Count {0}", list.Count), false);
                }
            }
        }
        return(result);
    }
Ejemplo n.º 23
0
    public void ApplyShowHitIcon(AffectEffect affect, int onDamage, Strength onWeak, bool onMiss, bool onCrithical, bool isDrain, bool isCounter, bool isReflection, ExtraEffectType extraEffectType = ExtraEffectType.Non, AffectEffectProperty affectEffectProperty = null)
    {
        this.ApplyHitIconPlayAnimation(onWeak);
        bool flag = false;

        HitIcon.Data data = (!flag) ? this.standard : this.gimmick;
        this.standard.gameObject.SetActive(!flag);
        this.gimmick.gameObject.SetActive(flag);
        base.transform.localScale = Vector3.one;
        data.numMesh.text         = string.Empty;
        data.topMesh.text         = string.Empty;
        data.middleMesh.text      = string.Empty;
        data.bottomMesh.text      = string.Empty;
        this.upSprite.gameObject.SetActive(false);
        this.downSprite.gameObject.SetActive(false);
        if (onMiss)
        {
            this.ShowMiss(data);
        }
        else
        {
            switch (affect)
            {
            case AffectEffect.Damage:
            case AffectEffect.ReferenceTargetHpRate:
            case AffectEffect.HpBorderlineDamage:
            case AffectEffect.HpBorderlineSpDamage:
            case AffectEffect.DefenseThroughDamage:
            case AffectEffect.SpDefenseThroughDamage:
            case AffectEffect.RefHpRateNonAttribute:
                this.ShowDamage(data, onDamage, onWeak, onCrithical, isCounter, isReflection, extraEffectType);
                return;

            case AffectEffect.AttackUp:
                this.ShowAttackUp(data);
                return;

            case AffectEffect.AttackDown:
                this.ShowAttackDown(data);
                return;

            case AffectEffect.DefenceUp:
                this.ShowDefenceUp(data);
                return;

            case AffectEffect.DefenceDown:
                this.ShowDefenceDown(data);
                return;

            case AffectEffect.SpAttackUp:
                this.ShowSpAttackUp(data);
                return;

            case AffectEffect.SpAttackDown:
                this.ShowSpAttackDown(data);
                return;

            case AffectEffect.SpDefenceUp:
                this.ShowSpDefenceUp(data);
                return;

            case AffectEffect.SpDefenceDown:
                this.ShowSpDefenceDown(data);
                return;

            case AffectEffect.SpeedUp:
                this.ShowSpeedUp(data);
                return;

            case AffectEffect.SpeedDown:
                this.ShowSpeedDown(data);
                return;

            case AffectEffect.CorrectionUpReset:
                this.ShowCorrectionUpReset(data);
                return;

            case AffectEffect.CorrectionDownReset:
                this.ShowCorrectionDownReset(data);
                return;

            case AffectEffect.HpRevival:
                this.ShowHpRevival(data, onDamage, isDrain);
                return;

            case AffectEffect.Counter:
                this.ShowCounter(data, onDamage);
                return;

            case AffectEffect.Reflection:
                this.ShowReflection(data, onDamage);
                return;

            case AffectEffect.Protect:
                this.ShowProtect(data);
                return;

            case AffectEffect.PowerCharge:
                this.ShowPowerCharge(data);
                return;

            case AffectEffect.Destruct:
                this.ShowDestruct(data);
                return;

            case AffectEffect.Paralysis:
                this.ShowParalysis(data);
                return;

            case AffectEffect.Poison:
                this.ShowPoison(data, onDamage);
                return;

            case AffectEffect.Sleep:
                this.ShowSleep(data);
                return;

            case AffectEffect.SkillLock:
                this.ShowSkillLock(data);
                return;

            case AffectEffect.HitRateUp:
                this.ShowHitRateUp(data);
                return;

            case AffectEffect.HitRateDown:
                this.ShowHitRateDown(data);
                return;

            case AffectEffect.InstantDeath:
                this.ShowInstantDeath(data);
                return;

            case AffectEffect.Confusion:
                this.ShowConfusion(data);
                return;

            case AffectEffect.Stun:
                this.ShowStun(data);
                return;

            case AffectEffect.SufferStatusClear:
                this.ShowSufferStatusClear(data);
                return;

            case AffectEffect.SatisfactionRateUp:
                this.ShowSatisfactionRateUp(data);
                return;

            case AffectEffect.SatisfactionRateDown:
                this.ShowSatisfactionRateDown(data);
                return;

            case AffectEffect.ApRevival:
                this.ShowApRevival(data);
                return;

            case AffectEffect.ApUp:
                this.ShowApUp(data);
                return;

            case AffectEffect.ApDown:
                this.ShowApDown(data);
                return;

            case AffectEffect.ApConsumptionUp:
                this.ShowApConsumptionUp(data);
                return;

            case AffectEffect.ApConsumptionDown:
                this.ShowApConsumptionDown(data);
                return;

            case AffectEffect.TurnBarrier:
                this.ShowTurnBarrier(data);
                return;

            case AffectEffect.CountBarrier:
                this.ShowCountBarrier(data);
                return;

            case AffectEffect.Invalid:
                this.ShowInvalid(data);
                return;

            case AffectEffect.Recommand:
                this.ShowRecommand(data);
                return;

            case AffectEffect.DamageRateUp:
                this.ShowDamageRateUp(data);
                return;

            case AffectEffect.DamageRateDown:
                this.ShowDamageRateDown(data);
                return;

            case AffectEffect.Regenerate:
                this.ShowRegenerate(data, onDamage);
                return;

            case AffectEffect.TurnEvasion:
                this.ShowTurnEvasion(data);
                return;

            case AffectEffect.CountEvasion:
                this.ShowCountEvasion(data);
                return;

            case AffectEffect.Escape:
                this.ShowEscape(data);
                return;

            case AffectEffect.ChangeToleranceUp:
                this.ShowAttributeTolerance(data, affectEffectProperty, true);
                return;

            case AffectEffect.ChangeToleranceDown:
                this.ShowAttributeTolerance(data, affectEffectProperty, false);
                return;

            case AffectEffect.ClearTolerance:
                this.ShowClearTolerance(data);
                return;
            }
            NGUITools.SetActiveSelf(base.gameObject, false);
        }
    }
Ejemplo n.º 24
0
    private static List <ExtraEffectStatus> GetTotalExtraEffectStatusList(List <ExtraEffectStatus> extraEffectStatusList, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = new List <ExtraEffectStatus>();

        if (skillPropety != null)
        {
            bool flag = skillPropety.skillId.ToString() == BattleStateManager.PublicAttackSkillId;
            List <ExtraEffectStatus> list2 = new List <ExtraEffectStatus>();
            foreach (ExtraEffectStatus extraEffectStatus in extraEffectStatusList)
            {
                if (extraEffectStatus.TargetValue2 == "0")
                {
                    list2.Add(extraEffectStatus);
                }
                else if (extraEffectStatus.TargetValue2 == "1")
                {
                    if (flag)
                    {
                        list2.Add(extraEffectStatus);
                    }
                }
                else if (extraEffectStatus.TargetValue2 == "2" && !flag)
                {
                    list2.Add(extraEffectStatus);
                }
            }
            ConstValue.ResistanceType skillResistanceType = EffectStatusBase.GetSkillResistanceType(skillPropety);
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, 0, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillAttribute, (int)skillResistanceType, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillId, 0, effectType));
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(list2, targetType, EffectStatusBase.ExtraTargetSubType.SkillId, skillPropety.skillId, effectType));
        }
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, 0, effectType));
        List <ConstValue.ResistanceType> attributeStrengthList = tolerance.GetAttributeStrengthList();

        foreach (ConstValue.ResistanceType targetValue in attributeStrengthList)
        {
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterResistance, (int)targetValue, effectType));
        }
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterTribe, tribe.ToInt32(), effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.MonsterGroup, groupId.ToInt32(), effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, 0, effectType));
        list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.GrowStep, (int)growStep, effectType));
        if (currentSufferState != null)
        {
            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, 0, effectType));
            IEnumerator enumerator3 = Enum.GetValues(typeof(SufferStateProperty.SufferType)).GetEnumerator();
            try
            {
                while (enumerator3.MoveNext())
                {
                    object obj = enumerator3.Current;
                    SufferStateProperty.SufferType sufferType = (SufferStateProperty.SufferType)obj;
                    if (sufferType != SufferStateProperty.SufferType.Null)
                    {
                        if (currentSufferState.FindSufferState(sufferType))
                        {
                            list.AddRange(ExtraEffectStatus.GetExtraEffectStatusList(extraEffectStatusList, targetType, EffectStatusBase.ExtraTargetSubType.Suffer, (int)sufferType, effectType));
                        }
                    }
                }
            }
            finally
            {
                IDisposable disposable;
                if ((disposable = (enumerator3 as IDisposable)) != null)
                {
                    disposable.Dispose();
                }
            }
        }
        list.AddRange(ExtraEffectStatus.GetMonsterIntegrationGroupList(extraEffectStatusList, monsterIntegrationIds, targetType, effectType));
        return(list);
    }
Ejemplo n.º 25
0
    public static float GetSkillHitRateCorrectionValue(List <ExtraEffectStatus> extraEffectStatusList, AffectEffectProperty skillPropety, CharacterStateControl character)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(extraEffectStatusList, character);

        if (list.Count == 0)
        {
            return(skillPropety.hitRate);
        }
        int   num = ServerToBattleUtility.PercentageToPermillion(skillPropety.hitRate);
        float extraEffectCorrectionValue = ExtraEffectStatus.GetExtraEffectCorrectionValue(list, (float)num, character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, skillPropety, character.currentSufferState, ExtraEffectStatus.GetExtraTargetType(character), EffectStatusBase.ExtraEffectType.SkillHit);

        return(ServerToBattleUtility.PermillionToPercentage((int)extraEffectCorrectionValue));
    }
Ejemplo n.º 26
0
    public static int GetSkillPowerCorrectionValue(List <ExtraEffectStatus> extraEffectStatusList, AffectEffectProperty skillPropety, CharacterStateControl character)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(extraEffectStatusList, character);

        if (list.Count == 0)
        {
            return(skillPropety.GetPower(character));
        }
        return((int)ExtraEffectStatus.GetExtraEffectCorrectionValue(list, (float)skillPropety.GetPower(character), character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, skillPropety, character.currentSufferState, ExtraEffectStatus.GetExtraTargetType(character), EffectStatusBase.ExtraEffectType.SkillPower));
    }
Ejemplo n.º 27
0
    public static int GetExtraEffectCorrectionValue(int areaId, List <ExtraEffectStatus> extraEffectStatusList, int baseValue, MonsterData[] chipPlayers, MonsterData[] chipEnemys, MonsterData chipTarget, AffectEffectProperty affectEffectProperty, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(areaId, extraEffectStatusList, chipPlayers, chipEnemys, chipTarget);

        if (list.Count == 0)
        {
            return(baseValue);
        }
        bool flag = chipEnemys.Where((MonsterData item) => item.userMonster.userMonsterId == chipTarget.userMonster.userMonsterId).Any <MonsterData>();

        GameWebAPI.RespDataMA_GetMonsterMG.MonsterM         group = MonsterMaster.GetMonsterMasterByMonsterGroupId(chipTarget.monsterM.monsterGroupId).Group;
        GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster responseMonsterIntegrationGroupMaster = MasterDataMng.Instance().ResponseMonsterIntegrationGroupMaster;
        GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup[] source      = responseMonsterIntegrationGroupMaster.monsterIntegrationGroupM.Where((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterId == chipTarget.monsterM.monsterId).ToArray <GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup>();
        string[] monsterIntegrationIds = source.Select((GameWebAPI.RespDataMA_MonsterIntegrationGroupMaster.MonsterIntegrationGroup item) => item.monsterIntegrationId).ToArray <string>();
        GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM        resistanceMaster     = MonsterResistanceData.GetResistanceMaster(chipTarget.monsterM.resistanceId);
        List <GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM> uniqueResistanceList = MonsterResistanceData.GetUniqueResistanceList(chipTarget.GetResistanceIdList());

        GameWebAPI.RespDataMA_GetMonsterResistanceM.MonsterResistanceM data = MonsterResistanceData.AddResistanceFromMultipleTranceData(resistanceMaster, uniqueResistanceList);
        Tolerance tolerance = ServerToBattleUtility.ResistanceToTolerance(data);
        GrowStep  growStep  = MonsterGrowStepData.ToGrowStep(group.growStep);
        List <ExtraEffectStatus> totalExtraEffectStatusList = ExtraEffectStatus.GetTotalExtraEffectStatusList(list, monsterIntegrationIds, chipTarget.monsterM.monsterGroupId, tolerance, group.tribe, growStep, affectEffectProperty, null, (!flag) ? ExtraEffectStatus.ExtraTargetType.Player : ExtraEffectStatus.ExtraTargetType.Enemy, effectType);

        if (totalExtraEffectStatusList.Count > 0)
        {
            return((int)ExtraEffectStatus.GetCorrectionValue((float)baseValue, totalExtraEffectStatusList));
        }
        return(baseValue);
    }
Ejemplo n.º 28
0
    private static float GetExtraEffectCorrectionValue(List <ExtraEffectStatus> extraEffectStatusList, float baseValue, string[] monsterIntegrationIds, string groupId, Tolerance tolerance, string tribe, GrowStep growStep, AffectEffectProperty skillPropety, HaveSufferState currentSufferState, ExtraEffectStatus.ExtraTargetType targetType, EffectStatusBase.ExtraEffectType effectType)
    {
        List <ExtraEffectStatus> totalExtraEffectStatusList = ExtraEffectStatus.GetTotalExtraEffectStatusList(extraEffectStatusList, monsterIntegrationIds, groupId, tolerance, tribe, growStep, skillPropety, currentSufferState, targetType, effectType);

        if (totalExtraEffectStatusList.Count > 0)
        {
            return(ExtraEffectStatus.GetCorrectionValue(baseValue, totalExtraEffectStatusList));
        }
        return(baseValue);
    }
    private bool SwitchAffectEffect(AffectEffectProperty currentSuffer, CharacterStateControl currentCharacter, CharacterStateControl baseTarget, List <SubStateSkillDetailsFunction.TargetData> targetDataList, ref bool isEnableForPrevious, ref bool skip)
    {
        if (currentSuffer.type != AffectEffect.SkillBranch)
        {
            return(true);
        }
        DkLog.W("条件分岐判定処理開始", false);
        if (currentSuffer.type == AffectEffect.SkillBranch && currentSuffer.skillBranchOverlap == 1)
        {
            isEnableForPrevious = false;
            DkLog.W("重複可能だったのでフラグを下ろす", false);
        }
        DkLog.W("isEnableForPrevious : " + isEnableForPrevious, false);
        if (currentSuffer.type == AffectEffect.SkillBranch && (currentSuffer.skillBranchOverlap != 0 || !isEnableForPrevious))
        {
            bool flag  = false;
            bool flag2 = currentSuffer.skillBranchTargetType == 4 || currentSuffer.skillBranchTargetType == 6;
            this.targetList.Clear();
            switch (currentSuffer.skillBranchTargetType)
            {
            case 1:
                this.targetList.Add(currentCharacter);
                break;

            case 2:
                this.targetList.Add(baseTarget);
                break;

            case 3:
            case 4:
                foreach (CharacterStateControl item in base.battleStateData.playerCharacters)
                {
                    this.targetList.Add(item);
                }
                break;

            case 5:
            case 6:
                foreach (CharacterStateControl item2 in base.battleStateData.enemies)
                {
                    this.targetList.Add(item2);
                }
                break;
            }
            foreach (CharacterStateControl characterStateControl in this.targetList)
            {
                if (!(characterStateControl != null) || !characterStateControl.isDied)
                {
                    CharacterStateControl characterStateControl2 = characterStateControl;
                    SkillBranchType       skillBranchType        = (SkillBranchType)currentSuffer.skillBranchType;
                    switch (skillBranchType)
                    {
                    case SkillBranchType.None:
                        break;

                    case SkillBranchType.SufferStatus:
                        if (characterStateControl2.currentSufferState.FindSufferState((SufferStateProperty.SufferType)currentSuffer.skillBranchTypeValue))
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;

                    case SkillBranchType.HpRateUp:
                    {
                        float num = (float)characterStateControl2.hp / ((float)characterStateControl2.extraMaxHp * 1f) * 100f;
                        if (num >= (float)currentSuffer.skillBranchTypeValue)
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;
                    }

                    case SkillBranchType.HpRateDown:
                    {
                        float num = (float)characterStateControl2.hp / ((float)characterStateControl2.extraMaxHp * 1f) * 100f;
                        if (num * 100f <= (float)currentSuffer.skillBranchTypeValue)
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;
                    }

                    case SkillBranchType.MyHpRateUp:
                    {
                        float num  = (float)characterStateControl2.hp / ((float)characterStateControl2.extraMaxHp * 1f) * 100f;
                        float num2 = (float)currentCharacter.hp / ((float)currentCharacter.extraMaxHp * 1f) * 100f;
                        if (num >= num2)
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;
                    }

                    case SkillBranchType.MyHpRateDown:
                    {
                        float num  = (float)characterStateControl2.hp / ((float)characterStateControl2.extraMaxHp * 1f) * 100f;
                        float num2 = (float)currentCharacter.hp / ((float)currentCharacter.extraMaxHp * 1f) * 100f;
                        if (num <= num2)
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;
                    }

                    case SkillBranchType.BehaviorAlready:
                        if (currentSuffer.skillBranchTypeValue == 0)
                        {
                            if (characterStateControl2.skillOrder > currentCharacter.skillOrder)
                            {
                                flag = true;
                            }
                            else if (flag2)
                            {
                                flag = false;
                            }
                        }
                        else if (characterStateControl2.skillOrder < currentCharacter.skillOrder)
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;

                    case SkillBranchType.Attribute:
                        continue;

                    case SkillBranchType.AttributeMerit:
                        continue;

                    case SkillBranchType.NotSufferStatus:
                        if (!characterStateControl2.currentSufferState.FindSufferState((SufferStateProperty.SufferType)currentSuffer.skillBranchTypeValue))
                        {
                            flag = true;
                        }
                        else if (flag2)
                        {
                            flag = false;
                        }
                        continue;

                    default:
                        if (skillBranchType != SkillBranchType.End)
                        {
                            continue;
                        }
                        break;
                    }
                    flag = true;
                }
            }
            DkLog.W(string.Format("isEnable {0}", flag), false);
            if (flag)
            {
                skip = false;
                isEnableForPrevious = true;
            }
            else
            {
                skip = true;
            }
            foreach (SubStateSkillDetailsFunction.TargetData targetData in targetDataList)
            {
                targetData.isAllMiss = false;
            }
            return(false);
        }
        skip = true;
        DkLog.W(string.Format("skip {0}", skip), false);
        return(false);
    }
    private List <SubStateSkillDetailsFunction.TargetData> CreateTargetData(List <SubStateSkillDetailsFunction.TargetData> oldTargetDataList, CharacterStateControl currentCharacter, AffectEffectProperty currentSuffer, bool isProtectEnableSkill, ref bool enableDrawProtectMessage)
    {
        List <SubStateSkillDetailsFunction.TargetData> list = new List <SubStateSkillDetailsFunction.TargetData>();

        CharacterStateControl[] array;
        if (base.battleStateData.isConfusionAttack)
        {
            if (currentCharacter.isEnemy)
            {
                array = base.stateManager.targetSelect.GetSkillTargetList(base.battleStateData.playerCharacters[0], currentSuffer.target);
            }
            else
            {
                array = base.stateManager.targetSelect.GetSkillTargetList(base.battleStateData.enemies[0], currentSuffer.target);
            }
        }
        else
        {
            array = base.stateManager.targetSelect.GetSkillTargetList(currentCharacter, currentSuffer.target);
        }
        if (array == null || array.Length == 0)
        {
            return(list);
        }
        bool flag = false;

        if (currentSuffer.effectNumbers == EffectNumbers.Simple)
        {
            CharacterStateControl[] array2 = array.Where((CharacterStateControl item) => item.currentSufferState.FindSufferState(SufferStateProperty.SufferType.Protect)).ToArray <CharacterStateControl>();
            if (base.battleStateData.isConfusionAttack)
            {
                flag = (isProtectEnableSkill && array2 != null && array2.Length > 0);
            }
            else
            {
                flag = (isProtectEnableSkill && array2 != null && array2.Length > 0 && currentCharacter.isEnemy != array[0].isEnemy);
            }
            if (flag)
            {
                array = CharacterStateControlSorter.SortedSufferStateGenerateStartTiming(array2, SufferStateProperty.SufferType.Protect);
                if (currentCharacter.targetCharacter == array[0])
                {
                    enableDrawProtectMessage = false;
                }
                currentCharacter.targetCharacter = array[0];
            }
            array = new CharacterStateControl[]
            {
                currentCharacter.targetCharacter
            };
        }
        if (!currentSuffer.isMissThrough && oldTargetDataList.Count > 0)
        {
            List <CharacterStateControl> list2  = new List <CharacterStateControl>();
            CharacterStateControl[]      array3 = array;
            for (int i = 0; i < array3.Length; i++)
            {
                CharacterStateControl target = array3[i];
                SubStateSkillDetailsFunction.TargetData targetData = oldTargetDataList.Where((SubStateSkillDetailsFunction.TargetData item) => item.target == target).SingleOrDefault <SubStateSkillDetailsFunction.TargetData>();
                bool flag2;
                if (targetData != null)
                {
                    flag2 = !targetData.isAllMiss;
                }
                else
                {
                    flag2 = oldTargetDataList.Where((SubStateSkillDetailsFunction.TargetData item) => !item.isAllMiss).Any <SubStateSkillDetailsFunction.TargetData>();
                }
                if (flag2)
                {
                    list2.Add(target);
                }
            }
            if (list2.Count <= 0)
            {
                return(list);
            }
            array = list2.ToArray();
        }
        foreach (CharacterStateControl target2 in array)
        {
            list.Add(new SubStateSkillDetailsFunction.TargetData
            {
                target    = target2,
                isAllMiss = true,
                onProtect = flag,
                isDamage  = isProtectEnableSkill
            });
        }
        return(list);
    }