# Multicrit

Ever wondered how multicrit works? I think it is one of the most mysterious mechanics of this game. Well, no more, here comes the official blog post for multicrit, that should demystify every part of it. By default, every tower starts with a multicrit of 1. This means, every attack a random number is generated, a check if done between this number and the crit chance of the tower and in case a crit is done the damage dealt by the tower is multiplied by the crit damage of the tower. So far, so good. So now, what happens if the multicrit is higher than 1? The above calculation is done for the amount of multicrit the tower has! It stops as soon as the crit chance calculation fails or the amount of multicrit is reached. The calculated crit damage values are simply added. Also, for every follow up crit calculation the crit chance is temporarily reduced by 20%. If you wanna go into the specifics, here is the actual implementation of the tower damage calculation:/** * Calculates the damage a tower deals. * @param minDamage The minimum base damage of the tower. * @param maxDamage The maximum base damage of the tower. * @param critCount The amount of critical strikes that where done. * @return */ public final function calculateDamageWithCrit(minDamage:Number, maxDamage:Number, critCount:IntegerReference):Number { var baseDamage:Number = minDamage + (maxDamage - minDamage + 1.0) * Math.random(); baseDamage += _baseDamageAddAbsolute; baseDamage = baseDamage * (1.0 + _baseDamageAddRelative); var damage:Number = baseDamage; var critChance:Number = _critChance; critCount.value = 0; var multicrit:int = this.multicrit; for (var i:uint = 0; i < multicrit; ++i) { if (Math.random() <= critChance) { // Reduce crit chance for next multicrit by 20%. critChance *= 0.8; // Add critical strike damage to the final damage. damage += baseDamage * _critDamage; // Increase crit count. ++critCount.value; } else { break; } } return damage; }