コード例 #1
0
    public void DealDamage()
    {
        Battle.Action     offensiveAction = battle.GetOffensiveAction();
        Battle.Action     defensiveAction = battle.GetDefensiveAction();
        bool              reverse         = offensiveAction == Battle.Action.EMPOWERED_ATTACK && defensiveAction == Battle.Action.COUNTER;
        BattleParticipant target          = reverse ? battle.GetAttacker() : battle.GetDefender();
        Stats             stats           = target.GetCurrentStats();
        int damage = battlePredictions.GetDamage(offensiveAction, defensiveAction);

        damage = damage > 0 ? damage : 0;
        StartCoroutine(battleAnimations.ApplyDamage(reverse ? !battle.attacking : battle.attacking, target, stats.hp > damage ? damage : stats.hp));
        stats.hp = stats.hp > damage ? stats.hp - damage : 0;
    }
コード例 #2
0
    public void PerformAnimations(Battle battleInstance)
    {
        bool attacking = battleInstance.attacking;

        Battle.Action attack  = battleInstance.GetOffensiveAction();
        Battle.Action defense = battleInstance.GetDefensiveAction();
        if (defense == Battle.Action.SURRENDER)
        {
            Surrender(attacking);
        }
        else
        {
            switch (attack)
            {
            case Battle.Action.ATTACK:
                Attack(attacking);
                PerformDefense(attacking, defense, defense != Battle.Action.DEFEND);
                break;

            case Battle.Action.MAGIC:
                Magic(attacking);
                PerformDefense(attacking, defense, defense != Battle.Action.MAGIC_DEFEND);
                break;

            case Battle.Action.EMPOWERED_ATTACK:     // empowered attack
                GameObject empower = attacking ? homeEmpower : awayEmpower;
                StartCoroutine(FadeIn(empower, delegate() {
                    empower.SetActive(false);
                    bool failDefend = defense != Battle.Action.COUNTER;
                    if (failDefend)
                    {
                        EmpowerAttack(attacking);
                    }
                    PerformDefense(attacking, defense, failDefend);
                }));
                break;

            case Battle.Action.ITEM:
                PerformDefense(attacking, defense, false);
                break;
            }
        }
    }
コード例 #3
0
    void PerformDefense(bool attacking, Battle.Action defense, bool fail)
    {
        GameObject defendObj;

        switch (defense)
        {
        case Battle.Action.DEFEND:
            defendObj = attacking ? awayDefend : homeDefend;
            StartCoroutine(FadeIn(defendObj, delegate() {
                if (fail)
                {
                    defendObj.SetActive(false);
                    defendObj = attacking ? awayFailDefend : homeFailDefend;
                }
                StartCoroutine(FadeOut(defendObj, 2F));
            }));
            break;

        case Battle.Action.MAGIC_DEFEND:
            defendObj = attacking ? awayMagicDefend : homeMagicDefend;
            StartCoroutine(FadeIn(defendObj, delegate() {
                if (fail)
                {
                    defendObj.SetActive(false);
                    defendObj = attacking ? awayFailMagicDefend : homeFailMagicDefend;
                }
                StartCoroutine(FadeOut(defendObj, 2F));
            }));
            break;

        case Battle.Action.COUNTER:
            if (!fail)
            {
                Attack(!attacking);
            }
            break;
        }
    }
コード例 #4
0
    public int GetDamage(Battle.Action attack, Battle.Action defense)
    {
        switch (attack)
        {
        case Battle.Action.ATTACK:
            return(defense == Battle.Action.DEFEND ? attackDefend : attackFail);

        case Battle.Action.MAGIC:
            return(defense == Battle.Action.MAGIC_DEFEND ? magicMagicDefend : magicFail);

        default:     // empowered attack
            switch (defense)
            {
            case Battle.Action.DEFEND:
                return(empoweredAttackDefend);

            case Battle.Action.MAGIC_DEFEND:
                return(empoweredAttackMagicDefend);

            default:         // counter
                return(empoweredAttackCounter);
            }
        }
    }