protected override IEnumerator MainRoutine() { CharacterStateControl attacker = base.battleStateData.currentSelectCharacterState; if ((!attacker.isEnemy && !RandomExtension.Switch(base.hierarchyData.playerPursuitPercentage)) || (attacker.isEnemy && !RandomExtension.Switch(base.hierarchyData.enemyPursuitPercentage))) { yield break; } if (!attacker.currentSkillStatus.ThisSkillIsAttack) { yield break; } bool isConfusion = false; SufferStateProperty confusionSuffer = attacker.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Confusion); if (confusionSuffer.isActive && confusionSuffer.GetOccurrenceFreeze()) { isConfusion = true; } CharacterStateControl[] targets; if (!isConfusion) { targets = ((!attacker.isEnemy) ? base.battleStateData.enemies : base.battleStateData.playerCharacters); } else { targets = (attacker.isEnemy ? base.battleStateData.enemies : base.battleStateData.playerCharacters); } int count = 0; for (int i = 0; i < targets.Length; i++) { if (targets[i].isDied) { count++; } } if (count == targets.Length) { yield break; } do { attacker.targetCharacter = targets[UnityEngine.Random.Range(0, targets.Length)]; }while (attacker.targetCharacter.isDied); attacker.isSelectSkill = attacker.SkillIdToIndexOf(base.stateManager.publicAttackSkillId); base.SetState(typeof(SubStatePvPSkillDetailsFunction)); while (base.isWaitState) { yield return(null); } yield break; }
public void RunSufferAfterCommand(List <CharacterStateControl> sortedCharacters, CharacterStateControl sortedCharacter) { base.stateManager.uiControl.HideCharacterHUDFunction(); SufferStateProperty sufferStateProperty = sortedCharacter.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Paralysis); if (sufferStateProperty.isActive && sufferStateProperty.GetOccurrenceFreeze()) { this.onFreeze = true; this.onParalysis = true; } SufferStateProperty sufferStateProperty2 = sortedCharacter.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Confusion); if (sufferStateProperty2.isActive && sufferStateProperty2.GetOccurrenceFreeze()) { sortedCharacter.isSelectSkill = sortedCharacter.SkillIdToIndexOf(base.stateManager.publicAttackSkillId); this.onConfusion = true; CharacterStateControl characterStateControl; for (;;) { characterStateControl = sortedCharacters[UnityEngine.Random.Range(0, sortedCharacters.Count)]; if (!characterStateControl.isDied) { if (sortedCharacter.isEnemy) { if (characterStateControl.isEnemy) { break; } } else if (!characterStateControl.isEnemy) { goto Block_8; } } } sortedCharacter.targetCharacter = characterStateControl; return; Block_8: sortedCharacter.targetCharacter = characterStateControl; } }
protected override IEnumerator MainRoutine() { CharacterStateControl attacker = base.battleStateData.currentSelectCharacterState; if ((!attacker.isEnemy && !RandomExtension.Switch(base.hierarchyData.playerPursuitPercentage)) || (attacker.isEnemy && !RandomExtension.Switch(base.hierarchyData.enemyPursuitPercentage))) { yield break; } if (!attacker.currentSkillStatus.ThisSkillIsAttack) { yield break; } bool isConfusion = false; SufferStateProperty confusionSuffer = attacker.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Confusion); if (confusionSuffer.isActive && confusionSuffer.GetOccurrenceFreeze()) { isConfusion = true; } CharacterStateControl[] targets; if (!isConfusion) { targets = ((!attacker.isEnemy) ? base.battleStateData.enemies : base.battleStateData.playerCharacters); } else { targets = (attacker.isEnemy ? base.battleStateData.enemies : base.battleStateData.playerCharacters); } int count = 0; for (int i = 0; i < targets.Length; i++) { if (targets[i].isDied) { count++; } } if (count == targets.Length) { yield break; } int index = 0; do { index = UnityEngine.Random.Range(0, targets.Length); attacker.targetCharacter = targets[index]; }while (attacker.targetCharacter.isDied); base.stateManager.uiControl.ApplyTurnActionBarSwipeout(true); base.stateManager.uiControl.ApplySkillName(true, StringMaster.GetString("BattleUI-46"), attacker); IEnumerator wait2 = base.stateManager.time.WaitForCertainPeriodTimeAction(0.5f, null, null); while (wait2.MoveNext()) { object obj = wait2.Current; yield return(obj); } base.stateManager.uiControl.ApplyTurnActionBarSwipeout(false); attacker.isSelectSkill = attacker.SkillIdToIndexOf(base.stateManager.publicAttackSkillId); attacker.isMultiAreaRandomDamageSkill = true; base.SetState(typeof(SubStateMultiSkillDetailsFunction)); while (base.isWaitState) { yield return(null); } base.SetState(typeof(SubStatePlayChipEffect)); while (base.isWaitState) { yield return(null); } attacker.isMultiAreaRandomDamageSkill = false; yield break; }