예제 #1
0
    bool SubTurnStep_Interrupt_AllyHit(Battler bat, Battler[] bats)
    {
        BattlerAction action     = BattlerAction.None;
        bool          tryToCutIn = false;

        for (int i = 0; i < bats.Length; i++)
        {
            if (bats[i].isValidTarget && bats[i].incomingHit && bats[i] != bat)
            {
                tryToCutIn = true;
                break;
            }
        }
        if (tryToCutIn)
        {
            action = bat.GetInterruptAction(BattlerActionInterruptType.OnAllyHit);
            if (action != BattlerAction.None)
            {
                currentActingBattler = bat;
                if (bat.isEnemy)
                {
                    bat.AttackWith(validPlayerTargets, validEnemyTargets, action);
                }
                else
                {
                    bat.AttackWith(validEnemyTargets, validPlayerTargets, action);
                }
            }
        }
        return(action != BattlerAction.None);
    }
예제 #2
0
    bool SubTurnStep_Interrupt_SelfHit(Battler bat)
    {
        BattlerAction action = BattlerAction.None;

        if (bat.incomingHit)
        {
            action = bat.GetInterruptAction(BattlerActionInterruptType.OnHit);
            if (action != BattlerAction.None)
            {
                currentActingBattler = bat;
                if (bat.isEnemy)
                {
                    bat.AttackWith(validPlayerTargets, validEnemyTargets, action);
                }
                else
                {
                    bat.AttackWith(validEnemyTargets, validPlayerTargets, action);
                }
            }
        }
        return(action != BattlerAction.None);
    }
예제 #3
0
    bool SubTurnStep_Interrupt_Deathblow(Battler bat)
    {
        BattlerAction action;

        currentActingBattler = bat;
        if (bat.isEnemy)
        {
            action = bat.GetInterruptAction(BattlerActionInterruptType.OnAllyDeathblow);
            if (action != BattlerAction.None)
            {
                bat.AttackWith(validPlayerTargets, validEnemyTargets, action);
            }
        }
        else
        {
            action = bat.GetInterruptAction(BattlerActionInterruptType.OnAllyDeathblow);
            if (action != BattlerAction.None)
            {
                bat.AttackWith(validEnemyTargets, validPlayerTargets, action);
            }
        }
        return(action != BattlerAction.None);
    }