es:rpd:attack_skill_mechanic
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
- Definición: El valor base de habilidad de ataque del personaje
- Almacenamiento: Campo
baseAttackSkillen la clase Char - Ejemplos:
- Rata: 8
- Guerrero: 10 (en la clase Heroe)
- Ladrón: 12
- Goo: 11
- Rey: 32
- Corazón de Yog: 26
- Función: Proporciona el valor de ataque fundamental antes de modificadores
Bonificación de Nivel
- Fórmula:
baseAttackSkill + lvl() - Efecto: Cada nivel aumenta la habilidad de ataque en 1 punto
- Implementación:
baseAttackSkill + lvl()en el cálculo
Bonificaciones de Buff
- Mecanismo: Cada buff con
attackSkillBonusaumenta la habilidad - Fórmula: Los bonos se suman y aplican como modificador exponencial a la precisión:
Math.pow(1.4, bonus) - Ejemplos:
- Anillo de Puntería aumenta el bono de habilidad de ataque igual a su nivel
- Buff Bendecido proporciona bono de habilidad de ataque
- Subclases de Héroe pueden proporcionar bonos de habilidad de ataque
Factores de Precisión
- Precisión de Armas:
getActiveWeapon().accuracyFactor(this)ygetSecondaryWeapon().accuracyFactor(this) - Cálculo: Se utiliza el mínimo de ambos factores de precisión de armas, limitado a 20.0
- Ejemplos:
- Anillo de Puntería: Proporciona bonificación de precisión
- Piedra de Equilibrio: Puede imbuir armas con precisión
- Arco Compuesto: Tiene mejor precisión que arco de madera
Penalización a Distancia
- Condición: Al usar un arma a distancia en combate cuerpo a cuerpo (distancia = 1)
- Efecto: La precisión se reduce a la mitad (multiplicador 0.5f)
- Propósito: Desincentiva el uso de armas a distancia a corta distancia
Comparación de Defensa
- Uso: La habilidad de ataque se compara con la habilidad de defensa del objetivo para determinar la probabilidad de impacto
- Implementación: En
CharUtils.java,Random.Float(attacker.attackSkill(defender)) > Random.Float(defender.defenseSkill(attacker))
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
- Probabilidad de Impacto: La habilidad de ataque del atacante se compara con la habilidad de defensa del defensor
- Cálculo:
Random.Float(attacker.attackSkill(defender)) > Random.Float(defender.defenseSkill(attacker)) - Resultado: Si es verdadero, el ataque impacta; si es falso, el ataque falla
Referencia de Código
- Java: Char.java
- Java: Hero.java
- Java: CharUtils.java
- Java: Blessed.java
Relacionado
es/rpd/attack_skill_mechanic.txt · Last modified: by 127.0.0.1
