func (s Species) Type() [2]pkm.Type { b := readStruct( s.v.ROM, s.v.AddrSpeciesData, s.i, structSpeciesData, 6, 7, ) return [2]pkm.Type{ pkm.Type(b[0]), pkm.Type(b[1]), } }
func (m Move) Type() pkm.Type { b := readStruct( m.v.ROM, m.v.AddrMoveData, m.i, structMoveData, 2, ) return pkm.Type(b[0]) }
func (v *Version) TypeEffectiveness(atk pkm.Type, def [2]pkm.Type) float64 { v.ROM.Seek(v.AddrTypeEffect.ROM(), 0) var mult byte = 4 for q := make([]byte, structTypeEffect.Size()); ; { v.ROM.Read(q) if a, d := pkm.Type(q[0]), pkm.Type(q[1]); a == 0xFF || d == 0xFF { break } else if a == atk && (d == def[0] || d == def[1]) { switch q[2] { case 0: mult = 0 case 5: mult >>= 1 case 20: mult <<= 1 } } } return float64(mult) / 4 }