int CalculateHitRate() { Unit target = turn.targets[index].content.GetComponent <Unit>(); HitRate hr = turn.ability.GetComponentInChildren <HitRate>(); return(hr.Calculate(turn.actor, target)); }
void ApplyAbility() { BaseAbilityEffect[] effects = turn.ability.GetComponentsInChildren <BaseAbilityEffect>(); for (int i = 0; i < turn.targets.Count; ++i) { Tile target = turn.targets[i]; for (int j = 0; j < effects.Length; ++j) { BaseAbilityEffect effect = effects[j]; AbilityEffectTarget targeter = effect.GetComponent <AbilityEffectTarget>(); if (targeter.IsTarget(target)) { HitRate rate = effect.GetComponent <HitRate>(); int chance = rate.Calculate(target); if (UnityEngine.Random.Range(0, 101) > chance) { Debug.Log(turn.actor.name + " missed!"); // Swing and a miss! continue; } effect.Apply(target); } } } }
void ApplyAbility() { BaseAbilityEffect[] effects = turn.ability.GetComponentsInChildren <BaseAbilityEffect>(); for (int i = 0; i < turn.targets.Count; ++i) { Tile target = turn.targets[i]; for (int j = 0; j < effects.Length; ++j) { BaseAbilityEffect effect = effects[j]; AbilityEffectTarget targeter = effect.GetComponent <AbilityEffectTarget>(); if (targeter.IsTarget(target)) { //calculate actual hit rate HitRate rate = effect.GetComponent <HitRate>(); int chance = rate.Calculate(target); if (UnityEngine.Random.Range(0, 101) > chance) { // A Miss! Debug.Log("Action Missed!"); continue; } //apply damage/effect on hit effect.Apply(target); } } } }
private void UpdateHitSuccessIndicator() { int chance = 0; int amount = 0; Tile target = turn.targets[index]; Transform obj = turn.ability.transform; for (int i = 0; i < obj.childCount; ++i) { AbilityEffectTarget targeter = obj.GetChild(i).GetComponent <AbilityEffectTarget>(); if (targeter.IsTarget(target)) { HitRate hitRate = targeter.GetComponent <HitRate>(); chance = hitRate.Calculate(target); BaseAbilityEffect effect = targeter.GetComponent <BaseAbilityEffect>(); if (effect == null) { throw new Exception("Missing AbilityEffect component."); } amount = effect.Predict(target); break; } } hitIndicatorPanelController.SetStats(chance, amount); }
//checks ability hit rate component to determine if attack angle matters bool IsAbilityAngleBased(Ability ability) { bool isAngleBased = false; for (int i = 0; i < ability.transform.childCount; ++i) { HitRate hr = ability.transform.GetChild(i).GetComponent <HitRate>(); if (hr.IsAngleBased) { isAngleBased = true; break; } } return(isAngleBased); }
void UpdateHitSuccessIndicator() { int chance = 0; int amount = 0; Tile target = turn.targets[index]; for (int i = 0; i < targeters.Length; ++i) { if (targeters[i].IsTarget(target)) { HitRate hitRate = targeters[i].GetComponent <HitRate>(); chance = hitRate.Calculate(target); BaseAbilityEffect effect = targeters[i].GetComponent <BaseAbilityEffect>(); amount = effect.Predict(target); break; } } hitSuccessIndicator.SetStats(chance, amount); }
void UpdateHitSuccessIndicator() { int chance = 0; int amount = 0; WorldTile target = turn.targets[index]; Transform obj = turn.ability.transform; for (int i = 0; i < obj.childCount; ++i) { AbilityEffectTarget targeter = obj.GetChild(i).GetComponent <AbilityEffectTarget>(); if (targeter.IsTarget(target)) { HitRate hitRate = targeter.GetComponent <HitRate>(); chance = hitRate.Calculate(target); BaseAbilityEffect effect = targeter.GetComponent <BaseAbilityEffect>(); amount = effect.Predict(target); break; } } hitSuccessIndicator.SetStats(chance, amount); }
int CalculateHitChance(Tile target) { HitRate hitRate = turn.phaser.GetComponentInChildren <HitRate>(); return(hitRate.Calculate(target)); }
// updates win and losses on UI private void updateResultsDisplay() { lblWins.Text = ($"Wins: {wins} out of {gamesPlayed}"); lblWinPercent.Text = HitRate.Calculate(wins, gamesPlayed); }