def calculate_skill_damage(
base_atk: float, # обязательный
talent_level: int, # обязательный
*, # разделитель
hold: bool = False, # необязательный именованный
charged: bool = False # необязательный именованный
) -> float:
"""Рассчитывает урон от Небесной поэзии"""
multiplier = 380.0 if hold else 276.0
return base_atk * (multiplier / 100)
# Примеры вызова:
tap_damage = calculate_skill_damage(2000, 8)
hold_damage = calculate_skill_damage(2000, 8, hold=True)
from typing import List, Optional
def swirl_reaction(
element: str,
base_dmg: float,
*,
em: int = 0,
affected_enemies: Optional[List[str]] = None
) -> float:
"""
Рассчитывает урон вихря с учетом мастерства стихий
Args:
element: Поглощенный элемент
base_dmg: Базовый урон реакции
em: Мастерство стихий
affected_enemies: Список противников под действием элемента
"""
if element not in ["Пиро", "Гидро", "Электро", "Крио"]:
raise ValueError("Недопустимый элемент для вихря")
em_bonus = em * 0.0016 # Формула повышения урона от мастерства
enemy_count = len(affected_enemies) if affected_enemies else 1
return base_dmg * (1 + em_bonus) * enemy_count
def apply_team_buffs(
base_damage: float,
*resistance_shreds: float, # Снижения сопротивлений
**damage_bonuses: float # Баффы урона
) -> float:
"""
Применяет командные баффы к базовому урону
Args:
base_damage: Базовый урон
*resistance_shreds: Снижения сопротивления (VV, Чжун Ли и т.д.)
**damage_bonuses: Именованные баффы урона
"""
total_res_shred = sum(resistance_shreds)
total_dmg_bonus = sum(damage_bonuses.values())
return base_damage * (1 - total_res_shred) * (1 + total_dmg_bonus)
Создайте систему расчёта урона для взрыва стихии Венти. Необходимо учесть все возможные модификаторы урона.
Подсказка: Примеры использования разных типов параметров:
from typing import Optional, Dict, Union
def calculate_burst_damage(
base_atk: float,
talent_level: int,
*,
absorbed_element: Optional[str] = None,
enemy_res: float = 0.1,
**buffs: Dict[str, float]
) -> Dict[str, Union[float, str]]:
"""
Рассчитывает урон взрыва стихии с учётом всех модификаторов
"""
# Основная логика расчёта