You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
import random
|
|
# 英雄类
|
|
class Hero:
|
|
def __init__(self, hp, li, zhi, minjie, nuqi=0, bag=[]):
|
|
self.hp = hp
|
|
self.li = li
|
|
self.zhi = zhi
|
|
self.min = minjie
|
|
self.nuqi = nuqi
|
|
self.bag = bag
|
|
self.max_hp = hp
|
|
|
|
|
|
|
|
# 计算攻击
|
|
def attack(self, minjie, jiu=False, teiji=False):
|
|
if teiji:
|
|
if jiu:
|
|
return int((self.li * 0.7 + self.zhi * 0.3)*2.5)
|
|
else:
|
|
return int(self.li * 0.7 + self.zhi * 0.3)
|
|
else:
|
|
if jiu:
|
|
if self.hitRate(minjie):
|
|
return int((self.li * 0.7 + self.zhi * 0.3)*2.5)
|
|
else:
|
|
return False
|
|
else:
|
|
return int(self.li * 0.7 + self.zhi * 0.3)
|
|
|
|
# 计算怒击
|
|
def enragedAttack(self, minjie, jiu=False, teiji=False):
|
|
if teiji:
|
|
if jiu:
|
|
return int((self.li + self.zhi) * 2.5)
|
|
else:
|
|
return int(self.li + self.zhi)
|
|
else:
|
|
if jiu:
|
|
if self.hitRate(minjie):
|
|
return int((self.li + self.zhi) * 2.5)
|
|
else:
|
|
return False
|
|
else:
|
|
return int(self.li + self.zhi)
|
|
|
|
# 计算命中(受敏捷影响)
|
|
def hitRate(self, minjie=0):
|
|
hit_rate = 0.8 + (self.min - minjie) * 0.01
|
|
hit_rate = max(0.2, min(1.0, hit_rate))
|
|
roll = random.random()
|
|
if roll <= hit_rate:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
# 逃跑
|
|
def run(self, minjie):
|
|
run_rate = 0.5 + (self.min - minjie) * 0.01
|
|
roll = random.random()
|
|
if roll <= run_rate:
|
|
return True
|
|
else:
|
|
return False
|
|
|