コード例 #1
0
 public void activateAbility()
 {
     //round up because we are good guy
     boostAmmount = (int)Math.Ceiling(heroStats.getAttack() * percentBoost);
     //add an effect
     heroBehaviorExecutor.addEffect(new BoostAttack(duration, boostAmmount, heroStats));
     currentStatus = AbilityStatus.Cooldown;
     cooldownEnd   = Time.time + cooldownTime;
 }
コード例 #2
0
    private bool performAttack(GameObject gameObject)
    {
        Stats enemyStats = gameObject.GetComponent <Stats>();

        animator.Play(attackAnimation);
        int damage = Utils.calculateDamageDealt(enemyStats, heroStats.getAttack(), heroStats.getMagic());

        return(gameObject.GetComponent <HealthBar>().dealDamage(damage));
    }
コード例 #3
0
    void Start()
    {
        heroStats   = GetComponent <HeroStats>();
        animator    = GetComponent <Animator>();
        attack      = heroStats.getAttack();
        attackSpeed = Utils.calculateAttackRate(heroStats.getUnitType(), heroStats.getAgility());
        range       = heroStats.getRange();

        nextAttackTime = 0.0f;
    }
コード例 #4
0
 private void attackTarget()
 {
     if (currentTarget != null)
     {
         playAnimation();
         int damage = Utils.calculateDamageDealt(heroStats, heroStats.getAttack(), heroStats.getMagic());
         if (currentTarget.GetComponent <HealthBar>().dealDamage(damage))
         {
             heroStats.addExperience(currentTarget.GetComponent <Stats>().getExperience());
         }
     }
 }
コード例 #5
0
    private void fireMissile()
    {
        if (currentTarget != null)
        {
            animator.Play(attackAnimationName);
            Stats enemyStats = currentTarget.transform.GetComponent <Stats>();
            int   damage     = Utils.calculateDamageDealt(enemyStats, heroStats.getAttack(), heroStats.getMagic());

            Transform missile = Instantiate(missilePrefab, transform.position, transform.rotation);
            missile.GetComponent <Missile>().setTarget(currentTarget.transform);
            missile.GetComponent <Missile>().setDamage(damage);
            missile.GetComponent <Missile>().setSourceStats(heroStats);
        }
    }
コード例 #6
0
 public void updateUI()
 {
     currentHp.text          = "" + selectedHeroHealthBar.getCurrentHealth() + " / " + selectedHeroHealthBar.getMaxHealth();
     currentAttackSpeed.text = "" + Utils.calculateAttackRate(selectedHeroStats.getUnitType(), selectedHeroStats.getAgility());
     unitType.text           = "" + Enum.GetName(typeof(Utils.UnitType), selectedHeroStats.getUnitType());
     currentExperience.text  = "" + selectedHeroStats.getExperience();
     Level.text            = "" + selectedHeroStats.getLevel();
     nextLevelXP.text      = "" + selectedHeroStats.getNextLevelExperience();
     Health.text           = "" + selectedHeroStats.getHealth();
     Attack.text           = "" + selectedHeroStats.getAttack();
     Magic.text            = "" + selectedHeroStats.getMagic();
     Defense.text          = "" + selectedHeroStats.getDefense();
     Resistance.text       = "" + selectedHeroStats.getResistance();
     Agility.text          = "" + selectedHeroStats.getAgility();
     Block.text            = "" + selectedHeroStats.getBlock();
     refundButtonText.text = "REFUND\n +" + (int)(selectedHeroStats.getCost() * .66f) + " REQ";
     updateAbilityButtonValidity();
 }
コード例 #7
0
    private IEnumerator TimeForAction()
    {
        if (actionStarted)
        {
            yield break;
        }
        actionStarted  = true;
        hero.defending = false;
        //animate hero
        Vector3 enemyPosition = new Vector3(enemyToAttack.transform.position.x - 200f,
                                            enemyToAttack.transform.position.y,
                                            enemyToAttack.transform.position.z);

        while (MoveTo(enemyPosition))
        {
            yield return(null);
        }
        //wait
        yield return(new WaitForSeconds(0.5f));

        //do damage
        enemyToAttack.GetComponent <EnemyStateMachine>().enemy.Damage(hero.getAttack());

        //animate back to start
        while (MoveTo(startposition))
        {
            yield return(null);
        }

        //remove action from BattleStateMachine
        BSM.PerformList.RemoveAt(0);
        //reset BattleStateMachine
        BSM.battleState = BattleStateMachine.PerformAction.WAIT;
        //end coroutine
        actionStarted = false;
        //reset hero state
        resetCooldown();
        SetProgressBar();
        currentState = TurnState.PREPARING;
    }