def pbTypeModifier(type,attacker,opponent)
return 4 if type<0
return 4 if isConst?(type,PBTypes,:GROUND) && opponent.pbHasType?(:FLYING) &&
isConst?(opponent.item,PBItems,:IRONBALL)
atype=type
otype1=opponent.type1
otype2=opponent.type2
otype3=opponent.type3
if isConst?(otype1,PBTypes,:FLYING) && opponent.effects[PBEffects::Roost]
if isConst?(otype2,PBTypes,:FLYING)
otype1=getConst(PBTypes,:NORMAL) || 0
else
otype1=otype2
end
end
if isConst?(otype2,PBTypes,:FLYING) && opponent.effects[PBEffects::Roost]
otype2=otype1
end
mod1=PBTypes.getEffectiveness(atype,otype1)
mod2=(otype1==otype2) ? 2 : PBTypes.getEffectiveness(atype,otype2)
if isConst?(attacker.ability,PBAbilities,:SCRAPPY) || opponent.effects[PBEffects::Foresight]
mod1=2 if isConst?(otype1,PBTypes,:GHOST) &&
(isConst?(atype,PBTypes,:NORMAL) || isConst?(atype,PBTypes,:FIGHTING))
mod2=2 if isConst?(otype2,PBTypes,:GHOST) &&
(isConst?(atype,PBTypes,:NORMAL) || isConst?(atype,PBTypes,:FIGHTING))
end
if opponent.effects[PBEffects::MiracleEye]
mod1=2 if isConst?(otype1,PBTypes,:DARK) && isConst?(atype,PBTypes,:PSYCHIC)
mod2=2 if isConst?(otype2,PBTypes,:DARK) && isConst?(atype,PBTypes,:PSYCHIC)
end
return mod1*mod2
end
def pbTypeModifier2(battlerThis,battlerOther)
if battlerThis.type1==battlerThis.type2
return 4*pbTypeModifier(battlerThis.type1,battlerThis,battlerOther)
else
ret=pbTypeModifier(battlerThis.type1,battlerThis,battlerOther)
ret*=pbTypeModifier(battlerThis.type2,battlerThis,battlerOther)
return ret # 0,1,2,4,8,_16_,32,64,128,256
end
end
def pbRoughStat(battler,stat)
stagemul=[10,10,10,10,10,10,10,15,20,25,30,35,40]
stagediv=[40,35,30,25,20,15,10,10,10,10,10,10,10]
stage=battler.stages[stat]
value=0
value=battler.attack if stat==PBStats::ATTACK
value=battler.defense if stat==PBStats::DEFENSE
value=battler.speed if stat==PBStats::SPEED
value=battler.spatk if stat==PBStats::SPATK
value=battler.spdef if stat==PBStats::SPDEF
return (value*stagemul[stage]/stagediv[stage]).floor
end