CoolFace
Apppublic

AngoHF/Formulator

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
damage.py90 linesDownload Raw Back to utils
1from functools import cache2 3from base.constant import BINARY_SCALE, BASE_CRITICAL_POWER4 5 6@cache7def defense_result(shield_base, shield_gain, shield_ignore, shield_constant):8    shield = shield_base9    shield += int(shield * shield_gain / BINARY_SCALE)10    shield -= int(shield * shield_ignore / BINARY_SCALE)11    shield = max(shield, 0)12    return int(shield * BINARY_SCALE / (shield + shield_constant))13 14 15@cache16def base_result(damage_base, damage_rand):17    damage = int(damage_base) + damage_rand / 218    return int(damage)19 20 21@cache22def attack_power_result(attack_power_cof, attack_power):23    damage = attack_power * attack_power_cof24    return int(damage)25 26 27@cache28def weapon_damage_result(weapon_damage_cof, weapon_damage):29    damage = weapon_damage * weapon_damage_cof30    return int(damage)31 32 33@cache34def surplus_result(surplus_cof, surplus):35    damage = surplus * surplus_cof36    return int(damage)37 38 39@cache40def init_result(damage_base, damage_rand,41                attack_power_cof, attack_power,42                weapon_damage_cof, weapon_damage,43                surplus_cof, surplus):44    return (base_result(damage_base, damage_rand) +45            attack_power_result(attack_power_cof, attack_power) +46            weapon_damage_result(weapon_damage_cof, weapon_damage) +47            surplus_result(surplus_cof, surplus))48 49 50@cache51def damage_addition_result(damage, damage_addition, extra_damage_addition):52    return int(damage * (1 + damage_addition / BINARY_SCALE) * (1 + extra_damage_addition / BINARY_SCALE))53 54 55@cache56def overcome_result(damage, overcome, shield_base, shield_gain, shield_ignore, shield_constant):57    overcome = int(overcome * BINARY_SCALE)58    defense = defense_result(shield_base, shield_gain, shield_ignore, shield_constant)59    rate = (BINARY_SCALE + overcome) - int((BINARY_SCALE + overcome) * defense / BINARY_SCALE)60    return int(damage * rate / BINARY_SCALE)61 62 63@cache64def critical_result(damage, base_critical_power, critical_power_gain):65    critical_power = int(base_critical_power * BINARY_SCALE)66    critical_power += critical_power_gain67    rate = critical_power / BINARY_SCALE68    return int(damage * BASE_CRITICAL_POWER) + int(damage * rate)69 70 71@cache72def level_reduction_result(damage, level_reduction):73    return int(damage * (1 - level_reduction))74 75 76@cache77def strain_result(damage, base_strain, strain_gain):78    strain = int(base_strain * BINARY_SCALE) + strain_gain79    return int(damage * (1 + strain / BINARY_SCALE))80 81 82@cache83def pve_addition_result(damage, pve_addition):84    return int(damage * (1 + pve_addition / BINARY_SCALE))85 86 87@cache88def vulnerable_result(damage, vulnerable):89    return int(damage * (1 + vulnerable / BINARY_SCALE))90