Table of Contents

Mecânica de Habilidade de Ataque

A Habilidade de Ataque é uma mecânica de combate fundamental no Remixed Dungeon que determina a chance de acertar com sucesso um ataque a um inimigo.

Fórmula da Habilidade de Ataque

A habilidade de ataque é calculada no arquivo Char.java como parte do 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 mascarar bug no 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 com fator %2.2f, habilidade resultante %d", getEntityKind(), target.getEntityKind(), skillFactor, aSkill);
 
    return aSkill;
}

Componentes da Habilidade de Ataque

Habilidade de Ataque Base

Bônus de Nível

Bônus de Buffs

Fatores de Precisão

Penalidade à Distância

Comparação de Defesa

Melhoria da Habilidade de Ataque do Herói

A classe Herói tem um cálculo especial de habilidade de ataque que pode ser aprimorado pela configuração de dificuldade:

// Em Hero.java
public int attackSkill(Char target) {
    float attackSkillFactor = 1;
 
    if (getDifficulty() == 0) {
        attackSkillFactor *= 1.2;
    }
 
    return (int) (super.attackSkill(target) * attackSkillFactor);
}

Habilidade de Ataque em Combate

Referência de Código

Relacionado