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; }
public void Init(SubStatePlayHitAnimationAction.Data data) { this.data = data; }