def calcATK(base,level,iv,ev,pv)
return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
end
def calcDEF(base,level,iv,ev,pv)
return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
end
def calcSPE(base,level,iv,ev,pv)
return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
end
def calcSPA(base,level,iv,ev,pv)
return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
end
def calcSPE(base,level,iv,ev,pv)
return ((((base*2+iv+(ev>>2))*level/100).floor+5)*pv/100).floor
end
def calcStats
nature=self.nature
stats=[]
pvalues=[100,100,100,100,100]
nd5=(nature/5).floor
nm5=(nature%5).floor
if nd5!=nm5
pvalues[nd5]=110
pvalues[nm5]=90
end
level=self.level
bs=self.baseStats
for i in 0..5
base=bs[i]
if i==PBStats::HP
stats[i]=calcHP(base,level,@iv[i],@ev[i])
elsif i==PBStats::ATTACK
stats[i]=calcATK(base,level,@iv[i],@ev[i],pvalues[i-1])
elsif i==PBStats::DEFENSE
stats[i]=calcDEF(base,level,@iv[i],@ev[i],pvalues[i-1])
elsif i==PBStats::SPEED
stats[i]=calcSPE(base,level,@iv[i],@ev[i],pvalues[i-1])
elsif i==PBStats::SPATK
stats[i]=calcSPA(base,level,@iv[i],@ev[i],pvalues[i-1])
elsif i==PBStats::SPDEF
stats[i]=calcSPE(base,level,@iv[i],@ev[i],pvalues[i-1])
end
end
diff=@totalhp-@hp
@totalhp=stats[0]
@hp=@totalhp-diff
@hp=0 if @hp<=0
@hp=@totalhp if @hp>@totalhp
@attack=stats[1]
@defense=stats[2]
@speed=stats[3]
@spatk=stats[4]
@spdef=stats[5]
end