MasterySystem.py
Índice
- Descripción General
- Clase
MasterySkill - Gestor:
MasteryManager - Mecánica de Progresión
- Bonus por Nivel
- Interfaz de Usuario
- Ejemplos de Uso
Descripción General
MasterySystem.py implementa el sistema de "Maestrías" de combate. A diferencia de los niveles de personaje, las maestrías suben de forma orgánica al usar equipos específicos. Cuanto más use el jugador una categoría de arma o armadura, más eficiente se volverá con ella.
Clase MasterySkill
Representa el nivel de maestría en una categoría específica (ej. "Espadas").
- current_level: Nivel actual (1-20).
- exp_current: Progreso hacia el siguiente nivel.
- bonus_multiplier: Calcula el modificador de daño o defensa basado en el nivel.
Gestor: MasteryManager
Coordina todas las maestrías del jugador.
Categorías de Armas
- Swords (Espadas)
- Staffs (Bastones)
- Hammers (Martillos)
- Spears (Lanzas)
- Daggers (Dagas)
- Bows (Arcos)
- Generic (Armas no categorizadas)
Categorías de Armaduras
- Helmet (Cascos)
- Armor (Pechos/Armaduras)
- Boots (Botas)
- Ring (Anillos)
Mecánica de Progresión
La experiencia se gana automáticamente durante el combate:
- Maestría de Armas: Gana EXP al infligir daño.
- EXP = Daño_Realizado / 35.
- Maestría de Armaduras: Gana EXP al recibir daño.
- EXP = Daño_Recibido / 35.
Bonus por Nivel
Cada nivel de maestría (del 2 al 20) otorga beneficios acumulativos:
| Tipo | Bonus por Nivel | Total al Nv. 20 |
|---|---|---|
| Armas | +0.5% Daño | +9.5% Daño |
| Armaduras | +0.25% Reducción | +4.75% Reducción |
Interfaz de Usuario
display_masteries(console)
Genera una tabla detallada con Rich que muestra:
- El tipo de maestría.
- El nivel actual y la barra de progreso visual ██░░.
- El bonus exacto de atributo que se está aplicando actualmente.
Ejemplos de Uso
Registrar daño en el bucle de combate
from Modules.ModulesFunctions.MasterySystem import ensure_mastery
mgr = ensure_mastery(player)
# Al final del turno del jugador
msg = mgr.register_damage_dealt(player, daño_final)
if msg:
print(msg) # "¡Mastery de Espadas subió a Nv.5!"
Aplicar bonus en el cálculo de daño
mult = mgr.get_weapon_damage_multiplier(player)
daño_total = daño_base * mult
Notas Técnicas
- El sistema utiliza un Singleton por jugador almacenado en
player.mastery_manager. - El crecimiento de EXP es exponencial:
100 * (1.5 ^ (nv-1)). - Las maestrías se guardan y cargan automáticamente a través del
SaveSystem.