Example #1
0
    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;
    }