public float CalculateTakenDamage(Unit enemy) { //Actual Function we use to calculate damage Advantadge modifierIndex = CalculateTypeAdvantage(enemy.unitFlavor); float damage = ((2 * enemy.unitLevel / 10 + 2) * 5 * (enemy.attack / this.defense) / 50 + 2) * advantageMultiplier[(int)modifierIndex] * Random.Range(0.85f, 1.0f); return(damage); }
Advantadge CalculateTypeAdvantage(Flavor enemy_flavor) { Advantadge ret = Advantadge.NEUTRAL; //Using our flavour, and calculate wheter the enemy has advantage or disadvantage against us Flavor advantage1 = this.unitFlavor + 2; if ((int)advantage1 > 4) { advantage1 -= 5; } Flavor advantage2 = this.unitFlavor + 4; if ((int)advantage2 > 4) { advantage2 -= 5; } Flavor disadvantage1 = this.unitFlavor + 1; if ((int)disadvantage1 > 4) { disadvantage1 -= 5; } Flavor disadvantage2 = this.unitFlavor + 3; if ((int)disadvantage2 > 4) { disadvantage2 -= 5; } //Determine Advantage or disadvantage if (this.unitFlavor == enemy_flavor) //Enemy is of our same flavor { ret = Advantadge.NEUTRAL; } else if (enemy_flavor == advantage1 || enemy_flavor == advantage2) //The enemy has advantage on us { ret = Advantadge.ADVANTAGE; } else if (enemy_flavor == disadvantage1 || enemy_flavor == disadvantage2) //The enemy has disadvantage against us { ret = Advantadge.DISADVANTAGE; } return(ret); }