Combat Backend & Data Models
- Implement Combat Service - Implement Damage Calculator - Implement Effect Processor - Implement Combat Actions - Created Combat API Endpoints
This commit is contained in:
@@ -86,6 +86,63 @@ class Stats:
|
||||
"""
|
||||
return self.wisdom // 2
|
||||
|
||||
@property
|
||||
def crit_bonus(self) -> float:
|
||||
"""
|
||||
Calculate critical hit chance bonus from luck.
|
||||
|
||||
Formula: luck * 0.5% (0.005)
|
||||
|
||||
This bonus is added to the weapon's base crit chance.
|
||||
The total crit chance is capped at 25% in the DamageCalculator.
|
||||
|
||||
Returns:
|
||||
Crit chance bonus as a decimal (e.g., 0.04 for LUK 8)
|
||||
|
||||
Examples:
|
||||
LUK 8: 0.04 (4% bonus)
|
||||
LUK 12: 0.06 (6% bonus)
|
||||
"""
|
||||
return self.luck * 0.005
|
||||
|
||||
@property
|
||||
def hit_bonus(self) -> float:
|
||||
"""
|
||||
Calculate hit chance bonus (miss reduction) from luck.
|
||||
|
||||
Formula: luck * 0.5% (0.005)
|
||||
|
||||
This reduces the base 10% miss chance. The minimum miss
|
||||
chance is hard capped at 5% to prevent frustration.
|
||||
|
||||
Returns:
|
||||
Miss reduction as a decimal (e.g., 0.04 for LUK 8)
|
||||
|
||||
Examples:
|
||||
LUK 8: 0.04 (reduces miss from 10% to 6%)
|
||||
LUK 12: 0.06 (reduces miss from 10% to 4%, capped at 5%)
|
||||
"""
|
||||
return self.luck * 0.005
|
||||
|
||||
@property
|
||||
def lucky_roll_chance(self) -> float:
|
||||
"""
|
||||
Calculate chance for a "lucky" high damage variance roll.
|
||||
|
||||
Formula: 5% + (luck * 0.25%)
|
||||
|
||||
When triggered, damage variance uses 100%-110% instead of 95%-105%.
|
||||
This gives LUK characters more frequent high damage rolls.
|
||||
|
||||
Returns:
|
||||
Lucky roll chance as a decimal
|
||||
|
||||
Examples:
|
||||
LUK 8: 0.07 (7% chance for lucky roll)
|
||||
LUK 12: 0.08 (8% chance for lucky roll)
|
||||
"""
|
||||
return 0.05 + (self.luck * 0.0025)
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""
|
||||
Serialize stats to a dictionary.
|
||||
@@ -140,5 +197,6 @@ class Stats:
|
||||
f"CON={self.constitution}, INT={self.intelligence}, "
|
||||
f"WIS={self.wisdom}, CHA={self.charisma}, LUK={self.luck}, "
|
||||
f"HP={self.hit_points}, MP={self.mana_points}, "
|
||||
f"DEF={self.defense}, RES={self.resistance})"
|
||||
f"DEF={self.defense}, RES={self.resistance}, "
|
||||
f"CRIT_BONUS={self.crit_bonus:.1%}, HIT_BONUS={self.hit_bonus:.1%})"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user