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;
 }