public void ActivatePanel() { foreach (var modText in aimModifiers) { modText.text = ""; } foreach (var modValue in aimModValues) { modValue.text = ""; } var attackingUnit = Unit.ActiveUnit; var combatCalc = CombatHitCalc.CalculateHitChance(attackingUnit, attackingUnit.targetUnit, attackingUnit.selectedAbility); toHitValue.text = combatCalc["HIT"] * 100 + "%"; var textCount = 0; foreach (var kv in combatCalc) { if (kv.Key == "HIT") { continue; } if (kv.Value == 0.0F) { continue; } aimModifiers[textCount].text = kv.Key; aimModValues[textCount].text = kv.Value * 100 + "%"; aimModValues[textCount].color = kv.Value > 0 ? Color.green : Color.red; textCount++; } gameObject.SetActive(true); }
public override void TileWatchTrigger(Unit triggeredUnit) { var selectedUnit = triggeredUnit; var targetUnit = Unit.ActiveUnit; selectedUnit.LookAtGameObject(targetUnit.gameObject); var hitSuccess = Random.Range(0.01F, 1.00F); var damageDone = 0; var successfulHit = hitSuccess < CombatHitCalc.CalculateHitChance(selectedUnit, targetUnit, this)["HIT"]; if (successfulHit) { damageDone = CombatDamageCalc.DamageCalculation(selectedUnit, targetUnit, this)["DAMAGE"]; } selectedUnit.FireBullets(5); targetUnit.PopUpText(successfulHit ? damageDone.ToString() : "MISS"); targetUnit.TakeDamage(damageDone); }
public void UpdateTargetPanel() { TargetButton.DestroyAll(); foreach (var unit in Unit.ActiveUnit.EnemiesInLineOfSight()) { var btn = Instantiate(targetButtonPrefab, transform); var targetButton = btn.GetComponent <TargetButton>(); targetButton.targetUnit = unit; if (Unit.ActiveUnit.targetUnit == unit) { targetButton.TargetSelected(); } if (Unit.ActiveUnit.selectedAbility == null) { Unit.ActiveUnit.selectedAbility = Unit.ActiveUnit.abilities[0]; } var hitChance = CombatHitCalc.CalculateHitChance(Unit.ActiveUnit, unit, Unit.ActiveUnit.selectedAbility)["HIT"]; targetButton.SetHitChance(hitChance * 100); targetButton.OnTargetButtonClick += ChangeTarget; targetButton.OnTargetButtonClick += _abilityPanel.ChangedTarget; } }
protected static bool HitSuccess() { return(Random.Range(0.01F, 1.00F) < CombatHitCalc .CalculateHitChance(Unit.ActiveUnit, Unit.ActiveUnit.targetUnit, Unit.ActiveUnit.selectedAbility)["HIT"]); }