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; }
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)); }
void Start() { heroStats = GetComponent <HeroStats>(); animator = GetComponent <Animator>(); attack = heroStats.getAttack(); attackSpeed = Utils.calculateAttackRate(heroStats.getUnitType(), heroStats.getAgility()); range = heroStats.getRange(); nextAttackTime = 0.0f; }
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()); } } }
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); } }
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(); }
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; }