Пример #1
0
    void Attack(TBC_Character _attacker, TBC_Character _reciever, Specials _special)
    {
        float damage = 0;

        if (!IsImmune(_special.element, _reciever))
        {
            if (_reciever.elementalWeakness.Contains(_special.element))
            {
                //DoubleDamage
                damage = Damage(doubleDamageMult, damageRandomRange, _attacker, _reciever, _special);
                //Add Effect
                Effector(_special, _reciever, 1);
            }
            else
            {
                //RegularDamage
                damage = Damage(damageMult, damageRandomRange, _attacker, _reciever, _special);
                //Add Effect
                Effector(_special, _reciever, 2);
            }
        }
        else
        {
            //HalfDamage
            damage = Damage(reducedDamageMult, damageRandomRange, _attacker, _reciever, _special);
        }
        //Add Damage
        _reciever.hitPoints -= damage;
    }
Пример #2
0
 bool IsImmune(EElement element, TBC_Character _reciever)
 {
     if (_reciever.elementalResistance.Contains(element))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #3
0
    /// <summary>
    ////DEBUG
    /// </summary>

    private void OnGUI()
    {
        TBC_Character currentCharacter = tBC_Order.lCharacters[turnOrderIndex].GetComponent <TBC_Character>();

        GUI.Label(new Rect(onGuiLocation.x, onGuiLocation.y, 200, 120), "HP:\t " + currentCharacter.hitPoints +
                  "\nSTR:\t" + currentCharacter.strength +
                  "\nATK:\t" + currentCharacter.attack +
                  "\nDEF:\t" + currentCharacter.defence +
                  "\nAGL:\t" + currentCharacter.agility +
                  "\nAP:\t" + currentCharacter.actionPoints +
                  "\nEffector:\t" + currentCharacter.currentEffect.ToString(), "box");
    }
Пример #4
0
 void Effector(Specials _special, TBC_Character _reciever, float probability)
 {
     if (_special.element > 0)
     {
         if (Random.Range(0, probability) <= 1)
         {
             int effectIndex = (int)_special.element;
             _reciever.currentEffect = (EEffect)effectIndex;
             Debug.Log(_reciever.currentEffect);
         }
         else
         {
             return;
         }
     }
 }
Пример #5
0
    public IEnumerator Targeting(string eventType)
    {
        arrow.SetActive(true);

        yield return(new WaitForSeconds(0));

        if (!selected)
        {
            arrow.SetActive(true);
            smoothTarget = OffScreenTargetPosition(true);
            targeting    = true;
            StartCoroutine(Targeting(eventType));
        }
        else
        {
            arrow.SetActive(false);
            selected           = false;
            target             = tBC_Order.lCharacters[targetIndex];
            targetCharacter    = target.GetComponent <TBC_Character>();
            attackingCharacter = tBC_Order.lCharacters[tBC_Manager.turnOrderIndex].GetComponent <TBC_Character>();
            switch (eventType)
            {
            case "ATTACK":
                StartCoroutine(MoveTowards("ATTACK"));
                break;

            case "SPECIAL":
                tBC_specials.Special(attackingCharacter, targetCharacter, selectedSpecial);
                break;

            case "SKILL":

                break;

            case "ITEM":
                Item();
                break;

            default:
                break;
            }
            // DeathCheck();
            StartCoroutine(tBC_Manager.NextPlayer(2f));
            Menu();
        }
    }
Пример #6
0
    public void Special(TBC_Character _attacker, TBC_Character _reciever, Specials _special)
    {
        switch (_special.specialType)
        {
        case ESpecialType.ATTACK:
            Attack(_attacker, _reciever, _special);          //I.E. Bomb / Magic type
            break;

        case ESpecialType.RECOVER:                                              //I.E Recovery type
            Recover(_attacker, _reciever, _special);
            break;

        default:
            break;
        }
        //deduct action points
        _attacker.actionPoints -= _special.specialCost;
        //Play Particle Effect
        PlayParticleEffect(_reciever.transform, _special, 0.5f);
    }
Пример #7
0
    void Recover(TBC_Character _attacker, TBC_Character _reciever, Specials _special)
    {
        int effectIndex = (int)_reciever.currentEffect;

        if (_special.recovery == ERecovery.REMEDY)
        {
            _reciever.currentEffect = EEffect.NONE;
        }
        else if (_special.recovery == (ERecovery)effectIndex)
        {
            _reciever.currentEffect = EEffect.NONE;
        }
        else if (_special.recovery == ERecovery.CURE)
        {
            _reciever.hitPoints += Cure(_attacker, _special);
        }
        else
        {
            return;
        }
    }
Пример #8
0
 float Cure(TBC_Character _attacker, Specials _special)
 {
     return(_attacker.attack + _special.specialMod);
 }
Пример #9
0
    // Damage() retuns a damage value for use with special moves|
    // Algorithm: mult = Ran(mult - attackRange, mult + attackRange);
    // return _attacker.tbc_character.attack + SpecialModifier - reciever.TBC_Character.defence * mult;

    float Damage(float _damageMult, float damageRange, TBC_Character _attacker, TBC_Character _reciever, Specials _special)
    {
        float mult = Random.Range(_damageMult - damageRange, _damageMult + damageRange);

        return((_attacker.attack + _special.specialMod - _reciever.defence) * mult);
    }