/// <summary> /// Calculate the attack information for the attack on the specified defense Character /// </summary> /// <param name="defenseCharacter"></param> /// <returns></returns> public AttackInformation CalculateAttackInformation(Character defenseCharacter) { Debug.LogFormat("CalculateAttackInformation: {0}", defenseCharacter); Weapon attackWeapon = GetUsableItem <Weapon>(); Debug.LogFormat("Attack weapon: {0}", attackWeapon); Weapon defenseWeapon = defenseCharacter.GetUsableItem <Weapon>(); Debug.LogFormat("Defense weapon: {0}", defenseWeapon); bool defenseCanAttack = false; if (defenseWeapon != null) { defenseCanAttack = defenseWeapon.IsInRange(defenseCharacter.transform.position, transform.position); } int attackHitPercentage = CalculateHitPercentage(attackWeapon, defenseCharacter, defenseWeapon); int attackDamage = CalculateDamage(attackWeapon, defenseCharacter, defenseWeapon); int attackCriticalPercentage = CalculateCriticalPercentage(attackWeapon, defenseCharacter, defenseWeapon); int attackNumberOfAttacks = CalculateNumberOfAttacks(attackWeapon, defenseCharacter, defenseWeapon); int defenseHitPercentage = 0; int defenseDamage = 0; int defenseCriticalPercentage = 0; int defenseNumberOfAttacks = 0; if (defenseCanAttack) { defenseHitPercentage = defenseCharacter.CalculateHitPercentage(defenseWeapon, this, attackWeapon); defenseDamage = defenseCharacter.CalculateDamage(defenseWeapon, this, attackWeapon); defenseCriticalPercentage = defenseCharacter.CalculateCriticalPercentage(defenseWeapon, this, attackWeapon); defenseNumberOfAttacks = defenseCharacter.CalculateNumberOfAttacks(defenseWeapon, this, attackWeapon); } AttackInformation attackInformation = new AttackInformation( attackWeapon: attackWeapon, attackHitPercentage: attackHitPercentage, attackDamage: attackDamage, attackCriticalPercentage: attackCriticalPercentage, attackNumberOfAttacks: attackNumberOfAttacks, defenseWeapon: defenseWeapon, defenseHitPercentage: defenseHitPercentage, defenseDamage: defenseDamage, defenseCriticalPercentage: defenseCriticalPercentage, defenseCanAttack: defenseCanAttack, defenseNumberOfAttacks: defenseNumberOfAttacks); Debug.Log(attackInformation); return(attackInformation); }