Spaces:
Runtime error
Runtime error
File size: 2,497 Bytes
025687f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
from functools import cache
@cache
def defense(shield_base, shield_gain, shield_ignore, shield_constant):
shield = shield_base
shield += int(shield * shield_gain)
shield -= int(shield * shield_ignore)
return max(0, shield / (shield + shield_constant))
@cache
def base_result(damage_base, damage_rand, damage_gain):
damage = damage_base + damage_rand / 2
damage += damage * damage_gain
return int(damage)
@cache
def attack_power_result(attack_power_cof, attack_power_cof_gain, attack_power):
attack_power_cof += attack_power_cof * attack_power_cof_gain
damage = attack_power * attack_power_cof
return int(damage)
@cache
def weapon_damage_result(weapon_damage_cof, weapon_damage_cof_gain, weapon_damage):
weapon_damage_cof += weapon_damage_cof * weapon_damage_cof_gain
damage = weapon_damage * weapon_damage_cof
return int(damage)
@cache
def surplus_result(surplus_cof, surplus_cof_gain, surplus):
surplus_cof += surplus_cof * surplus_cof_gain
damage = surplus * surplus_cof
return int(damage)
@cache
def init_result(damage_base, damage_rand, damage_gain,
attack_power_cof, attack_power_cof_gain, attack_power,
weapon_damage_cof, weapon_damage_cof_gain, weapon_damage,
surplus_cof, surplus_cof_gain, surplus):
return (base_result(damage_base, damage_rand, damage_gain) +
attack_power_result(attack_power_cof, attack_power_cof_gain, attack_power) +
weapon_damage_result(weapon_damage_cof, weapon_damage_cof_gain, weapon_damage) +
surplus_result(surplus_cof, surplus_cof_gain, surplus))
@cache
def damage_addition_result(damage, damage_addition):
return int(damage * (1 + damage_addition))
@cache
def overcome_result(damage, overcome, shield_base, shield_gain, shield_ignore, shield_constant):
defense_reduction = defense(shield_base, shield_gain, shield_ignore, shield_constant)
return int(damage * (1 + overcome) * (1 - defense_reduction))
@cache
def critical_result(damage, critical_power):
return int(damage * critical_power)
@cache
def level_reduction_result(damage, level_reduction):
return int(damage * (1 - level_reduction))
@cache
def strain_result(damage, strain):
return int(damage * (1 + strain))
@cache
def pve_addition_result(damage, pve_addition):
return int(damage * (1 + pve_addition))
@cache
def vulnerable_result(damage, vulnerable):
return int(damage * (1 + vulnerable))
|