Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/osrs/core/combat/combat_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class CombatEntity:
special_attack_energy: float = 100.0
combat_style: Optional[CombatStyle] = None
status_effects: Set[str] = None
weapon_name: Optional[str] = None

@property
def is_alive(self) -> bool:
Expand Down Expand Up @@ -245,8 +246,8 @@ def calculate_hit(
accuracy_multiplier = 1.0
damage_multiplier = 1.0
if is_special:
weapon_name = "dragon_dagger" # TODO: Get from equipment
if weapon_name in self.special_attacks:
weapon_name = attacker.weapon_name
if weapon_name and weapon_name in self.special_attacks:
special = self.special_attacks[weapon_name]
accuracy_multiplier = special.accuracy_multiplier
damage_multiplier = special.damage_multiplier
Expand Down Expand Up @@ -292,8 +293,8 @@ def calculate_hit(
damage = int(damage * effect_data["damage_multiplier"])

# Apply weapon effects
weapon_name = "dragon_dagger" # TODO: Get from equipment
if weapon_name in self.weapon_stats:
weapon_name = attacker.weapon_name
if weapon_name and weapon_name in self.weapon_stats:
weapon = self.weapon_stats[weapon_name]
if weapon.can_poison and random.random() < 0.25: # 25% chance to poison
if "poison" not in defender.status_effects:
Expand All @@ -312,8 +313,8 @@ async def process_combat_tick(self, state: CombatState) -> Optional[CombatEntity
# Handle special attacks
is_special = False
if state.is_special_attack:
weapon_name = "dragon_dagger" # TODO: Get from equipment
if weapon_name in self.special_attacks:
weapon_name = state.attacker.weapon_name
if weapon_name and weapon_name in self.special_attacks:
special = self.special_attacks[weapon_name]
if state.attacker.special_attack_energy >= special.energy_cost:
is_special = True
Expand Down
Loading