La Habilidad de Ataque es una mecánica de combate principal en Remixed Dungeon que determina la probabilidad de acertar exitosamente un ataque a un enemigo.
La habilidad de ataque se calcula en el archivo Char.java como parte del método attackSkill:
public int attackSkill(Char target) { int[] bf = {0}; forEachBuff(b -> bf[0] += b.attackSkillBonus(this)); int bonus = bf[0]; float accuracy = (float) Math.pow(1.4, bonus); if (target == null) { // Principalmente para ocultar errores en Remixed RPG target = CharsList.DUMMY; } if (rangedWeapon.valid() && level().distance(getPos(), target.getPos()) == 1) { accuracy *= 0.5f; } float mainAccuracyFactor = getActiveWeapon().accuracyFactor(this); float secondaryAccuracyFactor = getSecondaryWeapon().accuracyFactor(this); float skillFactor = Utils.min(20f, mainAccuracyFactor, secondaryAccuracyFactor); int aSkill = (int) ((baseAttackSkill + lvl()) * accuracy * skillFactor); GLog.debug("%s atacando %s con factor %2.2f, habilidad resultante %d", getEntityKind(), target.getEntityKind(), skillFactor, aSkill); return aSkill; }
baseAttackSkill en la clase CharbaseAttackSkill + lvl()baseAttackSkill + lvl() en el cálculoattackSkillBonus aumenta la habilidadMath.pow(1.4, bonus)getActiveWeapon().accuracyFactor(this) y getSecondaryWeapon().accuracyFactor(this)CharUtils.java, Random.Float(attacker.attackSkill(defender)) > Random.Float(defender.defenseSkill(attacker))La clase Héroe tiene un cálculo especial de habilidad de ataque que puede ser mejorado por configuración de dificultad:
// En Hero.java public int attackSkill(Char target) { float attackSkillFactor = 1; if (getDifficulty() == 0) { attackSkillFactor *= 1.2; } return (int) (super.attackSkill(target) * attackSkillFactor); }
Random.Float(attacker.attackSkill(defender)) > Random.Float(defender.defenseSkill(attacker))