Table of Contents

Mecánica de Habilidad de Ataque

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.

Fórmula de Habilidad de Ataque

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;
}

Componentes de la Habilidad de Ataque

Habilidad de Ataque Base

Bonificación de Nivel

Bonificaciones de Buff

Factores de Precisión

Penalización a Distancia

Comparación de Defensa

Mejora de Habilidad de Ataque del Héroe

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);
}

Habilidad de Ataque en Combate

Referencia de Código

Relacionado